This commit is contained in:
Tolik 2024-08-25 01:28:51 +10:00
parent 4a49ae559b
commit 30edc55a57
3 changed files with 114 additions and 39 deletions

@ -1 +1 @@
Subproject commit e9d481a5565338505710b08e50d22a8579c400be
Subproject commit a98a635f03359ec21cd8dd77917a384a8a37caef

Binary file not shown.

View File

@ -16,63 +16,138 @@
; [ ] ‘âà ­¨æ  އ“ ¤«ï ᪮௠ ¢ SLOT0 ¤®«¦­  ᮢ¯ ¤ âì á ­ã«¥¢®© áâà ­¨æ¥© ¯®àâ  #7FFD
IF FREE_ZX_PAGES
MODULE MANAGE_ZX_PAGES
;!FIXIT
;----------------[‚뤥«¥­¨¥/®á¢®¡®¦¤¥­¨¥ áâà ­¨æ ᯥªâà㬠]-------------;
;¢å®¤: ॣ B: 0 - ¨­¨â ¯ ¬ï⨠Spectrum 48k
; 1 - ¨­¨â ¯ ¬ï⨠Pentagon 128k
; 2 - ¨­¨â ¯ ¬ï⨠Pentagon 512k
; 3 - ¨­¨â ¯ ¬ï⨠Scorpion 256k
; ॣ A: âॡ㥬®¥ ª®«-¢® áâà ­¨æ ¤«ï vROM
;
;¢ë室: CF = 0: A - ­®¬¥à à ¬¡«®ª 
; CF = 1: A - ­®¬¥à ®è¨¡ª¨
;¢å®¤: ॣ B: 0 - ¨­¨â ¯ ¬ï⨠Spectrum 48k ¨ 2-å áâà ­¨æ vROM
; 1 - ¨­¨â ¯ ¬ï⨠Pentagon 128k ¨ 3-å áâà ­¨æ vROM
; 2 - ¨­¨â ¯ ¬ï⨠Pentagon 512k ¨ 3-å áâà ­¨æ vROM
; 3 - ¨­¨â ¯ ¬ï⨠Scorpion 256k ¨ 3-å áâà ­¨æ vROM
; 4..15 - § à¥§¥à¢¨à®¢ ­ë
; 16 - ¯®«ãç¨âì à ¬¡«®ª¨ ¨­¨æ¨ «¨§¨à®¢ ­­ëå vROM ¨ VRAM
; 17..63 - § à¥§¥à¢¨à®¢ ­ë
; 64 - ®á¢®¡®¤¨âì à ¬¡«®ª¨ vROM ¨ vRAM
; 65..127 - § à¥§¥à¢¨à®¢ ­ë
; 128 - ¨­¨æ¨ «¨§¨à®¢ âì ᢮© ­ ¡®à áâà ­¨æ vROM
; ॣ HL: ¯à¨ ॣ B[7]=1  ¤à¥á áâà ­¨æ (11 èâ):
; byte1 - RAM block ID, byte2..11 - áâà ­¨æë ¤«ï vROM
; ॣ A: ­®¬¥à ZX TASK ¯®ª  çâ® ¢á¥£¤  ­®«ì!!!
;¢ë室: CF = 0: HL - ­®¬¥à  à ¬¡«®ª®¢ ¤«ï ०¨¬®¢ 0..16. H=vRAM, L=vROM
; CF = 1: A - ­®¬¥à ®è¨¡ª¨
FN_ENTRANCE:
;-----------------------------------------------------------------------;
;!FIXIT
;-----------------------------------------------------------------------;
;‚믮«­ï¥âáï ¢á¥£¤  ¤«ï ¨­¨â  âàñå áâà ­¨æ އ“
INIT_48k_MEM:
;‚室: ---
;‚ë室: H - vRAM block ID
; L - vROM block ID
GET_RAMBLOCK_IDs:
;-----------------------------------------------------------------------;
;!FIXIT
;-----------------------------------------------------------------------;
INIT_SCORP_RAM:
DI
LD A,5
OUT (SLOT1),A
; #1FFD
LD BC,#1FFD
;‚室: HL - ¡«®ª áâà ­¨æ ­  ª®â®àë¥ ¬ ¯¯¨¬ (¢á¥£¤  10 èâ.)
FREE_vROM:
;-----------------------------------------------------------------------;
;!FIXIT
;-----------------------------------------------------------------------;
;‚室: HL - ¡«®ª áâà ­¨æ ­  ª®â®àë¥ ¬ ¯¯¨¬ (¢á¥£¤  10 èâ.)
FREE_vRAM:
;-----------------------------------------------------------------------;
;!FIXIT
;-----------------------------------------------------------------------;
;‚室: B - ª®«¨ç¥á⢮ áâà ­¨æ
GET_vROM:
;-----------------------------------------------------------------------;
;!FIXIT
;-----------------------------------------------------------------------;
;‚室: HL - ¡«®ª áâà ­¨æ ­  ª®â®àë¥ ¬ ¯¯¨¬ (¢á¥£¤  10 èâ.)
INIT_vROM:
;-----------------------------------------------------------------------;
;-----------------------------------------------------------------------;
;‚•Ž„: HL - ᯨ᮪ áâà ­¨æ
; E - 0 = 128kb, 1 = 512kb
INIT_PENT_vRAM: DI
XOR A
OUT (SLOT0),A
.set_1ffd: LD BC,#1FFD
OUT (C),A
; #7FFD
; set 128
LD B,#7F
LD A,8
LOOP_P1: DEC A
OUT (C),A
OUT (SLOT3),A
JR NZ,LOOP_P1
; #1FFD
LD B,#1F
LD A,#10
OUT (C),A
; #7FFD
LD B,#7F
LD A,8
LOOP_P2: OUT (C),A
OUT (SLOT3),A
INC A
CP 16
JR NZ,LOOP_P2
LD D,A
CALL SET_7FFD
;
XOR A
OUT (C),A
; #1FFD
LD B,#1F
BIT 3,E ; 128/512
RET Z
; set 128 + 384
LD A,SYS_PORT.CNF_512
OUT (SYS_PORT.ROM),A
;
LD D,%0100'0000
CALL SET_7FFD
LD D,%1000'0000
CALL SET_7FFD
LD D,%1100'0000
CALL SET_7FFD
;
XOR A
OUT (C),A
RET
;-----------------------------------------------------------------------;
;-----------------------------------------------------------------------;
;‚•Ž„: HL - ᯨ᮪ áâà ­¨æ
; D - ­ ç «ì­®¥ §­ ç¥­¨¥ ¤«ï 7FFD
SET_7FFD: LD A,(HL)
OUT (C),D
OUT (SLOT3),A
INC HL
INC D
BIT 3,D ; ª®«¨ç¥á⢮ áâà ­¨æ
JR Z,SET_7FFD
RET
;-----------------------------------------------------------------------;
;-----------------------------------------------------------------------;
;!FIXIT
;‚•Ž„: HL - ᯨ᮪ áâà ­¨æ.
INIT_SCORP_vRAM:; first 128 kb
LD E,0
CALL INIT_PENT_vRAM
; second 128 kb
LD A,#10
CALL INIT_PENT_vRAM.set_1ffd
; A = 0
LD B,#1F
OUT (C),A
RET
;-----------------------------------------------------------------------;
;-----------------------------------------------------------------------;
;‚믮«­ï¥âáï ¤«ï ¨­¨â  âàñå áâà ­¨æ އ“ 48k
GET_48k_MEM: LD B,3
JP EMM.GetMem
;-----------------------------------------------------------------------;
;-----------------------------------------------------------------------;
;‚믮«­ï¥âáï ¤«ï ¨­¨â  3 áâà ­¨æ އ“ 48k ¨ 5 áâà ­¨æ އ“ 128k â ç¥ª
GET_128k_MEM: LD B,3+5
JP EMM.GetMem
;-----------------------------------------------------------------------;
;-----------------------------------------------------------------------;
;‚室: ---