AltairSim

tarbell

Name Last modified Size
../
CPM22b15-48K-SSSD.DSK 11-Oct-2026 14:34 250.2 KB
README.pdf 03-Oct-2026 14:40 63.7 KB
tarbell.toml 03-Oct-2026 14:40 1.8 KB
tarbell.zip 11-Oct-2026 14:34 414.4 KB
TARBELLDD-CPM22-SSDD-48K-DMA.DSK 11-Oct-2026 14:34 487.8 KB
TARBELLDD-CPM22-SSDD-48K.DSK 11-Oct-2026 14:34 487.8 KB
tarbelldd-dma.toml 03-Oct-2026 14:40 1.6 KB
tarbelldd.toml 03-Oct-2026 14:40 1.2 KB

The Tarbell floppy interfaces — CP/M that boots itself

The Tarbell Electronics floppy controllers were the S-100 disk interface that booted CP/M on a whole generation of Altair and IMSAI machines. Unlike most controllers, a Tarbell card carries its own 32-byte boot PROM — so there is no monitor, no boot command, and nothing to type. Power on with a disk in the drive and CP/M comes up.

cd examples/tarbell
altairsim tarbell.toml     ->   48K CP/M 2.2 on the single-density #1011
altairsim tarbelldd.toml   ->   48K CP/M 2.2 on the double-density #2022

Each is a thin delta on a built-in machine (altairsim tarbell / altairsim tarbelldd): an 8080, an 88-2SIO console at port 0x10, the Tarbell controller at ports F8–FF with its boot PROM, 64K of RAM, and a host bridge at port B0. All the example file adds is the floppy in drive 0.

How the boot works

Reset arms the boot PROM at address 0000, where it shadows the bottom of memory. The PROM reads the first sector off track 0 through the WD FD177x controller and jumps into it; the instant that loaded code runs, the shadow falls away (it is released by a single address line) and the disk's own cold loader pulls CP/M into memory. You land at A> with nothing in between. With no disk in the drive the PROM has nothing to load and the machine halts — mount a disk and reset.

Single density vs double density

  • tarbell.toml — the #1011 (1977), a WD FD1771, single density. The disk is a uniform 8″ single-density image (128-byte sectors, 26 per track).
  • tarbelldd.toml — the #2022 (1979–80), a WD FD1791, which reads double density too. Its disks are mixed density: track 0 is single density (so the boot PROM can read it) and the rest are double density.

The card recognises which format a disk is by its size when you mount it — you do not tell it.

DMA mode — the card steals the bus

The #2022 carried an Intel 8257 DMA controller as a chip on the board, and tarbelldd-dma.toml boots a disk that uses it:

altairsim tarbelldd-dma.toml   ->   the same 48K CP/M 2.2, but its CBIOS moves sectors by DMA

This image's CBIOS is assembled DMACNTL=TRUE: instead of reading each sector byte through an IN/OUT loop, it programs the 8257 with the address and count, issues the disk command, and lets the card take the S-100 bus and drop the sector into memory itself — the first shipping board in this simulator to master the bus. The cold boot is unchanged (it reads track 0 the ordinary way), so you land at A> exactly as before; the difference is that every directory listing and warm boot after that flows through the DMA controller.

Moving files in and out

Both machines carry the host bridge at port B0. The single-density disk ships with the CP/M utilities HDIR, R and W installed, so they work at the A> prompt:

HDIR              list the files in the directory you launched from
R  FOO.TXT        copy FOO.TXT from your host into CP/M
W  FOO.TXT        copy it back out

It can only reach the directory you started altairsim in, and no further.

The double-density master ships full (0 K free) with its own serial transfer tools (PCGET / PCPUT) already on it, so the host-bridge .COM files are not installed there — there is no room. Copy a file off it first if you need the space, or use the single-density disk for host transfers.

A word about the disks

The disk images here are tracked in the repository, and drive 0 is mounted read/write — which is what a real machine is. If you are about to test writes in anger, copy the image first, or add readonly = true to the drive in the .toml. In a clone, git checkout puts a dirtied image back; in a downloaded copy there is no such safety net.