From 46d3d4f99ce1f8b997efccb164d26487890d54f2 Mon Sep 17 00:00:00 2001 From: Tolik <85737314+Tolik-Trek@users.noreply.github.com> Date: Sat, 5 Oct 2024 21:19:55 +1000 Subject: [PATCH] =?UTF-8?q?=D0=BF=D0=BE=D1=87=D1=82=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Shared_Includes | 2 +- spectrum.asm | 1095 +++++++++++++++++++++++++++-------------------- 2 files changed, 631 insertions(+), 466 deletions(-) diff --git a/Shared_Includes b/Shared_Includes index 817bba0..722db55 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 817bba0c1abebdb890f77ee129578ebe06fb5131 +Subproject commit 722db55c24ee5172d610e832f3933c90914fcb8c diff --git a/spectrum.asm b/spectrum.asm index 4bcfd4e..b629407 100644 --- a/spectrum.asm +++ b/spectrum.asm @@ -48,7 +48,7 @@ IFNDEF EMULATOR 0 : DEFINE EMULATOR 0 : ENDIF DEFINE EXE_HEADER 1 DEFINE App_EXE_Version 1 - DEFINE NEW_MEMORY_LOGIC 0 + DEFINE NEW_MEMORY_LOGIC 1 ; define NEED_LOADER 1 ; define NeedSafePort_Y 0 ;*************************************** @@ -95,29 +95,21 @@ Loader_length EQU 0 FULL_FILE_NAME_LENGTH EQU 256 ; ¤«¨­  áâப¨ ¯ã⨠ª ä ©«ã MAX_LINE_LENGTH EQU 120 ; ¤«¨­  áâப¨ CFG ä ©«  -;!TEST -;CFG_FILE_LINES EQU 8 -CFG_FILE_LINES EQU 9 -; -; NAME_CFG_LINE EQU 0 -; BASIC128_LINE EQU 2 -; BASIC_48_LINE EQU 4 -; TRDOS_LINE EQU 6 -; EXP_LINE EQU 8 -; BIOS_LINE EQU 10 -; BIOS2_LINE EQU 12 -;XXX_LINE EQU ?? - -NAME_CFG_LINE EQU 1 -BASIC128_LINE EQU 2 -BASIC_48_LINE EQU 3 -TRDOS_LINE EQU 4 -EXP_LINE EQU 5 -BIOS_LINE EQU 6 -BIOS2_LINE EQU 7 -OPTIONS_LINE EQU 8 -PALETTE_LINE EQU 9 +CFG_FILE_LINES EQU 13 +.NAME EQU 1 +.BASIC128 EQU 2 +.BASIC_48 EQU 3 +.TRDOS EQU 4 +.ZXEXP EQU 5 +.ZXBIOS1 EQU 6 +.ZXBIOS2 EQU 7 +.BASIC128_2 EQU 8 +.BASIC_48_2 EQU 9 +.TRDOS_2 EQU 10 +.ZXEXP_2 EQU 11 +.OPTIONS EQU 12 +.PALETTE EQU 13 ;OPTIONS_LINE EQU (CFG_FILE_LINES-1)*2 ;*************************************** @@ -151,15 +143,6 @@ BEGIN: LD (LINE_X),IX LD (SAVE_SLOT3),A ; ; - IF NEW_MEMORY_LOGIC - LD BC,BUFFER_RAM_PAGES.Size * 256 + Dss.GetMem - RST ToDSS - JR C,Error_NoMemForSPpages - LD HL,BUFFER_RAM_PAGES - LD C,BIOS.GetMemBlkPages - RST ToBIOS - ENDIF - ; ;!TODO ;LD HL,SPECTRUM_HOME_DIR ;LD BC,Dss.AppInfo.EXE_HomeDir @@ -177,10 +160,38 @@ BEGIN: LD (LINE_X),IX ; JR PARSE_CMD_LINE CALL PARSE_CMD_LINE CALL READ_CNF_FILE - CALL SETUP_ZX + ; SetUp ZX + CALL PARSE_PARAMETERS + CALL COUNT_vROM_PAGES + PUSH AF + ;!FIXIT ¯à®¢¥à¨âì ä« £ ZX, ¥á«¨ CF ; [ ] free zx pages ??ERROR_ZX_FLAG?? + ; Žç¨é ¥¬ ¯ ¬ïâì, ¥á«¨ ROM_BIN > 0 + LD BC,BIOS.ZX_MEMORY_MANAGER.FreeZXvPages + CALL NC,ToBIOS + ; ‚뤥«ï¥¬ áâà ­¨æë ¯®¤ vRAM + CALL GET_vRAM_PAGES + ;JR C, ; no mem for vRAM ;!FIXIT ;[ ] free zx pages + POP AF + ; ‚뤥«ï¥¬ áâà ­¨æë ¯®¤ vROM, ¥á«¨ ROM_BIN > 0 + JR C,.skip_vROM + LD A,(ZX_vROM_COUNT) + LD B,A + LD C,BIOS.GetMem + RST ToBIOS + ;JR C, ; no mem for vROM ;!FIXIT ;[ ] free zx pages + LD (ZX_vROM_BLK),A + ; Œ ¯¯¨¬ áâà ­¨æë vROM, ¥á«¨ ROM_BIN > 0 + LD HL,BUFFER_RAM_PAGES + LD C,BIOS.GetMemBlkPages + RST ToBIOS + CALL LOAD_vROM_BIN + +.skip_vROM: CALL LOADING_PALETTE + ;CALL INIT_vROM_PAGES ; - JP NC,PREPARE_TO_ZXMODE - JP EXIT_ALL + ;JP NC,PREPARE_TO_ZXMODE + JP PREPARE_TO_ZXMODE + ;JP EXIT_ALL ;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ; @@ -219,45 +230,9 @@ EXIT_ALL: LD C,Dss.PChars ;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°; ; out B - old ROM-page -SET_ROM: DI +SET_ROM: DI ;!FIXIT ®áâ ¢¨âì ®¤­® DI ¢ ­ ç «¥ LD C,BIOS.SET_PORTS JP ToBIOS - - ; DI - ; ; - ; EX AF,AF' - ; IN A,(SLOT3) - ; PUSH AF - ; LD A,DCP_PAGE ; ãáâ ­®¢¨âì ­®¢ãî - ; OUT (SLOT3),A - ; ; - ; LD A,(#C400) ; á®åà ­¨âì â® çâ® ¡ë«® - ; LD E,A - ; LD A,(#C600) - ; LD D,A - ; ; - ; EX AF,AF' ; áâà ­¨æ  - ; LD (#C400),A ; ãáâ ­®¢¨âì ¯®àâ ROM - ; LD (#C600),A - ; ; - ; EX AF,AF' - ; LD A,B - ; LD BC,0 - ; EX AF,AF' - ; IN A,(C) - ; EX AF,AF' - ; OUT (C),A ; ãáâ ­®¢¨âì ­®¢ë© ROM - ; EX AF,AF' - ; ; - ; LD B,A - ; LD A,E - ; LD (#C400),A ; ¢¥à­ãâì ¯®àâ - ; LD A,D - ; LD (#C600),A ; ¢¥à­ãâì ¯®àâ - ; ; - ; POP AF - ; OUT (SLOT3),A - ; RET ;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°; @@ -564,7 +539,7 @@ EXIT_TO_DSS: DI RST ToBIOS ;!TEST; [ ] 05/11/2023 ®ç¨é âì à ¬¤¨áª¨ ¯à¨ ¢ë室¥ - LD A,(RMD_Keep_+2) + LD A,(PARAMS.RMD_Keep+2) AND A JR NZ,.next ; ®ç¨á⪠ à ¬¤¨áª®¢ @@ -659,30 +634,30 @@ SAVETXT: LD (BACKTXT.VMODE),A .EXIT: ; ;!TEST; [ ] 04/11/2023 Žâ¤¥«ì­ë¥ à ¬¤¨áª¨ ¤«ï ०¨¬  ᯥªâà㬠 ¨ DSS. BLK_TO_RAMD -SETUP_RAM_DRIVES: - LD BC,BIOS.SWAP_RAM_DRIVES.ZX - RST ToBIOS - ; § ¯ã᪠á ä ©«®¬ ¤«ï à ¬¤¨áª ? - LD A,(Load_IMAGE_File.MEM_BLK) - OR A - JR Z,.skip - ; ¯à®¢¥à塞 ¤à ©¢ ¯¥à¥¤ ¯¥à¥­ §­ ç¥­¨¥¬ - XOR A - LD C,BIOS.GET_RAMD_ST - RST ToBIOS - OR A - JR Z,.set_block - ; ®á¢®¡®¤¨âì à ¬¤¨áª - XOR A - LD C,BIOS.FreeMemRMD - RST ToBIOS - ; set disk e: -.set_block: LD A,(Load_IMAGE_File.MEM_BLK) - LD B,A - XOR A - LD C,BIOS.BLK_TO_RAMD - RST ToBIOS -.skip: ; +; SETUP_RAM_DRIVES: +; LD BC,BIOS.SWAP_RAM_DRIVES.ZX +; RST ToBIOS +; ; § ¯ã᪠á ä ©«®¬ ¤«ï à ¬¤¨áª ? +; LD A,(Load_IMAGE_File.MEM_BLK) +; OR A +; JR Z,.skip +; ; ¯à®¢¥à塞 ¤à ©¢ ¯¥à¥¤ ¯¥à¥­ §­ ç¥­¨¥¬ +; XOR A +; LD C,BIOS.GET_RAMD_ST +; RST ToBIOS +; OR A +; JR Z,.set_block +; ; ®á¢®¡®¤¨âì à ¬¤¨áª +; XOR A +; LD C,BIOS.FreeMemRMD +; RST ToBIOS +; ; set disk e: +; .set_block: LD A,(Load_IMAGE_File.MEM_BLK) +; LD B,A +; XOR A +; LD C,BIOS.BLK_TO_RAMD +; RST ToBIOS +; .skip: ; ; ; ;!FIXIT ¯¥à¥¤¥« âì ­  äã­ªæ¨î ¡¨®á  SET_RELOAD_PROG: @@ -690,12 +665,12 @@ SET_RELOAD_PROG: LD A,Spec_Page OUT (SLOT3),A - LD A,"Z" - LD (#FFFE),A - LD A,"X" - LD (#FFFF),A + ; LD A,"Z" + ; LD (#FFFE),A + ; LD A,"X" + ; LD (#FFFF),A - LD A,(Ret_fn_+2) + LD A,(PARAMS.Ret_fn+2) AND A LD DE,RESET_TO_ZX ;  ¤à¥á ¯à®£à ¬¬ë ¯¥à¥§ ¯ã᪠ ¤«ï ret-zx JR Z,NO_RET_FN @@ -718,19 +693,19 @@ RESET_TO_ZX: DI JP Z,EXIT_TO_DSS.cont ; [x] ä¨ªá ­¥¯®«­®© ¤¥è¨äà æ¨¨ ¯®àâ  #FFFD (¯¨èãâ ¢ #C0FD) -.cont: LD A,#FF - LD HL,%00'010'1'1110'1101 - LD DE,%10'111'1'1111'1111 ; CNF_0, CNF_1 - LD BC,ACEX.AY_FFFD_WRITE*256 + BIOS.DCP_CONFIG - RST ToBIOS +.cont: ; LD A,#FF + ; LD HL,%00'010'1'1110'1101 + ; LD DE,%10'111'1'1111'1111 ; CNF_0, CNF_1 + ; LD BC,ACEX.AY_FFFD_WRITE*256 + BIOS.DCP_CONFIG + ; RST ToBIOS ; ; [x] 04/11/2023 Žâ¤¥«ì­ë¥ à ¬¤¨áª¨ ¤«ï ०¨¬  ᯥªâà㬠 ¨ DSS. BLK_TO_RAMD - LD BC,BIOS.SWAP_RAM_DRIVES.ZX - RST ToBIOS + ; LD BC,BIOS.SWAP_RAM_DRIVES.ZX + ; RST ToBIOS ; - LD A,(Ret_zx_+2) + LD A,(PARAMS.Ret_zx+2) LD B,A - LD A,(Ret_fn_+2) + LD A,(PARAMS.Ret_fn+2) XOR B LD B,A LD A,ACEX.RET_PORT @@ -749,40 +724,43 @@ RESET_TO_ZX: DI LD (SYS_PAGE.CURRENT_DIR_DRIVE_COPY),A ;;;;;;;; - LD A,CNF_PORT.CNF_3 - OUT (SYS_PORT.ROM),A ; System-page on & CNF = 3 + ; LD A,CNF_PORT.CNF_3 + ; OUT (SYS_PORT.ROM),A ; System-page on & CNF = 3 - XOR A - OUT (BorderColor),A ; border-0 - OUT (RGADR),A ; Screen-page = 0 - OUT (RGMOD),A ; Screen-mode-page = 0 - LD BC,#1FFD - OUT (C),A ; Scorpion-port = 0 - LD BC,#7FFD - OUT (C),A ; pentagon-port = 0 + ; XOR A + ; OUT (BorderColor),A ; border-0 + ; OUT (RGADR),A ; Screen-page = 0 + ; OUT (RGMOD),A ; Screen-mode-page = 0 + ; LD BC,#1FFD + ; OUT (C),A ; Scorpion-port = 0 + ; LD BC,#7FFD + ; OUT (C),A ; pentagon-port = 0 - LD A,(Int_or_+2) - AND A - LD A,#FA ; original waits on - JR NZ,.ORIG1 - LD A,#FE -.ORIG1: LD BC,Port_All_Mode - OUT (C),A ; ACC-Off +; LD A,(PARAMS.Int_or+2) +; AND A +; LD A,#FA ; original waits on +; JR NZ,.ORIG1 +; LD A,#FE +; .ORIG1: LD BC,Port_All_Mode +; OUT (C),A ; ACC-Off LD BC,CBL.SYS_PORT XOR A OUT (C),A ; CBL-off - - LD A,BIOS.FN_TURBO.VG.OFF ; FDD-720 - LD C,BIOS.FN_TURBO - RST ToBIOS_18 ;[ ] 1/02/2024 ०¨¬ ᯥªâà㬠 à ¡®â ¥â á «î¡ë¬¨ ª ­ « ¬¨ ¨ ®á­®¢­ë¬¨ à §¤¥« ¬¨ CALL SET_CURRENT_HDD + + ; LD A,BIOS.FN_TURBO.VG.OFF ; FDD-720 + ; LD C,BIOS.FN_TURBO + ; RST ToBIOS_18 ; ; - LD A,(LD_Pal_+2) + XOR A ; reg A' for GOTO_SPECTRUM + EX AF,AF' + ; + LD A,(PARAMS.LD_Pal+2) INC A - JR NZ,SetDefaultPalette + JR NZ,Skip_Load_Pallete ; LD HL,PlaceForPalette + 0 LD A,4 @@ -799,139 +777,199 @@ RESET_TO_ZX: DI LD HL,PlaceForPalette + 3072 LD A,7 CALL SET_PAL - JR SetDefaultPalette.skip -SetDefaultPalette: + ; + EX AF,AF' + OR %0000'0100 ; set custom palette +Skip_Load_Pallete: + EX AF,AF' + LD HL,(PARAMS.Int_sc+2) + ADD A,L + LD HL,(PARAMS.Int_or+2) + OR L + LD HL,(PARAMS.Lines312+2) + ADD A,L + EX AF,AF' + ; port all mode + LD A,(PARAMS.Int_or+2) + AND A + LD B,#FA ; original waits on + JR NZ,Set_Next_Par + LD B,#FE +Set_Next_Par: ; SYS_PORT/CNF_PORT XOR A - LD BC,2*256+BIOS.SET_PAL_INIT ; Set ZX-Palette - RST ToBIOS_18 -.skip: - LD A,(Int_or_+2) - AND A ; 3 - JR NZ,Original - LD A,(Int_sc_+2) ; 1/2 -Original: LD C,BIOS.FN_SYNC ; -> INT for Pentagon or Scorpion - RST ToBIOS_18 - - LD HL,#4000 ; clear ZX-Spectrum screen - LD DE,#4001 - LD BC,#1AFF - LD (HL),L - LDIR - - LD HL,#4104 ; Screen-1 - LD E,0 - LD BC,4*256+BIOS.LP_OPEN_S - RST ToBIOS_18 - - LD HL,#5104 ; Screen-2 - LD E,0 - LD BC,4*256+BIOS.LP_OPEN_S - RST ToBIOS_18 - + LD HL,(PARAMS.Turbo+2) + ADD A,L + LD HL,(PARAMS.Sprinter+2) + ADD A,L + LD HL,(PARAMS.P_7FFD+2) + ADD A,L + LD HL,(PARAMS.P_1FFD+2) + ADD A,L + LD HL,(PARAMS.Mem512+2) + ADD A,L + LD E,A + ; Start ROM + LD HL,(PARAMS.To_trd+2) + LD D,L + ; vROM & vRAM + LD HL,(ZX_vROM_BLK) + ; RESERVED XOR A - OUT (RGADR),A - OUT (RGMOD),A + ; + LD C,BIOS.GOTO_SPECTRUM + RST ToBIOS + ; +.di_halt: DI + HALT + JR .di_halt + + +; [ ] free zx pages! +; ‚室: D: 0 - BASIC 128, 1 - BASIC 48, 2 - TR-DOS 128, +; 3 - EXPANSION. C § ªàëâ묨 128-¬¨ ¯®àâ ¬¨: +; 4 - TR-DOS, 5 - BASIC 48 +; E: §­ ç¥­¨¥ ¤«ï SYS_PORT/CNF_PORT +; L: Block_ID.vROM +; H: Block_ID.vRAM +; B: Port All Mode +; A: RESERVED (TASK Number = 0) +;A'[1..0]: 1 - int scorp, 2 - int pent, 3 - int ZX +; A'[2]: 0 - set default palette, 1 - don't change palette +; A'[7]: 0 - 320, 1 - 312 áâப + + + + ; XOR A + ; LD BC,2*256+BIOS.SET_PAL_INIT ; Set ZX-Palette + ; RST ToBIOS_18 +;.skip: +; LD A,(PARAMS.Int_or+2) +; AND A ; 3 +; JR NZ,Original +; LD A,(PARAMS.Int_sc+2) ; 1/2 +; Original: LD C,BIOS.FN_SYNC ; -> INT for Pentagon or Scorpion +; RST ToBIOS_18 + + ; LD HL,#4000 ; clear ZX-Spectrum screen + ; LD DE,#4001 + ; LD BC,#1AFF + ; LD (HL),L + ; LDIR + + ; LD HL,#4104 ; Screen-1 + ; LD E,0 + ; LD BC,4*256+BIOS.LP_OPEN_S + ; RST ToBIOS_18 + + ; LD HL,#5104 ; Screen-2 + ; LD E,0 + ; LD BC,4*256+BIOS.LP_OPEN_S + ; RST ToBIOS_18 + + ; XOR A + ; OUT (RGADR),A + ; OUT (RGMOD),A ; ˆ­¨æ¨ «¨§ æ¨ï áâà ­¨æ ;!FIXIT ç¥à¥§ äã­ªæ¨î ¡¨®á ¯®¯à®¡®¢ âì - DI - LD A,5 ; [ ] free zx pages! - OUT (SLOT1),A - ; #1FFD - LD BC,#1FFD - XOR A - OUT (SLOT0),A ; [ ] free zx pages! - OUT (C),A - ; #7FFD - LD B,#7F - LD A,8 -LOOP_P1: DEC A - OUT (C),A - OUT (SLOT3),A - JR NZ,LOOP_P1 - ; #1FFD - LD B,#1F - LD A,#10 - OUT (C),A - ; #7FFD - LD B,#7F - LD A,8 -LOOP_P2: OUT (C),A - OUT (SLOT3),A - INC A - CP 16 - JR NZ,LOOP_P2 - ; - XOR A - OUT (C),A - ; #1FFD - LD B,#1F - OUT (C),A - ; - ; ‚ᥠRAM, ªà®¬¥ BANK2 - ¢ ­¥© ¯à®£à ¬¬ ! - ; - LD HL,PROG_STARTS - LD DE,PROG_STARTS.Launch ;!HARDCODE - LD BC,0*256 + PROG_STARTS.Length - LDIR +; DI +; LD A,5 ; [ ] free zx pages! +; OUT (SLOT1),A +; ; #1FFD +; LD BC,#1FFD +; XOR A +; OUT (SLOT0),A ; [ ] free zx pages! +; OUT (C),A +; ; #7FFD +; LD B,#7F +; LD A,8 +; LOOP_P1: DEC A +; OUT (C),A +; OUT (SLOT3),A +; JR NZ,LOOP_P1 +; ; #1FFD +; LD B,#1F +; LD A,#10 +; OUT (C),A +; ; #7FFD +; LD B,#7F +; LD A,8 +; LOOP_P2: OUT (C),A +; OUT (SLOT3),A +; INC A +; CP 16 +; JR NZ,LOOP_P2 +; ; +; XOR A +; OUT (C),A +; ; #1FFD +; LD B,#1F +; OUT (C),A +; ; +; ; ‚ᥠRAM, ªà®¬¥ BANK2 - ¢ ­¥© ¯à®£à ¬¬ ! +; ; +; LD HL,PROG_STARTS +; LD DE,PROG_STARTS.Launch ;!HARDCODE +; LD BC,0*256 + PROG_STARTS.Length +; LDIR - LD A,(Line312_+2) - OUT (Port_VSYNC),A +; LD A,(PARAMS.Lines312+2) +; OUT (Port_VSYNC),A - LD A,(P_7FFD_+2) ; - Pentagon off - LD BC,#7FFD - OUT (C),A +; LD A,(PARAMS.P_7FFD+2) ; - Pentagon off +; LD BC,#7FFD +; OUT (C),A - LD A,(Turbo__+2) ; 3 - turbo +; LD A,(PARAMS.Turbo+2) ; 3 - turbo - LD HL,(Sprint_+2) ; +04h - Sprinter-ZX - ADD A,L ; +0Ch - Scorpion/Pentagon +; LD HL,(PARAMS.Sprinter+2) ; +04h - Sprinter-ZX +; ADD A,L ; +0Ch - Scorpion/Pentagon - LD HL,(P_1FFD_+2) ; +40h - Scorpion port off - ADD A,L +; LD HL,(PARAMS.P_1FFD+2) ; +40h - Scorpion port off +; ADD A,L - LD HL,(Mem512_+2) ; +80h - Pentagon-512 on - ADD A,L +; LD HL,(PARAMS.Mem512+2) ; +80h - Pentagon-512 on +; ADD A,L - LD E,A - LD A,(To_trd_+2) - LD D,A +; LD E,A +; LD A,(PARAMS.To_trd+2) +; LD D,A - ;!TEST - IN A,(SLOT3) - LD C,A - LD A,SYS_PAGE - OUT (SLOT3),A +; ;!TEST +; IN A,(SLOT3) +; LD C,A +; LD A,SYS_PAGE +; OUT (SLOT3),A - LD A,E - LD (SYS_PAGE.CONFIG_DE),A - XOR A - LD (SYS_PAGE.CONFIG_DE+1),A +; LD A,E +; LD (SYS_PAGE.CONFIG_DE),A +; XOR A +; LD (SYS_PAGE.CONFIG_DE+1),A - LD A,C - OUT (SLOT3),A - ; - JP PROG_STARTS.Launch -; ; ; -PROG_STARTS: -.Launch: EQU #FF00 - DISP .Launch - LD A,2 ; [ ] free zx pages! - OUT (SLOT2),A - LD A,E - OUT (SYS_PORT.RAM),A - LD A,D - AND A - JP Z,0 - LD A,#10 - LD BC,#7FFD - OUT (C),A - LD HL,0 - PUSH HL - JP #3D29 ; RESET to TR-DOS - ENT - ; -.Length EQU $-PROG_STARTS - ASSERT PROG_STARTS.Length<#100,'PROG_STARTS too big!!!' +; LD A,C +; OUT (SLOT3),A +; ; +; JP PROG_STARTS.Launch +; ; ; ; +; PROG_STARTS: +; .Launch: EQU #FF00 +; DISP .Launch +; LD A,2 ; [ ] free zx pages! +; OUT (SLOT2),A +; LD A,E +; OUT (SYS_PORT.RAM),A +; LD A,D +; AND A +; JP Z,0 +; LD A,#10 +; LD BC,#7FFD +; OUT (C),A +; LD HL,0 +; PUSH HL +; JP #3D29 ; RESET to TR-DOS +; ENT +; ; +; .Length EQU $-PROG_STARTS +; ASSERT PROG_STARTS.Length<#100,'PROG_STARTS too big!!!' ;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°; @@ -998,16 +1036,15 @@ PARSE_CMD_LINE: LD HL,(LINE_X) CALL MAKE_FULL_NAME LD A,SHARED_PAGE CALL READ_FILE_1 - JR C,.NO_FILE - ; -.exit: LD (LEN_CNF),DE ; CNF ä ©« ¯à®ç¨â ­, DE - ¤«¨­  CNF - RET + JR NC,.exit ; .NO_FILE: CALL MAKE_FULL_NAME.def_cnf LD A,SHARED_PAGE CALL READ_FILE_1 JP C,ERROR_FILE - JR .exit + ; +.exit: LD (LEN_CNF),DE ; CNF ä ©« ¯à®ç¨â ­, DE - ¤«¨­  CNF + RET ;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°; @@ -1085,15 +1122,17 @@ FIND_FILES: PUSH HL ;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°; READ_CNF_FILE: LD HL,#C000 - LD DE,A_LINES + LD DE,ADDRESS_LINES LD C,CFG_FILE_LINES + ; .LOOP_A: LD B,MAX_LINE_LENGTH ; ¤«¨­  áâப¨ EX DE,HL - LD (HL),E - INC HL - LD (HL),D - INC HL + LD (HL),E + INC HL + LD (HL),D + INC HL EX DE,HL + ; .LOOP_L: LD A,(HL) CP "\r" JR Z,.N_LINE @@ -1119,122 +1158,182 @@ READ_CNF_FILE: LD HL,#C000 ;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°; -;!TODO ¥á«¨ ¯à®¯ã᪠¥¬ § £à㧪ã ROM ¤«ï 48, 128 ¨«¨ trdos, -; â® ¢áâ ¢«ïâì ¢ ¯®àâ vROM ­®¬¥à ¨§ áâ ­¤ àâ­®£® ¯¥à¢®£® ¡«®ª  -;!TEST MACRO vROM_LOAD romLine;,pageNumber .romLine = (romLine-1)*2 - EX DE,HL - LD HL,(A_LINES+.romLine) - LD A,(HL) - CP ';' - EX DE,HL - - JR NZ,.go_load - - LD (HL),0 - EX DE,HL - LD A,(NO_ZX_FLAG) - OR A - JR Z,.skip_load - JP ERROR_ZX_FLAG -.go_load: - LD A,(HL) ;BUFFER_RAM_PAGES.ROM - PUSH HL - EX DE,HL - CALL READ_FILE_1 - POP DE - ; - LD A,SHARED_PAGE - OUT (SLOT3),A - JP C,ERROR_FILE -.skip_load: - INC DE - EX DE,HL - ENDM + LD DE,(ADDRESS_LINES+.romLine) + CALL vROM_LOAD_BIN + ENDM ; -; -SETUP_ZX: ;LOAD_ZXROMS: ;!FIXIT ¢à¥¬¥­­ ï § ¯« âª  - CALL CHECK_ZX_FLAG +LOAD_vROM_BIN: CALL CHECK_ZX_FLAG + EXX + LD HL,BUFFER_vROM_PAGES + EXX + LD HL,BUFFER_RAM_PAGES + vROM_LOAD CFG_FILE_LINES.BASIC128 ;, #42 2-ï áâப  - ¨¬ï ä ©«  BASIC128 + vROM_LOAD CFG_FILE_LINES.BASIC_48 ;, #43 3-ï áâப  - ¨¬ï ä ©«  BASIC 48 + vROM_LOAD CFG_FILE_LINES.TRDOS ;, #44 4-ï áâப  - ¨¬ï ä ©«  TR-DOS + vROM_LOAD CFG_FILE_LINES.ZXEXP ;, #45 5-ï áâப  - ¨¬ï ä ©«  EXPANSION + vROM_LOAD CFG_FILE_LINES.ZXBIOS1 ;, #46 6-ï áâப  - ¨¬ï ä ©«  BIOS + vROM_LOAD CFG_FILE_LINES.ZXBIOS2 ;, #47 7-ï áâப  - ¨¬ï ä ©«  BIOS2 + vROM_LOAD CFG_FILE_LINES.BASIC128_2 ;, ??? 8-ï áâப  - ¨¬ï ä ©«  + vROM_LOAD CFG_FILE_LINES.BASIC_48_2 ;, ??? 9-ï áâப  - ¨¬ï ä ©«  + vROM_LOAD CFG_FILE_LINES.TRDOS_2 ;, ??? 10-ï áâப  - ¨¬ï ä ©«  + vROM_LOAD CFG_FILE_LINES.ZXEXP_2 ;, ??? 11-ï áâப  - ¨¬ï ä ©«  + RET ; - ;LD BC,BUFFER_RAM_PAGES.ROM - LD HL,BUFFER_RAM_PAGES.ROM - - vROM_LOAD BASIC128_LINE;, #42 2-ï áâப  - ¨¬ï ä ©«  BASIC128 - vROM_LOAD BASIC_48_LINE;, #43 3-ï áâப  - ¨¬ï ä ©«  BASIC 48 - vROM_LOAD TRDOS_LINE ;, #44 4-ï áâப  - ¨¬ï ä ©«  TR-DOS - vROM_LOAD EXP_LINE ;, #45 5-ï áâப  - ¨¬ï ä ©«  EXPANSION - vROM_LOAD BIOS_LINE ;, #46 6-ï áâப  - ¨¬ï ä ©«  BIOS - vROM_LOAD BIOS2_LINE ;, #47 7-ï áâப  - ¨¬ï ä ©«  BIOS2 - ;vROM_LOAD _LINE ;, #42 8-ï áâப  - ¨¬ï ä ©«  - ;vROM_LOAD _LINE ;, #42 9-ï áâப  - ¨¬ï ä ©«  - ;vROM_LOAD _LINE ;, #42 10-ï áâப  - ¨¬ï ä ©«  - ;vROM_LOAD _LINE ;, #42 11-ï áâப  - ¨¬ï ä ©«  - -LOADING_PALETTE:;!TEST palette load - EX DE,HL - LD HL,( A_LINES + ((PALETTE_LINE-1)*2) ) - LD A,(HL) - CP ';' - JR Z,.skip +vROM_LOAD_BIN: EX DE,HL + LD A,(HL) + CP ';' + EX DE,HL + JR Z,.skip_load + ; +.go_load: LD A,(HL) ;BUFFER_RAM_PAGES.ROM + EXX + LD (HL),A + INC HL + PUSH HL + EXX + PUSH HL + EX DE,HL + CALL READ_FILE_1 ; A - RAM page + POP HL + LD A,(HL) + INC HL + ; + EXX + POP HL + LD (HL),A + EXX + ; + LD A,SHARED_PAGE + OUT (SLOT3),A + JP C,ERROR_FILE + ; +.skip_load: EXX + INC HL + EXX + RET + ; +;!FIXIT ¢à¥¬¥­­ ï § ¯« âª  +CHECK_ZX_FLAG: LD BC,SLOT3 + IN B,(C) + LD A,Spec_Page + OUT (C),A + LD HL,(Spec_Page.flag_Z) + LD DE,'Z'+'X'*256 + ; + XOR A + SBC HL,DE + OUT (C),B + RET Z + ; + INC A + LD (NO_ZX_FLAG),A + RET +NO_ZX_FLAG: DB 0 +; +; MACRO vROM_LOAD romLine;,pageNumber +; .romLine = (romLine-1)*2 +; EX DE,HL +; LD HL,(ADDRESS_LINES+.romLine) +; LD A,(HL) +; CP ';' +; EX DE,HL - LD DE,ONE_FILE - LD BC,FULL_FILE_NAME_LENGTH - LDIR - LD HL,ONE_FILE +; JR NZ,.go_load + +; LD (HL),0 +; EX DE,HL +; LD A,(NO_ZX_FLAG) +; OR A +; JR Z,.skip_load +; JP ERROR_ZX_FLAG +; .go_load: +; LD A,(HL) ;BUFFER_RAM_PAGES.ROM +; PUSH HL +; EX DE,HL +; CALL READ_FILE_1 +; POP DE +; ; +; LD A,SHARED_PAGE +; OUT (SLOT3),A +; JP C,ERROR_FILE +; .skip_load: +; INC DE +; EX DE,HL +; ENDM +; +;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°; - LD A,Dss.Open.R - LD C,Dss.Open - RST ToDSS - JP C,ERROR_FILE ; ®è¨¡ª , ¥á«¨ ­¥â ä ©«  - LD (FILE_HANDLE),A - - LD HL,PlaceForPalette - LD DE,1024*4 ;!HARDCODE - LD C,Dss.Read - RST ToDSS - JP C,ERROR_FILE ; ®è¨¡ª  ¯à¨ ç⥭¨¨ - ;!TEST ¯à®â¥áâ¨âì DSS ­  í⮬. …᫨ ä ©« 4096 ¨ ç¨â âì 4096, â® ¢ A ¡ã¤¥â #FF - ;OR A - ;JP NZ,ERROR_FILE - ; - LD A,(FILE_HANDLE) - LD C,Dss.Close - RST ToDSS +;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°; +;!TEST palette load +LOADING_PALETTE: + ;EX DE,HL + LD HL,( ADDRESS_LINES + ((CFG_FILE_LINES.PALETTE-1)*2) ) + LD A,(HL) + CP ';' + JR Z,.skip + ; + LD DE,ONE_FILE + LD BC,FULL_FILE_NAME_LENGTH + LDIR + LD HL,ONE_FILE + ; + LD A,Dss.Open.R + LD C,Dss.Open + RST ToDSS + JP C,ERROR_FILE ; ®è¨¡ª , ¥á«¨ ­¥â ä ©«  + LD (FILE_HANDLE),A + ; + LD HL,PlaceForPalette + LD DE,1024*4 ;!HARDCODE + LD C,Dss.Read + RST ToDSS + JP C,ERROR_FILE ; ®è¨¡ª  ¯à¨ ç⥭¨¨ + ;!TEST ¯à®â¥áâ¨âì DSS ­  í⮬. …᫨ ä ©« 4096 ¨ ç¨â âì 4096, â® ¢ A ¡ã¤¥â #FF + ;OR A + ;JP NZ,ERROR_FILE + ; + LD A,(FILE_HANDLE) + LD C,Dss.Close + RST ToDSS .skip: ;!TODO ¯¥ç â âì ¨¬ï ä ©«  ¯ «¨âàë, ¥á«¨ ®­ § £à㦥­ - ; ; ; ä ©«ë áç¨â ­ë LD HL,MSG_NORMAL LD C,Dss.PChars RST ToDSS ; - LD HL,(A_LINES + (NAME_CFG_LINE-1)*2 ) + LD HL,(ADDRESS_LINES + (CFG_FILE_LINES.NAME-1)*2) LD C,Dss.PChars RST ToDSS ; LD HL,CR_LINE LD C,Dss.PChars RST ToDSS - ;LD A,(SAVE_SLOT3) - ;OUT (SLOT3),A - ; + LD A,(SAVE_SLOT3) + OUT (SLOT3),A + RET +;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°; + + +;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°; PARSE_PARAMETERS:; parameters parsing LD A,SHARED_PAGE OUT (SLOT3),A - LD HL,(A_LINES + (OPTIONS_LINE-1)*2 ) ; áâப  ¯ à ¬¥â஢ + LD HL,(ADDRESS_LINES + (CFG_FILE_LINES.OPTIONS-1)*2 ) ; áâப  ¯ à ¬¥â஢ .LOOP_1: LD A,(HL) CP '/' JR Z,.PARAM_TEST - CP 0 - JR Z,.PARAM_END - ;RET Z + OR A ; CP 0 + ;JR Z,INIT_vROM_PAGES + RET Z CP "\r" - JR Z,.PARAM_END - ;RET Z + ;JR Z,INIT_vROM_PAGES + RET Z CP "\n" - JR Z,.PARAM_END - ;RET Z + ;JR Z,INIT_vROM_PAGES + RET Z INC HL JR .LOOP_1 ; @@ -1280,105 +1379,167 @@ PARSE_PARAMETERS:; parameters parsing ; POP HL JR .LOOP_1 +;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°; + +;----------------[‚뤥«¥­¨¥/®á¢®¡®¦¤¥­¨¥ áâà ­¨æ ᯥªâà㬠]-------------; +;¢å®¤: ॣ B: +; FN 0x +; 0 - § à¥§¥à¢¨à®¢ ­® +; 1 - ¢ë¤¥«¥­¨¥ ¯ ¬ï⨠Pentagon 48k. 3 áâà ­¨æë +; 2 - ¢ë¤¥«¥­¨¥ ¯ ¬ï⨠Pentagon 128k. 2+6 áâà ­¨æë +; 3 - ¢ë¤¥«¥­¨¥ ¯ ¬ï⨠Pentagon 512k. 2+30 áâà ­¨æë +; 4 - ¢ë¤¥«¥­¨¥ ¯ ¬ï⨠Scorpion 256k. 2+6+8 áâà ­¨æë +; 5..15 - § à¥§¥à¢¨à®¢ ­ë +; FN 1x +; 16 - ¯®«ãç¨âì à ¬¡«®ª¨ ¨­¨æ¨ «¨§¨à®¢ ­­ëå vROM ¨ VRAM +; 17..31 - § à¥§¥à¢¨à®¢ ­ë +; FN 2x ;!TODO +; 32 - § à¥§¥à¢¨à®¢ ­® +; 33 - ¢ë¤¥«¥­¨¥ ¯ ¬ï⨠Spectrum 48k ¨ ¨­¨â 1-© áâà ­¨æ vROM +; 34 - ¢ë¤¥«¥­¨¥ ¯ ¬ï⨠Pentagon 128k ¨ ¨­¨â 3-å áâà ­¨æ vROM +; 35 - ¢ë¤¥«¥­¨¥ ¯ ¬ï⨠Pentagon 512k ¨ ¨­¨â 3-å áâà ­¨æ vROM +; 36 - ¢ë¤¥«¥­¨¥ ¯ ¬ï⨠Scorpion 256k ¨ ¨­¨â 3-å áâà ­¨æ vROM +; 33..63 - § à¥§¥à¢¨à®¢ ­ë +; FN 4x +; 64 - ®á¢®¡®¤¨âì à ¬¡«®ª¨ vROM ¨ vRAM +; 65..127 - § à¥§¥à¢¨à®¢ ­ë +; FN 8x +; 128 - ¨­¨æ¨ «¨§¨à®¢ âì ᢮© ­ ¡®à áâà ­¨æ vROM +; +; ॣ HL: ¯à¨ ॣ B[7]=1  ¤à¥á áâà ­¨æ (11 èâ): +; byte1 - RAM block ID, byte2..11 - áâà ­¨æë ¤«ï vROM - ZXSlot: 1,2,3(=0),à áè¨à¥­­ ï +; ॣ A: ­®¬¥à ZX TASK ¯®ª  çâ® ¢á¥£¤  ­®«ì!!! +;¢ë室: CF = 0: HL - ­®¬¥à  à ¬¡«®ª®¢ ¤«ï ०¨¬®¢ 0..16. H=vRAM, L=vROM +; CF = 1: A - ­®¬¥à ®è¨¡ª¨ +; +;¥á«¨ áâíª ­ å®¤¨âáï ¢ âà¥â쥬 á«®â¥, â® ¢ë§®¢ á ¢ëª«î祭­ë¬¨ ¯à¥à뢠­¨ï¬¨ +;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°; +GET_vRAM_PAGES: CALL .check_params + XOR A + LD C,BIOS.ZX_MEMORY_MANAGER + RST ToBIOS + RET C + LD (ZX_vRAM_BLK),A + RET + +.check_params: XOR A + LD HL,PARAMS.P_7FFD + 2 + LD DE,4 + LD B,3 +.loop: ADD A,(HL) + ADD HL,DE + DJNZ .loop ; - - - - MACRO vROM_set dcp_port - LD A,dcp_port - CALL SET_DCP_PORT - ENDM - -.PARAM_END: LD HL,BUFFER_RAM_PAGES.ROM - vROM_set ACEX.vROM.BASIC_128 ; ROM-ID - BASIC 128 - vROM_set ACEX.vROM.BASIC_48 ; ROM-ID - BASIC 48 - vROM_set ACEX.vROM.TR_DOS ; ROM-ID - TR-DOS - vROM_set ACEX.vROM.BIOS ; ROM-ID - EXPANSION - vROM_set ACEX.vROM.BIOS_3 ; ROM-ID - BIOS-1 - vROM_set ACEX.vROM.BIOS_4 ; ROM-ID - BIOS-2 - ;vROM_set ACEX.vROM.BASIC_128_2 ; BASIC 128 - 2 - ;vROM_set ACEX.vROM.BASIC_48_2 ; BASIC 48 - 2 - ;vROM_set ACEX.vROM.TR_DOS_2 ; TR-DOS - 2 - ;vROM_set ACEX.vROM.BIOS_2 ; BIOS (ZX_EXP) - 2 - - LD HL,(IMAGE_NAME) - LD A,H - OR L - JP Z,SKIP_IMAGE - - LD C,SLOT3 - IN B,(C) - PUSH BC - - CALL READ_IMAGE - POP BC - OUT (C),B - JP C,ERROR_FILE + LD B,high BIOS.ZX_MEMORY_MANAGER.GetMem.Pent512 + CP #80 + RET NC ; -SKIP_IMAGE: LD A,(No_run_+2) - AND A - RET NZ + LD B,high BIOS.ZX_MEMORY_MANAGER.GetMem.Pent48 + CP #70 + RET NC ; - LD HL,MSG_EXIT1 - LD BC,SLOT3 - IN B,(C) - LD A,Spec_Page - OUT (C),A - ; !FIXIT ª®£¤  ¡ã¤¥â ¯à®æ¥¤ãà  ¢ ¡¨®á¥ ¯¥à¥¤¥« âì ¯®¤ ­¥ñ - LD A,"Z" - LD (Spec_Page.flag_Z),A - LD A,"X" - LD (Spec_Page.flag_X),A + LD B,high BIOS.ZX_MEMORY_MANAGER.GetMem.Pent128 + CP #40 + RET NC ; - OUT (C),B - ; - SCF + LD B,high BIOS.ZX_MEMORY_MANAGER.GetMem.Scorp RET ;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°; ;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°; -SET_DCP_PORT: LD B,(HL) ; page + + +COUNT_vROM_PAGES: + LD BC,10*256 + 0 ;!HARDCODE ¢á¥£® áâà ­¨æ vROM 10, áçñâ稪 - 0 + LD HL,ADDRESS_LINES + CFG_FILE_LINES.BASIC128 - 1 + LD A,';' +.loop: INC HL + LD E,(HL) INC HL - INC B - DEC B - RET Z + LD D,(HL) ; - PUSH HL - CALL SET_ROM - POP HL + EX DE,HL + CP (HL) + EX DE,HL + JR Z,.next + INC C +.next: DJNZ .loop + LD A,C + LD (ZX_vROM_COUNT),A + SUB 1 ; ¥á«¨ 0 - â® ­¥ ¬¥­ï¥¬ ­ ¡®à RET ;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°; ;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°; -;!FIXIT ¢à¥¬¥­­ ï § ¯« âª  -CHECK_ZX_FLAG: - LD BC,SLOT3 - IN B,(C) - LD A,Spec_Page - OUT (C),A - LD HL,(Spec_Page.flag_Z) - LD DE,'Z'+'X'*256 - AND A - SBC HL,DE - JR Z,.exit +; MACRO vROM_set dcp_port +; LD A,dcp_port +; CALL SET_DCP_PORT +; ENDM +; ; +; INIT_vROM_PAGES: +; LD HL,BUFFER_RAM_PAGES.ROM +; vROM_set ACEX.vROM.BASIC_128 +; vROM_set ACEX.vROM.BASIC_48 +; vROM_set ACEX.vROM.TR_DOS +; vROM_set ACEX.vROM.ZX_EXPANSION +; vROM_set ACEX.vROM.ZX_BIOS_1 +; vROM_set ACEX.vROM.ZX_BIOS_2 +; vROM_set ACEX.vROM.BASIC_128_2 +; vROM_set ACEX.vROM.BASIC_48_2 +; vROM_set ACEX.vROM.TR_DOS_2 +; vROM_set ACEX.vROM.ZX_EXPANSION_2 - ; 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 +; LD HL,(IMAGE_NAME) +; LD A,H +; OR L +; JP Z,.SKIP_IMAGE -.exit: OUT (C),B - RET -NO_ZX_FLAG DB 0 +; LD C,SLOT3 +; IN B,(C) +; PUSH BC + +; CALL READ_IMAGE +; POP BC +; OUT (C),B +; JP C,ERROR_FILE +; ; +; .SKIP_IMAGE: LD A,(PARAMS.No_run+2) +; AND A +; RET NZ +; ; +; LD HL,MSG_EXIT1 +; LD BC,SLOT3 +; IN B,(C) +; LD A,Spec_Page +; OUT (C),A +; ; !FIXIT ª®£¤  ¡ã¤¥â ¯à®æ¥¤ãà  ¢ ¡¨®á¥ ¯¥à¥¤¥« âì ¯®¤ ­¥ñ +; LD A,"Z" +; LD (Spec_Page.flag_Z),A +; LD A,"X" +; LD (Spec_Page.flag_X),A +; ; +; OUT (C),B +; ; +; SCF +; RET +; ; +; SET_DCP_PORT: LD B,(HL) ; page +; INC HL +; INC B +; DEC B +; RET Z +; ; +; PUSH HL +; CALL SET_ROM +; POP HL +; RET ;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°; + + + ; ;----------------------------------------------------------------------; INCLUDE 'For_4X.asm' @@ -1390,10 +1551,11 @@ NO_ZX_FLAG DB 0 ;----------------------------------------------------------------------; IF NEW_MEMORY_LOGIC BUFFER_RAM_PAGES: -.ROM: BLOCK 6 ; ª®«¨ç¥á⢮ ¯®à⮢ í¬ã«ïâ®à  ‡“ -.RAM: BLOCK 16 ; 256 ª¡ + BLOCK 10,#FF ; !HARDCODE ª®«¨ç¥á⢮ ¯®à⮢ í¬ã«ïâ®à  ‡“ +.Size EQU $-BUFFER_RAM_PAGES +BUFFER_vROM_PAGES: + BLOCK 10,#FF ; !HARDCODE ª®«¨ç¥á⢮ ¯®à⮢ í¬ã«ïâ®à  ‡“ .Size EQU $-BUFFER_RAM_PAGES -.end_marker: BYTE #FF ELSE BUFFER_RAM_PAGES: .ROM: DB #42, #43, #44, #45, #46, #47 @@ -1444,7 +1606,10 @@ MSG_NO_ZX_FLAG: DB 13,10, 'Error: Necessary ROM images are missing in the CNF f PROGRES_IND: DB '°',0 ; 176 PROGRES_100: DB ' 100%',13,10,0 -;MEM_BLK: BYTE 0 +ZX_vROM_COUNT: BYTE 0 +ZX_vROM_BLK: BYTE 0 +ZX_vRAM_BLK: BYTE 0 +; LINE_X: WORD 0 X_FILE: WORD 0 CNF_NAME: WORD 0 @@ -1453,7 +1618,7 @@ IMAGE_NAME: WORD 0 IMAGE_HANDLER: BYTE 0 SAVE_SLOT3: BYTE 0 LEN_CNF: WORD 0 -A_LINES: BLOCK CFG_FILE_LINES*2,0 +ADDRESS_LINES: BLOCK CFG_FILE_LINES*2,0 ;********************************************* ;----------------------------------------------------------------------; ; @@ -1461,36 +1626,36 @@ A_LINES: BLOCK CFG_FILE_LINES*2,0 ; …᫨ ¯ à ¬¥âà § ¤ ­, â® ¢ë¡¨à ¥âáï §­ ç¥­¨¥ Y PARAMS:; Y / N ; âãâ §­ ç¥­¨ï ¤«ï ª«î祩 § ¯¨á뢠îâáï ª ª 16 ¡¨â §­ ç¥­¨¥, §­ ç¨â ®¡à â­ë© ¯®à冷ª ¡ ©â®¢ -Turbo__: DW Turbo_, #0302 ; ¢ª«îç¨âì TURBO -Line312_ DW Lines312, #6141 ; ¢ª«îç¨âì 312 áâப -Sprint_: DW Sprint, #040C ; ¢ª«îç¨âì Sprinter -P_7FFD_: DW P_7FFD, #0030 ; ¢ª«îç¨âì 7FFD -P_1FFD_: DW P_1FFD, #0040 ; ¢ª«îç¨âì 1FFD -Mem512_: DW Mem512, #8000 ; ¢ª«îç¨âì 512k -To_trd_: DW To_trd, #0100 ; ¢o©â¨ ¢ TR-DOS -Int_sc_: DW Int_sc, #0102 ; ¢ª«îç¨âì INT "¯®-᪮௨®­®¢áª¨" -No_run_: DW no_run, #00FF ; ­¥ § ¯ã᪠âì -Int_or_: DW Int_or, #0300 ; ¢ª«îç¨âì INT "Original" -Ret_zx_: DW Ret_zx, #4100 ; ¢ª«îç¨âì ¢®§¢à â ¢ ZX áâà ­¨æ  (#41) ¤®«¦­  ᮢ¯ ¤ âì á ret_fn_ -Ret_fn_: DW Ret_fn, #4100 ; ¢ª«îç¨âì ¢®§¢à â ¢ FN áâà ­¨æ  (#41) ¤®«¦­  ᮢ¯ ¤ âì á ret_zx_ -LD_Pal_: DW LD_Pal, #FF00 -RMD_Keep_: DW RMD_Keep, #FF00 ; [x] 05/11/2023 ®ç¨é âì à ¬¤¨áª¨ ¯à¨ ¢ë室¥ +.Turbo: DW ._Turbo, #0302 ; ¢ª«îç¨âì TURBO +.Lines312 DW ._Lines312, #8000 ; ¢ª«îç¨âì 312 áâப +.Sprinter: DW ._Sprinter, #040C ; ¢ª«îç¨âì Sprinter +.P_7FFD: DW ._P_7FFD, #0030 ; ¢ª«îç¨âì 7FFD °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° +.P_1FFD: DW ._P_1FFD, #0040 ; ¢ª«îç¨âì 1FFD °°­¥ ¬¥­ïâì ¯®à冷ª, ¨á¯®«ì§ã¥âáï ¢ GET_vRAM_PAGES°° +.Mem512: DW ._Mem512, #8000 ; ¢ª«îç¨âì 512k °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° +.To_trd: DW ._To_trd, #0200 ; ¢o©â¨ ¢ TR-DOS +.Int_sc: DW ._Int_sc, #0102 ; ¢ª«îç¨âì INT "¯®-᪮௨®­®¢áª¨" +.Int_or: DW ._Int_or, #0300 ; ¢ª«îç¨âì INT "Original" +.No_run: DW ._no_run, #00FF ; ­¥ § ¯ã᪠âì +.Ret_zx: DW ._Ret_zx, #4100 ; ¢ª«îç¨âì ¢®§¢à â ¢ ZX áâà ­¨æ  (#41) ¤®«¦­  ᮢ¯ ¤ âì á ret_fn_ +.Ret_fn: DW ._Ret_fn, #4100 ; ¢ª«îç¨âì ¢®§¢à â ¢ FN áâà ­¨æ  (#41) ¤®«¦­  ᮢ¯ ¤ âì á ret_zx_ +.LD_Pal: DW ._LD_Pal, #FF00 +.RMD_Keep: DW ._RMD_Keep, #FF00 ; [x] 05/11/2023 ®ç¨é âì à ¬¤¨áª¨ ¯à¨ ¢ë室¥ DW 0,0 ; end marker - -Turbo_: DB "turbo", 255,0 -Lines312: DB "lines312", 255,0 -Sprint: DB "sprinter", 255,0 -P_7FFD: DB "7FFD", 255,0 -P_1FFD: DB "1FFD", 255,0 -Mem512: DB "mem512", 255,0 -Int_sc: DB "int-sc", 255,0 -To_trd: DB "to-trdos", 255,0 -no_run: DB "no-run", 255,0 -Int_or: DB "origin", 255,0 -Ret_zx: DB "ret-zx", 255,0 -Ret_fn: DB "ret-fn", 255,0 -LD_Pal: DB "load-pal", 255,0 -RMD_Keep: DB "RMD-Keep", 255,0 ;!TEST; [ ] 05/11/2023 ®ç¨é âì à ¬¤¨áª¨ ¯à¨ ¢ë室¥ +; +._Turbo: DB "turbo", 255,0 +._Lines312: DB "lines312", 255,0 +._Sprinter: DB "sprinter", 255,0 +._P_7FFD: DB "7FFD", 255,0 +._P_1FFD: DB "1FFD", 255,0 +._Mem512: DB "mem512", 255,0 +._Int_sc: DB "int-sc", 255,0 +._To_trd: DB "to-trdos", 255,0 +._no_run: DB "no-run", 255,0 +._Int_or: DB "origin", 255,0 +._Ret_zx: DB "ret-zx", 255,0 +._Ret_fn: DB "ret-fn", 255,0 +._LD_Pal: DB "load-pal", 255,0 +._RMD_Keep: DB "RMD-Keep", 255,0 ;!TEST; [ ] 05/11/2023 ®ç¨é âì à ¬¤¨áª¨ ¯à¨ ¢ë室¥ ;ZX_PROG_LEN EQU $-RELOAD_PROG