X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Modules%2FStorage%2FFDD%2Ffdd.c;h=e507e94e3de226d1f5958956c76c9ee5edb31de5;hb=246109db20d55bb7deb50af2f62f40b96fa4e831;hp=5c2848ffee5a3ded0230e7e8761906cee2641c67;hpb=e957c67ea0f63a668303d087af7ee0c7ecff1f01;p=tpg%2Facess2.git diff --git a/Modules/Storage/FDD/fdd.c b/Modules/Storage/FDD/fdd.c index 5c2848ff..e507e94e 100644 --- a/Modules/Storage/FDD/fdd.c +++ b/Modules/Storage/FDD/fdd.c @@ -712,6 +712,7 @@ int FDD_int_SendByte(int base, Uint8 byte) if( inb(base + PORT_MAINSTATUS) & 0x40 ) { Log_Warning("FDD", "FDD_int_SendByte: DIO set, is this ok?"); + return -2; } if( now() < end ) @@ -740,6 +741,7 @@ int FDD_int_GetByte(int base, Uint8 *value) if( !(inb(base + PORT_MAINSTATUS) & 0x40) ) { Log_Warning("FDD", "FDD_int_GetByte: DIO unset, is this ok?"); + return -2; } if( now() < end ) @@ -842,11 +844,13 @@ int FDD_Reset(int id) // Recalibrate disks LOG("Recalibrate disks (16x seek)"); retries = 16; - while(FDD_int_SeekTrack(0, 0, 1) == 0 && retries --); // set track + while(FDD_int_SeekTrack(0, 0, 1) == 0 && retries --) + Threads_Yield(); // set track if(retries < 0) LEAVE_RET('i', -1); retries = 16; - while(FDD_int_SeekTrack(0, 1, 1) == 0 && retries --); // set track + while(FDD_int_SeekTrack(0, 1, 1) == 0 && retries --) + Threads_Yield(); // set track if(retries < 0) LEAVE_RET('i', -1); LOG("Recalibrating Disk");