The idea came up last year when I learned that the floppy was considered dead. I decided to go back in time and build the smallest and simplest
CP/M computer that still used a floppy (90mm / 3.5 inch) as storage media.
My project objectives were the following:
- build a
CP/M v2.2 compatible computer;
- use the smallest number of integrated circuits and the simplest possible configuration;
- no programmable logic devices, only 74' and 40' series;
- use a 3.5 inch floppy disk as storage;
- the console for the
CP/M system would be a terminal VT100 (on a Laptop
linux/windows);
- be able to build an fully functioning computer in a breadboard;
- if possible do most of the software development in
linux;
- build a wire-wrap version of the final hardware;
- design a PCB, build a box to host it and build a computer.
I started searching computers I knew that supported
CP/M, and based the design from it. I looked at the
Amstrad CPC 664 and
PCW series, and also at the Sinclair Zx Spectrum +3. All these came from effectively the same place so their floppy disk interface was very similar. The used a
NEC UPD 765 and a data separator (
FDC 9216 or
SED 9240) for the
MFM encoding.
For the processor I settled on a
Intel 8085 (8085AH-2) because I had a few in my parts box, it had an on-chip oscillator and seemed simple enough to build the console serial interface with the SID and SOD lines. The extra address decoder 74573 seemed a cheap option compared to the clock generation circuit for the Z80. I also have a NSC800 but not so much hardware information on it. Using the 8085 at 8MHz also allowed me to drive the
UPD765 at the same clock or 4MHz with little or no changes. I also had it running it at 10.24MHz, but then the floppy disk needed a separate oscillator.
For the memory I wanted to use my
EPROM emulator bought on
ebay and a small enough RAM to run
CP/M. I chose a 62256 with 100
ns access time and my emulator simulating a 27C256, so 32K RAM and 32K ROM.
As a help circuit, to get me started with a serial interface and some digital inputs and outputs I added an Intel 8256AH. This
IC is not very easy to find but it packs two 8bit ports, a serial interface and some timers. The perfect peripheral
IC, a bit like the 6522 VIA for the Motorola 6800 or Rockwell 6502 processors.
I'll post more on this one.