diff --git a/Shared_Includes b/Shared_Includes index a0e68ce..a9cc74a 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit a0e68ce3a19bd47537585e49bfbf5e45fab197a1 +Subproject commit a9cc74a9eba4044c35c930159bda0b0dde5d429b diff --git a/spectrum.asm b/spectrum.asm index 58e00be..86f4faa 100644 --- a/spectrum.asm +++ b/spectrum.asm @@ -390,9 +390,12 @@ READ_IMAGE: LD DE,ONE_FILE LD A,(IMAGE_FLAG) AND A JR Z,.Load_TRD - + ; DEC A ; check if SCL JP Z,Load_SCL + ; + DEC A + JP Z,LOAD_TAP ;jp Error_Flag ;!!!!!!!!!!!!!!!! .Load_TRD: LD A,(IMAGE_HANDLER) @@ -410,6 +413,21 @@ READ_IMAGE: LD DE,ONE_FILE JP Load_IMAGE_File ;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°; +;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°; +LOAD_TAP: CALL READ_IMAGE.Load_TRD + RET C + ; + LD A,SYS_PAGE + OUT (SLOT3),A + LD A,(Load_IMAGE_File.MEM_BLK) + LD (SYS_PAGE.TAP_RAM_BLK),A + XOR A + LD (SYS_PAGE.TAP_RAM_POINT),A + LD A,#C0 + LD (SYS_PAGE.TAP_RAM_POINT + 1),A + RET + +;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°; ;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°; ; hl:de - à §¬¥à ä ©«  ¢ ¡ ©â å @@ -832,7 +850,7 @@ RESET_TO_ZX: DI LD A,7 CALL SET_PAL ; - LD A,%0000'0100 ; set custom palette + LD A,%0000'0100 ; set custom palette EX AF,AF' Skip_Load_Palette: EX AF,AF' @@ -850,21 +868,51 @@ Skip_Load_Palette: JR NZ,Set_Next_Par LD B,#FE Set_Next_Par: ; SYS_PORT/CNF_PORT - XOR A - 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 + ; XOR A ; Y/N + ; LD HL,(PARAMS.Turbo+2) ; #03 02 + ; ADD A,L ; + ; LD HL,(PARAMS.Sprinter+2) ; #04 0C + ; ADD A,L ; + ; LD C,L + ; LD HL,(PARAMS.P_7FFD+2) ; #00 30 + ; ADD A,L ; + ; LD D,L + ; LD HL,(PARAMS.Mem512+2) ; #80 00 + ; ADD A,L + ; LD HL,(PARAMS.P_1FFD+2) ; #08 40 + ; ADD A,L ; + ; LD E,A + ; + XOR A ; Y/N + LD HL,PARAMS.P_7FFD+2 ; #14 34 + OR (HL) ; + LD HL,PARAMS.P_1FFD+2 ; #18 40 + XOR (HL) ; + LD HL,PARAMS.Sprinter+2 ; #E7 FF + AND (HL) ; + ; + LD HL,PARAMS.Turbo+2 ; #03 02 + OR (HL) ; + LD HL,PARAMS.Mem512+2 ; #80 00 + OR (HL) LD E,A ; Start ROM LD HL,(PARAMS.To_trd+2) - LD D,L + ; no xFFD ports? + CPL + AND %0110'0000 + JR NZ,.xFFD_norm + ; + OR L + LD L,5 ; BASIC 48 á § ªàëâ묨 128-¬¨ ¯®àâ ¬¨ + JR Z,.resPortsBlock + ; + DEC L ; TR-DOS á § ªàëâ묨 128-¬¨ ¯®àâ ¬¨ +.resPortsBlock: LD A,E + AND %1001'1111 + LD E,A + ; +.xFFD_norm: LD D,L ; vROM & vRAM LD HL,(ZX_vROM_BLK) ; RESERVED @@ -878,7 +926,8 @@ Set_Next_Par: ; SYS_PORT/CNF_PORT JR .di_halt ;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°; - + ld hl,1 + or (hl) ;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°; SET_PAL: LD DE,0 LD BC,#FF*256 + BIOS.PIC_SET_PAL @@ -1000,11 +1049,24 @@ FIND_FILES: PUSH HL ; ; .CHOOSE_FILE: LD A,(HL) AND %1101'1111 - ; TRD file + ; TAP or TRD? CP 'T' + JR NZ,.not_T + ; + INC HL + LD A,(HL) + DEC HL + AND %1101'1111 + ; TRD file + CP 'R' JR Z,.TRD + ; TAP file + CP 'A' + JR Z,.TAP + JR .unknown + ; ; SCL file - CP 'S' +.not_T: CP 'S' JR Z,.SCL ; ZX file CP 'Z' @@ -1018,11 +1080,15 @@ FIND_FILES: PUSH HL RET ; .SCL: LD DE,IMAGE_FLAG - LD A,1 + LD A,1 ; scl LD (DE),A .TRD: LD DE,(X_FILE) LD (IMAGE_NAME),DE JR .unknown +.TAP: LD DE,IMAGE_FLAG + LD A,2 ; tap + LD (DE),A + JR .TRD ;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°; @@ -1066,8 +1132,8 @@ READ_CNF_FILE: LD HL,#C000 ;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°; MACRO vROM_LOAD romLine;,pageNumber .RomLine = (romLine-1)*2 - LD DE,(ADDRESS_LINES+.RomLine) - CALL vROM_LOAD_BIN + LD DE,(ADDRESS_LINES+.RomLine) + CALL vROM_LOAD_BIN ENDM ; LOAD_vROM_BIN: LD A,#FF @@ -1336,6 +1402,7 @@ GET_vRAM_PAGES: CALL .check_params ADD HL,DE DJNZ .loop ; + AND %1111'1000 LD B,high BIOS.ZX_MEMORY_MANAGER.GetMem.Pent512 CP #80 RET NC @@ -1533,7 +1600,7 @@ ZX_vRAM_BLK: BYTE 0 LINE_X: WORD 0 X_FILE: WORD 0 CNF_NAME: WORD 0 -IMAGE_FLAG: BYTE 0 ; 0 - trd, scl - 1, sna - 2, tap - 3 +IMAGE_FLAG: BYTE 0 ; 0 - trd, scl - 1, tap - 2, sna - 3 IMAGE_NAME: WORD 0 IMAGE_HANDLER: BYTE 0 SAVE_SLOT3: BYTE 0 @@ -1548,9 +1615,9 @@ ADDRESS_LINES: BLOCK CFG_FILE_LINES*2,0 PARAMS:; Y / N ; âãâ §­ ç¥­¨ï ¤«ï ª«î祩 § ¯¨á뢠îâáï ª ª 16 ¡¨â §­ ç¥­¨¥, §­ ç¨â ®¡à â­ë© ¯®à冷ª ¡ ©â®¢ .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°° +.Sprinter: DW ._Sprinter, #E7FF ; ¢ª«îç¨âì Sprinter +.P_7FFD: DW ._P_7FFD, #1434 ; ¢ª«îç¨âì 7FFD °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° +.P_1FFD: DW ._P_1FFD, #1840 ; ¢ª«îç¨âì 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 "¯®-᪮௨®­®¢áª¨" diff --git a/version.inc b/version.inc index c1c80ef..5a24e17 100644 --- a/version.inc +++ b/version.inc @@ -4,7 +4,7 @@ sj.insert_define("BUILD_DATE", "'" .. date .. "." .. month .. "." .. year .. "'") ENDLUA - DEFINE SP_VERSION "2.03 beta build" + DEFINE SP_VERSION "2.04 beta build" ; DEFINE NEED_MIN_DSS_VERSION '1.71.36' DSS_MIN_VERS: