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