перед сменой схемы free zx pages

This commit is contained in:
Tolik 2024-09-22 01:10:42 +10:00
parent a23b2eb756
commit 23eefc8625
5 changed files with 42 additions and 42 deletions

@ -1 +1 @@
Subproject commit 51a136edca8c04554de0b189d7680ebbe358c64a Subproject commit 18eb6779037e4e6291119d52cd7b8aba3b51de6c

View File

@ -917,7 +917,7 @@ FN_SYNC:
IN B,(C) IN B,(C)
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (C),A OUT (C),A
LD DE,(SYS_PAGE.CONFIG_ALL) LD DE,(SYS_PAGE.SCREEN_TABLE)
OUT (C),B OUT (C),B
CALL Test_CONFIG_ALL CALL Test_CONFIG_ALL
@ -929,7 +929,7 @@ FN_SYNC:
IN B,(C) IN B,(C)
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (C),A OUT (C),A
LD DE,(SYS_PAGE.CONFIG_ALL) LD DE,(SYS_PAGE.SCREEN_TABLE)
OUT (C),B OUT (C),B
LD D,CMOS_CELL.ScreenSET LD D,CMOS_CELL.ScreenSET
@ -969,7 +969,7 @@ FN_SYNC:
IN A,(PORT_Y) IN A,(PORT_Y)
LD (SYS_PAGE.COPY_RGADR),A LD (SYS_PAGE.COPY_RGADR),A
LD (SYS_PAGE.CONFIG_ALL),IX LD (SYS_PAGE.SCREEN_TABLE),IX
XOR A XOR A
;----[START]-----------------------[? 1] ;----[START]-----------------------[? 1]
@ -1047,7 +1047,7 @@ FN_SYNC:
;-----------------------------[^ 2]----- ;-----------------------------[^ 2]-----
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT3),A OUT (SLOT3),A
LD IX,(SYS_PAGE.CONFIG_ALL) LD IX,(SYS_PAGE.SCREEN_TABLE)
EX AF,AF' EX AF,AF'
ADD A,#80 ADD A,#80

View File

@ -293,7 +293,7 @@ INIT_CONFIG_ALL:
.setDefaultINT: .setDefaultINT:
LD HL,SCREEN_TABLES.PENTAGON ; set pentagon int LD HL,SCREEN_TABLES.PENTAGON ; set pentagon int
.setINT: .setINT:
LD (SYS_PAGE.CONFIG_ALL - #4000),HL LD (SYS_PAGE.SCREEN_TABLE - #4000),HL
;------------[new code end]------------- ;------------[new code end]-------------
; ;
LD DE,CNF_PORT.CNF_0 + ROM.BIOS LD DE,CNF_PORT.CNF_0 + ROM.BIOS
@ -301,7 +301,7 @@ INIT_CONFIG_ALL:
LD HL,SYS_PAGE.ZX_TASK.CURRENT - #4000 ; 㡨âì ¢á¥ § ¤ ç¨ LD HL,SYS_PAGE.ZX_TASK.CURRENT - #4000 ; 㡨âì ¢á¥ § ¤ ç¨
LD DE,SYS_PAGE.ZX_TASK.CURRENT+1 - #4000 LD DE,SYS_PAGE.ZX_TASK.CURRENT+1 - #4000
LD BC,_#ZX_TASK - 1 LD BC,_ZX_TASK - 1
LD (HL),0 LD (HL),0
LDIR LDIR

View File

@ -102,7 +102,7 @@ FN_ENTRANCE: ;!TODO A - TASK NUMBER
;‚室: A - TASK NUMBER ;‚室: A - TASK NUMBER
GET_ZX_TASK_DATA: GET_ZX_TASK_DATA:
GET_ZX_TASK_DATA_OFFSET GET_ZX_TASK_DATA_OFFSET
ADD A,_#ZX_TASK_DATA ADD A,_ZX_TASK_DATA
LD C,A LD C,A
LD B,0 LD B,0
LD IX,SYS_PAGE.ZX_TASK.CURRENT LD IX,SYS_PAGE.ZX_TASK.CURRENT
@ -113,8 +113,8 @@ GET_ZX_TASK_DATA:
;-----------------------------------------------------------------------; ;-----------------------------------------------------------------------;
;‚室: A - TASK NUMBER ;‚室: A - TASK NUMBER
FREE_vMEMORY: LD D,(IX + _#ZX_TASK_DATA.vROM_ID) FREE_vMEMORY: LD D,(IX + _ZX_TASK_DATA.vROM_ID)
LD A,(IX + _#ZX_TASK_DATA.vRAM_ID) LD A,(IX + _ZX_TASK_DATA.vRAM_ID)
CALL EMM.FreeMem CALL EMM.FreeMem
LD A,D LD A,D
CALL EMM.FreeMem CALL EMM.FreeMem
@ -128,8 +128,8 @@ FREE_vMEMORY: LD D,(IX + _#ZX_TASK_DATA.vROM_ID)
;‚ë室: H - vRAM block ID ;‚ë室: H - vRAM block ID
; L - vROM block ID ; L - vROM block ID
GET_RAMBLOCK_IDs: GET_RAMBLOCK_IDs:
LD H,(IX + _#ZX_TASK_DATA.vRAM_ID) LD H,(IX + _ZX_TASK_DATA.vRAM_ID)
LD L,(IX + _#ZX_TASK_DATA.vROM_ID) LD L,(IX + _ZX_TASK_DATA.vROM_ID)
RET RET
;-----------------------------------------------------------------------; ;-----------------------------------------------------------------------;
@ -137,14 +137,14 @@ GET_RAMBLOCK_IDs:
;-----------------------------------------------------------------------; ;-----------------------------------------------------------------------;
;‚室: HL - ¡«®ª áâà ­¨æ ­  ª®â®àë¥ ¬ ¯¯¨¬ (¢á¥£¤  11 èâ.) ;‚室: HL - ¡«®ª áâà ­¨æ ­  ª®â®àë¥ ¬ ¯¯¨¬ (¢á¥£¤  11 èâ.)
; A - TASK NUMBER ; A - TASK NUMBER
INIT_vROM: LD A,(IX + _#ZX_TASK_DATA.vROM_ID) INIT_vROM: LD A,(IX + _ZX_TASK_DATA.vROM_ID)
CP (HL) CP (HL)
EX DE,HL EX DE,HL
CALL NZ,EMM.FreeMem CALL NZ,EMM.FreeMem
EX DE,HL EX DE,HL
; ;
LD A,(HL) LD A,(HL)
LD (IX + _#ZX_TASK_DATA.vROM_ID),A LD (IX + _ZX_TASK_DATA.vROM_ID),A
INC HL INC HL
; ãáâ ­®¢ª  ¯®à⮢ ROM ; ãáâ ­®¢ª  ¯®à⮢ ROM
LD DE,.PORTS LD DE,.PORTS
@ -246,7 +246,7 @@ GET_XXX_MEM: CALL FREE_vRAM
.init: LD B,D .init: LD B,D
CALL EMM.GetMem CALL EMM.GetMem
RET C RET C
LD (IX + _#ZX_TASK_DATA.vRAM_ID),A LD (IX + _ZX_TASK_DATA.vRAM_ID),A
RET RET
;-----------------------------------------------------------------------; ;-----------------------------------------------------------------------;
@ -254,9 +254,9 @@ GET_XXX_MEM: CALL FREE_vRAM
;-----------------------------------------------------------------------; ;-----------------------------------------------------------------------;
FREE_vRAM: XOR A FREE_vRAM: XOR A
LD C,A LD C,A
OR (IX + _#ZX_TASK_DATA.vRAM_ID) OR (IX + _ZX_TASK_DATA.vRAM_ID)
RET Z RET Z
LD (IX + _#ZX_TASK_DATA.vRAM_ID),C LD (IX + _ZX_TASK_DATA.vRAM_ID),C
JP EMM.FreeMem JP EMM.FreeMem
;-----------------------------------------------------------------------; ;-----------------------------------------------------------------------;
@ -292,7 +292,7 @@ GET_SCORP_RAM: CALL FREE_vRAM
; A - Pent128 mem block id ; A - Pent128 mem block id
LD B,D ; Scorp128 mem block id LD B,D ; Scorp128 mem block id
CALL EMM.MergeMemBlocks CALL EMM.MergeMemBlocks
LD (IX + _#ZX_TASK_DATA.vRAM_ID),A LD (IX + _ZX_TASK_DATA.vRAM_ID),A
RET RET
; ;
; 䨫ìâà ¤«ï áâà ­¨æ ᪮௠ ; 䨫ìâà ¤«ï áâà ­¨æ ᪮௠
@ -334,7 +334,7 @@ GET_SCORP_RAM: CALL FREE_vRAM
; CF: 1 - ­¥ ¯¥à¥ãáâ ­ ¢«¨¢ âì ¯ «¨âàã ; CF: 1 - ­¥ ¯¥à¥ãáâ ­ ¢«¨¢ âì ¯ «¨âàã
/* /*
; ‚室: D[3..0]: 0 - BASIC 128, 1 - BASIC 48, 2 - TR-DOS 128, ;!FIXIT ¯¥à¥¤¥« âì, íâ® CONFIG_DE ; ‚室: D[3..0]: 0 - BASIC 128, 1 - BASIC 48, 2 - TR-DOS 128,
; 3 - EXPANSION. C § ªàëâ묨 128-¬¨ ¯®àâ ¬¨: ; 3 - EXPANSION. C § ªàëâ묨 128-¬¨ ¯®àâ ¬¨:
; 4 - TR-DOS, 5 - BASIC 48 ; 4 - TR-DOS, 5 - BASIC 48
; D[7..4]: ;!TODO Port All Mode: b4 - Acc off/on ; D[7..4]: ;!TODO Port All Mode: b4 - Acc off/on
@ -361,35 +361,35 @@ GOTO_SPEC: DI
LD SP,#C000 LD SP,#C000
LD A,D LD A,D
CALL GET_ZX_TASK_DATA CALL GET_ZX_TASK_DATA
LD A,(IX + _#ZX_TASK_DATA.STATE) LD A,(IX + _ZX_TASK_DATA.STATE)
RR E RR E
JR NC,.save_state JR NC,.save_state
OR %0000'0100 OR %0000'0100
.save_state: LD (IX + _#ZX_TASK_DATA.STATE),A .save_state: LD (IX + _ZX_TASK_DATA.STATE),A
; ;
; [ ] free zx pages! ;!TODO ¥á«¨ § ¤ ç  ¯ãáâ ï, â® ¯¥à¢ë© ¨­¨â ; [ ] free zx pages! ;!TODO ¥á«¨ § ¤ ç  ¯ãáâ ï, â® ¯¥à¢ë© ¨­¨â
; ;
;!TODO ᤥ« âì  ªâ¨¢ æ¨î ¢¨­â  ¤«ï ¯ à ¬¥âà  ¨§ Setup ;!TODO ᤥ« âì  ªâ¨¢ æ¨î ¢¨­â  ¤«ï ¯ à ¬¥âà  ¨§ Setup
;!TODO ãáâ ­®¢¨âì £¤¥-­¨¡ã¤ì ­¨¦¥ áâíª ¨§ TASK ;!TODO ãáâ ­®¢¨âì £¤¥-­¨¡ã¤ì ­¨¦¥ áâíª ¨§ TASK
LD A,(SYS_PAGE.CONFIG_DE.ZX_START) LD A,(SYS_PAGE.CONFIG_DE.ZX_START)
LD (IX + _#ZX_TASK_DATA.CONFIG_DE + 1),A LD (IX + _ZX_TASK_DATA.CONFIG_DE + 1),A
; ;
LD A,(IX + _#ZX_TASK_DATA.PORT_ALL_MODE) LD A,(IX + _ZX_TASK_DATA.PORT_ALL_MODE)
LD BC,Port_All_Mode LD BC,Port_All_Mode
OUT (C),A OUT (C),A
; ãáâ ­®¢ª  ¨­â  ; ãáâ ­®¢ª  ¨­â 
LD A,(IX + _#ZX_TASK_DATA.FN_SYNC) LD A,(IX + _ZX_TASK_DATA.FN_SYNC)
AND %0000'0111 AND %0000'0111
CALL FN_SYNC CALL FN_SYNC
; ãáâ ­®¢ª  à §¢ñà⪨ ; ãáâ ­®¢ª  à §¢ñà⪨
LD A,(IX + _#ZX_TASK_DATA.FN_SYNC) LD A,(IX + _ZX_TASK_DATA.FN_SYNC)
AND %1100'0000 AND %1100'0000
OR %0010'0000 OR %0010'0000
RLCA RLCA
RLCA RLCA
CALL FN_SYNC CALL FN_SYNC
; ;
LD A,(IX + _#ZX_TASK_DATA.STATE) LD A,(IX + _ZX_TASK_DATA.STATE)
AND %0000'0100 ;!TODO § ¯®¬­¨âì/¢®ááâ ­®¢¨âì ª á⮬­ãî ¯ «¨âàã? AND %0000'0100 ;!TODO § ¯®¬­¨âì/¢®ááâ ­®¢¨âì ª á⮬­ãî ¯ «¨âàã?
CALL Z,SET_TXT_PALETTE.ZX CALL Z,SET_TXT_PALETTE.ZX
; ;
@ -400,7 +400,7 @@ GOTO_SPEC: DI
LD HL,#5104 LD HL,#5104
CALL LP_SET_32.X CALL LP_SET_32.X
; .SHARED_BUFFER_256b ; .SHARED_BUFFER_256b
LD A,(IX + _#ZX_TASK_DATA.vRAM_ID) LD A,(IX + _ZX_TASK_DATA.vRAM_ID)
LD HL,SYS_PAGE.SHARED_BUFFER_256b LD HL,SYS_PAGE.SHARED_BUFFER_256b
CALL EMM.GetMemBlkPages CALL EMM.GetMemBlkPages
;!FIXIT ;!FIXIT
@ -758,8 +758,8 @@ RES128_PROG:
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT3),A OUT (SLOT3),A
LD DE,(SYS_PAGE.CONFIG_DE) LD DE,(SYS_PAGE.CONFIG_DE)
XOR A ;XOR A
LD (SYS_PAGE.CONFIG_DE.ZX_START),A ;LD (SYS_PAGE.CONFIG_DE.ZX_START),A
OUT (C),B OUT (C),B
LD BC,#1FFD LD BC,#1FFD

View File

@ -138,32 +138,32 @@ TASK_SWITCH:
OUT (SLOT3),A OUT (SLOT3),A
LD IX,SYS_PAGE.ZX_TASK.CURRENT ; ¤ ­­ë¥ § ¤ ç LD IX,SYS_PAGE.ZX_TASK.CURRENT ; ¤ ­­ë¥ § ¤ ç
LD A,_#ZX_TASK_DATA ; ᬥ饭¨¥ ¤ ­­ëå ¢ â ¡«¨æ¥ § ¤ ç LD A,_ZX_TASK_DATA ; ᬥ饭¨¥ ¤ ­­ëå ¢ â ¡«¨æ¥ § ¤ ç
ADD A,(IX) ; ᬥ饭¨¥ ¤ ­­ëå ⥪ã饩 § ¤ ç¨ ADD A,(IX) ; ᬥ饭¨¥ ¤ ­­ëå ⥪ã饩 § ¤ ç¨
LD E,A LD E,A
LD D,0 LD D,0
ADD IX,DE ; ¤ ­­ë¥ ⥪ã饩 § ¤ ç¨ ADD IX,DE ; ¤ ­­ë¥ ⥪ã饩 § ¤ ç¨
LD (IX + _#ZX_TASK_DATA.SLOT3_PAGE),B ; á®åà ­¨âì áâà ­¨æã 3 LD (IX + _ZX_TASK_DATA.SLOT3_PAGE),B ; á®åà ­¨âì áâà ­¨æã 3
LD HL,0 LD HL,0
ADD HL,SP ADD HL,SP
LD (IX + _#ZX_TASK_DATA.SP),L ; á®åà ­¨âì á⥪ § ¤ ç¨ LD (IX + _ZX_TASK_DATA.SP),L ; á®åà ­¨âì á⥪ § ¤ ç¨
LD (IX + _#ZX_TASK_DATA.SP + 1),H LD (IX + _ZX_TASK_DATA.SP + 1),H
SET 0,(IX + _#ZX_TASK_DATA.STATE) ; ãáâ ­®¢¨âì ä« £ á®åà ­¥­­®á⨠⥪ã饩 § ¤ ç¨ SET 0,(IX + _ZX_TASK_DATA.STATE) ; ãáâ ­®¢¨âì ä« £ á®åà ­¥­­®á⨠⥪ã饩 § ¤ ç¨
RES 1,(IX + _#ZX_TASK_DATA.STATE) ; ãáâ ­®¢¨âì ä« £, çâ® § ¤ ç  ¯®ª¨­ãâ  RES 1,(IX + _ZX_TASK_DATA.STATE) ; ãáâ ­®¢¨âì ä« £, çâ® § ¤ ç  ¯®ª¨­ãâ 
LD IX,SYS_PAGE.ZX_TASK.CURRENT LD IX,SYS_PAGE.ZX_TASK.CURRENT
LD A,_#ZX_TASK_DATA ; ᬥ饭¨¥ ¤ ­­ëå ¢ â ¡«¨æ¥ § ¤ ç LD A,_ZX_TASK_DATA ; ᬥ饭¨¥ ¤ ­­ëå ¢ â ¡«¨æ¥ § ¤ ç
ADD A,C ; ᬥ饭¨¥ ¤ ­­ëå ­®¢®© § ¤ ç¨ ADD A,C ; ᬥ饭¨¥ ¤ ­­ëå ­®¢®© § ¤ ç¨
LD E,A LD E,A
LD D,0 LD D,0
ADD IX,DE ; ¤ ­­ë¥ ­®¢®© § ¤ ç¨ ADD IX,DE ; ¤ ­­ë¥ ­®¢®© § ¤ ç¨
; BIT 1,(IX + _#ZX_TASK_DATA.STATE) ; BIT 1,(IX + _ZX_TASK_DATA.STATE)
; JR NZ,TASK_IN_WORK ; § ¤ ç  ¢ à ¡®â¥ ??? ­¥¢¥à­®¥ § ¢¥à襭¨¥ ; JR NZ,TASK_IN_WORK ; § ¤ ç  ¢ à ¡®â¥ ??? ­¥¢¥à­®¥ § ¢¥à襭¨¥
; ; á¡à á뢠âì ¨«¨ ¯à®áâ® ¢®§¢à é âìáï ; ; á¡à á뢠âì ¨«¨ ¯à®áâ® ¢®§¢à é âìáï
BIT 0,(IX + _#ZX_TASK_DATA.STATE) ; ¡ë«  á®åà ­¥­ /­¥â BIT 0,(IX + _ZX_TASK_DATA.STATE) ; ¡ë«  á®åà ­¥­ /­¥â
JR NZ,TASK_SET ; § ¤ ç  áãé¥áâ¢ã¥â JR NZ,TASK_SET ; § ¤ ç  áãé¥áâ¢ã¥â
; § ¤ ç¨ ­¥ ¡ë«®! ; § ¤ ç¨ ­¥ ¡ë«®!
@ -197,16 +197,16 @@ TASK_RESTORE:
;LD D,0 ;LD D,0
;ADD IX,DE ; ­®¢ ï § ¤ ç  ;ADD IX,DE ; ­®¢ ï § ¤ ç 
;LD E,16 ;LD E,16
ADD A,_#ZX_TASK_DATA ; ᬥ饭¨¥ ¤ ­­ëå ¢ â ¡«¨æ¥ § ¤ ç ADD A,_ZX_TASK_DATA ; ᬥ饭¨¥ ¤ ­­ëå ¢ â ¡«¨æ¥ § ¤ ç
LD E,A LD E,A
LD D,0 LD D,0
; ;
ADD IX,DE ADD IX,DE
LD L,(IX + _#ZX_TASK_DATA.SP) ; ¢á¯®¬­¨âì á⥪ LD L,(IX + _ZX_TASK_DATA.SP) ; ¢á¯®¬­¨âì á⥪
LD H,(IX + _#ZX_TASK_DATA.SP + 1) LD H,(IX + _ZX_TASK_DATA.SP + 1)
LD SP,HL LD SP,HL
LD A,(IX + _#ZX_TASK_DATA.SLOT3_PAGE); ¢á¯®¬­¨âì âà¥âìî áâà ­¨æã LD A,(IX + _ZX_TASK_DATA.SLOT3_PAGE); ¢á¯®¬­¨âì âà¥âìî áâà ­¨æã
OUT (SLOT3),A OUT (SLOT3),A