====== WDC1772 Data Access Framework Complete (2) ====== //21 November 2004// In the [[:wip:2004-11-20|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. ===== Implications for WinSTon ===== TOS can now seek and verify track positions properly based on the data read. ===== Type 2 Command ===== Type 2 read sector commands have now been implemented. After checking a few games, we see some that do not work yet. * StarGlider 2 boots but halts on a Type 3 read track command, probably checking a protection track after loading. * Flimbo's Quest boots, a Type 3 read track needed for disk authorisation. ===== Shifter/AM Detector Logic ===== 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.