From a51e56090b3f8852f7b20de4b6239ed71a56a0d7 Mon Sep 17 00:00:00 2001 From: Tolik <85737314+Tolik-Trek@users.noreply.github.com> Date: Tue, 15 Apr 2025 04:36:35 +1000 Subject: [PATCH] =?UTF-8?q?-bug=20fdd-drv.asm:=20=D0=BD=D0=B5=20=D0=B1?= =?UTF-8?q?=D1=83=D0=B4=D0=B5=D1=82=20=D1=87=D0=B8=D1=82=D0=B0=D1=82=D1=8C?= =?UTF-8?q?=20=D1=81=D0=B5=D0=BA=D1=82=D0=BE=D1=80=20=D0=B1=D0=BE=D0=BB?= =?UTF-8?q?=D1=8C=D1=88=D0=B5=20DSS=5FMAX=5FSECTOR=5FSIZE.=20-bug=20OPENDS?= =?UTF-8?q?K:=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA=D0=B0=20?= =?UTF-8?q?=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B8=20=D0=BF=D0=BE=D1=81=D0=BB?= =?UTF-8?q?=D0=B5=20Dss.DRV.MediaCheck?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DSS/DOS_Proc.asm | 1 + DSS/build.txt | 2 +- DSS/drivers/media/Shared.asm | 1 - DSS/drivers/media/ata_atapi-drv.asm | 4 +--- DSS/drivers/media/fdd-drv.asm | 23 +++++++++++++++++++---- Shared_Includes | 2 +- 6 files changed, 23 insertions(+), 10 deletions(-) diff --git a/DSS/DOS_Proc.asm b/DSS/DOS_Proc.asm index 1bc60db..8720dd6 100644 --- a/DSS/DOS_Proc.asm +++ b/DSS/DOS_Proc.asm @@ -192,6 +192,7 @@ OPENDSK: ;!TEST DRV.Open RST ToDSS.DRV POP BC JR Z,.exit + JR C,.error JR .skip_open ;!FIXIT когда DRV.MediaCheck и DRV.Open будут отличаться ; .open: LD A,B diff --git a/DSS/build.txt b/DSS/build.txt index d99e90e..8580e7b 100644 --- a/DSS/build.txt +++ b/DSS/build.txt @@ -1 +1 @@ -29 \ No newline at end of file +30 \ No newline at end of file diff --git a/DSS/drivers/media/Shared.asm b/DSS/drivers/media/Shared.asm index abda541..9a4a8ad 100644 --- a/DSS/drivers/media/Shared.asm +++ b/DSS/drivers/media/Shared.asm @@ -182,7 +182,6 @@ MAKEDVC: LD C,A RET -;!FIXIT попеределывать тут вызовы через точки входа типа RST или вызовы типа LD C,0 : CALL HDDRIVE на прямые ;------------------------------------------------- ; RST 18h. Вектор дисковых устройств ; вход: a=номер устройства (0-25) diff --git a/DSS/drivers/media/ata_atapi-drv.asm b/DSS/drivers/media/ata_atapi-drv.asm index 8934286..b6be0c5 100644 --- a/DSS/drivers/media/ata_atapi-drv.asm +++ b/DSS/drivers/media/ata_atapi-drv.asm @@ -620,6 +620,7 @@ MediaCheck: PUSH IY ; CP DSS_Error.sys.UNKNOWN_FORMAT JR NZ,.exit + ; A != 0 AND A ; сброс ZF SCF ; [ ] media changed @@ -669,9 +670,6 @@ MediaCheck: PUSH IY CHECK_IDE_SECTOR_SIZE: ;RET LD E,(IY+LOGDRV.SECTOR_SIZE) LD D,(IY+LOGDRV.SECTOR_SIZE+1) - ; LD HL,DSS_MAX_SECTOR_SIZE - ; AND A - ; SBC HL,DE PUSH HL LD HL,-DSS_MAX_SECTOR_SIZE - 1 ADD HL,DE diff --git a/DSS/drivers/media/fdd-drv.asm b/DSS/drivers/media/fdd-drv.asm index e1d65f6..5ba7d07 100644 --- a/DSS/drivers/media/fdd-drv.asm +++ b/DSS/drivers/media/fdd-drv.asm @@ -178,8 +178,21 @@ Init: LD A,2 ; ; ; ; ; -Open: LD C,BIOS.DRV_RESET +Open: PUSH AF + LD C,BIOS.DRV_RESET RST ToBIOS + POP BC + RET C + ; + LD A,B + LD C,BIOS.DRV_GET_PAR + RST ToBIOS + LD DE,-DSS_MAX_SECTOR_SIZE - 1 ; [ ] 15/04/25 не будет читать сектор больше DSS_MAX_SECTOR_SIZE + ; ZF = 0 + LD A,DSS_Error.sys.UNKNOWN_FORMAT + OR A + ; + ADD IX,DE ; если размер сектора больше, то облом RET ; ; ; @@ -190,7 +203,9 @@ Close: XOR A ;!FIXIT проверять ВГ93 когда это станет возможным -MediaCheck: IF NON_REMOVABLE_FDD +MediaCheck: CALL Open + RET C + IF NON_REMOVABLE_FDD XOR A ELSE LD A,#FF @@ -234,13 +249,13 @@ GetBPB: LD IX,0 ; RET ; ; ; -; +; !FIXIT может умереть на размере сектора больше 512 байтов Read: LD C,BIOS.DRV_READ RST ToBIOS RET ; ; ; -; +; !FIXIT может умереть на размере сектора больше 512 байтов Write: LD C,BIOS.DRV_WRITE RST ToBIOS RET diff --git a/Shared_Includes b/Shared_Includes index a9f5915..bd4546a 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit a9f5915a3275f5ffbafa0994bb97c5846aab826c +Subproject commit bd4546a854905998edab6144547b79aa673404f6