free zx pages! ещё больше почти готово
This commit is contained in:
parent
df0a7937f6
commit
895f85e04d
@ -1 +1 @@
|
|||||||
Subproject commit 39d099768ae06d08777c63c9d5036fa4ab9c9a01
|
Subproject commit ba1bc48d1597637a512a5333d2a76f94b5b26231
|
||||||
@ -894,7 +894,7 @@ PrepareToZX: ; Setup HDD drives for ZX Spectrum mode
|
|||||||
.start_zx:
|
.start_zx:
|
||||||
; IF FREE_ZX_PAGES
|
; IF FREE_ZX_PAGES
|
||||||
; ¥ ¤®«¦® áî¤ ¯®¯ áâì
|
; ¥ ¤®«¦® áî¤ ¯®¯ áâì
|
||||||
LD B,BIOS.REINIT.HARD_RESET
|
LD B,high BIOS.REINIT.HARD_RESET
|
||||||
JP REINIT
|
JP REINIT
|
||||||
; ELSE ; [x] free zx pages!
|
; ELSE ; [x] free zx pages!
|
||||||
; XOR A
|
; XOR A
|
||||||
@ -1239,6 +1239,12 @@ PROG_NO_ROM:
|
|||||||
OUT (SLOT2),A
|
OUT (SLOT2),A
|
||||||
OUT (SLOT1),A
|
OUT (SLOT1),A
|
||||||
;
|
;
|
||||||
|
LD HL,MESSAGE_NR
|
||||||
|
LD DE,#A000
|
||||||
|
LD BC,MESSAGE_NR.size
|
||||||
|
LD A,C
|
||||||
|
LDIR
|
||||||
|
;
|
||||||
LD SP,#BF00
|
LD SP,#BF00
|
||||||
;
|
;
|
||||||
LD E,0
|
LD E,0
|
||||||
@ -1253,12 +1259,6 @@ PROG_NO_ROM:
|
|||||||
LD A,1
|
LD A,1
|
||||||
OUT (SCREEN_SWITCH),A
|
OUT (SCREEN_SWITCH),A
|
||||||
;
|
;
|
||||||
LD HL,MESSAGE_NR
|
|
||||||
LD DE,#A000
|
|
||||||
LD BC,MESSAGE_NR.size
|
|
||||||
LD A,C
|
|
||||||
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
|
||||||
|
|||||||
@ -11,52 +11,22 @@
|
|||||||
; PG_Sp2000 EQU #FE
|
; PG_Sp2000 EQU #FE
|
||||||
; PG_Sp2000_REINIT EQU #FD
|
; PG_Sp2000_REINIT EQU #FD
|
||||||
;
|
;
|
||||||
|
|
||||||
RST_CONF:
|
RST_CONF:
|
||||||
;--[] ZX Spectrum
|
;--[] ZX Spectrum
|
||||||
.AY8910:
|
.AY8910: CALL .ACC_OFF
|
||||||
; !FIXIT ¥ 㦮 íâ® ¡®«ìè¥ ¢ CMOS, ¯¥à¥¤¥« âì ¯®¤ TASK
|
|
||||||
;LD D,CMOS_CELL.HardwareConfiguration ; CONFIG_DE (D) - § 票¥ CNF_PORT
|
|
||||||
;CALL CMOS_RD
|
|
||||||
;OR 1
|
|
||||||
;CALL CMOS_WR
|
|
||||||
;
|
|
||||||
|
|
||||||
LD BC,Port_All_Mode
|
|
||||||
IN A,(C)
|
|
||||||
AND Port_All_Mode.DEFAULT - Port_All_Mode.SPECTRUM_MODE_OFF
|
|
||||||
OUT (C),A ; ACC_OFF
|
|
||||||
|
|
||||||
;LD A,PG_AY
|
|
||||||
LD DE,ACEX.Config_ID.Sp97_AY
|
LD DE,ACEX.Config_ID.Sp97_AY
|
||||||
JR .INT_PLD
|
JR .INT_PLD
|
||||||
;--[]
|
;--[]
|
||||||
|
|
||||||
;--[] Sprinter ZX
|
;--[] Sprinter ZX
|
||||||
.SP97_1:
|
.SP97_1: CALL .ACC_OFF
|
||||||
; !FIXIT ¥ 㦮 íâ® ¡®«ìè¥ ¢ CMOS, ¯¥à¥¤¥« âì ¯®¤ TASK
|
|
||||||
;LD D,CMOS_CELL.HardwareConfiguration ; CONFIG_DE (D) - § 票¥ CNF_PORT
|
|
||||||
;CALL CMOS_RD
|
|
||||||
;AND #FE
|
|
||||||
;CALL CMOS_WR
|
|
||||||
;
|
|
||||||
|
|
||||||
LD BC,Port_All_Mode
|
|
||||||
IN A,(C)
|
|
||||||
AND #FE ;!HARDCODE
|
|
||||||
OUT (C),A ; ACC_OFF
|
|
||||||
|
|
||||||
;LD A,PG_SP1
|
|
||||||
LD DE,ACEX.Config_ID.Sp97_1
|
LD DE,ACEX.Config_ID.Sp97_1
|
||||||
JR .INT_PLD
|
JR .INT_PLD
|
||||||
;--[]
|
;--[]
|
||||||
|
|
||||||
;--[]
|
;--[]
|
||||||
.SP97_2:
|
.SP97_2: CALL .ACC_ON
|
||||||
LD BC,Port_All_Mode
|
|
||||||
IN A,(C)
|
|
||||||
OR 1 ; ACC_ON
|
|
||||||
OUT (C),A
|
|
||||||
;LD A,PG_SP2
|
|
||||||
LD DE,ACEX.Config_ID.Sp97_2
|
LD DE,ACEX.Config_ID.Sp97_2
|
||||||
JR .INT_PLD
|
JR .INT_PLD
|
||||||
;--[]
|
;--[]
|
||||||
@ -64,15 +34,24 @@ RST_CONF:
|
|||||||
|
|
||||||
;--[]
|
;--[]
|
||||||
;[x]
|
;[x]
|
||||||
.SP2000:
|
.SP2000: CALL .ACC_ON
|
||||||
LD BC,Port_All_Mode
|
|
||||||
IN A,(C)
|
|
||||||
OR 1 ; ACC_ON
|
|
||||||
OUT (C),A
|
|
||||||
LD DE,ACEX.Config_ID.Sp2000
|
LD DE,ACEX.Config_ID.Sp2000
|
||||||
JR .INT_PLD
|
JR .INT_PLD
|
||||||
;--[]
|
;--[]
|
||||||
|
|
||||||
|
;--[]
|
||||||
|
.ACC_OFF: LD BC,Port_All_Mode
|
||||||
|
IN A,(C)
|
||||||
|
AND Port_All_Mode.DEFAULT - Port_All_Mode.SPECTRUM_MODE_OFF
|
||||||
|
OUT (C),A
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
.ACC_ON: LD BC,Port_All_Mode
|
||||||
|
IN A,(C)
|
||||||
|
OR 1 ; ACC_ON
|
||||||
|
OUT (C),A
|
||||||
|
RET
|
||||||
|
;--[]
|
||||||
|
|
||||||
;--[]
|
;--[]
|
||||||
.CUSTOM:
|
.CUSTOM:
|
||||||
@ -174,7 +153,7 @@ RST_CONF:
|
|||||||
LDIR
|
LDIR
|
||||||
; ¥á«¨ ZF=0, â® ¯à®æ¥¤ãà ᤥ« ¥â à¥á¥â á ¯¥à¥§ «¨¢ª®© ¨§ BIOS, ¨ ç¥ ¨§ Š<>˜
|
; ¥á«¨ ZF=0, â® ¯à®æ¥¤ãà ᤥ« ¥â à¥á¥â á ¯¥à¥§ «¨¢ª®© ¨§ BIOS, ¨ ç¥ ¨§ Š<>˜
|
||||||
CALL Spec_Page.init_acex
|
CALL Spec_Page.init_acex
|
||||||
LD BC,256*BIOS.REINIT.HARD_RESET + BIOS.REINIT
|
LD BC,BIOS.REINIT.HARD_RESET
|
||||||
;
|
;
|
||||||
; ¢å®¤¥ ¢ BC ¯ à ¬¥âàë äãªæ¨¨ BIOS
|
; ¢å®¤¥ ¢ BC ¯ à ¬¥âàë äãªæ¨¨ BIOS
|
||||||
.INIT_ACEX.ifSoftreset:
|
.INIT_ACEX.ifSoftreset:
|
||||||
@ -220,7 +199,7 @@ RST_CONF:
|
|||||||
; *. ‘®åà ¨âì ªã¤ -¨¡ã¤ì § 票¥ á⥪
|
; *. ‘®åà ¨âì ªã¤ -¨¡ã¤ì § 票¥ á⥪
|
||||||
; *
|
; *
|
||||||
; .. ... ... ..
|
; .. ... ... ..
|
||||||
;LD BC,256*BIOS.REINIT.HARD_RESET + BIOS.REINIT
|
;LD BC,BIOS.REINIT.HARD_RESET
|
||||||
JP_to_BIOS
|
JP_to_BIOS
|
||||||
;
|
;
|
||||||
.ReturnSoftReset:
|
.ReturnSoftReset:
|
||||||
@ -234,7 +213,7 @@ RST_CONF:
|
|||||||
LD A,Spec_Page
|
LD A,Spec_Page
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
;
|
;
|
||||||
LD BC,256*BIOS.REINIT.SOFT_RESET + BIOS.REINIT
|
LD BC,BIOS.REINIT.SOFT_RESET
|
||||||
JR .INIT_ACEX.ifSoftreset
|
JR .INIT_ACEX.ifSoftreset
|
||||||
;
|
;
|
||||||
;;;
|
;;;
|
||||||
@ -321,63 +300,55 @@ RST_CONF:
|
|||||||
;
|
;
|
||||||
;***************************************
|
;***************************************
|
||||||
|
|
||||||
|
|
||||||
;[x]
|
;[x]
|
||||||
;--------------------------[;!TODO ¯®â¥áâ¨âì]--------------------------;
|
;--------------------------[;!TODO ¯®â¥áâ¨âì]--------------------------;
|
||||||
; B - ¯ à ¬¥âà á¡à®á
|
; B - ¯ à ¬¥âà á¡à®á
|
||||||
; B = 1 - RESTART.
|
; B = 1 - RESTART.
|
||||||
; B = 2 - Soft reset
|
; B = 2 - Soft reset
|
||||||
; B = 3 - Hard reset
|
; B = 3 - Hard reset
|
||||||
|
; B = 4 - Free memory except ZX 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
|
||||||
; JR Z,.HardReset ;3
|
; ; 4
|
||||||
; DEC B
|
.FreeNoZxMem: DI
|
||||||
; .ReinitZXpages: ;4
|
LD C,SLOT3
|
||||||
; LD DE,RESERVED_PAGES ; â ¡«¨æ § ïâëå á¨á⥬ëå áâà ¨æ
|
IN B,(C)
|
||||||
; LD HL,SYS_PAGE.RAM_TABLE ; €¤à¥á FAT އ“.
|
LD A,SYS_PAGE
|
||||||
|
OUT (C),A
|
||||||
; LD C,SLOT3
|
LD (SYS_PAGE.SP_SAVE),SP
|
||||||
; IN B,(C)
|
LD SP,SYS_PAGE.SYS_SP
|
||||||
; LD A,SYS_PAGE
|
PUSH BC
|
||||||
; OUT (SLOT3),A
|
; ç¨á⨬ ¡ãä¥à
|
||||||
|
LD HL,SYS_PAGE.SHARED_BUFFER_256b
|
||||||
; LD A,(DE)
|
LD DE,SYS_PAGE.SHARED_BUFFER_256b + 1
|
||||||
; .zxloop:
|
LD BC,255
|
||||||
; CP #FF
|
LD (HL),0
|
||||||
; JR Z,.endzxloop
|
LDIR
|
||||||
; INC DE
|
|
||||||
; LD L,A
|
|
||||||
|
|
||||||
; LD A,(HL)
|
|
||||||
; AND A
|
|
||||||
; JR NZ,.errorzxloop
|
|
||||||
|
|
||||||
; LD A,(DE)
|
|
||||||
; LD (HL),A
|
|
||||||
; JR .zxloop
|
|
||||||
|
|
||||||
; .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
|
|
||||||
;
|
;
|
||||||
|
LD IX,SYS_PAGE.Block_IDs
|
||||||
|
LD H,high SYS_PAGE.RAM_TABLE
|
||||||
|
LD D,high SYS_PAGE.SHARED_BUFFER_256b
|
||||||
|
LD BC,2*256 + #FF ; 2 = vRAM ¨ VROM ID's
|
||||||
|
CALL SAVE_CHAINS
|
||||||
|
;
|
||||||
|
CALL EMM.InitMem
|
||||||
|
;
|
||||||
|
LD HL,SYS_PAGE.SHARED_BUFFER_256b
|
||||||
|
LD DE,SYS_PAGE.RAM_TABLE
|
||||||
|
CALL RESTORE_CHAINS
|
||||||
|
; CF=0
|
||||||
|
POP BC
|
||||||
|
LD SP,(SYS_PAGE.SP_SAVE)
|
||||||
|
OUT (C),B
|
||||||
|
RET
|
||||||
|
|
||||||
;[x]
|
;[x]
|
||||||
.HardReset:
|
.HardReset:
|
||||||
@ -430,5 +401,92 @@ REINIT: DEC B
|
|||||||
.loop2: LD (#C000),A ; Soft RESET !!!
|
.loop2: LD (#C000),A ; Soft RESET !!!
|
||||||
JR .loop2
|
JR .loop2
|
||||||
;
|
;
|
||||||
|
|
||||||
|
;----------------------------------------------------------------------;
|
||||||
|
; ‚室: H - RAM_TABLE
|
||||||
|
; D - Buffer for RAM_TABLE
|
||||||
|
; IX - 㪠§ â¥«ì ¯®á«¥¤®¢ ⥫ì®áâì ¨§ RAM BLOCK ID
|
||||||
|
; B - ª®«-¢® RAM BLOCK ID ¢ ¯®á«¥¤®¢ ⥫ì®áâ¨
|
||||||
|
; C - #FF (ç⮡ LDI ¥ «®¬ «® DJNZ áçñâ稪)
|
||||||
|
SAVE_CHAINS: LD A,(IX)
|
||||||
|
INC IX
|
||||||
|
OR A
|
||||||
|
LD L,A
|
||||||
|
CALL NZ,COPY_CHAIN
|
||||||
|
DJNZ SAVE_CHAINS
|
||||||
|
RET
|
||||||
|
; ‚室: H - RAM_TABLE
|
||||||
|
; L - RAM BLOCK ID
|
||||||
|
; D - Buffer for RAM_TABLE
|
||||||
|
COPY_CHAIN: LD E,L
|
||||||
|
LDI
|
||||||
|
DEC L
|
||||||
|
LD L,(HL)
|
||||||
|
INC L
|
||||||
|
RET Z
|
||||||
|
DEC L
|
||||||
|
JR COPY_CHAIN
|
||||||
|
;--------------;
|
||||||
|
; ‚室: HL - ª®¯¨ï RAM_TABLE ®âªã¤ ª®¯¨à®¢ âì
|
||||||
|
; DE - RAM_TABLE
|
||||||
|
RESTORE_CHAINS: XOR A
|
||||||
|
.loop: CP (HL)
|
||||||
|
JR Z,.NoCopy
|
||||||
|
LD E,L
|
||||||
|
LDI
|
||||||
|
DEC L
|
||||||
|
.NoCopy: INC L
|
||||||
|
JR NZ,.loop
|
||||||
|
RET
|
||||||
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
|
|
||||||
|
;----------------------------------------------------------------------;
|
||||||
|
; áâ àë© ¢ ਠ⠮᢮¡®¦¤¥¨ï áâà ¨æ ᯥªâà㬠ç¥à¥§ RAM BLK ID 1
|
||||||
|
;----------------------------------------------------------------------;
|
||||||
|
; 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 A,(DE)
|
||||||
|
; .zxloop:
|
||||||
|
; CP #FF
|
||||||
|
; JR Z,.endzxloop
|
||||||
|
; INC DE
|
||||||
|
; LD L,A
|
||||||
|
|
||||||
|
; LD A,(HL)
|
||||||
|
; AND A
|
||||||
|
; JR NZ,.errorzxloop
|
||||||
|
|
||||||
|
; LD A,(DE)
|
||||||
|
; LD (HL),A
|
||||||
|
; JR .zxloop
|
||||||
|
|
||||||
|
; .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
|
||||||
|
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
;
|
;
|
||||||
@ -306,6 +306,8 @@ INIT_CONFIG_ALL:
|
|||||||
; LD (HL),0
|
; LD (HL),0
|
||||||
; LDIR
|
; LDIR
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (SLOT2),A
|
OUT (SLOT2),A
|
||||||
|
|
||||||
@ -325,6 +327,7 @@ INIT_CONFIG_ALL:
|
|||||||
RET
|
RET
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
|
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
FN_TURBO:
|
FN_TURBO:
|
||||||
CP 2
|
CP 2
|
||||||
|
|||||||
@ -254,11 +254,16 @@ CLEAR_MEM: IN A,(SLOT3)
|
|||||||
LD (HL),0
|
LD (HL),0
|
||||||
LDIR
|
LDIR
|
||||||
; ª®¯¨à㥬 ZX vROM
|
; ª®¯¨à㥬 ZX vROM
|
||||||
LD IX,SYS_PAGE.Block_ID.vROM
|
LD HL,(SYS_PAGE.Block_ID.vROM) ; 㦮 § 票¥ ¢ L
|
||||||
LD H,high SYS_PAGE.RAM_TABLE
|
LD H,high SYS_PAGE.RAM_TABLE
|
||||||
LD D,high MEMMAP2
|
LD D,high MEMMAP2
|
||||||
LD BC,#01FF ;!HARDCODE 1 vROM RAM BLOCK ID
|
;LD BC,#01FF ;!HARDCODE 1 vROM RAM BLOCK ID
|
||||||
CALL .SAVE_RMD
|
CALL COPY_CHAIN
|
||||||
|
; 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.
|
; [x] 28/09/2024 Žâ¤¥«ìë¥ à ¬¤¨áª¨ ¤«ï ०¨¬ ᯥªâà㬠¨ DSS.
|
||||||
LD B,high BIOS.SWAP_RAM_DRIVES.Sp2000
|
LD B,high BIOS.SWAP_RAM_DRIVES.Sp2000
|
||||||
CALL SWAP_RAM_DRIVES
|
CALL SWAP_RAM_DRIVES
|
||||||
@ -284,13 +289,15 @@ CLEAR_MEM: IN A,(SLOT3)
|
|||||||
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 .SAVE_RMD
|
CALL SAVE_CHAINS
|
||||||
; [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 .SAVE_RMD
|
; CALL .SAVE_RMD
|
||||||
;
|
;
|
||||||
.skip_save_rmd: CALL EMM.InitMem
|
.skip_save_rmd: CALL EMM.InitMem
|
||||||
|
LD HL,MEMMAP2
|
||||||
|
LD DE,SYS_PAGE.RAM_TABLE
|
||||||
CALL RESTORE_CHAINS
|
CALL RESTORE_CHAINS
|
||||||
POP AF
|
POP AF
|
||||||
JR Z,.skip_restore_rmd
|
JR Z,.skip_restore_rmd
|
||||||
@ -312,13 +319,13 @@ CLEAR_MEM: IN A,(SLOT3)
|
|||||||
; JP SWAP_RAM_DRIVES
|
; JP SWAP_RAM_DRIVES
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
.SAVE_RMD: LD A,(IX)
|
; SAVE_CHAINS: LD A,(IX)
|
||||||
INC IX
|
; INC IX
|
||||||
OR A
|
; OR A
|
||||||
LD L,A
|
; LD L,A
|
||||||
CALL NZ,COPY_CHAIN
|
; CALL NZ,COPY_CHAIN
|
||||||
DJNZ .SAVE_RMD
|
; DJNZ SAVE_CHAINS
|
||||||
RET
|
; RET
|
||||||
;
|
;
|
||||||
|
|
||||||
;
|
;
|
||||||
@ -366,15 +373,13 @@ CLEAR_MEM: IN A,(SLOT3)
|
|||||||
; RETI
|
; RETI
|
||||||
; ;
|
; ;
|
||||||
|
|
||||||
INT_OFF:
|
INT_OFF: DI
|
||||||
DI
|
|
||||||
LD A,#3F
|
LD A,#3F
|
||||||
LD I,A
|
LD I,A
|
||||||
IM 1
|
IM 1
|
||||||
RET
|
RET
|
||||||
|
;
|
||||||
INT_ON:
|
INT_ON: DI
|
||||||
DI
|
|
||||||
LD A,+high INT_POINTER
|
LD A,+high INT_POINTER
|
||||||
LD I,A
|
LD I,A
|
||||||
LD HL,INT_HANDLER
|
LD HL,INT_HANDLER
|
||||||
@ -403,38 +408,40 @@ EXIT_SETUP: CALL INT_OFF
|
|||||||
LD A,B
|
LD A,B
|
||||||
JR NZ,.Set_Page41
|
JR NZ,.Set_Page41
|
||||||
CP 'X'
|
CP 'X'
|
||||||
JR Z,.vROMs_Installed
|
;JR Z,.vROMs_Installed
|
||||||
;
|
;
|
||||||
.Set_Page41: CALL ZXMODE_SETUP.Set_Page41
|
.Set_Page41: CALL NZ,ZXMODE_SETUP.Set_Page41
|
||||||
.vROMs_Installed:
|
.vROMs_Installed:
|
||||||
XOR A
|
; XOR A
|
||||||
LD BC,4*256 + BIOS.ZX_MEMORY_MANAGER ; [ ] free zx pages! HARDCODE MANAGE_ZX_PAGES.GET_SCORP_RAM
|
; LD BC,4*256 + BIOS.ZX_MEMORY_MANAGER ; [ ] free zx pages! HARDCODE MANAGE_ZX_PAGES.GET_SCORP_RAM
|
||||||
RST ToBIOS_18 ;!TODO áâà ¨¢ âì ¢ BIOS zx mode
|
; RST ToBIOS_18 ;!TODO áâà ¨¢ âì ¢ BIOS zx mode
|
||||||
JR NC,.set_ZX_params
|
; JR NC,.set_ZX_params
|
||||||
|
; ;
|
||||||
|
; CALL ScreenPOS.CRLF
|
||||||
|
; LD A,msgStrings.noMemZX
|
||||||
|
; LD E,COLORS.CGA.INK.RED
|
||||||
|
; CALL POSTMSC
|
||||||
|
; .loop_di: DI
|
||||||
|
; HALT
|
||||||
|
; JR .loop_di
|
||||||
;
|
;
|
||||||
CALL ScreenPOS.CRLF
|
.set_ZX_params: ;LD H,A ; Block_ID.vRAM
|
||||||
LD A,msgStrings.noMemZX
|
;LD DE,256*0 + CNF_PORT.TURBO.ON + CNF_PORT.CNF_0
|
||||||
LD E,COLORS.CGA.INK.RED
|
;LD A,(SYS_PAGE.Block_ID.vROM)
|
||||||
CALL POSTMSC
|
;LD L,A
|
||||||
.loop_di: DI
|
;LD B,#FE ; !HARDCODE Port All Mode data
|
||||||
HALT
|
;LD A,%0000'0010
|
||||||
JR .loop_di
|
;EX AF,AF'
|
||||||
|
;XOR A
|
||||||
;
|
;
|
||||||
.set_ZX_params: LD H,A ; Block_ID.vRAM
|
|
||||||
;!TODO áâà ¨¢ âì ¢ BIOS zx mode
|
|
||||||
LD DE,256*0 + CNF_PORT.TURBO.ON + CNF_PORT.CNF_0
|
|
||||||
LD A,(SYS_PAGE.Block_ID.vROM)
|
|
||||||
LD L,A
|
|
||||||
LD B,#FE ; !HARDCODE Port All Mode data
|
|
||||||
LD A,%0000'0010
|
|
||||||
EX AF,AF'
|
|
||||||
XOR A
|
|
||||||
;
|
|
||||||
;POP HL ; <20>… 㦥. ¤à¥á ¢®§¢à â ¢ EXP ¨§ SETUP
|
|
||||||
LD A,ROM.EXTENSION
|
LD A,ROM.EXTENSION
|
||||||
OUT (SYS_PORT.ROM),A
|
OUT (SYS_PORT.ROM),A
|
||||||
XOR A
|
;XOR A
|
||||||
JP GOTO_SPECTRUM.FN
|
;JP GOTO_SPECTRUM.FN
|
||||||
|
;!TODO áâà ¨¢ âì ¢ BIOS zx mode
|
||||||
|
JP SPRINTER_ZX
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; ELSE
|
; ELSE
|
||||||
;LD BC,#020E
|
;LD BC,#020E
|
||||||
@ -1456,26 +1463,26 @@ GET_ID: LD HL,memBUFFER.ID
|
|||||||
;R01 RET
|
;R01 RET
|
||||||
|
|
||||||
|
|
||||||
COPY_CHAIN: LD E,L
|
; COPY_CHAIN: 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 COPY_CHAIN
|
||||||
|
|
||||||
RESTORE_CHAINS: LD HL,MEMMAP2
|
; ; ‚室: HL - ª®¯¨ï RAM_TABLE ®âªã¤ ª®¯¨à®¢ âì
|
||||||
LD DE,SYS_PAGE.RAM_TABLE
|
; RESTORE_CHAINS: LD DE,SYS_PAGE.RAM_TABLE
|
||||||
XOR A
|
; XOR A
|
||||||
.loop: CP (HL)
|
; .loop: CP (HL)
|
||||||
JR Z,.NoCopy
|
; JR Z,.NoCopy
|
||||||
LD E,L
|
; LD E,L
|
||||||
LDI
|
; LDI
|
||||||
DEC L
|
; DEC L
|
||||||
.NoCopy: INC L
|
; .NoCopy: INC L
|
||||||
JR NZ,.loop
|
; JR NZ,.loop
|
||||||
RET
|
; RET
|
||||||
|
|
||||||
;---------------------------------------------------------------[]
|
;---------------------------------------------------------------[]
|
||||||
;REGISTER #1E
|
;REGISTER #1E
|
||||||
|
|||||||
@ -573,7 +573,7 @@ msgStrings:
|
|||||||
_mSetStr bootFail, tmp_Counter : DZ ' fail' ; !FIXIT strFail
|
_mSetStr bootFail, tmp_Counter : DZ ' fail' ; !FIXIT strFail
|
||||||
_mSetStr bootOk, tmp_Counter : DZ ' OK'
|
_mSetStr bootOk, tmp_Counter : DZ ' OK'
|
||||||
_mSetStr afterBootFail, tmp_Counter : DZ 'PRESS <ENTER> TO REBOOT, <DEL> TO ENTER SETUP OR <ESC> TO ZX-MODE . . .'
|
_mSetStr afterBootFail, tmp_Counter : DZ 'PRESS <ENTER> TO REBOOT, <DEL> TO ENTER SETUP OR <ESC> TO ZX-MODE . . .'
|
||||||
_mSetStr noMemZX, tmp_Counter : DZ 'Error! No free memory to start ZX mode. Press CTRL+ALT+DEL or RESET.'
|
; _mSetStr noMemZX, tmp_Counter : DZ 'Error! No free memory to start ZX mode. Press CTRL+ALT+DEL or RESET.'
|
||||||
;
|
;
|
||||||
_mSetStr parLang, tmp_Counter : DZ 'Language (ï§ëª) : '
|
_mSetStr parLang, tmp_Counter : DZ 'Language (ï§ëª) : '
|
||||||
_mSetStr valLangEng, tmp_Counter : DZ 'English '
|
_mSetStr valLangEng, tmp_Counter : DZ 'English '
|
||||||
@ -733,7 +733,7 @@ msgRusStrings:
|
|||||||
_mSetStrRus bootFail, tmp_Counter : DZ ' ¥¢®§¬®¦¥'
|
_mSetStrRus bootFail, tmp_Counter : DZ ' ¥¢®§¬®¦¥'
|
||||||
_mSetStrRus bootOk, tmp_Counter : DZ ' OK'
|
_mSetStrRus bootOk, tmp_Counter : DZ ' OK'
|
||||||
_mSetStrRus afterBootFail, tmp_Counter : DZ '<EFBFBD>€†Œˆ’… <ENTER> „‹Ÿ <EFBFBD>…<EFBFBD>…‡€ƒ<EFBFBD>“‡Šˆ, <DEL> „‹Ÿ <EFBFBD>€‘’<EFBFBD>Ž…Š ˆ‹ˆ <ESC> „‹Ÿ ZX-MODE . . .'
|
_mSetStrRus afterBootFail, tmp_Counter : DZ '<EFBFBD>€†Œˆ’… <ENTER> „‹Ÿ <EFBFBD>…<EFBFBD>…‡€ƒ<EFBFBD>“‡Šˆ, <DEL> „‹Ÿ <EFBFBD>€‘’<EFBFBD>Ž…Š ˆ‹ˆ <ESC> „‹Ÿ ZX-MODE . . .'
|
||||||
_mSetStrRus noMemZX, tmp_Counter : DZ 'Žè¨¡ª ! <EFBFBD>¥¤®áâ â®ç® ¯ ¬ï⨠¤«ï áâ àâ ZX Mode. <EFBFBD> ¦¬¨â¥ CTRL+ALT+DEL ¨«¨ RESET.'
|
; _mSetStrRus noMemZX, tmp_Counter : DZ 'Žè¨¡ª ! <20>¥¤®áâ â®ç® ¯ ¬ï⨠¤«ï áâ àâ ZX Mode. <20> ¦¬¨â¥ CTRL+ALT+DEL ¨«¨ RESET.'
|
||||||
;
|
;
|
||||||
_mSetStrRus parLang, tmp_Counter : DZ 'Ÿ§ëª (language) : '
|
_mSetStrRus parLang, tmp_Counter : DZ 'Ÿ§ëª (language) : '
|
||||||
_mSetStrRus valLangEng, tmp_Counter : DZ 'English '
|
_mSetStrRus valLangEng, tmp_Counter : DZ 'English '
|
||||||
|
|||||||
@ -473,7 +473,7 @@ FN_ENTRANCE: ;!TODO A - TASK NUMBER
|
|||||||
PUSH DE
|
PUSH DE
|
||||||
;-----------------------------------;
|
;-----------------------------------;
|
||||||
; Sub FN #8x
|
; Sub FN #8x
|
||||||
BIT 7,B
|
.API: BIT 7,B
|
||||||
JR NZ,INIT_vROM ; B = 128
|
JR NZ,INIT_vROM ; B = 128
|
||||||
; Sub FN #4x
|
; Sub FN #4x
|
||||||
BIT 6,B
|
BIT 6,B
|
||||||
@ -517,8 +517,7 @@ FREE_vRAM: LD A,(SYS_PAGE.Block_ID.vRAM)
|
|||||||
RET Z
|
RET Z
|
||||||
LD C,BIOS.FreeMem
|
LD C,BIOS.FreeMem
|
||||||
CALL ToBIOS_FromEXT
|
CALL ToBIOS_FromEXT
|
||||||
RET C
|
LD A,0
|
||||||
XOR A
|
|
||||||
LD (SYS_PAGE.Block_ID.vRAM),A
|
LD (SYS_PAGE.Block_ID.vRAM),A
|
||||||
RET
|
RET
|
||||||
;--------------;
|
;--------------;
|
||||||
@ -529,7 +528,7 @@ FREE_vROM: LD A,(SYS_PAGE.Block_ID.vROM)
|
|||||||
RET Z
|
RET Z
|
||||||
LD C,BIOS.FreeMem
|
LD C,BIOS.FreeMem
|
||||||
CALL ToBIOS_FromEXT
|
CALL ToBIOS_FromEXT
|
||||||
RET C
|
PUSH AF
|
||||||
XOR A
|
XOR A
|
||||||
LD (SYS_PAGE.Block_ID.vROM),A
|
LD (SYS_PAGE.Block_ID.vROM),A
|
||||||
;--------------;
|
;--------------;
|
||||||
@ -544,6 +543,7 @@ RES_FLAG_ZXvROM: ;
|
|||||||
LD (Spec_Page.flag_X),A
|
LD (Spec_Page.flag_X),A
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
|
POP AF
|
||||||
RET
|
RET
|
||||||
;-----------------------------------------------------------------------;
|
;-----------------------------------------------------------------------;
|
||||||
|
|
||||||
@ -636,7 +636,6 @@ GET_SCORP_RAM: CALL FREE_vRAM
|
|||||||
|
|
||||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||||
; [ ] free zx pages!
|
; [ ] free zx pages!
|
||||||
; <20>…<EFBFBD>…„€‚€’œ: ®¬¥à vROM, vRAM, CONFIG_DE, FN_SYNC, PORT_ALL_MODE, MEM_TYPE
|
|
||||||
; ‚室: D: 0 - BASIC 128, 1 - BASIC 48, 2 - TR-DOS 128,
|
; ‚室: D: 0 - BASIC 128, 1 - BASIC 48, 2 - TR-DOS 128,
|
||||||
; 3 - EXPANSION. C § ªàëâ묨 128-¬¨ ¯®àâ ¬¨:
|
; 3 - EXPANSION. C § ªàëâ묨 128-¬¨ ¯®àâ ¬¨:
|
||||||
; 4 - TR-DOS, 5 - BASIC 48
|
; 4 - TR-DOS, 5 - BASIC 48
|
||||||
@ -689,6 +688,7 @@ GOTO_SPECTRUM: LD A,BIOS.Error.NotSupported
|
|||||||
EXX
|
EXX
|
||||||
;
|
;
|
||||||
LD A,C
|
LD A,C
|
||||||
|
PUSH BC
|
||||||
EXX
|
EXX
|
||||||
AND %0000'0100 ;!TODO § ¯®¬¨âì/¢®ááâ ®¢¨âì ª á⮬ãî ¯ «¨âàã?
|
AND %0000'0100 ;!TODO § ¯®¬¨âì/¢®ááâ ®¢¨âì ª á⮬ãî ¯ «¨âàã?
|
||||||
LD BC,BIOS.SET_PAL_INIT.ZX
|
LD BC,BIOS.SET_PAL_INIT.ZX
|
||||||
@ -703,6 +703,9 @@ GOTO_SPECTRUM: LD A,BIOS.Error.NotSupported
|
|||||||
LD BC,BIOS.LP_OPEN_S.ZX_32x24
|
LD BC,BIOS.LP_OPEN_S.ZX_32x24
|
||||||
CALL ToBIOS_FromEXT
|
CALL ToBIOS_FromEXT
|
||||||
;
|
;
|
||||||
|
LD BC,BIOS.SWAP_RAM_DRIVES.ZX
|
||||||
|
CALL ToBIOS_FromEXT
|
||||||
|
;
|
||||||
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
|
||||||
@ -714,13 +717,17 @@ GOTO_SPECTRUM: LD A,BIOS.Error.NotSupported
|
|||||||
;CP 16
|
;CP 16
|
||||||
;
|
;
|
||||||
LD D,B
|
LD D,B
|
||||||
|
EXX
|
||||||
|
POP BC
|
||||||
|
EXX
|
||||||
;.TASK_0: § ¤ ç 0, ०¨¬ 256 ª¨«®¡ ©â
|
;.TASK_0: § ¤ ç 0, ०¨¬ 256 ª¨«®¡ ©â
|
||||||
.START_TASK: XOR A
|
.START_TASK: XOR A
|
||||||
OUT (RGADR),A ; ॣ¨áâà ¢¨¤¥® ¤à¥á
|
OUT (RGADR),A ; ॣ¨áâà ¢¨¤¥® ¤à¥á
|
||||||
OUT (RGMOD),A ; ॣ¨áâà ¬®¤ë
|
OUT (RGMOD),A ; ॣ¨áâà ¬®¤ë
|
||||||
;
|
;
|
||||||
LD IY,.BASIC_128
|
LD IY,.BASIC_128
|
||||||
JP INIT_PAGES ; ¨¨æ¨ «¨§ æ¨ï ®¬¥à®¢ áâà ¨æ ०¨¬ ᯥªâàã¬
|
;!TODO ¥á«¨ 48ª â® ¥ 㦮? ; [ ] free zx pages!
|
||||||
|
JR INIT_PAGES ; ¨¨æ¨ «¨§ æ¨ï ®¬¥à®¢ áâà ¨æ ०¨¬ ᯥªâàã¬
|
||||||
;start_basic:
|
;start_basic:
|
||||||
.BASIC_128: LD SP,#C000
|
.BASIC_128: LD SP,#C000
|
||||||
LD HL,RES128_PROG
|
LD HL,RES128_PROG
|
||||||
|
|||||||
@ -421,7 +421,10 @@ TURBO_ON:
|
|||||||
|
|
||||||
CLEAR_RAM:
|
CLEAR_RAM:
|
||||||
DI
|
DI
|
||||||
LD C,BIOS.FullInit ; [ ] free zx pages!
|
; [ ] free zx pages!
|
||||||
|
LD BC,BIOS.REINIT.FREE_NO_ZX_MEM
|
||||||
|
;LD C,BIOS.FullInit
|
||||||
|
;
|
||||||
RST_to_BIOS
|
RST_to_BIOS
|
||||||
; ¯à¨ ®ç¨á⪥ ¯ ¬ï⨠¨§ ¬¥î ᯥªâà㬠¢®§¢à â ¢ DSS ¯® CAD
|
; ¯à¨ ®ç¨á⪥ ¯ ¬ï⨠¨§ ¬¥î ᯥªâà㬠¢®§¢à â ¢ DSS ¯® CAD
|
||||||
; ¡ã¤¥â ®¯ áë¬ (RAM Blocks ®á¢®¡®¤¨«¨áì),
|
; ¡ã¤¥â ®¯ áë¬ (RAM Blocks ®á¢®¡®¤¨«¨áì),
|
||||||
@ -477,11 +480,11 @@ Hardware_Menu:
|
|||||||
Hardware_Menu_TAB:
|
Hardware_Menu_TAB:
|
||||||
; DW TR_DOS
|
; DW TR_DOS
|
||||||
; DW SP_DOS
|
; DW SP_DOS
|
||||||
DW SPRINTER_1X
|
DW SPRINTER_ZX
|
||||||
DW AY8910_X
|
DW ZX_SPECTRUM_128
|
||||||
DW PENTAGON
|
DW PENTAGON_128
|
||||||
DW SCORPION
|
DW SCORPION_256
|
||||||
DW PENTAGON512
|
DW PENTAGON_512
|
||||||
DW SPRINTER_reset ;SPRINTER_2X
|
DW SPRINTER_reset ;SPRINTER_2X
|
||||||
DW RET_FROM_M
|
DW RET_FROM_M
|
||||||
|
|
||||||
@ -517,117 +520,204 @@ Hardware_Menu_STR:
|
|||||||
|
|
||||||
;**************************************************
|
;**************************************************
|
||||||
;Sprinter ZX
|
;Sprinter ZX
|
||||||
SPRINTER_1X:
|
;[ ] free zx pages!
|
||||||
CALL _SET_CNF
|
|
||||||
LD C,BIOS.RST_CONF.SP97_1
|
|
||||||
RST_to_BIOS
|
|
||||||
CALL CNF_PN_320
|
|
||||||
LD L,2 ;FN_SYNC.INT_PENT
|
|
||||||
JR AY8910_X.SET_DE
|
|
||||||
;
|
|
||||||
;ZX Spectrum
|
|
||||||
AY8910_X:
|
|
||||||
CALL _SET_CNF
|
|
||||||
LD C,BIOS.RST_CONF.AY8910
|
|
||||||
RST_to_BIOS
|
|
||||||
|
|
||||||
LD A,#FA ; no ACC, Original waits
|
/*
|
||||||
LD (Port_All_Mode),A
|
|
||||||
|
|
||||||
CALL CNF_SC_312
|
LD H,A ; Block_ID.vRAM
|
||||||
LD L,3 ;FN_SYNC.INT_ORIG
|
;!TODO áâà ¨¢ âì ¢ BIOS zx mode
|
||||||
.SET_DE:
|
LD DE,256*0 + CNF_PORT.TURBO.ON + CNF_PORT.CNF_0
|
||||||
LD DE,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON
|
LD A,(SYS_PAGE.Block_ID.vROM)
|
||||||
CALL CONFIG_SET
|
LD L,A
|
||||||
CALL CLS ;!FIXIT 㦮 «¨?
|
LD B,#FE ; !HARDCODE Port All Mode data
|
||||||
RET
|
LD A,%0000'0010
|
||||||
;
|
|
||||||
|
|
||||||
SCORPION:
|
|
||||||
CALL _SET_CNF
|
|
||||||
CALL CNF_SC_312
|
|
||||||
LD L,1 ;FN_SYNC.INT_SCORP
|
|
||||||
LD DE,CNF_PORT.CNF_1 + CNF_PORT.TURBO.ON
|
|
||||||
JR CONFIG_SET
|
|
||||||
|
|
||||||
PENTAGON:
|
|
||||||
CALL _SET_CNF
|
|
||||||
CALL CNF_PN_320
|
|
||||||
LD L,2 ;FN_SYNC.INT_PENT
|
|
||||||
LD DE,CNF_PORT.CNF_1 + CNF_PORT.TURBO.ON
|
|
||||||
JR CONFIG_SET
|
|
||||||
|
|
||||||
PENTAGON512:
|
|
||||||
CALL _SET_CNF
|
|
||||||
CALL CNF_PN_320
|
|
||||||
LD L,2 ;FN_SYNC.INT_PENT
|
|
||||||
LD DE,CNF_PORT.CNF_1 + CNF_PORT.TURBO.ON + CNF_PORT.CNF_512
|
|
||||||
; JR CONFIG_SET
|
|
||||||
CONFIG_SET:
|
|
||||||
PUSH DE
|
|
||||||
|
|
||||||
EI
|
|
||||||
HALT
|
|
||||||
DI
|
|
||||||
|
|
||||||
IN A,(SLOT3)
|
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
|
XOR A
|
||||||
|
;
|
||||||
|
;POP HL ; <20>… 㦥. ¤à¥á ¢®§¢à â ¢ EXP ¨§ SETUP
|
||||||
|
LD A,ROM.EXTENSION
|
||||||
|
OUT (SYS_PORT.ROM),A
|
||||||
|
XOR A
|
||||||
|
JP GOTO_SPECTRUM.FN
|
||||||
|
|
||||||
|
; ‚室: D: 0 - BASIC 128, 1 - BASIC 48, 2 - TR-DOS 128,
|
||||||
|
; 3 - EXPANSION. C § ªàëâ묨 128-¬¨ ¯®àâ ¬¨:
|
||||||
|
; 4 - TR-DOS, 5 - BASIC 48
|
||||||
|
; E: § 票¥ ¤«ï SYS_PORT/CNF_PORT
|
||||||
|
; H: ;!TODO Block_ID.vROM
|
||||||
|
; L: Block_ID.vRAM
|
||||||
|
; A: TASK Number = 0
|
||||||
|
; B: Port All Mode
|
||||||
|
;A'[1..0]: 1 - int scorp, 2 - int pent, 3 - int ZX
|
||||||
|
; A'[2]: 0 - set default palette, 1 - don't change palette
|
||||||
|
; A'[7]: 0 - 320, 1 - 312 áâப
|
||||||
|
|
||||||
|
; 1 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 48k. 3 áâà ¨æë
|
||||||
|
; 2 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 128k. 2+6 áâà ¨æë
|
||||||
|
; 3 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 512k. 2+30 áâà ¨æë
|
||||||
|
; 4 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Scorpion 256k. 2+6+8 áâà ¨æë
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
SPRINTER_ZX: ;DI
|
||||||
|
;LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON
|
||||||
|
;OUT (SYS_PORT.ROM),A
|
||||||
|
;LD SP,SYS_PAGE.SYS_SP
|
||||||
|
;LD A,SYS_PAGE
|
||||||
|
;OUT (SLOT3),A
|
||||||
|
;
|
||||||
|
LD A,BIOS.RST_CONF.SP97_1
|
||||||
|
LD DE,4*256 + CNF_PORT.TURBO.ON + CNF_PORT.CNF_0 ; !HARDCODE 4 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Scorpion 256k. 2+6+8 áâà ¨æë
|
||||||
|
LD BC,#FE*256 + %0000'0010 ; !HARDCODE Port All Mode data. int pent, set default palette, 320 áâப
|
||||||
|
JR PREPARE_TO_START_ZX
|
||||||
|
;
|
||||||
|
ZX_SPECTRUM_128:
|
||||||
|
;DI
|
||||||
|
;LD SP,SYS_PAGE.SYS_SP
|
||||||
|
;LD A,SYS_PAGE
|
||||||
|
;OUT (SLOT3),A
|
||||||
|
;
|
||||||
|
LD A,BIOS.RST_CONF.AY8910
|
||||||
|
LD DE,2*256 + CNF_PORT.CNF_1 + CNF_PORT.TURBO.ON + CNF_PORT.SCORP_RESET ; !HARDCODE 2 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 128
|
||||||
|
LD BC,#FA*256 + %1000'0011
|
||||||
|
JR PREPARE_TO_START_ZX
|
||||||
|
|
||||||
|
SCORPION_256: ;DI
|
||||||
|
;LD SP,SYS_PAGE.SYS_SP
|
||||||
|
;LD A,SYS_PAGE
|
||||||
|
;OUT (SLOT3),A
|
||||||
|
;
|
||||||
|
LD A,BIOS.RST_CONF.AY8910
|
||||||
|
LD DE,4*256 + CNF_PORT.TURBO.ON + CNF_PORT.CNF_1 ; !HARDCODE 4 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Scorpion 256k. 2+6+8 áâà ¨æë
|
||||||
|
LD BC,#FE*256 + %1000'0001
|
||||||
|
;JR PREPARE_TO_START_ZX
|
||||||
|
PREPARE_TO_START_ZX:
|
||||||
|
DI
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON
|
||||||
|
OUT (SYS_PORT.ROM),A
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
LD (SYS_PAGE.CONFIG_DE),DE
|
|
||||||
;!FIXIT ¥áâì «¨ á¬ëá« ¤¥« âì ¤® FN_SYNC?
|
|
||||||
LD A,(ZX_VARS.BORDER)
|
|
||||||
RRCA
|
|
||||||
RRCA
|
|
||||||
RRCA
|
|
||||||
AND 7
|
|
||||||
OUT (BorderColor),A
|
|
||||||
;
|
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (SLOT3),A
|
;
|
||||||
|
PUSH BC
|
||||||
LD A,L
|
PUSH DE
|
||||||
LD C,BIOS.FN_SYNC
|
PUSH DE
|
||||||
|
;
|
||||||
|
LD C,A
|
||||||
RST_to_BIOS
|
RST_to_BIOS
|
||||||
|
;
|
||||||
LD HL,#4104 ;!HARDCODE
|
|
||||||
LD E,0
|
|
||||||
LD BC,256*4 + BIOS.LP_OPEN_S ;!HARDCODE
|
|
||||||
RST_to_BIOS
|
|
||||||
|
|
||||||
LD HL,#5104 ;!HARDCODE
|
|
||||||
LD E,0
|
|
||||||
LD BC,256*4 + BIOS.LP_OPEN_S
|
|
||||||
RST_to_BIOS
|
|
||||||
|
|
||||||
POP DE
|
POP DE
|
||||||
LD A,E
|
LD B,D
|
||||||
OUT (SYS_PORT.ROM),A
|
;LD C,BIOS.ZX_MEMORY_MANAGER
|
||||||
|
;RST_to_BIOS
|
||||||
|
CALL MANAGE_ZX_PAGES.FN_ENTRANCE.API
|
||||||
|
JR C,.loop_rst
|
||||||
|
;
|
||||||
|
POP DE
|
||||||
|
POP BC
|
||||||
|
;
|
||||||
|
LD D,0 ; !HARDCODE â®çª ¢å®¤ ¢ <20>‡“ ᯥªâàã¬
|
||||||
|
LD H,A
|
||||||
|
LD A,(SYS_PAGE.Block_ID.vROM)
|
||||||
|
LD L,A
|
||||||
|
LD A,C
|
||||||
|
EX AF,AF'
|
||||||
|
XOR A
|
||||||
|
JP GOTO_SPECTRUM.FN
|
||||||
|
;
|
||||||
|
.loop_rst: LD BC,BIOS.REINIT.HARD_RESET
|
||||||
|
RST_to_BIOS
|
||||||
|
JR .loop_rst
|
||||||
|
|
||||||
IM 1
|
|
||||||
EI
|
PENTAGON_128: ;DI
|
||||||
RET
|
;LD SP,SYS_PAGE.SYS_SP
|
||||||
|
;LD A,SYS_PAGE
|
||||||
|
;OUT (SLOT3),A
|
||||||
|
;
|
||||||
|
LD A,BIOS.RST_CONF.AY8910
|
||||||
|
LD DE,2*256 + CNF_PORT.CNF_1 + CNF_PORT.TURBO.ON + CNF_PORT.SCORP_RESET ; !HARDCODE 2 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 128
|
||||||
|
LD BC,#FE*256 + %0000'0010
|
||||||
|
JR PREPARE_TO_START_ZX
|
||||||
|
|
||||||
|
PENTAGON_512: ;DI
|
||||||
|
;LD SP,SYS_PAGE.SYS_SP
|
||||||
|
;LD A,SYS_PAGE
|
||||||
|
;OUT (SLOT3),A
|
||||||
|
;
|
||||||
|
LD A,BIOS.RST_CONF.AY8910
|
||||||
|
LD DE,3*256 + CNF_PORT.CNF_1 + CNF_PORT.TURBO.ON + CNF_PORT.CNF_512 + CNF_PORT.SCORP_RESET ; !HARDCODE 3 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 512
|
||||||
|
LD BC,#FE*256 + %0000'0010
|
||||||
|
JR PREPARE_TO_START_ZX
|
||||||
|
|
||||||
|
; CONFIG_SET:
|
||||||
|
; PUSH DE
|
||||||
|
|
||||||
|
; EI
|
||||||
|
; HALT
|
||||||
|
; DI
|
||||||
|
|
||||||
|
; IN A,(SLOT3)
|
||||||
|
; EX AF,AF'
|
||||||
|
; LD A,SYS_PAGE
|
||||||
|
; OUT (SLOT3),A
|
||||||
|
; LD (SYS_PAGE.CONFIG_DE),DE
|
||||||
|
; ;!FIXIT ¥áâì «¨ á¬ëá« ¤¥« âì ¤® FN_SYNC?
|
||||||
|
; LD A,(ZX_VARS.BORDER)
|
||||||
|
; RRCA
|
||||||
|
; RRCA
|
||||||
|
; RRCA
|
||||||
|
; AND 7
|
||||||
|
; OUT (BorderColor),A
|
||||||
|
; ;
|
||||||
|
; EX AF,AF'
|
||||||
|
; OUT (SLOT3),A
|
||||||
|
|
||||||
|
; LD A,L
|
||||||
|
; LD C,BIOS.FN_SYNC
|
||||||
|
; RST_to_BIOS
|
||||||
|
|
||||||
|
; LD HL,#4104 ;!HARDCODE
|
||||||
|
; LD E,0
|
||||||
|
; LD BC,256*4 + BIOS.LP_OPEN_S ;!HARDCODE
|
||||||
|
; RST_to_BIOS
|
||||||
|
|
||||||
|
; LD HL,#5104 ;!HARDCODE
|
||||||
|
; LD E,0
|
||||||
|
; LD BC,256*4 + BIOS.LP_OPEN_S
|
||||||
|
; RST_to_BIOS
|
||||||
|
|
||||||
|
; POP DE
|
||||||
|
; LD A,E
|
||||||
|
; OUT (SYS_PORT.ROM),A
|
||||||
|
|
||||||
|
; IM 1
|
||||||
|
; EI
|
||||||
|
; JP CLS ;!FIXIT 㦮 «¨?
|
||||||
|
|
||||||
SPRINTER_reset:
|
SPRINTER_reset:
|
||||||
CALL _SET_CNF
|
|
||||||
LD BC,256*BIOS.REINIT.SOFT_RESET + BIOS.REINIT
|
|
||||||
JP_to_BIOS
|
|
||||||
|
|
||||||
_SET_CNF:
|
|
||||||
DI
|
DI
|
||||||
LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON
|
LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON
|
||||||
OUT (SYS_PORT.ROM),A
|
OUT (SYS_PORT.ROM),A
|
||||||
RET
|
LD BC,BIOS.REINIT.SOFT_RESET
|
||||||
|
JP_to_BIOS
|
||||||
|
|
||||||
CNF_SC_312:
|
; _SET_CNF:
|
||||||
LD A,Port_VSYNC.SET_312L
|
; ;DI
|
||||||
OUT (Port_VSYNC),A
|
; LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON
|
||||||
RET
|
; OUT (SYS_PORT.ROM),A
|
||||||
|
; RET
|
||||||
|
|
||||||
CNF_PN_320:
|
; CNF_SC_312:
|
||||||
LD A,Port_VSYNC.SET_320L
|
; LD A,Port_VSYNC.SET_312L
|
||||||
OUT (Port_VSYNC),A
|
; OUT (Port_VSYNC),A
|
||||||
RET
|
; RET
|
||||||
|
|
||||||
|
; CNF_PN_320:
|
||||||
|
; LD A,Port_VSYNC.SET_320L
|
||||||
|
; OUT (Port_VSYNC),A
|
||||||
|
; RET
|
||||||
|
|
||||||
; LD A,CNF_0
|
; LD A,CNF_0
|
||||||
; OUT (SYS_PORT.ROM),A
|
; OUT (SYS_PORT.ROM),A
|
||||||
|
|||||||
@ -170,9 +170,3 @@
|
|||||||
ENDIF
|
ENDIF
|
||||||
ENDM
|
ENDM
|
||||||
;
|
;
|
||||||
|
|
||||||
;
|
|
||||||
; MACRO
|
|
||||||
|
|
||||||
; ENDM
|
|
||||||
;
|
|
||||||
Loading…
Reference in New Issue
Block a user