добавлены подфункции в RST_CONF.CUSTOM
This commit is contained in:
parent
bb20ae0b39
commit
bb4ced4332
@ -1 +1 @@
|
||||
Subproject commit 54843903de0b33e3403f6f6c5b7d144c7bd482aa
|
||||
Subproject commit be501b0cc276065a9981e471dd26f9b069af7604
|
||||
@ -800,10 +800,7 @@ Check_EE_Port: LD A,ACEX.RET_PORT
|
||||
CP #FF
|
||||
JR Z,.JPHL ; olg logic
|
||||
; new logic
|
||||
.ver_2: EXX
|
||||
LD HL,(Spec_Page.Stack_Point)
|
||||
LD SP,HL
|
||||
EXX
|
||||
.ver_2: LD SP,(Spec_Page.Stack_Point)
|
||||
AND A
|
||||
LD A,#FF
|
||||
LD (Spec_Page.Reload_Version),A
|
||||
|
||||
@ -106,15 +106,21 @@ RST_CONF:
|
||||
LD A,C
|
||||
JR Z,.crutch
|
||||
; [x]
|
||||
.not_vRAM_page: CP ACEX.Config_PG.Sp2000_SoftSetUp
|
||||
.not_vRAM_page: CP ACEX.Config_PG.Sp2000_SoftRestartNow
|
||||
JP Z,.ReturnSoftReset
|
||||
;
|
||||
CP ACEX.Config_PG.Sp2000_AcexSetUp
|
||||
CP ACEX.Config_PG.Sp2000_AcexSetUpNow
|
||||
JR Z,.INIT_ACEX
|
||||
;
|
||||
CP ACEX.Config_PG.Sp2000_SetUp
|
||||
JR Z,.SP2000
|
||||
;
|
||||
CP ACEX.Config_PG.Sp2000_SoftRestartSet
|
||||
JR Z,.SetUpSoftReset
|
||||
;
|
||||
CP ACEX.Config_PG.Sp2000_AcexSetUpSet
|
||||
JR Z,.SetUpHardReset
|
||||
;
|
||||
; only for old FLEX10K soft compatible
|
||||
CP ACEX.Config_PG.Sp97_1
|
||||
LD DE,ACEX.Config_ID.Sp97_1
|
||||
@ -130,55 +136,114 @@ RST_CONF:
|
||||
SCF
|
||||
RET
|
||||
;
|
||||
; B - ID à ¬¡«®ª á bitstream
|
||||
;[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
|
||||
.INIT_ACEX: LD C,B
|
||||
LD B,high BIOS.REINIT.HARD_RESET
|
||||
CALL .PrepareResetSetUp
|
||||
LD B,C
|
||||
CALL .PrepareHardReset
|
||||
JR C,.INIT_ACEX.ERROR
|
||||
LD B,high BIOS.REINIT.HARD_RESET
|
||||
JR .set_ret_addr
|
||||
|
||||
; DI
|
||||
; 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 B,high BIOS.REINIT.HARD_RESET
|
||||
; POP HL
|
||||
; ;
|
||||
; ;¢å®¤: B - ¯ à ¬¥âà äãªæ¨¨ BIOS REINIT
|
||||
; ; H - Spec_Page.page_3
|
||||
; .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 (Spec_Page.Stack_Point),SP
|
||||
; ;
|
||||
; LD A,high BIOS.REINIT.HARD_RESET
|
||||
; CP B
|
||||
; JR NZ,.reinit
|
||||
; ; “áâ ¢«¨¢ ¥¬ ª«îç¨ ¤«ï HARD reset
|
||||
; 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
|
||||
; .reinit: JP REINIT
|
||||
;
|
||||
; ¢å®¤¥ ¢ B ¯ à ¬¥âàë äãªæ¨¨ BIOS REINIT
|
||||
.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
|
||||
.SetUpHardReset:
|
||||
LD C,B
|
||||
LD B,high BIOS.REINIT.HARD_RESET
|
||||
CALL .PrepareResetSetUp
|
||||
LD (Spec_Page.RET_addr),DE
|
||||
LD A,#FF
|
||||
LD (Spec_Page.Reload_Version),A
|
||||
LD B,C
|
||||
CALL .PrepareHardReset
|
||||
JR .INIT_ACEX.ERROR ; ®à¬ «ìë© ¢ë室 ¢ ¤ ®¬ á«ãç ¥
|
||||
;
|
||||
.ReturnSoftReset:
|
||||
CALL .PrepareSoftReset
|
||||
CALL .PrepareResetSetUp
|
||||
; ¤®áâ ñ¬ ¤à¥á ¢®§¢à â ¢ ¢ë§ë¢ îéãî äãªæ¨î ¨ á®åà 塞 ¢ Spec_Page
|
||||
POP DE
|
||||
.set_ret_addr: POP DE
|
||||
LD HL,RST_18_1.exit
|
||||
XOR A
|
||||
SBC HL,DE
|
||||
@ -189,47 +254,40 @@ RST_CONF:
|
||||
; 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
|
||||
LD (Spec_Page.Stack_Point),SP
|
||||
JP REINIT
|
||||
;
|
||||
.ReturnSoftReset:
|
||||
DI
|
||||
; ãáâ ¢«¨¢ ¥¬ ã«¥¢ãî ª àâã ¯®à⮢
|
||||
LD A,CNF_PORT.CNF_0
|
||||
OUT (SYS_PORT.ON),A
|
||||
; ¨ â ª ¯®ïâ® çâ® ¤¥« ¥â
|
||||
IN A,(SLOT3) ; á®åà 塞 ®¬¥à ¢®âªã⮩ áâà ¨æë
|
||||
PUSH AF
|
||||
LD A,Spec_Page
|
||||
.SetUpSoftReset:
|
||||
PUSH DE
|
||||
CALL .PrepareSoftReset
|
||||
CALL .PrepareResetSetUp
|
||||
POP DE
|
||||
LD (Spec_Page.RET_addr),DE
|
||||
LD A,#FF
|
||||
LD (Spec_Page.Reload_Version),A
|
||||
LD A,(Spec_Page.page_3)
|
||||
OUT (SLOT3),A
|
||||
;
|
||||
LD B,high BIOS.REINIT.SOFT_RESET
|
||||
JR .INIT_ACEX.ifSoftreset
|
||||
RET
|
||||
|
||||
; DI
|
||||
; LD A,ACEX.RET_PORT
|
||||
; LD B,Spec_Page
|
||||
; CALL SET_PORTS
|
||||
; ;
|
||||
; ; ¨ â ª ¯®ïâ® çâ® ¤¥« ¥â
|
||||
; IN A,(SLOT3) ; á®åà 塞 ®¬¥à ¢®âªã⮩ áâà ¨æë
|
||||
; LD H,A
|
||||
; LD A,Spec_Page
|
||||
; OUT (SLOT3),A
|
||||
; ;
|
||||
; LD B,high BIOS.REINIT.SOFT_RESET
|
||||
; JR .INIT_ACEX.ifSoftreset
|
||||
;
|
||||
;;;
|
||||
.INIT_ACEX.ERROR:
|
||||
POP AF
|
||||
LD A,(Spec_Page.page_3)
|
||||
OUT (SLOT3),A
|
||||
SCF
|
||||
;SCF
|
||||
RET
|
||||
;
|
||||
;--[]
|
||||
@ -251,8 +309,8 @@ RST_CONF:
|
||||
;
|
||||
SAFE_PORTY
|
||||
IN A,(FastRAM.ON)
|
||||
IN A,(SLOT1)
|
||||
LD (.slot1_page),A
|
||||
; IN A,(SLOT1)
|
||||
; LD (.slot1_page),A
|
||||
;
|
||||
LD A,#FE ; ç⮡ ¯à®¢¥à¨âì, çâ® ¢ë§ë¢ âì ¯®á«¥ CALL NZ,.INIT_ACEX.PROGRAM.LOAD
|
||||
; âãâ ZF ¤®«¦¥ ¡ëâì ¨§ ¢ë§ë¢ î饩 ¯à®æ¥¤ãàë
|
||||
@ -278,7 +336,8 @@ RST_CONF:
|
||||
XOR A
|
||||
OUT (FastRAM.SLOT0),A
|
||||
IN A,(FastRAM.OFF)
|
||||
.slot1_page+1: LD A,0
|
||||
; .slot1_page+1: LD A,0
|
||||
LD A,(Spec_Page.page_1)
|
||||
OUT (SLOT1),A
|
||||
RET
|
||||
;
|
||||
@ -320,7 +379,80 @@ RST_CONF:
|
||||
;
|
||||
ENT
|
||||
.INIT_ACEX.PROGRAM.Size EQU $-.INIT_ACEX.PROGRAM
|
||||
;
|
||||
;--[]
|
||||
.PrepareSoftReset:
|
||||
LD A,ACEX.RET_PORT
|
||||
LD B,Spec_Page
|
||||
CALL SET_PORTS
|
||||
LD B,high BIOS.REINIT.SOFT_RESET
|
||||
RET
|
||||
|
||||
.PrepareResetSetUp:
|
||||
DI
|
||||
; á®åà 塞 ¢®âªãâë¥ áâà ¨æë ¢ Spec_Page
|
||||
IN A,(SLOT3)
|
||||
LD H,A
|
||||
LD A,Spec_Page
|
||||
OUT (SLOT3),A
|
||||
;
|
||||
IN A,(SLOT2)
|
||||
LD L,A
|
||||
LD (Spec_Page.page_2),HL
|
||||
IN A,(SLOT0)
|
||||
LD (Spec_Page.page_0),A
|
||||
IN A,(SLOT1)
|
||||
LD (Spec_Page.page_1),A
|
||||
;
|
||||
LD A,high BIOS.REINIT.HARD_RESET
|
||||
CP B
|
||||
LD HL,Spec_Page.flag_R
|
||||
JR NZ,.kill_flag
|
||||
; “áâ ¢«¨¢ ¥¬ ª«îç¨ ¤«ï HARD reset
|
||||
LD (HL),"R"
|
||||
INC HL
|
||||
.kill_flag: LD (HL),"S"
|
||||
INC HL
|
||||
LD (HL),"T"
|
||||
;
|
||||
; .. ... ... ..
|
||||
; [ ]
|
||||
;!TODO ᤥ« âì äãªæ¨î ¯® § «¨¢ª¥ ᢮¥© ª®äë, ¯¥à¥å¢ âã à¥á¥â .
|
||||
; *. ‚室 ¢ ¯®¤äãªæ¨î ⮫쪮 ç¥à¥§ RST 08 ¨«¨ #18
|
||||
; *. ‘®åà ¨âì ¢á¥ áâà ¨æë ¯®«ì§®¢ â¥«ï ¢ SYS_PAGE ¤«ï ¯¥à¥å¢ â à¥á¥â
|
||||
; *. „®áâ âì á® á⥪ ¤à¥á ¢®§¢à â ¨ á®åà ¨âì ¢ SYS_PAGE ¤«ï ¯¥à¥å¢ â à¥á¥â
|
||||
; *. ‘®åà ¨âì ªã¤ -¨¡ã¤ì § 票¥ á⥪
|
||||
; *
|
||||
; .. ... ... ..
|
||||
RET
|
||||
;
|
||||
|
||||
; B - ramblock bitstream
|
||||
.PrepareHardReset:
|
||||
; ¯à®¢¥à塞 à §¬¥à ¡«®ª á ª®ä®© ¨ ¯®«ãç ¥¬ áâà ¨æë ª®äë
|
||||
LD HL,Spec_Page.bitstream_pages
|
||||
LD A,B
|
||||
AND A
|
||||
JR Z,.INIT_ACEX.ReloadConfFromROM
|
||||
;
|
||||
CALL EMM.GetMemBlkPages
|
||||
RET C ; ERROR
|
||||
LD A,BitStream_SizeInPages ; ª®«¨ç¥á⢮ áâà ¨æ ¢ ªíè ¤«ï ¡¨áâਬ
|
||||
CP B
|
||||
RET C ; ERROR
|
||||
LD A,(Spec_Page.bitstream_pages)
|
||||
INC A
|
||||
SCF
|
||||
RET Z ; 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, ¨ ç¥ ¨§ Š<>˜
|
||||
JP Spec_Page.init_acex
|
||||
;--[]
|
||||
;***************************************
|
||||
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
;=======================[All shared EQUs]=======================;
|
||||
BETA_BUILD EQU 8 ; ¤®¡ ¢«ï¥â áâப㠨 á®®¡é¥¨¥ ® â¥á⮢®© ᡮથ áâ à⮢®¬ íªà ¥
|
||||
BETA_BUILD EQU 9 ; ¤®¡ ¢«ï¥â áâப㠨 á®®¡é¥¨¥ ® â¥á⮢®© ᡮથ áâ à⮢®¬ íªà ¥
|
||||
;======================[All shared defines]=====================;
|
||||
DEFINE PACKED_MAIN 0 ; ¯ ª®¢ âì MAIN ¨«¨ ¢«¥§ ¥â ¡¥§ í⮣®?
|
||||
DEFINE SP2000_Loader_Flag #0107 ;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user