From 39c2d239aaafe45f3fb5c66e2f35ef86a712c0a6 Mon Sep 17 00:00:00 2001 From: Tolik <85737314+Tolik-Trek@users.noreply.github.com> Date: Mon, 26 Jan 2026 01:03:59 +1000 Subject: [PATCH] =?UTF-8?q?fdd-drv.asm=20=D0=BF=D0=BE=D0=B4=D1=80=D0=B5?= =?UTF-8?q?=D0=B4=D0=B0=D0=BA=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=B4=20=D0=BD=D0=BE=D0=B2=D1=8B=D0=B9=20=D0=B1?= =?UTF-8?q?=D0=B8=D0=BE=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DSS/drivers/media/fdd-drv.asm | 57 +++++++++++++++++++++-------------- Shared_Includes | 2 +- 2 files changed, 35 insertions(+), 24 deletions(-) diff --git a/DSS/drivers/media/fdd-drv.asm b/DSS/drivers/media/fdd-drv.asm index e03e5c4..ac025f2 100644 --- a/DSS/drivers/media/fdd-drv.asm +++ b/DSS/drivers/media/fdd-drv.asm @@ -178,11 +178,12 @@ Init: LD A,2 ; ; ; ; ; -Open: PUSH AF +Open: PUSH IY + PUSH AF LD C,BIOS.DRV_RESET RST ToBIOS POP BC - RET C + JR C,.error ; LD A,B LD C,BIOS.DRV_GET_PAR @@ -193,7 +194,8 @@ Open: PUSH AF OR A ; убираем ZF, если есть ; ADD IX,DE ; если размер сектора больше, то облом - RET +.error: POP IY + RET ; ; ; ; @@ -216,7 +218,12 @@ MediaCheck: CALL Open ;DE - ADDRESS -GetBPB: LD IX,0 +GetBPB: PUSH IY + CALL .Start + POP IY + RET + ; +.Start: LD IX,0 ; fix bug 14/01/2026. если нет MBR, то никаких муток LD H,D LD L,E @@ -248,22 +255,14 @@ GetBPB: LD IX,0 SCF RET NZ ; - PUSH DE ; D - drive, E - Sectors Per Track + PUSH DE ; D - drive, E - Sectors Per Track LD A,D LD C,BIOS.DRV_GET_PAR RST ToBIOS - ; !TEST - ;LD A,H ; A heads - ;POP HL ; H - drive, L - Sectors Per Track - ;PUSH HL - ;LD H,A ; H - heads, L - Sectors Per Track - ;POP AF ; A - drive - ; - LD C,H ; C heads - POP HL ; H - drive, L - Sectors Per Track - LD A,H ; A - drive - LD H,C ; H - heads, L - Sectors Per Track - ; + LD C,H ; C heads + POP HL ; H - drive, L - Sectors Per Track + LD A,H ; A - drive + LD H,C ; H - heads, L - Sectors Per Track LD C,BIOS.DRV_SET_PAR RST ToBIOS XOR A @@ -277,14 +276,18 @@ GetBPB: LD IX,0 ; ; ; -Read: LD C,BIOS.DRV_READ +Read: PUSH IY + LD C,BIOS.DRV_READ RST ToBIOS + POP IY RET ; ; ; -Write: LD C,BIOS.DRV_WRITE +Write: PUSH IY + LD C,BIOS.DRV_WRITE RST ToBIOS + POP IY RET ; ; ; @@ -351,21 +354,23 @@ GenIOCTL: BIT 7,B RET ; .next: PUSH AF + PUSH IY LD C,BIOS.DRV_GET_PAR RST ToBIOS + POP IY JR C,.NONE_FDD + ; PUSH HL PUSH DE LD A,H LD C,L LD HL,0 LD B,H - ; .mull_loop1: ADD HL,BC DEC A JR NZ,.mull_loop1 ; - ; HL - SECTOR PER CYLLINDER + ; HL - SECTORS PER CYLINDER ; A=0 ZF=0 CF=0 LD B,H LD C,L @@ -422,7 +427,12 @@ GenIOCTL: BIT 7,B ; D5 - "1" RESERVED ; D6 - ADDRESSING MODE LBA/CHS ; D7 - "1" RESERVED -.SetParams: PUSH AF +.SetParams: PUSH IY + CALL .Start + POP IY + RET + ; +.Start: PUSH AF EXX EX DE,HL LD H,L @@ -439,7 +449,8 @@ GenIOCTL: BIT 7,B JR C,.NONE_FDD POP AF LD C,BIOS.DRV_SET_PAR - JP ToBIOS + RST ToBIOS + RET ; ; ; diff --git a/Shared_Includes b/Shared_Includes index 2fec620..4672651 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 2fec6202f716cfa3ed48fb9bfd79d1081cc2721b +Subproject commit 467265101452bce67322e4b77cc0878044859eaa