...temp...

This commit is contained in:
Tolik 2024-08-24 00:33:34 +10:00
parent 8b94cc4e63
commit d80b79a832
8 changed files with 851 additions and 852 deletions

@ -1 +1 @@
Subproject commit 75ceae51d36476f236476681aac5c7619ca22005
Subproject commit e9d481a5565338505710b08e50d22a8579c400be

Binary file not shown.

View File

@ -717,9 +717,6 @@ POST_5_OK:
;
LD A,SYS_PAGE
OUT (SLOT3),A
;-----------------------------------------------------------------------;
;-----------------------------------------------------------------------;
MODULE SET_CONFIG_ID
;-------------[Save IX:IY]--------------

File diff suppressed because it is too large Load Diff

View File

@ -428,7 +428,7 @@ REINIT: DEC B
;
;----------------------------------------------------------------------;
; ­¥ ¤®«¦­® ¯®àâ¨âì DE
SET_ROM_FLAG_ZX:
RES_FLAG_ZXvROM:
EX AF,AF'
IN A,(SLOT3)
EX AF,AF'

View File

@ -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

View File

@ -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
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
;-----------------------------------------------------------------------;

View File

@ -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