Reply 40 of 55, by superfury
I've adjusted it a bit, according to the PCem timing(based on the base timing, which I've assumed from the PCem source code to be the the ATAPI_PENDINGEXECUTETRANSFER_RESULTTIMING, which is 7us). Then I modified all timings to use the same multipliers as PCem does(based on https://bitbucket.org/pcem_emulator/pcem/src/ … fault/src/ide.c).
That just might improve responsiveness.
With the old timings, I get the accesses from EIP addresses >= 0x80000000:
Write sector count
Read sector count
Write drive/head(drive 0)
Write drive/head(drive 0)
Write drive/head(drive 1)
Write drive/head(drive 1)
Write sector count
Read sector count(AA)
Those are the accesses by Windows NT 3.1 in protected mode (the kernel or driver executing those). No commands are written to the command port.
Each drive select takes 50us.
Edit: Slightly more detailed notes on the disk accesses:
Write sector count(to primary master, value AA)@8040706C
Read sector count(to primary master, value AA)@80407004
Write drive/head(to primary master, value A0)@8040706C
Write drive/head(to primary master, value A0)@8040706C
Write drive/head(to primary slave, value B0)@8040706C
Write drive/head(to primary master, value A0)@8040706C
Write sector count(to secondary master, value AA)@8040706C
Read sector count(to secondary master, value AA)@80407004
Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows and PSP on itch.io