Minimal CP/M SBC design?

Allison ajp166 at
Sun May 4 17:18:53 CDT 2008

>Subject: Minimal CP/M SBC design?
>   From: Ethan Dicks <ethan.dicks at>
>   Date: Sun, 04 May 2008 19:57:05 +0000
>     To: "General Discussion: On-Topic and Off-Topic Posts" <cctalk at>
>Hi, all,
>I was staring at an SBC I have here with a 6MHz Z-80, some ROM, some RAM,
>and a 26-pin off-board bus for some Z80-PIO boards (this thing was built
>as a multi-parallel-printer switcher).  I've been musing about what it
>would take to boot CP/M up on this.


 For cp/m usable [runs apps not merely boot] system you need.

  -Z80 any speed.
  -56->64K of ram, more is meaningless unless yoru running MPM.
   Ram must be from 0000h through at least 32k preferably EFFFH
   as most useful apps want 48-56k.
  -Boot rom and shadow logic. 
  -Mass storage (anything that can be made to look like 
   block addresable storage.)
  - console device  maybe simple RS232 to terminal(PC with term emulation)
  - printer is optional.
  - punch and reader devices are rarely needed/implemnted

That is in as fwe words as possible.
>For user I/O, I was planning on a console serial port and a terminal/terminal
>emulator.  I have IM6402s on hand, but I'd be interested in hearing if
>certain other chips are preferred, based on what BIOS code is floating
>around out there.  I also have a 16550, but I don't think I have any
>Z80-SIO chips handy.

If you look there will be a bios for most every thing and none will
match your IO 100% due differnt addresses or disk(or disk equivilent)
used.  However.. they can serve as a template.

FYI: a good low parts count IO would be Z80, Z80 CTC (as baud rate gen)
and Z80sio(or DART).  Then you can use the AmproLB and others IO for 
serial and two ports are handy.

>For mass storage, I was planning on either Compact Flash or an SD card.
>I think I've seen both as I googled around for modern SBCs.  Any of the
>media I have lying around is plenty large enough (I even have some 4MB
>CFs and a 2.5MB full-sized PCMCIA flash card on hand).

CF is the easiest as the interface is IDE with one feature it does do 
8bit transfers. To match the tiny card you can get CF to IDE adaptors 
with .100 pin (40 pin) cable IO.  As to how much CPM can adress logical 
drives to 8Mb and a 32MB CF is 9$ and would partition into 4 drives nicely.

>I am a little unclear, though, about how traditional CP/M systems
>were set up for ROM and RAM.  Was it common to use a "shadow ROM"
>in low mem at reset, then have the BIOS live at the top of memory?
>How did 64K RAM CP/M machines handle the BIOS?  Did they temporarily
>ghost the ROM on top of RAM until some bit of code could read ROM
>and write RAM then bank out the ROM?  Since I think I "need" at
>least 48K of RAM, I was planning on a pair of 62256s.  I could easily
>do 56K of RAM low and 8K of ROM high, I think, unless there's some
>other arrangement that's obvious to try for a simple design.

The BIOS needs to be in high ram for the simple case and usually 
copied there at boot time.  So the boot is rom at 0000 (or made 
to appear there for boot) you copy to high ram then kill 
(shut off rom) using an IO port bit.

Generally for simplest systems I use 16 or 32K eproms as there 
is plenty of space and I can put a monitor and a complete image 
of CP/M (CCP 2k, BDOS 3.5k, BIOS typically 1k to 4k).  For 
somthing kike CF a BIOS will easily fit in 2.5K so the whole 
CP/M system image is 8K.

>I've never tried writing a BIOS for a CP/M machine, but my understanding
>is that things are modular enough that once you know what I/O chips
>you have and at what I/O addresses, for a straightforward, non-clever
>design, the coding is equally straightforward and non-clever (but please
>feel free to enlighten me if otherwise).

That's it.  Interrupts or other features complicate it some but look at the 
CP/M alteration guide for the MDS800 bios example and the Skelental Cbios.
FYI: Cbios is the term for anything other than the "stock" MDS800 bios 
with means just about every bios going!

For other example BIOS look up these as I know they are on line:

 Hal Bower B/P bios (very sophisticated bios)
 Andy Johnson-Laird  (The CP/M programmer handbook)
  Both the basin bios and the enhanced bios from the 
  book are on line somewhere
 And many others.

The bios has a standard layour and defined functionality.

>Thanks for any tips, especially from anyone on the list who has ever
>rolled their own CP/M machine.

I've rolled more than a few.  If you need info I can help.


>Ethan Dicks, A-333-S     Current South Pole Weather at  4-May-2008 at 19:40 Z
>South Pole Station
>PSC 468 Box 400       Temp  -74.2 F (-59.0 C)   Windchill  -105.4 F (-76.4 C)
>APO AP 96598          Wind    7.4 kts Grid 77   Barometer 691.6 mb (10194 ft)
>Ethan.Dicks at  

More information about the cctalk mailing list