Close

First Power Up

A project log for My CP/M Version 1A

I decided to do a minor upgrade to My CP/M (Version 1). Swap RST6.5 for RST7.5 and increase the FRAM disk capacity from 32k to 256k.

agpcooperagp.cooper 07/16/2020 at 08:060 Comments

Created System Flash Disk

Created a 256kb system disk with 128 directories with a 2048b block size.

Well actually I just flashed the lower 16kb of the system disk as that is all that is needed to boot up.

First Power Up

Well I got:

  My CP/M 2.2 V1A
  A:

But Serial In did not work (i.e. no response to the terminal input). That is not too bad. A lot has to work to get here. I am guessing I have interrupts disabled and not re-enabled somewhere.

A Day Later

Managed to find (most of) the bugs, seems to be working:

  my CP/M 2.2 V1A

  A>DIR
 
  A: STAT     COM
  A>STAT

  A: R/W, Space: 238k


  A>STAT DSK:

      A: Drive Characteristics
   1984: 128 Byte Record Capacity
    248: Kilobyte Drive  Capacity
    128: 32  Byte Directory Entries
      0: Checked  Directory Entries
    256: Records/ Extent
     16: Records/ Block
     16: Sectors/ Track
      4: Reserved Tracks

  A>


dding More Files to the Flash Disk

I am have some problems here. I cannot download hex via the serial port as the software serial code is not up to the task (I can't download while writing to disk).

Using my makeDisk code and programming the flash disk via an Ardunio Nano is pretty clumsy. This can be improved by using an ATMEGA1284 for the programmer.

I think however, it is time to use an UART.

The alternative is to have a clocked interrupt to manage software serial and disk writes. But do I really want to go there? Only to show off I suppose!

makeDisk Debug

I managed to find a benign bug (not benign for flash disks with more than 32kb) in my makeDisk code. I knew it was there but I could not see it! So time to load up some more programs to flash disk.

Found another bug in the directory structure code. Fixed. Now all the files are visible.

i8HEX

I have to edit my i8hex code to add segment information as the address rolls over after 64k. Checking the Internet, there are a couple of ways to do this. The Intel 8086 segment type command is an easy option.

AlanX

Discussions