checking ZX flag in Spec_Page before start spectrum mode with missing ROMs in CNF

This commit is contained in:
Anatoliy Belyanskiy 2023-12-09 05:47:07 +10:00
parent ecb79faa1a
commit 9aca5b5351
2 changed files with 99 additions and 70 deletions

@ -1 +1 @@
Subproject commit 809ea1f0b204f2d56555497c1c808806833d6315 Subproject commit 21c7eb690adb62e35c41fdcda76dc3bf97f369b4

View File

@ -15,22 +15,23 @@
/* /*
SYS SYS
[+] - § ¤ ¢ âì CONFIG_DE ¯¥à¥¤ § ¯ã᪮¬ ᯥªâà㬠 ¨ ¢ ¯¥à¥å¢ â稪¥ à¥á¥â  [x] - § ¤ ¢ âì CONFIG_DE ¯¥à¥¤ § ¯ã᪮¬ ᯥªâà㬠 ¨ ¢ ¯¥à¥å¢ â稪¥ à¥á¥â 
[+] - ¯®¤¤¥à¦ª  ­®¢ëå ®¡à §®¢ vROM [x] - ¯®¤¤¥à¦ª  ­®¢ëå ®¡à §®¢ vROM
[+] - ¤®¡ ¢«¥­  ᮢ¬¥á⨬®áâì á ¤¥¬® ATARIN, ãᯮ«ì§ãî饥 ­¥¯®«­ãî ¤¥è¨äà æ¨î ¯®àâ  AY [x] - ¢ ª®­ä¨£¥ ¬®£ãâ ¡ëâì ¯à®¯ãé¥­ë ­¥ª®â®àë¥ vROM,®­¨ ­¥ § £à㦠îâáï
[x] - ¤®¡ ¢«¥­  ᮢ¬¥á⨬®áâì á ¤¥¬® ATARIN, ãᯮ«ì§ãî饥 ­¥¯®«­ãî ¤¥è¨äà æ¨î ¯®àâ  AY
[ ] - ¯à®¢¥àïâì ¬¥âªã ZX,¥á«¨ ¬ë ­¥ £à㧨¬ 3 ®á­®¢­ëå vROM [ ] - ¯à®¢¥àïâì ¬¥âªã ZX,¥á«¨ ¬ë ­¥ £à㧨¬ 3 ®á­®¢­ëå vROM
[ ] - ¢ ª®­ä¨£¥ ¬®£ãâ ¡ëâì ¯à®¯ãé¥­ë ­¥ª®â®àë¥ vROM,®­¨ ­¥ § £à㦠îâáï
; ;
Images Images
[+] - Load SCL image [+] - Load SCL image
[ ] - Load TAP image
[ ] - Load SNA file [ ] - Load SNA file
[ ] - Load TAP image
; ;
Features Features
[+] - ᫨ ¢ë¡à ­® ret-zx,â® ¯à¨ ­ ¦ â¨¨ ­  ¯à®¡¥« áà §ã ¯®á«¥ CAD ¢¥à­ñâ ¢ DSS [+] - ᫨ ¢ë¡à ­® ret-zx,â® ¯à¨ ­ ¦ â¨¨ ­  ¯à®¡¥« áà §ã ¯®á«¥ CAD ¢¥à­ñâ ¢ DSS
[ ] - When image filename exist,then instead of SPECTRUM.CFG loads image_filename.cfg if exist too [*] - Œ¥­ïâì ᯥªâà㬮¢áªãî ¯ «¨âàã
[ ] - 뤠¢ âì á®®¡é¥­¨ï ­  ï§ëª¥ ãáâ ­®¢«¥­­®¬ ¢ CMOS [ ] - 뤠¢ âì á®®¡é¥­¨ï ­  ï§ëª¥ ãáâ ­®¢«¥­­®¬ ¢ CMOS
[ ] - Œ¥­ïâì ᯥªâà㬮¢áªãî ¯ «¨âàã [ ] - ¥á«¨ 㪠§ ­® ⮫쪮 ¨¬ï ®¡à §  IMAGE.TRD ¯à¨ § ¯ã᪥ ¨áª âì ¢ í⮩ ¦¥ ¯ ¯ª¥ IMAGE.ZX
¨ ⮫쪮 ¥á«¨ ¥£® ­¥â, â® £à㧨âì ¤¥ä®«â­ë© spectrum.cfg ¨§ ¯ ¯ª¨ á ¯à®£à ¬¬®©
*/ */
; ;
@ -164,7 +165,7 @@ BEGIN: LD (LINE_X),IX
Error_NoMemForSPpages: Error_NoMemForSPpages:
LD HL,NO_MEM_MSG2 LD HL,NO_MEM_MSG
JR ERROR_FILE.prn_msg JR ERROR_FILE.prn_msg
ERROR_FILE: LD HL,ERROR_FILE_MSG_X ERROR_FILE: LD HL,ERROR_FILE_MSG_X
LD C,Dss.PChars LD C,Dss.PChars
@ -180,22 +181,12 @@ ERROR_FILE: LD HL,ERROR_FILE_MSG_X
; ;
LD HL,ERROR_FILE_MSG LD HL,ERROR_FILE_MSG
JP EXIT_ALL JP EXIT_ALL
ERROR_ZX_FLAG: LD HL,MSG_NO_ZX_FLAG
JP EXIT_ALL
END_CNF_ERROR: END_CNF_ERROR:
LD HL,ERROR_CNF LD HL,ERROR_CNF
;JP EXIT_ALL ;JP EXIT_ALL
EXIT_ALL: EXIT_ALL: LD C,Dss.PChars
; PUSH HL
;---------------------[test!!!!!]-------
;LD A,0
;LD C,BIOS.EMM_FN3
;RST ToBIOS ; ®á¢®¡®¤¨âì e:
;LD A,(SAVE_SLOT3)
;OUT (SLOT3),A
;---------------------------------------
;POP HL
LD C,Dss.PChars
RST ToDSS RST ToDSS
;---------------------[test!!!!!]------- ;---------------------[test!!!!!]-------
@ -319,7 +310,7 @@ LEN_LINE_ZX EQU $-LINE_ZX
;********************************************* ;*********************************************
MSG_EXIT1: DB 13,10,"EXIT without run",13,10,0 MSG_EXIT1: DB 13,10,"EXIT without run",13,10,0
MSG_EXIT2: DB 13,10,"‚ë室 ¡¥§ § ¯ã᪠" ;MSG_EXIT2: DB 13,10,"‚ë室 ¡¥§ § ¯ã᪠"
CR_LINE: DB 13,10,0 CR_LINE: DB 13,10,0
START_MSG: DB 13,10,'SPECTRUM launcher v',SP_VERSION,'.' START_MSG: DB 13,10,'SPECTRUM launcher v',SP_VERSION,'.'
DB 13,10,'(c) Sprinter Team.' DB 13,10,'(c) Sprinter Team.'
@ -328,28 +319,30 @@ START_MSG: DB 13,10,'SPECTRUM launcher v',SP_VERSION,'.'
DB 13,10,BUILD_DATE,' - ',__TIME__,13,10,0 DB 13,10,BUILD_DATE,' - ',__TIME__,13,10,0
ERROR_FILE_MSG_X: ERROR_FILE_MSG_X:
DB 13,10,"Error in file: ",0 DB 13,10,"Error in file: ",0
ERROR_FILE2_MSG_X: ;ERROR_FILE2_MSG_X:
DB 13,10,"Žè¨¡ª  ¢ ä ©«¥: ",0 ; DB 13,10,"Žè¨¡ª  ¢ ä ©«¥: ",0
ERROR_FILE_MSG: DB 13,10,"Unable to work.",0 ERROR_FILE_MSG: DB 13,10,"Unable to work.",0
ERROR_FILE2_MSG: ;ERROR_FILE2_MSG:
DB 13,10,"<22> ¡®â  ­¥¢®§¬®¦­ .",0 ; DB 13,10,"<22> ¡®â  ­¥¢®§¬®¦­ .",0
ERROR_CNF: DB 13,10,"Unexpected CNF file end.",0 ERROR_CNF: DB 13,10,"Unexpected CNF file end.",0
ERROR_CNF2: DB 13,10,"<22>¥®¦¨¤ ­­ë© ª®­¥æ CNF ä ©« .",0 ;ERROR_CNF2: DB 13,10,"<22>¥®¦¨¤ ­­ë© ª®­¥æ CNF ä ©« .",0
NO_MEM_MSG: DB 13,10,"The spesial pages are already used." NO_MEM_MSG: DB 13,10,"The spesial pages are already used."
DB 13,10,"Clear memory and restart spectrum.exe again.",0 DB 13,10,"Clear memory and restart spectrum.exe again.",0
NO_MEM_MSG2: DB 13,10,"‘¯¥æ¨ «ì­ë¥ áâà ­¨æë 㦥 § ­ïâë." ;NO_MEM_MSG2: DB 13,10,"‘¯¥æ¨ «ì­ë¥ áâà ­¨æë 㦥 § ­ïâë."
DB 13,10,"Žç¨áâ¨â¥ ¯ ¬ïâì ¨ ¯¥à¥§ ¯ãáâ¨â¥ spectrum.exe á­®¢ .",0 ; DB 13,10,"Žç¨áâ¨â¥ ¯ ¬ïâì ¨ ¯¥à¥§ ¯ãáâ¨â¥ spectrum.exe á­®¢ .",0
MSG_NORMAL: DB 13,10,"All files has been read successfully.",13,10 MSG_NORMAL: DB 13,10,"All files has been read successfully.",13,10
DB "MODE: ",0 DB "MODE: ",0
MSG_NORMAL2: DB 13,10,"‚ᥠ䠩«ë áç¨â ­ë ­®à¬ «ì­®.",13,10 ;MSG_NORMAL2: DB 13,10,"‚ᥠ䠩«ë áç¨â ­ë ­®à¬ «ì­®.",13,10
DB "Š®­ä¨£ãà æ¨ï: ",0 ; DB "Š®­ä¨£ãà æ¨ï: ",0
MSG_NO_MEM: DB 13,10,"No memory space for image or",0 MSG_NO_MEM: DB 13,10,"No memory space for image or",0
MSG_NO_MEM2: DB 13,10,"<22>¥ 墠⠥⠯ ¬ï⨠¤«ï ®¡à §  ¨«¨",0 ;MSG_NO_MEM2: DB 13,10,"<22>¥ 墠⠥⠯ ¬ï⨠¤«ï ®¡à §  ¨«¨",0
MSG_LOAD_IMAGE: DB 13,10,"Image loading: ",0 MSG_LOAD_IMAGE: DB 13,10,"Image loading: ",0
MSG_LOAD_IMAGE2: ;MSG_LOAD_IMAGE2:
DB 13,10,"‡ £à㧪  ®¡à § : ",0 ; DB 13,10,"‡ £à㧪  ®¡à § : ",0
MSG_ZX_EXIT: DB 13,10,"EXIT from Spectrum configuration",0 MSG_ZX_EXIT: DB 13,10,"EXIT from Spectrum configuration",0
MSG_ZX_EXIT2: DB 13,10,"EXIT from ZX mode",0 MSG_ZX_EXIT2: DB 13,10,"EXIT from ZX mode",0
MSG_NO_ZX_FLAG: DB 13,10,'Error: Necessary ROM images are missing in the CNF file and in RAM!!!'
DB 13,10,' Run "spectrum.exe norun.zx" with the required set of ZX ROMs.',13,10,0
PROGRES_IND: DB '°',0 ; 176 PROGRES_IND: DB '°',0 ; 176
;MEM_BLK: BYTE 0 ;MEM_BLK: BYTE 0
@ -413,7 +406,10 @@ N_LINE: LD (HL),0
LD (HL),0 LD (HL),0
EX DE,HL EX DE,HL
JP .skip_load LD A,(NO_ZX_FLAG)
OR A
JR Z,.skip_load
JP ERROR_ZX_FLAG
.go_load: .go_load:
LD A,(HL) ;BUFFER_RAM_PAGES.ROM LD A,(HL) ;BUFFER_RAM_PAGES.ROM
PUSH HL PUSH HL
@ -429,6 +425,9 @@ N_LINE: LD (HL),0
EX DE,HL EX DE,HL
ENDM ENDM
; ;
;!FIXIT ¢à¥¬¥­­ ï § ¯« âª 
CALL CHECK_ZX_FLAG
;
;LD BC,BUFFER_RAM_PAGES.ROM ;LD BC,BUFFER_RAM_PAGES.ROM
LD HL,BUFFER_RAM_PAGES.ROM LD HL,BUFFER_RAM_PAGES.ROM
@ -621,9 +620,15 @@ PARAM_END: LD HL,BUFFER_RAM_PAGES.ROM
SKIP_IMAGE: LD A,(No_run_+2) SKIP_IMAGE: LD A,(No_run_+2)
AND A AND A
LD HL,MSG_EXIT1 LD HL,MSG_EXIT1
JP Z,EXIT_ALL JP NZ,SETUP_RAM_DRIVES
LD A,"Z"
LD (Spec_Page.flag_Z),A
LD A,"X"
LD (Spec_Page.flag_X),A
JP EXIT_ALL
JP SET_RELOAD_PROG
;LD HL,MSG_NORMAL ;LD HL,MSG_NORMAL
;JP EXIT_ALL ;JP EXIT_ALL
@ -696,10 +701,9 @@ READ_IMAGE: LD DE,ONE_FILE
;jp Error_Flag ;!!!!!!!!!!!!!!!! ;jp Error_Flag ;!!!!!!!!!!!!!!!!
.Load_TRD: LD A,(IMAGE_HANDLER) .Load_TRD: LD A,(IMAGE_HANDLER)
LD B,Dss.Move_FP.FrEnd
LD HL,0 LD HL,0
LD IX,0 LD IX,0
LD C,Dss.Move_FP LD BC,Dss.Move_FP.FrEnd
RST ToDSS ; ­ ©â¨ ¤«¨­ã ä ©«  RST ToDSS ; ­ ©â¨ ¤«¨­ã ä ©« 
RET C RET C
@ -897,33 +901,6 @@ EXIT_TO_DSS: DI
LD HL,MSG_ZX_EXIT LD HL,MSG_ZX_EXIT
JP EXIT_ALL JP EXIT_ALL
;!FIXIT ¯¥à¥¤¥« âì ­  äã­ªæ¨î ¡¨®á 
SET_RELOAD_PROG:
DI
LD A,Spec_Page
OUT (SLOT3),A
LD A,"Z"
LD (#FFFE),A
LD A,"X"
LD (#FFFF),A
LD A,(Ret_fn_+2)
AND A
LD DE,RESET_TO_ZX ;  ¤à¥á ¯à®£à ¬¬ë ¯¥à¥§ ¯ã᪠ ¤«ï ret-zx
JR Z,NO_RET_FN
LD DE,EXIT_TO_DSS ;  ¤à¥á ¯à®£à ¬¬ë ¯¥à¥§ ¯ã᪠ ¤«ï ret-fn
NO_RET_FN:
LD (#FFF4),DE ;  ¤à¥á ¯à®£à ¬¬ë ¢®§¢à â 
IN A,(SLOT0)
LD (#FFF0),A ; DOS-PAGE
IN A,(SLOT1)
LD (#FFF1),A
IN A,(SLOT2) ; á®åà ­¨âì áâà ­¨æã
LD (#FFF2),A ; ¯à®£à ¬¬ë ¤«ï ¢®§¢à â 
IN A,(SLOT3)
LD (#FFF3),A ;
;******************************************** ;********************************************
;!TEST; [ ] 04/11/2023 Žâ¤¥«ì­ë¥ à ¬¤¨áª¨ ¤«ï ०¨¬  ᯥªâà㬠 ¨ DSS. BLK_TO_RAMD ;!TEST; [ ] 04/11/2023 Žâ¤¥«ì­ë¥ à ¬¤¨áª¨ ¤«ï ०¨¬  ᯥªâà㬠 ¨ DSS. BLK_TO_RAMD
SETUP_RAM_DRIVES: SETUP_RAM_DRIVES:
@ -950,6 +927,33 @@ SETUP_RAM_DRIVES:
RST ToBIOS RST ToBIOS
.skip: ; .skip: ;
;******************************************** ;********************************************
;!FIXIT ¯¥à¥¤¥« âì ­  äã­ªæ¨î ¡¨®á 
SET_RELOAD_PROG:
DI
LD A,Spec_Page
OUT (SLOT3),A
LD A,"Z"
LD (#FFFE),A
LD A,"X"
LD (#FFFF),A
LD A,(Ret_fn_+2)
AND A
LD DE,RESET_TO_ZX ;  ¤à¥á ¯à®£à ¬¬ë ¯¥à¥§ ¯ã᪠ ¤«ï ret-zx
JR Z,NO_RET_FN
LD DE,EXIT_TO_DSS ;  ¤à¥á ¯à®£à ¬¬ë ¯¥à¥§ ¯ã᪠ ¤«ï ret-fn
;
NO_RET_FN: LD (#FFF4),DE ;  ¤à¥á ¯à®£à ¬¬ë ¢®§¢à â 
IN A,(SLOT0)
LD (#FFF0),A ; DOS-PAGE
IN A,(SLOT1)
LD (#FFF1),A
IN A,(SLOT2) ; á®åà ­¨âì áâà ­¨æã
LD (#FFF2),A ; ¯à®£à ¬¬ë ¤«ï ¢®§¢à â 
IN A,(SLOT3)
LD (#FFF3),A ;
;********************************************
RESET_TO_ZX: DI RESET_TO_ZX: DI
LD SP,#BFF0 LD SP,#BFF0
@ -1009,7 +1013,7 @@ ORIG1: LD BC,Port_All_Mode
RST ToBIOS_18 RST ToBIOS_18
;---------------[test!!!!!]------------- ;---------------[test!!!!!]-------------
;!FIXIT à §à㫨âì ०¨¬ ᯥªâà㬠 ­  à ¡®âã á «î¡ë¬¨ ª ­ « ¬¨ ¨ à §¤¥« ¬¨ ;!FIXIT à §à㫨âì ०¨¬ ᯥªâà㬠 ­  à ¡®âã á «î¡ë¬¨ ª ­ « ¬¨
XOR A ; --> IDE-1 XOR A ; --> IDE-1
LD C,BIOS.HDD_PART ; IDE-1/IDE-2 LD C,BIOS.HDD_PART ; IDE-1/IDE-2
RST ToBIOS_18 RST ToBIOS_18
@ -1185,7 +1189,7 @@ MAKE_FULL_NAME: LD HL,(CNF_NAME)
RST ToDSS RST ToDSS
; ;
LD HL,ONE_FILE LD HL,ONE_FILE
LD BC,Dss.EX_Path.GET_ALL*256 + Dss.EX_Path LD BC,Dss.EX_Path.GET_ALL
RST ToDSS RST ToDSS
; ;
CP 3 ; only "FileName.ext"? CP 3 ; only "FileName.ext"?
@ -1214,6 +1218,31 @@ MAKE_FULL_NAME: LD HL,(CNF_NAME)
RET RET
;----------------------------------------------------------------------; ;----------------------------------------------------------------------;
; ;
;
;----------------------------------------------------------------------;
;!FIXIT ¢à¥¬¥­­ ï § ¯« âª 
CHECK_ZX_FLAG:
LD BC,SLOT3
IN B,(C)
LD A,Spec_Page
OUT (C),A
LD A,(Spec_Page.flag_Z)
CP 'Z'
JR NZ,.no_zx
LD A,(Spec_Page.flag_X)
CP 'X'
JP Z,.exit
;
.no_zx: LD A,1
LD (NO_ZX_FLAG),A
.exit: OUT (C),B
RET
NO_ZX_FLAG DB 0
;----------------------------------------------------------------------;
;
; …᫨ ¯ à ¬¥âà § ¤ ­, â® ¢ë¡¨à ¥âáï §­ ç¥­¨¥ Y ; …᫨ ¯ à ¬¥âà § ¤ ­, â® ¢ë¡¨à ¥âáï §­ ç¥­¨¥ Y
PARAMS:; Y / N ; âãâ §­ ç¥­¨ï ¤«ï ª«î祩 § ¯¨á뢠îâáï ª ª 16 ¡¨â §­ ç¥­¨¥, §­ ç¨â ®¡à â­ë© ¯®à冷ª ¡ ©â®¢ PARAMS:; Y / N ; âãâ §­ ç¥­¨ï ¤«ï ª«î祩 § ¯¨á뢠îâáï ª ª 16 ¡¨â §­ ç¥­¨¥, §­ ç¨â ®¡à â­ë© ¯®à冷ª ¡ ©â®¢
Turbo__: DW Turbo_, #0302 ; ¢ª«îç¨âì TURBO Turbo__: DW Turbo_, #0302 ; ¢ª«îç¨âì TURBO