This commit is contained in:
Tolik 2024-10-06 20:07:18 +10:00
parent 934353b970
commit 421eee63a9
9 changed files with 327 additions and 370 deletions

@ -1 +1 @@
Subproject commit 817bba0c1abebdb890f77ee129578ebe06fb5131
Subproject commit 7e00c2aa909241367878004ad104b56abb907f80

View File

@ -229,7 +229,7 @@ TAB_FNS:
DB low RST_CONF.SP97_1 ; #F0 ¤«ï ᮢ¬¥á⨬®á⨠á á®ä⮬ Sp97
DB low RST_CONF.SP97_2 ; #F1 ¤«ï ᮢ¬¥á⨬®á⨠á á®ä⮬ Sp97
DB low FN_SYNC ; #F2 ãáâ ­®¢ª  ᨭåà®­¨§ æ¨¨
DB low RST_CONF.CUSTOM ; #F3 ¤«ï ᮢ¬¥á⨬®á⨠á á®ä⮬ Sp97
DB low RST_CONF.CUSTOM ; #F3 ¤«ï ᮢ¬¥á⨬®á⨠á á®ä⮬ Sp97
DB low DCP_CONFIG ; #F4 äã­ªæ¨ï à á¯à¥¤¥«¥­¨ï ¯®à⮢ ; [x]
DB low CMOS_TEST ; #F5
DB low CMOS_RD ; #F6

View File

@ -1122,9 +1122,9 @@ ZG_ADDRESS: INCLUDE 'FONT.ASM'
;*************************
_mInfoBLOCK #3CE0-$,0
SW_ROM_1:
LD HL,#259F ;!HARDCODE Show Main Menu in BASIC-128
LD HL,#259F ;!HARDCODE BASIC_FN.x128.show_main_menu
PUSH HL
LD HL,#5B00 ;!HARDCODE
LD HL,#5B00 ;!HARDCODE BASIC_FN.x128.ROM_SWAP
LD A,(HL)
CP #F5 ; #F5 - ®¯ª®¤ 'PUSH AF'. <20>஢¥àï¥âáï â® «¨ ¢ #5B00
JR Z,JP_HL_48 ; އ<E280A1> Š Œ…<C592>ž BASIC128

View File

@ -54,8 +54,8 @@ RST_CONF:
;--[]
;--[]
.CUSTOM:
CP #80
.CUSTOM:
CP #80 ;!FIXIT âãâ ⥯¥àì ¬®¦¥â «î¡®¥ ç¨á«® ¡ëâì ã áâ àëå ¯à®£ ; [ ] free zx pages
JR NC,.CHOOSE_CNF
; only for old FLEX10K soft compatible
LD C,SLOT3
@ -95,6 +95,12 @@ RST_CONF:
;
;[x]
.CHOOSE_CNF:
; [ ] bug with "free zx pages"
LD C,A
IN A,(SLOT3)
CP C
LD A,C
JR Z,.INT_PLD
; [x]
CP ACEX.Config_PG.Sp2000_SoftSetUp
JP Z,.ReturnSoftReset

View File

@ -151,7 +151,7 @@ RET_FROM_BIOS_TO_BASIC48:
CALL CH_2
CALL COMAND_LINE ; <E2809A>Ž<C5BD><EFBFBD>ˆ… ŠŽŒ€<C592>, …‘‹ˆ …‘’œ
; ‚室 ¡¥§ ª®¬ ­¤ë
JP SW_ROM_1 ; އ<E280A1> << MAIN MENU >>
JP _SW_ROM_1 ; އ<E280A1> << MAIN MENU >>
INCLUDE 'ZX/ZX_FUNC.ASM'
INCLUDE 'ZX/ZX_MENU.ASM'
;-----------------------------------------------------------------------;
@ -245,21 +245,21 @@ BLOCK_Setup.Length EQU $-BLOCK_Setup
;*************************
_mInfoBLOCK #3CE0-$,#FF ;!TEST 0
;SW_ROM_1:
_SW_ROM_1 EQU SW_ROM_1
LD HL,#259F ;!HARDCODE Show Main Menu in BASIC-128
PUSH HL
LD HL,#5B00 ;!HARDCODE
LD A,(HL)
CP #F5 ; #F5 - ®¯ª®¤ 'PUSH AF'. <20>஢¥àï¥âáï ¢ #5B00
JR Z,JP_HL_48 ; އ<E280A1> Š Œ…<C592>ž BASIC128
JR Z,_JP_HL_48 ; އ<E280A1> Š Œ…<C592>ž BASIC128
POP HL
JR SW_ROM ; <20><>ŽŽ‰ އ<E280A1>
JR _SW_ROM_1 ; <20><>ŽŽ‰ އ<E280A1>
;*************************
_mInfoBLOCK #3CF0-$,#FF ;!TEST 0
;JMP_48:
; LD HL,00h
; JR JP_HL_48
; JR _JP_HL_48
;
; NOP
; NOP
@ -268,9 +268,9 @@ BLOCK_Setup.Length EQU $-BLOCK_Setup
;***************************************
_mInfoBLOCK #3CF8-$,#FF ;!TEST 0
; no basic-48!
;P_HL_48:
_JP_HL_48 EQU JP_HL_48
PUSH HL
;SW_ROM:
_SW_ROM EQU SW_ROM
PUSH AF
LD A,ROM.BIOS
OUT (SYS_PORT.RAM),A

View File

@ -827,7 +827,7 @@ ALT_BOOT:
;EI
CALL INT_ON
AGAKEY: CALL WAITKEY
StartUpKey: CALL WAITKEY
LD HL,#4F00 ; DEL - go to settings
;AND A
SBC HL,DE
@ -836,7 +836,7 @@ AGAKEY: CALL WAITKEY
CP #1B ; ESC - go to zx spectrum mode
JP Z,EXIT_SETUP
CP #0D ; ENTER - restart
JP NZ,AGAKEY
JP NZ,StartUpKey
XOR A
JP Start_again
@ -1755,7 +1755,6 @@ ZXMODE_SETUP: IN A,(SLOT3)
; JP MANAGE_ZX_PAGES.INIT_vROM
; XOR A ;LD A,SYS_PORT.BIOS
; OUT (SYS_PORT.ROM),A
XOR A
LD BC,128*256 + BIOS.ZX_MEMORY_MANAGER ; [ ] free zx pages! HARDCODE
JP ToBIOS_18
;RET

View File

@ -87,137 +87,6 @@ COMMAND_HARDWARE_MENU:
POP BC
CALL Hardware_Menu
JP SW_ROM_1
/*
;!TODO ¯¥à¥¤¥« âì ¯®¤ ¯¥à¥ª«î祭¨¥ ­  à §­ë¥ ᯥªâàã¬ë á § ¯ã饭­ë¬¨ § ¤ ç ¬¨
TASK_SWITCH:
; *** ‘®åà ­¨âì § ¤ çã ***
PUSH IY
PUSH IX
PUSH AF
PUSH BC
PUSH DE
PUSH HL
EXX
EX AF,AF'
PUSH AF
PUSH BC
PUSH DE
PUSH HL
LD A,R
PUSH AF
LD A,I
PUSH AF
LD A,(HL)
GET_ZX_TASK_DATA_OFFSET
LD C,A
IN A,(SLOT3)
LD B,A ; 3-ï áâà ­¨æ  ⥪ã饩 § ¤ ç¨
LD A,SYS_PAGE
OUT (SLOT3),A
LD IX,SYS_PAGE.ZX_TASK.CURRENT ; ¤ ­­ë¥ § ¤ ç
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 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,SYS_PAGE.ZX_TASK.CURRENT
LD A,_ZX_TASK_DATA ; ᬥ饭¨¥ ¤ ­­ëå ¢ â ¡«¨æ¥ § ¤ ç
ADD A,C ; ᬥ饭¨¥ ¤ ­­ëå ­®¢®© § ¤ ç¨
LD E,A
LD D,0
ADD IX,DE ; ¤ ­­ë¥ ­®¢®© § ¤ ç¨
; BIT 1,(IX + _ZX_TASK_DATA.STATE)
; JR NZ,TASK_IN_WORK ; § ¤ ç  ¢ à ¡®â¥ ??? ­¥¢¥à­®¥ § ¢¥à襭¨¥
; ; á¡à á뢠âì ¨«¨ ¯à®áâ® ¢®§¢à é âìáï
BIT 0,(IX + _ZX_TASK_DATA.STATE) ; ¡ë«  á®åà ­¥­ /­¥â
JR NZ,TASK_SET ; § ¤ ç  áãé¥áâ¢ã¥â
; § ¤ ç¨ ­¥ ¡ë«®!
LD IX,SYS_PAGE.ZX_TASK.CURRENT
LD A,C ; § ¤ ç 
LD (IX),A ; ãáâ ­®¢¨âì ­®¢ãî § ¤ çã ⥪ã饩
JP GOTO_SPEC.START_TASK ; § ¯ãáâ¨âì ­®¢ãî § ¤ çã!
; ; ¨ ¯®ª  ¯®ä¨£ à á¯à¥¤¥«¥­¨¥ ¯ ¬ïâ¨!
TASK_SET:
IF FREE_ZX_PAGES
LD IY,TASK_RESTORE
ELSE
LD IX,TASK_RESTORE
ENDIF
LD A,C
EXX
JP INIT_PAGES ; ¯¥à¥ª«îç¨âì ¢á¥ áâà ­¨æë!
TASK_RESTORE:
EXX
LD A,SYS_PAGE
OUT (SLOT3),A
LD A,C
LD IX,SYS_PAGE.ZX_TASK.CURRENT
LD (IX),A ; ãáâ ­®¢¨âì ­®¢ãî § ¤ çã ⥪ã饩
; !TEST
;LD E,A
;LD D,0
;ADD IX,DE ; ­®¢ ï § ¤ ç 
;LD E,16
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 SP,HL
LD A,(IX + _ZX_TASK_DATA.SLOT3_PAGE); ¢á¯®¬­¨âì âà¥âìî áâà ­¨æã
OUT (SLOT3),A
POP AF ; ¢®ááâ ­®¢¨âì
LD I,A
POP AF
LD R,A
POP HL
POP DE
POP BC
POP AF
EX AF,AF'
EXX
POP HL
POP DE
POP BC
POP AF
POP IX
POP IY
; ¢¥à­ãâìáï ¢ § ¤ çã
NO_TASK:
POP BC
JP SW_ROM_1
*/
; 259F - ADRESS BASIC128 - MAIN_MENU
;-----------------------------------------------------------------------;
@ -251,18 +120,11 @@ C_1601: ; OPEN CHANEL
; MANAGE_ZX_PAGES
;-----------------------------------------------------------------------;
;-------------------------------------------------------------------------------------------------------------------;
;!TODO ᤥ« âì ¢ë¡®à ¢ Setup, çâ® £à㧨âì ¢ v<>‡“ ¯à¨ áâ àâ¥. ‚ à¨ ­âë:
;[~] 0 - <20>¥ £à㧨âì <20>‡“ ᯥªâà㬠, ¨­¨â¨âì áâà ­¨æã #41 ª ª ¢ 3.04
;[~] 1 - ƒà㧨â <20>‡“ ᯥªâà㬠 ¨§ ROM ¯à¨ áâ à⥠¥á«¨ ­¥â ä« £  ZX
;[~] 2 - ƒà㧨â <20>‡“ ᯥªâà㬠 ¨§ ROM ¯à¨ ª ¦¤®¬ ¯¥à¥§ ¯ã᪥ (¬®¦¥â ¡ëâì ®¯ á­®)
;[ ] 3 - <20>¥ £à㧨âì <20>‡“ ᯥªâà㬠, ¨­¨â¨âì áâà ­¨æã #41 â ª, ç⮡ ª®¤ ¢ ­¥© ¯®¤£à㦠« <20>‡“ ᯥªâà㬠 ¯à¨ ®¡à é¥­¨¨
;‚ë¡®à ¢ Setup, çâ® £à㧨âì ¢ v<>‡“ ¯à¨ áâ àâ¥. ‚ à¨ ­âë:
;[x] 0 - <20>¥ £à㧨âì <20>‡“ ᯥªâà㬠, ¨­¨â¨âì áâà ­¨æã #41 ª ª ¢ 3.04
;[x] 1 - ƒà㧨â <20>‡“ ᯥªâà㬠 ¨§ ROM ¯à¨ áâ à⥠¥á«¨ ­¥â ä« £  ZX
;[x] 2 - ƒà㧨â <20>‡“ ᯥªâà㬠 ¨§ ROM ¯à¨ ª ¦¤®¬ ¯¥à¥§ ¯ã᪥ (¬®¦¥â ¡ëâì ®¯ á­®)
;-------------------------------------------------------------------------------------------------------------------;
; Spectrum RAM map
; SLOT0 = 0
; SLOT1 = 5
; SLOT2 = 2
; SLOT3 = 0 '48kb',1,2,3,4,5,6,7 '128kb',8,9,10,11,12,13,14,15 '256kb'
; ¤«ï ¢å®¤  ¢ ०¨¬ ᯥªâà㬠:
; 0. <20>஢¥àª  ¬¥âª¨ ZX
; 1. CONFIG_DE.CNF_PORT ’¨¯ â çª¨, ª ª ¨­¨â¨âì ¯ ¬ïâì, à §¬¥à އ“, âãà¡ 
@ -274,12 +136,6 @@ C_1601: ; OPEN CHANEL
; _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ [___FOR ZX-MODE___] _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ ;
ZX_MEMORY:
.MODE_48k EQU 3
.MODE_128k EQU 3+5
.MODE_256k EQU 3+13
.MODE_512k EQU 3+29
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
; [ ] free zx pages!
@ -410,13 +266,13 @@ INIT_vROM: LD A,(HL)
.PORTS: DB ACEX.vROM.BASIC_128 ; ROM-ID - BASIC 128
DB ACEX.vROM.BASIC_48 ; ROM-ID - BASIC 48
DB ACEX.vROM.TR_DOS ; ROM-ID - TR-DOS
DB ACEX.vROM.EXPANSION ; ROM-ID - EXPANSION
DB ACEX.vROM.BIOS_1 ; ROM-ID - BIOS-1
DB ACEX.vROM.BIOS_2 ; ROM-ID - BIOS-2
DB ACEX.vROM.ZX_EXPANSION ; ROM-ID - EXPANSION
DB ACEX.vROM.ZX_BIOS_1 ; ROM-ID - BIOS-1
DB ACEX.vROM.ZX_BIOS_2 ; ROM-ID - BIOS-2
DB ACEX.vROM.BASIC_128_2 ; BASIC 128 - 2
DB ACEX.vROM.BASIC_48_2 ; BASIC 48 - 2
DB ACEX.vROM.TR_DOS_2 ; TR-DOS - 2
DB ACEX.vROM.EXPANSION_2 ; BIOS (ZX_EXP) - 2
DB ACEX.vROM.ZX_EXPANSION_2; BIOS (ZX_EXP) - 2
.PORTS.Size EQU $-.PORTS
;-----------------------------------------------------------------------;
@ -435,30 +291,31 @@ INIT_vROM: LD A,(HL)
; 17..31 - § à¥§¥à¢¨à®¢ ­ë
; FN 2x ;!TODO
; 32 - § à¥§¥à¢¨à®¢ ­®
; 33 - ¢ë¤¥«¥­¨¥ ¯ ¬ï⨠Spectrum 48k ¨ ¨­¨â 2-å áâà ­¨æ vROM
; 33 - ¢ë¤¥«¥­¨¥ ¯ ¬ï⨠Spectrum 48k ¨ ¨­¨â 1-© áâà ­¨æ vROM
; 34 - ¢ë¤¥«¥­¨¥ ¯ ¬ï⨠Pentagon 128k ¨ ¨­¨â 3-å áâà ­¨æ vROM
; 35 - ¢ë¤¥«¥­¨¥ ¯ ¬ï⨠Pentagon 512k ¨ ¨­¨â 3-å áâà ­¨æ vROM
; 36 - ¢ë¤¥«¥­¨¥ ¯ ¬ï⨠Scorpion 256k ¨ ¨­¨â 3-å áâà ­¨æ vROM
; 33..63 - § à¥§¥à¢¨à®¢ ­ë
; FN 4x
; 64 - ®á¢®¡®¤¨âì à ¬¡«®ª¨ vROM ¨ vRAM
; 65 - ®á¢®¡®¤¨âì à ¬¡«®ª vRAM
; 66 - ®á¢®¡®¤¨âì à ¬¡«®ª vROM
; 65..127 - § à¥§¥à¢¨à®¢ ­ë
; FN 8x
; 128 - ¨­¨æ¨ «¨§¨à®¢ âì ᢮© ­ ¡®à áâà ­¨æ vROM
;
; ॣ HL: ¯à¨ ॣ B[7]=1  ¤à¥á áâà ­¨æ (11 èâ):
; byte1 - RAM block ID, byte2..11 - áâà ­¨æë ¤«ï vROM - ZXSlot: 1,2,3(=0),à áè¨à¥­­ ï
; ॣ A: ­®¬¥à ZX TASK ¯®ª  çâ® ¢á¥£¤  ­®«ì!!!
;¢ë室: CF = 0: HL - ­®¬¥à  à ¬¡«®ª®¢ ¤«ï ०¨¬®¢ 0..16. H=vRAM, L=vROM
; CF = 1: A - ­®¬¥à ®è¨¡ª¨
;
;¥á«¨ áâíª ­ å®¤¨âáï ¢ âà¥â쥬 á«®â¥, â® ¢ë§®¢ á ¢ëª«î祭­ë¬¨ ¯à¥à뢠­¨ï¬¨
FN_ENTRANCE: ;!TODO A - TASK NUMBER
AND A
LD A,BIOS.Error.NotSupported
SCF
RET NZ
CCF
; LD A,BIOS.Error.NotSupported
; SCF
; RET NZ
; CCF
;
EXX
LD C,SLOT3
@ -512,6 +369,17 @@ FN_ENTRANCE: ;!TODO A - TASK NUMBER
;-----------------------------------------------------------------------;
FREE_vMEMORY: LD A,B
AND 3
JR Z,FREE_ALL_vMEMORY ; 0
DEC A
JR Z,FREE_vRAM ; 1
DEC A
JR Z,FREE_vROM ; 2
LD A,BIOS.Error.InvalidSubFunction
SCF
RET
;--------------;
FREE_vRAM: LD A,(SYS_PAGE.Block_ID.vRAM)
OR A
RET Z
@ -521,7 +389,8 @@ FREE_vRAM: LD A,(SYS_PAGE.Block_ID.vRAM)
LD (SYS_PAGE.Block_ID.vRAM),A
RET
;--------------;
FREE_vMEMORY: CALL FREE_vRAM
FREE_ALL_vMEMORY:
CALL FREE_vRAM
;--------------;
FREE_vROM: LD A,(SYS_PAGE.Block_ID.vROM)
OR A
@ -549,13 +418,13 @@ RES_FLAG_ZXvROM: ;
;-----------------------------------------------------------------------;
;‚믮«­ï¥âáï ¤«ï ¢ë¤¥«¥­¨ï âàñå áâà ­¨æ އ“ 48k
GET_48k_MEM: LD D,ZX_MEMORY.MODE_48k
GET_48k_MEM: LD D,BIOS.ZX_MEMORY_MANAGER.MODE_48k
JR GET_XXX_MEM
;‚믮«­ï¥âáï ¤«ï ¨­¨â  3 áâà ­¨æ އ“ 48k ¨ 29 áâà ­¨æ އ“ Pent512k
GET_512k_MEM: LD D,ZX_MEMORY.MODE_512k
GET_512k_MEM: LD D,BIOS.ZX_MEMORY_MANAGER.MODE_512k
JR GET_XXX_MEM
;‚믮«­ï¥âáï ¤«ï ¢ë¤¥«¥­¨ï 3 áâà ­¨æ އ“ 48k ¨ 5 áâà ­¨æ އ“ 128k â ç¥ª
GET_128k_MEM: LD D,ZX_MEMORY.MODE_128k
GET_128k_MEM: LD D,BIOS.ZX_MEMORY_MANAGER.MODE_128k
;JR GET_XXX_MEM
GET_XXX_MEM: CALL FREE_vRAM
.init: LD B,D
@ -577,7 +446,7 @@ GET_SCORP_RAM: CALL FREE_vRAM
; ¢ë¤¥«¨âì áâà ­¨æë ᪮௠
XOR A
LD DE,#F0D0 ; ¤«ï 䨫ìâà . #F0 - ¬ áª , #D0 - áâà ­¨æë ISA #D0..#DF
LD BC,256*ZX_MEMORY.MODE_256k/2 + #FF ; B - ª®«¨ç¥á⢮ áâà ­¨æ, C - Œ¥âª  ª®­æ  à ¬¡«®ª 
LD BC,256*BIOS.ZX_MEMORY_MANAGER.MODE_256k/2 + #FF ; B - ª®«¨ç¥á⢮ áâà ­¨æ, C - Œ¥âª  ª®­æ  à ¬¡«®ª 
LD HL,SYS_PAGE.RAM_TABLE
.allocate_loop: DEC L
JR Z,.error_no_mem
@ -595,8 +464,7 @@ GET_SCORP_RAM: CALL FREE_vRAM
AND A
LD D,L
; Get Pent128 mem
LD B,ZX_MEMORY.MODE_128k
LD C,BIOS.GetMem
LD BC,256*BIOS.ZX_MEMORY_MANAGER.MODE_128k + BIOS.GetMem
CALL ToBIOS_FromEXT
;CALL EMM.GetMem
; A - Pent128 mem block id
@ -640,22 +508,16 @@ GET_SCORP_RAM: CALL FREE_vRAM
; 3 - EXPANSION. C § ªàëâ묨 128-¬¨ ¯®àâ ¬¨:
; 4 - TR-DOS, 5 - BASIC 48
; E: §­ ç¥­¨¥ ¤«ï SYS_PORT/CNF_PORT
; H: ;!TODO Block_ID.vROM
; L: Block_ID.vRAM
; A: TASK Number = 0
; L: Block_ID.vROM
; H: Block_ID.vRAM
; B: Port All Mode
;A'[1..0]: 1 - int scorp, 2 - int pent, 3 - int ZX
;A [1..0]: 1 - int scorp, 2 - int pent, 3 - int ZX
; A'[2]: 0 - set default palette, 1 - don't change palette
; A'[7]: 0 - 320, 1 - 312 áâப
GOTO_SPECTRUM: LD A,BIOS.Error.NotSupported
AND A
SCF
RET NZ
;
.FN: DI
EX AF,AF'
GOTO_SPECTRUM: DI
LD C,A
;
; set shared pages
XOR A
OUT (SLOT2),A ; ZERO_PAGE
@ -694,6 +556,13 @@ GOTO_SPECTRUM: LD A,BIOS.Error.NotSupported
LD BC,BIOS.SET_PAL_INIT.ZX
CALL Z,ToBIOS_FromEXT
;
; [x] ä¨ªá ­¥¯®«­®© ¤¥è¨äà æ¨¨ ¯®àâ  #FFFD (¯¨èãâ ¢ #C0FD) ¤«ï ZX mode
LD A,#FF
LD HL,%00'010'1'1110'1101
LD DE,%10'111'1'1111'1111 ; CNF_0, CNF_1
LD BC,ACEX.AY_FFFD_WRITE*256 + BIOS.DCP_CONFIG
CALL ToBIOS_FromEXT
;
LD E,0
LD BC,BIOS.LP_OPEN_S.ZX_32x24_Default
CALL ToBIOS_FromEXT
@ -763,17 +632,17 @@ INIT_PAGES: LD A,SYS_PAGE
RES 7,H
;
LD A,D
CP ZX_MEMORY.MODE_48k
CP BIOS.ZX_MEMORY_MANAGER.MODE_48k
JR Z,.set_48k
;
LD E,0 ; pent128
CP ZX_MEMORY.MODE_256k
CP BIOS.ZX_MEMORY_MANAGER.MODE_256k
JR Z,.set_scorp
;
CP ZX_MEMORY.MODE_128k
CP BIOS.ZX_MEMORY_MANAGER.MODE_128k
JR Z,.set_pent
INC E
CP ZX_MEMORY.MODE_512k
CP BIOS.ZX_MEMORY_MANAGER.MODE_512k
JR Z,.set_pent
;!FIXIT ®¡à ¡®âª  ®è¨¡ª¨
DI
@ -890,3 +759,137 @@ RES128_PROG:
;>$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$<;
;
; _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ ;
/*
;!TODO ¯¥à¥¤¥« âì ¯®¤ ¯¥à¥ª«î祭¨¥ ­  à §­ë¥ ᯥªâàã¬ë á § ¯ã饭­ë¬¨ § ¤ ç ¬¨
TASK_SWITCH:
; *** ‘®åà ­¨âì § ¤ çã ***
PUSH IY
PUSH IX
PUSH AF
PUSH BC
PUSH DE
PUSH HL
EXX
EX AF,AF'
PUSH AF
PUSH BC
PUSH DE
PUSH HL
LD A,R
PUSH AF
LD A,I
PUSH AF
LD A,(HL)
GET_ZX_TASK_DATA_OFFSET
LD C,A
IN A,(SLOT3)
LD B,A ; 3-ï áâà ­¨æ  ⥪ã饩 § ¤ ç¨
LD A,SYS_PAGE
OUT (SLOT3),A
LD IX,SYS_PAGE.ZX_TASK.CURRENT ; ¤ ­­ë¥ § ¤ ç
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 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,SYS_PAGE.ZX_TASK.CURRENT
LD A,_ZX_TASK_DATA ; ᬥ饭¨¥ ¤ ­­ëå ¢ â ¡«¨æ¥ § ¤ ç
ADD A,C ; ᬥ饭¨¥ ¤ ­­ëå ­®¢®© § ¤ ç¨
LD E,A
LD D,0
ADD IX,DE ; ¤ ­­ë¥ ­®¢®© § ¤ ç¨
; BIT 1,(IX + _ZX_TASK_DATA.STATE)
; JR NZ,TASK_IN_WORK ; § ¤ ç  ¢ à ¡®â¥ ??? ­¥¢¥à­®¥ § ¢¥à襭¨¥
; ; á¡à á뢠âì ¨«¨ ¯à®áâ® ¢®§¢à é âìáï
BIT 0,(IX + _ZX_TASK_DATA.STATE) ; ¡ë«  á®åà ­¥­ /­¥â
JR NZ,TASK_SET ; § ¤ ç  áãé¥áâ¢ã¥â
; § ¤ ç¨ ­¥ ¡ë«®!
LD IX,SYS_PAGE.ZX_TASK.CURRENT
LD A,C ; § ¤ ç 
LD (IX),A ; ãáâ ­®¢¨âì ­®¢ãî § ¤ çã ⥪ã饩
JP GOTO_SPEC.START_TASK ; § ¯ãáâ¨âì ­®¢ãî § ¤ çã!
; ; ¨ ¯®ª  ¯®ä¨£ à á¯à¥¤¥«¥­¨¥ ¯ ¬ïâ¨!
TASK_SET:
IF FREE_ZX_PAGES
LD IY,TASK_RESTORE
ELSE
LD IX,TASK_RESTORE
ENDIF
LD A,C
EXX
JP INIT_PAGES ; ¯¥à¥ª«îç¨âì ¢á¥ áâà ­¨æë!
TASK_RESTORE:
EXX
LD A,SYS_PAGE
OUT (SLOT3),A
LD A,C
LD IX,SYS_PAGE.ZX_TASK.CURRENT
LD (IX),A ; ãáâ ­®¢¨âì ­®¢ãî § ¤ çã ⥪ã饩
; !TEST
;LD E,A
;LD D,0
;ADD IX,DE ; ­®¢ ï § ¤ ç 
;LD E,16
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 SP,HL
LD A,(IX + _ZX_TASK_DATA.SLOT3_PAGE); ¢á¯®¬­¨âì âà¥âìî áâà ­¨æã
OUT (SLOT3),A
POP AF ; ¢®ááâ ­®¢¨âì
LD I,A
POP AF
LD R,A
POP HL
POP DE
POP BC
POP AF
EX AF,AF'
EXX
POP HL
POP DE
POP BC
POP AF
POP IX
POP IY
; ¢¥à­ãâìáï ¢ § ¤ çã
NO_TASK:
POP BC
JP SW_ROM_1
*/
; 259F - ADRESS BASIC128 - MAIN_MENU

View File

@ -164,10 +164,8 @@ SH_4: LD HL,MENU_DAT - MENU_128
CALL RET_SP
CALL ZX_VARS.PROG.SWAP_ROM
EX AF,AF'
;LD A,0
;OUT (CNF_PORT),A
LD A,SYS_PORT.EXTENSION
OUT (SYS_PORT.ROM),A ;!!!!! ¢¥àá¨ï ¤«ï <20>‡“
OUT (SYS_PORT.ROM),A
EX AF,AF'
RET
MENU_DAT:
@ -438,30 +436,6 @@ CLEAR_RAM:
EI
RET
;SR_CL_MEM:
; DI
; LD A,10H
;SR_CL_R2:
; LD BC,1FFDH
; OUT (C),A
; EX AF,AF'
; XOR A
;SR_CL_R1:
; LD BC,7FFDH
; OUT (C),A
; LD HL,0C000H
; LD DE,0C001H
; LD BC,03FFFH
; LD (HL),L
; LDIR
; INC A
; CP 48H
; JR NZ,SR_CL_R1
; EX AF,AF'
; CP 0
; JP Z,BASIC_128 ; ¢ë室 ­  á¡à®á BASIC 128
; LD A,0
; JR SR_CL_R2
;*****************************
; *** MENU Hardware ***
@ -504,21 +478,6 @@ Hardware_Menu_STR:
DC " " ; ¬ àª¥à ª®­æ 
.Size EQU $ - Hardware_Menu_STR
;******************************
;SP_DOS:
; LD B,0E2H
; LD A,0E1H
; JR TR_DOS1
;TR_DOS:
; LD B,0EAH
; LD A,0E1H
;TR_DOS1:
; CALL DOS_ON
; CALL SET_ROM_PAGES
; CALL DOS_OFF
; RET
;******************************
;[ ] free zx pages!
;**************************************************
@ -567,9 +526,7 @@ PREPARE_TO_START_ZX:
LD A,(SYS_PAGE.Block_ID.vROM)
LD L,A
LD A,C
EX AF,AF'
XOR A
JP GOTO_SPECTRUM.FN
JP GOTO_SPECTRUM
;
.loop_rst: LD BC,BIOS.REINIT.HARD_RESET
CALL ToBIOS_FromEXT
@ -598,51 +555,6 @@ ZX_Spectrum_48: LD L,0 ;
LD BC,#FA*256 + %1000'0011
JR Pentagon_48.zx
; CONFIG_SET:
; PUSH DE
; EI
; HALT
; DI
; IN A,(SLOT3)
; EX AF,AF'
; LD A,SYS_PAGE
; OUT (SLOT3),A
; LD (SYS_PAGE.CONFIG_DE),DE
; ;!FIXIT ¥áâì «¨ á¬ëá« ¤¥« âì ¤® FN_SYNC?
; LD A,(ZX_VARS.BORDER)
; RRCA
; RRCA
; RRCA
; AND 7
; OUT (BorderColor),A
; ;
; EX AF,AF'
; OUT (SLOT3),A
; LD A,L
; LD C,BIOS.FN_SYNC
; CALL ToBIOS_FromEXT
; LD HL,#4104 ;!HARDCODE
; LD E,0
; LD BC,256*4 + BIOS.LP_OPEN_S ;!HARDCODE
; CALL ToBIOS_FromEXT
; LD HL,#5104 ;!HARDCODE
; LD E,0
; LD BC,256*4 + BIOS.LP_OPEN_S
; CALL ToBIOS_FromEXT
; POP DE
; LD A,E
; OUT (SYS_PORT.ROM),A
; IM 1
; EI
; JP CLS ;!FIXIT ­ã¦­® «¨?
SPRINTER_reset:
DI
LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON
@ -650,81 +562,57 @@ SPRINTER_reset:
LD BC,BIOS.REINIT.SOFT_RESET
JP_to_BIOS
; _SET_CNF:
; ;DI
; LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON
; OUT (SYS_PORT.ROM),A
; RET
; CNF_SC_312:
; LD A,Port_VSYNC.SET_312L
; OUT (Port_VSYNC),A
; RET
; CNF_PN_320:
; LD A,Port_VSYNC.SET_320L
; OUT (Port_VSYNC),A
; RET
; LD A,CNF_0
; OUT (SYS_PORT.ROM),A
; CALL DOS_OFF
; JP 0
;*****************************
; *** MENU UTILITES ***
;*****************************
;!FIXIT íâ® § ¯ã᪠c:\disk.trd - ­¥ ¤ã¬ î, çâ® íâ® ­ã¦­®, ¬®¦­® § ¬¥­¨âì
RUN_DISK_TRD:
LD HL,C_DISK_C
CALL CALL_DOS1
LD HL,C_DISK_C
CALL CALL_DOS1
LD A,SYS_PORT.CNF_0 + SYS_PORT.EXTENSION
OUT (SYS_PORT.ROM),A
; [ ] ¨á¯à ¢«¥­ ¡ £ á § ¯ã᪮¬ disk.trd á CNF != 0
LD A,SYS_PORT.CNF_0 + SYS_PORT.EXTENSION
OUT (SYS_PORT.ROM),A
;
;CALL DOS_ON
;LD A,0 ; DETECT_HDD
;CALL EXP_HDD
LD C,BIOS.HDD_INIT
LD C,BIOS.HDD_INIT
CALL ToBIOS_FromEXT
;CALL DOS_OFF
JR C,.DISK_UTILIT
JR C,.DISK_UTILIT
LD HL,C_DISK_C3
CALL CALL_DOS1
LD HL,C_DISK_C3
CALL CALL_DOS1
.UTIL_DISK:
XOR A
LD C,BIOS.FreeMemRMD
CALL ToBIOS_FromEXT
LD HL,C_DEMO6
CALL CALL_DOS1
LD HL,C_DEMO6
CALL CALL_DOS1
XOR A
LD C,BIOS.GET_RAMD_ST
CALL ToBIOS_FromEXT
JR C,.UTIL_DISK_L1
JR Z,.UTIL_DISK_L1
JR C,.UTIL_DISK_L1
JR Z,.UTIL_DISK_L1
LD HL,C_DISK_C1
CALL CALL_DOS1
LD HL,C_DISK_C1
CALL CALL_DOS1
; [ ] ¨á¯à ¢«¥­ ¡ £ á § ¯ã᪮¬ disk.trd á CNF != 0
IN A,(SLOT3)
EX AF,AF'
LD A,SYS_PAGE
OUT (SLOT3),A
LD A,(SYS_PAGE.CONFIG_DE.CNF_PORT)
EX AF,AF'
OUT (SLOT3),A
EX AF,AF'
OUT (SYS_PORT.ROM),A
IN A,(SLOT3)
EX AF,AF'
LD A,SYS_PAGE
OUT (SLOT3),A
LD A,(SYS_PAGE.CONFIG_DE.CNF_PORT)
EX AF,AF'
OUT (SLOT3),A
EX AF,AF'
OUT (SYS_PORT.ROM),A
;
LD HL,C_DISK_C2
CALL CALL_DOS1
LD HL,C_DISK_C2
CALL CALL_DOS1
RET
.UTIL_DISK_L1:
@ -749,6 +637,31 @@ RUN_DISK_TRD:
C_DEMO6: DB .Size, ZX_Token.rem, ':/disk.trd', 13,80
.Size EQU $-C_DEMO6-1
C_DISK_C: DB .Size,ZX_Token.rem,':',13,80
.Size EQU $-C_DISK_C-1
; C_DISK_C0: DB .Size,ZX_Token.rem,':/CLEAR E',13,80
; .Size EQU $-C_DISK_C0-1
C_DISK_C1: DB .Size,ZX_Token.rem,':/RMD E',13,80
.Size EQU $-C_DISK_C1-1
C_DISK_C2: DB .Size,ZX_Token.rem,':RUN',13,80
.Size EQU $-C_DISK_C2-1
C_DISK_C3: DB .Size,ZX_Token.rem,':/HDD',13,80
.Size EQU $-C_DISK_C3-1
C_DISK_C4: DB .Size,ZX_Token.rem,':/FDD',13,80
.Size EQU $-C_DISK_C4-1
C_DISK_C5: DB .Size,ZX_Token.rem,':/B:',13,80
.Size EQU $-C_DISK_C5-1
C_DISK_C6: DB .Size,ZX_Token.rem,':/A:',13,80
.Size EQU $-C_DISK_C6-1
;
;***************************************
;VERSION: DEFB 22,21,0
@ -756,44 +669,80 @@ C_DEMO6: DB .Size, ZX_Token.rem, ':/disk.trd', 13,80
;**********************************************
DOS_RUN:
LD HL,C_DISK_C1
CALL CALL_DOS1
;******************************
;SP_DOS:
; LD B,#E2
; LD A,#E1
; JR TR_DOS1
;TR_DOS:
; LD B,#EA
; LD A,#E1
;TR_DOS1:
; CALL DOS_ON
; CALL SET_ROM_PAGES
; CALL DOS_OFF
; RET
;******************************
LD HL,C_DISK_C2
CALL CALL_DOS1
RET
START_TRD:
LD HL,C_DISK_C
CALL CALL_DOS1
LD HL,C_DISK_C0
CALL CALL_DOS1
LD HL,C_DISK_C3
CALL CALL_DOS1
RET
; _SET_CNF:
; ;DI
; LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON
; OUT (SYS_PORT.ROM),A
; RET
C_DISK_C: DB .Size, ZX_Token.rem, ':', 13,80
.Size EQU $-C_DISK_C-1
; CNF_SC_312:
; LD A,Port_VSYNC.SET_312L
; OUT (Port_VSYNC),A
; RET
C_DISK_C0: DB .Size, ZX_Token.rem, ':/CLEAR E', 13,80
.Size EQU $-C_DISK_C0-1
; CNF_PN_320:
; LD A,Port_VSYNC.SET_320L
; OUT (Port_VSYNC),A
; RET
; LD A,CNF_0
; OUT (SYS_PORT.ROM),A
; CALL DOS_OFF
; JP 0
C_DISK_C1: DB .Size, ZX_Token.rem, ':/RMD E', 13,80
.Size EQU $-C_DISK_C1-1
C_DISK_C2: DB .Size, ZX_Token.rem, ':RUN', 13,80
.Size EQU $-C_DISK_C2-1
; DOS_RUN: LD HL,C_DISK_C1
; CALL CALL_DOS1
; ;
; LD HL,C_DISK_C2
; CALL CALL_DOS1
; RET
C_DISK_C3: DB .Size, ZX_Token.rem, ':/HDD', 13,80
.Size EQU $-C_DISK_C3-1
; START_TRD: LD HL,C_DISK_C
; CALL CALL_DOS1
; LD HL,C_DISK_C0
; CALL CALL_DOS1
; LD HL,C_DISK_C3
; CALL CALL_DOS1
; RET
C_DISK_C4: DB .Size, ZX_Token.rem, ':/FDD', 13,80
.Size EQU $-C_DISK_C4-1
C_DISK_C5: DB .Size, ZX_Token.rem, ':/B:', 13,80
.Size EQU $-C_DISK_C5-1
C_DISK_C6: DB .Size, ZX_Token.rem, ':/A:', 13,80
.Size EQU $-C_DISK_C6-1
;
;SR_CL_MEM:
; DI
; LD A,10H
;SR_CL_R2:
; LD BC,1FFDH
; OUT (C),A
; EX AF,AF'
; XOR A
;SR_CL_R1:
; LD BC,7FFDH
; OUT (C),A
; LD HL,0C000H
; LD DE,0C001H
; LD BC,03FFFH
; LD (HL),L
; LDIR
; INC A
; CP 48H
; JR NZ,SR_CL_R1
; EX AF,AF'
; CP 0
; JP Z,BASIC_128 ; ¢ë室 ­  á¡à®á BASIC 128
; LD A,0
; JR SR_CL_R2

Binary file not shown.