Thanks to Takashi TOYOSHIMA for his work on the CP/Mega88 project which can be found here: https://github.com/toyoshim/cp-mega88. Please visit his project page and read through his other work.
The CP/Mega88 project is a i8080 emulator written in AVR assembler with modules in C and assembler to support external static RAM, SD-card and UART, as well as a virtual “monitor” linking it all together.
My rendition focuses only on the AVR side of things, The original project also runs on several other platforms.
Specifications:
- i8080 virtual machine running at 2.5 - 3 MHz apparent clock speed.
- 128 kByte Static RAM (paged memory with 4 32 kByte pages)
- SDSC SDHC compatible SD card interface. no hot-swap
- TTL serial console 38400 baud, no handshake
- 3v3 or 5v FTDI or compatible interface
- 5v power at serial interface or 3v3 at ISP connector
- dual boot
- CP/M 2.2, 59 kByte TPA
- CP/M 3.0, 61 kByte TPA, banked BIOS
- 4x 8MB disks (A:-D:) shared by both OS-es
Here are the project files: cp-mega88.zip
The zipfile contains:
- all the AVR source code, make files and binaries.
- source code for CP/M 2.2 and 3.0 as well as boot sectors
- PCB schematics and gerbers for an SMT board.
- A 4 disk image file to be copied to the SD card with system files, source files, tools and various applications in several user area's (which are not guaranteed to run: some use Z80 code, some are os-specific)
The SMT board can be built for less than $4.50, although buying single items or TH parts might turn out more expensive. The included PCB uses SMT components. Alternatively you can wire up a piece of perfboard, using TH parts. (use an AS6C1008 for SRAM and a TF card module)
parts list:
ATmega8820AU | TQFP-32 |
BSI BS62LV1027SIP-55 | SOP-32 |
74HC374D (x2) | SOP-20 7.2 mm |
TXC20.0 Crystal | 5032 5mm×3.2mm SMD-4PIN |
1n4148 | miniMELF |
AMS1117 3.3 | SOT-223 |
4x100n | 0805 |
2x22p | 0805 |
10u | 0805 |
2k7 | 0805 |
3k3 | 0805 |
TransFlash Micro SD Memory Card Slot Connector | Please examine picture |
ISP & serial connectors |
For SRAM any 3.3v 128k x 8 chip can be used (regular pin layout)
I chose the BSI chip, because it was cheapest and was 5v tolerant (2.4V ~ 5.5V).
NOTE: running an ATmega88 at 3v3 / 20 MHz is out of specifications (> 13.3 MHz). I have had no issues, but your mileage may vary.
If you have any suggestions, feel free to let me know.
Happy building