free zx pages! почти готово
This commit is contained in:
parent
65bc8dbb49
commit
df0a7937f6
@ -1 +1 @@
|
||||
Subproject commit 403d6e2b52dadc50e99a1eac442cedd98e19d0a5
|
||||
Subproject commit 39d099768ae06d08777c63c9d5036fa4ab9c9a01
|
||||
@ -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
|
||||
|
||||
@ -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 ; ¯à®¤®«¦ âì
|
||||
|
||||
|
||||
@ -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]
|
||||
|
||||
@ -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 ;--------------------------------------------------------------------[^]
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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 ;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user