+ 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
;RST ToDSS
;---------------------------------------
1: LD BC,Dss.Exit
RST ToDSS
JR 1B
;
COMAND_LINE: LD HL,(LINE_X)
LD A,(HL)
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
PROGRES_IND: DB '°',0 ; 176
MEM_BLK: BYTE 0
;MEM_BLK: BYTE 0
LINE_X: WORD 0
X_FILE: WORD 0
CNF_NAME: WORD 0
@ -715,7 +718,7 @@ Get_RAM_Disk_E: LD A,D
ADC HL,HL
LD A,D
AND 3Fh
AND #3F
OR E
JR Z,.skip_inc
INC HL
@ -730,18 +733,23 @@ Get_RAM_Disk_E: LD A,D
;***************************************
;!FIXIT ¡¥§®¯ á­® § ­¨¬ âì à ¬¤¨áª¨, ç⮡ ¯®«ì§®¢ â¥«ì ­¥ áâà ¤ «
; ®á¢®¡®¤¨âì ram-disk e:
; [ ] 04/11/2023 Žâ¤¥«ì­ë¥ à ¬¤¨áª¨ ¤«ï ०¨¬  ᯥªâà㬠 ¨ DSS
.free_disk: DI
XOR A ; RAM-Drive E:
LD C,BIOS.FreeMemRMD
RST ToBIOS ; ®á¢®¡®¤¨âì e:
POP AF
LD B,A ; § ¯à®á¨âì ¯ ¬ïâì ã bios- 
XOR A ; RAM-Drive E:
LD C,BIOS.GetMemRMD ; ¨ ¯®¤á®¥¤¨­¨âì ª e:
;!TEST
;XOR A ; RAM-Drive E:
;LD C,BIOS.FreeMemRMD
;RST ToBIOS ; ®á¢®¡®¤¨âì e:
;
POP BC
;!TEST
;LD B,A ; § ¯à®á¨âì ¯ ¬ïâì ã bios- 
;XOR A ; RAM-Drive E:
;LD C,BIOS.GetMemRMD ; ¨ ¯®¤á®¥¤¨­¨âì ª e:
LD C,BIOS.GetMem
;
RST ToBIOS
JR C,ERROR_NO_MEM
LD (MEM_BLK),A
LD (Load_IMAGE_File.MEM_BLK),A
RET
;---------------------------------------
@ -757,7 +765,7 @@ Load_IMAGE_File:
LD C,Dss.PChars
RST ToDSS
LD A,(MEM_BLK)
.MEM_BLK+1: LD A,0
.load_loop: PUSH AF
OUT (SLOT3),A
@ -863,7 +871,24 @@ EXIT_TO_DSS: DI
LD A,Dss.SetVMod.txt80x32 ; OPEN_TXT
LD BC,0*256+Dss.SetVMod
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 DE,0
LD HL,#2050
@ -873,9 +898,20 @@ EXIT_TO_DSS: DI
LD HL,MSG_ZX_EXIT
JP EXIT_ALL
;!FIXIT ¯¥à¥¤¥« âì ­  äã­ªæ¨î ¡¨®á 
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
OUT (SLOT3),A
@ -910,7 +946,7 @@ RESET_TO_ZX: DI
IN A,(ZXKeys)
AND #1F
CP #1E
JR Z,EXIT_TO_DSS
JP Z,EXIT_TO_DSS
; ä¨ªá ­¥¯®«­®© ¤¥è¨äà æ¨¨ ¯®àâ  #FFFD (¯¨èãâ ¢ #C0FD)
LD A,#FF
@ -919,12 +955,17 @@ RESET_TO_ZX: DI
LD BC,ACEX.AY_FFFD_WRITE*256 + BIOS.DCP_CONFIG
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 B,A
LD A,(Ret_fn_+2)
XOR B
LD B,A
LD A,ACEX.RET_PORT
;!FIXIT ¯¥à¥¤¥« âì ¯®¤ äã­ªæ¨î ¡¨®á 
CALL SET_ROM ; ¢ª«îç¨âì ¢®§¢à â
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_fn_: DW Ret_fn, #4100 ; ¢ª«îç¨âì ¢®§¢à â ¢ FN áâà ­¨æ  (#41) ¤®«¦­  ᮢ¯ ¤ âì á ret_zx_
LD_Pal_: DW LD_Pal, #FF00
RMD_Keep_: DW RMD_Keep, #FF00 ;!TEST; [ ] 05/11/2023 ®ç¨é âì à ¬¤¨áª¨ ¯à¨ ¢ë室¥
DW 0,0 ; end marker
Turbo_: DB "turbo", 255,0
@ -1191,6 +1233,7 @@ Int_or: DB "origin", 255,0
Ret_zx: DB "ret-zx", 255,0
Ret_fn: DB "ret-fn", 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

View File

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