• Please review our updated Terms and Rules here

Build your own CP/M machine

zx80nut

New Member
Joined
Apr 25, 2012
Messages
4
Hi.

You may be interested in one of my web pages.
Here it shows how to build a CP/M computer using 9 ICs.
The drives are held on a Compact Flash disk, 8 drives on a 64M card, or 16 drives on a 128M card.

64K RAM and a 16K shadow boot/BASIC rom is on-board.
Cold and Warm reset switches included, and two high-speed serial ports.

I have written the BIOS myself, along with the formatter, putsys, boot monitor ROM and file transfer programs.
The ROM also contains BASIC to allow programming without CP/M.
I built this several years ago (2007/8) and is still working with no problems.

http://home.micros.users.btopenworld.com/cpm/index.htm

I put a lot of work into designing the hardware and software - please feel free to use :)

There is also a PC keyboard interface and 80 column display driver for it, but I haven't published details for that yet, but you can see pics of it on the page. This uses only 3 IC's - 2 ATMEL processors and a bit-shift IC. It connects to one of the serial ports and is, effectively, an ANSI-compatible serial terminal.

Other stuff, please see my home page
http://home.micros.users.btopenworld.com

Regards.

Grant.
 
BIOS optimized forZ80?

BIOS optimized forZ80?

Great work.

I'm curious, did you optimize the BIOS for the Z80, or stick to standard 8080?


Lorry
 
Hi.
The bios is written from scratch, but I did use the original blocking/unblocking code from Digital Research as a straight conversion (no omptimisation) from 8080 code. It didn't seem to need it as it is really fast using the Compact Flash.
The CPM 2.2 is a straight 8080 --> Z80 opcode conversion, as found on a CP/M archive site on the web with a couple of tweaks to get it to assemble correctly.

I wanted to get it working, without the risk of introducing any new bugs :)


Grant.
 
You know what would be interesting (to me) would be to emulate something on a keychain or such pocket size and perhaps accept bluetooth as an i/o. Wonder what would be required or if one could have a system on a keychain.
 
Nice minimalistic design.

It would be interesting to see your display card schematics. Does it use a VGA display?

He did say ANSI-compatible so I would guess no. Sounds Text only atm. Any plans for Hercules emulation?

I love to make this! I have a serial eprom programmer that would pair awesome with this thing. All it really needs is a tty/ansi terminal that can capture to file, and serial port @ 9600 7n1... :O

I could then in theory tuck it inside the programmer, with just the cf sticking out, and maybe a few buttons to activate macros. I love it!
 
I wanted to get it working, without the risk of introducing any new bugs :)

I don't blame you, these things are notoriously time consuming to debug.

I like the relative simplicity of the old hardware and enjoy tinkering with it, but when doing low-level work like this I miss the hardware support and decent tools for debugging that modern processors provide.
 
Thanks for your comments. This started off as a simple Z80 computer running a ROM , RAM and a serial port. Once I worked out that CF cards can be interfaced easily, the urge to CP/M-it was irresistable. My aim was to leave it as simple as possible, so that it can be used as a core of more complex designs if needed, although it is a fully-fledged (and fast) CP/M machine in it's own right. I made it originally in 2007, and is still working in that configuration.

The interface is a text-only 80x25 display, using the UK PAL timing spec, but can be changed. Credit for this goes to someone called Daryl Rictor who published a 40 column display (easy found using a search engine on the net) which I then re-wrote parts to work in 80 column mode on an ATMEGA32 display.
This is used purely for display. The other Atmel chip handles the ANSI conversion, serial port buffering from the CP/M board to the display and also the PC keyboard interface to serial to the CP/M board.
It is currently configured for 115200, but can be used to add a keyboard/display to anything that interfaces to a terminal/serial port.
I'll publish details as soon as I get time.

Regards.

Grant
 
Back
Top