+-RST_CONF.INIT_ACEX ; New function "SWAP_RAM_DRIVES" for changing RAM-DRV set ZX<->Sp2000

This commit is contained in:
Anatoliy Belyanskiy 2023-11-05 03:35:19 +10:00
parent 730aae8a89
commit fe3456f584
6 changed files with 199 additions and 122 deletions

@ -1 +1 @@
Subproject commit 8c5550f810d173790e4665d610328b9247b00f02
Subproject commit 809ea1f0b204f2d56555497c1c808806833d6315

View File

@ -132,11 +132,11 @@ TAB_FNS:
DB low EMM.GetMemPageNext ; #95 ¯®«ãç¨âì á«¥¤ãîéãî áâà ­¨æã
DB low EMM.GetBanksPorts ; #96 ¯®«ãç¨âì  ¤à¥á  ¯®à⮢
DB low EMM.CheckColdInit ; #97 ¯à®¢¥àª  ­  宫®¤­ë© áâ àâ ¨ ¨­¨æ¨ «¨§ æ¨¨ ¥á«¨ ®­ ;????? ­ã¦­  «¨ ª ª API?
DB low RAMD_CALC_PAGE ; #98 Fn 98h ;?????
DB low RAMD_CALC_PAGE ; #98 ‚ëç¨á«¥­¨¥ áâà ­¨æë ¨  ¤à¥á  ¢ RAM-Disk ¯®  ¡á®«îâ­®¬ã ­®¬¥àã ᥪâ®à 
DB low SET_DISK_TYPE ; #99 ;?????
DB low DISK_REDIR ; #9A ;?????
DB low GET_RAMD_NUM ; #9B ¯®«ãç¨âì ­®¬¥à ram disk ¯® ¥£® block id
DB low FN_RESERVED ; #9C
DB low SWAP_RAM_DRIVES ; #9C ᬥ­¨âì ­ ¡®à à ¬¤¨áª®¢ ZX <-> Sp2000
DB low EMM.DivMemBlocks ; #9D à §¤¥«¥­¨ï ¡«®ª  ­  ¤¢ .
DB low EMM.MergeMemBlocks ; #9E ᫨ﭨ¥ ¤¢ãå ¡«®ª®¢
DB low EMM.FullInit ; #9F ¨­¨æ¨ «¨§ æ¨ï ¢á¥© ¯ ¬ïâ¨, á¨á⥬­ëå ¯¥à¥¬¥­­ëå
@ -327,8 +327,8 @@ TAB_FNS:
DB high RAMD_CALC_PAGE
DB high SET_DISK_TYPE
DB high DISK_REDIR
DB high FN_RESERVED
DB high FN_RESERVED
DB high GET_RAMD_NUM
DB high SWAP_RAM_DRIVES
DB high EMM.DivMemBlocks
DB high EMM.MergeMemBlocks
DB high EMM.FullInit

View File

@ -64,11 +64,8 @@
;=============================================================
MACRO TEST_40
;[x] ¢ª«î稫 31/10/23, ç¨áâ® ­  •í««®ããã㨨¨­
EX AF,AF'
JR C,.LLL
INC D ; ०¨¬ 40
.LLL:
EX AF,AF'
;
;
ENDM

View File

@ -43,8 +43,9 @@ EMM.InitMem:
OUT (SLOT1),A
LD HL,SYS_PAGE.RAMD_FAT - #4000 - #4000 ; €¤à¥á FAT އ“.
; ®¡­ã«ï¥¬ â ¡«¨æã
XOR A
.loopFree:
LD (HL),0
LD (HL),A
INC L
JR NZ,.loopFree
; १¥à¢¨à㥬 ᯥæ.áâà ­¨æë ¨ áâà ­¨æë ZX
@ -66,14 +67,21 @@ EMM.InitMem:
LD L,A
LD (HL),A
; ˆ­¨æ¨ «¨§ æ¨ï ª«î祩 RAM-Disks
XOR A
LD HL,SYS_PAGE.RAMD_KEYS - #4000 - #4000
LD B,SYS_PAGE.RAMD_KEYS.NUM
.loop2: LD (HL),0
.loop2: LD (HL),A
INC L
DJNZ .loop2
; [x] 4/11/23
LD HL,SYS_PAGE.Sp_RAMD_KEYS - #4000 - #4000
LD B,SYS_PAGE.Sp_RAMD_KEYS.NUM
.loop3: LD (HL),A
INC L
DJNZ .loop3
;
LD A,C
OUT (SLOT1),A
POP DE
POP HL
POP BC
@ -345,38 +353,6 @@ EMM.GetMemPageNext:
; ‚室: A - ¡«®ª, HL -  ¤à¥á ¡ãä¥à  - 256 ¡ ©â.
; ‚ë室: HL -  ¤à¥á ¡«®ª , B - ¤«¨­  ¡«®ª  ¢ áâà ­¨æ å އ“
;EMM_FN5M:
; EMM.GetMemBlkPages:
; PUSH DE
; PUSH HL
; EX DE,HL
; LD B,0
; LD L,A
; .loop: LD A,L
; LD (DE),A
; INC DE
; AND A
; JR Z,.error
; CP #FF
; JR Z,.end
; ;
; IN A,(SLOT1)
; LD C,A
; LD A,SYS_PAGE
; OUT (SLOT1),A
; LD H,high (SYS_PAGE.RAMD_FAT - #4000 - #4000)
; LD L,(HL)
; LD A,C
; OUT (SLOT1),A
; ;
; INC B
; JR NZ,.loop
; .error: SCF
; .end: POP HL
; POP DE
; RET
EMM.GetMemBlkPages:
PUSH DE
PUSH HL
@ -384,11 +360,6 @@ EMM.GetMemBlkPages:
LD B,0
LD L,A
IN A,(SLOT1)
LD C,A
LD A,SYS_PAGE
OUT (SLOT1),A
.loop: LD A,L
LD (DE),A
INC DE
@ -397,17 +368,55 @@ EMM.GetMemBlkPages:
CP #FF
JR Z,.end
;
IN A,(SLOT1)
LD C,A
LD A,SYS_PAGE
OUT (SLOT1),A
LD H,high (SYS_PAGE.RAMD_FAT - #4000 - #4000)
LD L,(HL)
LD A,C
OUT (SLOT1),A
;
INC B
JR NZ,.loop
.error: SCF
.end: LD A,C
OUT (SLOT1),A
POP HL
.end: POP HL
POP DE
RET
; RAMDRV.EXE ¢ë§ë¢ ¥â íâã äã­ªæ¨î á  ¤à¥á®¬ ¢ SLOT1, ¯®í⮬㠫ãçè¥ â ª ­¥ ®¯â¨¬¨§¨à®¢ âì
; EMM.GetMemBlkPages:
; PUSH DE
; PUSH HL
; EX DE,HL
; LD B,0
; LD L,A
; IN A,(SLOT1)
; LD C,A
; LD A,SYS_PAGE
; OUT (SLOT1),A
; .loop: LD A,L
; LD (DE),A
; INC DE
; AND A
; JR Z,.error
; CP #FF
; JR Z,.end
; ;
; LD H,high (SYS_PAGE.RAMD_FAT - #4000 - #4000)
; LD L,(HL)
; INC B
; JR NZ,.loop
; .error: SCF
; .end: LD A,C
; OUT (SLOT1),A
; POP HL
; POP DE
; RET
;----------------------------------------------------------------------;
;
@ -843,6 +852,52 @@ GET_RAMD_NUM:
;
;
;----------------------------------------------------------------------;
; [x] 4/11/23
; ‚室:
; B = 0: swap to Sp
; B = #FF: swap to ZX
; B = #FE: no swap, only get info
; ‚ë室:
; A - current RAM Drives set
SWAP_RAM_DRIVES:
IN A,(SLOT3)
PUSH AF
LD A,SYS_PAGE
OUT (SLOT3),A
;
LD A,(SYS_PAGE.CURRENT_RAM_DRV)
CP B
JR Z,.exit ; 㦥 ãáâ ­®¢«¥­ § ¯à è¨¢ ¥¬ë© ­ ¡®à
;
LD A,#FE
CP B
JR Z,.exit ; ­¨ç¥£® ­¥ ¬¥­ïâì, ¢ë¤ âì ⥪ã騩 ­ ¡®à
;
.swap: LD HL,SYS_PAGE.RAMD_KEYS
LD DE,SYS_PAGE.Sp_RAMD_KEYS
LD B,SYS_PAGE.RAMD_KEYS.NUM
.loop: LD A,(DE)
LD C,A
LD A,(HL)
LD (DE),A
LD A,C
LD (HL),A
INC HL
INC DE
DJNZ .loop
;
LD A,(SYS_PAGE.CURRENT_RAM_DRV)
XOR #FF
LD (SYS_PAGE.CURRENT_RAM_DRV),A
;
.exit: POP AF
OUT (SLOT3),A
RET
;----------------------------------------------------------------------;
;
;
;----------------------------------------------------------------------;

View File

@ -166,11 +166,16 @@ INIT_SYS_ALL:
LD HL,SYS_PAGE.RAMD_KEYS-#4000
LD DE,SYS_PAGE.RAMD_KEYS+1-#4000
LD BC,SYS_PAGE.RAMD_KEYS.NUM-1
LD (HL),0
LDIR
; [x] 4/11/23
LD HL,SYS_PAGE.Sp_RAMD_KEYS-#4000
LD DE,SYS_PAGE.Sp_RAMD_KEYS+1-#4000
LD BC,SYS_PAGE.Sp_RAMD_KEYS.NUM-1
LD (HL),0
LDIR
;
LD DE,ZG_ADDRESS ;  ¤à¥á §­ ª®£¥­¥à â®à 
LD (SYS_PAGE.WIN_ZG-#4000),DE
;

View File

@ -74,7 +74,7 @@
TEMP EQU #7E00 ; !HARDCODE
MEMMAP2 EQU TEMP ; ¤®«¦­® ¡ëâì ¢ë஢­¥­® ¯® ALIGN 256
TPOINTD EQU TEMP-32
TPOINTD EQU TEMP - SYS_PAGE.RAMD_KEYS.NUM - SYS_PAGE.Sp_RAMD_KEYS.NUM ; [x] 4/11/23
;=======================================
@ -241,31 +241,38 @@ CMSERR:
; RST_to_BIOS
RET
CLEARM:
IN A,(SLOT3)
CLEARM: IN A,(SLOT3)
PUSH AF
LD A,SYS_PAGE
OUT (SLOT3),A
; save RAM disks on reboot when memory is cleared
LD HL,SYS_PAGE.RAMD_KEYS
LD DE,TPOINTD
LD BC,SYS_PAGE.RAMD_KEYS.NUM
LDIR
; [x] 4/11/23
LD HL,SYS_PAGE.Sp_RAMD_KEYS
LD DE,TPOINTD + SYS_PAGE.RAMD_KEYS.NUM
LD BC,SYS_PAGE.Sp_RAMD_KEYS.NUM
LDIR
;
; ®ç¨é ¥¬ RAM Table
LD HL,MEMMAP2
LD DE,MEMMAP2+1
LD BC,255
LD (HL),0
LDIR
; ¢®ááâ ­ ¢«¨¢ ¥¬ RAM ¤¨áª¨
LD IX,SYS_PAGE.RAMD_KEYS ;RAM DISKS
LD H,#C2
LD H,high SYS_PAGE.RAMD_FAT
LD D,high MEMMAP2
LD BC,#10FF
MEMLOOP:
LD A,(IX)
INC IX
OR A
LD L,A
CALL NZ,RCHAIN
DJNZ MEMLOOP
LD BC,SYS_PAGE.RAMD_KEYS.NUM*256 + #FF
CALL .MEMLOOP
; [x] 4/11/23
LD IX,SYS_PAGE.Sp_RAMD_KEYS
LD B,SYS_PAGE.Sp_RAMD_KEYS.NUM
CALL .MEMLOOP
;
CALL EMM.InitMem
LD BC,#400E ;!HARDCODE
CALL G_VALUE
@ -273,6 +280,18 @@ MEMLOOP:
CALL NZ,CCHAIN
POP AF
OUT (SLOT3),A
;!TEST; [ ] 04/11/2023 Žâ¤¥«ì­ë¥ à ¬¤¨áª¨ ¤«ï ०¨¬  ᯥªâà㬠 ¨ DSS. BLK_TO_RAMD
LD B,high BIOS.SWAP_RAM_DRIVES.Sp2000
JP SWAP_RAM_DRIVES
;
;
.MEMLOOP:
LD A,(IX)
INC IX
OR A
LD L,A
CALL NZ,RCHAIN
DJNZ .MEMLOOP
RET
;
@ -1035,14 +1054,15 @@ FINSTAL:
LD A,SYS_PAGE
OUT (SLOT3),A
LD HL,FDD_INI_TABLE.FDD_0
LD BC,#20FF ;!HARDCODE table
FILLFDD:
LD BC,SYS_PAGE.FDD_TBL.Size*256 + #FF ; table_size*256 + fill_byte
.FILLFDD:
LD (HL),C
INC HL
DJNZ FILLFDD
DJNZ .FILLFDD
;
EX AF,AF'
OUT (SLOT3),A
LD BC,#0311
LD BC,#0311 ; !HARDCODE
CALL G_VALUE
LD HL,FD720A
OR A