diff --git a/Shared_Includes b/Shared_Includes index c135d9b..e5122b6 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit c135d9b6038fcabca6cef3234d876f93d5865dee +Subproject commit e5122b68be360be61be821f68988c29021ec8411 diff --git a/spectrum.asm b/spectrum.asm index a392bf9..fbc6a5a 100644 --- a/spectrum.asm +++ b/spectrum.asm @@ -93,7 +93,7 @@ Loader_length EQU 0 ; ; Program EQU section ;*************************************** -FULL_FILE_NAME_LENGTH EQU 128 ; длина строки пути к файлу +FULL_FILE_NAME_LENGTH EQU 256 ; длина строки пути к файлу MAX_LINE_LENGTH EQU 120 ; длина строки CFG файла ;!TEST @@ -667,7 +667,6 @@ SKIP_IMAGE: LD A,(No_run_+2) ;******************************************** ; out B - old ROM-page -;!FIXIT сделать через вызов функции БИОС SET_ROM: DI LD C,BIOS.SET_PORTS JP ToBIOS @@ -709,6 +708,7 @@ SET_ROM: DI ; RET ;******************************************** +;******************************************** READ_IMAGE: LD DE,ONE_FILE LD BC,FULL_FILE_NAME_LENGTH LDIR @@ -720,7 +720,64 @@ READ_IMAGE: LD DE,ONE_FILE RET C LD (IMAGE_HANDLER),A - + ; [ ] 31/01/2024 поддержка переключения диска/раздела в TR-DOS + LD HL,ONE_FILE + LD BC,Dss.EX_Path.GET_ALL + RST ToDSS + JR C,.no_change_Disk + AND 8 + JR Z,.currentDisk + ; + LD C,Dss.CurDisk + RST ToDSS + JR C,.no_change_Disk + JR .getInfoDRV +.currentDisk: ; + LD A,(ONE_FILE) + SUB "A" + ; +.getInfoDRV: ; + OR #80 + LD HL,TMP_BUFF + LD BC,Dss.DskInfo + RST ToDSS + ; + LD B,4 ;!HARDCODE номер нужного параметра + LD DE,0 + LD HL,TMP_BUFF +.loop_param: ADD HL,DE + LD E,(HL) + INC HL + DJNZ .loop_param + LD A,(HL) + AND #80 + JR Z,.no_change_Disk + CP #90 + JR NC,.no_change_Disk + ; + LD A,3 + AND (HL) + LD D,A + INC HL + LD A,(HL) + RLCA + RLCA + ; + OR D + AND #0F + ; + ;LD C,SLOT3 + ;IN B,(C) + ;EX AF,AF' + ;LD A,SYS_PAGE + ;OUT (C),A + ;EX AF,AF' + ; + LD (RESET_TO_ZX.hdd),A + ;OUT (C),B + ; + ; +.no_change_Disk:; LD A,(IMAGE_FLAG) AND A JR Z,.Load_TRD @@ -784,6 +841,9 @@ Get_RAM_Disk_E: LD A,D RET ;--------------------------------------- + +;******************************************** + Load_IMAGE_File: LD A,(IMAGE_HANDLER) LD HL,0 @@ -1028,9 +1088,9 @@ RESET_TO_ZX: DI LD A,(Int_or_+2) AND A LD A,#FA ; original waits on - JR NZ,ORIG1 + JR NZ,.ORIG1 LD A,#FE -ORIG1: LD BC,Port_All_Mode +.ORIG1: LD BC,Port_All_Mode OUT (C),A ; ACC-Off LD BC,CBL.SYS_PORT @@ -1042,8 +1102,9 @@ ORIG1: LD BC,Port_All_Mode RST ToBIOS_18 ;---------------[test!!!!!]------------- -;!FIXIT разрулить режим спектрума на работу с любыми каналами - XOR A ; --> IDE-1 + ;[ ] 1/02/2024 режим спектрума работает с любыми каналами и основными разделами + ; XOR A ; --> IDE-1 +.hdd+1: LD A,#FF LD C,BIOS.HDD_PART ; IDE-1/IDE-2 RST ToBIOS_18 ;--------------------------------------- @@ -1321,7 +1382,17 @@ RMD_Keep: DB "RMD-Keep", 255,0 ;!TEST; [ ] 05/11/2023 CNF_FILE: DB "SPECTRUM.CFG",0 .Size EQU $-CNF_FILE -ONE_FILE: BLOCK FULL_FILE_NAME_LENGTH,0 +; +; +;[]-----------------------------[PLUGINS]-----------------------------[] + INCLUDE 'trdscl.a80' +; + +;----------------------------------------------[End Loader section] +; +;ONE_FILE: BLOCK FULL_FILE_NAME_LENGTH,0 +ONE_FILE: WORD 0 +TMP_BUFF EQU ONE_FILE+256 ; ;!TODO @@ -1329,24 +1400,10 @@ ONE_FILE: BLOCK FULL_FILE_NAME_LENGTH,0 ;USER_CURRENT_DIR EQU $ ;SPECTRUM_HOME_DIR EQU USER_CURRENT_DIR + 256 ; - -; -; - -; -;----------------------------------------------[End Loader section] -; - PlaceForPalette EQU #A000 STACK_CHECK_MACRO stack_point,stack_buffer ; Code after Loader -;[]-----------------------------[PLUGINS]-----------------------------[] - - INCLUDE 'trdscl.a80' - ;[]-------------------------------------------------------------------[] ; Code end section -; OUTEND -; SAVEBIN 'Build/test.bin', exe_header, $-exe_header ; \ No newline at end of file