diff options
| author | Harley Travis <harleytravis123@outlook.com> | 2026-06-27 14:40:19 -0500 |
|---|---|---|
| committer | Harley Travis <harleytravis123@outlook.com> | 2026-06-27 14:40:19 -0500 |
| commit | 93ddde6d5ec9e66e488acf7e7529f1fb796417bd (patch) | |
| tree | 0fbd3417c183882881210a5d696fcce756ba4b74 | |
| parent | 6d640d9a3d1ef67675aaa8b1a21d8fdd986ad97a (diff) | |
| download | templeos-floppy-driver-93ddde6d5ec9e66e488acf7e7529f1fb796417bd.tar.gz | |
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.
| -rw-r--r-- | Kernel/BlkDev/DskFDC.HC | 15 |
1 files changed, 12 insertions, 3 deletions
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) |
