X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Modules%2FStorage%2FFDD%2Ffdd.c;h=3b886e164b667afe8d07a05c72e5332f68ad17d8;hb=fe2794b4f932c0755674493b6a6da4b60a5c2433;hp=cbd7844feb668900e042aca7801af14bb59b46e3;hpb=9d85201216cb35e1b1e051b1d7cdc38eaa5befa4;p=tpg%2Facess2.git diff --git a/Modules/Storage/FDD/fdd.c b/Modules/Storage/FDD/fdd.c index cbd7844f..3b886e16 100644 --- a/Modules/Storage/FDD/fdd.c +++ b/Modules/Storage/FDD/fdd.c @@ -402,9 +402,6 @@ int FDD_int_ReadWriteSector(Uint32 Disk, Uint64 SectorAddr, int Write, void *Buf LOG("Sending command"); - //Threads_Wait(100); // Wait for Head to settle - Time_Delay(100); - for( i = 0; i < FDD_MAX_READWRITE_ATTEMPTS; i ++ ) { if( Write ) @@ -581,6 +578,10 @@ int FDD_int_SeekTrack(int disk, int head, int track) // Set Track in structure gFDD_Devices[disk].track[head] = track; + + // Wait for Head to settle + Time_Delay(100); + return 1; } @@ -663,11 +664,12 @@ inline void FDD_WaitIRQ() void FDD_SensInt(int base, Uint8 *sr0, Uint8 *cyl) { + Uint8 byte; FDD_int_SendByte(base, CHECK_INTERRUPT_STATUS); - if(sr0) *sr0 = FDD_int_GetByte(base); - else FDD_int_GetByte(base); - if(cyl) *cyl = FDD_int_GetByte(base); - else FDD_int_GetByte(base); + byte = FDD_int_GetByte(base); + if(sr0) *sr0 = byte; + byte = FDD_int_GetByte(base); + if(cyl) *cyl = byte; } /** @@ -683,6 +685,13 @@ void FDD_int_SendByte(int base, char byte) if( timeout >= 0 ) { + #if 0 && DEBUG + static int totalTimeout = 0; + static int totalCount = 0; + totalTimeout += timeout; + totalCount ++; + LOG("timeout = %i, average %i", timeout, totalTimeout/totalCount); + #endif outb(base + PORT_DATA, byte); } else @@ -704,6 +713,13 @@ int FDD_int_GetByte(int base) if( timeout >= 0 ) { + #if 0 && DEBUG + static int totalTimeout = 0; + static int totalCount = 0; + totalTimeout += timeout; + totalCount ++; + LOG("timeout = %i, average %i", timeout, totalTimeout/totalCount); + #endif return inb(base + PORT_DATA); } else