diff --git a/docs/history.txt b/docs/history.txt index bf2710e..0031d2d 100644 --- a/docs/history.txt +++ b/docs/history.txt @@ -1,4 +1,11 @@ +22.01.2026 +FlexNavigator 1.16.06 +- для ошибок у которых нет текста описания теперь выдает всегда + текст ошибки "Unknown Error". +- исправлена ошибка приводящая к вылету при копировании нескольких файлов + на уже существующие и выборе отмены от продолжения копирования. + 11.01.2026 FlexNavigator 1.16.05 - в функции текстового ввода заблокирована обработка клавиши diff --git a/docs/todo.txt b/docs/todo.txt index 882ef76..ce2e994 100644 --- a/docs/todo.txt +++ b/docs/todo.txt @@ -1,6 +1,7 @@ Flex navigator TODO: +[] при ошибке записи при копировании файл удаляется без окна об ошибке. [] плагин CD Player исправить смену диска. [] файл с расширением fln по F3 вызывает зависание. [] исправить глобальный индикатор процесса копироования, пока привирает. diff --git a/fn/flx/fneditor.flx b/fn/flx/fneditor.flx index 5822b73..8e87313 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 8898aed..64d720b 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 c7464fe..5be5e98 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 d60e5eb..0a57757 100644 Binary files a/fn/fn.exe and b/fn/fn.exe differ diff --git a/fn/history.txt b/fn/history.txt index f26e48b..bf2710e 100644 --- a/fn/history.txt +++ b/fn/history.txt @@ -1,5 +1,5 @@ -10.01.2026 +11.01.2026 FlexNavigator 1.16.05 - в функции текстового ввода заблокирована обработка клавиши ALT, вызывало зависание при попытке сделать смену диска (ALT/Fx). diff --git a/fnbar.a80 b/fn_bar.a80 similarity index 100% rename from fnbar.a80 rename to fn_bar.a80 diff --git a/fn_const.a80 b/fn_const.a80 index 70ad378..ce2ac8c 100644 --- a/fn_const.a80 +++ b/fn_const.a80 @@ -1,11 +1,12 @@ -; LAST UPDATE: 11.01.2026 savelij +; LAST UPDATE: 18.01.2026 savelij NUM_FILES_PANEL EQU 17 ; количество файлов в столбце панели NUM_PAGES_FN EQU 7 ; количество страниц памяти для работы FN DateMonthFormat ; формат вывода месяца в дате .Digit EQU 1 ; месяц цифрой 02.08.2025 .Text EQU 2 ; месяц текстом 2 Aug 2025 +EXT_BUF_SIZE EQU 0x400 ; размер буфера для файла ext для распаковки INIT_VAR 0x8000 SETVAR WorkBuffer, 0x400 ; рабочий буфер diff --git a/fndos.a80 b/fn_dos.a80 similarity index 100% rename from fndos.a80 rename to fn_dos.a80 diff --git a/fndosline.a80 b/fn_dosline.a80 similarity index 100% rename from fndosline.a80 rename to fn_dosline.a80 diff --git a/fn_exe_boot.a80 b/fn_exe_boot.a80 index 0f36023..484e67a 100644 --- a/fn_exe_boot.a80 +++ b/fn_exe_boot.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 22.08.2025 savelij +; LAST UPDATE: 18.01.2026 savelij include macros.a80 @@ -182,4 +182,4 @@ MAIN EXEend: - include fnmain.a80 + include fn_main.a80 diff --git a/fninit.a80 b/fn_init.a80 similarity index 100% rename from fninit.a80 rename to fn_init.a80 diff --git a/fninput.a80 b/fn_input.a80 similarity index 100% rename from fninput.a80 rename to fn_input.a80 diff --git a/fn_macros.a80 b/fn_macros.a80 index 3ee5006..c202e2a 100644 --- a/fn_macros.a80 +++ b/fn_macros.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 06.07.2025 savelij +; LAST UPDATE: 21.01.2026 savelij MAKEWINDOW MACRO TYPE CALL JUMPS.MakeWindow @@ -149,3 +149,12 @@ HDR_FLX MACRO STRING,OFFSET,ENTRY,MODES ENDIF DB 3 DUP 0 ENDM + +; подмена LD A,0 на XOR A, иначе вставка как есть +LD_A MACRO NUM + IF NUM = 0 + XOR A + ELSE + LD A,NUM + ENDIF + ENDM diff --git a/fnmain.a80 b/fn_main.a80 similarity index 93% rename from fnmain.a80 rename to fn_main.a80 index 541bfda..d51e90c 100644 --- a/fnmain.a80 +++ b/fn_main.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 07.09.2025 savelij +; LAST UPDATE: 18.01.2026 savelij include fn_const.a80 include fn_macros.a80 @@ -379,12 +379,12 @@ ComExit CALL ResDrivers SPDSS DSSF.FREEMEM SPDSS DSSF.EXIT,0 - include fnwin.a80 - include fnprint.a80 - include fninput.a80 - include fnbar.a80 - include fnmouse.a80 - include fnsys.a80 + include fn_win.a80 + include fn_print.a80 + include fn_input.a80 + include fn_bar.a80 + include fn_mouse.a80 + include fn_sys.a80 ; Старт MainStartFN: DI @@ -463,19 +463,19 @@ MouseOnOff LD A,(MouseFlag) RET START_SORT - include fnsort.a80 + include fn_sort.a80 END_SORT START_TREE - include fntree.a80 + include fn_tree.a80 END_TREE - include fnpanel.a80 - include fndos.a80 + include fn_panel.a80 + include fn_dos.a80 - include fnwork.a80 - include fnmenu.a80 - include fninit.a80 - include fndosline.a80 - include fntab.a80 + include fn_work.a80 + include fn_menu.a80 + include fn_init.a80 + include fn_dosline.a80 + include fn_tab.a80 END_BLOCK_1: DEPHASE ; BASE_ADDR @@ -492,11 +492,11 @@ REZ2_BUFFERS _MINUSVAR .ENDPATHSRC, WORD ; адрес хвоста пути источника _MINUSVAR .CURR_DIRNAME, WORD ; текущий адрес в пути - include rez2_fnfunct.a80 - include rez2_fnsearch.a80 - include rez2_fnconfig.a80 - include rez2_fnerror.a80 - include rez2_fntab.a80 + include rez2_fn_funct.a80 + include rez2_fn_search.a80 + include rez2_fn_config.a80 + include rez2_fn_error.a80 + include rez2_fn_tab.a80 END_BLOCK_2: DEPHASE ; 0x4000 ; ==============resident 2============== @@ -522,14 +522,14 @@ REZ3_BUFFERS _INIT_VAR 0x8000 ; с конца страницы _MINUSVAR .DOShistory, 0x200 ;times 0x200 db 0 - _MINUSVAR .fnedit_ext, WorkBuffer_Size ;times 0x400 db 0 - _MINUSVAR .fnview_ext, WorkBuffer_Size ;times 0x400 db 0 - _MINUSVAR .fn_ext, WorkBuffer_Size ;times 0x400 db 0 + _MINUSVAR .fnedit_ext, EXT_BUF_SIZE ;times 0x400 db 0 + _MINUSVAR .fnview_ext, EXT_BUF_SIZE ;times 0x400 db 0 + _MINUSVAR .fn_ext, EXT_BUF_SIZE ;times 0x400 db 0 - include rez3_fnnext.a80 - include rez3_fnmark.a80 - include rez3_fnmisc.a80 - include rez3_fntab.a80 + include rez3_fn_extensions.a80 + include rez3_fn_mark.a80 + include rez3_fn_misc.a80 + include rez3_fn_tab.a80 END_BLOCK_3: DEPHASE ; 0x4000 ; ==============resident 3============== diff --git a/fnmenu.a80 b/fn_menu.a80 similarity index 100% rename from fnmenu.a80 rename to fn_menu.a80 diff --git a/fnmouse.a80 b/fn_mouse.a80 similarity index 100% rename from fnmouse.a80 rename to fn_mouse.a80 diff --git a/fnpanel.a80 b/fn_panel.a80 similarity index 100% rename from fnpanel.a80 rename to fn_panel.a80 diff --git a/fnprint.a80 b/fn_print.a80 similarity index 100% rename from fnprint.a80 rename to fn_print.a80 diff --git a/fnsort.a80 b/fn_sort.a80 similarity index 100% rename from fnsort.a80 rename to fn_sort.a80 diff --git a/fnsys.a80 b/fn_sys.a80 similarity index 100% rename from fnsys.a80 rename to fn_sys.a80 diff --git a/fntab.a80 b/fn_tab.a80 similarity index 100% rename from fntab.a80 rename to fn_tab.a80 diff --git a/fntree.a80 b/fn_tree.a80 similarity index 100% rename from fntree.a80 rename to fn_tree.a80 diff --git a/fn_version.a80 b/fn_version.a80 index 925f4f2..0015b58 100644 --- a/fn_version.a80 +++ b/fn_version.a80 @@ -1,7 +1,7 @@ -; LAST UPDATE: 10.01.2026 savelij +; LAST UPDATE: 22.01.2026 savelij FLEX_VERS -.NAVIGATOR EQU "1.16.05" +.NAVIGATOR EQU "1.16.06" .EDITOR EQU "1.11" .VIEWER EQU "1.07" diff --git a/fnwin.a80 b/fn_win.a80 similarity index 99% rename from fnwin.a80 rename to fn_win.a80 index 4747b3c..4f0a12a 100644 --- a/fnwin.a80 +++ b/fn_win.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 01.08.2025 savelij +; LAST UPDATE: 18.01.2026 savelij ;[]----------------------------------------------------------[] ;Процедура отчиски 0 экрана @@ -156,7 +156,7 @@ MakeWindow: EX (SP),IY JP Z,PutSBdown CP WINSUBOBJ.RESTOREWIN ; восстановление части экрана JP Z,RestoreWindow - CP WINSUBOBJ.ADRTEXT + CP WINSUBOBJ.ADRTEXT ; текст по указанному адресу JP Z,PutAdrTxtLine POP HL POP AF diff --git a/fnwork.a80 b/fn_work.a80 similarity index 99% rename from fnwork.a80 rename to fn_work.a80 index e098b92..22c0d28 100644 --- a/fnwork.a80 +++ b/fn_work.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 07.09.2025 savelij +; LAST UPDATE: 17.01.2026 savelij ;[]===========================================================[] CursUp LD A,(IY + PANEL.FILES_ALL) @@ -1466,6 +1466,7 @@ RunFLXfile LD A,(HL) RET ;[]-----------------------------------------------------------[] +; проверка по расширению согласно прописанному в EXT файле TestEXT: PUSH IX LD IXL,E LD IXH,D diff --git a/plugins/help/help_t.a80 b/plugins/help/help_t.a80 index 20eaa94..3b8a87a 100644 --- a/plugins/help/help_t.a80 +++ b/plugins/help/help_t.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 27.06.2025 savelij +; LAST UPDATE: 18.01.2026 savelij DB 0,0 DB " Flex Navigator",0,0 @@ -109,7 +109,7 @@ DB " All files - список всех файлов",0 DB " Execute files - список запускаемых файлов",0 DB " *.* - установить фильтр для списка файлов",0 - DB " Filtr... - фильтр для списка файлов",0 + DB " Filter... - фильтр для списка файлов",0 DB " Name - сортировать по имени",0 DB " Extention - сортировать по расширению",0 DB " Date - сортировать по дате",0 @@ -121,9 +121,10 @@ DB " Version... - информация о версии Flex Navigator",0,0,0," ",9 DB " ФАЙЛЫ РАСШИРЕНИЙ",0,0 DB " Для подключения внешних программ для работы с файлами существуют файлы",0 - DB "расширений. Flex Navigator использует три файла расширений:",0,0 + DB "расширений. Максимальный размер файла расширений - 1024 байта.",0 + DB "Flex Navigator использует три файла расширений:",0,0 DB " fn.ext - главный файл расширений",0 - DB " fnview.ext - файл расширений прострмотра",0 + DB " fnview.ext - файл расширений просмотра",0 DB " fnedit.ext - файл расширений редактора",0,0 DB " Формат файлов расширений:",0,0 DB " ext: [drive]:\\[path]\\filename.ext parametr",0,0 diff --git a/readme.md b/readme.md index f31a412..55c1de6 100644 --- a/readme.md +++ b/readme.md @@ -3,10 +3,11 @@ Flex Navigator ╨┤╨╗╤П ╨║╨╛╨╝╨┐╤М╤О╤В╨╡╤А╨░ Sprinter ╨б╨╛╨▒╤А╨░╨╜╨╜╤Л╨╡ ╤Д╨░╨╣╨╗╤Л ╨╖╨░╨▒╨╕╤А╨░╤В╤М ╨╕╨╖ ╨┐╨░╨┐╨║╨╕ fn -`FlexNavigator 1.16.05` -- ╨▓ ╤Д╤Г╨╜╨║╤Ж╨╕╨╕ ╤В╨╡╨║╤Б╤В╨╛╨▓╨╛╨│╨╛ ╨▓╨▓╨╛╨┤╨░ ╨╖╨░╨▒╨╗╨╛╨║╨╕╤А╨╛╨▓╨░╨╜╨░ ╨╛╨▒╤А╨░╨▒╨╛╤В╨║╨░ ╨║╨╗╨░╨▓╨╕╤И╨╕ - ALT, ╨▓╤Л╨╖╤Л╨▓╨░╨╗╨╛ ╨╖╨░╨▓╨╕╤Б╨░╨╜╨╕╨╡ ╨┐╤А╨╕ ╨┐╨╛╨┐╤Л╤В╨║╨╡ ╤Б╨┤╨╡╨╗╨░╤В╤М ╤Б╨╝╨╡╨╜╤Г ╨┤╨╕╤Б╨║╨░ (ALT/Fx). -- ╤Г╨▒╤А╨░╨╜╨╛ ╤Г╨┤╨░╨╗╨╡╨╜╨╕╨╡ ╨▓ ╤А╨╡╨╢╨╕╨╝╨╡ ╨┐╤А╨╛╤Б╨╝╨╛╤В╤А╨░ ╨┤╨╡╤А╨╡╨▓╨░. +`FlexNavigator 1.16.06` +- ╨┤╨╗╤П ╨╛╤И╨╕╨▒╨╛╨║ ╤Г ╨║╨╛╤В╨╛╤А╤Л╤Е ╨╜╨╡╤В ╤В╨╡╨║╤Б╤В╨░ ╨╛╨┐╨╕╤Б╨░╨╜╨╕╤П ╤В╨╡╨┐╨╡╤А╤М ╨▓╤Л╨┤╨░╨╡╤В ╨▓╤Б╨╡╨│╨┤╨░ + ╤В╨╡╨║╤Б╤В ╨╛╤И╨╕╨▒╨║╨╕ "Unknown Error". +- ╨╕╤Б╨┐╤А╨░╨▓╨╗╨╡╨╜╨░ ╨╛╤И╨╕╨▒╨║╨░ ╨┐╤А╨╕╨▓╨╛╨┤╤П╤Й╨░╤П ╨║ ╨▓╤Л╨╗╨╡╤В╤Г ╨┐╤А╨╕ ╨║╨╛╨┐╨╕╤А╨╛╨▓╨░╨╜╨╕╨╕ ╨╜╨╡╤Б╨║╨╛╨╗╤М╨║╨╕╤Е ╤Д╨░╨╣╨╗╨╛╨▓ + ╨╜╨░ ╤Г╨╢╨╡ ╤Б╤Г╤Й╨╡╤Б╤В╨▓╤Г╤О╤Й╨╕╨╡ ╨╕ ╨▓╤Л╨▒╨╛╤А╨╡ ╨╛╤В╨╝╨╡╨╜╤Л ╨╛╤В ╨┐╤А╨╛╨┤╨╛╨╗╨╢╨╡╨╜╨╕╤П ╨║╨╛╨┐╨╕╤А╨╛╨▓╨░╨╜╨╕╤П. `FileViewer.flx 1.07` - ╨╝╨╡╨╗╨║╨╛╨╡ ╨╕╤Б╨┐╤А╨░╨▓╨╗╨╡╨╜╨╕╨╡ ╨┐╨╛╨╖╨╕╤Ж╨╕╨╕ ╨▓╤Л╨▓╨╛╨┤╨░ ╨┤╨░╤В╤Л/╨▓╤А╨╡╨╝╨╡╨╜╨╕. diff --git a/rez2_fnconfig.a80 b/rez2_fn_config.a80 similarity index 100% rename from rez2_fnconfig.a80 rename to rez2_fn_config.a80 diff --git a/rez2_fnerror.a80 b/rez2_fn_error.a80 similarity index 96% rename from rez2_fnerror.a80 rename to rez2_fn_error.a80 index 1f8f07a..fe4a004 100644 --- a/rez2_fnerror.a80 +++ b/rez2_fn_error.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 01.08.2025 savelij +; LAST UPDATE: 22.01.2026 savelij ; !FIXIT переделать одинаковые окна с разным текстом для ошибок под автоматическую процедуру ;[]===========================================================[] @@ -17,18 +17,25 @@ DOSErrorR ;[x] 30/07/23 -bug JR .INT_ERR .calc_addr: LD HL,.ErrorWins -.INT_ERR ADD A,A ; *2 - ADD A,A ; *4 - ADD A,L +.INT_ERR EX DE,HL LD L,A - ADC A,H - SUB L - LD H,A + LD H,0 + ADD HL,HL ; *2 + ADD HL,HL ; *4 + ADD HL,DE .goto_addr LD E,(HL) INC HL LD D,(HL) ; адрес текста с Х позицией INC HL - LD A,(DE) + LD A,D + OR E + JR NZ,.L1 + LD HL,.UNKerror + LD E,(HL) + INC HL + LD D,(HL) + INC HL +.L1 LD A,(DE) INC DE LD C,A ; X позиция младший байт LD A,(DE) diff --git a/rez2_fnfunct.a80 b/rez2_fn_funct.a80 similarity index 97% rename from rez2_fnfunct.a80 rename to rez2_fn_funct.a80 index 50944d5..686f75c 100644 --- a/rez2_fnfunct.a80 +++ b/rez2_fn_funct.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 11.01.2026 savelij +; LAST UPDATE: 22.01.2026 savelij ;[]==========================================================[] CopyFilesR LD A,(IY + PANEL.FILES_ALL) @@ -288,7 +288,7 @@ CopyNextFile LD IX,(COPY.PathCurrFile) SPDSS DSSF.OPEN,,FILEMODE.R ; открытие на чтение JP C,CopyError1 LD (COPY.FHandleSrc),A - LD HL,(COPY.PathDst) ; открываем файл приемник + LD HL,(COPY.PathDst) ; меняем путь на путь куда копировать SPDSS DSSF.CHDIR JP C,CopyError2 LD IX,(COPY.PathCurrFile) @@ -305,12 +305,24 @@ CopyNextFile LD IX,(COPY.PathCurrFile) LD C,DSSF.CREATE .L2 LD A,(IX + FileHDR.Attr) SPDSS ; создание файла + LD (COPY.FHandleDst),A JR NC,.CopyLp2 CP ERR_DSS.FILE_EXISTS JP NZ,CopyError2 - CALL OverWrite ; файл существут, запрос на перезапись -.CopyLp2 LD (COPY.FHandleDst),A - LD HL,(COPY.CurrReadBytes) + CALL OverWrite ; файл существует, запрос на перезапись + AND A ; OverWrite.REWRITE + JR Z,.CopyLp2 ; продолжать с перезаписью + DEC A ; OverWrite.SKIP + JP Z,CopyNextFile.CloseFile1 ; пропуск копирования +; прерывание копирования OverWrite.BREAK + LD A,(COPY.FHandleSrc) + SPDSS DSSF.CLOSE + LD A,(COPY.MemID) + SPDSS DSSF.FREEMEM + JP CopyEnd + +; перезапись файла и продолжение +.CopyLp2 LD HL,(COPY.CurrReadBytes) LD A,H OR L LD HL,(COPY.CurrReadBytes + 2) @@ -1000,7 +1012,14 @@ CopyErrorFileDelete: RET ;-------------------------------------------------------------- -OverWrite CALL PointerMousePointer +; Запрос при копировании в существующий файл на продолжение. +OverWrite + _INIT_VAR + _SETVAR .REWRITE ; перезапись файла + _SETVAR .SKIP ; пропуск копирования + _SETVAR .BREAK ; прекращение копирования + + CALL PointerMousePointer MAKEWINDOW WINSUBOBJ.STORE W_MAIN 180,88,280,56 W_FILL 4,2,272,10,COLORI.GREEN @@ -1036,13 +1055,13 @@ OverWrite CALL PointerMousePointer LD BC,114 LD A,COLORP.HIGHGRAY + COLORI.BLACK CALL PrintPathCentr -OvWrtLp LD IX,REZ2TAB.OverWrtTab +.OvWrtLp LD IX,REZ2TAB.OverWrtTab CALL CheckCoordsMouse SPDSS DSSF.SCANKEY - JR Z,OvWrtLp + JR Z,.OvWrtLp LD A,B OR A - JR NZ,OvWrtLp + JR NZ,.OvWrtLp LD A,E CP 0x1B LD HL,OverExit @@ -1061,7 +1080,7 @@ OvWrtLp LD IX,REZ2TAB.OverWrtTab LD HL,OverSkip JR Z,OvrJump CP 'C' - JR NZ,OvWrtLp + JR NZ,.OvWrtLp LD HL,OverExit OvrJump WINDOWCLOSE @@ -1079,7 +1098,9 @@ OverWrtFile CALL PointerMouseClock POP HL LD A,(IX + FileHDR.Attr) SPDSS DSSF.CREATE - RET + LD (COPY.FHandleDst),A ; при перезаписи обновляем хендлер выходного файла + LD_A OverWrite.REWRITE ; выход с перезаписью файла + RET OverSkip CALL PointerMouseClock LD IX,(COPY.PathCurrFile) @@ -1105,21 +1126,24 @@ OverSkip CALL PointerMouseClock LD (IX + PROGRESSBAR.CURR_PAGE + 2),L LD (IX + PROGRESSBAR.CURR_PAGE + 3),H CALL DrawProgressBar - LD HL,CopyNextFile.CloseFile1 - EX (SP),HL +; LD HL,CopyNextFile.CloseFile1 +; EX (SP),HL + LD A,OverWrite.SKIP ; выход с пропуском копирования RET -OverExit INC SP - INC SP - LD IX,(COPY.PathCurrFile) - BIT FileHDR.B_MARK,(IX + FileHDR.Flag) - JP Z,CopyNextFile.CloseFile1 - LD A,(COPY.FHandleSrc) - SPDSS DSSF.CLOSE - LD A,(COPY.MemID) - SPDSS DSSF.FREEMEM - POP IY - JP CopyEnd +OverExit LD A,OverWrite.BREAK ; выход с прекращением копирования + RET +; INC SP +; INC SP +; LD IX,(COPY.PathCurrFile) +; BIT FileHDR.B_MARK,(IX + FileHDR.Flag) +; JP Z,CopyNextFile.CloseFile1 +; LD A,(COPY.FHandleSrc) +; SPDSS DSSF.CLOSE +; LD A,(COPY.MemID) +; SPDSS DSSF.FREEMEM +; POP IY +; JP CopyEnd ; Конверсия размера в байтах в количество страниц ; На входе: diff --git a/rez2_fnsearch.a80 b/rez2_fn_search.a80 similarity index 100% rename from rez2_fnsearch.a80 rename to rez2_fn_search.a80 diff --git a/rez2_fntab.a80 b/rez2_fn_tab.a80 similarity index 100% rename from rez2_fntab.a80 rename to rez2_fn_tab.a80 diff --git a/rez3_fnnext.a80 b/rez3_fn_extensions.a80 similarity index 76% rename from rez3_fnnext.a80 rename to rez3_fn_extensions.a80 index f07c5dd..8078a73 100644 --- a/rez3_fnnext.a80 +++ b/rez3_fn_extensions.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 15.08.2025 savelij +; LAST UPDATE: 18.01.2026 savelij ;[]==========================================================[] InitExtention: LD HL,INIFILES.ExtName1 @@ -26,16 +26,17 @@ InitExt: LD (.EXTdata),DE PUSH DE SPDSS DSSF.CLOSE POP BC - LD HL,WorkBuffer - LD DE,0x0000 + LD HL,WorkBuffer ; входной буфер + LD DE,0x0000 ; буфер распакованного файла расширений .EXTdata EQU $-2 EXX - LD BC,0x03FE + LD BC,EXT_BUF_SIZE - 2 ; размер выходного буфера EXX -.loop: CALL InitExtLine - JR NC,.loop +.loop: CALL InitExtLine ; распаковка одного расширения + JR NC,.loop ; распаковка следующего расширения если не кончились RET +; распаковка файла расширений (одно расширение за вызов) InitExtLine: LD (.InExtSv),DE SUB A LD (DE),A @@ -59,21 +60,22 @@ InitExtLine: LD (.InExtSv),DE RET Z DEC HL INC BC - LD IXL,0x04 + LD IXL,3 + 1 ; размер расширения 3 + 1 байт разделителя ":" +; копирование расширения файла .L1: LD A,B OR C SCF - RET Z + RET Z ; контроль размера входного файла EXX LD A,B OR C SCF EXX - RET Z + RET Z ; контроль размера выходного буфера INC HL DEC BC LD A,(HL) - CP 0x20 + CP ' ' JR C,.L4 CP '`' JR Z,.L4 @@ -94,7 +96,7 @@ InitExtLine: LD (.InExtSv),DE OR C SCF EXX - RET Z + RET Z ; контроль размера выходного буфера JR .L2 .L3: LD (DE),A @@ -104,6 +106,7 @@ InitExtLine: LD (.InExtSv),DE EXX DEC IXL JR NZ,.L1 +; копирование строки запуска с параметрами .L4: LD DE,(.InExtSv) .L5: LD A,B OR C @@ -157,7 +160,7 @@ InitExtLine: LD (.InExtSv),DE JR Z,.L4 CP 0x09 JR Z,.L8 - CP 0x20 + CP ' ' JR Z,.L8 JR C,.L4 LD (DE),A @@ -180,7 +183,7 @@ InitExtLine: LD (.InExtSv),DE LD A,(HL) CP 0x0D JR Z,.L10 - CP 0x20 + CP ' ' JR C,.L4 LD (DE),A INC DE diff --git a/rez3_fnmark.a80 b/rez3_fn_mark.a80 similarity index 100% rename from rez3_fnmark.a80 rename to rez3_fn_mark.a80 diff --git a/rez3_fnmisc.a80 b/rez3_fn_misc.a80 similarity index 100% rename from rez3_fnmisc.a80 rename to rez3_fn_misc.a80 diff --git a/rez3_fntab.a80 b/rez3_fn_tab.a80 similarity index 100% rename from rez3_fntab.a80 rename to rez3_fn_tab.a80