+- BIOS function for ACEX reload by custom bitstream
This commit is contained in:
parent
681c2cfdff
commit
730aae8a89
@ -1 +1 @@
|
||||
Subproject commit a15861c07cab60eaf09c28226d0c7761b4fd8235
|
||||
Subproject commit 8c5550f810d173790e4665d610328b9247b00f02
|
||||
@ -709,10 +709,26 @@ FN_5x_Parser:
|
||||
EX (SP),HL
|
||||
RET
|
||||
|
||||
EXP_FNS: ; ‚室 ¢ äãªæ¨î ¨§ TR-DOS
|
||||
POP AF
|
||||
; ‚室 ¢ äãªæ¨¨ <20>ˆŽ‘ ¨§ TR-DOS
|
||||
EXP_FNS:; ®âª«îç ¥¬ § ¯¨áì ¢ íªà ᯥªâàã¬
|
||||
EX (SP),HL
|
||||
IN A,(RGADR)
|
||||
LD L,A
|
||||
LD A,#C0
|
||||
OUT (PORT_Y),A
|
||||
LD A,H
|
||||
EX (SP),HL ; (SP) = port_y
|
||||
;
|
||||
CALL EXP_FNS_RST18
|
||||
CALL DOS_ON
|
||||
; ¢®§¢à é ¥¬ § ¯¨áì ¢ íªà ᯥªâàã¬
|
||||
EX (SP),HL
|
||||
PUSH AF
|
||||
LD A,L
|
||||
OUT (RGADR),A
|
||||
POP AF
|
||||
POP HL
|
||||
; ¢®§¢à â
|
||||
JP EXP_FNS_RET
|
||||
|
||||
;! ! ! ! ! ! ! !
|
||||
|
||||
@ -49,7 +49,7 @@ RST_10:
|
||||
JP EXP_FNS_RST18
|
||||
RST_18_1:
|
||||
CALL EXP_FNS_RST18
|
||||
JR EXP_FNS_2_RET
|
||||
.exit: JR EXP_FNS_2_RET
|
||||
|
||||
;=======================================
|
||||
|
||||
@ -772,6 +772,8 @@ set_config:
|
||||
|
||||
; JR NZ,NO_SETUP_2
|
||||
|
||||
;[---------------------------------------------------------------------]
|
||||
|
||||
MODULE Reset_Handler
|
||||
start:
|
||||
IN A,(SLOT3)
|
||||
@ -853,21 +855,22 @@ init_rom_address EQU #8200 ;!HARDCO
|
||||
;!FIXIT ᤥ« âì ¢ë¡®à £à㧨âì ¤ /¥â <20>‡“ ᯥªâà㬠¯à¨ áâ àâ¥, [-------]
|
||||
; ¥á«¨ ¥â - â® ¢®âªãâì íâ®â ª®¤:
|
||||
; LD HL,PROG_NO_ROM
|
||||
; LD DE,#C000 + #38
|
||||
; LD DE,#C000 + Spec_Page.no_zx_rom
|
||||
; LD BC,PROG_NO_ROM.size
|
||||
; LDIR
|
||||
|
||||
; LD HL,RAM_BIOS_PROG
|
||||
; LD DE,#C000 + #08
|
||||
; LD DE,#C000 + Spec_Page.to_bios
|
||||
; LD BC,RAM_BIOS_PROG.Length
|
||||
; LDIR
|
||||
;[---------------------------------------------------------------------]
|
||||
;---------------------------------------
|
||||
|
||||
Spec_Page_handler_OK:
|
||||
pop af
|
||||
OUT (SLOT3),A
|
||||
|
||||
ENDMODULE
|
||||
;[---------------------------------------------------------------------]
|
||||
;
|
||||
;**************************************
|
||||
;
|
||||
@ -1370,7 +1373,7 @@ Length EQU $-Setup_Starter.Start
|
||||
;---------------------[ ‡€ƒ‹“˜Šˆ „‹Ÿ #41 ‘’<E28098>€<EFBFBD>ˆ–›]----------------------;
|
||||
;-------------[RST 08]
|
||||
; RAM_BIOS_PROG: ; for CALL BIOS in #41 page
|
||||
; DISP #08
|
||||
; DISP Spec_Page.to_bios
|
||||
; PUSH AF
|
||||
; LD A,ROM.BIOS
|
||||
; OUT (SYS_PORT.ROM),A
|
||||
@ -1382,7 +1385,7 @@ Length EQU $-Setup_Starter.Start
|
||||
|
||||
; ;-------------[RST 38]
|
||||
; PROG_NO_ROM:
|
||||
; DISP #38
|
||||
; DISP Spec_Page.no_zx_rom
|
||||
; DI
|
||||
|
||||
; LD A,#FF
|
||||
|
||||
@ -585,13 +585,13 @@ WIN_SET_ZG: ; LP_SET_ZG:
|
||||
RET
|
||||
.SET: IN A,(SLOT1)
|
||||
LD (SYS_PAGE.COPY_SLOT1),A
|
||||
LD A,#FF
|
||||
LD A,SHARED_PAGE
|
||||
OUT (SLOT1),A
|
||||
EXX
|
||||
LD BC,Port_All_Mode
|
||||
IN A,(C)
|
||||
LD (SYS_PAGE.SYS_WORK1),A
|
||||
AND #FE ; accelerator and keyboard interrupt off
|
||||
AND #FE ; Spectrum Screen on, accelerator and keyboard interrupt off
|
||||
OUT (C),A
|
||||
EX AF,AF'
|
||||
LD B,A
|
||||
|
||||
@ -30,7 +30,7 @@ EMM.GetMemSize:
|
||||
|
||||
|
||||
;
|
||||
;----------------------------------------------------------------------;
|
||||
;----------------------------------------------------------------------; !FIXIT SAFE_RGADR
|
||||
; ˆ¨æ¨ «¨§ æ¨ï à á¯à¥¤¥«¥¨ï ¯ ¬ïâ¨.
|
||||
EMM.InitMem:
|
||||
PUSH BC
|
||||
@ -107,7 +107,7 @@ RESERVED_PAGES:
|
||||
|
||||
|
||||
;
|
||||
;----------------------------------------------------------------------;
|
||||
;----------------------------------------------------------------------; !FIXIT SAFE_RGADR
|
||||
; <20>®«ãç¨âì ¡«®ª ¯ ¬ï⨠N bytes,
|
||||
; ‚室: B - ç¨á«® ¥®¡å®¤¨¬ëå ¡«®ª®¢
|
||||
; ‚ë室: L,A - Š‹ž— RAM-Disk/ª®¤ ®è¨¡ª¨
|
||||
@ -228,7 +228,7 @@ EMM.FreeMem:
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT1),A
|
||||
|
||||
LD H,high (SYS_PAGE.RAMD_FAT - #4000 - #4000)
|
||||
LD H,high (SYS_PAGE.RAMD_FAT - #4000 - #4000) ; !FIXIT SAFE_RGADR
|
||||
LD A,L
|
||||
EMM_F3M_L1:
|
||||
LD L,A
|
||||
@ -345,6 +345,38 @@ EMM.GetMemPageNext:
|
||||
; ‚室: A - ¡«®ª, HL - ¤à¥á ¡ãä¥à - 256 ¡ ©â.
|
||||
; ‚ë室: HL - ¤à¥á ¡«®ª , B - ¤«¨ ¡«®ª ¢ áâà ¨æ å Ž‡“
|
||||
;EMM_FN5M:
|
||||
; EMM.GetMemBlkPages:
|
||||
; PUSH DE
|
||||
; PUSH HL
|
||||
; EX DE,HL
|
||||
; LD B,0
|
||||
; LD L,A
|
||||
|
||||
; .loop: LD A,L
|
||||
; LD (DE),A
|
||||
; INC DE
|
||||
; AND A
|
||||
; JR Z,.error
|
||||
; CP #FF
|
||||
; JR Z,.end
|
||||
; ;
|
||||
; IN A,(SLOT1)
|
||||
; LD C,A
|
||||
; LD A,SYS_PAGE
|
||||
; OUT (SLOT1),A
|
||||
; LD H,high (SYS_PAGE.RAMD_FAT - #4000 - #4000)
|
||||
; LD L,(HL)
|
||||
; LD A,C
|
||||
; OUT (SLOT1),A
|
||||
; ;
|
||||
; INC B
|
||||
; JR NZ,.loop
|
||||
|
||||
; .error: SCF
|
||||
; .end: POP HL
|
||||
; POP DE
|
||||
; RET
|
||||
|
||||
EMM.GetMemBlkPages:
|
||||
PUSH DE
|
||||
PUSH HL
|
||||
@ -352,7 +384,10 @@ EMM.GetMemBlkPages:
|
||||
LD B,0
|
||||
LD L,A
|
||||
|
||||
LD A,R
|
||||
IN A,(SLOT1)
|
||||
LD C,A
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT1),A
|
||||
|
||||
.loop: LD A,L
|
||||
LD (DE),A
|
||||
@ -362,34 +397,24 @@ EMM.GetMemBlkPages:
|
||||
CP #FF
|
||||
JR Z,.end
|
||||
;
|
||||
IN A,(SLOT1)
|
||||
LD C,A
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT1),A
|
||||
LD H,high (SYS_PAGE.RAMD_FAT - #4000 - #4000)
|
||||
LD L,(HL)
|
||||
LD A,C
|
||||
OUT (SLOT1),A
|
||||
;
|
||||
INC B
|
||||
JR NZ,.loop
|
||||
|
||||
.error: SCF
|
||||
.end: POP HL
|
||||
.end: LD A,C
|
||||
OUT (SLOT1),A
|
||||
POP HL
|
||||
POP DE
|
||||
RET
|
||||
|
||||
; .end: POP HL
|
||||
; POP DE
|
||||
; AND A
|
||||
; RET
|
||||
;----------------------------------------------------------------------;
|
||||
;
|
||||
|
||||
|
||||
|
||||
;
|
||||
;----------------------------------------------------------------------;
|
||||
;----------------------------------------------------------------------; !FIXIT SAFE_RGADR
|
||||
;RAMD_R_W:
|
||||
; ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
|
||||
; º RD/WR SECTOR º\
|
||||
@ -493,7 +518,6 @@ BLK_RD_WR:
|
||||
BIT 7,H
|
||||
JR NZ,.BLK_PAGE1 ; !!!!! JR NZ,BLK_PAGE1 ?
|
||||
|
||||
.BLK_PAGE3: ; !TODO ¯¥à¥¤¥« âì SLOT ?????
|
||||
LD C,SLOT3
|
||||
IN C,(C)
|
||||
OUT (SLOT3),A
|
||||
@ -852,7 +876,7 @@ GET_RAMD_ST:
|
||||
|
||||
|
||||
;
|
||||
;----------------------------------------------------------------------;
|
||||
;----------------------------------------------------------------------; !FIXIT SAFE_RGADR
|
||||
; RAM-Disk A, BLK - B
|
||||
BLK_TO_RAMD:
|
||||
CP SYS_PAGE.RAMD_KEYS.NUM
|
||||
@ -896,7 +920,7 @@ BLK_BUSY:
|
||||
|
||||
|
||||
;
|
||||
;----------------------------------------------------------------------;
|
||||
;----------------------------------------------------------------------; !FIXIT SAFE_RGADR
|
||||
; RAM-Disk A
|
||||
RAMD_CLEAR:
|
||||
CP SYS_PAGE.RAMD_KEYS.NUM
|
||||
@ -931,7 +955,7 @@ RAMD_CLEAR:
|
||||
|
||||
|
||||
;
|
||||
;----------------------------------------------------------------------;
|
||||
;----------------------------------------------------------------------; !FIXIT SAFE_RGADR
|
||||
; à §¤¥«¨âì ¡«®ª ¯ ¬ï⨠¤¢ ¡«®ª
|
||||
; A - ¡«®ª, B - ¤«¨ ¯¥à¢®£® ¡«®ª ¯®á«¥ à §¤¥«¥¨ï
|
||||
; ¢ë室: A - ¡«®ª 1, B - ¡«®ª 2
|
||||
@ -969,7 +993,7 @@ EMM.DivMemBlocks:
|
||||
|
||||
|
||||
;
|
||||
;----------------------------------------------------------------------;
|
||||
;----------------------------------------------------------------------; !FIXIT SAFE_RGADR
|
||||
; ᫨âì ¤¢ ¡«®ª ¯ ¬ï⨠¢ ®¤¨
|
||||
; € - ¡«®ª 1, B - ¡«®ª 2
|
||||
; ¢ë室: € - ¡«®ª
|
||||
|
||||
@ -100,7 +100,7 @@ RST_CONF:
|
||||
.CHOOSE_CNF:
|
||||
;!TEST
|
||||
CP PG_Sp2000
|
||||
LD DE,SP2000_ConfID
|
||||
;LD DE,SP2000_ConfID
|
||||
JR Z,.INIT_ACEX
|
||||
;
|
||||
|
||||
@ -117,13 +117,109 @@ RST_CONF:
|
||||
SCF
|
||||
RET
|
||||
|
||||
.INIT_ACEX:
|
||||
.INIT_ACEX: ;!FIXIT ;!TODO <20>…„Ž„…‹€<E280B9>Ž!!!!
|
||||
DI
|
||||
; ãáâ ¢«¨¢ ¥¬ ã«¥¢ãî ª àâã ¯®à⮢
|
||||
LD A,CNF_PORT.CNF_0
|
||||
OUT (SYS_PORT.ON),A
|
||||
; á®åà 塞 ¢®âªãâë¥ áâà ¨æë ¢ Spec_Page
|
||||
IN A,(SLOT0)
|
||||
LD E,A
|
||||
IN A,(SLOT1)
|
||||
LD D,A
|
||||
IN A,(SLOT2)
|
||||
LD L,A
|
||||
IN A,(SLOT3)
|
||||
LD H,A
|
||||
LD A,Spec_Page
|
||||
OUT (SLOT3),A
|
||||
LD (Spec_Page.page_0),DE
|
||||
LD (Spec_Page.page_2),HL
|
||||
; ¤®áâ ñ¬ ¤à¥á ¢®§¢à â ¢ ¢ë§ë¢ îéãî äãªæ¨î ¨ á®åà 塞 ¢ Spec_Page
|
||||
POP DE
|
||||
LD HL,RST_18_1.exit
|
||||
AND A
|
||||
SBC HL,DE
|
||||
JR NZ,1F ; NZ - ¥á«¨ ¢ë§®¢ ¡ë« ¯® RST #18
|
||||
POP DE ; ¥á«¨ ¢ë§®¢ ¡ë« ¢ އ“ ¯® RST 8
|
||||
1: LD (Spec_Page.RET_addr),DE
|
||||
; ¯à®¢¥à塞 à §¬¥à ¡«®ª á ª®ä®© ¨ ¯®«ãç ¥¬ áâà ¨æë ª®äë
|
||||
PUSH BC
|
||||
LD HL,Spec_Page.bitstream_pages
|
||||
LD A,B
|
||||
CALL EMM.GetMemBlkPages
|
||||
LD A,B
|
||||
POP BC
|
||||
LD B,A
|
||||
JR C,.INIT_ACEX.ERROR
|
||||
CP 4+1 ;!HARDCODE ª®«¨ç¥á⢮ áâà ¨æ ¢ ªíè ¤«ï ¡¨áâਬ ¯«îá ®¤
|
||||
JR NC,.INIT_ACEX.ERROR
|
||||
PUSH BC
|
||||
; § ª¨¤ë¢ ¥¬ ¢ Spec_Page ¯à®£ã ¤«ï § «¨¢ª¨ ª®äë
|
||||
LD HL,.INIT_ACEX.PROGRAM
|
||||
LD DE,Spec_Page.init_acex
|
||||
LD BC,.INIT_ACEX.PROGRAM.Size
|
||||
LDIR
|
||||
;
|
||||
POP BC
|
||||
; B = size of ram block in pages
|
||||
CALL Spec_Page.init_acex
|
||||
;
|
||||
; .. ... ... ..
|
||||
;!TODO ᤥ« âì äãªæ¨î ¯® § «¨¢ª¥ ᢮¥© ª®äë, ¯¥à¥å¢ âã à¥á¥â .
|
||||
; *. ‚室 ¢ ¯®¤äãªæ¨î ⮫쪮 ç¥à¥§ RST 08 ¨«¨ #18
|
||||
; *. ‘®åà ¨âì ¢á¥ áâà ¨æë ¯®«ì§®¢ â¥«ï ¢ SYS_PAGE ¤«ï ¯¥à¥å¢ â à¥á¥â
|
||||
; *. „®áâ âì á® á⥪ ¤à¥á ¢®§¢à â ¨ á®åà ¨âì ¢ SYS_PAGE ¤«ï ¯¥à¥å¢ â à¥á¥â
|
||||
; *. ‘®åà ¨âì ªã¤ -¨¡ã¤ì § 票¥ á⥪
|
||||
; *
|
||||
; .. ... ... ..
|
||||
LD BC,256*BIOS.REINIT.HARD_RESET + BIOS.REINIT
|
||||
JP_to_BIOS
|
||||
|
||||
.INIT_ACEX.ERROR:
|
||||
POP BC
|
||||
LD A,(Spec_Page.page_2)
|
||||
OUT (SLOT2),A
|
||||
LD A,(Spec_Page.page_3)
|
||||
OUT (SLOT3),A
|
||||
SCF
|
||||
RET
|
||||
;
|
||||
.INIT_ACEX.PROGRAM:
|
||||
DISP Spec_Page.init_acex
|
||||
; B = size of ram block in pages
|
||||
;
|
||||
IN A,(FastRAM.ON)
|
||||
XOR A
|
||||
EXX
|
||||
LD HL,Spec_Page.bitstream_pages
|
||||
LD BC,SLOT2
|
||||
EXX
|
||||
.load_loop:
|
||||
EXX
|
||||
OUTI
|
||||
EXX
|
||||
PUSH BC
|
||||
OUT (FastRAM.SLOT0),A
|
||||
LD HL,0
|
||||
LD DE,#8000
|
||||
LD BC,#4000
|
||||
LDIR
|
||||
;
|
||||
INC A
|
||||
POP BC
|
||||
DJNZ .load_loop
|
||||
|
||||
; ... ....
|
||||
; acex loading and flags
|
||||
; ... ....
|
||||
XOR A
|
||||
OUT (FastRAM.SLOT0),A
|
||||
IN A,(FastRAM.OFF)
|
||||
RET
|
||||
ENT
|
||||
.INIT_ACEX.PROGRAM.Size EQU $-.INIT_ACEX.PROGRAM
|
||||
;
|
||||
;***************************************
|
||||
|
||||
;!TEST
|
||||
|
||||
Binary file not shown.
Loading…
Reference in New Issue
Block a user