CP/M 8080 hardware emulator on Stellarpad, ESP8266 and ESP32, using r65emu.
- Digital Research manual for CP/M 2.2
- useful info here
- cpmtools for linux
- software: z80.eu, cpmarchives, cpm.z80.de
Install cpmtools
:
$ sudo apt install cpmtools
Create a disk image:
$ mkfs.cpm foo
Copy files into it:
$ cpmcp foo bar baz 0:
Put it into disks/
:
$ mv foo disks
Edit disks/drivemap.txt
to assign the new disk to a drive.
Use of SD card storage is recommended where possible.
A previous system was a "CP/M in ROM".
This consisted of two files (see the directory system):
CBIOS.ASM
the "skeletal CBIOS" from Appendix B of the CP/M 2.2 manualCPM22.ASM
CP/M 2.2 itself, from here
Each of these was assembled to its corresponding .bin
file by asm8080
and from there to .h
by makerom:
$ asm8080 CPM22.ASM
$ makerom -bp CPM22.h cpm22 > cpm22.h
The ROMs were loaded at addresses 0xe400
(cpm22) and 0xfa00
(cbios), leaving 57kB free.
The next system loads CP/M from disk, as nature intended. The boot disk cpma.cpm
comes
from the excellent emu8080.
A modified 8080 port-mapping supports the BIOS found on this disk (see io.cpp
). The file
system/bios8080.asm
(from z80pack)
is compatible with this port-mapping scheme --- it's a near ancestor of the BIOS in emu8080.
The system tracks for this are broken out into system/system.bin
. This can be used to create
bootable disk-images as follows:
$ mkfs.cpm -b system.bin foo.cpm
A later implementation used a bootable system image produced by putsys
from z80pack in conjunction with mkfs.cpm
from cpmtools
.
This BIOS has support for hard-disk images (4MB).