This commit is contained in:
Anatoliy Belyanskiy 2024-01-05 01:20:40 +10:00
parent 5c8e58eb99
commit 8bd9b2a3fc
9 changed files with 278 additions and 210 deletions

@ -1 +1 @@
Subproject commit c135d9b6038fcabca6cef3234d876f93d5865dee Subproject commit d1ce63928bdbb44e48b311f9d4a0005c2f44fcd4

Binary file not shown.

View File

@ -704,9 +704,9 @@ POST_5_OK:
LD IX,0 LD IX,0
XOR A XOR A
ADD IX,SP ; ¢®ááâ ­®¢¨âì §­ ç¥­¨¥ ¯¥à¥¤ ­­®¥ § £àã§ç¨ª®¬ ª®­äë (¥á«¨ áâ àâ ¯®á«¥ à¥á¥â ) ADD IX,SP ; ¢®ááâ ­®¢¨âì §­ ç¥­¨¥ ¯¥à¥¤ ­­®¥ § £àã§ç¨ª®¬ ª®­äë (¥á«¨ áâ àâ ¯®á«¥ à¥á¥â )
; í⮬ ¬¥á⥠㠭 á IX:IY ¨§ Loader.asm
; „®â é¨«¨ ¤® á ¬¥âªã ®â «® ¤¥à , ¯®ª  ­¥ ¨á¯®«ì§ã¥âáï
;!TEST 31/12/23 ¯®¤áâà å®¢ª  ®â ãâ¥çª¨ ¯ ¬ï⨠;!TEST 31/12/23 ¯®¤áâà å®¢ª  ®â ãâ¥çª¨ ¯ ¬ïâ¨
LD R,A
;
LD D,YH LD D,YH
LD E,YL LD E,YL
EX DE,HL EX DE,HL
@ -717,18 +717,15 @@ POST_5_OK:
LD D,XH LD D,XH
LD E,XL LD E,XL
EX DE,HL EX DE,HL
LD DE,SP2000_ConfID LD DE,ACEX.Config_ID.Sp2000
SBC HL,DE SBC HL,DE
JR NZ,.no_conf_reload JR NZ,.no_conf_reload
; ;
LD A,#80 LD A,#80
LD R,A
.no_conf_reload: .no_conf_reload:
LD R,A
; ;
;
; í⮬ ¬¥á⥠㠭 á IX:IY ¨§ Loader.asm
;
; „®â é¨«¨ ¤® á ¬¥âªã ®â «® ¤¥à , ¯®ª  ­¥ ¨á¯®«ì§ã¥âáï
; !TODO number from loader ; !TODO number from loader
; LD A,YL ; LD A,YL
; LD L,A ; LD L,A
@ -738,11 +735,8 @@ POST_5_OK:
; AND A ; ¥á«¨ à ¢­® - ¯à®è«  ¯¥à¥§ £à㧪  ; AND A ; ¥á«¨ à ¢­® - ¯à®è«  ¯¥à¥§ £à㧪 
; SBC HL,BC ; SBC HL,BC
;JR Z,set_config ;!TODO  ªâ¨¢ æ¨ï ¬¥âª¨ IX:IY ¨§ «® ¤¥à  ;JR Z,set_config ;!TODO  ªâ¨¢ æ¨ï ¬¥âª¨ IX:IY ¨§ «® ¤¥à 
;LD IX,ACEX.Config_ID.Sp97_2
;!TEST LD HL,ACEX.Config_ID.Sp2000
;LD IX,#FFFD ; LD IX,#FFFD ; !!!!! Sprinter-2 ¢ë­¥á⨠à¥ä¥à¥­á®¬ âãâ ¨ ¢ loader.asm
LD HL,#FEFF ; LD IX,#FEFF ; !!!!! Sprinter-2 ¢ë­¥á⨠à¥ä¥à¥­á®¬ âãâ ¨ ¢ loader.asm
;
set_config: set_config:
LD (SYS_PAGE.CONFIG_BYTE),HL ; á®åà ­¨âì ­®¬¥à ¯à®è¨¢ª¨ LD (SYS_PAGE.CONFIG_BYTE),HL ; á®åà ­¨âì ­®¬¥à ¯à®è¨¢ª¨
;LD (SYS_PAGE.CONFIG_BYTE),IX ; á®åà ­¨âì ­®¬¥à ¯à®è¨¢ª¨ ;LD (SYS_PAGE.CONFIG_BYTE),IX ; á®åà ­¨âì ­®¬¥à ¯à®è¨¢ª¨
@ -796,7 +790,8 @@ set_config:
;[---------------------------------------------------------------------] ;[---------------------------------------------------------------------]
MODULE Reset_Handler MODULE Reset_Handler
start: IN A,(SLOT3) start: DI
IN A,(SLOT3)
PUSH AF PUSH AF
;----[¯¥à¥å¢ â soft reset #EE port]----- ;----[¯¥à¥å¢ â soft reset #EE port]-----
Check_EE_Port: Check_EE_Port:
@ -810,10 +805,8 @@ Check_EE_Port:
LD A,B LD A,B
AND A AND A
JR Z,Check_Spec_Page JR Z,Check_Spec_Page
;
DI
OUT (SLOT3),A ; Set restart page OUT (SLOT3),A ; Set restart page
.After_Hard_Rst: .After_Hard_Rst:
LD HL,(Spec_Page.RET_addr) ; prog address LD HL,(Spec_Page.RET_addr) ; prog address
LD A,(Spec_Page.page_0) ; PAGE0 LD A,(Spec_Page.page_0) ; PAGE0
@ -824,68 +817,82 @@ Check_EE_Port:
OUT (SLOT2),A OUT (SLOT2),A
LD A,(Spec_Page.page_3) ; PAGE3 LD A,(Spec_Page.page_3) ; PAGE3
OUT (SLOT3),A OUT (SLOT3),A
LD A,(Spec_Page.Reload_Version)
CP #FF
JR NZ,.ver_2
JP (HL)
;
.ver_2: EXX
LD HL,(Spec_Page.Stack_Point)
LD SP,HL
EXX
AND A
LD A,#FF
LD (Spec_Page.Reload_Version),A
JR NZ,ver_2_sys_port_on
PUSH HL
JP EXP_FNS_2_RET
ver_2_sys_port_on:
JP (HL) JP (HL)
; ;
;--[¯¥à¥å¢ â soft/hard reset #41 page]-- ;--[¯¥à¥å¢ â soft/hard reset #41 page]--
Check_Spec_Page: Check_Spec_Page:
LD A,Spec_Page LD A,Spec_Page
OUT (SLOT3),A OUT (SLOT3),A
LD A,(Spec_Page.flag_Z) ; Check for hardreset flag
CP 'Z' LD A,(Spec_Page.flag_R)
JR NZ,No_Reset_handlers CP 'R'
LD A,(Spec_Page.flag_X) JR NZ,No_Reset_handlers
CP 'X' LD A,(Spec_Page.flag_S)
JR NZ,No_Reset_handlers CP 'S'
JR NZ,No_Reset_handlers
LD A,(#FFF7) LD A,(Spec_Page.flag_T)
CP 'R' CP 'T'
;JR NZ,Spec_Page_handler_OK JR NZ,No_Reset_handlers
JR NZ,Spec_Page_handler_Next ;!TEST 31/12/23 ¯®¤áâà å®¢ª  ®â ãâ¥çª¨ ¯ ¬ïâ¨
LD A,(#FFF8)
CP 'S'
;JR NZ,Spec_Page_handler_OK
JR NZ,Spec_Page_handler_Next ;!TEST 31/12/23 ¯®¤áâà å®¢ª  ®â ãâ¥çª¨ ¯ ¬ïâ¨
LD A,(#FFF9)
CP 'T'
;JR NZ,Spec_Page_handler_OK
JR NZ,Spec_Page_handler_Next ;!TEST 31/12/23 ¯®¤áâà å®¢ª  ®â ãâ¥çª¨ ¯ ¬ïâ¨
XOR A
LD (#FFF7),A
JR Check_EE_Port.After_Hard_Rst
; ;
;!TEST 31/12/23 ¯®¤áâà å®¢ª  ®â ãâ¥çª¨ ¯ ¬ïâ¨
Spec_Page_handler_Next:
LD A,R
AND #80
JR Z,Spec_Page_handler_OK
XOR A XOR A
LD R,A LD (Spec_Page.flag_R),A
JR Check_EE_Port.After_Hard_Rst
;
;--------------------------------------- ;---------------------------------------
No_Reset_handlers: No_Reset_handlers:
; Check ZX ROMS Loaded
LD A,(Spec_Page.flag_Z)
CP 'Z'
JR NZ,.Load_ZXROMS
LD A,(Spec_Page.flag_X)
CP 'X'
JR NZ,.Load_ZXROMS
;!TEST 31/12/23 ¯®¤áâà å®¢ª  ®â ãâ¥çª¨ ¯ ¬ïâ¨
LD A,R
AND #80
JR Z,No_Need_To_Load_ZXROMS
.Load_ZXROMS:
XOR A
LD R,A
;
; Load ZX ROM's
init_rom_address EQU #8200 ;!HARDCODE init_rom_address EQU #8200 ;!HARDCODE
ld hl,init_zx_roms
ld hl,init_zx_roms ld de,init_rom_address
ld de,init_rom_address ld bc,init_zx_roms.length
ld bc,init_zx_roms.length
ldir ldir
;
call init_rom_address call init_rom_address
;
LD HL,#C000 LD HL,#C000
LD DE,#C001 LD DE,#C001
LD BC,#3FFF LD BC,#3FFF
LD (HL),C LD (HL),C
LDIR ; § ¡¨âì FF- ¬¨ LDIR ; § ¡¨âì FF- ¬¨
; áâ ¢¨¬ ¬¥âªã ¥á«¨ ¯à®£à㧨«¨ <20>‡“ ᯥªâà㬠 ; áâ ¢¨¬ ¬¥âªã ¥á«¨ ¯à®£à㧨«¨ <20>‡“ ᯥªâà㬠
DEC DE DEC DE ; Spec_Page.flag_X
LD A,'X' LD A,'X'
LD (DE),A LD (DE),A
DEC DE DEC DE ; Spec_Page.flag_Z
LD A,'Z' LD A,'Z'
LD (DE),A LD (DE),A
;!FIXIT ᤥ« âì ¢ë¡®à £à㧨âì ¤ /­¥â <20>‡“ ᯥªâà㬠 ¯à¨ áâ àâ¥, [-------] ;!FIXIT ᤥ« âì ¢ë¡®à £à㧨âì ¤ /­¥â <20>‡“ ᯥªâà㬠 ¯à¨ áâ àâ¥, [-------]
; ¥á«¨ ­¥â - â® ¢®âª­ãâì íâ®â ª®¤: ; ¥á«¨ ­¥â - â® ¢®âª­ãâì íâ®â ª®¤:
@ -899,11 +906,11 @@ init_rom_address EQU #8200 ;!HARDCO
; LD BC,RAM_BIOS_PROG.Length ; LD BC,RAM_BIOS_PROG.Length
; LDIR ; LDIR
;--------------------------------------- ;---------------------------------------
;---------------------------------------
Spec_Page_handler_OK: No_Need_To_Load_ZXROMS:
POP AF POP AF
OUT (SLOT3),A OUT (SLOT3),A
;
ENDMODULE ENDMODULE
;[---------------------------------------------------------------------] ;[---------------------------------------------------------------------]
; ;
@ -1218,7 +1225,7 @@ init_zx_roms:
RET RET
;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23 ;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23
.SET_ROM: ;.SET_ROM:
;LD C,BIOS.SET_PORTS ;LD C,BIOS.SET_PORTS
;JP ToBIOS_3D13 ;JP ToBIOS_3D13
; ;

View File

@ -580,10 +580,10 @@ FN_SYNC:
CALL CMOS_RD CALL CMOS_RD
AND CMOS.Cell.ScreenSET.Mask.Int ; ¢ ॣ¨áâॠA §­ ç¥­¨¥ ScreenSET AND CMOS.Cell.ScreenSET.Mask.Int ; ¢ ॣ¨áâॠA §­ ç¥­¨¥ ScreenSET
jr nz,.skiptest JR NZ,.skiptest
CALL Test_CONFIG_ALL CALL Test_CONFIG_ALL
jp (IX) ; default int (non CMOS) JP (IX) ; default int (non CMOS)
.skiptest: .skiptest:
cp #10 cp #10

View File

@ -178,8 +178,8 @@ FN_HDD_READ_BPB:
CALL HD_WAIT CALL HD_WAIT
RET C RET C
CALL HD_BPB_PREP CALL HD_BPB_PREP
RET C JR NC,HD_RD_L1
JR HD_RD_L1 RET
; FOR LBA ONLY - NEXT_READ ; FOR LBA ONLY - NEXT_READ
@ -204,9 +204,7 @@ FN_HDD_READ:
DEC B DEC B
RET Z RET Z
CALL HD_WAIT CALL HD_WAIT
RET C CALL NC,HD_PREPARE
CALL HD_PREPARE
RET C RET C
HD_RD_L1: HD_RD_L1:
EXX EXX
@ -222,7 +220,6 @@ HD_RD_L1:
LD A,IDE.ATA.ReadSectorsWithRetry LD A,IDE.ATA.ReadSectorsWithRetry
OUT (C),A OUT (C),A
HD_RD_L2: HD_RD_L2:
WAIT_HDD WAIT_HDD
BIT IDE.ControlBit.DataRequest,A BIT IDE.ControlBit.DataRequest,A
@ -450,7 +447,7 @@ HD_C0_L3:
WAIT_HDD WAIT_HDD
LD BC,IDE.Write.Command LD BC,IDE.Write.Command
LD A,IDE.ATA.IdentifyDevice LD A,IDE.ATA.IdentifyDevice ;!FIXIT ¯¥à¥¤¥« âì
OUT (C),A OUT (C),A
WAIT_HDD WAIT_HDD
@ -535,7 +532,7 @@ HD_WAIT:
HD_WAIT1: HD_WAIT1:
LD BC,IDE.Read.Status LD BC,IDE.Read.Status
IN A,(C) IN A,(C)
BIT IDE.ControlBit.Busy,A AND IDE.ControlByte.Busy
JR Z,HD_W_EXIT JR Z,HD_W_EXIT
DEC DE DEC DE
LD A,D LD A,D
@ -577,29 +574,27 @@ HD_CALC_SECS:
IN A,(C) IN A,(C)
BIT 6,A BIT 6,A
JR NZ,HDD_LBA JR NZ,HDD_LBA
; POP BC ;!!!!! ¯®á¬®âà¥âì ; POP BC
*/ */
;EXP_HDD.ASM Version ;EXP_HDD.ASM Version
HDD_LBA:
POP BC
LD L,E
LD E,D
LD D,XL
LD A,XH
AND #0F
LD H,A
RET
HD_CALC_SECS: HD_CALC_SECS:
PUSH BC ;PUSH BC
LD BC,IDE.Read.Control LD BC,IDE.Read.Control
IN A,(C) IN A,(C)
BIT 6,A AND %0100'0000
JR NZ,HDD_LBA ;POP BC
POP BC ; á­¨¬ ¥¬ §­ ç¥­¨¥ ¤«ï ª®à४⭮£® ret JR Z,.CHS
; ; LBA
LD A,XH LD L,E
LD E,D
LD D,XL
LD A,XH
AND #0F ; ®£à ­¨ç¥­¨¥ ­  ~127 £¨£®¢
LD H,A
RET
; CHS
.CHS: LD A,XH
AND A AND A
SCF SCF
RET NZ ; ®è¨¡ª , ᫨誮¬ ¡®«ì让 HDD RET NZ ; ®è¨¡ª , ᫨誮¬ ¡®«ì让 HDD
@ -644,19 +639,17 @@ HD_CALC_SECS:
LD C,A LD C,A
;LD BC,(MS_BPB+S_P_T) ; —ˆ‘‹Ž …ŠŽ<E28099>Ž <20>€ „Ž<E2809E>ކЅ ;LD BC,(MS_BPB+S_P_T) ; —ˆ‘‹Ž …ŠŽ<E28099>Ž <20>€ „Ž<E2809E>ކЅ
XOR A XOR A
HD_CALC_LOOP2: .LOOP: SBC HL,BC
SBC HL,BC
INC A INC A
JR NC,HD_CALC_LOOP2 JR NC,.LOOP
;
DEC A ; A - £®«®¢ª  DEC A ; A - £®«®¢ª 
ADD HL,BC ; L - ᥪâ®à ADD HL,BC ; L - ᥪâ®à
INC L INC L
LD H,A ; HL - HEAD,SEC LD H,A ; HL - HEAD,SEC
;
LD A,(SYS_PAGE.COPY_SLOT3) LD A,(SYS_PAGE.COPY_SLOT3)
OUT (SLOT3),A OUT (SLOT3),A
AND A AND A
RET RET

View File

@ -1,14 +1,15 @@
; DISPLAY "Service" ; DISPLAY "Service"
; !FIXIT âãâ ¬®¦­®, ¯®å®¤ã, ¤®å७  ã¡à âì ; !FIXIT âãâ ¬®¦­®, ¯®å®¤ã, ¤®å७  ã¡à âì
; áâà ­¨æë á ª®­ä®© ¤«ï Sp97, ¤«ï ᮢ¬¥á⨬®áâ¨ á ¤à¥¢­¨¬¨ ¯à®£ ¬¨ ; ; áâà ­¨æë á ª®­ä®© ¤«ï Sp97, ¤«ï ᮢ¬¥á⨬®áâ¨ á ¤à¥¢­¨¬¨ ¯à®£ ¬¨
PG_SP1 equ #EC ; PG_SP1 equ #EC
PG_SP2 equ #EE ; PG_SP2 equ #EE
PG_AY equ #EA ; PG_AY equ #EA
; ; ;
;!TODO § ¬ãâ¨âì § «¨¢ªã ª®­äë, à¥áâ àâ, ¯¥à¥å¢ â à¥á¥â  ᨫ ¬¨ BIOS ; ;!TODO § ¬ãâ¨âì § «¨¢ªã ª®­äë, à¥áâ àâ, ¯¥à¥å¢ â à¥á¥â  ᨫ ¬¨ BIOS
PG_Sp2000 EQU #FE ; PG_Sp2000 EQU #FE
; PG_Sp2000_REINIT EQU #FD
; ;
RST_CONF: RST_CONF:
;--[] ZX Spectrum ;--[] ZX Spectrum
@ -24,7 +25,7 @@ RST_CONF:
OUT (C),A ; ACC_OFF OUT (C),A ; ACC_OFF
;LD A,PG_AY ;LD A,PG_AY
LD DE,#FFFC LD DE,ACEX.Config_ID.Sp97_AY
JR .INT_PLD JR .INT_PLD
;--[] ;--[]
@ -41,7 +42,7 @@ RST_CONF:
OUT (C),A ; ACC_OFF OUT (C),A ; ACC_OFF
;LD A,PG_SP1 ;LD A,PG_SP1
LD DE,#FFFE ;!HARDCODE LD DE,ACEX.Config_ID.Sp97_1
JR .INT_PLD JR .INT_PLD
;--[] ;--[]
@ -52,10 +53,22 @@ RST_CONF:
OR 1 ; ACC_ON OR 1 ; ACC_ON
OUT (C),A OUT (C),A
;LD A,PG_SP2 ;LD A,PG_SP2
LD DE,#FFFD ;!HARDCODE LD DE,ACEX.Config_ID.Sp97_2
JR .INT_PLD JR .INT_PLD
;--[] ;--[]
;--[]
.SP2000:
LD BC,Port_All_Mode
IN A,(C)
OR 1 ; ACC_ON
OUT (C),A
LD DE,ACEX.Config_ID.Sp2000
JR .INT_PLD
;--[]
;--[] ;--[]
.CUSTOM: .CUSTOM:
CP #80 CP #80
@ -98,20 +111,21 @@ RST_CONF:
.CHOOSE_CNF: .CHOOSE_CNF:
;!TEST ;!TEST
CP PG_Sp2000 CP ACEX.Config_PG.Sp2000
;LD DE,SP2000_ConfID JR Z,.INIT_ACEX
JR Z,.INIT_ACEX CP ACEX.Config_PG.Sp2000_SetUp
JR Z,.SP2000
; ;
; only for old FLEX10K soft compatible ; only for old FLEX10K soft compatible
CP PG_SP1 CP ACEX.Config_PG.Sp97_1
LD DE,#FFFE ;!HARDCODE LD DE,ACEX.Config_ID.Sp97_1
JR Z,.INT_PLD JR Z,.INT_PLD
CP PG_SP2 CP ACEX.Config_PG.Sp97_2
LD DE,#FFFD LD DE,ACEX.Config_ID.Sp97_2
JR Z,.INT_PLD JR Z,.INT_PLD
CP PG_AY CP ACEX.Config_PG.Sp97_AY
LD DE,#FFFC LD DE,ACEX.Config_ID.Sp97_AY
JR Z,.INT_PLD JR Z,.INT_PLD
SCF SCF
RET RET
@ -137,30 +151,37 @@ RST_CONF:
; ¤®áâ ñ¬  ¤à¥á ¢®§¢à â  ¢ ¢ë§ë¢ îéãî äã­ªæ¨î ¨ á®å࠭塞 ¢ Spec_Page ; ¤®áâ ñ¬  ¤à¥á ¢®§¢à â  ¢ ¢ë§ë¢ îéãî äã­ªæ¨î ¨ á®å࠭塞 ¢ Spec_Page
POP DE POP DE
LD HL,RST_18_1.exit LD HL,RST_18_1.exit
AND A XOR A
SBC HL,DE SBC HL,DE
JR NZ,1F ; NZ - ¥á«¨ ¢ë§®¢ ¡ë« ¯® RST #18 JR NZ,1F ; NZ - ¥á«¨ ¢ë§®¢ ¡ë« ¯® RST #18
POP DE ; ¥á«¨ ¢ë§®¢ ¡ë« ¢ އ“ ¯® RST 8 POP DE ; ¥á«¨ ¢ë§®¢ ¡ë« ¢ އ“ ¯® RST 8
INC A
1: LD (Spec_Page.RET_addr),DE 1: 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
; ¯à®¢¥à塞 à §¬¥à ¡«®ª  á ª®­ä®© ¨ ¯®«ãç ¥¬ áâà ­¨æë ª®­äë ; ¯à®¢¥à塞 à §¬¥à ¡«®ª  á ª®­ä®© ¨ ¯®«ãç ¥¬ áâà ­¨æë ª®­äë
PUSH BC ;PUSH BC
LD HL,Spec_Page.bitstream_pages LD HL,Spec_Page.bitstream_pages
LD A,B LD A,B
CALL EMM.GetMemBlkPages CALL EMM.GetMemBlkPages
LD A,B LD A,B
POP BC ;POP BC
LD B,A ;LD B,A
JR C,.INIT_ACEX.ERROR JR C,.INIT_ACEX.ERROR
CP 4+1 ;!HARDCODE ª®«¨ç¥á⢮ áâà ­¨æ ¢ ªíè ¤«ï ¡¨áâਬ  ¯«îá ®¤­  CP 4+1 ;!HARDCODE ª®«¨ç¥á⢮ áâà ­¨æ ¢ ªíè ¤«ï ¡¨áâਬ  ¯«îá ®¤­ 
JR NC,.INIT_ACEX.ERROR JR NC,.INIT_ACEX.ERROR
PUSH BC ;PUSH BC
; § ª¨¤ë¢ ¥¬ ¢ Spec_Page ¯à®£ã ¤«ï § «¨¢ª¨ ª®­äë ; § ª¨¤ë¢ ¥¬ ¢ Spec_Page ¯à®£ã ¤«ï § «¨¢ª¨ ª®­äë
LD HL,.INIT_ACEX.PROGRAM LD HL,.INIT_ACEX.PROGRAM
LD DE,Spec_Page.init_acex LD DE,Spec_Page.init_acex
LD BC,.INIT_ACEX.PROGRAM.Size LD BC,.INIT_ACEX.PROGRAM.Size
LDIR LDIR
; ;
POP BC ;POP BC
; B = size of ram block in pages ; B = size of ram block in pages
CALL Spec_Page.init_acex CALL Spec_Page.init_acex
; ;
@ -185,37 +206,80 @@ RST_CONF:
RET RET
; ;
.INIT_ACEX.PROGRAM: .INIT_ACEX.PROGRAM:
DISPLAY " !!! !!! .INIT_ACEX.PROGRAM !!! !!!"
DISP Spec_Page.init_acex DISP Spec_Page.init_acex
; B = size of ram block in pages IN A,(FastRAM.ON)
; EXX
IN A,(FastRAM.ON) ;
XOR A LD A,(Spec_Page.bitstream_pages)
EXX OUT (SLOT1),A ; áâà ­¨æ  á ¤ ­­ë¬¨ ä ©« 
LD HL,Spec_Page.bitstream_pages ;
LD BC,SLOT2 XOR A
EXX OUT (FastRAM.SLOT0),A ; ‘âà ­¨æ  Š<>˜ = 0
.load_loop: ;
EXX LD HL,#5000 ; ¯¥à¥ª¨¤ë¢ ­¨¥ ¤ ­­ëå ¢ áâà ­¨æã Š<>˜ = 0
OUTI LD DE,#1000
EXX LD BC,#3000
PUSH BC LDIR
OUT (FastRAM.SLOT0),A ;
LD HL,0 LD A,(Spec_Page.bitstream_pages+1)
LD DE,#8000 CP #FF
LD BC,#4000 JR Z,.INIT_ACEX.PROGRAM.SET_KEYS
LDIR OUT (SLOT1),A ; á«¥¤ãîé ï áâà ­¨æ  á ¤ ­­ë¬¨ ä ©« 
; LD A,1
INC A OUT (FastRAM.SLOT0),A ; ‘âà ­¨æ  Š<>˜ = 1
POP BC ;
DJNZ .load_loop LD H,D ; LD HL,#4000
LD D,E ; LD DE,#0000
LD B,H ; LD BC,#4000
LDIR
;
LD A,(Spec_Page.bitstream_pages+2)
CP #FF
JR Z,.INIT_ACEX.PROGRAM.SET_KEYS
OUT (SLOT1),A ; á«¥¤ãîé ï áâà ­¨æ  á ¤ ­­ë¬¨ ä ©« 
LD A,2
OUT (FastRAM.SLOT0),A ; ‘âà ­¨æ  Š<>˜ = 2 ; á«¥¤ãîé ï áâà ­¨æ  á ¤ ­­ë¬¨ ä ©« 
;
EX DE,HL ; LD HL,#4000
LD D,E ; LD DE,#0000
LD B,H ; LD BC,#4000
LDIR
;
LD A,(Spec_Page.bitstream_pages+3)
CP #FF
JR Z,.INIT_ACEX.PROGRAM.SET_KEYS
OUT (SLOT1),A ; á«¥¤ãîé ï áâà ­¨æ  á ¤ ­­ë¬¨ ä ©« 
LD A,3
OUT (FastRAM.SLOT0),A ; ‘âà ­¨æ  Š<>˜ = 1
;
LD H,D ; LD HL,#4000
LD D,E ; LD DE,#0000
LD BC,#3EDF ; !HARDCODE ®á⠢訩áï à §¬¥à ¡¨âáâਬ 
LDIR
;
.INIT_ACEX.PROGRAM.SET_KEYS:
LD A,3
OUT (FastRAM.SLOT0),A ; ‘âà ­¨æ  Š<>˜ = 3
;
LD HL,.INIT_ACEX.Reload_String ; ä« £ ¯¥à¥§ £à㧪¨ ¨§ Š<>˜- 
LD DE,ACEX.LOADER.String_Address-#C000
LD BC,#10
LDIR
; ... .... LD HL,#FFFF ; § «¨âì ª®­äã ⮫쪮 ¯à¨ ¯¥à¢®© ¯¥à¥§ £à㧪¥
; acex loading and flags ;LD HL,ACEX.LOADER.Reload_Flag ; § «¨¢ âì ª®­ä㠯ਠª ¦¤®© ¯¥à¥§ £à㧪¥
; ... .... LD (ACEX.LOADER.Reload_Flag_Address-#C000),HL
XOR A ;
OUT (FastRAM.SLOT0),A .INIT_ACEX.PROGRAM.END:
IN A,(FastRAM.OFF) XOR A
RET OUT (FastRAM.SLOT0),A
IN A,(FastRAM.OFF)
RET
;
.INIT_ACEX.Reload_String:
DB ACEX.RELOAD_STRING
;
ENT ENT
.INIT_ACEX.PROGRAM.Size EQU $-.INIT_ACEX.PROGRAM .INIT_ACEX.PROGRAM.Size EQU $-.INIT_ACEX.PROGRAM
; ;

View File

@ -1,4 +1,5 @@
; ;!TODO ¨á¯à ¢¨âì SLOT2 ­  SLOT3 ¨ § â¥áâ¨âì
;!TODO ¤®¡ ¢¨âì ®¯¨á ­¨¥
DISK_REDIR: DISK_REDIR:
PUSH HL PUSH HL
LD HL,SYS_PAGE.DISK_TYPE-#4000 LD HL,SYS_PAGE.DISK_TYPE-#4000
@ -18,27 +19,32 @@ DISK_REDIR:
RET RET
; ;
; ;!TODO ¨á¯à ¢¨âì SLOT2 ­  SLOT3 ¨ § â¥áâ¨âì
;!TODO ¤®¡ ¢¨âì ®¯¨á ­¨¥
SET_DISK_TYPE: SET_DISK_TYPE:
PUSH HL PUSH HL
LD HL,SYS_PAGE.DISK_TYPE-#4000 LD HL,SYS_PAGE.DISK_TYPE-#4000
IN A,(SLOT2) IN A,(SLOT2)
EX AF,AF' EX AF,AF'
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT2),A OUT (SLOT2),A
LD A,(ZX_VARS.OPER_DISK) LD A,(ZX_VARS.OPER_DISK)
AND 3 AND 3
ADD A,L ADD A,L
LD L,A LD L,A
LD (HL),E LD (HL),E
LD L,(HL) ;
EX AF,AF' ;LD L,(HL)
OUT (SLOT2),A LD L,E
LD A,L ;
POP HL EX AF,AF'
OUT (SLOT2),A
LD A,L
POP HL
RET RET
; ;
;!TODO ¨á¯à ¢¨âì SLOT2 ­  SLOT3 ¨ § â¥áâ¨âì
; Disk A, DRV - B ; Disk A, DRV - B
FDD_TO_DRV: FDD_TO_DRV:
CP 4 CP 4
@ -66,7 +72,7 @@ FDD_TO_DRV:
RET RET
; ;
; ;!TODO ¨á¯à ¢¨âì SLOT2 ­  SLOT3 ¨ § â¥áâ¨âì
; RAM-Disk A, DRV - B ; RAM-Disk A, DRV - B
RAMD_TO_DRV: RAMD_TO_DRV:
CP SYS_PAGE.RAMD_KEYS.NUM CP SYS_PAGE.RAMD_KEYS.NUM
@ -77,10 +83,10 @@ RAMD_TO_DRV:
CP 4 CP 4
CCF CCF
RET C RET C
;
LD HL,SYS_PAGE.DISK_TYPE-#4000 LD HL,SYS_PAGE.DISK_TYPE-#4000
LD L,B LD L,B
;
IN A,(SLOT2) IN A,(SLOT2)
LD B,A LD B,A
LD A,SYS_PAGE LD A,SYS_PAGE
@ -94,30 +100,30 @@ RAMD_TO_DRV:
RET RET
; ;
; ;!TODO ¨á¯à ¢¨âì SLOT2 ­  SLOT3 ¨ § â¥áâ¨âì
; HDD A, DRV - B ; HDD A, DRV - B
HDD_TO_DRV: HDD_TO_DRV:
AND 0FH AND #0F
LD C,A LD C,A
LD A,B LD A,B
CP 4 CP 4
CCF CCF
RET C RET C
;
LD HL,SYS_PAGE.DISK_TYPE-#4000 LD HL,SYS_PAGE.DISK_TYPE-#4000
LD L,B LD L,B
;
IN A,(SLOT2) IN A,(SLOT2)
LD B,A LD B,A
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT2),A OUT (SLOT2),A
LD A,C LD A,C
ADD A,40H ADD A,#40
LD (HL),A LD (HL),A
LD A,B LD A,B
OUT (SLOT2),A OUT (SLOT2),A
;
AND A AND A
RET RET
; ;

View File

@ -101,10 +101,9 @@
.ONES_CONFIG: .ONES_CONFIG:
LD IY,SP2000_Loader_Flag LD IY,SP2000_Loader_Flag
;!TEST ;LD IX,#FFFD
;LD IX,#FFFD LD IX,ACEX.Config_ID.Sp2000
LD IX,SP2000_ConfID ;!!!!! ¯®¤ã¬ âì)))
;
.LOOP1: .LOOP1:
LD A,(HL) LD A,(HL)
@ -142,7 +141,7 @@
INC HL INC HL
JR .LOOP1 JR .LOOP1
.STRING: DB "ACEX_30K_LOADING" .STRING: DB ACEX.RELOAD_STRING
.Conf_header: include 'src/bios/Loader/bitstream_header.inc' .Conf_header: include 'src/bios/Loader/bitstream_header.inc'
.Conf_header.length EQU $-.Conf_header .Conf_header.length EQU $-.Conf_header
@ -152,7 +151,7 @@
; <20>â®, ᪮॥ ¢á¥£®, à㤨¬¥­â, â®â á ¬ë© ¡ ©â ®¯¨á â¥«ï ª®­äë, ; <20>â®, ᪮॥ ¢á¥£®, à㤨¬¥­â, â®â á ¬ë© ¡ ©â ®¯¨á â¥«ï ª®­äë,
; ª®â®àë© ¨é¥â § £àã§ç¨ª ¤«ï Sp97 ¯® áâ à®¬ã  ¤à¥áã #C090. ; ª®â®àë© ¨é¥â § £àã§ç¨ª ¤«ï Sp97 ¯® áâ à®¬ã  ¤à¥áã #C090.
; ‚®âª­ã« ¥£® ¢ ª®­æ¥ § £àã§ç¨ª , ¬®¦¥â ¯®â®¬ ¯à¨£®¤¨âáï. ; ‚®âª­ã« ¥£® ¢ ª®­æ¥ § £àã§ç¨ª , ¬®¦¥â ¯®â®¬ ¯à¨£®¤¨âáï.
.DEF_SYM: DW SP2000_ConfID .DEF_SYM: DW ACEX.Config_ID.Sp2000
;------------------------------[Loader end] ;------------------------------[Loader end]
DEFINE Altera_Chip altera_chip DEFINE Altera_Chip altera_chip

View File

@ -3,7 +3,6 @@
DEFINE DEBUG 1 ; ¤®¡ ¢«ï¥â áâப㠨 á®®¡é¥­¨¥ ® â¥á⮢®© ᡮથ ­  áâ à⮢®¬ íªà ­¥ DEFINE DEBUG 1 ; ¤®¡ ¢«ï¥â áâப㠨 á®®¡é¥­¨¥ ® â¥á⮢®© ᡮથ ­  áâ à⮢®¬ íªà ­¥
DEFINE PACKED_MAIN 0 ; ¯ ª®¢ âì MAIN ¨«¨ ¢«¥§ ¥â ¡¥§ í⮣®? DEFINE PACKED_MAIN 0 ; ¯ ª®¢ âì MAIN ¨«¨ ¢«¥§ ¥â ¡¥§ í⮣®?
DEFINE SP2000_Loader_Flag #0107 DEFINE SP2000_Loader_Flag #0107
DEFINE SP2000_ConfID #FEFF ;
DEFINE IDE_Optimization 1 ; á«¥£ª  ®¯â¨¬¨§¨àã¥â ­¥ª®â®àë¥ ¯à®æ¥¤ãàë à ¡®âë á HDD DEFINE IDE_Optimization 1 ; á«¥£ª  ®¯â¨¬¨§¨àã¥â ­¥ª®â®àë¥ ¯à®æ¥¤ãàë à ¡®âë á HDD
DEFINE NeedSafePort_Y 1 ; !!!!! ¥á«¨ 0, â® ¢ ०¨¬¥ sp-ᯥªâà㬠 ­¥ª®â®àë¥ ¯à®æ¥¤ãàë ¬®£ãâ § áà âì íªà ­ DEFINE NeedSafePort_Y 1 ; !!!!! ¥á«¨ 0, â® ¢ ०¨¬¥ sp-ᯥªâà㬠 ­¥ª®â®àë¥ ¯à®æ¥¤ãàë ¬®£ãâ § áà âì íªà ­
DEFINE Pashalki 0 ; DEFINE Pashalki 0 ;