mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 01:11:48 +03:00
DSSBOOT: исправлена ошибка с загрузкой ядра
This commit is contained in:
parent
371e93f6ba
commit
4bde8c738c
@ -263,6 +263,7 @@ RUN_CORE: DI
|
|||||||
;
|
;
|
||||||
INC_SECTOR_NUM: PUSH DE
|
INC_SECTOR_NUM: PUSH DE
|
||||||
CALL CLUSTER_TO_SECTOR
|
CALL CLUSTER_TO_SECTOR
|
||||||
|
CALL GET_ABSOLUTE_SECTOR
|
||||||
LD DE,#20 ;!HARDCODE ª®«¨ç¥á⢮ ¯à®ç¨â ëå ᥪâ®à®¢
|
LD DE,#20 ;!HARDCODE ª®«¨ç¥á⢮ ¯à®ç¨â ëå ᥪâ®à®¢
|
||||||
ADD IX,DE
|
ADD IX,DE
|
||||||
JR NC,.no_inc
|
JR NC,.no_inc
|
||||||
|
|||||||
@ -192,6 +192,7 @@ OPENDSK: ;!TEST DRV.Open
|
|||||||
RST ToDSS.DRV
|
RST ToDSS.DRV
|
||||||
POP BC
|
POP BC
|
||||||
JR Z,.exit
|
JR Z,.exit
|
||||||
|
JR .skip_open ;!FIXIT ª®£¤ DRV.MediaCheck ¨ DRV.Open ¡ã¤ã⠮⫨ç âìáï
|
||||||
;
|
;
|
||||||
.open: LD A,C
|
.open: LD A,C
|
||||||
;
|
;
|
||||||
@ -201,7 +202,7 @@ OPENDSK: ;!TEST DRV.Open
|
|||||||
POP BC
|
POP BC
|
||||||
JP C,.error
|
JP C,.error
|
||||||
;[x] 29/02/2024 fix "open drive error"
|
;[x] 29/02/2024 fix "open drive error"
|
||||||
LD A,(CORE_BUFFERS.FatBuffer.DRIVE)
|
.skip_open: LD A,(CORE_BUFFERS.FatBuffer.DRIVE)
|
||||||
LD D,A
|
LD D,A
|
||||||
PUSH DE
|
PUSH DE
|
||||||
;
|
;
|
||||||
@ -217,12 +218,13 @@ OPENDSK: ;!TEST DRV.Open
|
|||||||
.exit: LD A,(LDRIVE)
|
.exit: LD A,(LDRIVE)
|
||||||
AND A
|
AND A
|
||||||
RET
|
RET
|
||||||
;
|
; !FIXIT ª®áâë«ì ¤«ï Flex Navigator ; [ ] media change
|
||||||
.error: CP DSS_Error.sys.INVALID_DRIVE
|
.error: CP DSS_Error.sys.INVALID_DRIVE
|
||||||
SCF
|
SCF
|
||||||
RET Z
|
RET Z
|
||||||
LD A,DSS_Error.sys.NOT_READY
|
LD A,DSS_Error.sys.NOT_READY
|
||||||
RET
|
RET
|
||||||
|
;
|
||||||
;[x] 29/02/2024 fix "open drive error"; 20/06/2024 fixed
|
;[x] 29/02/2024 fix "open drive error"; 20/06/2024 fixed
|
||||||
.error_bpb: PUSH AF ; á®åà 塞 ®¬¥à ®è¨¡ª¨
|
.error_bpb: PUSH AF ; á®åà 塞 ®¬¥à ®è¨¡ª¨
|
||||||
LD A,(CORE_BUFFERS.FatBuffer.DRIVE)
|
LD A,(CORE_BUFFERS.FatBuffer.DRIVE)
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
8
|
9
|
||||||
@ -294,16 +294,49 @@ Init: PUSH IY
|
|||||||
;+10 WORD Sector Size
|
;+10 WORD Sector Size
|
||||||
;+12 BYTE Removable Media Byte flags
|
;+12 BYTE Removable Media Byte flags
|
||||||
;+13_15 FREE
|
;+13_15 FREE
|
||||||
|
; SelectDrive: PUSH DE
|
||||||
|
; PUSH HL
|
||||||
|
; ;
|
||||||
|
; LD L,A
|
||||||
|
; ;
|
||||||
|
; LOGDRV_ENTRY_FIND LOGDRV
|
||||||
|
; ;
|
||||||
|
; ; [ ] custorm sector size
|
||||||
|
; CALL CHECK_IDE_SECTOR_SIZE
|
||||||
|
; RLA
|
||||||
|
; ;
|
||||||
|
; ;
|
||||||
|
; LD E,(IY+LOGDRV.SECTOR_OFFSET)
|
||||||
|
; LD D,(IY+LOGDRV.SECTOR_OFFSET+1)
|
||||||
|
; ADD IX,DE
|
||||||
|
; LD E,(IY+LOGDRV.SECTOR_OFFSET+2)
|
||||||
|
; LD D,(IY+LOGDRV.SECTOR_OFFSET+3)
|
||||||
|
; POP HL
|
||||||
|
; ADC HL,DE
|
||||||
|
; ; [ ] custom sector size
|
||||||
|
; ;JR C,.exit
|
||||||
|
; RRA
|
||||||
|
; ;
|
||||||
|
; .exit: LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER)
|
||||||
|
; POP DE
|
||||||
|
; RET NC
|
||||||
|
; LD A,DSS_Error.drv.UNKNOWN_FORMAT
|
||||||
|
; RET
|
||||||
|
; ¯¥à¥¤¥« âì âã⠯஢¥àªã à §¬¥à ᥪâ®à ?
|
||||||
SelectDrive: PUSH DE
|
SelectDrive: PUSH DE
|
||||||
PUSH HL
|
PUSH HL
|
||||||
;
|
;
|
||||||
LD L,A
|
LD L,A
|
||||||
|
ADD 0 - DSS_MAX_DRIVES_AMOUNT - 1
|
||||||
|
LD A,DSS_Error.sys.INVALID_DRIVE
|
||||||
|
JR C,.error_pop
|
||||||
;
|
;
|
||||||
LOGDRV_ENTRY_FIND LOGDRV
|
LOGDRV_ENTRY_FIND LOGDRV
|
||||||
;
|
;
|
||||||
; [ ] custom sector size
|
; [ ] custom sector size
|
||||||
CALL CHECK_IDE_SECTOR_SIZE
|
CALL CHECK_IDE_SECTOR_SIZE
|
||||||
RLA
|
LD A,DSS_Error.drv.UNKNOWN_FORMAT
|
||||||
|
JR C,.error_pop
|
||||||
;
|
;
|
||||||
;
|
;
|
||||||
LD E,(IY+LOGDRV.SECTOR_OFFSET)
|
LD E,(IY+LOGDRV.SECTOR_OFFSET)
|
||||||
@ -313,15 +346,17 @@ SelectDrive: PUSH DE
|
|||||||
LD D,(IY+LOGDRV.SECTOR_OFFSET+3)
|
LD D,(IY+LOGDRV.SECTOR_OFFSET+3)
|
||||||
POP HL
|
POP HL
|
||||||
ADC HL,DE
|
ADC HL,DE
|
||||||
; [ ] custom sector size
|
|
||||||
;JR C,.exit
|
|
||||||
RRA
|
|
||||||
;
|
|
||||||
.exit: LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER)
|
|
||||||
POP DE
|
POP DE
|
||||||
RET NC
|
LD A,DSS_Error.drv.SECTOR_NOT_FOUND
|
||||||
LD A,DSS_Error.drv.UNKNOWN_FORMAT
|
RET C
|
||||||
RET
|
;
|
||||||
|
LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER)
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
.error_pop: POP HL
|
||||||
|
POP DE
|
||||||
|
RET
|
||||||
|
|
||||||
|
|
||||||
; 00 - GET DEVICE PARAMETERS
|
; 00 - GET DEVICE PARAMETERS
|
||||||
; 01 - READ TRACK
|
; 01 - READ TRACK
|
||||||
@ -509,17 +544,55 @@ Close: XOR A
|
|||||||
|
|
||||||
|
|
||||||
;!TODO ¯®ª Open ¨ç¥£® ¥ ¤¥« ¥â ªà®¬¥ ¯à®¢¥àª¨ MediaCheck
|
;!TODO ¯®ª Open ¨ç¥£® ¥ ¤¥« ¥â ªà®¬¥ ¯à®¢¥àª¨ MediaCheck
|
||||||
Open: ;CALL MediaCheck
|
Open: CALL MediaCheck
|
||||||
;RET
|
;!TODO
|
||||||
; JP MediaCheck
|
;RET ‘
|
||||||
|
;CALL READ_PARTITION_PARAMETERS
|
||||||
|
RET
|
||||||
;
|
;
|
||||||
;[ ] media changed - bios 5x DETECT
|
;[ ] media changed - bios 5x DETECT
|
||||||
; ¢ë室 A=#FF - changed, A=0 - not changed, ZF=1 - not changed
|
; ¢ë室 A=#FF - changed, A=0 - not changed, ZF=1 - not changed
|
||||||
|
; MediaCheck: PUSH IY
|
||||||
|
; CALL SelectDrive
|
||||||
|
; JR C,.exit
|
||||||
|
; ;
|
||||||
|
; ; [ ] media changed
|
||||||
|
; LD A,(IY + LOGDRV.PHISICAL_DRV_NUMBER)
|
||||||
|
; LD C,BIOS.DRV_DETECT ;[ ] media change ¯¥à¥¤¥« âì «®£¨ªã âãâ ¨ ¢ ¡¨®á? ; !FIXIT
|
||||||
|
; PUSH IY
|
||||||
|
; RST ToBIOS
|
||||||
|
; POP IY
|
||||||
|
; JR NC,.next_check
|
||||||
|
; ;
|
||||||
|
; CP BIOS.Error.ATAPI.UnitAttention
|
||||||
|
; JR Z,.Reinit
|
||||||
|
; JR .exit
|
||||||
|
; ;
|
||||||
|
; .next_check: BIT 1,(IY + LOGDRV.MediaParameters)
|
||||||
|
; JR NZ,.Reinit
|
||||||
|
; ;
|
||||||
|
; XOR A
|
||||||
|
; .exit: POP IY
|
||||||
|
; RET
|
||||||
|
; ;
|
||||||
|
; .Reinit: LD A,(IY + LOGDRV.PHISICAL_DRV_NUMBER)
|
||||||
|
; LD (CURRENT_DRIVE.Number),A
|
||||||
|
; LD (LOGDRV_OFFSET),IY
|
||||||
|
; ;RES 1,(IY + LOGDRV.MediaParameters)
|
||||||
|
; CALL DEFINE_PARTITIONS
|
||||||
|
; LD A,#FF ;!HARDCODE drive changed
|
||||||
|
; OR A
|
||||||
|
; POP IY
|
||||||
|
; RET
|
||||||
MediaCheck: PUSH IY
|
MediaCheck: PUSH IY
|
||||||
CALL SelectDrive
|
CALL SelectDrive
|
||||||
JR C,.exit
|
JR NC,.next_step
|
||||||
;
|
;
|
||||||
|
CP DSS_Error.drv.UNKNOWN_FORMAT
|
||||||
|
SCF
|
||||||
|
JR NZ,.exit
|
||||||
; [ ] media changed
|
; [ ] media changed
|
||||||
|
.next_step: PUSH AF ; ‘®åà 塞 CF ¨ ª®¤ ®è¨¡ª¨ UNKNOWN_FORMAT, ¥á«¨ CF=1
|
||||||
LD A,(IY + LOGDRV.PHISICAL_DRV_NUMBER)
|
LD A,(IY + LOGDRV.PHISICAL_DRV_NUMBER)
|
||||||
LD C,BIOS.DRV_DETECT ;[ ] media change ¯¥à¥¤¥« âì «®£¨ªã âãâ ¨ ¢ ¡¨®á? ; !FIXIT
|
LD C,BIOS.DRV_DETECT ;[ ] media change ¯¥à¥¤¥« âì «®£¨ªã âãâ ¨ ¢ ¡¨®á? ; !FIXIT
|
||||||
PUSH IY
|
PUSH IY
|
||||||
@ -529,13 +602,18 @@ MediaCheck: PUSH IY
|
|||||||
;
|
;
|
||||||
CP BIOS.Error.ATAPI.UnitAttention
|
CP BIOS.Error.ATAPI.UnitAttention
|
||||||
JR Z,.Reinit
|
JR Z,.Reinit
|
||||||
JR .exit
|
SCF
|
||||||
|
POP BC ; <20> « á á⥪
|
||||||
|
.exit: POP IY
|
||||||
|
RET
|
||||||
;
|
;
|
||||||
.next_check: BIT 1,(IY + LOGDRV.MediaParameters)
|
.next_check: BIT 1,(IY + LOGDRV.MediaParameters)
|
||||||
JR NZ,.Reinit
|
JR NZ,.Reinit
|
||||||
;
|
;
|
||||||
|
POP AF ; ‚®ááâ ¢«¨¢ ¥¬ CF ¨ ª®¤ ®è¨¡ª¨ UNKNOWN_FORMAT, ¥á«¨ CF=1
|
||||||
|
POP IY
|
||||||
|
RET C
|
||||||
XOR A
|
XOR A
|
||||||
.exit: POP IY
|
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
.Reinit: LD A,(IY + LOGDRV.PHISICAL_DRV_NUMBER)
|
.Reinit: LD A,(IY + LOGDRV.PHISICAL_DRV_NUMBER)
|
||||||
@ -543,13 +621,14 @@ MediaCheck: PUSH IY
|
|||||||
LD (LOGDRV_OFFSET),IY
|
LD (LOGDRV_OFFSET),IY
|
||||||
;RES 1,(IY + LOGDRV.MediaParameters)
|
;RES 1,(IY + LOGDRV.MediaParameters)
|
||||||
CALL DEFINE_PARTITIONS
|
CALL DEFINE_PARTITIONS
|
||||||
|
POP AF
|
||||||
|
POP IY
|
||||||
|
RET C ; ‚®ááâ ¢«¨¢ ¥¬ CF ¨ ª®¤ ®è¨¡ª¨ UNKNOWN_FORMAT, ¥á«¨ CF=1
|
||||||
LD A,#FF ;!HARDCODE drive changed
|
LD A,#FF ;!HARDCODE drive changed
|
||||||
OR A
|
OR A
|
||||||
POP IY
|
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; [ ] custorm sector size
|
; [ ] custorm sector size
|
||||||
CHECK_IDE_SECTOR_SIZE:
|
CHECK_IDE_SECTOR_SIZE:
|
||||||
LD E,(IY+LOGDRV.SECTOR_SIZE)
|
LD E,(IY+LOGDRV.SECTOR_SIZE)
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
451
|
452
|
||||||
Loading…
Reference in New Issue
Block a user