[sebhc] H17 info

dave06a at dunfield.com dave06a at dunfield.com
Thu Mar 30 12:33:06 CST 2006

> See http://davidwallace2000.home.comcast.net/h8/project8080_archive/design_h17.html#label
> The volume number must be written to each sector (except as noted).  This also documents the label format and what SYSGEN does that's "special" (e.g.: it writes contiguous sectors).
> Thanks be to Dave Shaw for researching this and writing it all down.

Thanks David!

That was exactly the reminder I needed.

Although I knew this (after all, my disk emulation wouldn't work at all without
it), I missed one subtlety...

My simulator uses the very basic H8D format - this format does not store
the sector headers. So when I mount the disk, I read sector 9 and
retrieve the VOLID, which I use when emulating the headers for tracks
1+ (Track0 always return VOLID 0).

The problem is obvious once I thought about it - 255 is the VOLID used
on the distribution HDOS disk - so when I boot it, the simulator stores
255 as the VOLID. When INIT writes the disk, it expects the VOLID on
the disk to match what it put in the INIT, but the simulator has not
physically remounted the disk between when it was written (formatted
if you will) with new headers (by INIT) and INIT tries to read it - so it
still emulates the original VOLID of 255. This is why 255 worked - It just
happened to match what I booted. Any other VOLID would not match.

The solution is to have the simulator update it's recorded VOLID for
the disk when a non-Track zero sector is written with a different

The reason SYSGEN didn't work is because It won't accept the same
VOLID for source and destination (It thinks you put the source back
in). Once I was able to INIT a disk with a different VOLID from the
distribution disk, I could SYSGEN it with no problem!


dave06a (at)    Dave Dunfield
dunfield (dot)  Firmware development services & tools: www.dunfield.com
com             Vintage computing equipment collector.
Delivered by the SEBHC Mailing List

More information about the Sebhc mailing list