The X1215 imager project has been completed to the point were I can now read data from the disk. The drive mechanism is not too stable (the heads may drift away, resulting in an UNSAFE condition), so I've chosen to image disk packs as separate images for each track, to make it easy to restart without having to redo everything. As the disks have 204 tracks on each side, this results in 408 files of half a megabyte each. The disk images contain the raw data as delivered by the disk, sampled at 50 MHz. That's 20 bits of sampling data for each bit cell. The track image is made during three full revolutions of the disk, so there should be 3 copies of each sector in each file. That way, if one copy is bad, another copy may have the correct data.

I've written a second program that takes one of these image files, and tries to recover the data from it. It will try to separate the data from the inter-sector gaps, and then analyze each sector to find the preamble (a lot of '0's followed by a single '1' to mark the beginning of the sector), the sector data (205 16-bit words), and the checksum word. If the checksum word matches the calculated checksum (XOR of each data word), the sector is good. If not, the backup copies are tried.

The output is presented like this:

ANALYZE SECTOR 14
340 bit preamble after 0 bits of crud
XOR: 6c9b LRC: 6c9b
0003 018e 2043 4f4e 5452 4f4c 2d53 5441 5455 5320      CONTROL-STATUS
4152 4541 2028 2f44 4354 2920 004c 0168 003c 0050 AREA (/DCT)  L h < P
2020 2020 2020 2020 2044 4154 4120 2020 2030 2020          DATA    0
2020 2020 2020 2020 2020 2020 2044 5754 4154 543a              DWTATT:
2041 5454 4143 4820 4c4f 4341 5449 4f4e 004d 0024  ATTACH LOCATION M $
003e 0050 2020 2020 2020 2020 2044 4154 4120 2020  > P         DATA
2032 3320 2020 2020 2020 2020 2020 2020 2044 5754  23              DWT
5353 543a 204c 4556 454c 2d23 2028 474e 494d 4f4e SST: LEVEL-# (GNIMON
2920 004d 0064 0006 0050 2a20 004d 00a6 0014 0050 )  M d   P*  M     P
2a20 2020 4457 5420 464f 5220 5050 3330 004d 00b0 *   DWT FOR PP30 M
0006 0050 2a20 004d 00c8 0038 0050 443a 5050 3330    P*  M   8 PD:PP30
2020 2044 4154 4120 2020 2027 5050 2720 2020 2020    DATA    'PP'
2020 2020 2020 2044 5754 444e 203a 2044 4556 4943        DWTDN : DEVIC
452d 4e41 4d45 004d 00d2 003c 0050 2020 2020 2020 E-NAME M   < P
2020 2044 4154 4120 2020 202f 3330 2020 2020 2020    DATA    /30
2020 2020 2020 2044 5754 4441 203a 2044 4556 4943        DWTDA : DEVIC
452d 4144 4452 4553 5320 004d 010e 0040 0050 2020 E-ADDRESS  M   @ P
2020 2020 2020 2044 4154 4120 2020 2038 3020 2020        DATA    80
2020 2020 2020 2020 2020 2044 5754 424c 473a 2042            DWTBLG: B
4553 5420 5245 434f 5244 204c 454e 4754 4820 004d EST RECORD LENGTH  M
014e 4e3a 0000 0000 0000                           NN:

This is already looking pretty decent. There's a slight problem, however. The first track read should be track 0, but it's not. The first track read appears to be track 2, so I'm missing the first two tracks. That means adjusting the head position, which I'm not very keen on doing, as I haven't got the proper alignment packs. It'll be a kind of informed twiddling around with the alignment until I get track 0 data.

Once this is done, I'll complete the program to combine the different raw image files into a final image file containing just the data.