From b542705de8f0290f0a3e30687e8327e8e64b0576 Mon Sep 17 00:00:00 2001 From: John Hodge Date: Mon, 26 Sep 2011 13:08:44 +0800 Subject: [PATCH] Modules/FDD - Fixed random bug --- Modules/Storage/FDD/fdd.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Modules/Storage/FDD/fdd.c b/Modules/Storage/FDD/fdd.c index a7b20f7d..2de321da 100644 --- a/Modules/Storage/FDD/fdd.c +++ b/Modules/Storage/FDD/fdd.c @@ -707,8 +707,12 @@ int FDD_int_SendByte(int base, Uint8 byte) { tTime end = now() + 1000; // 1s - while( (inb(base + PORT_MAINSTATUS) & 0xC0) != 0x80 && now() < end ) + while( (inb(base + PORT_MAINSTATUS) & 0x80) != 0x80 && now() < end ) Threads_Yield(); //Delay + + if( inb(base + PORT_MAINSTATUS) & 0x40 ) { + Log_Warning("FDD", "FDD_int_SendByte: DIO set, is this ok?"); + } if( now() < end ) { @@ -731,9 +735,13 @@ int FDD_int_GetByte(int base, Uint8 *value) { tTime end = now() + 1000; // 1s - while( (inb(base + PORT_MAINSTATUS) & 0xd0) != 0xd0 && now() < end ) + while( (inb(base + PORT_MAINSTATUS) & 0x80) != 0x80 && now() < end ) Threads_Yield(); + if( !(inb(base + PORT_MAINSTATUS) & 0x40) ) { + Log_Warning("FDD", "FDD_int_GetByte: DIO unset, is this ok?"); + } + if( now() < end ) { Uint8 tmp = inb(base + PORT_DATA); -- 2.20.1