Polymorphic System88 disk
dkelvey at hotmail.com
Mon Apr 7 23:37:27 CDT 2008
I thought I'd talk about some of the fun I've been having
to recover images from some disk.
The disk are 5.25 double density, hard sectored.
I started with a controller designed for the Polymorphic machine
but for double density 8 inch disk.
First thing was to reduce the clock speed and change some capacitor
values in the PLL circuits.
I was hoping theat the formats would be similar.
I next disassembled the code for the 8 inch disk. I made comments
and all for the different parts, especially the sector read code.
I tried the 8 inch code on the 5.25 disk. No luck there, the format
was different. How different, I had no idea yet.
Hard sectored disk usually use a synchronous UART to read/write data.
This controller was no exception. That meant I needed to find out
the sync byte used.
I used my scope with delayed sweep to pick out the first data of each
sector. To my surprise, it turned out to be the same as the 8 inch, the
Still the headers were different. I next modified the code such that
after reading the sync , it would dump the rest of the data, regardless
of which sector it was reading.
Bingo, there was a difference. The 8 inch had track, track complement,
sector, sector complement. It was the other way around for the 5.25
disk. I modified some more code but I was still getting CRC errors.
Unluckily, The first sector I'd read just happend to have all zeros in the data
field. I went back to reading random sectors to see what was missing in
the headers. It seem that unlike the 8 inch, there were three pad bytes
of zero value bytes before the data.
Why they'd done this I don't know. Unlike soft sectored, one always
rewrites the headers when writing data.
More software modifications!
Still no getting good CRCs. The headers looked good and the data
read was repeatable. I added another INIR instruction to the read
and found that each sector had a 0 byte and a FF byte before what
looked to be the CRC.
Now, this was something that made sense. A lost bit, in the data,
would be hard to figure what the good CRC alignment would be.
The bits would only need to be shifted to fix the trailing 0 and FF.
The the CRC could be used for data recovery.
Finally I could read a sector without a CRC error. Still, I wasn't done
Besides the different number of sectors per track ( you'll remember
the work on the divide by ten ). It seems that side two is different
than how the 8 inch drive did it.
On the 8 inch, tracks were numbered 0 and on, the same on both sides.
The sector index would first read side one and then side two before
incrementing to the next track.
Of coarse, the 5.25 disk were different. It numbered 0 to 34 on
side 0 and 35 to 69 on side 1. This require more software changes.
I'm finally able to actually read these disk. Now I can start transfering
Get in touch in an instant. Get Windows Live Messenger now.
More information about the cctalk