This commit is contained in:
Tolik 2024-08-20 05:40:01 +10:00
parent 97b26695af
commit 6265aedb5c
6 changed files with 190 additions and 236 deletions

View File

@ -21,7 +21,7 @@
;-----------------------------------------------------------------------; ;-----------------------------------------------------------------------;
; ;
; .RECORD.Size EQU 5
;-----------------------------------------------------------------------; ;-----------------------------------------------------------------------;
DW %00'000'0'0000'0111 DW %00'000'0'0000'0111
DW %00'010'0'0110'1111 DW %00'010'0'0110'1111
@ -447,44 +447,47 @@
; ;
;----------------------------------------------------------------------; ;----------------------------------------------------------------------;
DCP_INIT: ; ¢ë§ë¢ ¥âáï ¨§ POST_TEST.POST_3_INIT_DCP
LD C,XL DCP_INIT: LD E,YL
LD B,XH LD D,YH
LD E,YL EX DE,HL
LD D,YH LD E,XL
EXX LD D,XH
;
LD HL,#C000 LD BC,DCP_DATA.RECORD.Size
LD DE,#C001 EXX
LD BC,#3FFF LD HL,#C000
LD (HL),L LD DE,#C001
LDIR LD BC,#3FFF
LD (HL),L
LD IY,DCP_DATA LDIR
LD IX,.ret ;
LD IY,DCP_DATA
.loop: LD L,(IY) LD IX,.ret
LD H,(IY+1) ;
LD E,(IY+2) .loop: LD L,(IY)
LD D,(IY+3) LD H,(IY+1)
LD B,(IY+4) LD E,(IY+2)
JP DCP_CONFIG.PARSE_TABLE LD D,(IY+3)
LD B,(IY+4)
.ret: LD BC,5 JP DCP_CONFIG.PARSE_TABLE
ADD IY,BC ;
LD A,(IY+2) .ret: EXX
OR (IY+3) ADD IY,BC
JR NZ,.loop EXX
LD A,(IY+2)
EXX OR (IY+3)
LD XL,C JR NZ,.loop
LD XH,B EXX
LD YL,E LD XL,E
LD YH,D LD XH,D
EX DE,HL
LD YL,E
LD YH,D
; First IN command - OPEN DCP ; First IN command - OPEN DCP
IN A,(SLOT3) IN A,(SLOT3)
JP (HL) JP POST_TEST.POST_3_OK
;-----------------------------------------------------------------------; ;-----------------------------------------------------------------------;
; ;

View File

@ -611,8 +611,8 @@ POST_2_OK:
; ===== INIT DCP ======== ; ===== INIT DCP ========
POST_3_INIT_DCP: POST_3_INIT_DCP:
LD HL,POST_3_OK ; INIT PORTS ;LD HL,POST_3_OK ; INIT PORTS
JP DCP_INIT ; ¯à®æ¥¤ãà  ¨­¨æ¨ «¨§ æ¨¨ á ¢®§¢à â®¬ ¢ (HL) JP DCP_INIT ; ¯à®æ¥¤ãà  ¨­¨æ¨ «¨§ æ¨¨ á ¢®§¢à â®¬ ­  POST_3_OK
; ®è¨¡®ª ­¥â ; ®è¨¡®ª ­¥â
; *********************************** ; ***********************************
@ -697,19 +697,32 @@ POST_5_OK:
; ********************************** ; **********************************
; POST § ¢¥à襭 ; POST § ¢¥à襭
; **********************************
ENDMODULE ENDMODULE
; **********************************
;-----------------------------------------------------------------------;
; ¯¥à¢ ï ¨­¨æ¨ «¨§ æ¨ï áâà ­¨æ:
XOR A
OUT (RGADR),A
OUT (RGMOD),A
OUT (SLOT0),A ;!HARDCODE zx page number
; !TEST 20/08/2024
;LD A,5 ;!HARDCODE zx page number
;OUT (SLOT1),A
;LD A,2 ;!HARDCODE zx page number
;OUT (SLOT2),A
LD A,#FF ;!HARDCODE zx page number
OUT (SLOT1),A
LD A,0 ;!HARDCODE zx page number
OUT (SLOT2),A
;
LD A,SYS_PAGE
OUT (SLOT3),A
;-----------------------------------------------------------------------;
;-----------------------------------------------------------------------;
MODULE SET_CONFIG_ID MODULE SET_CONFIG_ID
IN A,(SLOT3)
EX AF,AF' ; SAVE PAGE3
;NO_SUMX_EQ:
LD A,SYS_PAGE
OUT (SLOT3),A
;-------------[Save IX:IY]-------------- ;-------------[Save IX:IY]--------------
; Don't use IY before this point if it`s normal booting!!! ; Don't use IY before this point if it`s normal booting!!!
LD IX,0 LD IX,0
@ -718,65 +731,39 @@ POST_5_OK:
; í⮬ ¬¥á⥠㠭 á IX:IY ¨§ Loader.asm ; í⮬ ¬¥á⥠㠭 á IX:IY ¨§ Loader.asm
; „®â é¨«¨ ¤® á ¬¥âªã ®â «® ¤¥à  ; „®â é¨«¨ ¤® á ¬¥âªã ®â «® ¤¥à 
;[x] 31/12/2023 ¯®¤áâà å®¢ª  ®â ­¥¤®ãâ¥çª¨ ¯ ¬ï⨠;[x] 31/12/2023 ¯®¤áâà å®¢ª  ®â ­¥¤®ãâ¥çª¨ ¯ ¬ïâ¨
; IY - number from loader
LD D,YH LD D,YH
LD E,YL LD E,YL
EX DE,HL EX DE,HL
LD DE,SP2000_Loader_Flag LD DE,SP2000_Loader_Flag
SBC HL,DE SBC HL,DE
JR NZ,.no_conf_reload JR NZ,.no_conf_reload
; ; IX - number from loader
LD D,XH LD D,XH
LD E,XL LD E,XL
EX DE,HL EX DE,HL
LD DE,ACEX.Config_ID.Sp2000 LD DE,ACEX.Config_ID.Sp2000
SBC HL,DE SBC HL,DE
; A = 0
JR NZ,.no_conf_reload JR NZ,.no_conf_reload
;
LD A,#80 LD A,#80
.no_conf_reload: .no_conf_reload:
LD R,A LD R,A ; reg R bit7 - ¯à¨§­ ª à ¡®âë «® ¤¥à 
;
; ­  ¢á直© á«ãç ©
LD HL,ACEX.Config_ID.Sp2000
LD (SYS_PAGE.CONFIG_BYTE),HL ; á®åà ­¨âì ­®¬¥à ¯à®è¨¢ª¨
;
LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON
LD (SYS_PAGE.CONFIG_DE),A
;
XOR A ;!HARDCODE zx page number
OUT (SLOT3),A
; ;
; !TODO number from loader
; LD A,YL
; LD L,A
; LD A,YH
; LD H,A
; LD BC,#0107 ; !!!!! áà ¢­¨âì á 0107h ¢ë­¥á⨠à¥ä¥à¥­á®¬ âãâ ¨ ¢ loader.asm
; AND A ; ¥á«¨ à ¢­® - ¯à®è«  ¯¥à¥§ £à㧪 
; SBC HL,BC
;JR Z,set_config ;!TODO  ªâ¨¢ æ¨ï ¬¥âª¨ IX:IY ¨§ «® ¤¥à 
;LD IX,ACEX.Config_ID.Sp97_2
LD HL,ACEX.Config_ID.Sp2000
set_config:
LD (SYS_PAGE.CONFIG_BYTE),HL ; á®åà ­¨âì ­®¬¥à ¯à®è¨¢ª¨
;LD (SYS_PAGE.CONFIG_BYTE),IX ; á®åà ­¨âì ­®¬¥à ¯à®è¨¢ª¨
;LD HL,(SYS_PAGE.CONFIG_BYTE) ; ¢§ïâì ­®¬¥à ¯à®è¨¢ª¨ ¢ HL
;
LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON
LD (SYS_PAGE.CONFIG_DE),A
EX AF,AF'
OUT (SLOT3),A ; Restore SLOT3
ENDMODULE ENDMODULE
;********************************* ;-----------------------------------------------------------------------;
; ¯¥à¢ ï ¨­¨æ¨ «¨§ æ¨ï áâà ­¨æ:
; SLOT3=0, SLOT2=2, SLOT1=5, SLOT0=0
XOR A
OUT (RGADR),A
OUT (RGMOD),A
OUT (SLOT3),A
OUT (SLOT0),A ;!HARDCODE zx page number
LD A,5 ;!HARDCODE zx page number
OUT (SLOT1),A
LD A,2 ;!HARDCODE zx page number
OUT (SLOT2),A
;*********************************
; Don't use stack (SP) before this point if it`s normal booting!!! ; Don't use stack (SP) before this point if it`s normal booting!!!
LD SP,#C000 ; <20> ç «® ¨á¯®«ì§®¢ ­¨ï á⥪ !!! LD SP,ROM_MAP.EXP.STACK ; <20> ç «® ¨á¯®«ì§®¢ ­¨ï á⥪ !!!
PUSH HL ; á®åà ­¨âì ­®¬¥à ¯à®è¨¢ª¨ PUSH HL ; á®åà ­¨âì ­®¬¥à ¯à®è¨¢ª¨
CALL PORTS_INIT ; ¨­¨æ¨ «¨§¨à®¢ âì ¯®àâë CALL PORTS_INIT ; ¨­¨æ¨ «¨§¨à®¢ âì ¯®àâë
@ -785,7 +772,7 @@ set_config:
CALL EMM.CheckColdInit ; ¨­¨æ¨ «¨§ æ¨ï ¯ ¬ï⨠CALL EMM.CheckColdInit ; ¨­¨æ¨ «¨§ æ¨ï ¯ ¬ïâ¨
POP HL ; ª®­ä¨£ãà æ¨ï POP HL ; ª®­ä¨£ãà æ¨ï
; JR Reset_Handler.start ; JR Reset_Handler.start
;-----------------------------------------------------------------------;
MODULE Reset_Handler MODULE Reset_Handler
start: DI start: DI
IN A,(SLOT3) IN A,(SLOT3)
@ -849,68 +836,12 @@ Check_Spec_Page:
JR Check_EE_Port.After_Hard_Rst 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
; [x] 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
;
LD HL,init_zx_roms
LD DE,init_rom_address
LD BC,init_zx_roms.length
LDIR
;
CALL init_rom_address
;
LD HL,#C000
LD DE,#C001
LD BC,#3FFF
LD (HL),C
LDIR ; § ¡¨âì FF- ¬¨
; áâ ¢¨¬ ¬¥âªã ¥á«¨ ¯à®£à㧨«¨ <20>‡“ ᯥªâà㬠
DEC DE ; Spec_Page.flag_X
LD A,'X'
LD (DE),A
DEC DE ; Spec_Page.flag_Z
LD A,'Z'
LD (DE),A
; ‡ £«ã誠 ¤«ï áâà ­¨æë #41 ­  ¢á直© ¯®¦ à­ë©
LD HL,PROG_NO_ROM
LD DE,#C000+Spec_Page.no_zx_rom
LD BC,PROG_NO_ROM.size
LDIR
;
LD HL,RAM_BIOS_PROG
LD DE,#C000+Spec_Page.to_bios
LD BC,RAM_BIOS_PROG.Length
LDIR
*/
;No_Need_To_Load_ZXROMS:
POP AF POP AF
OUT (SLOT3),A OUT (SLOT3),A
;-------------------------------------------------------------------------------------------------------------------;
;!TODO ᤥ« âì ¢ë¡®à ¢ Setup, çâ® £à㧨âì ¢ v<>‡“ ¯à¨ áâ àâ¥. ‚ à¨ ­âë:
;[ ] 0 - <20>¥ £à㧨âì <20>‡“ ᯥªâà㬠, ¨­¨â¨âì áâà ­¨æã #41 ª ª ¢ 3.04
;[ ] 1 - ƒà㧨â <20>‡“ ᯥªâà㬠 ¨§ ROM ¯à¨ áâ à⥠¥á«¨ ­¥â ä« £  ZX
;[ ] 2 - ƒà㧨â <20>‡“ ᯥªâà㬠 ¨§ ROM ¯à¨ ª ¦¤®¬ ¯¥à¥§ ¯ã᪥ (¬®¦¥â ¡ëâì ®¯ á­®)
;[ ] 3 - <20>¥ £à㧨âì <20>‡“ ᯥªâà㬠, ¨­¨â¨âì áâà ­¨æã #41 â ª, ç⮡ ª®¤ ¢ ­¥© ¯®¤£à㦠« <20>‡“ ᯥªâà㬠 ¯à¨ ®¡à é¥­¨¨
;-------------------------------------------------------------------------------------------------------------------;
ENDMODULE ENDMODULE
; ;-----------------------------------------------------------------------;
;**************************************
;
MODULE Prepare_For_Setup MODULE Prepare_For_Setup
Set_ALL_Mode: LD A,#FF Set_ALL_Mode: LD A,#FF
LD BC,Port_All_Mode LD BC,Port_All_Mode
@ -919,18 +850,17 @@ Set_ALL_Mode: LD A,#FF
Set_Default_Screen: Set_Default_Screen:
CALL FN_SYNC.INT_DEF ; set default int CALL FN_SYNC.INT_DEF ; set default int
ld a,128+4 ; !HARDCODE ld a,128+4 ; !HARDCODE
;ld c,BIOS.FN_SYNC
;RST_to_BIOS_18 ; set default vsync
CALL FN_SYNC ; set default vsync CALL FN_SYNC ; set default vsync
Setup_to_RAM: LD HL,Setup_Starter.Start Setup_to_RAM: LD HL,Setup_Starter.Start
LD DE,COMPILE_ADDR.SETUP_STARTER LD DE,COMPILE_ADDR.SETUP_STARTER
LD BC,Setup_Starter.Length LD BC,Setup_Starter.Size
LDIR LDIR
; ­  á⥪ ª« ¤ñâáï  ¤à¥á ¢®§¢à â  ¨ ¤ «ìè¥ â é¨âáï ¢á直¬¨ ª®áâë«ï¬¨, ç⮡ ¢¥à­ãâìáï ­ § ¤ ; ­  á⥪ ª« ¤ñâáï  ¤à¥á ¢®§¢à â  ¨ ¤ «ìè¥ â é¨âáï ¢á直¬¨ ª®áâë«ï¬¨, ç⮡ ¢¥à­ãâìáï ­ § ¤
CALL Setup_Starter.Exec ; #C000 CALL Setup_Starter.Exec ; #C000
;JP PrepareToZX ;JP PrepareToZX
ENDMODULE ENDMODULE
;
PrepareToZX: ;CALL init_zx_roms PrepareToZX: ;CALL init_zx_roms
; Setup HDD drives for ZX Spectrum mode ; Setup HDD drives for ZX Spectrum mode
DI DI
@ -961,7 +891,13 @@ PrepareToZX: ;CALL init_zx_roms
INC A INC A
CP #10 CP #10
JR C,.loop JR C,.loop
; ¢ë室 ¢ ०¨¬ zx spectrum ; ¢ë室 ¢ ०¨¬ zx spectrum
;!TODO § ¬¥­¨âì ­  ãáâ ­®¢ªã ¨§ à ¬¡«®ª  ; [ ] free zx pages!
LD A,5
OUT (SLOT1),A
LD A,2
OUT (SLOT2),A
;
.start_zx: JP GOTO_SPEC.ZX_MODE .start_zx: JP GOTO_SPEC.ZX_MODE
;*********************************** ;***********************************
; ˆ­¨æ¨ «¨§ æ¨ï ¯®à⮢ ; ˆ­¨æ¨ «¨§ æ¨ï ¯®à⮢
@ -1014,8 +950,8 @@ PORTS_INIT:
; reg 4 ; reg 4
LD A,4 LD A,4
OUT (Z84.SIO.Ch_B.Ctrl),A OUT (Z84.SIO.Ch_B.Ctrl),A
;LD A,#45 ;LD A,#45
LD A,#40 LD A,#40
OUT (Z84.SIO.Ch_B.Ctrl),A OUT (Z84.SIO.Ch_B.Ctrl),A
; reg 3 ; reg 3
LD A,3 LD A,3
@ -1069,29 +1005,29 @@ PORTS_INIT:
OUT (C),A OUT (C),A
; ‘¡à®á ª®­â஫«¥à  ¤¨áª®¢®¤  ; ‘¡à®á ª®­â஫«¥à  ¤¨áª®¢®¤ 
; ‚ª«îç¨âì ¤®áâ㯠ª ª®­â஫«¥àã ¤¨áª  (âà¥âìï ª®­ä ) ; ‚ª«îç¨âì ¤®áâ㯠ª ª®­â஫«¥àã ¤¨áª  (âà¥âìï ª®­ä )
LD A,CNF_PORT.CNF_3 + ROM.BIOS LD A,CNF_PORT.CNF_3+ROM.BIOS
OUT (SYS_PORT.ROM),A OUT (SYS_PORT.ROM),A
OUT (FDC_93.DrvCTRL),A OUT (FDC_93.DrvCTRL),A
push hl PUSH HL
pop hl POP HL
LD A,#3C ;!HARDCODE ª®¬ ­¤  ¤«ï ƒ93 LD A,#3C ;!HARDCODE ª®¬ ­¤  ¤«ï ƒ93
OUT (FDC_93.DrvCTRL),A OUT (FDC_93.DrvCTRL),A
push hl PUSH HL
pop hl POP HL
XOR A XOR A
OUT (FDC_93.Command),A OUT (FDC_93.Command),A
; ‚몫îç¨âì ¤®áâ㯠ª ª®­â஫«¥àã ¤¨áª  ; ‚몫îç¨âì ¤®áâ㯠ª ª®­â஫«¥àã ¤¨áª 
LD A,CNF_PORT.CNF_0 + ROM.BIOS LD A,CNF_PORT.CNF_0+ROM.BIOS
OUT (SYS_PORT.ROM),A OUT (SYS_PORT.ROM),A
; set HDD1/not-HDD2 ; set HDD1/not-HDD2
LD A,IDE.Chanel.Primary LD A,IDE.Chanel.Primary
OUT (IDE.Chanel.Set),A OUT (IDE.Chanel.Set),A
LD BC,#7FFD LD BC,#7FFD
LD A,#10 LD A,#10
OUT (C),A ; BASIC_48 mode OUT (C),A ; BASIC_48 mode
LD B,#1F LD B,#1F
LD A,01 LD A,01
OUT (C),A ; RAM-0 mode !!! OUT (C),A ; RAM-0 mode !!!
; ®ç¨á⪠ ¡ãä¥à®¢ ª« ¢¨ âãàë ¨ ¬ëè¨ ¢ SIO ; ®ç¨á⪠ ¡ãä¥à®¢ ª« ¢¨ âãàë ¨ ¬ëè¨ ¢ SIO
CALL .clean_kbd_buf CALL .clean_kbd_buf
JR .clean_mouse_buf JR .clean_mouse_buf
@ -1211,12 +1147,12 @@ Exec:
;----------------------[] ;----------------------[]
DI DI
POP HL ;  ¤à¥á ¢®§¢à â  ¢ EXP ¨§ SETUP POP HL ;  ¤à¥á ¢®§¢à â  ¢ EXP ¨§ SETUP
LD SP,#8000 ;!HARDCODE ; LD SP,#8000 ;!HARDCODE
PUSH HL ; PUSH HL
PUSH AF ; PUSH AF
JP SETUP_MAIN JP SETUP_MAIN
ENT ENT
Length EQU $-Setup_Starter.Start Size EQU $-Setup_Starter.Start
ENDMODULE ENDMODULE
;-----------------------------------------------------------------------; ;-----------------------------------------------------------------------;
;-----------------------------------------------------------------------; ;-----------------------------------------------------------------------;

View File

@ -1,3 +1,11 @@
;-------------------------------------------------------------------------------------------------------------------;
;!TODO ᤥ« âì ¢ë¡®à ¢ Setup, çâ® £à㧨âì ¢ v<>‡“ ¯à¨ áâ àâ¥. ‚ à¨ ­âë:
;[~] 0 - <20>¥ £à㧨âì <20>‡“ ᯥªâà㬠, ¨­¨â¨âì áâà ­¨æã #41 ª ª ¢ 3.04
;[~] 1 - ƒà㧨â <20>‡“ ᯥªâà㬠 ¨§ ROM ¯à¨ áâ à⥠¥á«¨ ­¥â ä« £  ZX
;[~] 2 - ƒà㧨â <20>‡“ ᯥªâà㬠 ¨§ ROM ¯à¨ ª ¦¤®¬ ¯¥à¥§ ¯ã᪥ (¬®¦¥â ¡ëâì ®¯ á­®)
;[ ] 3 - <20>¥ £à㧨âì <20>‡“ ᯥªâà㬠, ¨­¨â¨âì áâà ­¨æã #41 â ª, ç⮡ ª®¤ ¢ ­¥© ¯®¤£à㦠« <20>‡“ ᯥªâà㬠 ¯à¨ ®¡à é¥­¨¨
;-------------------------------------------------------------------------------------------------------------------;
; ;
; _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ [___FOR ZX-MODE___] _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ ; ; _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ [___FOR ZX-MODE___] _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ ;

View File

@ -8,6 +8,7 @@
; ;
ROM_MAP: ROM_MAP:
.EXP EQU 0 .EXP EQU 0
.EXP.STACK EQU #C000
.ROM EQU 0 .ROM EQU 0
.LOADER EQU 0 .LOADER EQU 0
.LOGO EQU 0 .LOGO EQU 0
@ -44,7 +45,7 @@ COMPILE_ADDR:
.MAIN EQU #8000 .MAIN EQU #8000
.SETUP EQU #8000 .SETUP EQU #8000
.DEPACK EQU #D000 .DEPACK EQU #D000
.SETUP_STARTER EQU #C000 .SETUP_STARTER EQU .SETUP + SETUP_MAIN.Size ;#C000
; ;
; ÛÛÛÛÛÛ» ÛÛÛÛÛÛÛ»ÛÛÛÛÛÛ» ÛÛÛÛÛ» ÛÛÛÛÛÛ»ÛÛ» ÛÛ»ÛÛÛÛÛÛÛ»ÛÛÛÛÛÛ» ; ÛÛÛÛÛÛ» ÛÛÛÛÛÛÛ»ÛÛÛÛÛÛ» ÛÛÛÛÛ» ÛÛÛÛÛÛ»ÛÛ» ÛÛ»ÛÛÛÛÛÛÛ»ÛÛÛÛÛÛ»
; ÛÛÉÍÍÛÛ»ÛÛÉÍÍÍͼÛÛÉÍÍÛÛ»ÛÛÉÍÍÛÛ»ÛÛÉÍÍÍͼÛÛº ÛÛɼÛÛÉÍÍÍͼÛÛÉÍÍÛÛ» ; ÛÛÉÍÍÛÛ»ÛÛÉÍÍÍͼÛÛÉÍÍÛÛ»ÛÛÉÍÍÛÛ»ÛÛÉÍÍÍͼÛÛº ÛÛɼÛÛÉÍÍÍͼÛÛÉÍÍÛÛ»

View File

@ -199,13 +199,16 @@ DEPACK_DATA.length EQU $-DEPACK_DATA
DISP COMPILE_ADDR.SETUP DISP COMPILE_ADDR.SETUP
ShowInfo 'Setup block DISP start', 1 ; !!!!! test ShowInfo 'Setup block DISP start', 1 ; !!!!! test
SETUP_MAIN: INCLUDE 'src/bios/ROM/SETUP/Main.asm' SETUP_MAIN: INCLUDE 'src/bios/ROM/SETUP/Main.asm'
SETUP_MAIN.Size EQU $-SETUP_MAIN
ShowInfo 'Setup block DISP end', 1 ; !!!!! test ShowInfo 'Setup block DISP end', 1 ; !!!!! test
ENT ENT
ENDIF ENDIF
ASSERT ($ + Setup_Starter.Size) < (STACK - STACK.Size), "WARNING: Stack area overlaps code..."
ShowInfo 'Setup block of ROM end', 0 ; !!!!! test ShowInfo 'Setup block of ROM end', 0 ; !!!!! test
BLOCK_Setup.Length EQU $-BLOCK_Setup BLOCK_Setup.Length EQU $-BLOCK_Setup
;--------------------------------------- ;---------------------------------------
; ;

View File

@ -79,14 +79,14 @@ MEMMAP2 EQU TEMP ;
TPOINTD EQU TEMP - SYS_PAGE.RAMD_KEYS.NUM - SYS_PAGE.Sp_RAMD_KEYS.NUM ; [x] 4/11/2023 TPOINTD EQU TEMP - SYS_PAGE.RAMD_KEYS.NUM - SYS_PAGE.Sp_RAMD_KEYS.NUM ; [x] 4/11/2023
;======================================= ;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
;SETUP_MAIN: ;SETUP_MAIN:
MAIN_START: MAIN_START:
POP AF ; POP AF
POP HL ; POP HL
LD SP,STACK LD SP,STACK
PUSH HL PUSH HL
LD (RET_TO_EXP_ADDR),hl LD (RET_TO_EXP_ADDR),HL
JP START JP START
; DB "(C) 2002 PETERS PLUS LTD " ; DB "(C) 2002 PETERS PLUS LTD "
RET_TO_EXP_ADDR: WORD 0000 ; place for save ret address to exp RET_TO_EXP_ADDR: WORD 0000 ; place for save ret address to exp
@ -243,58 +243,57 @@ CMSERR:
; RST_to_BIOS ; RST_to_BIOS
RET RET
CLEARM: IN A,(SLOT3) CLEARM: IN A,(SLOT3)
PUSH AF PUSH AF
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT3),A OUT (SLOT3),A
; save RAM disks on reboot when memory is cleared ; save RAM disks on reboot when memory is cleared
LD HL,SYS_PAGE.RAMD_KEYS LD HL,SYS_PAGE.RAMD_KEYS
LD DE,TPOINTD LD DE,TPOINTD
LD BC,SYS_PAGE.RAMD_KEYS.NUM LD BC,SYS_PAGE.RAMD_KEYS.NUM
LDIR LDIR
; [x] 4/11/2023 ; [x] 4/11/2023
LD HL,SYS_PAGE.Sp_RAMD_KEYS LD HL,SYS_PAGE.Sp_RAMD_KEYS
LD DE,TPOINTD + SYS_PAGE.RAMD_KEYS.NUM LD BC,SYS_PAGE.Sp_RAMD_KEYS.NUM
LD BC,SYS_PAGE.Sp_RAMD_KEYS.NUM LDIR
LDIR ;
;
; ®ç¨é ¥¬ RAM Table ; ®ç¨é ¥¬ RAM Table
LD HL,MEMMAP2 LD HL,MEMMAP2
LD DE,MEMMAP2+1 LD DE,MEMMAP2+1
LD BC,255 LD BC,255
LD (HL),0 LD (HL),0
LDIR LDIR
; ¢®ááâ ­ ¢«¨¢ ¥¬ RAM ¤¨áª¨ ; ¢®ááâ ­ ¢«¨¢ ¥¬ RAM ¤¨áª¨
LD IX,SYS_PAGE.RAMD_KEYS ;RAM DISKS LD IX,SYS_PAGE.RAMD_KEYS ;RAM DISKS
LD H,high SYS_PAGE.RAMD_FAT LD H,high SYS_PAGE.RAMD_FAT
LD D,high MEMMAP2 LD D,high MEMMAP2
LD BC,SYS_PAGE.RAMD_KEYS.NUM*256 + #FF LD BC,SYS_PAGE.RAMD_KEYS.NUM*256+#FF
CALL .MEMLOOP CALL .MEMLOOP
; [x] 4/11/2023 ; [x] 4/11/2023
LD IX,SYS_PAGE.Sp_RAMD_KEYS LD IX,SYS_PAGE.Sp_RAMD_KEYS
LD B,SYS_PAGE.Sp_RAMD_KEYS.NUM LD B,SYS_PAGE.Sp_RAMD_KEYS.NUM
CALL .MEMLOOP CALL .MEMLOOP
; ;
CALL EMM.InitMem CALL EMM.InitMem
LD BC,CMOS_CELL.BootUpParams.Mask.SaveRAMdisks ;#400E LD BC,CMOS_CELL.BootUpParams.Mask.SaveRAMdisks ;#400E
CALL G_VALUE CALL G_VALUE
OR A OR A
CALL NZ,CCHAIN CALL NZ,CCHAIN
POP AF POP AF
OUT (SLOT3),A OUT (SLOT3),A
; [x] 04/11/2023 Žâ¤¥«ì­ë¥ à ¬¤¨áª¨ ¤«ï ०¨¬  ᯥªâà㬠 ¨ DSS. ; [x] 04/11/2023 Žâ¤¥«ì­ë¥ à ¬¤¨áª¨ ¤«ï ०¨¬  ᯥªâà㬠 ¨ DSS.
LD B,high BIOS.SWAP_RAM_DRIVES.Sp2000 LD B,high BIOS.SWAP_RAM_DRIVES.Sp2000
JP SWAP_RAM_DRIVES JP SWAP_RAM_DRIVES
; ;
; ;
.MEMLOOP: .MEMLOOP:
LD A,(IX) LD A,(IX)
INC IX INC IX
OR A OR A
LD L,A LD L,A
CALL NZ,RCHAIN CALL NZ,RCHAIN
DJNZ .MEMLOOP DJNZ .MEMLOOP
RET RET
; ;
; ;
@ -483,7 +482,9 @@ START:
;R08 CALL OPENDOS ;R08 CALL OPENDOS
CALL ZXCLS ;!TEST 20/08/2024
;CALL ZXCLS
;
CALL READING CALL READING
CALL TCHEKSM CALL TCHEKSM
CALL NZ,SETDEFX CALL NZ,SETDEFX
@ -1308,12 +1309,14 @@ PMEMORY:
LD A,"K" LD A,"K"
JP PRINT_CHAR JP PRINT_CHAR
IFUSED ZXCLS
ZXCLS: LD HL,#4000 ZXCLS: LD HL,#4000
LD DE,#4001 LD DE,#4001
LD BC,#1AFF LD BC,#1AFF
LD (HL),L LD (HL),L
LDIR LDIR
RET RET
ENDIF
GET_ID: LD HL,memBUFFER.ID GET_ID: LD HL,memBUFFER.ID
;LD C,BIOS.FN_VERSION ;LD C,BIOS.FN_VERSION
@ -1740,10 +1743,10 @@ End BYTE
memBUFFER MAIN_BUFFERS = $ memBUFFER MAIN_BUFFERS = $
STACK EQU #C000 STACK EQU #C000
.size EQU 128 .Size EQU 128
IF memBUFFER.End-1 > #C000-STACK.size IF memBUFFER.End-1 > #C000-STACK.Size
DISPLAY 'memBUFFER.Shared overlaps STACK by: ',/A,(memBUFFER.End-1)-(#C000-STACK.size) DISPLAY 'memBUFFER.Shared overlaps STACK by: ',/A,(memBUFFER.End-1)-(#C000-STACK.size)
ASSERT memBUFFER.End-1 < #C000-STACK.size ASSERT memBUFFER.End-1 < #C000-STACK.size
ENDIF ENDIF
@ -1761,7 +1764,7 @@ STACK EQU #C000
DISPLAY 'End code address: ',/A,$-1 DISPLAY 'End code address: ',/A,$-1
DISPLAY 'Code size: ',/A,$-COMPILE_ADDR.MAIN DISPLAY 'Code size: ',/A,$-COMPILE_ADDR.MAIN
DISPLAY 'End buffers address: ',/A,memBUFFER.End-1 DISPLAY 'End buffers address: ',/A,memBUFFER.End-1
DISPLAY 'Free memory: ',/A,#C000-(memBUFFER.End-1)-STACK.size DISPLAY 'Free memory: ',/A,#C000-(memBUFFER.End-1)-STACK.Size
DISPLAY 'Unused bytes before INT_POINTER: ',/A,INT_POINTER-before_intPointer DISPLAY 'Unused bytes before INT_POINTER: ',/A,INT_POINTER-before_intPointer
ENDIF ENDIF
; ;