mirror of
https://github.com/Tolik-Trek/ZX-SP-ROMs.git
synced 2026-06-16 01:41:14 +03:00
support for current dir from spectrum.exe
This commit is contained in:
parent
0cb769a71f
commit
b757fbf8ec
@ -1 +1 @@
|
|||||||
Subproject commit 77a51684d4d63ad2fdccf416793951df00276b17
|
Subproject commit 7e812bc0267db168c5a5b17780e567a7a01cd927
|
||||||
@ -78,27 +78,32 @@ HDD_SET:;!TEST
|
|||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
;
|
;
|
||||||
LD A,(SYS_PAGE.CURRENT_DIR_HDD)
|
LD E,DRIVE_CODES.TRDOS.HDD
|
||||||
|
LD A,(SYS_PAGE.CURRENT_DIR_DRIVE_COPY)
|
||||||
CP #FF
|
CP #FF
|
||||||
JR Z,.skip
|
JR Z,.skip
|
||||||
|
;
|
||||||
|
CP E
|
||||||
|
JR C,.skip
|
||||||
|
LD (SYS_PAGE.CURRENT_DIR_DRIVE),A
|
||||||
|
;
|
||||||
|
AND #0F
|
||||||
LD (SYS_PAGE.CURRENT_HDD),A
|
LD (SYS_PAGE.CURRENT_HDD),A
|
||||||
;
|
;
|
||||||
.skip: ;LD A,(SYS_PAGE.CURRENT_HDD)
|
.skip: LD A,C
|
||||||
OR #40
|
|
||||||
PUSH AF
|
|
||||||
LD A,C
|
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
;
|
;
|
||||||
|
PUSH DE
|
||||||
LD C,BIOS.HDD_INIT
|
LD C,BIOS.HDD_INIT
|
||||||
CALL EXP_FNS
|
CALL EXP_FNS
|
||||||
POP AF
|
POP DE
|
||||||
JP C,HDD_PROG_E
|
JP C,HDD_PROG_E
|
||||||
;
|
;
|
||||||
; LD BC,(ZX_VARS.OPER_DISK - 1)
|
; LD BC,(ZX_VARS.OPER_DISK - 1)
|
||||||
; LD A,(ZX_VARS.OPER_DISK)
|
; LD A,(ZX_VARS.OPER_DISK)
|
||||||
; LD B,A
|
; LD B,A
|
||||||
; XOR A
|
; XOR A
|
||||||
LD E,A
|
;LD E,A
|
||||||
LD C,BIOS.SET_DISK_REDIR
|
LD C,BIOS.SET_DISK_REDIR
|
||||||
JP EXP_FNS
|
JP EXP_FNS
|
||||||
|
|
||||||
@ -138,9 +143,22 @@ CHOOSE_HDD:
|
|||||||
POP BC
|
POP BC
|
||||||
JR C,.error
|
JR C,.error
|
||||||
;
|
;
|
||||||
SCF
|
;
|
||||||
;CALL CORRECT_CUR_DIR
|
;CALL RESTORE_CURRENT_DIR
|
||||||
CALL RESTORE_CURRENT_DIR
|
IN A,(SLOT3)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (SLOT3),A
|
||||||
|
LD A,(SYS_PAGE.CURRENT_DIR_DRIVE)
|
||||||
|
CP #FF
|
||||||
|
JR Z,.skip
|
||||||
|
LD (SYS_PAGE.CURRENT_DIR_DRIVE_COPY),A
|
||||||
|
XOR A
|
||||||
|
DEC A
|
||||||
|
LD (SYS_PAGE.CURRENT_DIR_DRIVE),A
|
||||||
|
.skip: EX AF,AF'
|
||||||
|
OUT (SLOT3),A
|
||||||
|
;
|
||||||
;
|
;
|
||||||
XOR A
|
XOR A
|
||||||
LD C,A ; ®¡ã«¨âì C
|
LD C,A ; ®¡ã«¨âì C
|
||||||
@ -189,19 +207,15 @@ CHOOSE_HDD:
|
|||||||
; !!!
|
; !!!
|
||||||
|
|
||||||
|
|
||||||
; CF=1: skip resest CURRENT_HDD
|
|
||||||
; CF=0: resest CURRENT_HDD
|
|
||||||
|
|
||||||
|
|
||||||
; [x] new tr-hdd
|
; [x] new tr-hdd
|
||||||
RESTORE_CURRENT_DIR:
|
RESTORE_CURRENT_DIR:
|
||||||
PUSH AF
|
PUSH AF
|
||||||
;
|
;
|
||||||
LD C,BIOS.GET_DISK_REDIR
|
LD C,BIOS.GET_DISK_REDIR
|
||||||
CALL EXP_FNS
|
CALL EXP_FNS
|
||||||
CP #40
|
;CP #40
|
||||||
JR C,.exit_Res_Dir
|
;JR C,.exit_Res_Dir
|
||||||
AND #0F
|
;AND #0F
|
||||||
LD H,A
|
LD H,A
|
||||||
;
|
;
|
||||||
IN A,(SLOT3)
|
IN A,(SLOT3)
|
||||||
@ -209,7 +223,7 @@ RESTORE_CURRENT_DIR:
|
|||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
;
|
;
|
||||||
LD A,(SYS_PAGE.CURRENT_DIR_HDD)
|
LD A,(SYS_PAGE.CURRENT_DIR_DRIVE)
|
||||||
CP H
|
CP H
|
||||||
JR NZ,.exit_Res_Dir
|
JR NZ,.exit_Res_Dir
|
||||||
|
|
||||||
@ -229,32 +243,6 @@ RESTORE_CURRENT_DIR:
|
|||||||
POP AF
|
POP AF
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
; [x] new tr-hdd
|
|
||||||
; TO INIT by SPECTRUM.EXE:
|
|
||||||
; .CURRENT_DIR_SEC_L EQU #C196 ; word
|
|
||||||
; .CURRENT_DIR_SEC_H EQU #C198 ; word
|
|
||||||
; .CURRENT_DIR_HDD EQU #C19A
|
|
||||||
; .CURRENT_HDD EQU #C12D
|
|
||||||
|
|
||||||
; CORRECT_CUR_DIR:
|
|
||||||
; DI
|
|
||||||
; IN A,(SLOT3)
|
|
||||||
; LD C,A
|
|
||||||
; LD A,SYS_PAGE
|
|
||||||
; OUT (SLOT3),A
|
|
||||||
; LD A,#FF
|
|
||||||
; JR C,.skip
|
|
||||||
; LD (SYS_PAGE.CURRENT_HDD),A
|
|
||||||
; .skip: INC A
|
|
||||||
; LD H,A
|
|
||||||
; LD L,A
|
|
||||||
; LD (SYS_PAGE.CURRENT_DIR_SEC_L),HL
|
|
||||||
; LD (SYS_PAGE.CURRENT_DIR_SEC_H),HL
|
|
||||||
; LD A,C
|
|
||||||
; OUT (SLOT3),A
|
|
||||||
; RET
|
|
||||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||||
DISPLAY "TR_HDD_4.ASZ size: ",/A,$-File_Start
|
DISPLAY "TR_HDD_4.ASZ size: ",/A,$-File_Start
|
||||||
DISPLAY "===================================================="
|
DISPLAY "===================================================="
|
||||||
@ -530,9 +530,10 @@ CALC_CLAST: ; HL -
|
|||||||
|
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
LD BC,0
|
LD BC,0
|
||||||
|
LD H,B
|
||||||
LD HL,0
|
LD L,B
|
||||||
LD IX,0
|
LD HX,B
|
||||||
|
LD LX,B
|
||||||
|
|
||||||
CALC_CL_LP:
|
CALC_CL_LP:
|
||||||
ADD IX,DE
|
ADD IX,DE
|
||||||
|
|||||||
@ -319,7 +319,6 @@ CLAST_TO_SEC_L2:
|
|||||||
LD B,L
|
LD B,L
|
||||||
LD A,H
|
LD A,H
|
||||||
POP HL
|
POP HL
|
||||||
|
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -247,7 +247,7 @@ MSD_3F15:
|
|||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
AND A
|
AND A
|
||||||
JR Z,NO_OFF_SCR
|
JR Z,NO_OFF_SCR
|
||||||
LD A,0C0H
|
LD A,#C0
|
||||||
OUT (RGADR),A
|
OUT (RGADR),A
|
||||||
NO_OFF_SCR:
|
NO_OFF_SCR:
|
||||||
LD IX,MSD_RET_ADR
|
LD IX,MSD_RET_ADR
|
||||||
@ -443,7 +443,6 @@ READ_BPB:
|
|||||||
JP .ERROR_MSDOS
|
JP .ERROR_MSDOS
|
||||||
;
|
;
|
||||||
.HDD: CALL .MAIN
|
.HDD: CALL .MAIN
|
||||||
CALL NC,RESTORE_CURRENT_DIR ; [x] new tr-hdd
|
|
||||||
RET NC
|
RET NC
|
||||||
; old hdd
|
; old hdd
|
||||||
LD IX,0
|
LD IX,0
|
||||||
@ -455,7 +454,6 @@ READ_BPB:
|
|||||||
CALL MSD_R_W_UT
|
CALL MSD_R_W_UT
|
||||||
;
|
;
|
||||||
CALL .PARAMS
|
CALL .PARAMS
|
||||||
CALL NC,RESTORE_CURRENT_DIR ; [x] new tr-hdd
|
|
||||||
RET NC
|
RET NC
|
||||||
JP .ERROR_MSDOS
|
JP .ERROR_MSDOS
|
||||||
;
|
;
|
||||||
@ -528,7 +526,6 @@ READ_BPB:
|
|||||||
LD (SYS_PAGE.MSD_SECS),A
|
LD (SYS_PAGE.MSD_SECS),A
|
||||||
|
|
||||||
; BIT 7,H
|
; BIT 7,H
|
||||||
|
|
||||||
; LD IX,0
|
; LD IX,0
|
||||||
; LD HL,0 ; ¢ëç¨á«¨âì ç «ìë© á¥ªâ®à FAT
|
; LD HL,0 ; ¢ëç¨á«¨âì ç «ìë© á¥ªâ®à FAT
|
||||||
; JR Z,.NO_LD_SPECIAL
|
; JR Z,.NO_LD_SPECIAL
|
||||||
@ -559,8 +556,6 @@ READ_BPB:
|
|||||||
LD (SYS_PAGE.MSD_CAT_SEC),IX ; ç «ìë© á¥ªâ®à DIR
|
LD (SYS_PAGE.MSD_CAT_SEC),IX ; ç «ìë© á¥ªâ®à DIR
|
||||||
LD (SYS_PAGE.MSD_CAT_SEC2),HL ; ç «ìë© á¥ªâ®à DIR
|
LD (SYS_PAGE.MSD_CAT_SEC2),HL ; ç «ìë© á¥ªâ®à DIR
|
||||||
|
|
||||||
; A=0
|
|
||||||
|
|
||||||
LD BC,(SYS_PAGE.MS_BPB+SEC_SIZE) ; <20> §¬¥à ᥪâ®à
|
LD BC,(SYS_PAGE.MS_BPB+SEC_SIZE) ; <20> §¬¥à ᥪâ®à
|
||||||
LD A,B
|
LD A,B
|
||||||
RL C
|
RL C
|
||||||
@ -600,24 +595,23 @@ READ_BPB:
|
|||||||
; D = 0
|
; D = 0
|
||||||
LD H,D
|
LD H,D
|
||||||
LD L,D
|
LD L,D
|
||||||
|
LD E,D
|
||||||
LD A,(SYS_PAGE.MS_BPB+CLAST_SIZE)
|
LD A,(SYS_PAGE.MS_BPB+CLAST_SIZE)
|
||||||
LD D,A
|
LD D,A
|
||||||
XOR A
|
XOR A
|
||||||
.NEXT_ADD3:
|
.NEXT_ADD3:
|
||||||
ADD HL,BC ; ‚ëç¨á«¥¨¥ ¤«¨ë ª« áâ¥à
|
ADD HL,BC ; ‚ëç¨á«¥¨¥ ¤«¨ë ª« áâ¥à
|
||||||
ADC A,0
|
ADC A,E
|
||||||
DEC D
|
DEC D
|
||||||
JR NZ,.NEXT_ADD3
|
JR NZ,.NEXT_ADD3
|
||||||
|
|
||||||
LD (SYS_PAGE.CLASTER_LEN),HL
|
LD (SYS_PAGE.CLASTER_LEN),HL
|
||||||
; D = 0
|
LD B,E
|
||||||
LD B,D
|
|
||||||
LD C,A
|
LD C,A
|
||||||
LD (SYS_PAGE.CLASTER_LEN2),BC
|
LD (SYS_PAGE.CLASTER_LEN2),BC
|
||||||
|
;
|
||||||
; D = 0
|
; DE=0
|
||||||
LD H,D
|
EX DE,HL ;LD HL,0
|
||||||
LD L,D
|
|
||||||
LD BC,(SYS_PAGE.MS_BPB+S_P_T)
|
LD BC,(SYS_PAGE.MS_BPB+S_P_T)
|
||||||
LD A,(SYS_PAGE.MS_BPB+H_P_S)
|
LD A,(SYS_PAGE.MS_BPB+H_P_S)
|
||||||
.BPB_L1:; ‚›—ˆ‘‹ˆ’œ ŠŽ‹ˆ—…‘’‚Ž ‘…Š’Ž<E28099>Ž‚ <20>€ –ˆ‹ˆ<E280B9>„<EFBFBD>
|
.BPB_L1:; ‚›—ˆ‘‹ˆ’œ ŠŽ‹ˆ—…‘’‚Ž ‘…Š’Ž<E28099>Ž‚ <20>€ –ˆ‹ˆ<E280B9>„<EFBFBD>
|
||||||
@ -628,8 +622,9 @@ READ_BPB:
|
|||||||
;
|
;
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
EI
|
CALL RESTORE_CURRENT_DIR ; [x] new tr-hdd
|
||||||
AND A
|
AND A
|
||||||
|
EI
|
||||||
RET
|
RET
|
||||||
.ERROR_BPB:
|
.ERROR_BPB:
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user