I confirmed that the WriteEntireCartridge transaction does not set up the cylinder, head and sector to 0 as it starts up, thus it will initially point to some random place in RAM which is written by the first WriteSector transaction. This flaw is also present in the ReadEntireCartridge transaction.
The solution is to have a couple of steps in the FSM for the startup of the transactions, which are detected and used to reset the three registers that define the next sector upon which operations will take place. I built that logic and prepared for testing which I will do at Marc's house where the drive is currently located.
FREQUENCY COUNTER CHECKOUT
I pulled out a Heathkit SM 2420 frequency counter that I bought on ebay a few years ago but never turned on until now. The good news is that it is working properly, although I don't have a good standard to check its internal 10MHz oscillator against.
I decided to use my modern Tektronix scope and see what frequency it detected. The scope claimed it was oscillating at 9,999,970 Hz, which is quite close although not exactly 10MHz. It started off just above 10MHz but as it warmed up the oscillator sagged down to be 30 Hz low.
If I am bothered by an error of 30Hz, I can pick up a Rubidium clock module with or or GPS receiver to further discipline the timing. That should reduce oscillator error to within hundredths or thousands of one Hz of 10MHz. I have no need for that level of accuracy right now.
Great news on the first sector. Looks like we are almost there. We can try to calibrate your frequency counter against mine if you bring it next time.
ReplyDelete