First post, by superfury
So, currently I have these timings(all are in nanoseconds, as double floating point numbers):
//Timeout for a reset! We're up to 300ms!
#define ATA_RESET_TIMEOUT 300000000.0
//Timing for drive select(documented as 400ns).
#define ATA_DRIVESELECT_TIMEOUT 400.0
//Timing to execute an ATAPI command(from finishing the command packet(12th byte) until start of the command to execute.) Also used during waiting for the drive to spin up.
#define ATAPI_PENDINGEXECUTECOMMANDTIMING 20000.0
//Timing for ATAPI to prepare data and give it to the host after starting the command!
#define ATAPI_PENDINGEXECUTETRANSFER_DATATIMING 20000.0
//Timing for ATAPI to prepare result phase and give it to the host(time from the final transferred sector/block) and entering the result phase!
#define ATAPI_PENDINGEXECUTETRANSFER_RESULTTIMING 7000.0
//Timing until ATAPI becomes ready for a new command during finishing command A1(IDENTIFY PACKET DEVICE) and command DA(GET MEDIA STATUS).
#define ATAPI_FINISHREADYTIMING 20000.0
It's currently reporting to be reading a 1024KB/s. Anyone got an idea what those value are supposed to be with a 1x CD-ROM drive?
Edit: I also noticed OAKCDROM.SYS failing to detect the CD-ROM drive when CPU speeds are too low(seen at least at 0.3 MIPS(million instructions per second) speeds and below)? Anyone knows something about that? The CPU speed is the only one affected by the cycle speed setting, the hardware timings themselves are constant(except they might be slightly affected by larger CPU timings due to the higher amount of nanoseconds to update in one chunk(which is updated for each instruction executed, so at 1 IPS, the hardware all updates in chunks of 1000000us, at 1KIPS in chunks of 1000us, at 1MIPS in chunks of 1us).