free zx pages! почти готово

This commit is contained in:
Tolik 2024-09-29 01:44:27 +10:00
parent 65bc8dbb49
commit df0a7937f6
8 changed files with 343 additions and 675 deletions

@ -1 +1 @@
Subproject commit 403d6e2b52dadc50e99a1eac442cedd98e19d0a5
Subproject commit 39d099768ae06d08777c63c9d5036fa4ab9c9a01

View File

@ -892,22 +892,22 @@ PrepareToZX: ; Setup HDD drives for ZX Spectrum mode
; JR C,.loop
; ¢ë室 ¢ ०¨¬ zx spectrum
.start_zx:
IF FREE_ZX_PAGES
; IF FREE_ZX_PAGES
; ­¥ ¤®«¦­® á ¯®¯ áâì
LD B,BIOS.REINIT.HARD_RESET
JP REINIT
ELSE ; [x] free zx pages!
XOR A
OUT (SLOT2),A ; ZERO_PAGE
DEC A
OUT (SLOT1),A ; SHARED_PAGE
;LD A,5
;OUT (SLOT1),A
;LD A,2
;OUT (SLOT2),A
;
JP GOTO_SPEC.ZX_MODE
ENDIF
; ELSE ; [x] free zx pages!
; XOR A
; OUT (SLOT2),A ; ZERO_PAGE
; DEC A
; OUT (SLOT1),A ; SHARED_PAGE
; ;LD A,5
; ;OUT (SLOT1),A
; ;LD A,2
; ;OUT (SLOT2),A
; ;
; JP GOTO_SPEC.ZX_MODE
; ENDIF
;***********************************
; ˆ­¨æ¨ «¨§ æ¨ï ¯®à⮢
PORTS_INIT:
@ -1071,9 +1071,6 @@ PORTS_INIT:
INCLUDE 'FUNC_FOR_TRDOS.ASM'
INCLUDE 'FUNC_5x.asm'
INCLUDE 'FUNC_LOW_PRINT.ASM'
IFN FREE_ZX_PAGES
INCLUDE 'FUNC_ZX.ASM'
ENDIF
;-----------------------------------------------------------------------;
@ -1196,7 +1193,7 @@ DOS_ON: NOP ;!TODO ࠡ
IF FREE_ZX_PAGES
; IF FREE_ZX_PAGES
; [ ] free zx pages! ---------------------------------------------------;
GOTO_SPEC: PUSH HL
LD HL,RET_TO_BIOS
@ -1222,78 +1219,77 @@ ZX_MEMORY_MANAGER:
;---------------------[ ‡€ƒ‹“˜Šˆ „‹Ÿ #41 <E28098><EFBFBD>ˆ]----------------------;
;-------------[RST 08]
RAM_BIOS_PROG: ; for CALL BIOS in #41 page
DISP Spec_Page.to_bios
PUSH AF
LD A,ROM.BIOS
OUT (SYS_PORT.ROM),A
POP AF
RET
ENT
DISP Spec_Page.to_bios
PUSH AF
LD A,ROM.BIOS
OUT (SYS_PORT.ROM),A
POP AF
RET
ENT
.Length EQU $-RAM_BIOS_PROG
;-------------------[]
;
;-------------[RST 38]
PROG_NO_ROM:
DISP Spec_Page.no_zx_rom
DI
;
LD A,SHARED_PAGE
OUT (SLOT3),A
OUT (SLOT2),A
OUT (SLOT1),A
;
LD SP,#BF00
;
LD E,0
LD BC,BIOS.LP_OPEN_S.TXT_80x32_Default
RST ToBIOS
;
LD DE,0
LD HL,#2050
LD C,BIOS.LP_CLS_WIN
RST ToBIOS
; set scr-2
LD A,1
OUT (SCREEN_SWITCH),A
;
LD HL,MESSAGE_NR
LD DE,#A000
LD BC,MESSAGE_NR.size
LD A,C
LDIR
;
LD HL,#A000
LD D,0 ; delimiter
LD E,COLORS.CGA.FLASH + COLORS.CGA.INK.RED
LD B,A
LD C,BIOS.LP_PRINT_LINE3
RST ToBIOS
;
.loop: DI
HALT
JR .loop
;
DISP Spec_Page.no_zx_rom
DI
;
LD A,SHARED_PAGE
OUT (SLOT3),A
OUT (SLOT2),A
OUT (SLOT1),A
;
LD SP,#BF00
;
LD E,0
LD BC,BIOS.LP_OPEN_S.TXT_80x32_Default
RST ToBIOS
;
LD DE,0
LD HL,#2050
LD C,BIOS.LP_CLS_WIN
RST ToBIOS
; set scr-2
LD A,1
OUT (SCREEN_SWITCH),A
;
LD HL,MESSAGE_NR
LD DE,#A000
LD BC,MESSAGE_NR.size
LD A,C
LDIR
;
LD HL,#A000
LD D,0 ; delimiter
LD E,COLORS.CGA.FLASH + COLORS.CGA.INK.RED
LD B,A
LD C,BIOS.LP_PRINT_LINE3
RST ToBIOS
;
.loop: DI
HALT
JR .loop
;
MESSAGE_NR: DZ " Spectrum ROM not installed. Use spectrum.exe Press Ctrl+Alt+Del or RESET"
.size EQU $-MESSAGE_NR
ENT
ENT
PROG_NO_ROM.size EQU $-PROG_NO_ROM
;-------------------[]
;-----------------------------------------------------------------------;
;>$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$<;
ENDIF
; ENDIF
;-------------------------------[ #FFE0 ]-------------------------------;
; ¯à®£à ¬¬ , ª®â®à ï ¡ã¤ãç¨ à §¬¥é¥­­®© ¢ #40 áâà ­¨æ¥,
; á  ¤à¥á  RESTARTS, ¯¥à¥å¢ â뢠¥â RESET
RESTARTS_PROG: ; !TODO LDConf ¯¥à¥å¢ â à¥á¥â  ­  «î¡®© ª®­ä¥ ¯®á«¥ hardreset
LD HL,RESTARTS
LD B,16
.loop:
LD (HL),0
INC HL
DJNZ .loop
NOP
NOP
.Size EQU $-RESTARTS_PROG
RESTARTS_PROG: ; !TODO LDConf ¯¥à¥å¢ â à¥á¥â  ­  «î¡®© ª®­ä¥ ¯®á«¥ hardreset
LD HL,RESTARTS
LD B,16
.loop: LD (HL),0
INC HL
DJNZ .loop
NOP
NOP
.Size EQU $-RESTARTS_PROG
; LD A,1
; OUT (SLOT3),A
;-----------------------------------------------------------------------;
@ -1304,8 +1300,7 @@ RESTARTS_PROG: ; !TODO LDConf
; ¤«ï § ¯ã᪠ Setup
Start:
DISP COMPILE_ADDR.SETUP_STARTER
Exec:
LD A,CNF_PORT.CNF_0 + ROM.EXTENSION
Exec: LD A,CNF_PORT.CNF_0 + ROM.EXTENSION
OUT (SYS_PORT.ROM),A
LD HL,ROM_MAP.SETUP
@ -1329,10 +1324,8 @@ Exec:
; ¨ ¥á«¨ ­ ¦ â , â® ¯à®¨á室¨â ¨£­®à ¯ à ¬¥âà 
; "<22>ëáâàë© áâ àâ <20>‡“" ¢® ¢à¥¬ï ¯¥à¥§ £à㧪¨
EX AF,AF'
LD A,#FF ; !HARDCODE
OUT (C),A ; keyboard int & acc on, zx_screen & original waits off (for conf >= 3.05)
LD A,#FF ; !HARDCODE
OUT (C),A ; keyboard int & acc on, zx_screen & original waits off (for conf >= 3.05)
EX AF,AF'
;----------------------[]
DI

View File

@ -60,26 +60,25 @@ EMM.InitMem: PUSH BC
LD HL,SYS_PAGE.RAM_TABLE ; €¤à¥á RAM FAT ¢ އ“.
; ®¡­ã«ï¥¬ â ¡«¨æã
XOR A
.loopFree:
LD (HL),A
.loopFree: LD (HL),A
INC L
JR NZ,.loopFree
; १¥à¢¨à㥬 ᯥæ.áâà ­¨æë ¨ áâà ­¨æë ZX
LD B,RESERVED_PAGES.Blocks
;LD B,RESERVED_PAGES.Blocks
LD DE,RESERVED_PAGES ; â ¡«¨æ  § ­ïâëå á¨á⥬­ëå áâà ­¨æ
.loop: LD A,(DE)
CP #FF
JR Z,.exitLoop
.loopBlk:
INC DE
;
.loopBlk: INC DE
LD L,A
LD A,(DE)
LD (HL),A
CP #FF
JR NZ,.loopBlk
.exitLoop:
INC DE
DJNZ .loop
;
.exitLoop: ;INC DE
;DJNZ .loop
LD L,A
LD (HL),A
; ˆ­¨æ¨ «¨§ æ¨ï ª«î祩 RAM-Disks
@ -105,16 +104,16 @@ EMM.InitMem: PUSH BC
;---------------------------------------------------------------------[]
RESERVED_PAGES:
; [x] Block #1 - ¬®¦­® ®á¢®¡®¤¨âì ¯® ID 1
DB 1,3,4,6,7,8,9,10,11,12,13,14,15 ; [ ] free zx pages! for Spectrum
;DB 1,3,4,6,7,8,9,10,11,12,13,14,15 ; [ ] free zx pages! for Spectrum
;!FIXIT áâà ­¨æë 16..31 ­¥ § à¥§¥à¢¨à®¢ ­ë, ­® ¨á¯®«ì§ãîâáï ¢ Pentagon 512
;
; í¬ã«ïâ®à <20>‡“ ;!FIXIT ROM-Emulator ᤥ« âì ¤¨­ ¬¨ç¥áª¨¥ áâà ­¨æë
DB #42,#43,#44,#45,#46,#47;,#48,#49,#4A,#4B ; [ ] free zx pages! For (BASIC128, BASIC48, TRDOS, SCORP_ROM)*2, vBIOS, vEXTENSION
DB #FF ; End of the block
;DB #42,#43,#44,#45,#46,#47;,#48,#49,#4A,#4B ; [ ] free zx pages! For (BASIC128, BASIC48, TRDOS, SCORP_ROM)*2, vBIOS, vEXTENSION
;DB #FF ; End of the block
;
;
;; Block #2 - ­¥«ì§ï ®á¢®¡®¦¤ âì
DB 0,2,5 ; [ ] free zx pages! ; for Spectrum and BIOS starting
DB 0;,2,5 ; [ ] free zx pages! ; for Spectrum and BIOS starting
DB DCP_PAGE ; Ports map
DB Spec_Page ; Page for Spectrum mode
; Screen pages
@ -126,7 +125,7 @@ RESERVED_PAGES:
DB SYS_PAGE ; Page for system (BIOS) variables
DB #FF ; End of the block
;
.Blocks EQU 2
;.Blocks EQU 2
;----------------------------------------------------------------------;
;
@ -304,7 +303,7 @@ EMM.FreeMem: ; [x] free zx pages! ⥯
LD A,(HL) ; á«¥¤ãî騩 ¡«®ª
AND A
JR Z,.error
LD (HL),0 ; Žá¢®¡®¤¨âì
LD (HL),0 ; Žá¢®¡®¤¨âì
CP #FF ; …᫨ ­¥ ª®­¥æ
JR NZ,.loop ; ¯à®¤®«¦ âì

View File

@ -327,57 +327,56 @@ RST_CONF:
; B = 1 - RESTART.
; B = 2 - Soft reset
; B = 3 - Hard reset
; B = 4 - Reinit spectrum pages
REINIT: DEC B
JR Z,.Restart ;1
DEC B
JR Z,.SoftReset ;2
DEC B
JR Z,.HardReset ;3
DEC B
SCF
RET NZ
.ReinitZXpages: ;4
LD DE,RESERVED_PAGES ; â ¡«¨æ  § ­ïâëå á¨á⥬­ëå áâà ­¨æ
LD HL,SYS_PAGE.RAM_TABLE ; €¤à¥á FAT އ“.
RET NZ
; JR Z,.HardReset ;3
; DEC B
; .ReinitZXpages: ;4
; LD DE,RESERVED_PAGES ; â ¡«¨æ  § ­ïâëå á¨á⥬­ëå áâà ­¨æ
; LD HL,SYS_PAGE.RAM_TABLE ; €¤à¥á FAT އ“.
LD C,SLOT3
IN B,(C)
LD A,SYS_PAGE
OUT (SLOT3),A
; LD C,SLOT3
; IN B,(C)
; LD A,SYS_PAGE
; OUT (SLOT3),A
LD A,(DE)
.zxloop:
CP #FF
JR Z,.endzxloop
INC DE
LD L,A
; LD A,(DE)
; .zxloop:
; CP #FF
; JR Z,.endzxloop
; INC DE
; LD L,A
LD A,(HL)
AND A
JR NZ,.errorzxloop
; LD A,(HL)
; AND A
; JR NZ,.errorzxloop
LD A,(DE)
LD (HL),A
JR .zxloop
; LD A,(DE)
; LD (HL),A
; JR .zxloop
.errorzxloop:
DEC DE
LD HL,-RESERVED_PAGES-1
ADD HL,DE
JR NC,.errorzxloop_noChanges
; .errorzxloop:
; DEC DE
; LD HL,-RESERVED_PAGES-1
; ADD HL,DE
; JR NC,.errorzxloop_noChanges
DEC DE
LD H,high SYS_PAGE.RAM_TABLE
LD A,(DE)
LD L,A
LD A,#FF
LD (HL),A
.errorzxloop_noChanges:
SCF
.endzxloop:
OUT (C),B
RET
; DEC DE
; LD H,high SYS_PAGE.RAM_TABLE
; LD A,(DE)
; LD L,A
; LD A,#FF
; LD (HL),A
; .errorzxloop_noChanges:
; SCF
; .endzxloop:
; OUT (C),B
; RET
;
;[x]

View File

@ -1,324 +0,0 @@
IFN FREE_ZX_PAGES
;-----------------------------------------------------------------------;
;!TODO § ¤¥©á⢮¢ âì
GOTO_SPEC: IN A,(SLOT3)
EX AF,AF'
LD A,SYS_PAGE
OUT (SLOT3),A
LD A,B
LD (SYS_PAGE.CONFIG_DE.ZX_START),A
EX AF,AF'
OUT (SLOT3),A
;NO_SETUP_2: CP #FC
; JR Z,SPECTRUM_0 ; Š®­ä¨£ãà æ¨ï AY
;NO_SETUP_1:
;!TODO ᤥ« âì  ªâ¨¢ æ¨î ¢¨­â  ¤«ï ¯ à ¬¥âà  ¨§ Setup
.ZX_MODE: LD A,#FE ; !HARDCODE ᤥ« âì ç¥à¥§ ¬¥âªã ACC-off Spectrum-MODE
LD BC,Port_All_Mode
OUT (C),A
LD SP,#C000
;
CALL FN_SYNC.INT_PENT
CALL SET_TXT_PALETTE.ZX
;
LD E,0
CALL LP_SET_32
;
LD E,0
LD HL,#5104
CALL LP_SET_32.X
; ????? ¬®¦­® ¨á¯®«ì§®¢ âì ª®£¤ -­¨¡ã¤ì ª ª-­¨¡ã¤ì
; LD D,#35
; CALL CMOS_RD
; BIT 0,A
; PUSH AF
; CALL Z,SPRINTER_1
; POP AF
; PUSH AF
; CALL NZ,AY8910
; POP AF
.TASK_0: XOR A ; § ¤ ç  0, ०¨¬ 256 ª¨«®¡ ©â
.START_TASK: LD IX,.BASIC_128
JP INIT_PAGES ; ¨­¨æ¨ «¨§ æ¨ï ­®¬¥à®¢ áâà ­¨æ ०¨¬  ᯥªâà㬠
;
;start_basic:
.BASIC_128: LD SP,#C000
LD HL,RES128_PROG
LD DE,ZX_VARS.PRINTER_BUFFER ; § ¯ã᪠¯à®£à ¬¬ë ­  BASIC-¥.
LD BC,RES128_PROG.Size
LDIR
DI
JP ZX_VARS.PRINTER_BUFFER
;-----------------------------------------------------------------------;
;-----------------------------------------------------------------------;
;*****************************************
;
; ˆ­¨æ¨ «¨§ æ¨ï áâà ­¨æ ¤«ï
; ᯥªâà㬮¢áª®£® ०¨¬  ¨
; ¢®ááâ ­®¢«¥­¨¥ ᯥªâà㬮¢áª®£®
; íªà ­ 
;
; ‚®§¢à â ¯® IX
;
; !!! NO USE STACK !!!
;
;*****************************************
;!TODO á⥪ ãáâ ­®¢«¥­ ¢ âà¥â쥩 áâà ­¨æ¥, ­¥ ¨á¯®«ì§®¢ âì ¨«¨ ãáâ ­ ¢«¨¢ âì ¢ ¤àã£ãî!
; ¨­¨æ¨ «¨§ æ¨ï áâà ­¨æ zx spectrum
INIT_PAGES:
AND A
LD E,A
EX AF,AF'
LD A,E
; BIT 7,A
; JR Z,SCORPION_256_MODE
; BIT 6,A
; JR Z,PENTAGON_128_MODE
;
;PENTAGON_48_MODE:
; AND #3C
; OUT (SLOT0),A
; INC A
; OUT (SLOT1),A
; INC A
; OUT (SLOT2),A
; INC A
; LD D,A
; LD BC,#1FFD
; XOR A
; OUT (C),A
; LD B,#7F
; OUT (C),A
; LD A,D
; OUT (SLOT3),A
; JR INIT_VIDEO_REG
;
;
; PENTAGON_128_MODE:
; LD D,8
; AND #38
; JR ALL_MODE
SCORPION_256_MODE:
LD D,16
AND #30 ; ¤® 4-å ᯥªâà㬮¢
ALL_MODE:
OUT (SLOT0),A
XOR 5 ; [ ] free zx pages!
OUT (SLOT1),A
XOR 7 ; [ ] free zx pages!
OUT (SLOT2),A
OR #0F ; [ ] free zx pages!
LD E,A
.loop: DEC D
LD A,D
RLCA
AND #10
LD BC,#1FFD
OUT (C),A
LD A,D
AND 7
OR #40
LD B,#7F
OUT (C),A
LD A,E
OUT (SLOT3),A
DEC E
DEC D
INC D
JR NZ,.loop
INIT_VIDEO_REG:
XOR A
OUT (RGADR),A ; ॣ¨áâà ¢¨¤¥®  ¤à¥á 
OUT (RGMOD),A ; ॣ¨áâà ¬®¤ë
; OUT (RGSCR),A ; ॣ¨áâà íªà ­ 
;!TEST
; Restore old Spectrum Screen
;; LD HL,#4000
;; LD DE,#4000
;; LD BC,#1B00
;; LDIR
; EX AF,AF'
; BIT 6,A
; JR NZ,NO_SCREEN_ALT
; EX AF,AF'
; LD A,7 ; ᥤ쬠ï íªà ­­ ï áâà ­¨æ 
; LD BC,#7FFD
; OUT (C),A
; Restore old Spectrum Screen 2
;; LD HL,#C000
;; LD DE,#C000
;; LD BC,#1B00
;; LDIR
; XOR A
; LD BC,#7FFD
; OUT (C),A
;
EX AF,AF'
NO_SCREEN_ALT:
AND A
JP (IX)
;-----------------------------------------------------------------------;
;
;>$< >$< >$< >$< >$< >$< [ <20><EFBFBD>…Œ…™€…Œ€Ÿ އ“ ] >$< >$< >$< >$< >$< >$< ;
;--------[ <20>ணࠬ¬ , à §¬¥é ¥¬ ï á #5B00 ¤«ï § ¯ã᪠ Spectrum ]--------;
RES128_PROG:
DISP ZX_VARS.PRINTER_BUFFER ;#5B00
XOR A
OUT (SYS_PORT.RAM),A ; ‚®§¢à â ¢ 128k ROM
LD C,SLOT3
IN B,(C)
LD A,SYS_PAGE
OUT (SLOT3),A
LD DE,(SYS_PAGE.CONFIG_DE)
OUT (C),B
;
EXX
LD A,B
EXX
LD BC,Port_All_Mode
OUT (C),A
;
XOR A
LD BC,#1FFD
OUT (C),A ; Scorp ¯®àâ
LD B,#7F
OUT (C),A ; 128 ¯®àâ
;
LD A,E ; ãáâ ­®¢ª  ª®­ä¨£ãà æ¨¨ ¨ ०¨¬  TURBO
OUT (SYS_PORT.RAM),A ; CONFIG_SET
;
INC D
DEC D
; 0 ‚•Ž„ BASIC-128
JP Z,0
; 1 ‚•Ž„ BASIC-48
LD A,#10
OUT (C),A
DEC D
JP Z,0
; 2 ‚•Ž„ TR-DOS
LD HL,0
PUSH HL
DEC D
JP Z,#3D29
; 3 ‚•Ž„ EXPANSION
;!TODO ¯®ª  ­¥ à ¡®â ¥â. Page #45, BIOS (ZX_EXP) #E0
XOR A
OUT (C),A
LD A,#02
LD B,#1F
OUT (C),A
DEC D
JP Z,0
;
XOR A
OUT (C),A
LD A,#30
LD B,#7F
OUT (C),A
;!TEST
LD A,CNF_PORT.PENT_RESET + CNF_PORT.SCORP_RESET
OUT (CNF_PORT.OFF),A
;
DEC D
; 4 ‚•Ž„ TR-DOS á § ªàëâ묨 128-¬¨ ¯®àâ ¬¨
JP Z,#3D29
; 5 ‚•Ž„ BASIC-48 á § ªàëâ묨 128-¬¨ ¯®àâ ¬¨
JP 0
ENT
.Size EQU $-RES128_PROG
;-----------------------------------------------------------------------;
;---------------------[ ‡€ƒ‹“˜Šˆ „‹Ÿ #41 <E28098><EFBFBD>ˆ]----------------------;
;-------------[RST 08]
RAM_BIOS_PROG: ; for CALL BIOS in #41 page
DISP Spec_Page.to_bios
PUSH AF
LD A,ROM.BIOS
OUT (SYS_PORT.ROM),A
POP AF
RET
ENT
.Length EQU $-RAM_BIOS_PROG
;-------------------[]
;
;-------------[RST 38]
PROG_NO_ROM:
DISP Spec_Page.no_zx_rom
DI
;
LD A,SHARED_PAGE
OUT (SLOT3),A
OUT (SLOT2),A
OUT (SLOT1),A
;
LD SP,#BF00
;
LD E,0
LD BC,BIOS.LP_OPEN_S.TXT_80x32_Default
RST ToBIOS
;
LD DE,0
LD HL,#2050
LD C,BIOS.LP_CLS_WIN
RST ToBIOS
; set scr-2
LD A,1
OUT (SCREEN_SWITCH),A
;
LD HL,MESSAGE_NR
LD DE,#A000
LD BC,MESSAGE_NR.size
LD A,C
LDIR
;
LD HL,#A000
LD D,0 ; delimiter
LD E,COLORS.CGA.FLASH + COLORS.CGA.INK.RED
LD B,A
LD C,BIOS.LP_PRINT_LINE3
RST ToBIOS
;
.loop: DI
HALT
JR .loop
;
MESSAGE_NR: DZ " Spectrum ROM not installed. Use spectrum.exe Press Ctrl+Alt+Del or RESET"
.size EQU $-MESSAGE_NR
ENT
PROG_NO_ROM.size EQU $-PROG_NO_ROM
;-------------------[]
;-----------------------------------------------------------------------;
;>$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$<;
;
; _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ ;
;
ENDIF ;--------------------------------------------------------------------[^]

View File

@ -73,11 +73,11 @@
;FDD EQU #03
;!FIXIT ­®à¬ «ì­® ¯à®¯¨á âì
TEMP EQU #7E00 ; !HARDCODE
MEMMAP2 EQU TEMP ; ¤®«¦­® ¡ëâì ¢ë஢­¥­® ¯® ALIGN 256
TPOINTD EQU TEMP - SYS_PAGE.RAMD_KEYS.NUM - SYS_PAGE.Sp_RAMD_KEYS.NUM ; [x] 4/11/2023
TPOINTD EQU TEMP - SYS_PAGE.RAMD_KEYS.NUM; - SYS_PAGE.Sp_RAMD_KEYS.NUM ; [x] 4/11/2023
ASSERT (low TEMP = 0) or (low MEMMAP2 = 0), "ERROR Align 256!!!"
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
;SETUP_MAIN:
@ -247,52 +247,77 @@ CLEAR_MEM: IN A,(SLOT3)
PUSH AF
LD A,SYS_PAGE
OUT (SLOT3),A
; ®ç¨é ¥¬ ¡ãä¥à RAM Table
LD HL,MEMMAP2
LD DE,MEMMAP2+1
LD BC,255
LD (HL),0
LDIR
; ª®¯¨à㥬 ZX vROM
LD IX,SYS_PAGE.Block_ID.vROM
LD H,high SYS_PAGE.RAM_TABLE
LD D,high MEMMAP2
LD BC,#01FF ;!HARDCODE 1 vROM RAM BLOCK ID
CALL .SAVE_RMD
; [x] 28/09/2024 Žâ¤¥«ì­ë¥ à ¬¤¨áª¨ ¤«ï ०¨¬  ᯥªâà㬠 ¨ DSS.
LD B,high BIOS.SWAP_RAM_DRIVES.Sp2000
CALL SWAP_RAM_DRIVES
; ­ã¦­® «¨ á®åà ­ïâì à ¬¤¨áª¨ ¯à¨ ¯¥à¥§ ¯ã᪥?
LD BC,CMOS_CELL.BootUpParams.Mask.SaveRAMdisks ;#400E
CALL GET_CMOS_VALUE
OR A
PUSH AF
JR Z,.skip_save_rmd
;
; save RAM disks on reboot when memory is cleared
LD HL,SYS_PAGE.RAMD_KEYS
LD DE,TPOINTD
LD BC,SYS_PAGE.RAMD_KEYS.NUM
LDIR
; [x] 4/11/2023
LD HL,SYS_PAGE.Sp_RAMD_KEYS
LD BC,SYS_PAGE.Sp_RAMD_KEYS.NUM
LDIR
; LD HL,SYS_PAGE.Sp_RAMD_KEYS
; LD BC,SYS_PAGE.Sp_RAMD_KEYS.NUM
; LDIR
;
; ®ç¨é ¥¬ RAM Table
LD HL,MEMMAP2
LD DE,MEMMAP2+1
LD BC,255
LD (HL),0
LDIR
; ¢®ááâ ­ ¢«¨¢ ¥¬ RAM ¤¨áª¨
; ª®¯¨à㥬 RAM ¤¨áª¨ Sprinter mode
LD IX,SYS_PAGE.RAMD_KEYS ;RAM DISKS
LD H,high SYS_PAGE.RAM_TABLE
LD D,high MEMMAP2
LD BC,SYS_PAGE.RAMD_KEYS.NUM*256+#FF
CALL .MEMLOOP
CALL .SAVE_RMD
; [x] 4/11/2023
LD IX,SYS_PAGE.Sp_RAMD_KEYS
LD B,SYS_PAGE.Sp_RAMD_KEYS.NUM
CALL .MEMLOOP
; LD IX,SYS_PAGE.Sp_RAMD_KEYS
; LD B,SYS_PAGE.Sp_RAMD_KEYS.NUM
; CALL .SAVE_RMD
;
CALL EMM.InitMem
LD BC,CMOS_CELL.BootUpParams.Mask.SaveRAMdisks ;#400E
CALL GET_CMOS_VALUE
OR A
CALL NZ,CCHAIN
.skip_save_rmd: CALL EMM.InitMem
CALL RESTORE_CHAINS
POP AF
JR Z,.skip_restore_rmd
; LD BC,CMOS_CELL.BootUpParams.Mask.SaveRAMdisks ;#400E
; CALL GET_CMOS_VALUE
; OR A
; JR Z,.skip_restore
;
LD HL,TPOINTD
LD DE,SYS_PAGE.RAMD_KEYS
LD BC,SYS_PAGE.RAMD_KEYS.NUM
LDIR
;
.skip_restore_rmd:
POP AF
OUT (SLOT3),A
; [x] 04/11/2023 Žâ¤¥«ì­ë¥ à ¬¤¨áª¨ ¤«ï ०¨¬  ᯥªâà㬠 ¨ DSS.
LD B,high BIOS.SWAP_RAM_DRIVES.Sp2000
JP SWAP_RAM_DRIVES
; LD B,high BIOS.SWAP_RAM_DRIVES.Sp2000
; JP SWAP_RAM_DRIVES
RET
;
;
.MEMLOOP:
LD A,(IX)
.SAVE_RMD: LD A,(IX)
INC IX
OR A
LD L,A
CALL NZ,RCHAIN
DJNZ .MEMLOOP
CALL NZ,COPY_CHAIN
DJNZ .SAVE_RMD
RET
;
@ -365,7 +390,7 @@ EXIT_SETUP: CALL INT_OFF
CALL TRD_MOUNT ; !TEST 24/09/2024 ¯¥à¥­®á ¢ EXIT_SETUP (¯¥à¥¤ § ¯ã᪮¬ ZX)
CALL SetUp_ZX_HDD
IF FREE_ZX_PAGES
; IF FREE_ZX_PAGES
LD A,Spec_Page
OUT (SLOT3),A
;
@ -411,25 +436,24 @@ EXIT_SETUP: CALL INT_OFF
XOR A
JP GOTO_SPECTRUM.FN
ELSE
;LD BC,#020E
;CALL GET_CMOS_VALUE
;OR A
;LD A,#EC ;SPRINTER
;JR Z,XFLEX
;LD A,#EA ;SPECTRUM
; ELSE
;LD BC,#020E
;CALL GET_CMOS_VALUE
;OR A
;LD A,#EC ;SPRINTER
;JR Z,XFLEX
;LD A,#EA ;SPECTRUM
;XFLEX:
XOR A ;LD A,ROM.BIOS
OUT (SYS_PORT.ROM),A
POP HL ; ¯¨å ¥âáï ¢ EXP.ASM ¢ ¯à®æ¥¤ãà¥
JP (HL)
;LD (JMPHL),HL
;LD C,#F3
;RST_to_BIOS
;JMPHL EQU $+1
;JP #0000
ENDIF
; XOR A ;LD A,ROM.BIOS
; OUT (SYS_PORT.ROM),A
; POP HL ; ¯¨å ¥âáï ¢ EXP.ASM ¢ ¯à®æ¥¤ãà¥
; JP (HL)
;LD (JMPHL),HL
;LD C,#F3
;RST_to_BIOS
;JMPHL EQU $+1
;JP #0000
; ENDIF
SetUp_ZX_HDD: LD D,CMOS_CELL.TRDOSmount
CALL CMOS_RD
@ -608,8 +632,8 @@ START:
;CALL TRD_MOUNT ; !TEST 24/09/2024 ¯¥à¥­®á ¢ EXIT_SETUP (¯¥à¥¤ § ¯ã᪮¬ ZX)
CALL FDD_INSTAL
CALL ZXMODE_SETUP
CALL CLEAR_MEM
CALL ZXMODE_SETUP
CALL XY_SCREEN
;R06
@ -1432,34 +1456,26 @@ GET_ID: LD HL,memBUFFER.ID
;R01 RET
RCHAIN:
LD E,L
LDI
DEC L
LD L,(HL)
INC L
RET Z
DEC L
JR RCHAIN
COPY_CHAIN: LD E,L
LDI
DEC L
LD L,(HL)
INC L
RET Z
DEC L
JR COPY_CHAIN
CCHAIN:
LD HL,MEMMAP2
LD DE,SYS_PAGE.RAM_TABLE
XOR A
CCHAINC:
CP (HL)
JR Z,NOCOPYC
LD E,L
LDI
DEC L
NOCOPYC:
INC L
JR NZ,CCHAINC
LD HL,TPOINTD
LD DE,SYS_PAGE.RAMD_KEYS
LD BC,SYS_PAGE.RAMD_KEYS.NUM
LDIR
RET
RESTORE_CHAINS: LD HL,MEMMAP2
LD DE,SYS_PAGE.RAM_TABLE
XOR A
.loop: CP (HL)
JR Z,.NoCopy
LD E,L
LDI
DEC L
.NoCopy: INC L
JR NZ,.loop
RET
;---------------------------------------------------------------[]
;REGISTER #1E
@ -1707,26 +1723,19 @@ ZXMODE_SETUP: IN A,(SLOT3)
JR Z,.No_Need_To_Load_ZXROMS
.Load_ZXROMS: XOR A
LD R,A
;
; Load ZX ROM's
;LD A,ROM.EXTENSION
;OUT (SYS_PORT.ROM),A
; CALL MANAGE_ZX_PAGES.FREE_vMEMORY ;!FIXIT ­¥ â  áâà ­¨æ  ¢ SLOT3 ; [ ] free zx pages!
;XOR A ;LD A,ROM.BIOS
;OUT (SYS_PORT.ROM),A
XOR A
LD BC,64*256 + BIOS.ZX_MEMORY_MANAGER ; [ ] free zx pages! HARDCODE
LD BC,64*256 + BIOS.ZX_MEMORY_MANAGER ; [ ] free zx pages! MANAGE_ZX_PAGES.FREE_vMEMORY
RST ToBIOS_18
;
LD B,3 ; !HARDCODE zx-rom number of pages
CALL EMM.GetMem
JR C,.init_41h ;!FIXIT ¯¥ç â âì ®è¨¡ªã ; [ ] free zx pages!
CALL init_zx_roms
IFN FREE_ZX_PAGES
; áâ ¢¨¬ ¬¥âªã ¥á«¨ ¯à®£à㧨«¨ <20>‡“ ᯥªâà㬠
LD HL,'XZ'
LD (Spec_Page.flag_Z),HL
ENDIF ;
; IFN FREE_ZX_PAGES
; ; áâ ¢¨¬ ¬¥âªã ¥á«¨ ¯à®£à㧨«¨ <20>‡“ ᯥªâà㬠
; LD HL,'XZ'
; LD (Spec_Page.flag_Z),HL
; ENDIF ;
.No_Need_To_Load_ZXROMS:
POP AF
OUT (SLOT3),A
@ -1763,9 +1772,9 @@ ZXMODE_SETUP: IN A,(SLOT3)
; ¤«ï ०¨¬  zx spectrum
; !HARDCODE ­®¬¥à  áâà ­¨æ ¤«ï í¬ã«ïâ®à  <20>‡“
init_zx_roms: DI
;;;;;;;;
IF FREE_ZX_PAGES
;;;;;;;;
; ;;;;;;;;
; IF FREE_ZX_PAGES
; ;;;;;;;;
; <20>€ ‚•ŽŽ„… A = SYS_PAGE.Block_ID.vROM
; ¤®¡¨¢ ¥¬ ¡ãä¥à ¤® 11 ¡ ©â®¢ ¯ãáâ묨 áâà ­¨æ ¬¨
; ¢ ¡ãä¥à 㯠¤ãâ 1 RAM BLOCK ID, 3 áâà ­¨æë ¤«ï vROM ¨ #FF
@ -1807,72 +1816,72 @@ init_zx_roms: DI
OUT (SYS_PORT.ROM),A
LD A,Spec_Page
OUT (SLOT3),A
;;;;;;;;
ELSE
;;;;;;;;
IN A,(SLOT3)
EX AF,AF'
;
LD A,SYS_PORT.EXTENSION
OUT (SYS_PORT.ROM),A
INC A ; !HARDCODE LD A,2
LD B,3 ; !HARDCODE zx-rom number of pages
;
.loop: EXX
;
OUT (ROM.SLOT0),A
OR %0100'0000 ; !HARDCODE ­®¬¥à  áâà ­¨æ ¤«ï í¬ã«ïâ®à  <20>‡“
OUT (SLOT3),A
AND %1011'1111 ; !HARDCODE ­®¬¥à  áâà ­¨æ ¤«ï í¬ã«ïâ®à  <20>‡“
;
LD HL,0
LD DE,#C000
LD BC,#4000
LDIR
;
INC A
EXX
DJNZ .loop
;
XOR A
OUT (ROM.SLOT0),A
OUT (SYS_PORT.ROM),A
EX AF,AF'
OUT (SLOT3),A
;
;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23
;!FIXIT ; [ ] free zx pages! ¯¥à¥¤¥« âì ­  ¢ë§®¢ FREE_ZX_PAGES.INIT_vROM
LD A,ACEX.vROM.BASIC_128 ; ROM-ID - BASIC 128
LD B,#42 ;!HARDCODE page
CALL SET_PORTS
;
LD A,ACEX.vROM.BASIC_48 ; ROM-ID - BASIC 48
LD B,#43 ;!HARDCODE page
CALL SET_PORTS
;
LD A,ACEX.vROM.TR_DOS ; ROM-ID - TR-DOS
LD B,#44 ;!HARDCODE page
CALL SET_PORTS
;
; í⨠áâà ­¨æë ¯®ª  ­¥ ¨á¯®«ì§ãîâáï
LD A,ACEX.vROM.EXPANSION ; ROM-ID - BIOS
;LD B,#45 ;!HARDCODE page
LD B,#41
CALL SET_PORTS
;
LD A,ACEX.vROM.BIOS_1 ; ROM-ID - BIOS-1
;LD B,#46 ;!HARDCODE page
LD B,#41
CALL SET_PORTS
;
LD A,ACEX.vROM.BIOS_2 ; ROM-ID - BIOS-2
;LD B,#47 ;!HARDCODE page
LD B,#41
CALL SET_PORTS
; ¬®¦­® § ¤¥©á⢮¢ âì ¥éñ 4 áâà ­¨æë ­  ¯®àâë #E4..#E7
;;;;;;;;
ENDIF
;;;;;;;;
; ;;;;;;;;
; ELSE
; ;;;;;;;;
; IN A,(SLOT3)
; EX AF,AF'
; ;
; LD A,SYS_PORT.EXTENSION
; OUT (SYS_PORT.ROM),A
; INC A ; !HARDCODE LD A,2
; LD B,3 ; !HARDCODE zx-rom number of pages
; ;
; .loop: EXX
; ;
; OUT (ROM.SLOT0),A
; OR %0100'0000 ; !HARDCODE ­®¬¥à  áâà ­¨æ ¤«ï í¬ã«ïâ®à  <20>‡“
; OUT (SLOT3),A
; AND %1011'1111 ; !HARDCODE ­®¬¥à  áâà ­¨æ ¤«ï í¬ã«ïâ®à  <20>‡“
; ;
; LD HL,0
; LD DE,#C000
; LD BC,#4000
; LDIR
; ;
; INC A
; EXX
; DJNZ .loop
; ;
; XOR A
; OUT (ROM.SLOT0),A
; OUT (SYS_PORT.ROM),A
; EX AF,AF'
; OUT (SLOT3),A
; ;
; ;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23
; ;!FIXIT ; [ ] free zx pages! ¯¥à¥¤¥« âì ­  ¢ë§®¢ FREE_ZX_PAGES.INIT_vROM
; LD A,ACEX.vROM.BASIC_128 ; ROM-ID - BASIC 128
; LD B,#42 ;!HARDCODE page
; CALL SET_PORTS
; ;
; LD A,ACEX.vROM.BASIC_48 ; ROM-ID - BASIC 48
; LD B,#43 ;!HARDCODE page
; CALL SET_PORTS
; ;
; LD A,ACEX.vROM.TR_DOS ; ROM-ID - TR-DOS
; LD B,#44 ;!HARDCODE page
; CALL SET_PORTS
; ;
; ; í⨠áâà ­¨æë ¯®ª  ­¥ ¨á¯®«ì§ãîâáï
; LD A,ACEX.vROM.EXPANSION ; ROM-ID - BIOS
; ;LD B,#45 ;!HARDCODE page
; LD B,#41
; CALL SET_PORTS
; ;
; LD A,ACEX.vROM.BIOS_1 ; ROM-ID - BIOS-1
; ;LD B,#46 ;!HARDCODE page
; LD B,#41
; CALL SET_PORTS
; ;
; LD A,ACEX.vROM.BIOS_2 ; ROM-ID - BIOS-2
; ;LD B,#47 ;!HARDCODE page
; LD B,#41
; CALL SET_PORTS
; ; ¬®¦­® § ¤¥©á⢮¢ âì ¥éñ 4 áâà ­¨æë ­  ¯®àâë #E4..#E7
; ;;;;;;;;
; ENDIF
; ;;;;;;;;
.init_41h: ; § ¡¨âì FF- ¬¨
LD HL,#C000

View File

@ -286,7 +286,6 @@ ZX_MEMORY:
; ????? SYS_PAGE.SHARED_BUFFER_256b
;
; [ ] ‘âà ­¨æ  އ“ ¤«ï ᪮௠ ¢ SLOT0 ¤®«¦­  ᮢ¯ ¤ âì á ­ã«¥¢®© áâà ­¨æ¥© ¯®àâ  #7FFD
IF FREE_ZX_PAGES
MODULE MANAGE_ZX_PAGES
;-----------------------------------------------------------------------;
@ -316,11 +315,11 @@ INIT_vRAM: XOR A
;
XOR A
OUT (C),A
BIT 3,E ; 128/512
BIT 0,E ; 128/512
RET Z
; set 128 + 384
;LD A,SYS_PORT.CNF_512
;OUT (SYS_PORT.ROM),A
LD A,SYS_PORT.CNF_512 + SYS_PORT.CNF_0 + SYS_PORT.TURBO.ON
OUT (SYS_PORT.ROM),A
;
LD D,%0100'0000
CALL SET_7FFD
@ -385,7 +384,7 @@ INIT_vROM: LD A,(HL)
PUSH DE
PUSH HL
LD C,BIOS.SET_PORTS
RST_to_BIOS
CALL ToBIOS_FromEXT
;CALL SET_PORTS
POP HL
POP DE
@ -434,7 +433,7 @@ INIT_vROM: LD A,(HL)
; FN 1x
; 16 - ¯®«ãç¨âì à ¬¡«®ª¨ ¨­¨æ¨ «¨§¨à®¢ ­­ëå vROM ¨ VRAM
; 17..31 - § à¥§¥à¢¨à®¢ ­ë
; FN 2x
; FN 2x ;!TODO
; 32 - § à¥§¥à¢¨à®¢ ­®
; 33 - ¢ë¤¥«¥­¨¥ ¯ ¬ï⨠Spectrum 48k ¨ ¨­¨â 2-å áâà ­¨æ vROM
; 34 - ¢ë¤¥«¥­¨¥ ¯ ¬ï⨠Pentagon 128k ¨ ¨­¨â 3-å áâà ­¨æ vROM
@ -524,15 +523,15 @@ FREE_vRAM: LD A,(SYS_PAGE.Block_ID.vRAM)
RET
;--------------;
FREE_vMEMORY: CALL FREE_vRAM
;JR FREE_vROM
;--------------;
FREE_vROM: LD A,(SYS_PAGE.Block_ID.vROM)
OR A
RET Z
LD C,BIOS.FreeMem
CALL ToBIOS_FromEXT
RET C
XOR A
LD (SYS_PAGE.Block_ID.vROM),A
LD C,BIOS.FreeMem
RST_to_BIOS
;--------------;
RES_FLAG_ZXvROM: ; ­¥ ¤®«¦­® ¯®àâ¨âì DE
EX AF,AF'
@ -561,7 +560,7 @@ GET_128k_MEM: LD D,ZX_MEMORY.MODE_128k
GET_XXX_MEM: CALL FREE_vRAM
.init: LD B,D
LD C,BIOS.GetMem
RST_to_BIOS
CALL ToBIOS_FromEXT
;CALL EMM.GetMem
RET C
LD (SYS_PAGE.Block_ID.vRAM),A
@ -598,12 +597,12 @@ GET_SCORP_RAM: CALL FREE_vRAM
; Get Pent128 mem
LD B,ZX_MEMORY.MODE_128k
LD C,BIOS.GetMem
RST_to_BIOS
CALL ToBIOS_FromEXT
;CALL EMM.GetMem
; A - Pent128 mem block id
LD B,D ; Scorp128 mem block id
LD C,BIOS.MergeMemBlocks
RST_to_BIOS
CALL ToBIOS_FromEXT
;CALL EMM.MergeMemBlocks
LD (SYS_PAGE.Block_ID.vRAM),A
RET
@ -625,7 +624,7 @@ GET_SCORP_RAM: CALL FREE_vRAM
;
.error_no_mem: LD A,C
LD C,BIOS.FreeMem
RST_to_BIOS
CALL ToBIOS_FromEXT
;CALL EMM.FreeMem
LD A,BIOS.Error.EMM.NoMemory
SCF
@ -675,56 +674,54 @@ GOTO_SPECTRUM: LD A,BIOS.Error.NotSupported
LD SP,#C000
;!TODO ᤥ« âì  ªâ¨¢ æ¨î ¢¨­â  ¤«ï ¯ à ¬¥âà  ¨§ Setup
; ãáâ ­®¢ª  ¨­â 
EXX
LD C,BIOS.FN_SYNC
RST_to_BIOS
;CALL FN_SYNC
EXX
LD C,BIOS.FN_SYNC
CALL ToBIOS_FromEXT
EXX
; ãáâ ­®¢ª  à §¢ñà⪨
EXX
LD A,C
EXX
RLCA
AND %0000'0001
OR %1000'0110
LD C,BIOS.FN_SYNC
RST_to_BIOS
;CALL FN_SYNC
EXX
LD A,C
EXX
EXX
RLCA
AND %0000'0001
OR %1000'0110
LD C,BIOS.FN_SYNC
CALL ToBIOS_FromEXT
EXX
;
LD A,C
EXX
AND %0000'0100 ;!TODO § ¯®¬­¨âì/¢®ááâ ­®¢¨âì ª á⮬­ãî ¯ «¨âàã?
LD BC,BIOS.SET_PAL_INIT.ZX
CALL Z,ToBIOS_FromEXT
;
LD E,0
LD BC,BIOS.LP_OPEN_S.ZX_32x24_Default
RST_to_BIOS
;CALL LP_SET_32
CALL ToBIOS_FromEXT
;
LD E,0
LD HL,#5104
LD BC,BIOS.LP_OPEN_S.ZX_32x24
RST_to_BIOS
;CALL LP_SET_32.X
; .SHARED_BUFFER_256b
CALL ToBIOS_FromEXT
;
LD A,(SYS_PAGE.Block_ID.vRAM)
LD HL,SYS_PAGE.SHARED_BUFFER_256b
LD C,BIOS.GetMemBlkPages
RST_to_BIOS
;CALL EMM.GetMemBlkPages
CALL ToBIOS_FromEXT
;!FIXIT
;RET C
;RET C
; !FIXIT ¯à®¢¥àª  à §¬¥à  ¡«®ª , ᤥ« âì, ç⮡ ¢ë¡¨à «áï ®¡êñ¬ ¯ ¬ïâ¨
;LD A,B
;CP 16
;
LD D,B
;.TASK_0: XOR A ; § ¤ ç  0, ०¨¬ 256 ª¨«®¡ ©â
.START_TASK: LD IY,.BASIC_128
JP INIT_PAGES ; ¨­¨æ¨ «¨§ æ¨ï ­®¬¥à®¢ áâà ­¨æ ०¨¬  ᯥªâà㬠
;.TASK_0: § ¤ ç  0, ०¨¬ 256 ª¨«®¡ ©â
.START_TASK: XOR A
OUT (RGADR),A ; ॣ¨áâà ¢¨¤¥®  ¤à¥á 
OUT (RGMOD),A ; ॣ¨áâà ¬®¤ë
;
;start_basic:
LD IY,.BASIC_128
JP INIT_PAGES ; ¨­¨æ¨ «¨§ æ¨ï ­®¬¥à®¢ áâà ­¨æ ०¨¬  ᯥªâà㬠
;start_basic:
.BASIC_128: LD SP,#C000
LD HL,RES128_PROG
LD DE,ZX_VARS.PRINTER_BUFFER ; § ¯ã᪠¯à®£à ¬¬ë ­  BASIC-¥.
@ -754,8 +751,8 @@ GOTO_SPECTRUM: LD A,BIOS.Error.NotSupported
; D - ª®«¨ç¥á⢮ íâ¨å áâà ­¨æ
INIT_PAGES: LD A,SYS_PAGE
OUT (SLOT1),A
====
LD A,SYS_PORT.TURBO.ON + SYS_PORT.CNF_0 + SYS_PORT.CNF_512 ;!FIXIT ¯¥à¥¤¥« âì ¨­¨â. ¥á«¨ 512, â® ­¥â 1ffd ¨ ­ ®¡®à®â
; [ ] free zx pages! ¯¥à¥¤¥« âì ¨­¨â. ¥á«¨ 512, â® ­¥â 1ffd ¨ ­ ®¡®à®â
LD A,SYS_PORT.TURBO.ON + SYS_PORT.CNF_0; + SYS_PORT.CNF_512
OUT (SYS_PORT.ROM),A
;
RES 7,H
@ -777,28 +774,28 @@ INIT_PAGES: LD A,SYS_PAGE
DI
HALT
;
.set_48k: LD A,(HL) ; SLOT0, SLOT3 page
INC HL
LD E,(HL) ; SLOT1 page
INC HL
LD D,(HL) ; SLOT2 page
JR .set_slots
;
.set_scorp: CALL MANAGE_ZX_PAGES.INIT_vRAM
LD A,#10
CALL MANAGE_ZX_PAGES.INIT_vRAM.set_1ffd
; A = 0, BC = #7FFD
LD B,#1F
OUT (C),A
JR .set_table
INC A ; reset ZF
;
.set_pent: CALL MANAGE_ZX_PAGES.INIT_vRAM
.set_pent: CALL Z,MANAGE_ZX_PAGES.INIT_vRAM
; ¬¥­ï¥¬ ¯®à冷ª ¤«ï ¯à®æ¥¤ãàë set_48k
.set_table: LD A,(SYS_PAGE.SHARED_BUFFER_256b+2 - #8000) ; SLOT2 page
LD D,A
LD A,(SYS_PAGE.SHARED_BUFFER_256b+5 - #8000) ; SLOT1 page
LD E,A
LD A,(SYS_PAGE.SHARED_BUFFER_256b+0 - #8000) ; SLOT0, SLOT3 page
JR .set_slots
;
.set_48k: LD A,(HL) ; SLOT0, SLOT3 page
INC HL
LD E,(HL) ; SLOT1 page
INC HL
LD D,(HL) ; SLOT2 page
;
.set_slots: OUT (SLOT0),A
OUT (SLOT3),A
@ -807,10 +804,7 @@ INIT_PAGES: LD A,SYS_PAGE
LD A,D
OUT (SLOT2),A
;
XOR A
OUT (RGADR),A ; ॣ¨áâà ¢¨¤¥®  ¤à¥á 
OUT (RGMOD),A ; ॣ¨áâà ¬®¤ë
JP (IY)
JP (IY)
;-----------------------------------------------------------------------;
;
@ -886,4 +880,3 @@ RES128_PROG:
;>$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$<;
;
; _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ ;
ENDIF

View File

@ -1,5 +1,5 @@
;=======================[All shared EQUs]=======================;
BETA_BUILD EQU 7 ; ¤®¡ ¢«ï¥â áâப㠨 á®®¡é¥­¨¥ ® â¥á⮢®© ᡮથ ­  áâ à⮢®¬ íªà ­¥
BETA_BUILD EQU 8 ; ¤®¡ ¢«ï¥â áâப㠨 á®®¡é¥­¨¥ ® â¥á⮢®© ᡮથ ­  áâ à⮢®¬ íªà ­¥
;======================[All shared defines]=====================;
DEFINE PACKED_MAIN 0 ; ¯ ª®¢ âì MAIN ¨«¨ ¢«¥§ ¥â ¡¥§ í⮣®?
DEFINE SP2000_Loader_Flag #0107 ;
@ -11,7 +11,6 @@ BETA_BUILD EQU 7 ;
DEFINE USE_E1_SCANCODE 0 ;
DEFINE RECOVERYmountTYPE 1 ; 1 - ¡ëáâàë© ­¥¬­®£® § å à¤ª®¦¥­ë© ¢ à¨ ­â. 2 - ¡®«¥¥ "¯à ¢¨«ì­ë©"
DEFINE RECOVERYrdChooseTYPE 1 ; 1 - RECOVERY £à㧨âáï ¢ ¤¨áª 15, 2 - ¨é¥âáï ᢮¡®¤­ë© à ¬¤¨áª, ¥á«¨ ­¥â, â® ¢ 15-ë©
DEFINE FREE_ZX_PAGES 1 ; 1 - ®á¢®¡®¤¨âì áâà ­¨æë ᯥªâà㬠 ;!TODO
;----[ ‡ ¤¥à¦ª  ¢ ª ¤à å ¯®á«¥ ®âà¨á®¢ª¨ «®£®â¨¯  (0 = 256) ]---;
DEFINE LOGO_DELAY_MIN 25 ;
DEFINE LOGO_DELAY_NORM 100 ;