From 61f85bce5ecb0d52abc1cd2290757ffbbac2370e Mon Sep 17 00:00:00 2001 From: Tolik <85737314+Tolik-Trek@users.noreply.github.com> Date: Sun, 6 Oct 2024 23:53:24 +1000 Subject: [PATCH] beta support "free zx pages" mode --- For_4x.asm | 4 +-- spectrum.asm | 90 ++++++++++++++++++++++------------------------------ 2 files changed, 40 insertions(+), 54 deletions(-) diff --git a/For_4x.asm b/For_4x.asm index 8c163d5..ee5af6e 100644 --- a/For_4x.asm +++ b/For_4x.asm @@ -71,9 +71,9 @@ SET_CURRENT_HDD: .NUMBER+1: LD A,#FF CP #FF LD C,BIOS.HDD_INIT - JP Z,ToBIOS_18 + JP Z,ToBIOS LD C,BIOS.HDD_PART ; IDE-1/IDE-2 - JP ToBIOS_18 + JP ToBIOS ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-; ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-; diff --git a/spectrum.asm b/spectrum.asm index 9011a60..e87ee61 100644 --- a/spectrum.asm +++ b/spectrum.asm @@ -191,10 +191,10 @@ BEGIN: LD (LINE_X),IX AND A LD HL,MSG_EXIT1 JP Z,EXIT_ALL - ; ; £à㧨¬ ¯ «¨âàã ¨ ®¡à § ¤¨áª , ¥á«¨ ­ ¤® CALL LOAD_IMAGE_FILE CALL LOADING_PALETTE + CALL SHOW_MESSAGE_OK_CFG_NAME JP PREPARE_TO_ZXMODE ;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ; @@ -216,7 +216,15 @@ ERROR_FILE: LD HL,ERROR_FILE_MSG_X .prn_msg: LD C,Dss.PChars RST ToDSS ; - LD HL,ERROR_FILE_MSG + LD A,(vROM_LOAD_BIN.need_free) + OR A + JR Z,.skip_free + ; + LD A,(ZX_vROM_BLK) + LD C,BIOS.FreeMem + RST ToBIOS + ; +.skip_free: LD HL,ERROR_FILE_MSG JR EXIT_ALL ERROR_ZX_FLAG: LD HL,MSG_NO_ZX_FLAG JR EXIT_ALL @@ -325,11 +333,11 @@ READ_IMAGE: LD DE,ONE_FILE INC HL LD (HL),0 ; ãáâ ­ ¢«¨¢ ¥¬ ¨ ¨­¨â¨¬ ¢¨­â - LD A,SYS_PORT.BIOS - OUT (SYS_PORT.ROM),A + ; LD A,SYS_PORT.BIOS + ; OUT (SYS_PORT.ROM),A CALL SET_CURRENT_HDD - LD A,SYS_PORT.BIOS - OUT (SYS_PORT.RAM),A + ; LD A,SYS_PORT.BIOS + ; OUT (SYS_PORT.RAM),A ; ¯ àᨬ ¤«ï à áçñ⮢ BPB CALL BPB_SetUp ; § ¯®¬¨­ ¥¬ ᥪâ®à ¤¨à¥ªâ®à¨¨ @@ -549,7 +557,7 @@ EXIT_TO_DSS: DI AND A JR NZ,.next ; ®ç¨á⪠ à ¬¤¨áª®¢ - LD BC,SYS_PAGE.RAMD_KEYS.NUM*256 + BIOS.FreeMemRMD + LD BC,256*SYS_PAGE.RAMD_KEYS.NUM + BIOS.FreeMemRMD .loop: PUSH BC LD A,B DEC A @@ -741,7 +749,7 @@ RESET_TO_ZX: DI ; LD A,(PARAMS.LD_Pal+2) INC A - JR NZ,Skip_Load_Pallete + JR NZ,Skip_Load_Palette ; LD HL,PlaceForPalette + 0 LD A,4 @@ -759,9 +767,9 @@ RESET_TO_ZX: DI LD A,7 CALL SET_PAL ; + LD A,%0000'0100 ; set custom palette EX AF,AF' - OR %0000'0100 ; set custom palette -Skip_Load_Pallete: +Skip_Load_Palette: EX AF,AF' LD HL,(PARAMS.Int_sc+2) ADD A,L @@ -809,7 +817,7 @@ Set_Next_Par: ; SYS_PORT/CNF_PORT ;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°; SET_PAL: LD DE,0 LD BC,#FF*256 + BIOS.PIC_SET_PAL - JP ToBIOS_18 + JP ToBIOS ;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°; @@ -997,7 +1005,10 @@ READ_CNF_FILE: LD HL,#C000 CALL vROM_LOAD_BIN ENDM ; -LOAD_vROM_BIN: EXX +LOAD_vROM_BIN: LD A,#FF + LD (vROM_LOAD_BIN.need_free),A + ; + EXX LD HL,BUFFER_vROM_PAGES.Pages EXX LD HL,BUFFER_RAM_PAGES @@ -1016,7 +1027,9 @@ LOAD_vROM_BIN: EXX LD (HL),A LD BC,BIOS.ZX_MEMORY_MANAGER.SetCustomVroms RST ToBIOS - + ;!TODO check error + XOR A + LD (vROM_LOAD_BIN.need_free),A RET ; vROM_LOAD_BIN: EX DE,HL @@ -1052,41 +1065,7 @@ vROM_LOAD_BIN: EX DE,HL EXX 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 - -; 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 -; +.need_free: DB 0 ;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°; @@ -1113,11 +1092,14 @@ LOAD_IMAGE_FILE: ;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°; ;!TEST palette load LOADING_PALETTE: - ;EX DE,HL + LD A,(PARAMS.LD_Pal+2) + INC A + RET NZ + ; LD HL,( ADDRESS_LINES + ((CFG_FILE_LINES.PALETTE-1)*2) ) LD A,(HL) CP ';' - JR Z,.skip + RET Z ; LD DE,ONE_FILE LD BC,FULL_FILE_NAME_LENGTH @@ -1141,8 +1123,12 @@ LOADING_PALETTE: ; LD A,(FILE_HANDLE) LD C,Dss.Close - RST ToDSS -.skip: ;!TODO ¯¥ç â âì ¨¬ï ä ©«  ¯ «¨âàë, ¥á«¨ ®­ § £à㦥­ + JP ToDSS +;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°; + + +;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°; +SHOW_MESSAGE_OK_CFG_NAME: ; ä ©«ë áç¨â ­ë LD HL,MSG_NORMAL LD C,Dss.PChars