diff --git a/build.bat b/build.bat index c2f1e68..1d2e800 100644 --- a/build.bat +++ b/build.bat @@ -4,7 +4,7 @@ if not exist tmp md tmp if not exist fn md fn if not exist fn\flx md fn\flx -set path=d:\yad\svn\pentevo\tools\asl\bin\;d:\yad\svn\pentevo\tools\mhmt\;d:\yad\svn\pentevo\tools\noice2equ\ +call setpath_tools call setpath_includes cls diff --git a/docs/history.txt b/docs/history.txt index deb854e..bf2710e 100644 --- a/docs/history.txt +++ b/docs/history.txt @@ -1,4 +1,10 @@ +11.01.2026 +FlexNavigator 1.16.05 +- в функции текстового ввода заблокирована обработка клавиши + ALT, вызывало зависание при попытке сделать смену диска (ALT/Fx). +- убрано удаление в режиме просмотра дерева. + 07.09.2025 FlexNavigator 1.16.04 - сортировка и копирование файлов/директорий теперь не использует diff --git a/docs/todo.txt b/docs/todo.txt index 9a4175b..882ef76 100644 --- a/docs/todo.txt +++ b/docs/todo.txt @@ -1,6 +1,10 @@ Flex navigator TODO: +[] плагин CD Player исправить смену диска. +[] файл с расширением fln по F3 вызывает зависание. +[] исправить глобальный индикатор процесса копироования, пока привирает. +[] добавить поддержку джойстика для навигации. [] в копировании файлов/директорий доделать обработку ошибок при создании директорий. [] в плагине редактора исправить не сохранение введенныой строки при нажатиии функциональных клавиш не связанных с редактированием. [] для работы в деревом директорий убрать подмену страниц в списке выданных. diff --git a/fn/flx/fneditor.flx b/fn/flx/fneditor.flx index 34ac8f9..5822b73 100644 Binary files a/fn/flx/fneditor.flx and b/fn/flx/fneditor.flx differ diff --git a/fn/flx/fnviewer.flx b/fn/flx/fnviewer.flx index 311082a..8898aed 100644 Binary files a/fn/flx/fnviewer.flx and b/fn/flx/fnviewer.flx differ diff --git a/fn/flx/help.flx b/fn/flx/help.flx index 1957c5c..c7464fe 100644 Binary files a/fn/flx/help.flx and b/fn/flx/help.flx differ diff --git a/fn/fn.exe b/fn/fn.exe index d0b3b01..d60e5eb 100644 Binary files a/fn/fn.exe and b/fn/fn.exe differ diff --git a/fn/history.txt b/fn/history.txt index deb854e..f26e48b 100644 --- a/fn/history.txt +++ b/fn/history.txt @@ -1,4 +1,10 @@ +10.01.2026 +FlexNavigator 1.16.05 +- в функции текстового ввода заблокирована обработка клавиши + ALT, вызывало зависание при попытке сделать смену диска (ALT/Fx). +- убрано удаление в режиме просмотра дерева. + 07.09.2025 FlexNavigator 1.16.04 - сортировка и копирование файлов/директорий теперь не использует diff --git a/fn_const.a80 b/fn_const.a80 index bacc202..70ad378 100644 --- a/fn_const.a80 +++ b/fn_const.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 07.09.2025 savelij +; LAST UPDATE: 11.01.2026 savelij NUM_FILES_PANEL EQU 17 ; количество файлов в столбце панели NUM_PAGES_FN EQU 7 ; количество страниц памяти для работы FN @@ -388,7 +388,7 @@ FNinternal ; отладочное, не менять по избежание глюков PLUGS_ENABLE EQU 0 ; меню плагинов -MARK_DIR EQU 1 ; выбор директории с подсчетом размера всех файлов +MARK_DIR EQU 0 ; выбор директории с подсчетом размера всех файлов TREE_DIR_ENTER EQU 0 ; показ содержимого директории в дереве по ENTER CORR_FILENAME EQU 1 ; преобразование символов имени файла diff --git a/fn_version.a80 b/fn_version.a80 index 2595a23..925f4f2 100644 --- a/fn_version.a80 +++ b/fn_version.a80 @@ -1,7 +1,7 @@ -; LAST UPDATE: 07.09.2025 savelij +; LAST UPDATE: 10.01.2026 savelij FLEX_VERS -.NAVIGATOR EQU "1.16.04" +.NAVIGATOR EQU "1.16.05" .EDITOR EQU "1.11" .VIEWER EQU "1.07" diff --git a/fninput.a80 b/fninput.a80 index 6938646..35ce00d 100644 --- a/fninput.a80 +++ b/fninput.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 25.08.2025 savelij +; LAST UPDATE: 10.01.2026 savelij ;[]----------------------------------------------------------[] InputLine LD (InpLnData),IX @@ -44,7 +44,7 @@ InputLine LD (InpLnData),IX JR Z,.InpLineLp RES 7,D BIT KEYBSTAT.B_ALT,B - JR NZ,.InpLineLp + JR NZ,.InpLineLp1;.InpLineLp ; выход, здесь нет комбинаций с ALT LD IX,InpTable2 BIT KEYBSTAT.B_CTRL,B JR NZ,.NextInpKeys diff --git a/readme.md b/readme.md index 55c04a7..f31a412 100644 --- a/readme.md +++ b/readme.md @@ -3,11 +3,10 @@ Flex Navigator ╨┤╨╗╤П ╨║╨╛╨╝╨┐╤М╤О╤В╨╡╤А╨░ Sprinter ╨б╨╛╨▒╤А╨░╨╜╨╜╤Л╨╡ ╤Д╨░╨╣╨╗╤Л ╨╖╨░╨▒╨╕╤А╨░╤В╤М ╨╕╨╖ ╨┐╨░╨┐╨║╨╕ fn -`FlexNavigator 1.16.03` -- MISC ╤Д╤Г╨╜╨║╤Ж╨╕╨╕ ╨┐╨╡╤А╨╡╨╜╨╡╤Б╨╡╨╜╤Л ╨╕╨╖ 2 ╤А╨╡╨╖╨╕╨┤╨╡╨╜╤В╨░ ╨▓ 3. -- ╨┐╨╡╤А╨╡╤А╨░╤Б╨┐╤А╨╡╨┤╨╡╨╗╨╡╨╜╨╕╨╡ TAB ╤В╨░╨▒╨╗╨╕╤Ж. -- ╨▓ ╨╛╨┐╨╕╤Б╨░╨╜╨╕╨╡ Flex Navigator API ╨┤╨╛╨▒╨░╨▓╨╗╨╡╨╜╨╛ ╨╛╨┐╨╕╤Б╨░╨╜╨╕╨╡ ╨│╨╗╨╛╨▒╨░╨╗╤М╨╜╤Л╤Е - ╨┐╨╡╤А╨╡╨╝╨╡╨╜╨╜╤Л╤Е. +`FlexNavigator 1.16.05` +- ╨▓ ╤Д╤Г╨╜╨║╤Ж╨╕╨╕ ╤В╨╡╨║╤Б╤В╨╛╨▓╨╛╨│╨╛ ╨▓╨▓╨╛╨┤╨░ ╨╖╨░╨▒╨╗╨╛╨║╨╕╤А╨╛╨▓╨░╨╜╨░ ╨╛╨▒╤А╨░╨▒╨╛╤В╨║╨░ ╨║╨╗╨░╨▓╨╕╤И╨╕ + ALT, ╨▓╤Л╨╖╤Л╨▓╨░╨╗╨╛ ╨╖╨░╨▓╨╕╤Б╨░╨╜╨╕╨╡ ╨┐╤А╨╕ ╨┐╨╛╨┐╤Л╤В╨║╨╡ ╤Б╨┤╨╡╨╗╨░╤В╤М ╤Б╨╝╨╡╨╜╤Г ╨┤╨╕╤Б╨║╨░ (ALT/Fx). +- ╤Г╨▒╤А╨░╨╜╨╛ ╤Г╨┤╨░╨╗╨╡╨╜╨╕╨╡ ╨▓ ╤А╨╡╨╢╨╕╨╝╨╡ ╨┐╤А╨╛╤Б╨╝╨╛╤В╤А╨░ ╨┤╨╡╤А╨╡╨▓╨░. `FileViewer.flx 1.07` - ╨╝╨╡╨╗╨║╨╛╨╡ ╨╕╤Б╨┐╤А╨░╨▓╨╗╨╡╨╜╨╕╨╡ ╨┐╨╛╨╖╨╕╤Ж╨╕╨╕ ╨▓╤Л╨▓╨╛╨┤╨░ ╨┤╨░╤В╤Л/╨▓╤А╨╡╨╝╨╡╨╜╨╕. diff --git a/rez2_fnfunct.a80 b/rez2_fnfunct.a80 index cc548e3..50944d5 100644 --- a/rez2_fnfunct.a80 +++ b/rez2_fnfunct.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 07.09.2025 savelij +; LAST UPDATE: 11.01.2026 savelij ;[]==========================================================[] CopyFilesR LD A,(IY + PANEL.FILES_ALL) @@ -193,11 +193,11 @@ CopyNxt LD IX,ProcessAll W_BORDER 16,56,288,12 W_FILL 18,57,284,10,COLORI.WHITE W_END + XOR A + LD (COPY.OverWriteFlg),A LD HL,CurPath LD DE,0 ; адрес отредактированного пути приемника .NEWPATH EQU $-2 - XOR A - LD (COPY.OverWriteFlg),A .NP1 LDI CP (HL) JR NZ,.NP1 @@ -207,12 +207,21 @@ CopyNxt LD IX,ProcessAll PUSH IY GETPORT WINSP.CPU3 PUSH AF -; текущую директорию грузим в свободную страницу + LD (CopyDir.CURR_PANEL),IY ; при копировании файла портится + IF MARK_DIR +; текущую директорию грузим в свободную страницу LD A,(RAMPAGES.BuffPg3) SETPORT WINSP.CPU3,,0 SET PANELFLAG.B_DIRPAGE,(IY + PANEL.PANELFLAG) CALL ReadDIR - LD (CopyDir.CURR_PANEL),IY ; при копировании файла портится + ELSE + BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + LD A,(RAMPAGES.LEFTPANEL) + JR Z,.L3 + LD A,(RAMPAGES.RIGHTPANEL) +.L3 + SETPORT WINSP.CPU3,,0 + ENDIF ; копирование файлов/директорий CopyNextFile LD IX,(COPY.PathCurrFile) IF MARK_DIR @@ -222,6 +231,7 @@ CopyNextFile LD IX,(COPY.PathCurrFile) CALL DIRLIST.ADD_DIRNAME JP .NextHandle ENDIF + ; копирование файла/директории .CopyFile PUSH IX CALL PrintSrcDst @@ -442,12 +452,20 @@ CopyNextFile LD IX,(COPY.PathCurrFile) LD HL,(COPY.CopyFiles) LD A,H OR L + IF MARK_DIR JR Z,CopyDir ; файлы кончились? + ELSE + JP Z,CopyEnd + ENDIF DEC HL LD (COPY.CopyFiles),HL LD A,H OR L + IF MARK_DIR JR Z,CopyDir ; файлы кончились? + ELSE + JP Z,CopyEnd + ENDIF LD HL,(COPY.PathCurrFile) LD DE,FileHDR.SIZE .L5 ADD HL,DE ; следующий описатель @@ -875,9 +893,11 @@ CalcDirSizeR: PUSH IX POP IX RET - ; завершение копирования -CopyEnd CALL RestorePaths +CopyEnd + IF MARK_DIR + CALL RestorePaths + ENDIF POP AF SETPORT WINSP.CPU3,,0 POP IY @@ -1139,6 +1159,7 @@ ConvBytes2Pages: INC DE RET +; печать путей/файлов при копировании PrintSrcDst LD HL,(COPY.PathSrc) LD DE,WorkBuffer SUB A @@ -1172,13 +1193,13 @@ PrintSrcDst LD HL,(COPY.PathSrc) MAKEWINDOW WINSUBOBJ.WOBIND W_FILL 204,97,256,18,COLORI.HIGHGRAY W_END - LD IX,0x0100 + LD IX,256 LD HL,WorkBuffer LD DE,204 LD BC,97 LD A,COLORP.HIGHGRAY + COLORI.BLACK CALL PrintPathLeft - LD IX,0x0100 + LD IX,256 LD HL,WorkBuffer + 0x100 LD DE,204 LD BC,107 @@ -1537,7 +1558,7 @@ ReNameTree BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) INC HL CALL FindTreeDIRR JP C,ReNameT - LD HL,0xC001 - 0x10 + LD HL,0xC000 + 1 - 0x10 LD BC,0x0010 .L2 ADD HL,BC BIT 0,(HL) @@ -2074,6 +2095,7 @@ DeleteFilesR LD A,(IY + PANEL.FILES_ALL) LD A,(IY + PANEL.FILES_MARK) OR (IY + PANEL.FILES_MARK + 1) JR NZ,DeleteMark +; удаление под курсором файла/директории GETPORT WINSP.CPU3 PUSH AF BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) @@ -2114,12 +2136,13 @@ DelFil1 INC HL POP AF SETPORT WINSP.CPU3,,0 LD A,E - CP '.' + CP '.' ; в имени файла в описателе? странная проверка RET Z - CP '\\' + CP '\\' ; в имени файла в описателе? еще странней RET Z JR DelNext +; удаление маркированных файлов/директорий DeleteMark GETPORT WINSP.CPU3 PUSH AF @@ -2176,7 +2199,7 @@ DeleteMain JR NZ,.L1 LD (DE),A BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) - JR NZ,DelLp0 + JR NZ,.DelLp0 DEC HL LD A,'\\' CP (HL) @@ -2184,7 +2207,7 @@ DeleteMain LD (DE),A INC DE .L2 CALL MakeDELname -DelLp0 LD IX,0x00F8 +.DelLp0 LD IX,248 LD HL,WorkBuffer LD DE,320 LD BC,106 @@ -2199,24 +2222,24 @@ DelLoop LD IX,REZ2TAB.DeleteTab JR NZ,DelLoop LD A,E CP 0x1B - LD HL,DelExit + LD HL,DeleteExit JR Z,DelJump CP 0x0D - LD HL,DelDelete + LD HL,DeleteOne JR Z,DelJump RES 5,A CP 'D' - LD HL,DelDelete + LD HL,DeleteOne JR Z,DelJump CP 'A' - LD HL,DelAll + LD HL,DeleteAll JR Z,DelJump CP 'S' - LD HL,DelSkip + LD HL,DeleteSkip JR Z,DelJump CP 'C' JR NZ,DelLoop - LD HL,DelExit + LD HL,DeleteExit DelJump WINDOWCLOSE JP (HL) @@ -2237,11 +2260,12 @@ MakeDELname LD HL,(AdrDelFile) RET ;-------------------------------------------------------------- -DelSkip LD C,(IY + PANEL.FILES_MARK) +; пропуск удаления +DeleteSkip LD C,(IY + PANEL.FILES_MARK) LD B,(IY + PANEL.FILES_MARK + 1) LD A,B OR C - JP Z,DelExit + JP Z,DeleteExit LD IX,(AdrDelFile) RES 0,(IX + 0x00) LD L,(IY + PANEL.BYTES_MARK) @@ -2269,7 +2293,7 @@ DelSkip LD C,(IY + PANEL.FILES_MARK) LD (IY + PANEL.FILES_MARK + 1),B LD A,B OR C - JP Z,DelExit + JP Z,DeleteExit LD HL,(AdrDelFile) LD DE,FileHDR.SIZE .L1 ADD HL,DE @@ -2279,7 +2303,8 @@ DelSkip LD C,(IY + PANEL.FILES_MARK) CALL PrintDIR JP DeleteMain -DelDelete CALL PointerMouseClock +; удаление одного файла/диры +DeleteOne CALL PointerMouseClock BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) JR Z,DelDel0 PUSH IY @@ -2306,7 +2331,7 @@ DelDelete CALL PointerMouseClock PUSH AF CALL C,DOSError POP AF - JP C,DelExit + JP C,DeleteExit DelDel0 LD IX,(AdrDelFile) LD DE,WorkBuffer PUSH DE @@ -2326,14 +2351,15 @@ DelDel1 PUSH IY CALL DOSError OR A CALL NZ,BegDIRECTORY - JP DelExit + JP DeleteExit + DelDel2 LD A,0x01 LD (DeleteFlag),A CALL PointerMousePointer - JP DelSkip + JP DeleteSkip -DelAll BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) - JR NZ,DelDelete +DeleteAll BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + JR NZ,DeleteOne LD A,0x01 LD (DeleteFlag),A CALL PointerMouseClock @@ -2380,7 +2406,7 @@ DelFrom EQU $-2 MAKEWINDOW WINSUBOBJ.WOBIND W_FILL 208,104,256,8,COLORI.HIGHGRAY W_END - LD IX,0x0100 + LD IX,256 LD HL,WorkBuffer LD DE,208 LD BC,104 @@ -2390,7 +2416,7 @@ DelFrom EQU $-2 LD HL,SC.ESC << 8 | 0x1B OR A SBC HL,DE - JP Z,DelAllExit + JP Z,DeleteAllExit LD IX,(AdrDelFile) LD DE,WorkBuffer PUSH DE @@ -2398,9 +2424,9 @@ DelFrom EQU $-2 POP HL LD A,(IX + FileHDR.Attr) BIT DIR.B_Dir,A - LD C,DSSF.DELETE + LD C,DSSF.DELETE ; удаление файла JR Z,.L3 - LD C,DSSF.RMDIR + LD C,DSSF.RMDIR ; удаление директории .L3 PUSH IY SPDSS POP IY @@ -2408,7 +2434,7 @@ DelFrom EQU $-2 CALL DOSError OR A CALL NZ,BegDIRECTORY - JP DelAllExit + JP DeleteAllExit DelA1 LD IX,ProcessDel LD L,(IX + PROGRESSBAR.CURR_PAGE) @@ -2421,7 +2447,7 @@ DelA1 LD IX,ProcessDel LD B,(IY + PANEL.FILES_MARK + 1) LD A,B OR C - JP Z,DelAllExit + JP Z,DeleteAllExit LD IX,(AdrDelFile) RES FileHDR.B_MARK,(IX + FileHDR.Flag) LD L,(IY + PANEL.BYTES_MARK) @@ -2449,7 +2475,7 @@ DelA1 LD IX,ProcessDel LD (IY + PANEL.FILES_MARK + 1),B LD A,B OR C - JP Z,DelAllExit + JP Z,DeleteAllExit LD HL,(AdrDelFile) LD DE,FileHDR.SIZE .L1 ADD HL,DE @@ -2458,20 +2484,12 @@ DelA1 LD IX,ProcessDel LD (AdrDelFile),HL JP DeleteAllLp -ProcessDel DW 178 - DW 117 - DW 284 - DW 0 - DW 0 - DW 0 - DW 0 - DW 0 - DW 0 +ProcessDel DW 178,117,284,0,0,0,0,0,0 DB COLORP.BLUE + COLORI.WHITE -DelAllExit HALT +DeleteAllExit HALT WINDOWCLOSE -DelExit BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) +DeleteExit BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) JR NZ,DelTreeDIR1 LD IX,(AdrDelFile) BIT DIR.B_Dir,(IX + FileHDR.Attr) diff --git a/rez2_fntab.a80 b/rez2_fntab.a80 index c72aa29..4cf082f 100644 --- a/rez2_fntab.a80 +++ b/rez2_fntab.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 15.08.2025 savelij +; LAST UPDATE: 12.09.2025 savelij ;[]==========================================================[] ; Формат таблицы @@ -92,14 +92,14 @@ REZ2TAB DW 0x8000 ;[]===============================================================[] -.DeleteTab: DW 196,252,118,132,%0000000100100001,0,DelDelete,0 - DW 260,316,118,132,%0000000100100001,0,DelAll,0 - DW 324,380,118,132,%0000000100100001,0,DelSkip,0 - DW 388,444,118,132,%0000000100100001,0,DelExit,0 - DW 0,180, 0,256,%0000000100100000,0,DelExit,0 - DW 460,640, 0,256,%0000000100100000,0,DelExit,0 - DW 0,640, 0, 80,%0000000100100000,0,DelExit,0 - DW 0,640,136,256,%0000000100100000,0,DelExit,0 +.DeleteTab: DW 196,252,118,132,%0000000100100001,0,DeleteOne,0 + DW 260,316,118,132,%0000000100100001,0,DeleteAll,0 + DW 324,380,118,132,%0000000100100001,0,DeleteSkip,0 + DW 388,444,118,132,%0000000100100001,0,DeleteExit,0 + DW 0,180, 0,256,%0000000100100000,0,DeleteExit,0 + DW 460,640, 0,256,%0000000100100000,0,DeleteExit,0 + DW 0,640, 0, 80,%0000000100100000,0,DeleteExit,0 + DW 0,640,136,256,%0000000100100000,0,DeleteExit,0 DW 0x8000 .EmptyTab: DW 0,640, 0,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 diff --git a/setpath_tools.bat b/setpath_tools.bat new file mode 100644 index 0000000..2c9360d --- /dev/null +++ b/setpath_tools.bat @@ -0,0 +1,2 @@ + +set path=d:\yad\svn\pentevo\tools\asl\bin\;d:\yad\svn\pentevo\tools\mhmt\;d:\yad\svn\pentevo\tools\noice2equ\