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
|
; JR C,.loop
|
||||||
; ¢ë室 ¢ ०¨¬ zx spectrum
|
; ¢ë室 ¢ ०¨¬ zx spectrum
|
||||||
.start_zx:
|
.start_zx:
|
||||||
IF FREE_ZX_PAGES
|
; IF FREE_ZX_PAGES
|
||||||
; ¥ ¤®«¦® áî¤ ¯®¯ áâì
|
; ¥ ¤®«¦® áî¤ ¯®¯ áâì
|
||||||
LD B,BIOS.REINIT.HARD_RESET
|
LD B,BIOS.REINIT.HARD_RESET
|
||||||
JP REINIT
|
JP REINIT
|
||||||
ELSE ; [x] free zx pages!
|
; ELSE ; [x] free zx pages!
|
||||||
XOR A
|
; XOR A
|
||||||
OUT (SLOT2),A ; ZERO_PAGE
|
; OUT (SLOT2),A ; ZERO_PAGE
|
||||||
DEC A
|
; DEC A
|
||||||
OUT (SLOT1),A ; SHARED_PAGE
|
; OUT (SLOT1),A ; SHARED_PAGE
|
||||||
;LD A,5
|
; ;LD A,5
|
||||||
;OUT (SLOT1),A
|
; ;OUT (SLOT1),A
|
||||||
;LD A,2
|
; ;LD A,2
|
||||||
;OUT (SLOT2),A
|
; ;OUT (SLOT2),A
|
||||||
;
|
; ;
|
||||||
JP GOTO_SPEC.ZX_MODE
|
; JP GOTO_SPEC.ZX_MODE
|
||||||
ENDIF
|
; ENDIF
|
||||||
;***********************************
|
;***********************************
|
||||||
; ˆ¨æ¨ «¨§ æ¨ï ¯®à⮢
|
; ˆ¨æ¨ «¨§ æ¨ï ¯®à⮢
|
||||||
PORTS_INIT:
|
PORTS_INIT:
|
||||||
@ -1071,9 +1071,6 @@ PORTS_INIT:
|
|||||||
INCLUDE 'FUNC_FOR_TRDOS.ASM'
|
INCLUDE 'FUNC_FOR_TRDOS.ASM'
|
||||||
INCLUDE 'FUNC_5x.asm'
|
INCLUDE 'FUNC_5x.asm'
|
||||||
INCLUDE 'FUNC_LOW_PRINT.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! ---------------------------------------------------;
|
; [ ] free zx pages! ---------------------------------------------------;
|
||||||
GOTO_SPEC: PUSH HL
|
GOTO_SPEC: PUSH HL
|
||||||
LD HL,RET_TO_BIOS
|
LD HL,RET_TO_BIOS
|
||||||
@ -1222,78 +1219,77 @@ ZX_MEMORY_MANAGER:
|
|||||||
;---------------------[ ‡€ƒ‹“˜Šˆ „‹Ÿ #41 ‘’<E28098>€<EFBFBD>ˆ–›]----------------------;
|
;---------------------[ ‡€ƒ‹“˜Šˆ „‹Ÿ #41 ‘’<E28098>€<EFBFBD>ˆ–›]----------------------;
|
||||||
;-------------[RST 08]
|
;-------------[RST 08]
|
||||||
RAM_BIOS_PROG: ; for CALL BIOS in #41 page
|
RAM_BIOS_PROG: ; for CALL BIOS in #41 page
|
||||||
DISP Spec_Page.to_bios
|
DISP Spec_Page.to_bios
|
||||||
PUSH AF
|
PUSH AF
|
||||||
LD A,ROM.BIOS
|
LD A,ROM.BIOS
|
||||||
OUT (SYS_PORT.ROM),A
|
OUT (SYS_PORT.ROM),A
|
||||||
POP AF
|
POP AF
|
||||||
RET
|
RET
|
||||||
ENT
|
ENT
|
||||||
.Length EQU $-RAM_BIOS_PROG
|
.Length EQU $-RAM_BIOS_PROG
|
||||||
;-------------------[]
|
;-------------------[]
|
||||||
;
|
;
|
||||||
;-------------[RST 38]
|
;-------------[RST 38]
|
||||||
PROG_NO_ROM:
|
PROG_NO_ROM:
|
||||||
DISP Spec_Page.no_zx_rom
|
DISP Spec_Page.no_zx_rom
|
||||||
DI
|
DI
|
||||||
;
|
;
|
||||||
LD A,SHARED_PAGE
|
LD A,SHARED_PAGE
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
OUT (SLOT2),A
|
OUT (SLOT2),A
|
||||||
OUT (SLOT1),A
|
OUT (SLOT1),A
|
||||||
;
|
;
|
||||||
LD SP,#BF00
|
LD SP,#BF00
|
||||||
;
|
;
|
||||||
LD E,0
|
LD E,0
|
||||||
LD BC,BIOS.LP_OPEN_S.TXT_80x32_Default
|
LD BC,BIOS.LP_OPEN_S.TXT_80x32_Default
|
||||||
RST ToBIOS
|
RST ToBIOS
|
||||||
;
|
;
|
||||||
LD DE,0
|
LD DE,0
|
||||||
LD HL,#2050
|
LD HL,#2050
|
||||||
LD C,BIOS.LP_CLS_WIN
|
LD C,BIOS.LP_CLS_WIN
|
||||||
RST ToBIOS
|
RST ToBIOS
|
||||||
; set scr-2
|
; set scr-2
|
||||||
LD A,1
|
LD A,1
|
||||||
OUT (SCREEN_SWITCH),A
|
OUT (SCREEN_SWITCH),A
|
||||||
;
|
;
|
||||||
LD HL,MESSAGE_NR
|
LD HL,MESSAGE_NR
|
||||||
LD DE,#A000
|
LD DE,#A000
|
||||||
LD BC,MESSAGE_NR.size
|
LD BC,MESSAGE_NR.size
|
||||||
LD A,C
|
LD A,C
|
||||||
LDIR
|
LDIR
|
||||||
;
|
;
|
||||||
LD HL,#A000
|
LD HL,#A000
|
||||||
LD D,0 ; delimiter
|
LD D,0 ; delimiter
|
||||||
LD E,COLORS.CGA.FLASH + COLORS.CGA.INK.RED
|
LD E,COLORS.CGA.FLASH + COLORS.CGA.INK.RED
|
||||||
LD B,A
|
LD B,A
|
||||||
LD C,BIOS.LP_PRINT_LINE3
|
LD C,BIOS.LP_PRINT_LINE3
|
||||||
RST ToBIOS
|
RST ToBIOS
|
||||||
;
|
;
|
||||||
.loop: DI
|
.loop: DI
|
||||||
HALT
|
HALT
|
||||||
JR .loop
|
JR .loop
|
||||||
;
|
;
|
||||||
MESSAGE_NR: DZ " Spectrum ROM not installed. Use spectrum.exe Press Ctrl+Alt+Del or RESET"
|
MESSAGE_NR: DZ " Spectrum ROM not installed. Use spectrum.exe Press Ctrl+Alt+Del or RESET"
|
||||||
.size EQU $-MESSAGE_NR
|
.size EQU $-MESSAGE_NR
|
||||||
ENT
|
ENT
|
||||||
PROG_NO_ROM.size EQU $-PROG_NO_ROM
|
PROG_NO_ROM.size EQU $-PROG_NO_ROM
|
||||||
;-------------------[]
|
;-------------------[]
|
||||||
;-----------------------------------------------------------------------;
|
;-----------------------------------------------------------------------;
|
||||||
;>$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$<;
|
;>$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$<;
|
||||||
ENDIF
|
; ENDIF
|
||||||
;-------------------------------[ #FFE0 ]-------------------------------;
|
;-------------------------------[ #FFE0 ]-------------------------------;
|
||||||
; ¯à®£à ¬¬ , ª®â®à ï ¡ã¤ãç¨ à §¬¥é¥®© ¢ #40 áâà ¨æ¥,
|
; ¯à®£à ¬¬ , ª®â®à ï ¡ã¤ãç¨ à §¬¥é¥®© ¢ #40 áâà ¨æ¥,
|
||||||
; á ¤à¥á RESTARTS, ¯¥à¥å¢ âë¢ ¥â RESET
|
; á ¤à¥á RESTARTS, ¯¥à¥å¢ âë¢ ¥â RESET
|
||||||
RESTARTS_PROG: ; !TODO LDConf ¯¥à¥å¢ â à¥á¥â «î¡®© ª®ä¥ ¯®á«¥ hardreset
|
RESTARTS_PROG: ; !TODO LDConf ¯¥à¥å¢ â à¥á¥â «î¡®© ª®ä¥ ¯®á«¥ hardreset
|
||||||
LD HL,RESTARTS
|
LD HL,RESTARTS
|
||||||
LD B,16
|
LD B,16
|
||||||
.loop:
|
.loop: LD (HL),0
|
||||||
LD (HL),0
|
INC HL
|
||||||
INC HL
|
DJNZ .loop
|
||||||
DJNZ .loop
|
NOP
|
||||||
NOP
|
NOP
|
||||||
NOP
|
.Size EQU $-RESTARTS_PROG
|
||||||
.Size EQU $-RESTARTS_PROG
|
|
||||||
; LD A,1
|
; LD A,1
|
||||||
; OUT (SLOT3),A
|
; OUT (SLOT3),A
|
||||||
;-----------------------------------------------------------------------;
|
;-----------------------------------------------------------------------;
|
||||||
@ -1304,8 +1300,7 @@ RESTARTS_PROG: ; !TODO LDConf
|
|||||||
; ¤«ï § ¯ã᪠Setup
|
; ¤«ï § ¯ã᪠Setup
|
||||||
Start:
|
Start:
|
||||||
DISP COMPILE_ADDR.SETUP_STARTER
|
DISP COMPILE_ADDR.SETUP_STARTER
|
||||||
Exec:
|
Exec: LD A,CNF_PORT.CNF_0 + ROM.EXTENSION
|
||||||
LD A,CNF_PORT.CNF_0 + ROM.EXTENSION
|
|
||||||
OUT (SYS_PORT.ROM),A
|
OUT (SYS_PORT.ROM),A
|
||||||
|
|
||||||
LD HL,ROM_MAP.SETUP
|
LD HL,ROM_MAP.SETUP
|
||||||
@ -1329,10 +1324,8 @@ Exec:
|
|||||||
; ¨ ¥á«¨ ¦ â , â® ¯à®¨á室¨â ¨£®à ¯ à ¬¥âà
|
; ¨ ¥á«¨ ¦ â , â® ¯à®¨á室¨â ¨£®à ¯ à ¬¥âà
|
||||||
; "<22>ëáâàë© áâ àâ <20>‡“" ¢® ¢à¥¬ï ¯¥à¥§ £à㧪¨
|
; "<22>ëáâàë© áâ àâ <20>‡“" ¢® ¢à¥¬ï ¯¥à¥§ £à㧪¨
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
|
LD A,#FF ; !HARDCODE
|
||||||
LD A,#FF ; !HARDCODE
|
OUT (C),A ; keyboard int & acc on, zx_screen & original waits off (for conf >= 3.05)
|
||||||
OUT (C),A ; keyboard int & acc on, zx_screen & original waits off (for conf >= 3.05)
|
|
||||||
|
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
;----------------------[]
|
;----------------------[]
|
||||||
DI
|
DI
|
||||||
|
|||||||
@ -60,26 +60,25 @@ EMM.InitMem: PUSH BC
|
|||||||
LD HL,SYS_PAGE.RAM_TABLE ; €¤à¥á RAM FAT ¢ އ“.
|
LD HL,SYS_PAGE.RAM_TABLE ; €¤à¥á RAM FAT ¢ އ“.
|
||||||
; ®¡ã«ï¥¬ â ¡«¨æã
|
; ®¡ã«ï¥¬ â ¡«¨æã
|
||||||
XOR A
|
XOR A
|
||||||
.loopFree:
|
.loopFree: LD (HL),A
|
||||||
LD (HL),A
|
|
||||||
INC L
|
INC L
|
||||||
JR NZ,.loopFree
|
JR NZ,.loopFree
|
||||||
; १¥à¢¨à㥬 ᯥæ.áâà ¨æë ¨ áâà ¨æë ZX
|
; १¥à¢¨à㥬 ᯥæ.áâà ¨æë ¨ áâà ¨æë ZX
|
||||||
LD B,RESERVED_PAGES.Blocks
|
;LD B,RESERVED_PAGES.Blocks
|
||||||
LD DE,RESERVED_PAGES ; â ¡«¨æ § ïâëå á¨á⥬ëå áâà ¨æ
|
LD DE,RESERVED_PAGES ; â ¡«¨æ § ïâëå á¨á⥬ëå áâà ¨æ
|
||||||
.loop: LD A,(DE)
|
.loop: LD A,(DE)
|
||||||
CP #FF
|
CP #FF
|
||||||
JR Z,.exitLoop
|
JR Z,.exitLoop
|
||||||
.loopBlk:
|
;
|
||||||
INC DE
|
.loopBlk: INC DE
|
||||||
LD L,A
|
LD L,A
|
||||||
LD A,(DE)
|
LD A,(DE)
|
||||||
LD (HL),A
|
LD (HL),A
|
||||||
CP #FF
|
CP #FF
|
||||||
JR NZ,.loopBlk
|
JR NZ,.loopBlk
|
||||||
.exitLoop:
|
;
|
||||||
INC DE
|
.exitLoop: ;INC DE
|
||||||
DJNZ .loop
|
;DJNZ .loop
|
||||||
LD L,A
|
LD L,A
|
||||||
LD (HL),A
|
LD (HL),A
|
||||||
; ˆ¨æ¨ «¨§ æ¨ï ª«î祩 RAM-Disks
|
; ˆ¨æ¨ «¨§ æ¨ï ª«î祩 RAM-Disks
|
||||||
@ -105,16 +104,16 @@ EMM.InitMem: PUSH BC
|
|||||||
;---------------------------------------------------------------------[]
|
;---------------------------------------------------------------------[]
|
||||||
RESERVED_PAGES:
|
RESERVED_PAGES:
|
||||||
; [x] Block #1 - ¬®¦® ®á¢®¡®¤¨âì ¯® ID 1
|
; [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
|
;!FIXIT áâà ¨æë 16..31 ¥ § १¥à¢¨à®¢ ë, ® ¨á¯®«ì§ãîâáï ¢ Pentagon 512
|
||||||
;
|
;
|
||||||
; í¬ã«ïâ®à <20>‡“ ;!FIXIT ROM-Emulator ᤥ« âì ¤¨ ¬¨ç¥áª¨¥ áâà ¨æë
|
; í¬ã«ïâ®à <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 #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 #FF ; End of the block
|
||||||
;
|
;
|
||||||
;
|
;
|
||||||
;; Block #2 - ¥«ì§ï ®á¢®¡®¦¤ âì
|
;; 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 DCP_PAGE ; Ports map
|
||||||
DB Spec_Page ; Page for Spectrum mode
|
DB Spec_Page ; Page for Spectrum mode
|
||||||
; Screen pages
|
; Screen pages
|
||||||
@ -126,7 +125,7 @@ RESERVED_PAGES:
|
|||||||
DB SYS_PAGE ; Page for system (BIOS) variables
|
DB SYS_PAGE ; Page for system (BIOS) variables
|
||||||
DB #FF ; End of the block
|
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) ; á«¥¤ãî騩 ¡«®ª
|
LD A,(HL) ; á«¥¤ãî騩 ¡«®ª
|
||||||
AND A
|
AND A
|
||||||
JR Z,.error
|
JR Z,.error
|
||||||
LD (HL),0 ; Žá¢®¡®¤¨âì
|
LD (HL),0 ; Žá¢®¡®¤¨âì
|
||||||
CP #FF ; …᫨ ¥ ª®¥æ
|
CP #FF ; …᫨ ¥ ª®¥æ
|
||||||
JR NZ,.loop ; ¯à®¤®«¦ âì
|
JR NZ,.loop ; ¯à®¤®«¦ âì
|
||||||
|
|
||||||
|
|||||||
@ -327,57 +327,56 @@ RST_CONF:
|
|||||||
; B = 1 - RESTART.
|
; B = 1 - RESTART.
|
||||||
; B = 2 - Soft reset
|
; B = 2 - Soft reset
|
||||||
; B = 3 - Hard reset
|
; B = 3 - Hard reset
|
||||||
; B = 4 - Reinit spectrum pages
|
|
||||||
REINIT: DEC B
|
REINIT: DEC B
|
||||||
JR Z,.Restart ;1
|
JR Z,.Restart ;1
|
||||||
DEC B
|
DEC B
|
||||||
JR Z,.SoftReset ;2
|
JR Z,.SoftReset ;2
|
||||||
DEC B
|
DEC B
|
||||||
JR Z,.HardReset ;3
|
|
||||||
DEC B
|
|
||||||
SCF
|
SCF
|
||||||
RET NZ
|
RET NZ
|
||||||
.ReinitZXpages: ;4
|
; JR Z,.HardReset ;3
|
||||||
LD DE,RESERVED_PAGES ; â ¡«¨æ § ïâëå á¨á⥬ëå áâà ¨æ
|
; DEC B
|
||||||
LD HL,SYS_PAGE.RAM_TABLE ; €¤à¥á FAT އ“.
|
; .ReinitZXpages: ;4
|
||||||
|
; LD DE,RESERVED_PAGES ; â ¡«¨æ § ïâëå á¨á⥬ëå áâà ¨æ
|
||||||
|
; LD HL,SYS_PAGE.RAM_TABLE ; €¤à¥á FAT އ“.
|
||||||
|
|
||||||
LD C,SLOT3
|
; LD C,SLOT3
|
||||||
IN B,(C)
|
; IN B,(C)
|
||||||
LD A,SYS_PAGE
|
; LD A,SYS_PAGE
|
||||||
OUT (SLOT3),A
|
; OUT (SLOT3),A
|
||||||
|
|
||||||
LD A,(DE)
|
; LD A,(DE)
|
||||||
.zxloop:
|
; .zxloop:
|
||||||
CP #FF
|
; CP #FF
|
||||||
JR Z,.endzxloop
|
; JR Z,.endzxloop
|
||||||
INC DE
|
; INC DE
|
||||||
LD L,A
|
; LD L,A
|
||||||
|
|
||||||
LD A,(HL)
|
; LD A,(HL)
|
||||||
AND A
|
; AND A
|
||||||
JR NZ,.errorzxloop
|
; JR NZ,.errorzxloop
|
||||||
|
|
||||||
LD A,(DE)
|
; LD A,(DE)
|
||||||
LD (HL),A
|
; LD (HL),A
|
||||||
JR .zxloop
|
; JR .zxloop
|
||||||
|
|
||||||
.errorzxloop:
|
; .errorzxloop:
|
||||||
DEC DE
|
; DEC DE
|
||||||
LD HL,-RESERVED_PAGES-1
|
; LD HL,-RESERVED_PAGES-1
|
||||||
ADD HL,DE
|
; ADD HL,DE
|
||||||
JR NC,.errorzxloop_noChanges
|
; JR NC,.errorzxloop_noChanges
|
||||||
|
|
||||||
DEC DE
|
; DEC DE
|
||||||
LD H,high SYS_PAGE.RAM_TABLE
|
; LD H,high SYS_PAGE.RAM_TABLE
|
||||||
LD A,(DE)
|
; LD A,(DE)
|
||||||
LD L,A
|
; LD L,A
|
||||||
LD A,#FF
|
; LD A,#FF
|
||||||
LD (HL),A
|
; LD (HL),A
|
||||||
.errorzxloop_noChanges:
|
; .errorzxloop_noChanges:
|
||||||
SCF
|
; SCF
|
||||||
.endzxloop:
|
; .endzxloop:
|
||||||
OUT (C),B
|
; OUT (C),B
|
||||||
RET
|
; RET
|
||||||
;
|
;
|
||||||
|
|
||||||
;[x]
|
;[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
|
;FDD EQU #03
|
||||||
|
|
||||||
|
;!FIXIT ®à¬ «ì® ¯à®¯¨á âì
|
||||||
TEMP EQU #7E00 ; !HARDCODE
|
TEMP EQU #7E00 ; !HARDCODE
|
||||||
MEMMAP2 EQU TEMP ; ¤®«¦® ¡ëâì ¢ë஢¥® ¯® ALIGN 256
|
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:
|
;SETUP_MAIN:
|
||||||
@ -247,52 +247,77 @@ CLEAR_MEM: IN A,(SLOT3)
|
|||||||
PUSH AF
|
PUSH AF
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (SLOT3),A
|
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
|
; save RAM disks on reboot when memory is cleared
|
||||||
LD HL,SYS_PAGE.RAMD_KEYS
|
LD HL,SYS_PAGE.RAMD_KEYS
|
||||||
LD DE,TPOINTD
|
LD DE,TPOINTD
|
||||||
LD BC,SYS_PAGE.RAMD_KEYS.NUM
|
LD BC,SYS_PAGE.RAMD_KEYS.NUM
|
||||||
LDIR
|
LDIR
|
||||||
; [x] 4/11/2023
|
; [x] 4/11/2023
|
||||||
LD HL,SYS_PAGE.Sp_RAMD_KEYS
|
; LD HL,SYS_PAGE.Sp_RAMD_KEYS
|
||||||
LD BC,SYS_PAGE.Sp_RAMD_KEYS.NUM
|
; LD BC,SYS_PAGE.Sp_RAMD_KEYS.NUM
|
||||||
LDIR
|
; LDIR
|
||||||
;
|
;
|
||||||
; ®ç¨é ¥¬ RAM Table
|
; ª®¯¨à㥬 RAM ¤¨áª¨ Sprinter mode
|
||||||
LD HL,MEMMAP2
|
|
||||||
LD DE,MEMMAP2+1
|
|
||||||
LD BC,255
|
|
||||||
LD (HL),0
|
|
||||||
LDIR
|
|
||||||
; ¢®ááâ ¢«¨¢ ¥¬ RAM ¤¨áª¨
|
|
||||||
LD IX,SYS_PAGE.RAMD_KEYS ;RAM DISKS
|
LD IX,SYS_PAGE.RAMD_KEYS ;RAM DISKS
|
||||||
LD H,high SYS_PAGE.RAM_TABLE
|
LD H,high SYS_PAGE.RAM_TABLE
|
||||||
LD D,high MEMMAP2
|
LD D,high MEMMAP2
|
||||||
LD BC,SYS_PAGE.RAMD_KEYS.NUM*256+#FF
|
LD BC,SYS_PAGE.RAMD_KEYS.NUM*256+#FF
|
||||||
CALL .MEMLOOP
|
CALL .SAVE_RMD
|
||||||
; [x] 4/11/2023
|
; [x] 4/11/2023
|
||||||
LD IX,SYS_PAGE.Sp_RAMD_KEYS
|
; LD IX,SYS_PAGE.Sp_RAMD_KEYS
|
||||||
LD B,SYS_PAGE.Sp_RAMD_KEYS.NUM
|
; LD B,SYS_PAGE.Sp_RAMD_KEYS.NUM
|
||||||
CALL .MEMLOOP
|
; CALL .SAVE_RMD
|
||||||
;
|
;
|
||||||
CALL EMM.InitMem
|
.skip_save_rmd: CALL EMM.InitMem
|
||||||
LD BC,CMOS_CELL.BootUpParams.Mask.SaveRAMdisks ;#400E
|
CALL RESTORE_CHAINS
|
||||||
CALL GET_CMOS_VALUE
|
POP AF
|
||||||
OR A
|
JR Z,.skip_restore_rmd
|
||||||
CALL NZ,CCHAIN
|
; 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
|
POP AF
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
; [x] 04/11/2023 Žâ¤¥«ìë¥ à ¬¤¨áª¨ ¤«ï ०¨¬ ᯥªâà㬠¨ DSS.
|
; [x] 04/11/2023 Žâ¤¥«ìë¥ à ¬¤¨áª¨ ¤«ï ०¨¬ ᯥªâà㬠¨ DSS.
|
||||||
LD B,high BIOS.SWAP_RAM_DRIVES.Sp2000
|
; LD B,high BIOS.SWAP_RAM_DRIVES.Sp2000
|
||||||
JP SWAP_RAM_DRIVES
|
; JP SWAP_RAM_DRIVES
|
||||||
|
RET
|
||||||
;
|
;
|
||||||
;
|
.SAVE_RMD: LD A,(IX)
|
||||||
.MEMLOOP:
|
|
||||||
LD A,(IX)
|
|
||||||
INC IX
|
INC IX
|
||||||
OR A
|
OR A
|
||||||
LD L,A
|
LD L,A
|
||||||
CALL NZ,RCHAIN
|
CALL NZ,COPY_CHAIN
|
||||||
DJNZ .MEMLOOP
|
DJNZ .SAVE_RMD
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -365,7 +390,7 @@ EXIT_SETUP: CALL INT_OFF
|
|||||||
CALL TRD_MOUNT ; !TEST 24/09/2024 ¯¥à¥®á ¢ EXIT_SETUP (¯¥à¥¤ § ¯ã᪮¬ ZX)
|
CALL TRD_MOUNT ; !TEST 24/09/2024 ¯¥à¥®á ¢ EXIT_SETUP (¯¥à¥¤ § ¯ã᪮¬ ZX)
|
||||||
CALL SetUp_ZX_HDD
|
CALL SetUp_ZX_HDD
|
||||||
|
|
||||||
IF FREE_ZX_PAGES
|
; IF FREE_ZX_PAGES
|
||||||
LD A,Spec_Page
|
LD A,Spec_Page
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
;
|
;
|
||||||
@ -411,25 +436,24 @@ EXIT_SETUP: CALL INT_OFF
|
|||||||
XOR A
|
XOR A
|
||||||
JP GOTO_SPECTRUM.FN
|
JP GOTO_SPECTRUM.FN
|
||||||
|
|
||||||
ELSE
|
; ELSE
|
||||||
;LD BC,#020E
|
;LD BC,#020E
|
||||||
;CALL GET_CMOS_VALUE
|
;CALL GET_CMOS_VALUE
|
||||||
;OR A
|
;OR A
|
||||||
;LD A,#EC ;SPRINTER
|
;LD A,#EC ;SPRINTER
|
||||||
;JR Z,XFLEX
|
;JR Z,XFLEX
|
||||||
;LD A,#EA ;SPECTRUM
|
;LD A,#EA ;SPECTRUM
|
||||||
;XFLEX:
|
;XFLEX:
|
||||||
XOR A ;LD A,ROM.BIOS
|
; XOR A ;LD A,ROM.BIOS
|
||||||
OUT (SYS_PORT.ROM),A
|
; OUT (SYS_PORT.ROM),A
|
||||||
POP HL ; ¯¨å ¥âáï ¢ EXP.ASM ¢ ¯à®æ¥¤ãà¥
|
; POP HL ; ¯¨å ¥âáï ¢ EXP.ASM ¢ ¯à®æ¥¤ãà¥
|
||||||
JP (HL)
|
; JP (HL)
|
||||||
;LD (JMPHL),HL
|
;LD (JMPHL),HL
|
||||||
|
;LD C,#F3
|
||||||
;LD C,#F3
|
;RST_to_BIOS
|
||||||
;RST_to_BIOS
|
;JMPHL EQU $+1
|
||||||
;JMPHL EQU $+1
|
;JP #0000
|
||||||
;JP #0000
|
; ENDIF
|
||||||
ENDIF
|
|
||||||
|
|
||||||
SetUp_ZX_HDD: LD D,CMOS_CELL.TRDOSmount
|
SetUp_ZX_HDD: LD D,CMOS_CELL.TRDOSmount
|
||||||
CALL CMOS_RD
|
CALL CMOS_RD
|
||||||
@ -608,8 +632,8 @@ START:
|
|||||||
|
|
||||||
;CALL TRD_MOUNT ; !TEST 24/09/2024 ¯¥à¥®á ¢ EXIT_SETUP (¯¥à¥¤ § ¯ã᪮¬ ZX)
|
;CALL TRD_MOUNT ; !TEST 24/09/2024 ¯¥à¥®á ¢ EXIT_SETUP (¯¥à¥¤ § ¯ã᪮¬ ZX)
|
||||||
CALL FDD_INSTAL
|
CALL FDD_INSTAL
|
||||||
CALL ZXMODE_SETUP
|
|
||||||
CALL CLEAR_MEM
|
CALL CLEAR_MEM
|
||||||
|
CALL ZXMODE_SETUP
|
||||||
CALL XY_SCREEN
|
CALL XY_SCREEN
|
||||||
|
|
||||||
;R06
|
;R06
|
||||||
@ -1432,34 +1456,26 @@ GET_ID: LD HL,memBUFFER.ID
|
|||||||
;R01 RET
|
;R01 RET
|
||||||
|
|
||||||
|
|
||||||
RCHAIN:
|
COPY_CHAIN: LD E,L
|
||||||
LD E,L
|
LDI
|
||||||
LDI
|
DEC L
|
||||||
DEC L
|
LD L,(HL)
|
||||||
LD L,(HL)
|
INC L
|
||||||
INC L
|
RET Z
|
||||||
RET Z
|
DEC L
|
||||||
DEC L
|
JR COPY_CHAIN
|
||||||
JR RCHAIN
|
|
||||||
|
|
||||||
CCHAIN:
|
RESTORE_CHAINS: LD HL,MEMMAP2
|
||||||
LD HL,MEMMAP2
|
LD DE,SYS_PAGE.RAM_TABLE
|
||||||
LD DE,SYS_PAGE.RAM_TABLE
|
XOR A
|
||||||
XOR A
|
.loop: CP (HL)
|
||||||
CCHAINC:
|
JR Z,.NoCopy
|
||||||
CP (HL)
|
LD E,L
|
||||||
JR Z,NOCOPYC
|
LDI
|
||||||
LD E,L
|
DEC L
|
||||||
LDI
|
.NoCopy: INC L
|
||||||
DEC L
|
JR NZ,.loop
|
||||||
NOCOPYC:
|
RET
|
||||||
INC L
|
|
||||||
JR NZ,CCHAINC
|
|
||||||
LD HL,TPOINTD
|
|
||||||
LD DE,SYS_PAGE.RAMD_KEYS
|
|
||||||
LD BC,SYS_PAGE.RAMD_KEYS.NUM
|
|
||||||
LDIR
|
|
||||||
RET
|
|
||||||
|
|
||||||
;---------------------------------------------------------------[]
|
;---------------------------------------------------------------[]
|
||||||
;REGISTER #1E
|
;REGISTER #1E
|
||||||
@ -1707,26 +1723,19 @@ ZXMODE_SETUP: IN A,(SLOT3)
|
|||||||
JR Z,.No_Need_To_Load_ZXROMS
|
JR Z,.No_Need_To_Load_ZXROMS
|
||||||
.Load_ZXROMS: XOR A
|
.Load_ZXROMS: XOR A
|
||||||
LD R,A
|
LD R,A
|
||||||
;
|
|
||||||
; Load ZX ROM's
|
; Load ZX ROM's
|
||||||
;LD A,ROM.EXTENSION
|
LD BC,64*256 + BIOS.ZX_MEMORY_MANAGER ; [ ] free zx pages! MANAGE_ZX_PAGES.FREE_vMEMORY
|
||||||
;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
|
|
||||||
RST ToBIOS_18
|
RST ToBIOS_18
|
||||||
;
|
;
|
||||||
LD B,3 ; !HARDCODE zx-rom number of pages
|
LD B,3 ; !HARDCODE zx-rom number of pages
|
||||||
CALL EMM.GetMem
|
CALL EMM.GetMem
|
||||||
JR C,.init_41h ;!FIXIT ¯¥ç â âì ®è¨¡ªã ; [ ] free zx pages!
|
JR C,.init_41h ;!FIXIT ¯¥ç â âì ®è¨¡ªã ; [ ] free zx pages!
|
||||||
CALL init_zx_roms
|
CALL init_zx_roms
|
||||||
IFN FREE_ZX_PAGES
|
; IFN FREE_ZX_PAGES
|
||||||
; áâ ¢¨¬ ¬¥âªã ¥á«¨ ¯à®£à㧨«¨ <20>‡“ ᯥªâàã¬
|
; ; áâ ¢¨¬ ¬¥âªã ¥á«¨ ¯à®£à㧨«¨ <20>‡“ ᯥªâàã¬
|
||||||
LD HL,'XZ'
|
; LD HL,'XZ'
|
||||||
LD (Spec_Page.flag_Z),HL
|
; LD (Spec_Page.flag_Z),HL
|
||||||
ENDIF ;
|
; ENDIF ;
|
||||||
.No_Need_To_Load_ZXROMS:
|
.No_Need_To_Load_ZXROMS:
|
||||||
POP AF
|
POP AF
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
@ -1763,9 +1772,9 @@ ZXMODE_SETUP: IN A,(SLOT3)
|
|||||||
; ¤«ï ०¨¬ zx spectrum
|
; ¤«ï ०¨¬ zx spectrum
|
||||||
; !HARDCODE ®¬¥à áâà ¨æ ¤«ï í¬ã«ïâ®à <20>‡“
|
; !HARDCODE ®¬¥à áâà ¨æ ¤«ï í¬ã«ïâ®à <20>‡“
|
||||||
init_zx_roms: DI
|
init_zx_roms: DI
|
||||||
;;;;;;;;
|
; ;;;;;;;;
|
||||||
IF FREE_ZX_PAGES
|
; IF FREE_ZX_PAGES
|
||||||
;;;;;;;;
|
; ;;;;;;;;
|
||||||
; <20>€ ‚•ŽŽ„… A = SYS_PAGE.Block_ID.vROM
|
; <20>€ ‚•ŽŽ„… A = SYS_PAGE.Block_ID.vROM
|
||||||
; ¤®¡¨¢ ¥¬ ¡ãä¥à ¤® 11 ¡ ©â®¢ ¯ãáâ묨 áâà ¨æ ¬¨
|
; ¤®¡¨¢ ¥¬ ¡ãä¥à ¤® 11 ¡ ©â®¢ ¯ãáâ묨 áâà ¨æ ¬¨
|
||||||
; ¢ ¡ãä¥à 㯠¤ãâ 1 RAM BLOCK ID, 3 áâà ¨æë ¤«ï vROM ¨ #FF
|
; ¢ ¡ãä¥à 㯠¤ãâ 1 RAM BLOCK ID, 3 áâà ¨æë ¤«ï vROM ¨ #FF
|
||||||
@ -1807,72 +1816,72 @@ init_zx_roms: DI
|
|||||||
OUT (SYS_PORT.ROM),A
|
OUT (SYS_PORT.ROM),A
|
||||||
LD A,Spec_Page
|
LD A,Spec_Page
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
;;;;;;;;
|
; ;;;;;;;;
|
||||||
ELSE
|
; ELSE
|
||||||
;;;;;;;;
|
; ;;;;;;;;
|
||||||
IN A,(SLOT3)
|
; IN A,(SLOT3)
|
||||||
EX AF,AF'
|
; EX AF,AF'
|
||||||
;
|
; ;
|
||||||
LD A,SYS_PORT.EXTENSION
|
; LD A,SYS_PORT.EXTENSION
|
||||||
OUT (SYS_PORT.ROM),A
|
; OUT (SYS_PORT.ROM),A
|
||||||
INC A ; !HARDCODE LD A,2
|
; INC A ; !HARDCODE LD A,2
|
||||||
LD B,3 ; !HARDCODE zx-rom number of pages
|
; LD B,3 ; !HARDCODE zx-rom number of pages
|
||||||
;
|
; ;
|
||||||
.loop: EXX
|
; .loop: EXX
|
||||||
;
|
; ;
|
||||||
OUT (ROM.SLOT0),A
|
; OUT (ROM.SLOT0),A
|
||||||
OR %0100'0000 ; !HARDCODE ®¬¥à áâà ¨æ ¤«ï í¬ã«ïâ®à <20>‡“
|
; OR %0100'0000 ; !HARDCODE ®¬¥à áâà ¨æ ¤«ï í¬ã«ïâ®à <20>‡“
|
||||||
OUT (SLOT3),A
|
; OUT (SLOT3),A
|
||||||
AND %1011'1111 ; !HARDCODE ®¬¥à áâà ¨æ ¤«ï í¬ã«ïâ®à <20>‡“
|
; AND %1011'1111 ; !HARDCODE ®¬¥à áâà ¨æ ¤«ï í¬ã«ïâ®à <20>‡“
|
||||||
;
|
; ;
|
||||||
LD HL,0
|
; LD HL,0
|
||||||
LD DE,#C000
|
; LD DE,#C000
|
||||||
LD BC,#4000
|
; LD BC,#4000
|
||||||
LDIR
|
; LDIR
|
||||||
;
|
; ;
|
||||||
INC A
|
; INC A
|
||||||
EXX
|
; EXX
|
||||||
DJNZ .loop
|
; DJNZ .loop
|
||||||
;
|
; ;
|
||||||
XOR A
|
; XOR A
|
||||||
OUT (ROM.SLOT0),A
|
; OUT (ROM.SLOT0),A
|
||||||
OUT (SYS_PORT.ROM),A
|
; OUT (SYS_PORT.ROM),A
|
||||||
EX AF,AF'
|
; EX AF,AF'
|
||||||
OUT (SLOT3),A
|
; OUT (SLOT3),A
|
||||||
;
|
; ;
|
||||||
;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23
|
; ;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23
|
||||||
;!FIXIT ; [ ] free zx pages! ¯¥à¥¤¥« âì ¢ë§®¢ FREE_ZX_PAGES.INIT_vROM
|
; ;!FIXIT ; [ ] free zx pages! ¯¥à¥¤¥« âì ¢ë§®¢ FREE_ZX_PAGES.INIT_vROM
|
||||||
LD A,ACEX.vROM.BASIC_128 ; ROM-ID - BASIC 128
|
; LD A,ACEX.vROM.BASIC_128 ; ROM-ID - BASIC 128
|
||||||
LD B,#42 ;!HARDCODE page
|
; LD B,#42 ;!HARDCODE page
|
||||||
CALL SET_PORTS
|
; CALL SET_PORTS
|
||||||
;
|
; ;
|
||||||
LD A,ACEX.vROM.BASIC_48 ; ROM-ID - BASIC 48
|
; LD A,ACEX.vROM.BASIC_48 ; ROM-ID - BASIC 48
|
||||||
LD B,#43 ;!HARDCODE page
|
; LD B,#43 ;!HARDCODE page
|
||||||
CALL SET_PORTS
|
; CALL SET_PORTS
|
||||||
;
|
; ;
|
||||||
LD A,ACEX.vROM.TR_DOS ; ROM-ID - TR-DOS
|
; LD A,ACEX.vROM.TR_DOS ; ROM-ID - TR-DOS
|
||||||
LD B,#44 ;!HARDCODE page
|
; LD B,#44 ;!HARDCODE page
|
||||||
CALL SET_PORTS
|
; CALL SET_PORTS
|
||||||
;
|
; ;
|
||||||
; í⨠áâà ¨æë ¯®ª ¥ ¨á¯®«ì§ãîâáï
|
; ; í⨠áâà ¨æë ¯®ª ¥ ¨á¯®«ì§ãîâáï
|
||||||
LD A,ACEX.vROM.EXPANSION ; ROM-ID - BIOS
|
; LD A,ACEX.vROM.EXPANSION ; ROM-ID - BIOS
|
||||||
;LD B,#45 ;!HARDCODE page
|
; ;LD B,#45 ;!HARDCODE page
|
||||||
LD B,#41
|
; LD B,#41
|
||||||
CALL SET_PORTS
|
; CALL SET_PORTS
|
||||||
;
|
; ;
|
||||||
LD A,ACEX.vROM.BIOS_1 ; ROM-ID - BIOS-1
|
; LD A,ACEX.vROM.BIOS_1 ; ROM-ID - BIOS-1
|
||||||
;LD B,#46 ;!HARDCODE page
|
; ;LD B,#46 ;!HARDCODE page
|
||||||
LD B,#41
|
; LD B,#41
|
||||||
CALL SET_PORTS
|
; CALL SET_PORTS
|
||||||
;
|
; ;
|
||||||
LD A,ACEX.vROM.BIOS_2 ; ROM-ID - BIOS-2
|
; LD A,ACEX.vROM.BIOS_2 ; ROM-ID - BIOS-2
|
||||||
;LD B,#47 ;!HARDCODE page
|
; ;LD B,#47 ;!HARDCODE page
|
||||||
LD B,#41
|
; LD B,#41
|
||||||
CALL SET_PORTS
|
; CALL SET_PORTS
|
||||||
; ¬®¦® § ¤¥©á⢮¢ âì ¥éñ 4 áâà ¨æë ¯®àâë #E4..#E7
|
; ; ¬®¦® § ¤¥©á⢮¢ âì ¥éñ 4 áâà ¨æë ¯®àâë #E4..#E7
|
||||||
;;;;;;;;
|
; ;;;;;;;;
|
||||||
ENDIF
|
; ENDIF
|
||||||
;;;;;;;;
|
; ;;;;;;;;
|
||||||
|
|
||||||
.init_41h: ; § ¡¨âì FF- ¬¨
|
.init_41h: ; § ¡¨âì FF- ¬¨
|
||||||
LD HL,#C000
|
LD HL,#C000
|
||||||
|
|||||||
@ -286,7 +286,6 @@ ZX_MEMORY:
|
|||||||
; ????? SYS_PAGE.SHARED_BUFFER_256b
|
; ????? SYS_PAGE.SHARED_BUFFER_256b
|
||||||
;
|
;
|
||||||
; [ ] ‘âà ¨æ Ž‡“ ¤«ï ᪮௠¢ SLOT0 ¤®«¦ ᮢ¯ ¤ âì á ã«¥¢®© áâà ¨æ¥© ¯®àâ #7FFD
|
; [ ] ‘âà ¨æ Ž‡“ ¤«ï ᪮௠¢ SLOT0 ¤®«¦ ᮢ¯ ¤ âì á ã«¥¢®© áâà ¨æ¥© ¯®àâ #7FFD
|
||||||
IF FREE_ZX_PAGES
|
|
||||||
MODULE MANAGE_ZX_PAGES
|
MODULE MANAGE_ZX_PAGES
|
||||||
|
|
||||||
;-----------------------------------------------------------------------;
|
;-----------------------------------------------------------------------;
|
||||||
@ -316,11 +315,11 @@ INIT_vRAM: XOR A
|
|||||||
;
|
;
|
||||||
XOR A
|
XOR A
|
||||||
OUT (C),A
|
OUT (C),A
|
||||||
BIT 3,E ; 128/512
|
BIT 0,E ; 128/512
|
||||||
RET Z
|
RET Z
|
||||||
; set 128 + 384
|
; set 128 + 384
|
||||||
;LD A,SYS_PORT.CNF_512
|
LD A,SYS_PORT.CNF_512 + SYS_PORT.CNF_0 + SYS_PORT.TURBO.ON
|
||||||
;OUT (SYS_PORT.ROM),A
|
OUT (SYS_PORT.ROM),A
|
||||||
;
|
;
|
||||||
LD D,%0100'0000
|
LD D,%0100'0000
|
||||||
CALL SET_7FFD
|
CALL SET_7FFD
|
||||||
@ -385,7 +384,7 @@ INIT_vROM: LD A,(HL)
|
|||||||
PUSH DE
|
PUSH DE
|
||||||
PUSH HL
|
PUSH HL
|
||||||
LD C,BIOS.SET_PORTS
|
LD C,BIOS.SET_PORTS
|
||||||
RST_to_BIOS
|
CALL ToBIOS_FromEXT
|
||||||
;CALL SET_PORTS
|
;CALL SET_PORTS
|
||||||
POP HL
|
POP HL
|
||||||
POP DE
|
POP DE
|
||||||
@ -434,7 +433,7 @@ INIT_vROM: LD A,(HL)
|
|||||||
; FN 1x
|
; FN 1x
|
||||||
; 16 - ¯®«ãç¨âì à ¬¡«®ª¨ ¨¨æ¨ «¨§¨à®¢ ëå vROM ¨ VRAM
|
; 16 - ¯®«ãç¨âì à ¬¡«®ª¨ ¨¨æ¨ «¨§¨à®¢ ëå vROM ¨ VRAM
|
||||||
; 17..31 - § १¥à¢¨à®¢ ë
|
; 17..31 - § १¥à¢¨à®¢ ë
|
||||||
; FN 2x
|
; FN 2x ;!TODO
|
||||||
; 32 - § १¥à¢¨à®¢ ®
|
; 32 - § १¥à¢¨à®¢ ®
|
||||||
; 33 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Spectrum 48k ¨ ¨¨â 2-å áâà ¨æ vROM
|
; 33 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Spectrum 48k ¨ ¨¨â 2-å áâà ¨æ vROM
|
||||||
; 34 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 128k ¨ ¨¨â 3-å áâà ¨æ vROM
|
; 34 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 128k ¨ ¨¨â 3-å áâà ¨æ vROM
|
||||||
@ -524,15 +523,15 @@ FREE_vRAM: LD A,(SYS_PAGE.Block_ID.vRAM)
|
|||||||
RET
|
RET
|
||||||
;--------------;
|
;--------------;
|
||||||
FREE_vMEMORY: CALL FREE_vRAM
|
FREE_vMEMORY: CALL FREE_vRAM
|
||||||
;JR FREE_vROM
|
|
||||||
;--------------;
|
;--------------;
|
||||||
FREE_vROM: LD A,(SYS_PAGE.Block_ID.vROM)
|
FREE_vROM: LD A,(SYS_PAGE.Block_ID.vROM)
|
||||||
OR A
|
OR A
|
||||||
RET Z
|
RET Z
|
||||||
|
LD C,BIOS.FreeMem
|
||||||
|
CALL ToBIOS_FromEXT
|
||||||
|
RET C
|
||||||
XOR A
|
XOR A
|
||||||
LD (SYS_PAGE.Block_ID.vROM),A
|
LD (SYS_PAGE.Block_ID.vROM),A
|
||||||
LD C,BIOS.FreeMem
|
|
||||||
RST_to_BIOS
|
|
||||||
;--------------;
|
;--------------;
|
||||||
RES_FLAG_ZXvROM: ; ¥ ¤®«¦® ¯®àâ¨âì DE
|
RES_FLAG_ZXvROM: ; ¥ ¤®«¦® ¯®àâ¨âì DE
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
@ -561,7 +560,7 @@ GET_128k_MEM: LD D,ZX_MEMORY.MODE_128k
|
|||||||
GET_XXX_MEM: CALL FREE_vRAM
|
GET_XXX_MEM: CALL FREE_vRAM
|
||||||
.init: LD B,D
|
.init: LD B,D
|
||||||
LD C,BIOS.GetMem
|
LD C,BIOS.GetMem
|
||||||
RST_to_BIOS
|
CALL ToBIOS_FromEXT
|
||||||
;CALL EMM.GetMem
|
;CALL EMM.GetMem
|
||||||
RET C
|
RET C
|
||||||
LD (SYS_PAGE.Block_ID.vRAM),A
|
LD (SYS_PAGE.Block_ID.vRAM),A
|
||||||
@ -598,12 +597,12 @@ GET_SCORP_RAM: CALL FREE_vRAM
|
|||||||
; Get Pent128 mem
|
; Get Pent128 mem
|
||||||
LD B,ZX_MEMORY.MODE_128k
|
LD B,ZX_MEMORY.MODE_128k
|
||||||
LD C,BIOS.GetMem
|
LD C,BIOS.GetMem
|
||||||
RST_to_BIOS
|
CALL ToBIOS_FromEXT
|
||||||
;CALL EMM.GetMem
|
;CALL EMM.GetMem
|
||||||
; A - Pent128 mem block id
|
; A - Pent128 mem block id
|
||||||
LD B,D ; Scorp128 mem block id
|
LD B,D ; Scorp128 mem block id
|
||||||
LD C,BIOS.MergeMemBlocks
|
LD C,BIOS.MergeMemBlocks
|
||||||
RST_to_BIOS
|
CALL ToBIOS_FromEXT
|
||||||
;CALL EMM.MergeMemBlocks
|
;CALL EMM.MergeMemBlocks
|
||||||
LD (SYS_PAGE.Block_ID.vRAM),A
|
LD (SYS_PAGE.Block_ID.vRAM),A
|
||||||
RET
|
RET
|
||||||
@ -625,7 +624,7 @@ GET_SCORP_RAM: CALL FREE_vRAM
|
|||||||
;
|
;
|
||||||
.error_no_mem: LD A,C
|
.error_no_mem: LD A,C
|
||||||
LD C,BIOS.FreeMem
|
LD C,BIOS.FreeMem
|
||||||
RST_to_BIOS
|
CALL ToBIOS_FromEXT
|
||||||
;CALL EMM.FreeMem
|
;CALL EMM.FreeMem
|
||||||
LD A,BIOS.Error.EMM.NoMemory
|
LD A,BIOS.Error.EMM.NoMemory
|
||||||
SCF
|
SCF
|
||||||
@ -675,56 +674,54 @@ GOTO_SPECTRUM: LD A,BIOS.Error.NotSupported
|
|||||||
LD SP,#C000
|
LD SP,#C000
|
||||||
;!TODO ᤥ« âì ªâ¨¢ æ¨î ¢¨â ¤«ï ¯ à ¬¥âà ¨§ Setup
|
;!TODO ᤥ« âì ªâ¨¢ æ¨î ¢¨â ¤«ï ¯ à ¬¥âà ¨§ Setup
|
||||||
; ãáâ ®¢ª ¨â
|
; ãáâ ®¢ª ¨â
|
||||||
EXX
|
EXX
|
||||||
LD C,BIOS.FN_SYNC
|
LD C,BIOS.FN_SYNC
|
||||||
RST_to_BIOS
|
CALL ToBIOS_FromEXT
|
||||||
;CALL FN_SYNC
|
EXX
|
||||||
; ãáâ ®¢ª à §¢ñà⪨
|
; ãáâ ®¢ª à §¢ñà⪨
|
||||||
EXX
|
|
||||||
LD A,C
|
LD A,C
|
||||||
EXX
|
EXX
|
||||||
RLCA
|
RLCA
|
||||||
AND %0000'0001
|
AND %0000'0001
|
||||||
OR %1000'0110
|
OR %1000'0110
|
||||||
LD C,BIOS.FN_SYNC
|
LD C,BIOS.FN_SYNC
|
||||||
RST_to_BIOS
|
CALL ToBIOS_FromEXT
|
||||||
;CALL FN_SYNC
|
EXX
|
||||||
EXX
|
|
||||||
LD A,C
|
|
||||||
EXX
|
|
||||||
;
|
;
|
||||||
|
LD A,C
|
||||||
|
EXX
|
||||||
AND %0000'0100 ;!TODO § ¯®¬¨âì/¢®ááâ ®¢¨âì ª á⮬ãî ¯ «¨âàã?
|
AND %0000'0100 ;!TODO § ¯®¬¨âì/¢®ááâ ®¢¨âì ª á⮬ãî ¯ «¨âàã?
|
||||||
LD BC,BIOS.SET_PAL_INIT.ZX
|
LD BC,BIOS.SET_PAL_INIT.ZX
|
||||||
CALL Z,ToBIOS_FromEXT
|
CALL Z,ToBIOS_FromEXT
|
||||||
;
|
;
|
||||||
LD E,0
|
LD E,0
|
||||||
LD BC,BIOS.LP_OPEN_S.ZX_32x24_Default
|
LD BC,BIOS.LP_OPEN_S.ZX_32x24_Default
|
||||||
RST_to_BIOS
|
CALL ToBIOS_FromEXT
|
||||||
;CALL LP_SET_32
|
|
||||||
;
|
;
|
||||||
LD E,0
|
LD E,0
|
||||||
LD HL,#5104
|
LD HL,#5104
|
||||||
LD BC,BIOS.LP_OPEN_S.ZX_32x24
|
LD BC,BIOS.LP_OPEN_S.ZX_32x24
|
||||||
RST_to_BIOS
|
CALL ToBIOS_FromEXT
|
||||||
;CALL LP_SET_32.X
|
;
|
||||||
; .SHARED_BUFFER_256b
|
|
||||||
LD A,(SYS_PAGE.Block_ID.vRAM)
|
LD A,(SYS_PAGE.Block_ID.vRAM)
|
||||||
LD HL,SYS_PAGE.SHARED_BUFFER_256b
|
LD HL,SYS_PAGE.SHARED_BUFFER_256b
|
||||||
LD C,BIOS.GetMemBlkPages
|
LD C,BIOS.GetMemBlkPages
|
||||||
RST_to_BIOS
|
CALL ToBIOS_FromEXT
|
||||||
;CALL EMM.GetMemBlkPages
|
|
||||||
;!FIXIT
|
;!FIXIT
|
||||||
;RET C
|
;RET C
|
||||||
; !FIXIT ¯à®¢¥àª à §¬¥à ¡«®ª , ᤥ« âì, ç⮡ ¢ë¡¨à «áï ®¡êñ¬ ¯ ¬ïâ¨
|
; !FIXIT ¯à®¢¥àª à §¬¥à ¡«®ª , ᤥ« âì, ç⮡ ¢ë¡¨à «áï ®¡êñ¬ ¯ ¬ïâ¨
|
||||||
;LD A,B
|
;LD A,B
|
||||||
;CP 16
|
;CP 16
|
||||||
;
|
;
|
||||||
LD D,B
|
LD D,B
|
||||||
;.TASK_0: XOR A ; § ¤ ç 0, ०¨¬ 256 ª¨«®¡ ©â
|
;.TASK_0: § ¤ ç 0, ०¨¬ 256 ª¨«®¡ ©â
|
||||||
.START_TASK: LD IY,.BASIC_128
|
.START_TASK: XOR A
|
||||||
JP INIT_PAGES ; ¨¨æ¨ «¨§ æ¨ï ®¬¥à®¢ áâà ¨æ ०¨¬ ᯥªâàã¬
|
OUT (RGADR),A ; ॣ¨áâà ¢¨¤¥® ¤à¥á
|
||||||
|
OUT (RGMOD),A ; ॣ¨áâà ¬®¤ë
|
||||||
;
|
;
|
||||||
;start_basic:
|
LD IY,.BASIC_128
|
||||||
|
JP INIT_PAGES ; ¨¨æ¨ «¨§ æ¨ï ®¬¥à®¢ áâà ¨æ ०¨¬ ᯥªâàã¬
|
||||||
|
;start_basic:
|
||||||
.BASIC_128: LD SP,#C000
|
.BASIC_128: LD SP,#C000
|
||||||
LD HL,RES128_PROG
|
LD HL,RES128_PROG
|
||||||
LD DE,ZX_VARS.PRINTER_BUFFER ; § ¯ã᪠¯à®£à ¬¬ë BASIC-¥.
|
LD DE,ZX_VARS.PRINTER_BUFFER ; § ¯ã᪠¯à®£à ¬¬ë BASIC-¥.
|
||||||
@ -754,8 +751,8 @@ GOTO_SPECTRUM: LD A,BIOS.Error.NotSupported
|
|||||||
; D - ª®«¨ç¥á⢮ íâ¨å áâà ¨æ
|
; D - ª®«¨ç¥á⢮ íâ¨å áâà ¨æ
|
||||||
INIT_PAGES: LD A,SYS_PAGE
|
INIT_PAGES: LD A,SYS_PAGE
|
||||||
OUT (SLOT1),A
|
OUT (SLOT1),A
|
||||||
====
|
; [ ] free zx pages! ¯¥à¥¤¥« âì ¨¨â. ¥á«¨ 512, â® ¥â 1ffd ¨ ®¡®à®â
|
||||||
LD A,SYS_PORT.TURBO.ON + SYS_PORT.CNF_0 + SYS_PORT.CNF_512 ;!FIXIT ¯¥à¥¤¥« âì ¨¨â. ¥á«¨ 512, â® ¥â 1ffd ¨ ®¡®à®â
|
LD A,SYS_PORT.TURBO.ON + SYS_PORT.CNF_0; + SYS_PORT.CNF_512
|
||||||
OUT (SYS_PORT.ROM),A
|
OUT (SYS_PORT.ROM),A
|
||||||
;
|
;
|
||||||
RES 7,H
|
RES 7,H
|
||||||
@ -777,28 +774,28 @@ INIT_PAGES: LD A,SYS_PAGE
|
|||||||
DI
|
DI
|
||||||
HALT
|
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
|
.set_scorp: CALL MANAGE_ZX_PAGES.INIT_vRAM
|
||||||
LD A,#10
|
LD A,#10
|
||||||
CALL MANAGE_ZX_PAGES.INIT_vRAM.set_1ffd
|
CALL MANAGE_ZX_PAGES.INIT_vRAM.set_1ffd
|
||||||
; A = 0, BC = #7FFD
|
; A = 0, BC = #7FFD
|
||||||
LD B,#1F
|
LD B,#1F
|
||||||
OUT (C),A
|
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_48k
|
||||||
.set_table: LD A,(SYS_PAGE.SHARED_BUFFER_256b+2 - #8000) ; SLOT2 page
|
.set_table: LD A,(SYS_PAGE.SHARED_BUFFER_256b+2 - #8000) ; SLOT2 page
|
||||||
LD D,A
|
LD D,A
|
||||||
LD A,(SYS_PAGE.SHARED_BUFFER_256b+5 - #8000) ; SLOT1 page
|
LD A,(SYS_PAGE.SHARED_BUFFER_256b+5 - #8000) ; SLOT1 page
|
||||||
LD E,A
|
LD E,A
|
||||||
LD A,(SYS_PAGE.SHARED_BUFFER_256b+0 - #8000) ; SLOT0, SLOT3 page
|
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
|
.set_slots: OUT (SLOT0),A
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
@ -807,10 +804,7 @@ INIT_PAGES: LD A,SYS_PAGE
|
|||||||
LD A,D
|
LD A,D
|
||||||
OUT (SLOT2),A
|
OUT (SLOT2),A
|
||||||
;
|
;
|
||||||
XOR A
|
JP (IY)
|
||||||
OUT (RGADR),A ; ॣ¨áâà ¢¨¤¥® ¤à¥á
|
|
||||||
OUT (RGMOD),A ; ॣ¨áâà ¬®¤ë
|
|
||||||
JP (IY)
|
|
||||||
;-----------------------------------------------------------------------;
|
;-----------------------------------------------------------------------;
|
||||||
|
|
||||||
;
|
;
|
||||||
@ -886,4 +880,3 @@ RES128_PROG:
|
|||||||
;>$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$<;
|
;>$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$<;
|
||||||
;
|
;
|
||||||
; _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ ;
|
; _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ ;
|
||||||
ENDIF
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
;=======================[All shared EQUs]=======================;
|
;=======================[All shared EQUs]=======================;
|
||||||
BETA_BUILD EQU 7 ; ¤®¡ ¢«ï¥â áâப㠨 á®®¡é¥¨¥ ® â¥á⮢®© ᡮથ áâ à⮢®¬ íªà ¥
|
BETA_BUILD EQU 8 ; ¤®¡ ¢«ï¥â áâப㠨 á®®¡é¥¨¥ ® â¥á⮢®© ᡮથ áâ à⮢®¬ íªà ¥
|
||||||
;======================[All shared defines]=====================;
|
;======================[All shared defines]=====================;
|
||||||
DEFINE PACKED_MAIN 0 ; ¯ ª®¢ âì MAIN ¨«¨ ¢«¥§ ¥â ¡¥§ í⮣®?
|
DEFINE PACKED_MAIN 0 ; ¯ ª®¢ âì MAIN ¨«¨ ¢«¥§ ¥â ¡¥§ í⮣®?
|
||||||
DEFINE SP2000_Loader_Flag #0107 ;
|
DEFINE SP2000_Loader_Flag #0107 ;
|
||||||
@ -11,7 +11,6 @@ BETA_BUILD EQU 7 ;
|
|||||||
DEFINE USE_E1_SCANCODE 0 ;
|
DEFINE USE_E1_SCANCODE 0 ;
|
||||||
DEFINE RECOVERYmountTYPE 1 ; 1 - ¡ëáâàë© ¥¬®£® § å प®¦¥ë© ¢ ਠâ. 2 - ¡®«¥¥ "¯à ¢¨«ìë©"
|
DEFINE RECOVERYmountTYPE 1 ; 1 - ¡ëáâàë© ¥¬®£® § å प®¦¥ë© ¢ ਠâ. 2 - ¡®«¥¥ "¯à ¢¨«ìë©"
|
||||||
DEFINE RECOVERYrdChooseTYPE 1 ; 1 - RECOVERY £à㧨âáï ¢ ¤¨áª 15, 2 - ¨é¥âáï ᢮¡®¤ë© à ¬¤¨áª, ¥á«¨ ¥â, â® ¢ 15-ë©
|
DEFINE RECOVERYrdChooseTYPE 1 ; 1 - RECOVERY £à㧨âáï ¢ ¤¨áª 15, 2 - ¨é¥âáï ᢮¡®¤ë© à ¬¤¨áª, ¥á«¨ ¥â, â® ¢ 15-ë©
|
||||||
DEFINE FREE_ZX_PAGES 1 ; 1 - ®á¢®¡®¤¨âì áâà ¨æë ᯥªâà㬠;!TODO
|
|
||||||
;----[ ‡ ¤¥à¦ª ¢ ª ¤à å ¯®á«¥ ®âà¨á®¢ª¨ «®£®â¨¯ (0 = 256) ]---;
|
;----[ ‡ ¤¥à¦ª ¢ ª ¤à å ¯®á«¥ ®âà¨á®¢ª¨ «®£®â¨¯ (0 = 256) ]---;
|
||||||
DEFINE LOGO_DELAY_MIN 25 ;
|
DEFINE LOGO_DELAY_MIN 25 ;
|
||||||
DEFINE LOGO_DELAY_NORM 100 ;
|
DEFINE LOGO_DELAY_NORM 100 ;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user