S100 Computers

Home S-100 Boards History New Boards Software Boards For Sale
Forum Other Web Sites News Index   

CREATING BOOTABLE CPM3 SYSTEM DISKS 
We now have a large number of different S100 Computer Disk controller boards using hard disks, Floppy Disks, CF cards and SD cards to boot and run CPM3.
We need to write software to interface with one or more of the following boards:-


The original IDE/CF card board, the Z80 driven ZFDC Floppy disk controller board, the Z80 SBC, the FPGA Z80 SBC,
the 3 FPGA Disk Controller boards, the 2CF+SD Board and the Dual SD card board.

There is of course also a larger number of vintage S100 disk controller boards from the 1960's and 1970's that often need bootable disks.

The good news is the process of writing a bootable CPM3 BIOS and CPM3.SYS file for all this hardware is much the same.

That said, the process is quite tricky and over time one forgets the critical steps/details. 
This page is a step by step review of the process. Because of the large number disk controller boards involved I will treat each board differently.
Also because of the block of time involved I will only be able to account for one board at a time spread over many months when I have spare time!
It would be great if others could send me details in the format below for other boards.

The only other board requirement is a Console IO Board for these basic CPM3 implementations. 
In all the Operating system on CF card images here, it is assumed the console IO board is the Propeller Driven Console IO Board (all versions).  
Actually it does not have to be that, any console board that has a status port at 0H and an ASCII  data port at 1H will work using the following routine, will work:

CI:   IN    A,(CONSOL_STATUS)
      AND   02H
      JR    Z,CI
      IN    A,(CONSOL_IN)
      RET

CO:   IN    A,(CONSOL_STATUS)
      AND   4H
      JR    Z,CO
      LD    A,C
      OUT  (CONSOL_OUT),A
      RET



CLONING CF CARDS
There are two ways to make a functional CPM3  CF Card. Either copy/clone a functional CF card or program a blank CF card.
If you are starting off your best option is to clone one of the many CF card "images" on this web site. They are all described below. 

To clone a CPM CF image you start with a ".imgc" file listed on this web site. You need the Windows program HDD Raw Copy Tool to make a fully functional CPM3 'disk'.
There are a number of disk image files below corresponding to different S100 bus hardware setups.  You can download them from this page. 
Because they are actual sector by sector CF card copies they are quite large (typically 6-7MB). Typically I use 4GB CF Cards.  This is way overkill for CPM3 (but not MSDOS etc.).
Here is a local download for the HHD Raw Copy Tool:-

HHD RAW Copy Tool     (install file from https://hddguru.com/software/HDD-Raw-Copy-Tool/)

Here is a picture of HHD Raw Copy being used to unpack the FPGA_DC_CPM_Image.imgc on to a CF card. 
Actually since our CPM3 disk is only 0FFH tracks, with 0FFH Sectors/Track maximum, you can probably stop the unpacking process after sector 0FFFFH (65,535). 
Here is how the "unpacking" dialog looks:-
       
  CF card Copying  

It seems all CF cards were not created equal! There is an issue with CF cards not working in the IDE/CF card drive if you don't use an NEC 82C55A chip. 
On top of that I have found that some CF cards do not boot correctly  - particularly the older <2GB capacity cards.
Please try and use the 4GB Verbatim or Kingston CF Cards or one of the others below.  With these (while more expensive than some others),
I have never had a programming/boot issue with these cards with any of our Disk controller boards.
You can also use an IDE/CF to SD card adaptor. An SD card in these adaptors behave as a CF card.
  
    CF cards1
I should also point out the above image file is NOT the same format as the well known CPMTools disk .img file.  You cannot us that package to manipulate the CPM files in the image

When done, simply plop the newly formed  CF card into your S100 bus hardware and off you go!

The actual CF Card '.imgc" files can be found here:-  CF Card Images
 



CLONING A CF CARD WITH MYIDE.COM
There is  a second way to clone a CF card.  If you already have a functional CF card  put it in the A: slot of your IDE/CF card containing board.
Put the blank CF card in the B: slot and launch the CPM3 program MYIDE.COM from the A: CF card. Copy everything from A:->B: with the 'Y" menu option.
When done pop the B: CF card into the A: slot and boot CPM3. You can erase any files you don't need.
This is often the quickest way to duplicate large multi-file CF cards (or IDE hard disks).
Here is an picture of the process:-
    
    MYIDE Picture

So long as you just need simple CPM3 systems with no extra "Bell and Whistles" the above cloning methods are fine.
If you need to add extra hardware you need to dig a little deeper.




MAKING A CPM3 BOOTABLE CF CARD FROM SCRATCH
To understand the process of writing and installing a CPM3 system from scratch you should first thoroughly study the theory. It is described in detail here and here.
You need to thoroughly understand the process described there to move further here.
 
There are a few other software programs you need to become very familiar with:-

Altair.com
While in theory  you could write and modify the programs below using an already running CPM system from a floppy disk or hard disk (and many of us did this in the past), 
today we do we do everything on a PC is a special window dialog box that behaves exactly like a CPM3 operating system (except it behaves like a 100Mhz Z80). 
This PC program ALTAIR.COM  written by Peter Schorn is one of the unsung heroes in software writing for S100 computers. Most here will probably be quite familiar with it.
If not study in detail the Altair documentation. To assemble and run the  CPM programs here you only need to launch the CPM3 emulator within the Altair.com program itself.
From then on (transparent to you) you are operating under CPM3 in a Windows box. The necessary software and instructions are all described here.

PCGET.ASM and USBGET.ASM
We need a way to move the final CPM3.SYS file (and others),  from the working Altair PC folder to the S100 bus system. 
Clearly you cannot dump the file to a CF or SD card on a PC and read it in the S100 Bus system (because of the vastly different disk formats). 
Normally we do this using either the RS232 Serial port or USB port on our Serial Board connected via a cable to the PC.  For the serial port these days we use a serial to USB adaptor cable. 
I highly recommend the USB port using USBGET.COM program.  Both PCGET and USBGET are standard CPM programs. 
This brings up the chicken and egg issue of how do you download if you are building a CPM3 image from scratch. 
These days fortunately there are a large number of CF card disk images with already bootable images on CF cards. See here
These will get you going to write and extend the basic CPM3 facilities tailored to your exact hardware setups.

Folders/File Names
We will see that there are a large number of files involved is constructing CPM3 images for various types of hardware. 
It is absolutely essential you keep each CPM3.SYS image collection and submit files is a separate folder.
Within these folders the same file names are used  but internally are quite different. It's a disaster if they get mixed up!
I use a separate Windows folder for each S100 board. I use two sub-folders for a Banked CPM3 system and a Non-Banked CPM3 system

Boot on IDE Board
            Banked
                        IDE-AB CF
                        IDE-AB CF+ESP32-C SD
                        IDE-AB CF+ESP32-CD SD
                        IDE-AB CF+ESP32-CD SD For V3 Z80 Board
           Non-Banked
                        
IDE-A CF
                         IDE-AB CF
                         IDE-AB CF+ESP32-C SD
                         IDE-AB CF+ESP323-CD SD
              SYSGEN

    
Where A and B are CF cards and CDEF are floppy disks.  The .ZIP folders can be downloaded from sections below.
Each folder contains a completely self-sufficient set of files to build CPM3 within its own Altair.COM program.
The special folder SYSGEN is the hardware specific program to write the CPM3 boot loader on to the first few (12) sectors of the disk which we will discuss later below.




A Single Drive IDE/CF Card Non-Banked CPM3 System
This is really the simplest system you can prepare.  We will use the word "Drive" and "Card' interchangeably.
Here is the relevant .ZIP PC folder for this single drive setup is in the

The .ZIP folder of files to make this CPM3 Image is IDE-A CF-NB.ZIP
  

Boot on IDE Board
            Banked
                         IDE-AB CF
                         IDE-AB CF+ESP32-C SD
                         IDE-AB CF+ESP32-CD SD
                         IDE-AB CF+ESP32-CD SD For V3 Z80 Board
           Non-Banked
                        
IDE-A CF
                         IDE-AB CF
                         IDE-AB CF+ESP32-C SD
                         IDE-AB CF+ESP323-CD SD
             SYSGEN          

    
It should be stored in your Non-Banked  IDE-A CF folder.
Expanding the .zip file gives:-
  
   
     IDE_A_Drive Folder
     
The important file here is the CPM3  "HMAKECPM.SUB". It contains instructions for CPM as to how to make CPM3.SYS image file.
Its a standard CPM3 SYS file run with the SUBMIT CPM command.  Let us examine the file:-

  
HMAKECPM
  
Run the altair.com program as shown below.
Within the CPM3 image here we already have the CPM Assembler and Linker etc. so no need to pull them in from the PC.
You should be able to recognize the CPM3 .ASM files if you read the above page describing how to build a CPM file system for a Hard Disk.
The important file is the HIDE3.ASM file that defines the disk structure.  In this file there is only drive. So we have:-
 
    DPH Image

Internally within this file is all the code to read and write sectors to this single drive. 
Within CPM this function is completely self contained within this file calling only 4 functions Initilized the drive,  Select the drive, Read or Write a Sector.
It should be efficient and built for speed.

The program within the above submit file that actually puts together the CPM3.SYS image file is GENCPM.
This is a program supplied by Digital Research that does all the dirty work of collecting all the components to make the CPM3.SYS file.
It uses the file GENCPM.DAT for configuration input data.

Here is an example of HMAKECPM.SUB running in the Altair CPM3 Window (Note the listing is truncated in the middle).
   
      HMAKECPM-SUB
 
It's very important to remember that the first time you make a CPM3.SYS file with GENCPM or you add or remove hardware you must make a new GENCPM.DAT file.
You make a GENCPM.DAT file with GENCPM.COM in the Altair Box.  It goes through a series of simple Yes/No questions with you.
You may also have to modify your HMAKCMP.SUB on your windows box and write it to the Altair dialog box with:-

 R HMAKECPM.SUB

Next you need to transfer the new CPM3.SYS file from your PC to your S100 system. For this I like to use the free PC program TeraTerm.COM.
It can be found here (and many other places).

Here is an example:-
   Tera Term Picture
Over on the S100 system containing the ID/CF board we boot up CPM3 and load the program USBGET.COM  (or PCGET.COM)
While not necessary, I first name the download XXX.SYS so if something goes wrong with the download you still have an intact CPM3.SYS file on the disk.

USBGET XXX.SYS

Once downloaded we write:-

PIP CPM3.SYS=XXX.SYS

Then boot the CF card with the Master monitor command "P".
This should boot your new version of CPM3 an the CF card.
 
    A Drive Signon
 
This CPM3 Image will boot from all the following S100Computers Disk Controller boards:-
   
   IDE Board V3.1 (Commercial)       FPGA_DC IDE Board   FPGA-DC_IDE+FDC  
        IDE/CF card board (All versions)                FPGA-DC +IDE Board                FPGA_DC_IDE+FCD Board 
  FPGA_Z80 SBC Board Z80 SBC Board
  FPGA Z80 SBC Z80 SBC  IDE-2CF+1SD Board
 
Just use the Z80 Master Monitor "
P" command in each case. 
For the FPGA-DC boards make sure you have the IOBYTE/Dip switch in the Monitor Commands mode  (Switch 7 is open) and allow enough time for the board to initialize.
  

Note, the CF card image for the above single A: drive CF card and roughly corresponds to the image #3 stored here
. (It was made later so some of the card contents are different).



WRITING THE  CPM3 CF CARD LOADER FOR IDE/CF CARDS.
All the above is fine if you are using a cloned CF card with a running CPM3 system such as those listed here.
However if you want to use a new CF card or a card for a different board you need to have a CPM3 "LOADER" on that card.
The CPM LOADER is a small program that exists on the first few sectors of a CPM disk.  
Its only purpose is to find the CPM3.SYS file described above on the CPM3 disk (it can be anywhere on the disk), load it into memory and run it.
It resides completely outside the CPM3 disk directory and list of files.

This loader program is read from the CF card (typically the first 12 sectors on the card) with code in the Z80 ROM monitor.
In our case using the Master monitor "P" command.

The LOADER program itself consists of two parts on the disk.
The first part consists of code to write the second part (see below) into RAM starting at 100H.
The second part is a primitive/partial  CPM3 system to find are read into RAM the above CPM3.SYS disk file and transfer control to it.

We have two challenges. We need to write the above loader and we need to white a special program to place that loader at the starting sectors of our CF card.
This program is normally called SYSGEN.COM.  It resides like any other program within the directory on a CPM3 disk.

SYSGEN.COM is very hardware specific. It has to be written specifically for each disk type and board.
It is absolutely critical you keep the tailored versions of these programs separate for each hardware disk setup.

I have the following names:-
 
CFSYSGEN.COM    - For a CF card with a Banked or Non-Banked version of CPM3.
SDSYSGEN.COM    - For a SD card with a Banked Non-Banked version of CPM3.
FLSYSGEN.COM    - For a standard 8" Floppy with a banked or Non-Banked version of CPM3.

If you get your CPM Loader, Sysgen or CPM3.SYS files mixed up it creates unstable disk operations which fester and grow with time.

I the above directory structure on your Windows PC.

Boot on IDE Board
            Banked
                        IDE-AB CF
                        IDE_ABCDEF
                        IDE-AB CF+ESP32-C SD
                        IDE-AB CF+ESP32-CD SD
                        IDE-AB CF+ESP32-CD SD For V3 Z80 Board
            Non-Banked
                         IDE-A CF
                         IDE-AB CF
                         IDE-AB CF+ESP32-C SD
                         IDE-AB CF+ESP323-CD SD
           
 SYSGEN
    
 
In the SYSGEN  folder above we will expand the following CFSYSGEN.ZIP file to  the following Altair program and files:-
  

    CFSYSGEN Folder
  
Running the CNSYSGEN.SUB file gives us the required CPM3 CNSYSGEN.COM program which we move across to our CF card in the S100 system using USBGET.COM as described above.
    
            
SYSGEN2
   
Running CFSYSGEN then writes the CPM3 loader on the CF Card. In this case ta Banked version of CPM3 on the A: CF card.
  
    CFSYSGEN Signon
 
Note in the past I wrote a number of SYSGEN programs called HSYSGEN to write the loader to hard disks and CF cards.
These are generally fine except they cannot be used with Floppy disks and SD cards. 
Also some of the older versions wrote the loader on the current disk/card there was no disk option.
For those the want to look a little deeper I managed to combine the Banked an Non-Banked CPM3 option into one program
by "poking" a single byte flag into HLDRBIOS.ASM in RAM before its execution during its configuration.

The folder for this CFSYSGEN for this Drive is:-
Boot on IDE Board/SYSGEN/CFSYSGEN.zip

Ignore the B: drive option.



A Dual Drive IDE/CF Card Non-Banked CPM3 System

This is really a more practical CPM system. With it you can easily save and copy CF cards between the two "drives" A: and B:.

The .ZIP folder of files to make this CPM3 Image is IDE-AB CF-NB.ZIP.

Boot on IDE Board
            Banked
                         IDE-AB CF
                         IDE-AB CF+ESP32-C SD
                         IDE-AB CF+ESP32-CD SD
                         IDE-AB CF+ESP32-CD SD For V3 Z80 Board
          Non-Banked
                         IDE-A CF
                        
IDE-AB CF
                         IDE-AB CF+ESP32-C SD
                         IDE-AB CF+ESP323-CD SD
            SYSGEN

 
It should be stored in your  Non-Banked IDE-AB CF folder.
Expanding the .zip file gives:-
  
    
   HMAKECPM-2

  

 Only the four files circled above are modified from the single CF Card system.
The major change is in the HIDE3.ASM file where we now have two drives DPH0 and DPH1
   
    DPH-2 Image
   
There is no change to the sector read/write routines only the drive log-in routines.
Other changes are mainly text output notices and information.
This illustrates the power and simplicity of the Digital Research CPM3 Disk BIOS'es.
The system should signon like this:-
   
    AB Drive Signon
    
This CPM3 Image will boot from all the following S100Computers Disk Controller boards:-
   
   IDE Board V3.1 (Commercial)       FPGA_DC IDE Board   FPGA-DC_IDE+FDC  
        IDE/CF card board (All versions)                FPGA-DC +IDE Board                FPGA_DC_IDE+FCD Board 
  FPGA_Z80 SBC Board Z80 SBC Board
  FPGA Z80 SBC Z80 SBC  IDE-2CF+1SD Board
 
Just use the Z80 Master Monitor "
P" command in each case. 
For the FPGA-DC boards make sure you have the IOBYTE/Dip switch in the Monitor Commands mode  (Switch 7 is open) and allow enough time for the board to initialize.
  

Note, the CF card image for the above  Dual  A:+ B:  drive CF system roughly corresponds to the image #1 stored here. (It was made later so some of the card contents are different).

The folder for SYSGEN for this Drive is:-
Boot on IDE Board/SYSGEN/CFSYSGEN.zip

 
A Dual Drive IDE/CF Card A Banked CPM3 System
This is where things get more complicated. We will add memory banking to our CPM3 system.
Memory banking  is a somewhat complicated concept. If you don't understand it please read Bringing Up CPM3 on a Hard Disk before going any further.
I will use as an example the above two CF Card system modified to use extra RAM.
The ability to swap in/out portions of the Z80 CPU 64K of RAM is very hardware dependent.
CPM3 has a specific and separate module called MOVE3.ASM to do this. 
The MOVE3.ASM module here is written for both the V2 and V3 S100 Computers Z80 CPU Boards.
Fortunately MOVE3.ASM is small and simple so other hardware arrangements should not be too difficult to write for.

The BIOS assumes you have at lease 256K of RAM. Normally we use either our 4MB  4MB  or 16MB RAM boards, and of course you also need the Propeller Console IO Board.

The .ZIP folder of files to make this CPM3 Image is IDE-AB CF-B.ZIP.

Boot on IDE Board
            Banked
                       
IDE-AB CF
                        IDE-AB CF+ESP32-C SD
                        IDE-AB CF+ESP32-CD SD
                        IDE-AB CF+ESP32-CD SD For V3 Z80 Board
             Non-Banked
                         IDE-A CF
                         IDE-AB CF
                         IDE-AB CF+ESP32-C SD
                         IDE-AB CF+ESP323-CD SD
             SYSGEN

It should be stored in your Banked IDE-AB CF folder.
Expanding the .zip file gives:-
  
    Banked IDE_AB Folder
   
Ignore the fact for now I have added the ability to date files etc.  You can see the structure of the files is almost identical to the previous Non-banked versions.
The major change is the "BANKED" equate in the .ASM files is now TRUE.
Here is how this CPM version signs on.
    
          Banked IDE-AB Signon

This CPM3 Image will boot from all the following S100Computers Disk Controller boards:-
   
   IDE Board V3.1 (Commercial)       FPGA_DC IDE Board   FPGA-DC_IDE+FDC  
        IDE/CF card board (All versions)                FPGA-DC +IDE Board                FPGA_DC_IDE+FCD Board 
  FPGA_Z80 SBC Board Z80 SBC Board
  FPGA Z80 SBC Z80 SBC  IDE-2CF+1SD Board
 
Just use the Z80 Master Monitor "
P" command in each case. 
For the FPGA-DC boards make sure you have the IOBYTE/Dip switch in the Monitor Commands mode  (Switch 7 is open) and allow enough time for the board to initialize.
  

Note, the CF card image for the above  Dual  A:+ B:  drive CF Banked CPM system corresponds to the image #9 stored here.
 
The folder for SYSGEN for this Drive is:-
Boot on IDE Board/SYSGEN/CFSYSGEN.zip



A Non Banked CPM System for the 2CF+SD Card Board
The above CPM3 CF cards work directly with any of the many S100 Computer boards that utilize the 8255A based IDE/CF card adaptors.
Recently we have been moving to boards with SD cards. These are now more common and well supported.
The first step in this direction is the IDE 2CF+SD Board.
This board still uses the above IDE/CF interface but uses an ESP32 module to interface with the SD card.
We will start with a Dual CF card + SD card system with a Non-Banked version of CPM3.
In essence we just add an SD card interface to the above Non-Banked Dual CF card software.

Boot on IDE Board
            Banked
                         IDE-AB CF
                         IDE-AB CF+ESP32-C SD
                         IDE-AB CF+ESP32-CD SD
                       
 IDE-AB CF+ESP32-CD SD For V3 Z80 Board
            Non-Banked
                         IDE-A CF
                         IDE-AB CF
                         IDE-AB CF+ESP32-C SD
                        
IDE-AB CF+ESP323-CD SD
            SYSGEN

It should be stored in your IDE-AB CF+ESP32-C SD-NB folder.

Expanding the .zip file gives:-
 
    ESP32 AB+c
  
You can see the structure of the files is almost identical to the previous Non-banked versions except we add a 3rd (SD) drive in HIDE3.ASM.
Here is how this CPM version signs on.
   
    Non-Banked ESP32_AB=C Drive Signon
 
This disk image will only boot on the ESP32 driven IDE 2CF+1SD card board with the CPM3 image on the CF card in A:
The IDE 2CF+SD Board however will work for the other CF cards images discussed above, it's just they will not recognize the SD card in C:
    
  IDE 2CF_1SD Board
 
Note, the CF card image for the above  Non-Banked Dual  A:+ B:  CF + 1 SD Card Board corresponds to the image #12 stored here.
 
The folder for SYSGEN to boot from the CF A: Card is:-
Boot on IDE Board/SYSGEN/CFSYSGEN.zip



A Banked CPM System for the 2CF+SD Card Board
Next we will modify the above 2CF+SD Card CPM3 BIOS to a Banked version of CPM3.
Again this BIOS will work with any IDE/CF card circuit but will only recognize the SD card on the IDE 2CF+SD Board.

Boot on IDE Board
             Banked
                         IDE-AB CF
                         
IDE-AB CF+ESP32-C SD
                         IDE-AB CF+ESP32-CD SD
                         IDE-AB CF+ESP32-CD SD For V3 Z80 Board
          Non-Banked
                         IDE-A CF
                         IDE-AB CF
                         IDE-AB CF+ESP32-C SD
                         IDE-AB CF+ESP323-CD SD
            SYSGEN

should be stored in your IDE-AB CF+ESP32-C SD-B folder.
Expanding the .zip file gives:-
       
    ESP32 ABC Folder banked
   
You can see the structure of the files is almost identical to the previous Non-banked version except we set "BANKED" equate to TRUE.
Here is how this CPM version signs on.
      
      banked ESP32 ABC Drive Signon

This disk image will only boot on the ESP32 driven IDE 2CF+1SD card board with the CPM3 image on the CF card in A:
The IDE 2CF+SD Board however will work for the other CF cards images discussed above, it's just they will not recognize the SD card in C:
 
  IDE 2CF_1SD Board

Note, the CF card image for the above  Non-Banked Dual  A:+ B:  CF + 1 SD Card Board corresponds to the image #13 stored here.
 
The folder for SYSGEN to boot from the CF A: Card is:-
Boot on IDE Board/SYSGEN/CFSYSGEN.zip



A Non-Banked CPM System for the 2CF+2SD Card Board
Next we will modify the above CPM3 BIOS to a Non-Banked version of CPM3. Where we use the IDE/CF Board and the Dual SD Cards Board
Again this BIOS will work with any IDE/CF card circuit but will only recognize the SD card on the  Dual SD Cards Board.

The Dual SD Cards Board is quite different from the above IDE/CF circuit based boards above.
The easiest arrangement is to boot on our standard Dual CF/IDE Card board and access as C: and D: drives on this Dual SD drive board.
We just need to add a module for the two SD cards in the BIOS.

Boot on IDE Board
             Banked
                         IDE-AB CF
                         IDE-AB CF+ESP32-C SD
                         IDE-AB CF+ESP32-CD SD
                         IDE-AB CF+ESP32-CD SD For V3 Z80 Board
          Non-Banked
                         IDE-A CF
                         IDE-AB CF
                         IDE-AB CF+ESP32-C SD
                         IDE-AB CF+ESP323-CD SD
                        
IDE-AB CF+ESP323-CD SD
            SYSGEN


It should be stored in your IDE-AB CF+ESP32-CD SD Non-Banked folder.
Expanding the .zip file gives:-
 
      
     ESP32 ABCD Folder NB

At this point all these files should be familiar.
Here is how this CPM3 version signs on.
   
     IDE + Dusl CF Signon
  
This image will work with all the IDE/CF circuit boards, however unless the Dual SD card board is present drives C: and D: are absent
and a warning is issued.
   
        IDE Board V3.1 (Commercial)                  Dual SD card Board


Note, the CF card image for the above  Non-Banked Dual IDE A:+ B:  CF + 2 SD Card Board corresponds to the image #14 stored here.
 
The folder for SYSGEN to boot from the CF A: Card is:-
Boot on IDE Board/SYSGEN/CFSYSGEN.zip
 

A Banked CPM System for the 2CF+2SD Card Board
Next we will modify the above CPM3 BIOS to a Banked version of CPM3. Where we use the IDE/CF Board and the Dual SD Cards Board
Again this BIOS will work with any IDE/CF card circuit but will only recognize the SD card on the  Dual SD Cards Board.

The Dual SD Cards Board is quite different from the above IDE/CF circuit based boards above.
The easiest arrangement is to boot on our standard Dual CF/IDE Card board and access as C: and D: drives on this Dual SD drive board.
We just need to add a module for the two SD cards in the BIOS.

Boot on IDE Board
             Banked
                         IDE-AB CF
                         IDE-AB CF+ESP32-C SD
                         
IDE-AB CF+ESP32-CD SD
                         IDE-AB CF+ESP32-CD SD For V3 Z80 Board
          Non-Banked
                         IDE-A CF
                         IDE-AB CF
                         IDE-AB CF+ESP32-C SD
                         IDE-AB CF+ESP323-CD SD
                         IDE-AB CF+ESP323-CD SD
            SYSGEN

It should be stored in your IDE-AB CF+ESP32-CD SD Banked folder.
Expanding the .zip file gives:-
 
      
     Banked ESP32 ABCD Folder

At this point all these files should be familiar.
Here is how this CPM3 version signs on.
     
     Banked ABCD Signon
    
This image will work with all the IDE/CF circuit boards, however unless the Dual SD card board is present drives C: and D: are absent
and a warning is issued.
   
        IDE Board V3.1 (Commercial)                  Dual SD card Board


Note, the CF card image for the above  Banked Dual IDE A:+ B:  CF + 2 SD Card Board corresponds to the image #15 stored here.
 
The folder for SYSGEN to boot from the CF A: Card is:-
Boot on IDE Board/SYSGEN/CFSYSGEN.zip
 


A Banked CPM System for the 2CF+2SD Card Board Using The V3 Z80 CPU Board USB Port.
Next we will modify the above CPM3 BIOS to a Banked version of CPM3 where instead of the Propeller Console IO Board being used as the console
we will use the USB port on the V3 Z80 CPU Board.  So with this CPU board, one of our RAM boards and the IDE/CF card board you can boot a fairly sofisticated CPM3 system.
The BIOS also works with the Propeller Board for Console IO. The Console I/O is determined by the K8 jumper on the V3 Z80 Board.
With other Z80 Boards the Propeller Console IO board is always assumed.

You can use this CPM3 CF card image with the IDE/CF card board alone or with the IDE/CF+SD card board or along with the Dual SD card board.
If you use the image with the IDE/CF Board alone only drives A: and B: are recognized. This BIOS sends Drive, Track, Sector etc. information to the ESP32 driven LCD display even for the IDE/CF card Board.
The BIOS on the CF drive A: first checks if the ESP32 Display is in the system. If not is skips displaying such info but still runs CPM3.

For most S100Computers systems this is currently (Jan 2026),  the recomended CPM3 image to use with the IDE/CF card Board.
Note this image will not work with CF cards in other boards.

Boot on IDE Board
             Banked
                         IDE-AB CF
                         IDE-AB CF+ESP32-C SD
                         
IDE-AB CF+ESP32-CD SD
                         IDE-AB CF+ESP32-CD SD For V3 Z80 Board
          Non-Banked
                         IDE-A CF
                         IDE-AB CF
                         IDE-AB CF+ESP32-C SD
                         IDE-AB CF+ESP323-CD SD
                         IDE-AB CF+ESP323-CD SD
            SYSGEN

It should be stored in your IDE-AB CF+ESP32-CD SD For V3 Z80 Board Banked folder.
Expanding the .zip file gives:-
           
     Banked ESP32 ABCD Folder For Z80
   
At this point all these files should be familiar.  The only change is in the CHARIO3.ASM file where the status of the V3 Z80 CPU Board K8 jumper is determined.
If jumpered 1-2 all CPM3 Console IO will act as it always did in the past using the Propeller Console IO port for all Console IO. 
If
K8 is jumpered 2-3 Then all CPM3 Console IO communicates over the USB port and is expecting a USB linked terminal at the other end.  This is typically a PC program like Tera Term etc.
  

Here is how this CPM3 version signs on when K8 is jumpered 2-3:-
          
     Banked ESP32 ABCD Z80 Signon
This image will work with all the IDE/CF circuit boards, however unless the Dual SD card board is present drives C: and D: are absent
and a warning is issued.
   
        IDE Board V3.1 (Commercial)       IDE 2CF_1SD Board       Dual SD card Board

The CF card image for the above  Banked Dual IDE A:+ B:  CF + 2 SD Card Board with the V3 Z80 board corresponds to the image #17 stored here.
 
The folder for SYSGEN to boot from the CF A: Card is:-
Boot on IDE Board/SYSGEN/CFSYSGEN.zip
 


A Single Drive Non-Banked CPM System Booting On A Single SD Card
Up until now all our CPM3 images required an IDE Hard Disk of CF card in drive A: to boot CPM3.We will now modify the above CPM3 BIOS to allow booting directly
from the A: Drive on the Dual SD Cards Board or the C: on the IDE 2CF+SD Board
Clearly this a very different software arrangement.

This is really the simplest system you can prepare.  We will use the word "Drive" and "Card' interchangeably.
Here is the relevant .ZIP PC folder for this single drive setup is in the

The .ZIP folder of files to make this CPM3 Image is  A-SD Disk Only.ZIP


Boot on IDE Board
            Banked
                         IDE-AB CF
                         IDE-AB CF+ESP32-C SD
                         IDE-AB CF+ESP32-CD SD
                         IDE-AB CF+ESP32-CD SD For V3 Z80 Board
           Non-Banked
                         IDE-A CF
                         IDE-AB CF
                         IDE-AB CF+ESP32-C SD
                         IDE-AB CF+ESP323-CD SD
             

Boot on SD Board
            Banked
                           AB-SD Disk
            Non-Banked
                           AB-SD Disk
                          
A-SD Disk
       SYSGEN

It should be stored in your Non-Banked  A-SD DISK Only folder.
Expanding the .zip file gives:
   
    A SD Disk Only
 
To Boot SD cards directly you need to use the Z80 Monitor "I" command rather than the "P" command
Here is how the Signon screen looks:-
 
    SD A Drive Only Signon

This image will only work with the Dual SD card board  or the IDE-2CF+SD board.
   
              Dual SD card Board            IDE 2CF_1SD Board
 
Fortunately the HDD Raw Copy Tool allows you to store and download images as we did above for CF cards.
You just need a SD to USB Port adaptor (or slot in your computer).
 
     SD Card Adaptor
  
Note, the SD card image for the above  Non-Banked A-SD Only Disk corresponds to the image #16 stored here.


 
WRITING THE  CPM3 CF CARD LOADER FOR SD CARDS.
Unfortunately the CFSYSGEN program we described above cannot be used to place a CPM3 Boot Loader on an SD card.
The hardware is completely different. However the process (described above) is the same.
Here is the relevant folder of files.
  
    1SDSYSGEN Folder
   
Here is the relevant SUBMIT file to build the program
 
    SDSYSGEN_SUB Folder
 
As you can see its more or less the same process as we used to generate the CF card loader.
There is one thing I have not figured out,. If you do not use fill the RAM image from 1250H to 1288H with $'s
you get garbage on the signon screen before CPM3 signs on. Somehow CPM3 is reading and writing what is in RAM
in that RAM area. I spent two days trying to solve this issue - without success. If you solve it please let me know.

The folder for this SDSYSGEN for this Drive is:-
Boot%20on%20SD%20Board/SYSGEN/SDSYSGEN.zip



A Dual Drive Non-Banked CPM System Booting On Two  SD Cards
This CPM3 image will only work with our  Dual SD Cards Board. It is the first practical arrangement to work with CPM3 with SD cards instead of CF cards.


The .ZIP folder of files to make this CPM3 Image is AB-SD Disk.ZIP


Boot on IDE Board
            Banked
                         IDE-AB CF
                         IDE-AB CF+ESP32-C SD
                         IDE-AB CF+ESP32-CD SD
            Non-Banked
                         IDE-A CF
                         IDE-AB CF
                         IDE-AB CF+ESP32-C SD
                         IDE-AB CF+ESP323-CD SD
         

Boot on SD Board
            Banked
                          AB-SD Disk
           Non-Banked
                         A-SD Disk

                         AB-SD Disk

            SYSGEN

           

Expanding the .zip file gives:
      
    Dual NB SD Folder
 
Note this CPM3 Image also contains the CPM3 CHARIO3.ASM module that allows you to use the USB port
on the V3 Z80 CPU board   for Console IO as described above for image #17.

Remember to Boot the SD card A: you need to use the Z80 Monitor "I" command rather than the "P" command

Here is how the Signon screen looks (actually using the V3 Z80 CPU board USB Port option described above):-
  
 
    Dual SD card Signon
Note, the SD card image for the above  Non-Banked AB-SD Disk corresponds to the image #18 stored here.
Note this image is on a 1GB SD Card.

This image will only work with the Dual SD card board    
   
              Dual SD card Board

One bug that needs correction, the ESP32 LCD display names the drives C: & D:

The folder for this SDSYSGEN for this Drive is:-
Boot%20on%20SD%20Board/SYSGEN/SDSYSGEN.zip



A Dual Drive Banked CPM System Booting On Two  SD Cards.
This CPM3 image will only work with our  Dual SD Cards Board. It is the first practical arrangement to work with CPM3 with SD cards instead of CF cards.
This is the Banked version of image #18 above.   This is a very practical image of CPM3 running with two SD cards and can be used as the basis to add more drives
or I/O boards.  It also incoporates the V3 Z80 CPU USB port option.

The .ZIP folder of files to make this CPM3 Image is AB-SD Banked Disk.ZIP


Boot on IDE Board
            Banked
                         IDE-AB CF
                         IDE-AB CF+ESP32-C SD
                         IDE-AB CF+ESP32-CD SD
            Non-Banked
                         IDE-A CF
                         IDE-AB CF
                         IDE-AB CF+ESP32-C SD
                         IDE-AB CF+ESP323-CD SD
         

Boot on SD Board
            Banked
                         AB-SD Disk
            Non-Banked
                         A-SD Disk

                        
AB-SD Disk
            SYSGEN

Expanding the .zip file gives:
              
Dual NB SD Folder
   
Note this CPM3 Image also contains the CPM3 CHARIO3.ASM module that allows you to use the USB port
on the V3 Z80 CPU board   for Console IO as described above for image #17.

Remember to Boot the SD card A: you need to use the Z80 Monitor "I" command rather than the "P" command

Here is how the Signon screen looks:-
 
    AB SD Drive Signon
  
Note, the SD card image for the above  Banked AB-SD Disk corresponds to the image #19 stored here.
Note this image is on a 1GB SD Card.

This image will only work with the Dual SD card board    
   
              Dual SD card Board

One bug that needs correction, the ESP32 LCD display names the drives C: & D:
(It needs to display Drive 1 or 2 as well as CPM Track/Sector and SD Card Sector)

The folder for this SDSYSGEN for this Drive is:-
Boot%20on%20SD%20Board/SYSGEN/SDSYSGEN.zip

Remember to use the "Banked" menu option.



Under Construction

Images for other hardware setups...

 

 

 

 

This page was last modified on 01/25/2026