Subject: Minimal CP/M SBC design?
From: Ethan Dicks <ethan.dicks at usap.gov>
Date: Sun, 04 May 2008 19:57:05 +0000
To: "General Discussion: On-Topic and Off-Topic Posts" <cctalk at
classiccmp.org>
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.
Review:
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:
Compupro
AmproLB
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.
Allison
-ethan
--
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
usap.gov http://penguincentral.com/penguincentral.html