This commit is contained in:
Tolik 2024-08-17 05:16:15 +10:00
parent 085ef3c332
commit b96578c2a0
6 changed files with 69 additions and 52 deletions

@ -1 +1 @@
Subproject commit 3ac606f87285e76a56c826ad33efdd26ada872f6
Subproject commit e73e9f8d4f4e72de4f6b54abaec159684fdcebe1

View File

@ -321,7 +321,7 @@ TAB_FNS:
DB high EMM.GetMemRMD
DB high EMM.FreeMemRMD
DB high EMM.GetMemPageRMD
DB high EMM.GetMemPageNext
DB high EMM.GetMemPageNext
DB high EMM.GetBanksPorts
DB high EMM.CheckColdInit
DB high RAMD_CALC_PAGE

View File

@ -36,6 +36,7 @@ DPAL2 EQU 5
; !!! NO USE STACK !!!
;
;*****************************************
;!TODO
; ¨­¨æ¨ «¨§ æ¨ï áâà ­¨æ zx spectrum
INIT_PAGES:
AND A
@ -126,7 +127,7 @@ INIT_VIDEO_REG:
; EX AF,AF'
; LD A,7 ; ᥤ쬠ï íªà ­­ ï áâà ­¨æ 
; LD A,7 ; ᥤ쬠ï íªà ­­ ï áâà ­¨æ 
; LD BC,#7FFD
; OUT (C),A

View File

@ -194,13 +194,12 @@ EMM.GetMemRMD:
CALL BLK_TO_RAMD
RET NC
.error2:
LD L,2 ; RAM-Disk § ­ïâ ;!TODO ¯¥à¥ç¨á«¨âì ¢á¥ ¢ à¨ ­âë ®è¨¡®ª ¨ ¨å ­®¬¥à  ª ª ¤«ï „‘‘
LD L,2 ; RAM-Disk § ­ïâ ;!HARDCODE error number ;!TODO ¯¥à¥ç¨á«¨âì ¢á¥ ¢ à¨ ­âë ®è¨¡®ª ¨ ¨å ­®¬¥à  ª ª ¤«ï „‘‘
LD A,L
RET
.error1:
POP HL ; 腮痰━ 痰オ
LD L,A
;SCF
RET
;----------------------------------------------------------------------;
;

View File

@ -279,9 +279,9 @@ INIT_CONFIG_ALL:
LD DE,CNF_PORT.CNF_0 + ROM.BIOS
LD (SYS_PAGE.CONFIG_DE-#4000),DE
LD HL,SYS_PAGE.TASK_DATA-#4000 ; 㡨âì ¢á¥ § ¤ ç¨
LD DE,SYS_PAGE.TASK_DATA+1-#4000
LD BC,#FF
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),0
LDIR

View File

@ -95,7 +95,7 @@ COMAND_ISD2:
CALL ISDOS
JP SW_ROM_1
;!TODO ¯¥à¥¤¥« âì ¯®¤ ¯¥à¥ª«î祭¨¥ ­  à §­ë¥ ᯥªâàã¬ë á § ¯ã饭­ë¬¨ § ¤ ç ¬¨
TASK_SWITCH:
; *** ‘®åà ­¨âì § ¤ çã ***
PUSH IY
@ -123,76 +123,93 @@ TASK_SWITCH:
RLCA
RLCA
RLCA
AND #30 ; ­®¢ ï § ¤ ç  0..3
AND #30 ; ­®¢ ï § ¤ ç  0..3
LD C,A
IN A,(SLOT3)
LD B,A ; 3-ï áâà ­¨æ  ⥪ã饩 § ¤ ç¨
LD B,A ; 3-ï áâà ­¨æ  ⥪ã饩 § ¤ ç¨
LD A,SYS_PAGE
OUT (SLOT3),A
LD IX,SYS_PAGE.TASK_DATA ; ¤ ­­ë¥ § ¤ ç
LD E,(IX) ; áâ à ï § ¤ ç 
LD D,0
ADD IX,DE ; ¤ ­­ë¥ ⥪ã饩 § ¤ ç¨
LD E,16
ADD IX,DE ; ᬥ饭¨¥ ¤ ­­ëå ¢ â ¡«¨æ¥ § ¤ ç
LD (IX+1),B ; á®åà ­¨âì áâà ­¨æã 3
LD IX,SYS_PAGE.CURRENT_TASK ; ¤ ­­ë¥ § ¤ ç
; !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 ; ᬥ饭¨¥ ¤ ­­ëå ¢ â ¡«¨æ¥ § ¤ ç
ADD A,(IX) ; ᬥ饭¨¥ ¤ ­­ëå ⥪ã饩 § ¤ ç¨
LD E,A
LD D,0
ADD IX,DE ; ¤ ­­ë¥ ⥪ã饩 § ¤ ç¨
;
LD (IX + ZX_TASK_DATA.SLOT3_PAGE),B ; á®åà ­¨âì áâà ­¨æã 3
LD HL,0
ADD HL,SP
LD (IX+2),L ; á®åà ­¨âì á⥪ § ¤ ç¨
LD (IX+3),H
SET 0,(IX) ; ãáâ ­®¢¨âì ä« £ á®åà ­¥­­®á⨠⥪ã饩 § ¤ ç¨
RES 1,(IX) ; ãáâ ­®¢¨âì ä« £, çâ® § ¤ ç  ¯®ª¨­ãâ 
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.TASK_DATA
LD E,C
LD D,0
ADD IX,DE ; ­®¢ ï § ¤ ç 
LD E,16
ADD IX,DE ; ᬥ饭¨¥ ¤ ­­ëå ¢ â ¡«¨æ¥ § ¤ ç
LD IX,SYS_PAGE.CURRENT_TASK
; !TEST
;LD E,C
;LD D,0
;ADD IX,DE ; ­®¢ ï § ¤ ç 
;LD E,16
LD A,SYS_PAGE.CURRENT_TASK.Size ; ᬥ饭¨¥ ¤ ­­ëå ¢ â ¡«¨æ¥ § ¤ ç
ADD A,C ; ᬥ饭¨¥ ¤ ­­ëå ­®¢®© § ¤ ç¨
LD E,A
LD D,0
;
ADD IX,DE ; ¤ ­­ë¥ ­®¢®© § ¤ ç¨
BIT 1,(IX)
; JR NZ,TASK_IN_WORK ; § ¤ ç  ¢ à ¡®â¥ ??? ­¥¢¥à­®¥ § ¢¥à襭¨¥
; á¡à á뢠âì ¨«¨ ¯à®áâ® ¢®§¢à é âìáï
BIT 1,(IX + ZX_TASK_DATA.STATE)
; JR NZ,TASK_IN_WORK ; § ¤ ç  ¢ à ¡®â¥ ??? ­¥¢¥à­®¥ § ¢¥à襭¨¥
; ; á¡à á뢠âì ¨«¨ ¯à®áâ® ¢®§¢à é âìáï
BIT 0,(IX) ; ¡ë«  á®åà ­¥­ /­¥â
JR NZ,TASK_SET ; § ¤ ç  áãé¥áâ¢ã¥â
BIT 0,(IX + ZX_TASK_DATA.STATE) ; ¡ë«  á®åà ­¥­ /­¥â
JR NZ,TASK_SET ; § ¤ ç  áãé¥áâ¢ã¥â
; § ¤ ç¨ ­¥ ¡ë«®!
LD IX,SYS_PAGE.TASK_DATA
LD A,C ; § ¤ ç 
LD (IX),A ; ãáâ ­®¢¨âì ­®¢ãî § ¤ çã ⥪ã饩
LD IX,SYS_PAGE.CURRENT_TASK
LD A,C ; § ¤ ç 
LD (IX),A ; ãáâ ­®¢¨âì ­®¢ãî § ¤ çã ⥪ã饩
JP SPECTRUM_TASK ; § ¯ãáâ¨âì ­®¢ãî § ¤ çã!
; ¨ ¯®ª  ¯®ä¨£ à á¯à¥¤¥«¥­¨¥ ¯ ¬ïâ¨!
JP SPECTRUM_TASK ; § ¯ãáâ¨âì ­®¢ãî § ¤ çã!
; ; ¨ ¯®ª  ¯®ä¨£ à á¯à¥¤¥«¥­¨¥ ¯ ¬ïâ¨!
TASK_SET:
LD IX,TASK_RESTORE
LD A,C
EXX
JP INIT_PAGES ; ¯¥à¥ª«îç¨âì ¢á¥ áâà ­¨æë!
JP INIT_PAGES ; ¯¥à¥ª«îç¨âì ¢á¥ áâà ­¨æë!
TASK_RESTORE:
EXX
LD A,SYS_PAGE
OUT (SLOT3),A
LD A,C
LD IX,SYS_PAGE.TASK_DATA
LD (IX),A ; ãáâ ­®¢¨âì ­®¢ãî § ¤ çã ⥪ã饩
LD IX,SYS_PAGE.CURRENT_TASK
LD (IX),A ; ãáâ ­®¢¨âì ­®¢ãî § ¤ çã ⥪ã饩
LD E,A
LD D,0
ADD IX,DE ; ­®¢ ï § ¤ ç 
LD E,16
ADD IX,DE
; !TEST
;LD E,A
;LD D,0
;ADD IX,DE ; ­®¢ ï § ¤ ç 
;LD E,16
ADD A,SYS_PAGE.CURRENT_TASK.Size ; ᬥ饭¨¥ ¤ ­­ëå ¢ â ¡«¨æ¥ § ¤ ç
LD E,A
LD D,0
;
ADD IX,DE
LD L,(IX+2) ; ¢á¯®¬­¨âì á⥪
LD H,(IX+3)
LD SP,HL
LD A,(IX+1) ; ¢á¯®¬­¨âì âà¥âìî áâà ­¨æã
OUT (SLOT3),A
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); ¢á¯®¬­¨âì âà¥âìî áâà ­¨æã
OUT (SLOT3),A
POP AF ; ¢®ááâ ­®¢¨âì