21 November 2004
In the previous WIP update we talked about the various data access execution paths. Well, now (3) works - so real data is accessible to the FDC.
It was quite a challenge to get every cycle right and still make it fast. Even simple things like (a * b) / c
optimized to (b prev + b) / c
to save on the multiply (if you iterate this expression, the next iteration is of course ((a + 1) * b) / c
which equals (a * b + b) / c)
, or guess based iteration, but sort of backtracked as it is much faster than the usual way.
This it is not very trivial and it was a challenge to make it this way, but it is worth the effort.
TOS can now seek and verify track positions properly based on the data read.
Type 2 read sector commands have now been implemented. After checking a few games, we see some that do not work yet.
The Shifter/AM Detector logic is mostly guesswork because we could not gain the exact algorithm from the datasheets. This can be fine-tuned once something that really relies on the junk data that is output is found - but it may be ok as it is already.