beta "free zx pages"
This commit is contained in:
parent
421eee63a9
commit
1a13295ae3
@ -1 +1 @@
|
|||||||
Subproject commit 7e00c2aa909241367878004ad104b56abb907f80
|
Subproject commit 14a3896e7283495e2bf55cc81a995f5f1e88e539
|
||||||
@ -39,6 +39,196 @@ RST_CONF:
|
|||||||
JR .INT_PLD
|
JR .INT_PLD
|
||||||
;--[]
|
;--[]
|
||||||
|
|
||||||
|
|
||||||
|
;--[]
|
||||||
|
.CUSTOM: LD C,A
|
||||||
|
; ãáâ ¢«¨¢ ¥¬ ã«¥¢ãî ª àâã ¯®à⮢
|
||||||
|
LD A,CNF_PORT.CNF_0
|
||||||
|
OUT (SYS_PORT.ON),A
|
||||||
|
LD A,C
|
||||||
|
;
|
||||||
|
CP #80 ;!FIXIT âãâ ⥯¥àì ¬®¦¥â «î¡®¥ ç¨á«® ¡ëâì ã áâ àëå ¯à®£ ; [ ] free zx pages
|
||||||
|
JR NC,.CHOOSE_CNF
|
||||||
|
; only for old FLEX10K soft compatible
|
||||||
|
.crutch: LD C,SLOT3
|
||||||
|
IN B,(C)
|
||||||
|
OUT (C),A ; PAGE á ¯à®è¨¢ª®©
|
||||||
|
LD DE,(#C090) ; PLD-ID
|
||||||
|
OUT (C),B ; RET page
|
||||||
|
;--[] ;JR INT_PLD
|
||||||
|
.INT_PLD: ; only for old FLEX10K soft compatible
|
||||||
|
LD C,SLOT3
|
||||||
|
IN B,(C)
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (C),A
|
||||||
|
LD (SYS_PAGE.CONFIG_BYTE),DE
|
||||||
|
OUT (C),B
|
||||||
|
;
|
||||||
|
LD A,E ; config-byte
|
||||||
|
CP #FF
|
||||||
|
LD A,#80
|
||||||
|
JR Z,.YES_CBL
|
||||||
|
XOR A
|
||||||
|
.YES_CBL: LD BC,CBL.SYS_PORT
|
||||||
|
OUT (C),A
|
||||||
|
;
|
||||||
|
LD A,E ; config-byte
|
||||||
|
OR #FE ;!HARDCODE
|
||||||
|
LD BC,Port_All_Mode ; SYSTEM Spectrum/Sprinter
|
||||||
|
OUT (C),A
|
||||||
|
;
|
||||||
|
LD A,#3C
|
||||||
|
OUT (FDC_93.DrvCTRL),A
|
||||||
|
; ¢®ááâ ¢«¨¢ ¥¬ ª àâã ¯®à⮢
|
||||||
|
LD C,SLOT3
|
||||||
|
IN B,(C)
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (C),A
|
||||||
|
LD A,(SYS_PAGE.CONFIG_DE.CNF_PORT)
|
||||||
|
OUT (C),B
|
||||||
|
OUT (SYS_PORT.ON),A
|
||||||
|
XOR A
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
;[x]
|
||||||
|
.CHOOSE_CNF: ; [ ] bug with "free zx pages"
|
||||||
|
LD A,high ZX_MEM_PORT.Scorpion
|
||||||
|
IN A,(ZX_MEM_PORT) ;!HARDCODE
|
||||||
|
RRCA
|
||||||
|
LD A,C
|
||||||
|
JR C,.not_vRAM_page
|
||||||
|
;
|
||||||
|
IN A,(SLOT3)
|
||||||
|
CP C
|
||||||
|
LD A,C
|
||||||
|
JR Z,.crutch
|
||||||
|
; [x]
|
||||||
|
.not_vRAM_page: CP ACEX.Config_PG.Sp2000_SoftSetUp
|
||||||
|
JP Z,.ReturnSoftReset
|
||||||
|
;
|
||||||
|
CP ACEX.Config_PG.Sp2000
|
||||||
|
JR Z,.INIT_ACEX
|
||||||
|
;
|
||||||
|
CP ACEX.Config_PG.Sp2000_SetUp
|
||||||
|
JR Z,.SP2000
|
||||||
|
;
|
||||||
|
; only for old FLEX10K soft compatible
|
||||||
|
CP ACEX.Config_PG.Sp97_1
|
||||||
|
LD DE,ACEX.Config_ID.Sp97_1
|
||||||
|
JR Z,.INT_PLD
|
||||||
|
;
|
||||||
|
CP ACEX.Config_PG.Sp97_2
|
||||||
|
LD DE,ACEX.Config_ID.Sp97_2
|
||||||
|
JR Z,.INT_PLD
|
||||||
|
;
|
||||||
|
CP ACEX.Config_PG.Sp97_AY
|
||||||
|
LD DE,ACEX.Config_ID.Sp97_AY
|
||||||
|
JR Z,.INT_PLD
|
||||||
|
SCF
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
;[x]
|
||||||
|
.INIT_ACEX: DI
|
||||||
|
; ãáâ ¢«¨¢ ¥¬ ã«¥¢ãî ª àâã ¯®à⮢
|
||||||
|
; LD A,CNF_PORT.CNF_0
|
||||||
|
; OUT (SYS_PORT.ON),A
|
||||||
|
; ¨ â ª ¯®ïâ® çâ® ¤¥« ¥â
|
||||||
|
IN A,(SLOT3) ; á®åà 塞 ®¬¥à ¢®âªã⮩ áâà ¨æë
|
||||||
|
PUSH AF
|
||||||
|
LD A,Spec_Page
|
||||||
|
OUT (SLOT3),A
|
||||||
|
; ¯à®¢¥à塞 à §¬¥à ¡«®ª á ª®ä®© ¨ ¯®«ãç ¥¬ áâà ¨æë ª®äë
|
||||||
|
LD HL,Spec_Page.bitstream_pages
|
||||||
|
LD A,B
|
||||||
|
AND A
|
||||||
|
JR Z,.INIT_ACEX.ReloadConfFromROM
|
||||||
|
;
|
||||||
|
CALL EMM.GetMemBlkPages
|
||||||
|
LD A,B
|
||||||
|
JR C,.INIT_ACEX.ERROR
|
||||||
|
CP BitStream_SizeInPages+1 ; ª®«¨ç¥á⢮ áâà ¨æ ¢ ªíè ¤«ï ¡¨áâਬ ¯«îá ®¤
|
||||||
|
JR NC,.INIT_ACEX.ERROR
|
||||||
|
LD A,(Spec_Page.bitstream_pages)
|
||||||
|
INC A
|
||||||
|
JR Z,.INIT_ACEX.ERROR
|
||||||
|
;
|
||||||
|
.INIT_ACEX.ReloadConfFromROM:
|
||||||
|
; § ª¨¤ë¢ ¥¬ ¢ Spec_Page ¯à®£ã ¤«ï § «¨¢ª¨ ª®äë
|
||||||
|
LD HL,.INIT_ACEX.PROGRAM
|
||||||
|
LD DE,Spec_Page.init_acex
|
||||||
|
LD BC,.INIT_ACEX.PROGRAM.Size
|
||||||
|
LDIR
|
||||||
|
; ¥á«¨ ZF=0, â® ¯à®æ¥¤ãà ᤥ« ¥â à¥á¥â á ¯¥à¥§ «¨¢ª®© ¨§ BIOS, ¨ ç¥ ¨§ Š<>˜
|
||||||
|
CALL Spec_Page.init_acex
|
||||||
|
LD BC,BIOS.REINIT.HARD_RESET
|
||||||
|
;
|
||||||
|
; ¢å®¤¥ ¢ BC ¯ à ¬¥âàë äãªæ¨¨ BIOS
|
||||||
|
.INIT_ACEX.ifSoftreset:
|
||||||
|
; á®åà 塞 ¢®âªãâë¥ áâà ¨æë ¢ Spec_Page
|
||||||
|
IN A,(SLOT0)
|
||||||
|
LD E,A
|
||||||
|
IN A,(SLOT1)
|
||||||
|
LD D,A
|
||||||
|
IN A,(SLOT2)
|
||||||
|
POP HL ; ¢®ááâ ¢«¨¢ ¥¬ ®¬¥à ¢®âªã⮩ áâà ¨æë
|
||||||
|
LD L,A
|
||||||
|
LD (Spec_Page.page_0),DE
|
||||||
|
LD (Spec_Page.page_2),HL
|
||||||
|
; ¤®áâ ñ¬ ¤à¥á ¢®§¢à â ¢ ¢ë§ë¢ îéãî äãªæ¨î ¨ á®åà 塞 ¢ Spec_Page
|
||||||
|
POP DE
|
||||||
|
LD HL,RST_18_1.exit
|
||||||
|
XOR A
|
||||||
|
SBC HL,DE
|
||||||
|
JR NZ,.set_ret ; NZ - ¥á«¨ ¢ë§®¢ ¡ë« ¯® RST #18
|
||||||
|
POP DE ; ¥á«¨ ¢ë§®¢ ¡ë« ¢ އ“ ¯® RST 8
|
||||||
|
INC A
|
||||||
|
.set_ret: LD (Spec_Page.RET_addr),DE
|
||||||
|
; A=0 - SYS_PORT.ON
|
||||||
|
; A=1 - SYS_PORT.OFF
|
||||||
|
LD (Spec_Page.Reload_Version),A
|
||||||
|
LD HL,0
|
||||||
|
ADD HL,SP
|
||||||
|
LD (Spec_Page.Stack_Point),HL
|
||||||
|
; “áâ ¢«¨¢ ¥¬ ª«îç¨
|
||||||
|
LD HL,Spec_Page.flag_R
|
||||||
|
LD (HL),"R"
|
||||||
|
INC HL
|
||||||
|
LD (HL),"S"
|
||||||
|
INC HL
|
||||||
|
LD (HL),"T"
|
||||||
|
;
|
||||||
|
; .. ... ... ..
|
||||||
|
;!TODO ᤥ« âì äãªæ¨î ¯® § «¨¢ª¥ ᢮¥© ª®äë, ¯¥à¥å¢ âã à¥á¥â .
|
||||||
|
; *. ‚室 ¢ ¯®¤äãªæ¨î ⮫쪮 ç¥à¥§ RST 08 ¨«¨ #18
|
||||||
|
; *. ‘®åà ¨âì ¢á¥ áâà ¨æë ¯®«ì§®¢ â¥«ï ¢ SYS_PAGE ¤«ï ¯¥à¥å¢ â à¥á¥â
|
||||||
|
; *. „®áâ âì á® á⥪ ¤à¥á ¢®§¢à â ¨ á®åà ¨âì ¢ SYS_PAGE ¤«ï ¯¥à¥å¢ â à¥á¥â
|
||||||
|
; *. ‘®åà ¨âì ªã¤ -¨¡ã¤ì § 票¥ á⥪
|
||||||
|
; *
|
||||||
|
; .. ... ... ..
|
||||||
|
;LD BC,BIOS.REINIT.HARD_RESET
|
||||||
|
JP_to_BIOS
|
||||||
|
;
|
||||||
|
.ReturnSoftReset:
|
||||||
|
DI
|
||||||
|
; ãáâ ¢«¨¢ ¥¬ ã«¥¢ãî ª àâã ¯®à⮢
|
||||||
|
LD A,CNF_PORT.CNF_0
|
||||||
|
OUT (SYS_PORT.ON),A
|
||||||
|
; ¨ â ª ¯®ïâ® çâ® ¤¥« ¥â
|
||||||
|
IN A,(SLOT3) ; á®åà 塞 ®¬¥à ¢®âªã⮩ áâà ¨æë
|
||||||
|
PUSH AF
|
||||||
|
LD A,Spec_Page
|
||||||
|
OUT (SLOT3),A
|
||||||
|
;
|
||||||
|
LD BC,BIOS.REINIT.SOFT_RESET
|
||||||
|
JR .INIT_ACEX.ifSoftreset
|
||||||
|
;
|
||||||
|
;;;
|
||||||
|
.INIT_ACEX.ERROR:
|
||||||
|
POP AF
|
||||||
|
OUT (SLOT3),A
|
||||||
|
SCF
|
||||||
|
RET
|
||||||
|
;
|
||||||
;--[]
|
;--[]
|
||||||
.ACC_OFF: LD BC,Port_All_Mode
|
.ACC_OFF: LD BC,Port_All_Mode
|
||||||
IN A,(C)
|
IN A,(C)
|
||||||
@ -52,182 +242,6 @@ RST_CONF:
|
|||||||
OUT (C),A
|
OUT (C),A
|
||||||
RET
|
RET
|
||||||
;--[]
|
;--[]
|
||||||
|
|
||||||
;--[]
|
|
||||||
.CUSTOM:
|
|
||||||
CP #80 ;!FIXIT âãâ ⥯¥àì ¬®¦¥â «î¡®¥ ç¨á«® ¡ëâì ã áâ àëå ¯à®£ ; [ ] free zx pages
|
|
||||||
JR NC,.CHOOSE_CNF
|
|
||||||
; only for old FLEX10K soft compatible
|
|
||||||
LD C,SLOT3
|
|
||||||
IN B,(C)
|
|
||||||
OUT (C),A ; PAGE á ¯à®è¨¢ª®©
|
|
||||||
LD DE,(#C090) ; PLD-ID
|
|
||||||
OUT (C),B ; RET page
|
|
||||||
;--[] ;JR INT_PLD
|
|
||||||
.INT_PLD: ; only for old FLEX10K soft compatible
|
|
||||||
LD C,SLOT3
|
|
||||||
IN B,(C)
|
|
||||||
LD A,SYS_PAGE
|
|
||||||
OUT (C),A
|
|
||||||
LD (SYS_PAGE.CONFIG_BYTE),DE
|
|
||||||
OUT (C),B
|
|
||||||
|
|
||||||
LD A,E ; config-byte
|
|
||||||
CP #FF
|
|
||||||
LD A,#80
|
|
||||||
JR Z,.YES_CBL
|
|
||||||
XOR A
|
|
||||||
.YES_CBL:
|
|
||||||
LD BC,CBL.SYS_PORT
|
|
||||||
OUT (C),A
|
|
||||||
|
|
||||||
LD A,E ; config-byte
|
|
||||||
|
|
||||||
OR #FE ;!HARDCODE
|
|
||||||
LD BC,Port_All_Mode ; SYSTEM Spectrum/Sprinter
|
|
||||||
OUT (C),A
|
|
||||||
|
|
||||||
LD A,#3C
|
|
||||||
OUT (FDC_93.DrvCTRL),A
|
|
||||||
|
|
||||||
XOR A
|
|
||||||
RET
|
|
||||||
;
|
|
||||||
;[x]
|
|
||||||
.CHOOSE_CNF:
|
|
||||||
; [ ] bug with "free zx pages"
|
|
||||||
LD C,A
|
|
||||||
IN A,(SLOT3)
|
|
||||||
CP C
|
|
||||||
LD A,C
|
|
||||||
JR Z,.INT_PLD
|
|
||||||
; [x]
|
|
||||||
CP ACEX.Config_PG.Sp2000_SoftSetUp
|
|
||||||
JP Z,.ReturnSoftReset
|
|
||||||
;
|
|
||||||
CP ACEX.Config_PG.Sp2000
|
|
||||||
JR Z,.INIT_ACEX
|
|
||||||
;
|
|
||||||
CP ACEX.Config_PG.Sp2000_SetUp
|
|
||||||
JR Z,.SP2000
|
|
||||||
;
|
|
||||||
|
|
||||||
; only for old FLEX10K soft compatible
|
|
||||||
CP ACEX.Config_PG.Sp97_1
|
|
||||||
LD DE,ACEX.Config_ID.Sp97_1
|
|
||||||
JR Z,.INT_PLD
|
|
||||||
CP ACEX.Config_PG.Sp97_2
|
|
||||||
LD DE,ACEX.Config_ID.Sp97_2
|
|
||||||
JR Z,.INT_PLD
|
|
||||||
CP ACEX.Config_PG.Sp97_AY
|
|
||||||
LD DE,ACEX.Config_ID.Sp97_AY
|
|
||||||
JR Z,.INT_PLD
|
|
||||||
SCF
|
|
||||||
RET
|
|
||||||
;
|
|
||||||
;[x]
|
|
||||||
.INIT_ACEX:
|
|
||||||
DI
|
|
||||||
; ãáâ ¢«¨¢ ¥¬ ã«¥¢ãî ª àâã ¯®à⮢
|
|
||||||
LD A,CNF_PORT.CNF_0
|
|
||||||
OUT (SYS_PORT.ON),A
|
|
||||||
; ¨ â ª ¯®ïâ® çâ® ¤¥« ¥â
|
|
||||||
IN A,(SLOT3) ; á®åà 塞 ®¬¥à ¢®âªã⮩ áâà ¨æë
|
|
||||||
PUSH AF
|
|
||||||
LD A,Spec_Page
|
|
||||||
OUT (SLOT3),A
|
|
||||||
; ¯à®¢¥à塞 à §¬¥à ¡«®ª á ª®ä®© ¨ ¯®«ãç ¥¬ áâà ¨æë ª®äë
|
|
||||||
LD HL,Spec_Page.bitstream_pages
|
|
||||||
LD A,B
|
|
||||||
AND A
|
|
||||||
JR Z,.INIT_ACEX.ReloadConfFromROM
|
|
||||||
;
|
|
||||||
CALL EMM.GetMemBlkPages
|
|
||||||
LD A,B
|
|
||||||
JR C,.INIT_ACEX.ERROR
|
|
||||||
CP BitStream_SizeInPages+1 ; ª®«¨ç¥á⢮ áâà ¨æ ¢ ªíè ¤«ï ¡¨áâਬ ¯«îá ®¤
|
|
||||||
JR NC,.INIT_ACEX.ERROR
|
|
||||||
LD A,(Spec_Page.bitstream_pages)
|
|
||||||
INC A
|
|
||||||
JR Z,.INIT_ACEX.ERROR
|
|
||||||
;
|
|
||||||
.INIT_ACEX.ReloadConfFromROM:
|
|
||||||
; § ª¨¤ë¢ ¥¬ ¢ Spec_Page ¯à®£ã ¤«ï § «¨¢ª¨ ª®äë
|
|
||||||
LD HL,.INIT_ACEX.PROGRAM
|
|
||||||
LD DE,Spec_Page.init_acex
|
|
||||||
LD BC,.INIT_ACEX.PROGRAM.Size
|
|
||||||
LDIR
|
|
||||||
; ¥á«¨ ZF=0, â® ¯à®æ¥¤ãà ᤥ« ¥â à¥á¥â á ¯¥à¥§ «¨¢ª®© ¨§ BIOS, ¨ ç¥ ¨§ Š<>˜
|
|
||||||
CALL Spec_Page.init_acex
|
|
||||||
LD BC,BIOS.REINIT.HARD_RESET
|
|
||||||
;
|
|
||||||
; ¢å®¤¥ ¢ BC ¯ à ¬¥âàë äãªæ¨¨ BIOS
|
|
||||||
.INIT_ACEX.ifSoftreset:
|
|
||||||
; á®åà 塞 ¢®âªãâë¥ áâà ¨æë ¢ Spec_Page
|
|
||||||
IN A,(SLOT0)
|
|
||||||
LD E,A
|
|
||||||
IN A,(SLOT1)
|
|
||||||
LD D,A
|
|
||||||
IN A,(SLOT2)
|
|
||||||
POP HL ; ¢®ááâ ¢«¨¢ ¥¬ ®¬¥à ¢®âªã⮩ áâà ¨æë
|
|
||||||
LD L,A
|
|
||||||
LD (Spec_Page.page_0),DE
|
|
||||||
LD (Spec_Page.page_2),HL
|
|
||||||
; ¤®áâ ñ¬ ¤à¥á ¢®§¢à â ¢ ¢ë§ë¢ îéãî äãªæ¨î ¨ á®åà 塞 ¢ Spec_Page
|
|
||||||
POP DE
|
|
||||||
LD HL,RST_18_1.exit
|
|
||||||
XOR A
|
|
||||||
SBC HL,DE
|
|
||||||
JR NZ,.set_ret ; NZ - ¥á«¨ ¢ë§®¢ ¡ë« ¯® RST #18
|
|
||||||
POP DE ; ¥á«¨ ¢ë§®¢ ¡ë« ¢ އ“ ¯® RST 8
|
|
||||||
INC A
|
|
||||||
.set_ret:
|
|
||||||
LD (Spec_Page.RET_addr),DE
|
|
||||||
; A=0 - SYS_PORT.ON
|
|
||||||
; A=1 - SYS_PORT.OFF
|
|
||||||
LD (Spec_Page.Reload_Version),A
|
|
||||||
LD HL,0
|
|
||||||
ADD HL,SP
|
|
||||||
LD (Spec_Page.Stack_Point),HL
|
|
||||||
; “áâ ¢«¨¢ ¥¬ ª«îç¨
|
|
||||||
LD HL,Spec_Page.flag_R
|
|
||||||
LD (HL),"R"
|
|
||||||
INC HL
|
|
||||||
LD (HL),"S"
|
|
||||||
INC HL
|
|
||||||
LD (HL),"T"
|
|
||||||
;
|
|
||||||
; .. ... ... ..
|
|
||||||
;!TODO ᤥ« âì äãªæ¨î ¯® § «¨¢ª¥ ᢮¥© ª®äë, ¯¥à¥å¢ âã à¥á¥â .
|
|
||||||
; *. ‚室 ¢ ¯®¤äãªæ¨î ⮫쪮 ç¥à¥§ RST 08 ¨«¨ #18
|
|
||||||
; *. ‘®åà ¨âì ¢á¥ áâà ¨æë ¯®«ì§®¢ â¥«ï ¢ SYS_PAGE ¤«ï ¯¥à¥å¢ â à¥á¥â
|
|
||||||
; *. „®áâ âì á® á⥪ ¤à¥á ¢®§¢à â ¨ á®åà ¨âì ¢ SYS_PAGE ¤«ï ¯¥à¥å¢ â à¥á¥â
|
|
||||||
; *. ‘®åà ¨âì ªã¤ -¨¡ã¤ì § 票¥ á⥪
|
|
||||||
; *
|
|
||||||
; .. ... ... ..
|
|
||||||
;LD BC,BIOS.REINIT.HARD_RESET
|
|
||||||
JP_to_BIOS
|
|
||||||
;
|
|
||||||
.ReturnSoftReset:
|
|
||||||
DI
|
|
||||||
; ãáâ ¢«¨¢ ¥¬ ã«¥¢ãî ª àâã ¯®à⮢
|
|
||||||
LD A,CNF_PORT.CNF_0
|
|
||||||
OUT (SYS_PORT.ON),A
|
|
||||||
; ¨ â ª ¯®ïâ® çâ® ¤¥« ¥â
|
|
||||||
IN A,(SLOT3) ; á®åà 塞 ®¬¥à ¢®âªã⮩ áâà ¨æë
|
|
||||||
PUSH AF
|
|
||||||
LD A,Spec_Page
|
|
||||||
OUT (SLOT3),A
|
|
||||||
;
|
|
||||||
LD BC,BIOS.REINIT.SOFT_RESET
|
|
||||||
JR .INIT_ACEX.ifSoftreset
|
|
||||||
;
|
|
||||||
;;;
|
|
||||||
.INIT_ACEX.ERROR:
|
|
||||||
POP AF
|
|
||||||
OUT (SLOT3),A
|
|
||||||
SCF
|
|
||||||
RET
|
|
||||||
;
|
;
|
||||||
.INIT_ACEX.PROGRAM:
|
.INIT_ACEX.PROGRAM:
|
||||||
DISP Spec_Page.init_acex
|
DISP Spec_Page.init_acex
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user