cdos
| Name | Last modified | Size |
|---|---|---|
| ../ | ||
| cdos.toml | 03-Oct-2026 14:40 | 2.0 KB |
| cdos.zip | 03-Oct-2026 14:40 | 208.5 KB |
| CDOS258-8IN-DSDD.DSK | 03-Oct-2026 14:40 | 1.2 MB |
| README.pdf | 03-Oct-2026 14:40 | 69.7 KB |
CDOS 2.58 on a Cromemco 16FDC
CDOS was the operating system of the Cromemco Z80 S-100 machines. It is a work-alike of
Digital Research CP/M 1.4 with Cromemco's own extensions, and it runs many CP/M .COM
programs unchanged. This example boots CDOS 2.58 from an 8″ diskette through a Cromemco
16FDC floppy controller. One board holds the disk controller, the console UART and the boot
PROM.
cd examples/cdos
altairsim cdos.toml
The machine has a 4 MHz Z80 processor, 64K of RAM and one 16FDC. The CDOS master diskette is
in drive A. The machine file sets bootstrap = true, which arms the boot PROM. The machine
then loads CDOS with no other setting.
Boot the machine
The console shows this text:
Preparing to boot, ESC to abort
Standby
CDOS version 02.58
Cromemco Disk Operating System
Copyright (C) 1977, 1983 Cromemco, Inc.
A.
CDOS comes up to its A. prompt. You do not press a key. The 16FDC is set for a fixed
300-baud modem console (switch 5 of the board). This setting tells the boot PROM to skip the
terminal speed measurement. On real hardware, the measurement needed a RETURN from the
terminal.
The A. prompt shows that CDOS waits on drive A. CP/M shows A> for the same state. Type
these commands at the prompt:
DIR list the files on the disk
STAT show the system status: memory, devices, and the disk label and date
DIR lists the 18 files on the master diskette. They include the assembler (ASMB, LINK),
the editor (EDIT), the utilities (XFER, INIT, DUMP, STAT), XMODEM and CDOS
itself. STAT reads the label sector of the disk. It prints CDOS2.58 and the date
05-19-82.
How the boot works
A reset arms the RDOS 2.52 boot PROM in the 16FDC window at C000. The startup list of
the machine file runs the PROM. RDOS reads the boot track through the WD FD1793 controller
and loads the CDOS cold loader. The loader reads CDOS.COM into memory and jumps to it.
CDOS then moves itself to the top of RAM and switches the PROM out with OUT 40H. The memory
board hides the RAM under the PROM on reads only. The boot reads the PROM, and a write
reaches the RAM under it. Because of this, CDOS can put running code in that RAM.
Two authentic settings
- 4 MHz. A real Cromemco ran at 4 MHz. The double-density read loop of RDOS only keeps up
with a 500 kbit/s diskette at that speed. At 2 MHz, the controller reports Lost Data and
the boot fails. Do not change
clock_hz = 4000000. - The mixed-density diskette.
CDOS258-8IN-DSDD.DSKis an 8″ double-sided image. Track 0 is single density, because the boot PROM reads only single density. The other tracks are double density. The 16FDC finds the format from the image. You do not set it.
Console speed
The console runs at full speed. Output appears as fast as CDOS prints it, even with the
300-baud modem setting. To get the speed of a 300-baud modem console, set the rate on the
console. A DIR then takes many seconds.
[board.unit.tty]
connect = "console"
rate = "real" # pace the line in real time at the programmed baud
rate = "full" is the default. It does not pace the emulated line. rate = "real" does.
When a real serial port is on the other end, that port keeps its own timing. The rate
setting changes only the timing of the emulated console.
The disk image
The repository tracks CDOS258-8IN-DSDD.DSK, and the machine file mounts it read/write in
drive A, as a real machine does. Booting, DIR and STAT only read it. Before you test
writes, copy the image, or add writeprotect = true to the drive in the machine file. In a
clone, git checkout restores a changed image. A downloaded copy has no such way to restore
it.