First post, by superfury
When I look at the FDC documentation, it says some interesting things:
http://cpctech.cpc-live.com/docs/upd765a/necfdc.htm
In ST1:
D7 EN
(End of Cylinder) When the FDC tries to access a sector beyond the final Sector of a Cylinder, this flag is set.
When does this happen? Doesn't the FDC just start once it reaches index, then tries to read(which can't find the CHS on the disk, reaches index again, then errors out with D0 and D2 set(as well as ST2's D0 set)?
Also, what happens when the sectors are scattered accross the disk? Does this case happen in that case as well? What does it consider the 'final Sector of a Cylinder'? Are the sectors that are read required to be next to each other in ascending Sector ID order for this bit not to be set? What about deleted sectors?
In ST2:
D4 WC
(Wrong Cylinder) This bit is related with the ND bit, and when the contents of C(3) on the medium is different from that stored in the IDR, this flag is set.
And
D1 BC
(Bad Cylinder) This bit is related with the ND bit, when the contents of C on the mdeium is different from that stored in the IDR and the contents of C is &FF, then this flag is set.
But, since C won't match when it's not the specified sector ID(which is the combination of C/H/S values in the sector ID on the disk), what happens in that case? Isn't it usually skipped, since the sector ID doesn't match in total(which means CHS doesn't match the requested CHS?)?
Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io