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
|
||||
;--[]
|
||||
|
||||
|
||||
;--[]
|
||||
.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
|
||||
IN A,(C)
|
||||
@ -52,182 +242,6 @@ RST_CONF:
|
||||
OUT (C),A
|
||||
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:
|
||||
DISP Spec_Page.init_acex
|
||||
|
||||
Loading…
Reference in New Issue
Block a user