summaryrefslogtreecommitdiff
path: root/Kernel/BlkDev/DskFDC.HC
diff options
context:
space:
mode:
Diffstat (limited to 'Kernel/BlkDev/DskFDC.HC')
-rw-r--r--Kernel/BlkDev/DskFDC.HC10
1 files changed, 6 insertions, 4 deletions
diff --git a/Kernel/BlkDev/DskFDC.HC b/Kernel/BlkDev/DskFDC.HC
index 39aca31..564f0c7 100644
--- a/Kernel/BlkDev/DskFDC.HC
+++ b/Kernel/BlkDev/DskFDC.HC
@@ -251,14 +251,15 @@ Bool FDCInit(CBlkDev *bd)
U8 FDCWriteData(CBlkDev *bd,U8 cyl,Bool head,U8 start,U8 end)
{
U16 length=(end-start+1)*bd->blk_size;
- U8 st0,st1,st2,pcn,hd,sect,size
+ U64 st0,st1,st2,pcn,hd,sect,size
fdc_int_semaphore=FALSE;
FDCDMAInit(length);
FDCDMAPrepWrite();
- FDCSendByte(bd,FDC_WRITE_DATA|(bd->heads>1<<7)|mfm<<6|);
+ FDCSendByte(bd,FDC_WRITE_DATA|bd->mfm<<6);
+ FDCSendByte(bd,head<<2|bd->unit);
FDCSendByte(bd,cyl);
FDCSendByte(bd,head);
FDCSendByte(bd,start);
@@ -283,14 +284,15 @@ U8 FDCWriteData(CBlkDev *bd,U8 cyl,Bool head,U8 start,U8 end)
U8 FDCReadData(CBlkDev *bd,U8 cyl,Bool head,U8 start,U8 end)
{
U16 length=(end-start+1)*bd->blk_size;
- U8 st0,st1,st2,pcn,hd,sect,size
+ U64 st0,st1,st2,pcn,hd,sect,size
fdc_int_semaphore=FALSE;
FDCDMAInit(length);
FDCDMAPrepRead();
- FDCSendByte(bd,FDC_READ_DATA|mfm<<6|);
+ FDCSendByte(bd,FDC_READ_DATA|bd->mfm<<6);
+ FDCSendByte(bd,head<<2|bd->unit);
FDCSendByte(bd,cyl);
FDCSendByte(bd,head);
FDCSendByte(bd,start); // sector is ignored