...temp...
This commit is contained in:
parent
8b94cc4e63
commit
d80b79a832
@ -1 +1 @@
|
||||
Subproject commit 75ceae51d36476f236476681aac5c7619ca22005
|
||||
Subproject commit e9d481a5565338505710b08e50d22a8579c400be
|
||||
Binary file not shown.
@ -717,9 +717,6 @@ POST_5_OK:
|
||||
;
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
;-----------------------------------------------------------------------;
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------;
|
||||
MODULE SET_CONFIG_ID
|
||||
;-------------[Save IX:IY]--------------
|
||||
|
||||
@ -26,7 +26,7 @@ EMM.GetMemSize: IN A,(SLOT1)
|
||||
OUT (SLOT1),A
|
||||
RET
|
||||
|
||||
/*
|
||||
/*
|
||||
.loop: LD A,(HL)
|
||||
INC L
|
||||
JR Z,.exit
|
||||
@ -39,7 +39,7 @@ EMM.GetMemSize: IN A,(SLOT1)
|
||||
LD B,0
|
||||
OUT (SLOT1),A
|
||||
RET
|
||||
*/
|
||||
*/
|
||||
;----------------------------------------------------------------------;
|
||||
;
|
||||
|
||||
@ -49,8 +49,7 @@ EMM.GetMemSize: IN A,(SLOT1)
|
||||
;
|
||||
;----------------------------------------------------------------------;
|
||||
; ˆ¨æ¨ «¨§ æ¨ï à á¯à¥¤¥«¥¨ï ¯ ¬ïâ¨.
|
||||
EMM.InitMem:
|
||||
PUSH BC
|
||||
EMM.InitMem: PUSH BC
|
||||
PUSH HL
|
||||
PUSH DE
|
||||
|
||||
@ -177,7 +176,7 @@ EMM.GetMem: PUSH BC
|
||||
|
||||
|
||||
|
||||
/*
|
||||
/*
|
||||
EMM.GetMem: PUSH BC
|
||||
IN A,(SLOT3)
|
||||
EX AF,AF'
|
||||
@ -223,7 +222,7 @@ EMM.GetMem: PUSH BC
|
||||
SCF
|
||||
POP BC
|
||||
RET
|
||||
*/
|
||||
*/
|
||||
;----------------------------------------------------------------------;
|
||||
;
|
||||
|
||||
@ -236,21 +235,20 @@ EMM.GetMem: PUSH BC
|
||||
; ‚ë室: L,A - Š‹ž— RAM-Disk/ª®¤ ®è¨¡ª¨
|
||||
; CF - ¯à¨§ ª ®è¨¡ª¨
|
||||
;EMM.GetMem:
|
||||
EMM.GetMemRMD:
|
||||
PUSH AF
|
||||
EMM.GetMemRMD: PUSH AF
|
||||
CALL EMM.GetMem
|
||||
JR C,.error1
|
||||
|
||||
;
|
||||
LD B,A
|
||||
POP AF
|
||||
CALL BLK_TO_RAMD
|
||||
RET NC
|
||||
.error2:
|
||||
LD L,BIOS.Error.BadNumber ; RAM-Disk § ïâ
|
||||
;
|
||||
.error2: LD L,BIOS.Error.BadNumber ; RAM-Disk § ïâ
|
||||
LD A,L
|
||||
RET
|
||||
.error1:
|
||||
POP HL ; ç¨á⨬ á⥪
|
||||
;
|
||||
.error1: POP HL ; ç¨á⨬ á⥪
|
||||
LD L,A
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
@ -261,8 +259,7 @@ EMM.GetMemRMD:
|
||||
;----------------------------------------------------------------------;
|
||||
; Žá¢®¡®¤¨âì ¡«®ª ¯ ¬ï⨠ª«îç K
|
||||
; ‚室: A - Š‹ž— RAM-Disk
|
||||
EMM.FreeMemRMD:
|
||||
CALL GET_RAMD_ST
|
||||
EMM.FreeMemRMD: CALL GET_RAMD_ST
|
||||
RET C
|
||||
SCF
|
||||
RET Z
|
||||
@ -271,7 +268,7 @@ EMM.FreeMemRMD:
|
||||
LD B,A
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
LD H,high SYS_PAGE.RAMD_KEYS; - #4000 - #4000
|
||||
LD H,high SYS_PAGE.RAMD_KEYS
|
||||
LD (HL),0
|
||||
LD A,B
|
||||
OUT (SLOT3),A
|
||||
@ -282,8 +279,7 @@ EMM.FreeMemRMD:
|
||||
; ‚室: A - <20>€—€‹Ž –…<E28093>Ž—Šˆ
|
||||
; <20>… <20>Ž<EFBFBD>’ˆ’œ DE!!!
|
||||
;EMM_FN3M:
|
||||
EMM.FreeMem:
|
||||
; [ ] free zx pages! ⥯¥àì ¥«ì§ï ®á¢®¡®¤¨âì áâà ¨æã #FF
|
||||
EMM.FreeMem: ; [ ] free zx pages! ⥯¥àì ¥«ì§ï ®á¢®¡®¤¨âì áâà ¨æã #FF
|
||||
SCF
|
||||
INC A
|
||||
RET Z
|
||||
@ -293,33 +289,40 @@ EMM.FreeMem:
|
||||
;
|
||||
RET Z
|
||||
;
|
||||
LD L,A
|
||||
LD C,A
|
||||
CP ZX_RAM_ID ;!FIXIT ; [ ] free zx pages!
|
||||
CALL Z,SET_ROM_FLAG_ZX
|
||||
CALL Z,RES_FLAG_ZXvROM
|
||||
;
|
||||
IN A,(SLOT3)
|
||||
EX AF,AF'
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
|
||||
LD H,high (SYS_PAGE.RAM_TABLE)
|
||||
LD A,L
|
||||
EMM_F3M_L1:
|
||||
LD L,A
|
||||
LD H,high SYS_PAGE.RAM_TABLE
|
||||
LD A,C
|
||||
.loop: LD L,A
|
||||
LD A,(HL) ; á«¥¤ãî騩 ¡«®ª
|
||||
AND A
|
||||
JR Z,EMM_FN3M_ERR
|
||||
JR Z,.error
|
||||
LD (HL),0 ; Žá¢®¡®¤¨âì
|
||||
CP #FF ; …᫨ ¥ ª®¥æ
|
||||
JR NZ,EMM_F3M_L1 ; ¯à®¤®«¦ âì
|
||||
JR NZ,.loop ; ¯à®¤®«¦ âì
|
||||
|
||||
EX AF,AF'
|
||||
; !TEST 23/08/2024 ¢®ááâ ®¢«¥¨¥ 楯®çª¨ ¥á«¨ ®á¢®¡®¦¤ «¨ ¥ á ç «
|
||||
LD A,C
|
||||
LD L,0
|
||||
LD BC,256
|
||||
CPIR
|
||||
JR NZ,.exit
|
||||
DEC HL
|
||||
LD (HL),#FF
|
||||
;
|
||||
.exit: EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
XOR A ; no error code
|
||||
RET
|
||||
|
||||
EMM_FN3M_ERR:
|
||||
EX AF,AF'
|
||||
.error: EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
LD A,BIOS.Error.BadNumber
|
||||
SCF
|
||||
@ -353,7 +356,7 @@ EMM.GetMemPage:
|
||||
OUT (SLOT1),A
|
||||
|
||||
INC B
|
||||
LD H,high (SYS_PAGE.RAM_TABLE - #4000 - #4000)
|
||||
LD H,high (SYS_PAGE.RAM_TABLE-#4000-#4000)
|
||||
EMM_F4M_L1:
|
||||
LD A,(HL)
|
||||
AND A
|
||||
@ -400,7 +403,7 @@ EMM.GetMemPageNext:
|
||||
OUT (SLOT1),A
|
||||
|
||||
LD A,H
|
||||
LD H,high (SYS_PAGE.RAM_TABLE - #4000 - #4000)
|
||||
LD H,high (SYS_PAGE.RAM_TABLE-#4000-#4000)
|
||||
LD L,(HL)
|
||||
OUT (SLOT1),A
|
||||
LD A,L
|
||||
@ -440,7 +443,7 @@ EMM.GetMemBlkPages:
|
||||
LD C,A
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT1),A
|
||||
LD H,high (SYS_PAGE.RAM_TABLE - #4000 - #4000)
|
||||
LD H,high (SYS_PAGE.RAM_TABLE-#4000-#4000)
|
||||
LD L,(HL)
|
||||
LD A,C
|
||||
OUT (SLOT1),A
|
||||
@ -474,7 +477,7 @@ EMM.GetMemBlkPages:
|
||||
; CP #FF
|
||||
; JR Z,.end
|
||||
; ;
|
||||
; LD H,high (SYS_PAGE.RAM_TABLE - #4000 - #4000)
|
||||
; LD H,high +(SYS_PAGE.RAM_TABLE - #4000 - #4000)
|
||||
; LD L,(HL)
|
||||
; INC B
|
||||
; JR NZ,.loop
|
||||
@ -490,6 +493,312 @@ EMM.GetMemBlkPages:
|
||||
|
||||
|
||||
|
||||
;
|
||||
;----------------------------------------------------------------------;
|
||||
; à §¤¥«¨âì ¡«®ª ¯ ¬ï⨠¤¢ ¡«®ª
|
||||
; A - ¡«®ª, B - ¤«¨ ¯¥à¢®£® ¡«®ª ¯®á«¥ à §¤¥«¥¨ï
|
||||
; ¢ë室: A - ¡«®ª 1, B - ¡«®ª 2
|
||||
EMM.DivMemBlocks:
|
||||
INC B
|
||||
DEC B
|
||||
SCF
|
||||
RET Z
|
||||
DEC B
|
||||
LD E,A
|
||||
CALL EMM.GetMemPage ; ¯®«ãç¨âì ®¬¥à áâà ¨æë ¡«®ª
|
||||
RET C
|
||||
LD D,A
|
||||
|
||||
IN A,(SLOT3)
|
||||
EX AF,AF'
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
|
||||
LD H,high +(SYS_PAGE.RAM_TABLE); - #4000 - #4000)
|
||||
LD L,D
|
||||
LD A,(HL)
|
||||
LD (HL),#FF
|
||||
LD B,A
|
||||
|
||||
EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
|
||||
LD A,E
|
||||
AND A
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
;
|
||||
|
||||
|
||||
|
||||
;
|
||||
;----------------------------------------------------------------------;
|
||||
; ᫨âì ¤¢ ¡«®ª ¯ ¬ï⨠¢ ®¤¨
|
||||
; € - ¡«®ª 1, B - ¡«®ª 2
|
||||
; ¢ë室: € - ¡«®ª
|
||||
EMM.MergeMemBlocks:
|
||||
LD E,A
|
||||
IN A,(SLOT3)
|
||||
EX AF,AF'
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
LD H,high SYS_PAGE.RAM_TABLE
|
||||
LD C,B
|
||||
LD B,0
|
||||
.ADD_L: LD A,(HL)
|
||||
AND A
|
||||
JR Z,.ADD_ERR
|
||||
CP #FF
|
||||
JR Z,.ADD_NEXT
|
||||
LD L,A
|
||||
DJNZ .ADD_L
|
||||
|
||||
.ADD_ERR:
|
||||
EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
SCF
|
||||
RET
|
||||
|
||||
.ADD_NEXT:
|
||||
LD A,C
|
||||
AND A
|
||||
JR Z,.ADD_ERR
|
||||
LD (HL),A
|
||||
EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
AND A
|
||||
LD A,E
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
;
|
||||
|
||||
|
||||
|
||||
;
|
||||
;----------------------------------------------------------------------;
|
||||
; ¢å®¤: DE - ram_disk trk_sec, A - RAM-Disk
|
||||
; ¢ë室: HL - ¤à¥á, A - page
|
||||
RAMD_CALC_PAGE:
|
||||
CP 16
|
||||
CCF
|
||||
RET C ; <20>…’ ’€ŠŽƒŽ RAM-Disk
|
||||
|
||||
PUSH AF
|
||||
LD H,D
|
||||
LD L,E
|
||||
ADD HL,HL
|
||||
ADD HL,HL
|
||||
LD B,H
|
||||
LD A,E
|
||||
OR #C0
|
||||
LD C,A ; C - ç áâì ¤à¥á , B - áâà ¨æ
|
||||
POP AF
|
||||
|
||||
CALL EMM.GetMemPageRMD ; <20>Ž‹“—ˆ’œ ‘’<E28098>€<EFBFBD>ˆ–“
|
||||
LD L,0
|
||||
LD H,C
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
;
|
||||
|
||||
|
||||
|
||||
;
|
||||
;----------------------------------------------------------------------;
|
||||
; ‚室:
|
||||
; A - RAM Disk ID
|
||||
; ‚ë室:
|
||||
; A - Number (0..15)
|
||||
GET_RAMD_NUM:
|
||||
EX AF,AF'
|
||||
IN A,(SLOT1)
|
||||
EX AF,AF'
|
||||
LD BC,SYS_PAGE*256+SLOT1
|
||||
OUT (C),B
|
||||
|
||||
LD HL,SYS_PAGE.RAMD_KEYS-#4000-#4000
|
||||
LD BC,SYS_PAGE.RAMD_KEYS.NUM
|
||||
CPIR
|
||||
|
||||
EX AF,AF'
|
||||
OUT (SLOT1),A
|
||||
EX AF,AF'
|
||||
|
||||
SCF
|
||||
RET PE
|
||||
|
||||
DEC L
|
||||
LD A,L
|
||||
SUB low SYS_PAGE.RAMD_KEYS
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
;
|
||||
|
||||
|
||||
|
||||
;
|
||||
;----------------------------------------------------------------------;
|
||||
; [x] 04/11/2023
|
||||
; ‚室:
|
||||
; 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)
|
||||
EX AF,AF'
|
||||
PUSH AF ; ¢á直© á«ãç ©
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
;
|
||||
LD A,(SYS_PAGE.CURRENT_RAM_DRV)
|
||||
LD C,A
|
||||
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
|
||||
LD C,A
|
||||
;
|
||||
.exit: EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
POP AF
|
||||
EX AF,AF'
|
||||
LD A,C
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
;
|
||||
|
||||
|
||||
;
|
||||
;----------------------------------------------------------------------;
|
||||
; ¢ë室¥ ¯à¨ € = 0 ¤®«¦¥ ¡ëâì ãáâ ®¢«¥ ä« £ Z
|
||||
; ¥ 㡨¢ ¥â DE ¨ BC
|
||||
GET_RAMD_ST:
|
||||
CP SYS_PAGE.RAMD_KEYS.NUM
|
||||
CCF
|
||||
RET C
|
||||
|
||||
PUSH BC
|
||||
|
||||
LD HL,SYS_PAGE.RAMD_KEYS-#4000-#4000
|
||||
ADD A,L
|
||||
LD L,A
|
||||
|
||||
IN A,(SLOT1)
|
||||
LD B,A
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT1),A
|
||||
LD C,(HL)
|
||||
LD A,B
|
||||
OUT (SLOT1),A
|
||||
LD A,C
|
||||
POP BC
|
||||
AND A
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
;
|
||||
|
||||
|
||||
|
||||
;
|
||||
;----------------------------------------------------------------------;
|
||||
; RAM-Disk A, BLK - B
|
||||
BLK_TO_RAMD:
|
||||
CP SYS_PAGE.RAMD_KEYS.NUM
|
||||
CCF
|
||||
RET C
|
||||
|
||||
PUSH HL
|
||||
LD L,A
|
||||
|
||||
IN A,(SLOT3)
|
||||
LD C,A
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
LD A,L
|
||||
LD HL,SYS_PAGE.RAMD_KEYS; - #4000 - #4000
|
||||
ADD A,L
|
||||
LD L,A
|
||||
LD A,(HL) ; ª«îç ¡«®ª
|
||||
AND A
|
||||
JR NZ,BLK_BUSY ; RAM-Disk § ïâ - ®è¨¡ª
|
||||
LD (HL),B
|
||||
|
||||
LD A,C
|
||||
OUT (SLOT3),A
|
||||
|
||||
LD A,B
|
||||
AND A
|
||||
POP HL
|
||||
RET
|
||||
;
|
||||
BLK_BUSY:
|
||||
LD A,C
|
||||
OUT (SLOT3),A
|
||||
SCF
|
||||
POP HL
|
||||
LD A,L
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
;
|
||||
|
||||
|
||||
|
||||
;
|
||||
;----------------------------------------------------------------------;
|
||||
; RAM-Disk A
|
||||
RAMD_CLEAR:
|
||||
CP SYS_PAGE.RAMD_KEYS.NUM
|
||||
CCF
|
||||
RET C
|
||||
|
||||
PUSH HL
|
||||
LD L,A
|
||||
|
||||
IN A,(SLOT3)
|
||||
LD C,A
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
LD A,L
|
||||
LD HL,SYS_PAGE.RAMD_KEYS; - #4000 - #4000 ; RAM-Disk ᢮¡®¤¥
|
||||
ADD A,L
|
||||
LD L,A
|
||||
LD B,A ; § ¯®¬¨âì 㤠«ï¥¬ë© à ¬¤¨áª
|
||||
LD A,(HL)
|
||||
AND A
|
||||
JR Z,BLK_BUSY ; ¢®§¢à â á ®è¨¡ª®©
|
||||
LD (HL),0
|
||||
LD A,C
|
||||
OUT (SLOT3),A
|
||||
|
||||
AND A
|
||||
POP HL
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
;
|
||||
|
||||
|
||||
|
||||
;
|
||||
;----------------------------------------------------------------------; !FIXIT SAFE_RGADR
|
||||
;RAMD_R_W:
|
||||
@ -573,7 +882,7 @@ BLK_RD_WR:
|
||||
OUT (SLOT1),A
|
||||
LD A,H
|
||||
|
||||
LD H,high (SYS_PAGE.RAM_TABLE - #4000 - #4000)
|
||||
LD H,high +(SYS_PAGE.RAM_TABLE-#4000-#4000)
|
||||
LD L,A
|
||||
|
||||
INC D
|
||||
@ -657,7 +966,7 @@ BLK_RD_WR:
|
||||
|
||||
IN A,(SLOT1)
|
||||
LD E,A
|
||||
LD D,high (SYS_PAGE.RAM_TABLE - #4000 - #4000)
|
||||
LD D,high +(SYS_PAGE.RAM_TABLE-#4000-#4000)
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT1),A
|
||||
LD A,(DE)
|
||||
@ -791,7 +1100,7 @@ ROM_DISK:
|
||||
INC H
|
||||
CP H
|
||||
LD L,H
|
||||
LD H, high ROM_DISK.Pages.Number ; ROM-Disk pages!
|
||||
LD H,high ROM_DISK.Pages.Number ; ROM-Disk pages!
|
||||
LD A,(HL) ; PAGE-ROM
|
||||
|
||||
POP HL ; ¢®ááâ ®¢¨âì ¤à¥á ¢ ROM-Page
|
||||
@ -805,7 +1114,7 @@ ROM_DISK:
|
||||
PUSH HL ; ®âªã¤
|
||||
PUSH DE ; ªã¤
|
||||
|
||||
LD HL,-.stackDepth - .readProcedure.size ; memory stack use!
|
||||
LD HL,-.stackDepth-.readProcedure.size ; memory stack use!
|
||||
ADD HL,SP ; stack
|
||||
|
||||
PUSH HL ; ¤à¥á ¯à®£à ¬¬ë .readProcedure
|
||||
@ -871,310 +1180,3 @@ ROM_DISK:
|
||||
.readProcedure.size EQU $-.readProcedure
|
||||
;----------------------------------------------------------------------;
|
||||
;
|
||||
|
||||
|
||||
|
||||
;
|
||||
;----------------------------------------------------------------------;
|
||||
; ¢å®¤: DE - ram_disk trk_sec, A - RAM-Disk
|
||||
; ¢ë室: HL - ¤à¥á, A - page
|
||||
RAMD_CALC_PAGE:
|
||||
CP 16
|
||||
CCF
|
||||
RET C ; <20>…’ ’€ŠŽƒŽ RAM-Disk
|
||||
|
||||
PUSH AF
|
||||
LD H,D
|
||||
LD L,E
|
||||
ADD HL,HL
|
||||
ADD HL,HL
|
||||
LD B,H
|
||||
LD A,E
|
||||
OR #C0
|
||||
LD C,A ; C - ç áâì ¤à¥á , B - áâà ¨æ
|
||||
POP AF
|
||||
|
||||
CALL EMM.GetMemPageRMD ; <20>Ž‹“—ˆ’œ ‘’<E28098>€<EFBFBD>ˆ–“
|
||||
LD L,0
|
||||
LD H,C
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
;
|
||||
|
||||
|
||||
|
||||
;
|
||||
;----------------------------------------------------------------------;
|
||||
; ‚室:
|
||||
; A - RAM Disk ID
|
||||
; ‚ë室:
|
||||
; A - Number (0..15)
|
||||
GET_RAMD_NUM:
|
||||
EX AF,AF'
|
||||
IN A,(SLOT1)
|
||||
EX AF,AF'
|
||||
LD BC,SYS_PAGE * 256 + SLOT1
|
||||
OUT (C),B
|
||||
|
||||
LD HL,SYS_PAGE.RAMD_KEYS - #4000 - #4000
|
||||
LD BC,SYS_PAGE.RAMD_KEYS.NUM
|
||||
CPIR
|
||||
|
||||
EX AF,AF'
|
||||
OUT (SLOT1),A
|
||||
EX AF,AF'
|
||||
|
||||
SCF
|
||||
RET PE
|
||||
|
||||
DEC L
|
||||
LD A,L
|
||||
SUB low SYS_PAGE.RAMD_KEYS
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
;
|
||||
|
||||
|
||||
;
|
||||
;----------------------------------------------------------------------;
|
||||
; [x] 04/11/2023
|
||||
; ‚室:
|
||||
; 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)
|
||||
EX AF,AF'
|
||||
PUSH AF ; ¢á直© á«ãç ©
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
;
|
||||
LD A,(SYS_PAGE.CURRENT_RAM_DRV)
|
||||
LD C,A
|
||||
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
|
||||
LD C,A
|
||||
;
|
||||
.exit: EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
POP AF
|
||||
EX AF,AF'
|
||||
LD A,C
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
;
|
||||
|
||||
|
||||
;
|
||||
;----------------------------------------------------------------------;
|
||||
; ¢ë室¥ ¯à¨ € = 0 ¤®«¦¥ ¡ëâì ãáâ ®¢«¥ ä« £ Z
|
||||
; ¥ 㡨¢ ¥â DE ¨ BC
|
||||
GET_RAMD_ST:
|
||||
CP SYS_PAGE.RAMD_KEYS.NUM
|
||||
CCF
|
||||
RET C
|
||||
|
||||
PUSH BC
|
||||
|
||||
LD HL,SYS_PAGE.RAMD_KEYS - #4000 - #4000
|
||||
ADD A,L
|
||||
LD L,A
|
||||
|
||||
IN A,(SLOT1)
|
||||
LD B,A
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT1),A
|
||||
LD C,(HL)
|
||||
LD A,B
|
||||
OUT (SLOT1),A
|
||||
LD A,C
|
||||
POP BC
|
||||
AND A
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
;
|
||||
|
||||
|
||||
|
||||
;
|
||||
;----------------------------------------------------------------------;
|
||||
; RAM-Disk A, BLK - B
|
||||
BLK_TO_RAMD:
|
||||
CP SYS_PAGE.RAMD_KEYS.NUM
|
||||
CCF
|
||||
RET C
|
||||
|
||||
PUSH HL
|
||||
LD L,A
|
||||
|
||||
IN A,(SLOT3)
|
||||
LD C,A
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
LD A,L
|
||||
LD HL,SYS_PAGE.RAMD_KEYS; - #4000 - #4000
|
||||
ADD A,L
|
||||
LD L,A
|
||||
LD A,(HL) ; ª«îç ¡«®ª
|
||||
AND A
|
||||
JR NZ,BLK_BUSY ; RAM-Disk § ïâ - ®è¨¡ª
|
||||
LD (HL),B
|
||||
|
||||
LD A,C
|
||||
OUT (SLOT3),A
|
||||
|
||||
LD A,B
|
||||
AND A
|
||||
POP HL
|
||||
RET
|
||||
;
|
||||
BLK_BUSY:
|
||||
LD A,C
|
||||
OUT (SLOT3),A
|
||||
SCF
|
||||
POP HL
|
||||
LD A,L
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
;
|
||||
|
||||
|
||||
|
||||
;
|
||||
;----------------------------------------------------------------------;
|
||||
; RAM-Disk A
|
||||
RAMD_CLEAR:
|
||||
CP SYS_PAGE.RAMD_KEYS.NUM
|
||||
CCF
|
||||
RET C
|
||||
|
||||
PUSH HL
|
||||
LD L,A
|
||||
|
||||
IN A,(SLOT3)
|
||||
LD C,A
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
LD A,L
|
||||
LD HL,SYS_PAGE.RAMD_KEYS; - #4000 - #4000 ; RAM-Disk ᢮¡®¤¥
|
||||
ADD A,L
|
||||
LD L,A
|
||||
LD B,A ; § ¯®¬¨âì 㤠«ï¥¬ë© à ¬¤¨áª
|
||||
LD A,(HL)
|
||||
AND A
|
||||
JR Z,BLK_BUSY ; ¢®§¢à â á ®è¨¡ª®©
|
||||
LD (HL),0
|
||||
LD A,C
|
||||
OUT (SLOT3),A
|
||||
|
||||
AND A
|
||||
POP HL
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
;
|
||||
|
||||
|
||||
|
||||
;
|
||||
;----------------------------------------------------------------------;
|
||||
; à §¤¥«¨âì ¡«®ª ¯ ¬ï⨠¤¢ ¡«®ª
|
||||
; A - ¡«®ª, B - ¤«¨ ¯¥à¢®£® ¡«®ª ¯®á«¥ à §¤¥«¥¨ï
|
||||
; ¢ë室: A - ¡«®ª 1, B - ¡«®ª 2
|
||||
EMM.DivMemBlocks:
|
||||
INC B
|
||||
DEC B
|
||||
SCF
|
||||
RET Z
|
||||
DEC B
|
||||
LD E,A
|
||||
CALL EMM.GetMemPage ; ¯®«ãç¨âì ®¬¥à áâà ¨æë ¡«®ª
|
||||
RET C
|
||||
LD D,A
|
||||
|
||||
IN A,(SLOT3)
|
||||
EX AF,AF'
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
|
||||
LD H,high (SYS_PAGE.RAM_TABLE); - #4000 - #4000)
|
||||
LD L,D
|
||||
LD A,(HL)
|
||||
LD (HL),#FF
|
||||
LD B,A
|
||||
|
||||
EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
|
||||
LD A,E
|
||||
AND A
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
;
|
||||
|
||||
|
||||
|
||||
;
|
||||
;----------------------------------------------------------------------;
|
||||
; ᫨âì ¤¢ ¡«®ª ¯ ¬ï⨠¢ ®¤¨
|
||||
; € - ¡«®ª 1, B - ¡«®ª 2
|
||||
; ¢ë室: € - ¡«®ª
|
||||
EMM.MergeMemBlocks:
|
||||
LD E,A
|
||||
IN A,(SLOT3)
|
||||
EX AF,AF'
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
LD H,high (SYS_PAGE.RAM_TABLE); - #4000 - #4000)
|
||||
LD L,E
|
||||
LD C,B
|
||||
LD B,0
|
||||
.EMM_ADD_L:
|
||||
LD A,(HL)
|
||||
AND A
|
||||
JR Z,.EMM_ADD_ERR
|
||||
CP #FF
|
||||
JR Z,.EMM_ADD_NEXT
|
||||
LD L,A
|
||||
DJNZ .EMM_ADD_L
|
||||
|
||||
.EMM_ADD_ERR:
|
||||
EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
SCF
|
||||
RET
|
||||
|
||||
.EMM_ADD_NEXT:
|
||||
LD A,C
|
||||
AND A
|
||||
JR Z,.EMM_ADD_ERR
|
||||
LD (HL),A
|
||||
EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
AND A
|
||||
LD A,E
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
;
|
||||
@ -428,7 +428,7 @@ REINIT: DEC B
|
||||
;
|
||||
;----------------------------------------------------------------------;
|
||||
; ¥ ¤®«¦® ¯®àâ¨âì DE
|
||||
SET_ROM_FLAG_ZX:
|
||||
RES_FLAG_ZXvROM:
|
||||
EX AF,AF'
|
||||
IN A,(SLOT3)
|
||||
EX AF,AF'
|
||||
|
||||
@ -47,7 +47,7 @@ FN_VERSION:
|
||||
EX AF,AF'
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT2),A
|
||||
LD BC,(SYS_PAGE.CONFIG_BYTE-#4000) ; Version PLD ; !TODO ç¥à¥§ áâàãªâãàã ¤«ï ¯¥à¥¬¥ëå ¡¨®á
|
||||
LD BC,(SYS_PAGE.CONFIG_BYTE - #4000) ; Version PLD ; !TODO ç¥à¥§ áâàãªâãàã ¤«ï ¯¥à¥¬¥ëå ¡¨®á
|
||||
EX AF,AF'
|
||||
OUT (SLOT2),A
|
||||
LD A,ID_SPRINTER.Records_Num ; —¨á«® ¯®«¥©
|
||||
@ -183,6 +183,12 @@ EMM.FullInit:
|
||||
OUT (SLOT2),A
|
||||
INIT_SYS_ALL:
|
||||
DI
|
||||
; LD HL,#8000
|
||||
; LD DE,#8001
|
||||
; LD (HL),0
|
||||
; LD BC,#3FFF
|
||||
; LDIR
|
||||
;
|
||||
; LD HL,ID_SPRINTER_FullSize
|
||||
; LD DE,SYS_PAGE.ID_FLAG - #4000
|
||||
; LD C,(HL)
|
||||
@ -199,7 +205,7 @@ INIT_SYS_ALL:
|
||||
;
|
||||
|
||||
;!TODO çâ® § ¯¥à¥¬¥ë¥?
|
||||
LD HL,SYS_PAGE.DISK_TYPE-#4000
|
||||
LD HL,SYS_PAGE.DISK_TYPE - #4000
|
||||
LD (HL),DRIVE_CODES.TRDOS.FDD ; FDD A
|
||||
INC HL
|
||||
LD (HL),DRIVE_CODES.TRDOS.FDD + 1 ; FDD B
|
||||
@ -217,28 +223,28 @@ INIT_SYS_ALL:
|
||||
LD (HL),0 ; SYS_PAGE.COPY_SLOT3
|
||||
|
||||
LD A,9
|
||||
LD (SYS_PAGE.MSD_SECS-#4000),A
|
||||
LD (SYS_PAGE.MSD_SECS - #4000),A
|
||||
XOR A
|
||||
LD (SYS_PAGE.DS_1440-#4000),A
|
||||
LD (SYS_PAGE.DS_1440 - #4000),A
|
||||
|
||||
LD HL,SYS_PAGE.RAMD_KEYS-#4000
|
||||
LD DE,SYS_PAGE.RAMD_KEYS+1-#4000
|
||||
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] 04/11/2023
|
||||
LD HL,SYS_PAGE.Sp_RAMD_KEYS-#4000
|
||||
LD DE,SYS_PAGE.Sp_RAMD_KEYS+1-#4000
|
||||
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
|
||||
;
|
||||
; [x] 17/08/2024 fixed bug with change current RAM drives type
|
||||
XOR A
|
||||
LD (SYS_PAGE.CURRENT_RAM_DRV-#4000),A
|
||||
LD (SYS_PAGE.CURRENT_RAM_DRV - #4000),A
|
||||
;
|
||||
LD DE,ZG_ADDRESS ; ¤à¥á § ª®£¥¥à â®à
|
||||
LD (SYS_PAGE.WIN_ZG-#4000),DE
|
||||
LD (SYS_PAGE.WIN_ZG - #4000),DE
|
||||
;
|
||||
;-----------[new code start]------------; !!!!! ¯®á¬®âà¥âì-¯à¨ç¥á âì
|
||||
INIT_VSyncAndWaits:
|
||||
@ -248,7 +254,7 @@ INIT_VSyncAndWaits:
|
||||
jr nc,.cmos_OK
|
||||
; ¥á«¨ ¥â CMOS, â® áâ ¤ àâë¥ áâனª¨
|
||||
ld a,3
|
||||
ld (SYS_PAGE.VSyncAndWaits-#4000),A
|
||||
ld (SYS_PAGE.VSyncAndWaits - #4000),A
|
||||
jr z,INIT_CONFIG_ALL.setDefaultINT
|
||||
|
||||
.cmos_OK:
|
||||
@ -259,7 +265,7 @@ INIT_VSyncAndWaits:
|
||||
dec a ; 312 lines & no waits
|
||||
|
||||
.setVSyncAndWaits:
|
||||
ld (SYS_PAGE.VSyncAndWaits-#4000),A
|
||||
ld (SYS_PAGE.VSyncAndWaits - #4000),A
|
||||
|
||||
INIT_CONFIG_ALL:
|
||||
ld a,d
|
||||
@ -277,15 +283,15 @@ INIT_CONFIG_ALL:
|
||||
.setDefaultINT:
|
||||
LD HL,SCREEN_TABLES.PENTAGON ; set pentagon int
|
||||
.setINT:
|
||||
LD (SYS_PAGE.CONFIG_ALL-#4000),HL
|
||||
LD (SYS_PAGE.CONFIG_ALL - #4000),HL
|
||||
;------------[new code end]-------------
|
||||
;
|
||||
LD DE,CNF_PORT.CNF_0 + ROM.BIOS
|
||||
LD (SYS_PAGE.CONFIG_DE-#4000),DE
|
||||
LD (SYS_PAGE.CONFIG_DE - #4000),DE
|
||||
|
||||
LD HL,SYS_PAGE.CURRENT_TASK - #4000 ; 㡨âì ¢á¥ § ¤ ç¨
|
||||
LD DE,SYS_PAGE.CURRENT_TASK+1 - #4000
|
||||
LD BC,ZX_TASK_DATA * SYS_PAGE.CURRENT_TASK.Size - 1 ; #FF
|
||||
LD HL,SYS_PAGE.ZX_TASK.CURRENT - #4000 ; 㡨âì ¢á¥ § ¤ ç¨
|
||||
LD DE,SYS_PAGE.ZX_TASK.CURRENT+1 - #4000
|
||||
LD BC,_#ZX_TASK - 1
|
||||
LD (HL),0
|
||||
LDIR
|
||||
|
||||
|
||||
@ -9,10 +9,13 @@
|
||||
;
|
||||
; _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ [___FOR ZX-MODE___] _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ ;
|
||||
|
||||
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
; [ ] free zx pages!
|
||||
; ????? SYS_PAGE.SHARED_BUFFER_256b
|
||||
;
|
||||
; [ ] ‘âà ¨æ Ž‡“ ¤«ï ᪮௠¢ SLOT0 ¤®«¦ ᮢ¯ ¤ âì á ã«¥¢®© áâà ¨æ¥© ¯®àâ #7FFD
|
||||
IF FREE_ZX_PAGES
|
||||
MODULE MANAGE_ZX_PAGES
|
||||
;----------------[‚뤥«¥¨¥/®á¢®¡®¦¤¥¨¥ áâà ¨æ ᯥªâà㬠]-------------;
|
||||
;¢å®¤: ॣ B: 0 - ¨¨â ¯ ¬ï⨠Spectrum 48k
|
||||
; 1 - ¨¨â ¯ ¬ï⨠Pentagon 128k
|
||||
@ -22,17 +25,65 @@
|
||||
;
|
||||
;¢ë室: CF = 0: A - ®¬¥à à ¬¡«®ª
|
||||
; CF = 1: A - ®¬¥à ®è¨¡ª¨
|
||||
MANAGE_ZX_PAGES:
|
||||
FN_ENTRANCE:
|
||||
;-----------------------------------------------------------------------;
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------;
|
||||
;‚믮«ï¥âáï ¢á¥£¤ ¤«ï ¨¨â âàñå áâà ¨æ Ž‡“
|
||||
INIT_48k_MEM:
|
||||
|
||||
;-----------------------------------------------------------------------;
|
||||
|
||||
;-----------------------------------------------------------------------;
|
||||
INIT_SCORP_RAM:
|
||||
DI
|
||||
LD A,5
|
||||
OUT (SLOT1),A
|
||||
; #1FFD
|
||||
LD BC,#1FFD
|
||||
XOR A
|
||||
OUT (SLOT0),A
|
||||
OUT (C),A
|
||||
; #7FFD
|
||||
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
|
||||
;
|
||||
XOR A
|
||||
OUT (C),A
|
||||
; #1FFD
|
||||
LD B,#1F
|
||||
OUT (C),A
|
||||
;-----------------------------------------------------------------------;
|
||||
|
||||
|
||||
|
||||
.GET_SCORP: IN A,(SLOT3)
|
||||
;-----------------------------------------------------------------------;
|
||||
;‚室: ---
|
||||
;‚ë室: A - RAM block ID
|
||||
GET_SCORP_RAM: IN A,(SLOT3)
|
||||
LD E,A
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
; ¢ë¤¥«¨âì áâà ¨æë ᪮à¯
|
||||
XOR A
|
||||
LD BC,#08*256 + #FF ; B - ª®«¨ç¥á⢮ áâà ¨æ, C - Œ¥âª ª®æ à ¬¡«®ª
|
||||
LD BC,8*256 + #FF ; B - ª®«¨ç¥á⢮ áâà ¨æ, C - Œ¥âª ª®æ à ¬¡«®ª
|
||||
LD HL,SYS_PAGE.RAM_TABLE
|
||||
.allocate_loop: DEC L
|
||||
JR Z,.error_no_mem
|
||||
@ -74,68 +125,11 @@ MANAGE_ZX_PAGES:
|
||||
LD L,BIOS.Error.EMM.NoMemory
|
||||
SCF
|
||||
JR .exit
|
||||
|
||||
|
||||
/*
|
||||
;
|
||||
.GET_SCORP: IN A,(SLOT3)
|
||||
LD E,A
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
; ¯à®¢¥à¨âì «¨ç¨¥ ᢮¡®¤ëå áâà ¨æ ᪮à¯
|
||||
; B = ª®«¨ç¥á⢮ áâà ¨æ
|
||||
LD B,8
|
||||
XOR A
|
||||
.check_loop: DEC L
|
||||
JR Z,.error_no_mem
|
||||
CP (HL)
|
||||
JR NZ,.check_loop
|
||||
;
|
||||
CALL .check_barred_pages
|
||||
LD A,0
|
||||
JR Z,.check_loop
|
||||
DJNZ .check_loop
|
||||
; A = 0
|
||||
; ¢ë¤¥«¨âì áâà ¨æë ᪮à¯
|
||||
LD B,8
|
||||
.allocate_loop: DEC L
|
||||
CP (HL)
|
||||
JR NZ,.allocate_loop
|
||||
;
|
||||
CALL .check_barred_pages
|
||||
LD A,0
|
||||
JR Z,.allocate_loop
|
||||
;
|
||||
LD (HL),C
|
||||
LD C,L
|
||||
DJNZ .allocate_loop
|
||||
; L = 㪠§ â¥«ì æ¥¯®çª¨.
|
||||
AND A
|
||||
.exit: LD A,E
|
||||
OUT (SLOT3),A
|
||||
LD A,L
|
||||
RET
|
||||
; 䨫ìâà ¤«ï áâà ¨æ ᪮à¯
|
||||
;¢ë室: ZF=1 - áâà ¨æ ¥ ¯®¤å®¤¨â
|
||||
.check_barred_pages:
|
||||
; check reset page
|
||||
LD A,L
|
||||
CP RESET_PAGE
|
||||
RET C
|
||||
RET Z
|
||||
; check isa page
|
||||
AND #F0
|
||||
XOR #D0 ; áâà ¨æë ISA #D0..#DF
|
||||
RET NZ
|
||||
LD L,#D0
|
||||
RET
|
||||
;
|
||||
.error_no_mem: LD L,BIOS.Error.EMM.NoMemory
|
||||
SCF
|
||||
JR .exit
|
||||
*/
|
||||
;-----------------------------------------------------------------------;
|
||||
ENDMODULE
|
||||
ENDIF
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------;
|
||||
|
||||
@ -131,49 +131,49 @@ TASK_SWITCH:
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
|
||||
LD IX,SYS_PAGE.CURRENT_TASK ; ¤ ë¥ § ¤ ç
|
||||
LD IX,SYS_PAGE.ZX_TASK.CURRENT ; ¤ ë¥ § ¤ ç
|
||||
; !TEST
|
||||
;LD E,(IX)
|
||||
;LD D,0
|
||||
;ADD IX,DE
|
||||
;LD E,SYS_PAGE.CURRENT_TASK.Size
|
||||
;ADD IX,DE
|
||||
LD A,SYS_PAGE.CURRENT_TASK.Size ; ᬥ饨¥ ¤ ëå ¢ â ¡«¨æ¥ § ¤ ç
|
||||
LD A,_#ZX_TASK_DATA ; ᬥ饨¥ ¤ ëå ¢ â ¡«¨æ¥ § ¤ ç
|
||||
ADD A,(IX) ; ᬥ饨¥ ¤ ëå ⥪ã饩 § ¤ ç¨
|
||||
LD E,A
|
||||
LD D,0
|
||||
ADD IX,DE ; ¤ ë¥ â¥ªã饩 § ¤ ç¨
|
||||
;
|
||||
LD (IX + ZX_TASK_DATA.SLOT3_PAGE),B ; á®åà ¨âì áâà ¨æã 3
|
||||
LD (IX + _#ZX_TASK_DATA.SLOT3_PAGE),B ; á®åà ¨âì áâà ¨æã 3
|
||||
LD HL,0
|
||||
ADD HL,SP
|
||||
LD (IX + ZX_TASK_DATA.SP),L ; á®åà ¨âì á⥪ § ¤ ç¨
|
||||
LD (IX + ZX_TASK_DATA.SP + 1),H
|
||||
SET 0,(IX + ZX_TASK_DATA.STATE) ; ãáâ ®¢¨âì ä« £ á®åà ¥®á⨠⥪ã饩 § ¤ ç¨
|
||||
RES 1,(IX + ZX_TASK_DATA.STATE) ; ãáâ ®¢¨âì ä« £, çâ® § ¤ ç ¯®ª¨ãâ
|
||||
LD (IX + _#ZX_TASK_DATA.SP),L ; á®åà ¨âì á⥪ § ¤ ç¨
|
||||
LD (IX + _#ZX_TASK_DATA.SP + 1),H
|
||||
SET 0,(IX + _#ZX_TASK_DATA.STATE) ; ãáâ ®¢¨âì ä« £ á®åà ¥®á⨠⥪ã饩 § ¤ ç¨
|
||||
RES 1,(IX + _#ZX_TASK_DATA.STATE) ; ãáâ ®¢¨âì ä« £, çâ® § ¤ ç ¯®ª¨ãâ
|
||||
|
||||
LD IX,SYS_PAGE.CURRENT_TASK
|
||||
LD IX,SYS_PAGE.ZX_TASK.CURRENT
|
||||
; !TEST
|
||||
;LD E,C
|
||||
;LD D,0
|
||||
;ADD IX,DE ; ®¢ ï § ¤ ç
|
||||
;LD E,16
|
||||
LD A,SYS_PAGE.CURRENT_TASK.Size ; ᬥ饨¥ ¤ ëå ¢ â ¡«¨æ¥ § ¤ ç
|
||||
LD A,_#ZX_TASK_DATA ; ᬥ饨¥ ¤ ëå ¢ â ¡«¨æ¥ § ¤ ç
|
||||
ADD A,C ; ᬥ饨¥ ¤ ëå ®¢®© § ¤ ç¨
|
||||
LD E,A
|
||||
LD D,0
|
||||
;
|
||||
ADD IX,DE ; ¤ ë¥ ®¢®© § ¤ ç¨
|
||||
|
||||
BIT 1,(IX + ZX_TASK_DATA.STATE)
|
||||
; BIT 1,(IX + _#ZX_TASK_DATA.STATE)
|
||||
; JR NZ,TASK_IN_WORK ; § ¤ ç ¢ à ¡®â¥ ??? ¥¢¥à®¥ § ¢¥à襨¥
|
||||
; ; á¡à áë¢ âì ¨«¨ ¯à®áâ® ¢®§¢à é âìáï
|
||||
|
||||
BIT 0,(IX + ZX_TASK_DATA.STATE) ; ¡ë« á®åà ¥ /¥â
|
||||
BIT 0,(IX + _#ZX_TASK_DATA.STATE) ; ¡ë« á®åà ¥ /¥â
|
||||
JR NZ,TASK_SET ; § ¤ ç áãé¥áâ¢ã¥â
|
||||
|
||||
; § ¤ ç¨ ¥ ¡ë«®!
|
||||
LD IX,SYS_PAGE.CURRENT_TASK
|
||||
LD IX,SYS_PAGE.ZX_TASK.CURRENT
|
||||
LD A,C ; § ¤ ç
|
||||
LD (IX),A ; ãáâ ®¢¨âì ®¢ãî § ¤ çã ⥪ã饩
|
||||
|
||||
@ -191,7 +191,7 @@ TASK_RESTORE:
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
LD A,C
|
||||
LD IX,SYS_PAGE.CURRENT_TASK
|
||||
LD IX,SYS_PAGE.ZX_TASK.CURRENT
|
||||
LD (IX),A ; ãáâ ®¢¨âì ®¢ãî § ¤ çã ⥪ã饩
|
||||
|
||||
; !TEST
|
||||
@ -199,16 +199,16 @@ TASK_RESTORE:
|
||||
;LD D,0
|
||||
;ADD IX,DE ; ®¢ ï § ¤ ç
|
||||
;LD E,16
|
||||
ADD A,SYS_PAGE.CURRENT_TASK.Size ; ᬥ饨¥ ¤ ëå ¢ â ¡«¨æ¥ § ¤ ç
|
||||
ADD A,_#ZX_TASK_DATA ; ᬥ饨¥ ¤ ëå ¢ â ¡«¨æ¥ § ¤ ç
|
||||
LD E,A
|
||||
LD D,0
|
||||
;
|
||||
ADD IX,DE
|
||||
|
||||
LD L,(IX + ZX_TASK_DATA.SP) ; ¢á¯®¬¨âì á⥪
|
||||
LD H,(IX + ZX_TASK_DATA.SP + 1)
|
||||
LD L,(IX + _#ZX_TASK_DATA.SP) ; ¢á¯®¬¨âì á⥪
|
||||
LD H,(IX + _#ZX_TASK_DATA.SP + 1)
|
||||
LD SP,HL
|
||||
LD A,(IX + ZX_TASK_DATA.SLOT3_PAGE); ¢á¯®¬¨âì âà¥âìî áâà ¨æã
|
||||
LD A,(IX + _#ZX_TASK_DATA.SLOT3_PAGE); ¢á¯®¬¨âì âà¥âìî áâà ¨æã
|
||||
OUT (SLOT3),A
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user