...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
|
LD A,SYS_PAGE
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
;-----------------------------------------------------------------------;
|
|
||||||
|
|
||||||
|
|
||||||
;-----------------------------------------------------------------------;
|
;-----------------------------------------------------------------------;
|
||||||
MODULE SET_CONFIG_ID
|
MODULE SET_CONFIG_ID
|
||||||
;-------------[Save IX:IY]--------------
|
;-------------[Save IX:IY]--------------
|
||||||
|
|||||||
@ -49,8 +49,7 @@ EMM.GetMemSize: IN A,(SLOT1)
|
|||||||
;
|
;
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
; ˆ¨æ¨ «¨§ æ¨ï à á¯à¥¤¥«¥¨ï ¯ ¬ïâ¨.
|
; ˆ¨æ¨ «¨§ æ¨ï à á¯à¥¤¥«¥¨ï ¯ ¬ïâ¨.
|
||||||
EMM.InitMem:
|
EMM.InitMem: PUSH BC
|
||||||
PUSH BC
|
|
||||||
PUSH HL
|
PUSH HL
|
||||||
PUSH DE
|
PUSH DE
|
||||||
|
|
||||||
@ -236,21 +235,20 @@ EMM.GetMem: PUSH BC
|
|||||||
; ‚ë室: L,A - Š‹ž— RAM-Disk/ª®¤ ®è¨¡ª¨
|
; ‚ë室: L,A - Š‹ž— RAM-Disk/ª®¤ ®è¨¡ª¨
|
||||||
; CF - ¯à¨§ ª ®è¨¡ª¨
|
; CF - ¯à¨§ ª ®è¨¡ª¨
|
||||||
;EMM.GetMem:
|
;EMM.GetMem:
|
||||||
EMM.GetMemRMD:
|
EMM.GetMemRMD: PUSH AF
|
||||||
PUSH AF
|
|
||||||
CALL EMM.GetMem
|
CALL EMM.GetMem
|
||||||
JR C,.error1
|
JR C,.error1
|
||||||
|
;
|
||||||
LD B,A
|
LD B,A
|
||||||
POP AF
|
POP AF
|
||||||
CALL BLK_TO_RAMD
|
CALL BLK_TO_RAMD
|
||||||
RET NC
|
RET NC
|
||||||
.error2:
|
;
|
||||||
LD L,BIOS.Error.BadNumber ; RAM-Disk § ïâ
|
.error2: LD L,BIOS.Error.BadNumber ; RAM-Disk § ïâ
|
||||||
LD A,L
|
LD A,L
|
||||||
RET
|
RET
|
||||||
.error1:
|
;
|
||||||
POP HL ; ç¨á⨬ á⥪
|
.error1: POP HL ; ç¨á⨬ á⥪
|
||||||
LD L,A
|
LD L,A
|
||||||
RET
|
RET
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
@ -261,8 +259,7 @@ EMM.GetMemRMD:
|
|||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
; Žá¢®¡®¤¨âì ¡«®ª ¯ ¬ï⨠ª«îç K
|
; Žá¢®¡®¤¨âì ¡«®ª ¯ ¬ï⨠ª«îç K
|
||||||
; ‚室: A - Š‹ž— RAM-Disk
|
; ‚室: A - Š‹ž— RAM-Disk
|
||||||
EMM.FreeMemRMD:
|
EMM.FreeMemRMD: CALL GET_RAMD_ST
|
||||||
CALL GET_RAMD_ST
|
|
||||||
RET C
|
RET C
|
||||||
SCF
|
SCF
|
||||||
RET Z
|
RET Z
|
||||||
@ -271,7 +268,7 @@ EMM.FreeMemRMD:
|
|||||||
LD B,A
|
LD B,A
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
LD H,high SYS_PAGE.RAMD_KEYS; - #4000 - #4000
|
LD H,high SYS_PAGE.RAMD_KEYS
|
||||||
LD (HL),0
|
LD (HL),0
|
||||||
LD A,B
|
LD A,B
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
@ -282,8 +279,7 @@ EMM.FreeMemRMD:
|
|||||||
; ‚室: A - <20>€—€‹Ž –…<E28093>Ž—Šˆ
|
; ‚室: A - <20>€—€‹Ž –…<E28093>Ž—Šˆ
|
||||||
; <20>… <20>Ž<EFBFBD>’ˆ’œ DE!!!
|
; <20>… <20>Ž<EFBFBD>’ˆ’œ DE!!!
|
||||||
;EMM_FN3M:
|
;EMM_FN3M:
|
||||||
EMM.FreeMem:
|
EMM.FreeMem: ; [ ] free zx pages! ⥯¥àì ¥«ì§ï ®á¢®¡®¤¨âì áâà ¨æã #FF
|
||||||
; [ ] free zx pages! ⥯¥àì ¥«ì§ï ®á¢®¡®¤¨âì áâà ¨æã #FF
|
|
||||||
SCF
|
SCF
|
||||||
INC A
|
INC A
|
||||||
RET Z
|
RET Z
|
||||||
@ -293,33 +289,40 @@ EMM.FreeMem:
|
|||||||
;
|
;
|
||||||
RET Z
|
RET Z
|
||||||
;
|
;
|
||||||
LD L,A
|
LD C,A
|
||||||
CP ZX_RAM_ID ;!FIXIT ; [ ] free zx pages!
|
CP ZX_RAM_ID ;!FIXIT ; [ ] free zx pages!
|
||||||
CALL Z,SET_ROM_FLAG_ZX
|
CALL Z,RES_FLAG_ZXvROM
|
||||||
;
|
;
|
||||||
IN A,(SLOT3)
|
IN A,(SLOT3)
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
|
|
||||||
LD H,high (SYS_PAGE.RAM_TABLE)
|
LD H,high SYS_PAGE.RAM_TABLE
|
||||||
LD A,L
|
LD A,C
|
||||||
EMM_F3M_L1:
|
.loop: LD L,A
|
||||||
LD L,A
|
|
||||||
LD A,(HL) ; á«¥¤ãî騩 ¡«®ª
|
LD A,(HL) ; á«¥¤ãî騩 ¡«®ª
|
||||||
AND A
|
AND A
|
||||||
JR Z,EMM_FN3M_ERR
|
JR Z,.error
|
||||||
LD (HL),0 ; Žá¢®¡®¤¨âì
|
LD (HL),0 ; Žá¢®¡®¤¨âì
|
||||||
CP #FF ; …᫨ ¥ ª®¥æ
|
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
|
OUT (SLOT3),A
|
||||||
XOR A ; no error code
|
XOR A ; no error code
|
||||||
RET
|
RET
|
||||||
|
|
||||||
EMM_FN3M_ERR:
|
.error: EX AF,AF'
|
||||||
EX AF,AF'
|
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
LD A,BIOS.Error.BadNumber
|
LD A,BIOS.Error.BadNumber
|
||||||
SCF
|
SCF
|
||||||
@ -474,7 +477,7 @@ EMM.GetMemBlkPages:
|
|||||||
; CP #FF
|
; CP #FF
|
||||||
; JR Z,.end
|
; JR Z,.end
|
||||||
; ;
|
; ;
|
||||||
; LD H,high (SYS_PAGE.RAM_TABLE - #4000 - #4000)
|
; LD H,high +(SYS_PAGE.RAM_TABLE - #4000 - #4000)
|
||||||
; LD L,(HL)
|
; LD L,(HL)
|
||||||
; INC B
|
; INC B
|
||||||
; JR NZ,.loop
|
; 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
|
;----------------------------------------------------------------------; !FIXIT SAFE_RGADR
|
||||||
;RAMD_R_W:
|
;RAMD_R_W:
|
||||||
@ -573,7 +882,7 @@ BLK_RD_WR:
|
|||||||
OUT (SLOT1),A
|
OUT (SLOT1),A
|
||||||
LD A,H
|
LD A,H
|
||||||
|
|
||||||
LD H,high (SYS_PAGE.RAM_TABLE - #4000 - #4000)
|
LD H,high +(SYS_PAGE.RAM_TABLE-#4000-#4000)
|
||||||
LD L,A
|
LD L,A
|
||||||
|
|
||||||
INC D
|
INC D
|
||||||
@ -657,7 +966,7 @@ BLK_RD_WR:
|
|||||||
|
|
||||||
IN A,(SLOT1)
|
IN A,(SLOT1)
|
||||||
LD E,A
|
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
|
LD A,SYS_PAGE
|
||||||
OUT (SLOT1),A
|
OUT (SLOT1),A
|
||||||
LD A,(DE)
|
LD A,(DE)
|
||||||
@ -871,310 +1180,3 @@ ROM_DISK:
|
|||||||
.readProcedure.size EQU $-.readProcedure
|
.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
|
; ¥ ¤®«¦® ¯®àâ¨âì DE
|
||||||
SET_ROM_FLAG_ZX:
|
RES_FLAG_ZXvROM:
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
IN A,(SLOT3)
|
IN A,(SLOT3)
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
|
|||||||
@ -183,6 +183,12 @@ EMM.FullInit:
|
|||||||
OUT (SLOT2),A
|
OUT (SLOT2),A
|
||||||
INIT_SYS_ALL:
|
INIT_SYS_ALL:
|
||||||
DI
|
DI
|
||||||
|
; LD HL,#8000
|
||||||
|
; LD DE,#8001
|
||||||
|
; LD (HL),0
|
||||||
|
; LD BC,#3FFF
|
||||||
|
; LDIR
|
||||||
|
;
|
||||||
; LD HL,ID_SPRINTER_FullSize
|
; LD HL,ID_SPRINTER_FullSize
|
||||||
; LD DE,SYS_PAGE.ID_FLAG - #4000
|
; LD DE,SYS_PAGE.ID_FLAG - #4000
|
||||||
; LD C,(HL)
|
; LD C,(HL)
|
||||||
@ -283,9 +289,9 @@ INIT_CONFIG_ALL:
|
|||||||
LD DE,CNF_PORT.CNF_0 + ROM.BIOS
|
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 HL,SYS_PAGE.ZX_TASK.CURRENT - #4000 ; 㡨âì ¢á¥ § ¤ ç¨
|
||||||
LD DE,SYS_PAGE.CURRENT_TASK+1 - #4000
|
LD DE,SYS_PAGE.ZX_TASK.CURRENT+1 - #4000
|
||||||
LD BC,ZX_TASK_DATA * SYS_PAGE.CURRENT_TASK.Size - 1 ; #FF
|
LD BC,_#ZX_TASK - 1
|
||||||
LD (HL),0
|
LD (HL),0
|
||||||
LDIR
|
LDIR
|
||||||
|
|
||||||
|
|||||||
@ -9,10 +9,13 @@
|
|||||||
;
|
;
|
||||||
; _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ [___FOR ZX-MODE___] _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ ;
|
; _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ [___FOR ZX-MODE___] _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ ;
|
||||||
|
|
||||||
|
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||||
; [ ] free zx pages!
|
; [ ] free zx pages!
|
||||||
; ????? SYS_PAGE.SHARED_BUFFER_256b
|
; ????? SYS_PAGE.SHARED_BUFFER_256b
|
||||||
|
;
|
||||||
|
; [ ] ‘âà ¨æ Ž‡“ ¤«ï ᪮௠¢ SLOT0 ¤®«¦ ᮢ¯ ¤ âì á ã«¥¢®© áâà ¨æ¥© ¯®àâ #7FFD
|
||||||
IF FREE_ZX_PAGES
|
IF FREE_ZX_PAGES
|
||||||
|
MODULE MANAGE_ZX_PAGES
|
||||||
;----------------[‚뤥«¥¨¥/®á¢®¡®¦¤¥¨¥ áâà ¨æ ᯥªâà㬠]-------------;
|
;----------------[‚뤥«¥¨¥/®á¢®¡®¦¤¥¨¥ áâà ¨æ ᯥªâà㬠]-------------;
|
||||||
;¢å®¤: ॣ B: 0 - ¨¨â ¯ ¬ï⨠Spectrum 48k
|
;¢å®¤: ॣ B: 0 - ¨¨â ¯ ¬ï⨠Spectrum 48k
|
||||||
; 1 - ¨¨â ¯ ¬ï⨠Pentagon 128k
|
; 1 - ¨¨â ¯ ¬ï⨠Pentagon 128k
|
||||||
@ -22,17 +25,65 @@
|
|||||||
;
|
;
|
||||||
;¢ë室: CF = 0: A - ®¬¥à à ¬¡«®ª
|
;¢ë室: CF = 0: A - ®¬¥à à ¬¡«®ª
|
||||||
; CF = 1: 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 E,A
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
; ¢ë¤¥«¨âì áâà ¨æë ᪮à¯
|
; ¢ë¤¥«¨âì áâà ¨æë ᪮à¯
|
||||||
XOR A
|
XOR A
|
||||||
LD BC,#08*256 + #FF ; B - ª®«¨ç¥á⢮ áâà ¨æ, C - Œ¥âª ª®æ à ¬¡«®ª
|
LD BC,8*256 + #FF ; B - ª®«¨ç¥á⢮ áâà ¨æ, C - Œ¥âª ª®æ à ¬¡«®ª
|
||||||
LD HL,SYS_PAGE.RAM_TABLE
|
LD HL,SYS_PAGE.RAM_TABLE
|
||||||
.allocate_loop: DEC L
|
.allocate_loop: DEC L
|
||||||
JR Z,.error_no_mem
|
JR Z,.error_no_mem
|
||||||
@ -74,68 +125,11 @@ MANAGE_ZX_PAGES:
|
|||||||
LD L,BIOS.Error.EMM.NoMemory
|
LD L,BIOS.Error.EMM.NoMemory
|
||||||
SCF
|
SCF
|
||||||
JR .exit
|
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
|
ENDIF
|
||||||
|
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;-----------------------------------------------------------------------;
|
;-----------------------------------------------------------------------;
|
||||||
|
|||||||
@ -131,49 +131,49 @@ TASK_SWITCH:
|
|||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
|
|
||||||
LD IX,SYS_PAGE.CURRENT_TASK ; ¤ ë¥ § ¤ ç
|
LD IX,SYS_PAGE.ZX_TASK.CURRENT ; ¤ ë¥ § ¤ ç
|
||||||
; !TEST
|
; !TEST
|
||||||
;LD E,(IX)
|
;LD E,(IX)
|
||||||
;LD D,0
|
;LD D,0
|
||||||
;ADD IX,DE
|
;ADD IX,DE
|
||||||
;LD E,SYS_PAGE.CURRENT_TASK.Size
|
;LD E,SYS_PAGE.CURRENT_TASK.Size
|
||||||
;ADD IX,DE
|
;ADD IX,DE
|
||||||
LD A,SYS_PAGE.CURRENT_TASK.Size ; ᬥ饨¥ ¤ ëå ¢ â ¡«¨æ¥ § ¤ ç
|
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.CURRENT_TASK
|
LD IX,SYS_PAGE.ZX_TASK.CURRENT
|
||||||
; !TEST
|
; !TEST
|
||||||
;LD E,C
|
;LD E,C
|
||||||
;LD D,0
|
;LD D,0
|
||||||
;ADD IX,DE ; ®¢ ï § ¤ ç
|
;ADD IX,DE ; ®¢ ï § ¤ ç
|
||||||
;LD E,16
|
;LD E,16
|
||||||
LD A,SYS_PAGE.CURRENT_TASK.Size ; ᬥ饨¥ ¤ ëå ¢ â ¡«¨æ¥ § ¤ ç
|
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 ; § ¤ ç áãé¥áâ¢ã¥â
|
||||||
|
|
||||||
; § ¤ ç¨ ¥ ¡ë«®!
|
; § ¤ ç¨ ¥ ¡ë«®!
|
||||||
LD IX,SYS_PAGE.CURRENT_TASK
|
LD IX,SYS_PAGE.ZX_TASK.CURRENT
|
||||||
LD A,C ; § ¤ ç
|
LD A,C ; § ¤ ç
|
||||||
LD (IX),A ; ãáâ ®¢¨âì ®¢ãî § ¤ çã ⥪ã饩
|
LD (IX),A ; ãáâ ®¢¨âì ®¢ãî § ¤ çã ⥪ã饩
|
||||||
|
|
||||||
@ -191,7 +191,7 @@ TASK_RESTORE:
|
|||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
LD A,C
|
LD A,C
|
||||||
LD IX,SYS_PAGE.CURRENT_TASK
|
LD IX,SYS_PAGE.ZX_TASK.CURRENT
|
||||||
LD (IX),A ; ãáâ ®¢¨âì ®¢ãî § ¤ çã ⥪ã饩
|
LD (IX),A ; ãáâ ®¢¨âì ®¢ãî § ¤ çã ⥪ã饩
|
||||||
|
|
||||||
; !TEST
|
; !TEST
|
||||||
@ -199,16 +199,16 @@ TASK_RESTORE:
|
|||||||
;LD D,0
|
;LD D,0
|
||||||
;ADD IX,DE ; ®¢ ï § ¤ ç
|
;ADD IX,DE ; ®¢ ï § ¤ ç
|
||||||
;LD E,16
|
;LD E,16
|
||||||
ADD A,SYS_PAGE.CURRENT_TASK.Size ; ᬥ饨¥ ¤ ëå ¢ â ¡«¨æ¥ § ¤ ç
|
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
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user