From 93ddde6d5ec9e66e488acf7e7529f1fb796417bd Mon Sep 17 00:00:00 2001 From: Harley Travis Date: Sat, 27 Jun 2026 14:40:19 -0500 Subject: Update FDCReadBlks FDCReadBlks was patched to use 64-bit variables, turn the motor on and off, use the correct variable for the head count, and unlock the block device before returning. --- Kernel/BlkDev/DskFDC.HC | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'Kernel/BlkDev') diff --git a/Kernel/BlkDev/DskFDC.HC b/Kernel/BlkDev/DskFDC.HC index 874873b..73102c6 100644 --- a/Kernel/BlkDev/DskFDC.HC +++ b/Kernel/BlkDev/DskFDC.HC @@ -335,16 +335,21 @@ U0 FDCRBlks(CDrv *dv,U8 *buf,I64 blk,I64 cnt) U0 FDCReadBlks(CBlkDev *bd,U8 *buf,I64 blk,I64 cnt) { I64 retries=3; - U8 c,h,s,st0; + U64 c,h,s,st0; Bool unlock=BlkDevLock(bd); + FDCMotor(bd,ON); + retry: - if (retries) throw('BlkDev'); + if (retries) { + FDCMotor(bd,OFF); + throw('BlkDev'); + } FDCSelDrv(bd); c=blk/(bd->heads*bd->spt); - h=blk/bd->spt%heads; + h=blk/bd->spt%bd->heads; s=blk%bd->spt+1; st0=FDCReadData(bd,c,h,s,s+cnt-1); @@ -355,6 +360,10 @@ U0 FDCReadBlks(CBlkDev *bd,U8 *buf,I64 blk,I64 cnt) } MemCpy(buf,&FDC_DMA,cnt*bd->blk_size); + + FDCMotor(bd,OFF); + + if (unlock) BlkDevUnlock(bd); } U0 FDCWBlks(CDrv *dv,U8 *buf,I64 blk,I64 cnt) -- cgit v1.2.3