+ new key "RMD-Keep", Support for new BIOS function "SWAP_RAM_DRIVES"

This commit is contained in:
Anatoliy Belyanskiy 2023-11-05 03:29:31 +10:00
parent e70ce1ed3d
commit 607a458f0f
3 changed files with 62 additions and 19 deletions

@ -1 +1 @@
Subproject commit b534dc7d5df20ff238a64d900fb1559105eb8ef6 Subproject commit 809ea1f0b204f2d56555497c1c808806833d6315

View File

@ -209,9 +209,12 @@ EXIT_ALL:
;LD C,Dss.PChars ;LD C,Dss.PChars
;RST ToDSS ;RST ToDSS
;--------------------------------------- ;---------------------------------------
1: LD BC,Dss.Exit 1: LD BC,Dss.Exit
RST ToDSS RST ToDSS
JR 1B
;
COMAND_LINE: LD HL,(LINE_X) COMAND_LINE: LD HL,(LINE_X)
LD A,(HL) LD A,(HL)
AND A AND A
@ -349,7 +352,7 @@ MSG_ZX_EXIT: DB 13,10,"EXIT from Spectrum configuration",0
MSG_ZX_EXIT2: DB 13,10,"EXIT from ZX mode",0 MSG_ZX_EXIT2: DB 13,10,"EXIT from ZX mode",0
PROGRES_IND: DB '°',0 ; 176 PROGRES_IND: DB '°',0 ; 176
MEM_BLK: BYTE 0 ;MEM_BLK: BYTE 0
LINE_X: WORD 0 LINE_X: WORD 0
X_FILE: WORD 0 X_FILE: WORD 0
CNF_NAME: WORD 0 CNF_NAME: WORD 0
@ -715,7 +718,7 @@ Get_RAM_Disk_E: LD A,D
ADC HL,HL ADC HL,HL
LD A,D LD A,D
AND 3Fh AND #3F
OR E OR E
JR Z,.skip_inc JR Z,.skip_inc
INC HL INC HL
@ -730,18 +733,23 @@ Get_RAM_Disk_E: LD A,D
;*************************************** ;***************************************
;!FIXIT ¡¥§®¯ á­® § ­¨¬ âì à ¬¤¨áª¨, ç⮡ ¯®«ì§®¢ â¥«ì ­¥ áâà ¤ « ;!FIXIT ¡¥§®¯ á­® § ­¨¬ âì à ¬¤¨áª¨, ç⮡ ¯®«ì§®¢ â¥«ì ­¥ áâà ¤ «
; ®á¢®¡®¤¨âì ram-disk e: ; ®á¢®¡®¤¨âì ram-disk e:
; [ ] 04/11/2023 Žâ¤¥«ì­ë¥ à ¬¤¨áª¨ ¤«ï ०¨¬  ᯥªâà㬠 ¨ DSS
.free_disk: DI .free_disk: DI
XOR A ; RAM-Drive E: ;!TEST
LD C,BIOS.FreeMemRMD ;XOR A ; RAM-Drive E:
RST ToBIOS ; ®á¢®¡®¤¨âì e: ;LD C,BIOS.FreeMemRMD
;RST ToBIOS ; ®á¢®¡®¤¨âì e:
POP AF ;
LD B,A ; § ¯à®á¨âì ¯ ¬ïâì ã bios-  POP BC
XOR A ; RAM-Drive E: ;!TEST
LD C,BIOS.GetMemRMD ; ¨ ¯®¤á®¥¤¨­¨âì ª e: ;LD B,A ; § ¯à®á¨âì ¯ ¬ïâì ã bios- 
;XOR A ; RAM-Drive E:
;LD C,BIOS.GetMemRMD ; ¨ ¯®¤á®¥¤¨­¨âì ª e:
LD C,BIOS.GetMem
;
RST ToBIOS RST ToBIOS
JR C,ERROR_NO_MEM JR C,ERROR_NO_MEM
LD (MEM_BLK),A LD (Load_IMAGE_File.MEM_BLK),A
RET RET
;--------------------------------------- ;---------------------------------------
@ -757,7 +765,7 @@ Load_IMAGE_File:
LD C,Dss.PChars LD C,Dss.PChars
RST ToDSS RST ToDSS
LD A,(MEM_BLK) .MEM_BLK+1: LD A,0
.load_loop: PUSH AF .load_loop: PUSH AF
OUT (SLOT3),A OUT (SLOT3),A
@ -863,7 +871,24 @@ EXIT_TO_DSS: DI
LD A,Dss.SetVMod.txt80x32 ; OPEN_TXT LD A,Dss.SetVMod.txt80x32 ; OPEN_TXT
LD BC,0*256+Dss.SetVMod LD BC,0*256+Dss.SetVMod
RST ToDSS RST ToDSS
;!TEST; [ ] 05/11/2023 ®ç¨é âì à ¬¤¨áª¨ ¯à¨ ¢ë室¥
LD A,(RMD_Keep_+2)
AND A
JR NZ,.next
; ®ç¨á⪠ à ¬¤¨áª®¢
LD BC,SYS_PAGE.RAMD_KEYS.NUM*256 + BIOS.FreeMemRMD
.loop: PUSH BC
LD A,B
DEC A
RST ToBIOS
POP BC
DJNZ .loop
;
.next:
;!TEST; [ ] 04/11/2023 Žâ¤¥«ì­ë¥ à ¬¤¨áª¨ ¤«ï ०¨¬  ᯥªâà㬠 ¨ DSS. BLK_TO_RAMD
LD BC,BIOS.SWAP_RAM_DRIVES.Sp2000
RST ToBIOS
;
LD A,#20 LD A,#20
LD DE,0 LD DE,0
LD HL,#2050 LD HL,#2050
@ -873,9 +898,20 @@ EXIT_TO_DSS: DI
LD HL,MSG_ZX_EXIT LD HL,MSG_ZX_EXIT
JP EXIT_ALL JP EXIT_ALL
;!FIXIT ¯¥à¥¤¥« âì ­  äã­ªæ¨î ¡¨®á 
SET_RELOAD_PROG: SET_RELOAD_PROG:
DI ;!TEST; [ ] 04/11/2023 Žâ¤¥«ì­ë¥ à ¬¤¨áª¨ ¤«ï ०¨¬  ᯥªâà㬠 ¨ DSS. BLK_TO_RAMD
LD BC,BIOS.SWAP_RAM_DRIVES.ZX
RST ToBIOS
;
LD A,(Load_IMAGE_File.MEM_BLK)
LD B,A
XOR A ; set disk e:
LD C,BIOS.BLK_TO_RAMD
RST ToBIOS
;
DI
LD A,Spec_Page LD A,Spec_Page
OUT (SLOT3),A OUT (SLOT3),A
@ -910,7 +946,7 @@ RESET_TO_ZX: DI
IN A,(ZXKeys) IN A,(ZXKeys)
AND #1F AND #1F
CP #1E CP #1E
JR Z,EXIT_TO_DSS JP Z,EXIT_TO_DSS
; ä¨ªá ­¥¯®«­®© ¤¥è¨äà æ¨¨ ¯®àâ  #FFFD (¯¨èãâ ¢ #C0FD) ; ä¨ªá ­¥¯®«­®© ¤¥è¨äà æ¨¨ ¯®àâ  #FFFD (¯¨èãâ ¢ #C0FD)
LD A,#FF LD A,#FF
@ -919,12 +955,17 @@ RESET_TO_ZX: DI
LD BC,ACEX.AY_FFFD_WRITE*256 + BIOS.DCP_CONFIG LD BC,ACEX.AY_FFFD_WRITE*256 + BIOS.DCP_CONFIG
RST ToBIOS RST ToBIOS
; ;
;!TEST; [ ] 04/11/2023 Žâ¤¥«ì­ë¥ à ¬¤¨áª¨ ¤«ï ०¨¬  ᯥªâà㬠 ¨ DSS. BLK_TO_RAMD
LD BC,BIOS.SWAP_RAM_DRIVES.ZX
RST ToBIOS
;
LD A,(Ret_zx_+2) LD A,(Ret_zx_+2)
LD B,A LD B,A
LD A,(Ret_fn_+2) LD A,(Ret_fn_+2)
XOR B XOR B
LD B,A LD B,A
LD A,ACEX.RET_PORT LD A,ACEX.RET_PORT
;!FIXIT ¯¥à¥¤¥« âì ¯®¤ äã­ªæ¨î ¡¨®á 
CALL SET_ROM ; ¢ª«îç¨âì ¢®§¢à â CALL SET_ROM ; ¢ª«îç¨âì ¢®§¢à â
LD A,CNF_PORT.CNF_3 LD A,CNF_PORT.CNF_3
@ -1176,6 +1217,7 @@ Int_or_: DW Int_or, #0300 ;
Ret_zx_: DW Ret_zx, #4100 ; ¢ª«îç¨âì ¢®§¢à â ¢ ZX áâà ­¨æ  (#41) ¤®«¦­  ᮢ¯ ¤ âì á ret_fn_ Ret_zx_: DW Ret_zx, #4100 ; ¢ª«îç¨âì ¢®§¢à â ¢ ZX áâà ­¨æ  (#41) ¤®«¦­  ᮢ¯ ¤ âì á ret_fn_
Ret_fn_: DW Ret_fn, #4100 ; ¢ª«îç¨âì ¢®§¢à â ¢ FN áâà ­¨æ  (#41) ¤®«¦­  ᮢ¯ ¤ âì á ret_zx_ Ret_fn_: DW Ret_fn, #4100 ; ¢ª«îç¨âì ¢®§¢à â ¢ FN áâà ­¨æ  (#41) ¤®«¦­  ᮢ¯ ¤ âì á ret_zx_
LD_Pal_: DW LD_Pal, #FF00 LD_Pal_: DW LD_Pal, #FF00
RMD_Keep_: DW RMD_Keep, #FF00 ;!TEST; [ ] 05/11/2023 ®ç¨é âì à ¬¤¨áª¨ ¯à¨ ¢ë室¥
DW 0,0 ; end marker DW 0,0 ; end marker
Turbo_: DB "turbo", 255,0 Turbo_: DB "turbo", 255,0
@ -1191,6 +1233,7 @@ Int_or: DB "origin", 255,0
Ret_zx: DB "ret-zx", 255,0 Ret_zx: DB "ret-zx", 255,0
Ret_fn: DB "ret-fn", 255,0 Ret_fn: DB "ret-fn", 255,0
LD_Pal: DB "load-pal", 255,0 LD_Pal: DB "load-pal", 255,0
RMD_Keep: DB "RMD-Keep", 255,0 ;!TEST; [ ] 05/11/2023 ®ç¨é âì à ¬¤¨áª¨ ¯à¨ ¢ë室¥
;ZX_PROG_LEN EQU $-RELOAD_PROG ;ZX_PROG_LEN EQU $-RELOAD_PROG

View File

@ -205,7 +205,7 @@ Load_SCL: LD HL,ONE_FILE
RET C ;!FIXIT ®¡à ¡®â稪 ®è¨¡ª¨!!!!! RET C ;!FIXIT ®¡à ¡®â稪 ®è¨¡ª¨!!!!!
Convert_SCLtoTRD: Convert_SCLtoTRD:
LD A,(MEM_BLK) LD A,(Load_IMAGE_File.MEM_BLK)
OUT (SLOT3),A ; ¢áâ ¢«ï¥¬ ¯¥à¢ãî áâà ­¨æã RAM-¤¨áª  OUT (SLOT3),A ; ¢áâ ¢«ï¥¬ ¯¥à¢ãî áâà ­¨æã RAM-¤¨áª 
LD HL,SCL_Buffer LD HL,SCL_Buffer
@ -306,7 +306,7 @@ Convert_SCLtoTRD:
RST ToDSS RST ToDSS
DI DI
LD A,(MEM_BLK) LD A,(Load_IMAGE_File.MEM_BLK)
JP Load_IMAGE_File.scl_read_next JP Load_IMAGE_File.scl_read_next
;-----------[] ;-----------[]