diff --git a/Shared_Includes b/Shared_Includes index 947627f..b534dc7 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 947627f58f37509150f653c81c82d742a4123cb6 +Subproject commit b534dc7d5df20ff238a64d900fb1559105eb8ef6 diff --git a/spectrum.asm b/spectrum.asm index 7983b9e..07bed3b 100644 --- a/spectrum.asm +++ b/spectrum.asm @@ -147,20 +147,18 @@ BEGIN: LD (LINE_X),IX IN A,(SLOT3) LD (SAVE_SLOT3),A - - IF NEW_MEMORY_LOGIC - ;!TEST + ; + ; + 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 + ; ; - ELSE - ; - ENDIF - JP COMAND_LINE @@ -226,13 +224,13 @@ COMAND_LINE: LD HL,(LINE_X) CALL FIND_FILES - LD HL,(CNF_NAME) - LD A,Spec_Page + CALL MAKE_FULL_NAME + LD A,Spec_Page ;!FIXIT don't use it in new version CALL READ_FILE_1 JP NC,CONTINUE -NO_FIL: LD HL,CNF_FILE - LD A,Spec_Page +NO_FIL: CALL MAKE_FULL_NAME.def_cnf + LD A,Spec_Page ;!FIXIT don't use it in new version CALL READ_FILE_1 JR C,ERROR_FILE JP CONTINUE @@ -251,7 +249,7 @@ FIND_T_LOOP: LD A,(HL) INC HL CP "." CALL Z,POINT_F - CP 20h + CP ' ' CALL Z,BLANK_X CP 9 CALL Z,BLANK_X @@ -472,15 +470,13 @@ LOADING_PALETTE: ;OR A ;JP NZ,ERROR_FILE ; - ;PUSH DE - LD A,(FILE_HANDLE) LD C,Dss.Close RST ToDSS - - ;POP DE .skip: ; +;!TODO печатать имя файла палитры, если он загружен + ; файлы считаны ;************************************* @@ -916,35 +912,13 @@ RESET_TO_ZX: DI CP #1E JR Z,EXIT_TO_DSS - ;LD A,CNF_PORT.CNF_3 - ;OUT (SYS_PORT.ON),A ; System-page on & CNF = 0 - -;-------------[TEST ATARIN]------------- -; #c0fd - +#05ED -; фикс неполной дешифрации порта #FFFD (пишут в #C0FD) -; добавлен порт #C0FD во все карты портов - LD BC,SLOT3 - IN B,(C) - LD A,DCP_PAGE - OUT (C),A - -; !HARDCODE далее всё наскоряк и захардкожено -; !TODO переделать под новую функцию дешифрации - LD A,#90 ; AY-8910-port (FFFD) - LD HL,#C000+#05ED ; CNF 0 - LD (HL),A - - LD H,#C0+#15 ; CNF 1 - LD (HL),A - - LD H,#C0+#25 ; CNF 2 - LD (HL),A - - LD H,#C0+#35 ; CNF 3 - LD (HL),A - - OUT (C),B -;--------------------------------------- + ; фикс неполной дешифрации порта #FFFD (пишут в #C0FD) + 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 + ; LD A,(Ret_zx_+2) LD B,A LD A,(Ret_fn_+2) @@ -1054,7 +1028,6 @@ Original: LD C,BIOS.FN_SYNC ; -> INT for Pentagon or Scorpion OUT (C),A ; #1FFD LD B,#7F - LD A,8 LOOP_P1: DEC A OUT (C),A ; #7FFD @@ -1081,8 +1054,8 @@ LOOP_P2: OUT (C),A ; #7FFD ;*********************************************** LD HL,PROG_STARTS - LD BC,PROG_STARTS.Length - LD DE,#FF00 ;!HARDCODE + LD DE,PROG_STARTS.Launch ;!HARDCODE + LD BC,0*256 + PROG_STARTS.Length LDIR LD A,(Line312_+2) @@ -1121,24 +1094,27 @@ LOOP_P2: OUT (C),A ; #7FFD LD A,C OUT (SLOT3),A ; -; - JP #FF00 ;!HARDCODE + JP PROG_STARTS.Launch ;*************************************** -PROG_STARTS: LD A,2 - OUT (SLOT2),A - LD A,E - OUT (SYS_PORT.OFF),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 - +PROG_STARTS: +.Launch: EQU #FF00 + DISP .Launch + LD A,2 + OUT (SLOT2),A + LD A,E + OUT (SYS_PORT.OFF),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!!!' @@ -1148,6 +1124,42 @@ SET_PAL: LD DE,0 JP ToBIOS_18 ; +;----------------------------------------------------------------------; +MAKE_FULL_NAME: LD HL,(CNF_NAME) + LD (.mode),HL + LD DE,ONE_FILE + LD C,Dss.GSwitch + RST ToDSS + ; + LD HL,ONE_FILE + LD BC,Dss.EX_Path.GET_ALL*256 + Dss.EX_Path + RST ToDSS + ; + CP 3 ; only "FileName.ext"? + LD HL,(CNF_NAME) + JR Z,.get_app_path + RET + ; +.def_cnf: LD HL,CNF_FILE + LD (.mode),HL + ; +.get_app_path: LD HL,ONE_FILE + LD BC,Dss.AppInfo.EXE_HomeDir + RST ToDSS + ; + LD HL,ONE_FILE + LD BC,12 ;!HARDCODE filename length + XOR A + CPIR + DEC HL + EX DE,HL + ; +.mode+1: LD HL,0 + LD BC,12 ;!HARDCODE filename length + LDIR + LD HL,ONE_FILE + RET +;----------------------------------------------------------------------; ; ; Если параметр задан, то выбирается значение Y PARAMS:; Y / N ; тут значения для ключей записываются как 16 бит значение, значит обратный порядок байтов @@ -1199,7 +1211,7 @@ Loader_length EQU 0 ;----------------------------------------------[End Loader section] ; -PlaceForPalette EQU #9000 +PlaceForPalette EQU #A000 STACK_CHECK_MACRO stack_point,stack_buffer ; Code after Loader diff --git a/trdscl.a80 b/trdscl.a80 index 069a712..82c83a1 100644 --- a/trdscl.a80 +++ b/trdscl.a80 @@ -322,7 +322,7 @@ SYS_SECTOR_END: BLOCK 3,0 SCL_FILE_ID: DB 0 ;-----------[в самый конец]------------- SCL_Buffer EQU $ - ASSERT SCL_Buffer+#701<#C000,"Buffer out of mem bank 2" + ASSERT SCL_Buffer+#701<#A000,"Buffer out of mem bank 2"