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