From 371e93f6baf949fae443c0473f3c7624b10d958e Mon Sep 17 00:00:00 2001 From: Tolik <85737314+Tolik-Trek@users.noreply.github.com> Date: Tue, 4 Feb 2025 01:43:46 +1000 Subject: [PATCH] ... --- DSS/DRV-MAIN.ASM | 2 +- DSS/build.txt | 2 +- DSS/drivers/media/ata_atapi-drv.asm | 49 +++++++++++++++++++---------- Shared_Includes | 2 +- 4 files changed, 36 insertions(+), 19 deletions(-) diff --git a/DSS/DRV-MAIN.ASM b/DSS/DRV-MAIN.ASM index a87e8e5..0b53a17 100644 --- a/DSS/DRV-MAIN.ASM +++ b/DSS/DRV-MAIN.ASM @@ -266,7 +266,7 @@ LOGDRV EQU DEVICE + DEVICE.End .SIZE_IN_SECTORS EQU 5 .PARTITION_RECORD_NUM EQU 9 .SECTOR_SIZE EQU 10 ; word -.RemovableMedia EQU 12 ; bit0=1 removable, bit1=1 drive changed, bit7..2 reserved +.MediaParameters EQU 12 ; bit0=1 removable, bit1=1 drive changed, bit7..2 reserved .Reserved_1 EQU 13 .Reserved_2 EQU 14 .Reserved_3 EQU 15 diff --git a/DSS/build.txt b/DSS/build.txt index e440e5c..301160a 100644 --- a/DSS/build.txt +++ b/DSS/build.txt @@ -1 +1 @@ -3 \ No newline at end of file +8 \ No newline at end of file diff --git a/DSS/drivers/media/ata_atapi-drv.asm b/DSS/drivers/media/ata_atapi-drv.asm index eb918a5..86764f5 100644 --- a/DSS/drivers/media/ata_atapi-drv.asm +++ b/DSS/drivers/media/ata_atapi-drv.asm @@ -269,14 +269,22 @@ Init: PUSH IY .NX_DVCI: PUSH BC LD A,C LD (CURRENT_DRIVE.Number),A - LD C,BIOS.DRV_DETECT + LD C,BIOS.DRV_DETECT ;[ ] media change переделать логику тут и в биос? ; !FIXIT RST ToBIOS + CALL C,.check_error CALL NC,DEFINE_PARTITIONS - POP BC +.skip: POP BC INC C JR C,.NX_DVCI DJNZ .NX_DVCI RET + ; +.check_error: XOR BIOS.Error.BadNumber + RET NZ + SCF + RET + + ;---------------------------------------------------------------------[^] ;+00 BYTE MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/... @@ -293,7 +301,7 @@ SelectDrive: PUSH DE ; LOGDRV_ENTRY_FIND LOGDRV ; - ; [ ] custorm sector size + ; [ ] custom sector size CALL CHECK_IDE_SECTOR_SIZE RLA ; @@ -405,15 +413,24 @@ GetParams: EX DE,HL POP IY JR NC,.next ; - CP BIOS.Error.ATAPI.NotReady - SCF - LD A,DSS_Error.drv.NOT_READY - JR Z,.error - LD A,DSS_Error.drv.INVALID_DRIVE - JR .error + ;CP BIOS.Error.ATAPI.NotReady + ;SCF + ;LD A,DSS_Error.drv.NOT_READY + ;JR Z,.error + ;LD A,DSS_Error.drv.INVALID_DRIVE + ;JR .error + ; + CP BIOS.Error.BadNumber + SCF + LD A,DSS_Error.drv.INVALID_DRIVE + JR Z,.error + LD A,DSS_Error.drv.NOT_READY + JR .error + + ; [ ] media change .next: EX AF,AF - JR C,.NoMediaChange + JR NC,.NoMediaChange CP BIOS.Error.ATAPI.UnitAttention JR NZ,.NoMediaChange ; @@ -504,7 +521,7 @@ MediaCheck: PUSH IY ; ; [ ] media changed LD A,(IY + LOGDRV.PHISICAL_DRV_NUMBER) - LD C,BIOS.DRV_DETECT + LD C,BIOS.DRV_DETECT ;[ ] media change переделать логику тут и в биос? ; !FIXIT PUSH IY RST ToBIOS POP IY @@ -514,7 +531,7 @@ MediaCheck: PUSH IY JR Z,.Reinit JR .exit ; -.next_check: BIT 1,(IY + LOGDRV.RemovableMedia) +.next_check: BIT 1,(IY + LOGDRV.MediaParameters) JR NZ,.Reinit ; XOR A @@ -524,7 +541,7 @@ MediaCheck: PUSH IY .Reinit: LD A,(IY + LOGDRV.PHISICAL_DRV_NUMBER) LD (CURRENT_DRIVE.Number),A LD (LOGDRV_OFFSET),IY - ;RES 1,(IY + LOGDRV.RemovableMedia) + ;RES 1,(IY + LOGDRV.MediaParameters) CALL DEFINE_PARTITIONS LD A,#FF ;!HARDCODE drive changed OR A @@ -635,7 +652,7 @@ Exec_BIOS: PUSH IY CP BIOS.Error.ATAPI.UnitAttention SCF RET NZ - SET 1,(IY + LOGDRV.RemovableMedia) + SET 1,(IY + LOGDRV.MediaParameters) RET @@ -686,7 +703,7 @@ DEFINE_PARTITIONS: LD (IX + LOGDRV.SECTOR_SIZE),C LD (IX + LOGDRV.SECTOR_SIZE + 1),B LD A,(CURRENT_DRIVE.Removable) - LD (IX + LOGDRV.RemovableMedia),A + LD (IX + LOGDRV.MediaParameters),A ;[x] 17.12.2023 загрузка с активного раздела, а не с первого .ExtendedPartitionFlag+1: LD A,0 @@ -743,7 +760,7 @@ DEFINE_PARTITIONS: ;BPB SECTOR ;!TODO если CD-ROM, то другой номер сектора LD IX,(LOGDRV_OFFSET) LD A,(CURRENT_DRIVE.Removable) - LD (IX + LOGDRV.RemovableMedia),A + LD (IX + LOGDRV.MediaParameters),A XOR A LD (IX + LOGDRV.SECTOR_OFFSET + 0),A LD (IX + LOGDRV.SECTOR_OFFSET + 1),A diff --git a/Shared_Includes b/Shared_Includes index 171e479..b3224fc 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 171e4791a80462627c5876e095a042dc3e3b9eac +Subproject commit b3224fc3afac71c6b1d461ff54049e58657bbe5a