Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

compupro-simh

Tools that build the CompuPro 8 inch floppy images used by two pull requests against SIMH's AltairZ80 simulator:

PR What it adds
simh/simh#1256 the CompuPro CPU-68K machine, so CP/M-68K boots from the DISK 1A boot ROM
simh/simh#1257 SET CPU SWITCHER no longer clamps the machine to 64K

The images those PRs mention are not preserved dumps and are not redistributed here. They are generated from the CompuPro software archive, which is not mine to hand out, so what this repository holds is the recipe.

The DISK 1A boot ROM the machines start from needs no supplying: it is already in SIMH, as disk1a_rom[16][512] in AltairZ80/s100_disk1a.c.

What you need

The CompuPro software archive, unzipped. The rebuild scripts expect the directory that holds its top level folders, which are CPM68K, CPM816, MPM-816, CDOS-816 and the rest. It is the CompuPro collection from Dave Dunfield's classic computer archive.

Python 3 is the only other requirement. The tools use nothing outside the standard library.

Building the images

./rebuild-cpm68k.sh /path/to/unzipped/COMPUPRO
./rebuild-cpm816.sh /path/to/unzipped/COMPUPRO

The first writes disks/cpm68k-a.imd, -b.imd and -c.imd, of which -a is the one PR #1256 boots. The second writes disks/cpm816-a.imd, disks/cdos816-a.imd and disks/mpm816-a.imd.

Each script refuses to start if the archive path it was given does not hold the folders it needs, so a wrong path fails immediately rather than producing an empty image.

The disk format, for anyone checking the result by hand

8 inch, 77 cylinders, two heads. The data area is CompuPro density 3, which is MFM with 8 sectors of 1024 bytes. Cylinder 0 is FM with 26 sectors of 128 bytes: on the CP/M-68K layout that applies to both heads, which is what the CP/M-68K FORMAT program writes, and on the CP/M-86 layout only to head 0, which is what the CP/M-86, CP/M 8-16 and Concurrent DOS 8-16 masters look like.

CP/M sees one logical track per (cylinder, head) pair, with head = track & 1 and cylinder = track >> 1. Both families share the same disk parameter block for the data area: 2048 byte blocks, 600 blocks, 256 directory entries and 4 reserved tracks, with the sector skew the CBIOS uses (XLT3 in the CP/M-68K BIOS, XLT8D3 in the CP/M-86 one).

The tools

tools/mkdisk.py builds an ImageDisk .IMD file: it lays out the system tracks, writes the loader where the boot ROM expects it, and fills the directory and data area from the files given on the command line.

usage: mkdisk.py [-l cpm68k|cpm86] [-b LOADER] [--ldrbios ADDR]
                 [--raw-boot OFFSET] [-c COMMENT] -o OUTPUT [files ...]

tools/imd.py reads, inspects and rewrites .IMD files.

usage: imd.py info|uncompress|track <file> [args]

uncompress matters in practice: SIMH refuses to write to an image that contains compressed sectors, so an image straight out of an ImageDisk capture has to be expanded before the simulator will mount it read/write. That action is the equivalent of running IMDU /B on it.

Where to look

  • https://bitsavers.trailing-edge.com/pdf/compupro/ - the CompuPro manuals and ROMs. One practical warning: bitsavers returns 403 to anything that does not send a browser user agent, so curl -A 'Mozilla/5.0' where a plain curl fails. www.bitsavers.org goes through that same mirror.

The machine answers ?Not Enough Memory to any transient program if it is short of memory; the manual asks for 192K and up, which is worth setting before concluding that something is broken.

Licence

MIT, see LICENSE. The CompuPro software the scripts read is not covered by it and is not included here.

About

ImageDisk builder and rebuild recipes for the CompuPro 8 inch floppies used by the SIMH AltairZ80 pull requests. The disk contents themselves are not redistributed.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages