This commit is contained in:
Tolik 2025-02-04 01:43:46 +10:00
parent a35f7e81f2
commit 371e93f6ba
4 changed files with 36 additions and 19 deletions

View File

@ -266,7 +266,7 @@ LOGDRV EQU DEVICE + DEVICE.End
.SIZE_IN_SECTORS EQU 5 .SIZE_IN_SECTORS EQU 5
.PARTITION_RECORD_NUM EQU 9 .PARTITION_RECORD_NUM EQU 9
.SECTOR_SIZE EQU 10 ; word .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_1 EQU 13
.Reserved_2 EQU 14 .Reserved_2 EQU 14
.Reserved_3 EQU 15 .Reserved_3 EQU 15

View File

@ -1 +1 @@
3 8

View File

@ -269,14 +269,22 @@ Init: PUSH IY
.NX_DVCI: PUSH BC .NX_DVCI: PUSH BC
LD A,C LD A,C
LD (CURRENT_DRIVE.Number),A LD (CURRENT_DRIVE.Number),A
LD C,BIOS.DRV_DETECT LD C,BIOS.DRV_DETECT ;[ ] media change ¯¥à¥¤¥« âì «®£¨ªã âãâ ¨ ¢ ¡¨®á? ; !FIXIT
RST ToBIOS RST ToBIOS
CALL C,.check_error
CALL NC,DEFINE_PARTITIONS CALL NC,DEFINE_PARTITIONS
POP BC .skip: POP BC
INC C INC C
JR C,.NX_DVCI JR C,.NX_DVCI
DJNZ .NX_DVCI DJNZ .NX_DVCI
RET RET
;
.check_error: XOR BIOS.Error.BadNumber
RET NZ
SCF
RET
;---------------------------------------------------------------------[^] ;---------------------------------------------------------------------[^]
;+00 BYTE MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/... ;+00 BYTE MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/...
@ -293,7 +301,7 @@ SelectDrive: PUSH DE
; ;
LOGDRV_ENTRY_FIND LOGDRV LOGDRV_ENTRY_FIND LOGDRV
; ;
; [ ] custorm sector size ; [ ] custom sector size
CALL CHECK_IDE_SECTOR_SIZE CALL CHECK_IDE_SECTOR_SIZE
RLA RLA
; ;
@ -405,15 +413,24 @@ GetParams: EX DE,HL
POP IY POP IY
JR NC,.next JR NC,.next
; ;
CP BIOS.Error.ATAPI.NotReady ;CP BIOS.Error.ATAPI.NotReady
SCF ;SCF
LD A,DSS_Error.drv.NOT_READY ;LD A,DSS_Error.drv.NOT_READY
JR Z,.error ;JR Z,.error
LD A,DSS_Error.drv.INVALID_DRIVE ;LD A,DSS_Error.drv.INVALID_DRIVE
JR .error ;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 ; [ ] media change
.next: EX AF,AF .next: EX AF,AF
JR C,.NoMediaChange JR NC,.NoMediaChange
CP BIOS.Error.ATAPI.UnitAttention CP BIOS.Error.ATAPI.UnitAttention
JR NZ,.NoMediaChange JR NZ,.NoMediaChange
; ;
@ -504,7 +521,7 @@ MediaCheck: PUSH IY
; ;
; [ ] media changed ; [ ] media changed
LD A,(IY + LOGDRV.PHISICAL_DRV_NUMBER) LD A,(IY + LOGDRV.PHISICAL_DRV_NUMBER)
LD C,BIOS.DRV_DETECT LD C,BIOS.DRV_DETECT ;[ ] media change ¯¥à¥¤¥« âì «®£¨ªã âãâ ¨ ¢ ¡¨®á? ; !FIXIT
PUSH IY PUSH IY
RST ToBIOS RST ToBIOS
POP IY POP IY
@ -514,7 +531,7 @@ MediaCheck: PUSH IY
JR Z,.Reinit JR Z,.Reinit
JR .exit JR .exit
; ;
.next_check: BIT 1,(IY + LOGDRV.RemovableMedia) .next_check: BIT 1,(IY + LOGDRV.MediaParameters)
JR NZ,.Reinit JR NZ,.Reinit
; ;
XOR A XOR A
@ -524,7 +541,7 @@ MediaCheck: PUSH IY
.Reinit: LD A,(IY + LOGDRV.PHISICAL_DRV_NUMBER) .Reinit: LD A,(IY + LOGDRV.PHISICAL_DRV_NUMBER)
LD (CURRENT_DRIVE.Number),A LD (CURRENT_DRIVE.Number),A
LD (LOGDRV_OFFSET),IY LD (LOGDRV_OFFSET),IY
;RES 1,(IY + LOGDRV.RemovableMedia) ;RES 1,(IY + LOGDRV.MediaParameters)
CALL DEFINE_PARTITIONS CALL DEFINE_PARTITIONS
LD A,#FF ;!HARDCODE drive changed LD A,#FF ;!HARDCODE drive changed
OR A OR A
@ -635,7 +652,7 @@ Exec_BIOS: PUSH IY
CP BIOS.Error.ATAPI.UnitAttention CP BIOS.Error.ATAPI.UnitAttention
SCF SCF
RET NZ RET NZ
SET 1,(IY + LOGDRV.RemovableMedia) SET 1,(IY + LOGDRV.MediaParameters)
RET RET
@ -686,7 +703,7 @@ DEFINE_PARTITIONS:
LD (IX + LOGDRV.SECTOR_SIZE),C LD (IX + LOGDRV.SECTOR_SIZE),C
LD (IX + LOGDRV.SECTOR_SIZE + 1),B LD (IX + LOGDRV.SECTOR_SIZE + 1),B
LD A,(CURRENT_DRIVE.Removable) LD A,(CURRENT_DRIVE.Removable)
LD (IX + LOGDRV.RemovableMedia),A LD (IX + LOGDRV.MediaParameters),A
;[x] 17.12.2023 § £à㧪  á  ªâ¨¢­®£® à §¤¥« ,   ­¥ á ¯¥à¢®£® ;[x] 17.12.2023 § £à㧪  á  ªâ¨¢­®£® à §¤¥« ,   ­¥ á ¯¥à¢®£®
.ExtendedPartitionFlag+1: .ExtendedPartitionFlag+1:
LD A,0 LD A,0
@ -743,7 +760,7 @@ DEFINE_PARTITIONS:
;BPB SECTOR ;!TODO ¥á«¨ CD-ROM, â® ¤à㣮© ­®¬¥à ᥪâ®à  ;BPB SECTOR ;!TODO ¥á«¨ CD-ROM, â® ¤à㣮© ­®¬¥à ᥪâ®à 
LD IX,(LOGDRV_OFFSET) LD IX,(LOGDRV_OFFSET)
LD A,(CURRENT_DRIVE.Removable) LD A,(CURRENT_DRIVE.Removable)
LD (IX + LOGDRV.RemovableMedia),A LD (IX + LOGDRV.MediaParameters),A
XOR A XOR A
LD (IX + LOGDRV.SECTOR_OFFSET + 0),A LD (IX + LOGDRV.SECTOR_OFFSET + 0),A
LD (IX + LOGDRV.SECTOR_OFFSET + 1),A LD (IX + LOGDRV.SECTOR_OFFSET + 1),A

@ -1 +1 @@
Subproject commit 171e4791a80462627c5876e095a042dc3e3b9eac Subproject commit b3224fc3afac71c6b1d461ff54049e58657bbe5a