diff --git a/docs/fn_api_0.5.txt b/docs/fn_api_0.5.txt index ec8bff7..877c770 100644 --- a/docs/fn_api_0.5.txt +++ b/docs/fn_api_0.5.txt @@ -1,7 +1,7 @@ []========================================================================[] * * * Описание Flex Navigator API v1.xx для разработчиков Flx-Plugins * -* doc v0.5 от 02.08.2025 * +* doc v0.5 от 04.08.2025 * * * []========================================================================[] @@ -366,8 +366,8 @@ []------------------------------------------------------------------------[] - 5 команд перехода (12 байт) зарезервированы и заполнены - командой RET (12 байт 0xC9) + 5 команд перехода (15 байт) зарезервированы и заполнены + командой RET (15 байт 0xC9) []------------------------------------------------------------------------[] @@ -451,6 +451,12 @@ число выводится без ведущего нуля на выход: - + +[]------------------------------------------------------------------------[] + + 1 команда перехода (3 байта) зарезервированы и заполнены + командой RET (3 байта 0xC9) + []------------------------------------------------------------------------[] JUMPS.PointerMouseClock - процедура установки курсора мыши в часы @@ -673,3 +679,35 @@ старого значения номера страницы для восстановления) []------------------------------------------------------------------------[] + + До смещения 0xC0 команды перехода зарезервированы и заполнены + командой RET (байты 0xC9). + +[]------------------------------------------------------------------------[] + + Общие переменные со смещение 0xC0: + +NUM_DEVICES 1 Количество устройств +TreeFlag 1 Флаг дерева директорий +CMOSFlag 1 Флаг CMOS: 0 - нет + 1 - есть +MouseFlag 1 Флаг мыши: 0 - нет + 1 - есть +CMOSPrint 1 Флаг разрешения печати даты времени + 1 - запрещено, 0 - разрешено +RAMPAGES +.FNPAGESID 1 Индентификатор памяти где FN +.FNREZ2 1 Страница с функциями FN +.FNFONT 1 Страница шрифтов +.FNREZ3 1 Страница еще немного функций FN +.BufferID 1 Индентификатор памяти под буфера +.FLX 1 Страница для загрузки FLX плагинов +.LEFTPANEL 1 Страница каталога Левой панели +.RIGHTPANEL 1 Страница каталога Правой панели +.BuffPg1 1 +.BuffPg2 1 +.BuffPg3 1 +.BuffPg4 1 +.BuffPgEnd 1 +.FILES_COUNT 2 количество помеченных файлов +.FILES_BYTES 5 размер помеченных файлов в байтах diff --git a/docs/history.txt b/docs/history.txt index 4a49b96..e9ca579 100644 --- a/docs/history.txt +++ b/docs/history.txt @@ -1,4 +1,15 @@ +14.08.2025 +FlexNavigator 1.16.03 +- MISC функции перенесены из 2 резидента в 3. +- перераспределение TAB таблиц. +- в описание Flex Navigator API добавлено описание глобальных + переменных. +FileViewer.flx 1.07 +- мелкое исправление позиции вывода даты/времени. +FileEditor.flx 1.11 +- мелкое исправление позиции вывода даты/времени. + 02.08.2025 FlexNavigator 1.16.02 - переделано отображение даты/времени, в режиме 1 (формат 02.08.2025) diff --git a/fn/flx/fneditor.flx b/fn/flx/fneditor.flx index dc51035..e420c45 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 125dd44..554eb8f 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 abbe239..af93b9a 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 e7c3370..7f7acaf 100644 Binary files a/fn/fn.exe and b/fn/fn.exe differ diff --git a/fn/history.txt b/fn/history.txt index 4a49b96..e9ca579 100644 --- a/fn/history.txt +++ b/fn/history.txt @@ -1,4 +1,15 @@ +14.08.2025 +FlexNavigator 1.16.03 +- MISC функции перенесены из 2 резидента в 3. +- перераспределение TAB таблиц. +- в описание Flex Navigator API добавлено описание глобальных + переменных. +FileViewer.flx 1.07 +- мелкое исправление позиции вывода даты/времени. +FileEditor.flx 1.11 +- мелкое исправление позиции вывода даты/времени. + 02.08.2025 FlexNavigator 1.16.02 - переделано отображение даты/времени, в режиме 1 (формат 02.08.2025) diff --git a/fn_const.a80 b/fn_const.a80 index c0e7450..5fa0eb8 100644 --- a/fn_const.a80 +++ b/fn_const.a80 @@ -1,8 +1,9 @@ -; LAST UPDATE: 02.08.2025 savelij +; LAST UPDATE: 14.08.2025 savelij -NUM_PAGES_FN EQU 7 ; количество страниц для работы FN -DateMonthFormat ; формат вывод месяца в дате +NUM_FILES_PANEL EQU 17 ; количество файлов в столбце панели +NUM_PAGES_FN EQU 7 ; количество страниц памяти для работы FN +DateMonthFormat ; формат вывода месяца в дате .Digit EQU 1 ; месяц цифрой 02.08.2025 .Text EQU 2 ; месяц текстом 2 Aug 2025 @@ -262,7 +263,8 @@ FORMTABL JUMPS .JUMPSIZE EQU 3 ; таблица переходов на функции для плагинов - _INIT_VAR BASE_ADDR + .JUMPSIZE ; пропуск перехода на основной вход + _INIT_VAR BASE_ADDR + _SETVAR .MainStartFN, .JUMPSIZE _SETVAR .ClearScreen, .JUMPSIZE _SETVAR .MakeWindow, .JUMPSIZE _SETVAR .ReplaceColorRectan, .JUMPSIZE @@ -281,14 +283,14 @@ JUMPS _SETVAR .DrawVScrollBar, .JUMPSIZE _SETVAR .InitProgressBar, .JUMPSIZE _SETVAR .DrawProgressBar, .JUMPSIZE - _ADDVAR .JUMPSIZE * 5 ; DUPL 15,0xC9 + _ADDVAR .JUMPSIZE * 5 ; RESERVED 15 BYTE 0xC9 _SETVAR .WaitUnpressMouse, .JUMPSIZE _SETVAR .CheckCoordsMouse, .JUMPSIZE _SETVAR .CMOSPrintDateTime, .JUMPSIZE - _ADDVAR .JUMPSIZE; _SETVAR .CMOSPrintOff, .JUMPSIZE + _ADDVAR .JUMPSIZE * 1 ; RESERVED 3 BYTE 0xC9 _SETVAR .PointerMouseClock, .JUMPSIZE _SETVAR .PointerMousePointer, .JUMPSIZE - _ADDVAR .JUMPSIZE * 4 ; DUPL 12,0xC9 + _ADDVAR .JUMPSIZE * 4 ; RESERVED 12 BYTE 0xC9 _SETVAR .ConvertNumbers_40b, .JUMPSIZE _SETVAR .MoveBytesInc, .JUMPSIZE _SETVAR .MoveBytesDec, .JUMPSIZE @@ -308,25 +310,20 @@ JUMPS _SETVAR .atoi_16b, .JUMPSIZE _SETVAR .Resident, .JUMPSIZE ; резервирование до смещения 0xC0 - _ADDVAR (BASE_ADDR + 0xC0) - .CURRVAR; - .JUMPSIZE; * 4 ; DUPL 12,0xC9 -; переменные для доступа из плагинов + _ADDVAR (BASE_ADDR + 0xC0) - .CURRVAR ; RESERVED UNTIL OFFSET 0xC0 BYTE 0xC9 +; глобальные переменные для доступа из плагинов _SETVAR .NUM_DEVICES, BYTE ; Кол-во устройств _SETVAR .TreeFlag, BYTE ; Флаг дерева _SETVAR .CMOSFlag, BYTE ; Флаг CMOS 0 - нет ; 1 - есть _SETVAR .MouseFlag, BYTE ; Флаг мыши 0 - нет ; 1 - есть - _SETVAR .CMOSPrint, BYTE + _SETVAR .CMOSPrint, BYTE ; Флаг разрешения печати даты времени + ; 1 - запрещено, 0 - разрешено _SETVAR .FNPAGESID, BYTE ; Индентификатор памяти FN _SETVAR .FNREZ2, BYTE ; Страница с функциями FN _SETVAR .FNFONT, BYTE ; Страница шрифтов _SETVAR .FNREZ3, BYTE ; Страница FN HELP - IFDEF ENABLE.VIEW - _SETVAR .FNVIEW, BYTE ; Страница с FileViewer - ENDIF - IFDEF ENABLE.EDIT - _SETVAR .FNEDIT, BYTE ; Страница с FileEditor - ENDIF ; Буферные страницы под интерфейс _SETVAR .BufferID, BYTE ; Индентификатор памяти под буфера _SETVAR .FLX, BYTE ; Страница для загрузки FLX плагинов @@ -354,6 +351,7 @@ FileHDR _SETVAR .Hours, BYTE ; +#16 _SETVAR .Minutes, BYTE ; +#17 _SETVAR .SIZE, 0 + _BITMASK MARK, 0 ; 1-файл помечен ; имена файлов @@ -375,6 +373,7 @@ FNinternal ; отладочное, не менять по избежание глюков PLUGS_ENABLE EQU 0 ; меню плагинов TREE_REZID EQU 0 -MARK_DIR EQU 1 ; выбор директории с подсчетом размера всех файлов +MARK_DIR EQU 0 ; выбор директории с подсчетом размера всех файлов TREE_DIR_ENTER EQU 0 ; показ содержимого директории в дереве по ENTER CORR_FILENAME EQU 1 ; преобразование символов имени файла +MISC2REZ3 EQU 0 ; переезд misc.a80 из резидента 2 в резидента 3 diff --git a/fn_exe_boot.a80 b/fn_exe_boot.a80 index d68f477..59ce872 100644 --- a/fn_exe_boot.a80 +++ b/fn_exe_boot.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 19.07.2025 savelij +; LAST UPDATE: 03.08.2025 savelij include macros.a80 @@ -14,19 +14,8 @@ include fat_dir_sp.a80 include fn_version.a80 -ENABLE -;.EDIT -;.VIEW -;.HELP - PAGES_MEM := 4 - IFDEF ENABLE.VIEW -PAGES_MEM := PAGES_MEM + 1 - ENDIF - IFDEF ENABLE.EDIT -PAGES_MEM := PAGES_MEM + 1 - ENDIF INIT_VAR 0xC000 SETVAR FONT_RAW, 6888;IFFFONT_RAW_PACK - FONT_RAW_PACK SETVAR_ALIGN @@ -98,32 +87,11 @@ EntryExec: DI ; загрузка хелпа LD A,(MAIN.FNREZ3) ; FNREZ3 SETPORT WINSP.CPU3,,0 -; SETPORT WINSP.CPU1,,0 ; ???? LD HL,0xC000 LD DE,END_BLOCK_3 - START_BLOCK_3 LD A,(MAIN.hFile) SPDSS DSSF.READ JP C,disk_error - IFDEF ENABLE.VIEW -; загрузка вьювера - LD A,(MAIN.FNVIEW) ; FNVIEW - SETPORT WINSP.CPU3,,0 - LD HL,0xC000 - LD DE,END_BLOCK_VIEWER - START_BLOCK_VIEWER - LD A,(MAIN.hFile) - SPDSS DSSF.READ - JP C,disk_error - ENDIF - IFDEF ENABLE.EDIT -; загрузка редактора - LD A,(MAIN.FNEDIT) ; FNEDIT - SETPORT WINSP.CPU3,,0 - LD HL,0xC000 - LD DE,END_BLOCK_EDITOR - START_BLOCK_EDITOR - LD A,(MAIN.hFile) - SPDSS DSSF.READ - JP C,disk_error - ENDIF LD A,(MAIN.hFile) SPDSS DSSF.CLOSE ; close file ;!TEST ; !HARDCODE SYS_PAGE @@ -205,12 +173,6 @@ MAIN .FNREZ2 db 0x00 ; 00 .FNFONT db 0x00 ; 01 .FNREZ3 db 0x00 ; 02 - IFDEF ENABLE.VIEW -.FNVIEW db 0x00 ; 03 - ENDIF - IFDEF ENABLE.EDIT -.FNEDIT db 0x00 ; 04 - ENDIF DB 0xFF .copyright_str: DZ "\r\nThe Flex Navigator, ver.\{FLEX_VERS.NAVIGATOR}\r\n" diff --git a/fn_version.a80 b/fn_version.a80 index 855bb06..d94a820 100644 --- a/fn_version.a80 +++ b/fn_version.a80 @@ -1,7 +1,7 @@ -; LAST UPDATE: 02.08.2025 savelij +; LAST UPDATE: 14.08.2025 savelij FLEX_VERS -.NAVIGATOR EQU "1.16.02" -.EDITOR EQU "1.10" -.VIEWER EQU "1.06" +.NAVIGATOR EQU "1.16.03" +.EDITOR EQU "1.11" +.VIEWER EQU "1.07" diff --git a/fndosline.a80 b/fndosline.a80 index c611b3d..df68e22 100644 --- a/fndosline.a80 +++ b/fndosline.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 01.08.2025 savelij +; LAST UPDATE: 14.08.2025 savelij ;[]==========================================================[] DOSline SUB A @@ -59,7 +59,7 @@ DOSlnEx DOSloop SUB A LD (HistCurrent),A LD IX,DOSstr - LD HL,DOSTab + LD HL,MAINTAB.DOSTab CALL DOSInputLine RET C JR Z,RunDOSline @@ -249,7 +249,7 @@ RunDOSexe1 ld hl,WorkBuffer SUB A CALL ClearScreen CALL ResVideoMode - LD HL,ReStartPoint + LD HL,ReStartFN EX (SP),HL LD HL,WorkBuffer + 0x0100 SPDSS DSSF.EXEC,0 @@ -348,7 +348,7 @@ SaveDOSline PUSH BC CALL FindHistory POP BC - LD DE,DOShistory + DOShistory_Size + LD DE,BUFFERS.DOShistory + BUFFERS.DOShistory_Size OR A EX DE,HL SBC HL,DE @@ -365,7 +365,7 @@ SaveDOSline INC HL EX DE,HL PUSH HL - LD BC,DOShistory + LD BC,BUFFERS.DOShistory OR A SBC HL,BC LD C,L @@ -379,7 +379,7 @@ SaveDOSline LDDR .L2 POP BC LD HL,DOSinp - LD DE,DOShistory + LD DE,BUFFERS.DOShistory LD A,C INC A LD (DE),A @@ -427,7 +427,7 @@ GetDOShistory LD IX,DOSstr SETPORT WINSP.CPU1,,0 RET -FindHistory LD HL,DOShistory +FindHistory LD HL,BUFFERS.DOShistory OR A RET Z LD B,A diff --git a/fninit.a80 b/fninit.a80 index 2fd1d32..9530f17 100644 --- a/fninit.a80 +++ b/fninit.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 02.08.2025 savelij +; LAST UPDATE: 14.08.2025 savelij ;[]==========================================================[] InitVideoMode @@ -262,8 +262,8 @@ FirstInit .EDIRFLX ; обновление в таблице выбора дисков на панели -SETUP_DISKS LD HL,BgDISKl ; диски левой панели - LD DE,BgDISKr ; диски правой панели +SETUP_DISKS LD HL,MAINTAB.BgDISKl ; диски левой панели + LD DE,MAINTAB.BgDISKr ; диски правой панели LD BC,FORMTABL.SIZE * 2 LD A,(NUM_DEVICES) .L1 ADD HL,BC @@ -337,38 +337,38 @@ InitScreen OR A RET Z MAKEWINDOW WINSUBOBJ.WOBIND - W_BORDER 500 + 10,15,136 - 10,12 + W_BORDER 510,15,126,12 W_END - LD HL,508 + 12 + LD HL,520 LD DE,17 LD B,COLORP.HIGHGRAY + COLORI.BLACK EXX - LD HL,558 + 10 + LD HL,568 LD DE,17 LD B,COLORP.HIGHGRAY + COLORI.BLACK EXX - LD A,DateMonthFormat.Text + LD A,DateMonthFormat.Digit JP CMOSPrintDateTime ;[]==========================================================[] InitPanels LD (InitPanFlg),A - LD HL,LeftPanel+PANEL.VIEWFLAG - LD A,(RightPanel+PANEL.VIEWFLAG) + LD HL,LeftPanel + PANEL.VIEWFLAG + LD A,(RightPanel + PANEL.VIEWFLAG) OR (HL) - AND 0x02 - JR NZ,InitPanTree + AND VIEWFLAG.M_TREE;0x02 + JR NZ,.InitPanTree LD IY,LeftPanel CALL InitPanelE LD IY,RightPanel CALL InitPanelE - JR InitPanExit + JR .InitPanExit -InitPanTree LD IY,LeftPanel +.InitPanTree LD IY,LeftPanel BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) JR NZ,.L1 LD IY,RightPanel .L1 CALL InitPanelE -InitPanExit LD HL,LeftPanel +.InitPanExit LD HL,LeftPanel LD DE,PANEL.CURR_PATH BIT 7,(HL) JR NZ,.L2 @@ -440,10 +440,10 @@ PanelN6 EQU $+1 W_END LD HL,NormMouse - LD DE,PanelPlaceL + LD DE,MAINTAB.PanelPlaceL BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) JR Z,.L1 - LD DE,PanelPlaceR + LD DE,MAINTAB.PanelPlaceR .L1 PUSH DE LD BC,0x0050 LDIR @@ -514,10 +514,10 @@ PanelP6 EQU $+1 W_END LD HL,PodrMouse - LD DE,PanelPlaceL + LD DE,MAINTAB.PanelPlaceL BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) JR Z,.L1 - LD DE,PanelPlaceR + LD DE,MAINTAB.PanelPlaceR .L1 PUSH DE LD BC,0x0050 LDIR diff --git a/fnmain.a80 b/fnmain.a80 index 2101c8c..55ab5ea 100644 --- a/fnmain.a80 +++ b/fnmain.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 02.08.2025 savelij +; LAST UPDATE: 14.08.2025 savelij ;[]=======================================================================[] ; FLEX NAVIGATOR ; @@ -12,7 +12,7 @@ PHASE BASE_ADDR START_BLOCK_1 - JP StartPoint ; entry point + JP MainStartFN ; entry point JP ClearScreen JP MakeWindow @@ -39,7 +39,7 @@ START_BLOCK_1 JP CheckCoordsMouse JP CMOSPrintDateTime - DB JUMPS.JUMPSIZE DUP 0xC9;JP CMOSPrintOff + DB JUMPS.JUMPSIZE * 1 DUP 0xC9 JP PointerMouseClock JP PointerMousePointer @@ -73,18 +73,13 @@ CMOSFlag DB 0 ; ; 1 - есть MouseFlag DB 1 ; Флаг мыши 0 - нет ; 1 - есть -CMOSPrint: DB 1 +CMOSPrint: DB 1 ; Флаг разрешения печати даты времени + ; 1 - запрещено, 0 - разрешено RAMPAGES .FNPAGESID DB 0 ; Индентификатор памяти где FN .FNREZ2 DB 0 ; 0 Страница с функциями FN .FNFONT DB 0 ; 1 Страница шрифтов .FNREZ3 DB 0 ; 2 Страница еще немного функций FN - IFDEF ENABLE.VIEW -.FNVIEW DB 0 ; 3 Страница с FileViewer - ENDIF - IFDEF ENABLE.EDIT -.FNEDIT DB 0 ; 4 Страница с FileEditor - ENDIF ; Буферные страницы под интерфейс .BufferID DB 0 ; Индентификатор памяти под буфера .FLX DB 0 ; 0 Страница для загрузки FLX плагинов @@ -182,6 +177,8 @@ RightPanel: DB 0x01 ; DB 0x0A DUP 0 DB PANEL.CURR_PATH_Size DUP 0 ; Путь к текущей директории +thanks DZ "\r\nThank you for using Flex Navigator.\r\n" + DOSError EX AF,AF' GETPORT WINSP.CPU1 PUSH AF @@ -223,6 +220,28 @@ BCDEHLP: LD A,(HL) LD B,A RET +; (ADR) + BCDE = (ADR) +HLPBCDE: LD A,(HL) + ADD A,E + LD (HL),A + INC HL + LD A,(HL) + ADC A,D + LD (HL),A + INC HL + LD A,(HL) + ADC A,C + LD (HL),A + INC HL + LD A,(HL) + ADC A,B + LD (HL),A + INC HL + LD A,(HL) + ADC A,0 + LD (HL),A + RET + GET_DWORD: LD E,(HL) INC HL LD D,(HL) @@ -241,7 +260,134 @@ SET_DWORD: LD (HL),E LD (HL),B RET -thanks DZ "\r\nThank you for using Flex Navigator.\r\n" +; вызов функции в страницах +RESIDENT +; ==============resident 2============== +.CopyFiles: LD DE,CopyFilesR +.FunctResident: LD A,(RAMPAGES.FNREZ2) + LD C,WINSP.CPU1 + JP Resident + +.ReName: LD DE,ReNameR + jr .FunctResident + +.MakeDIR: LD DE,MakeDIRR + jr .FunctResident + +.DeleteFiles: LD DE,DeleteFilesR + jr .FunctResident + +.Quit: CALL ResInvert +.QuitL1 LD DE,QuitConfirmWin + CALL .FunctResident + JP C,SetInvert + LD HL,ComExit + EX (SP),HL + RET + +.Setup: LD DE,SetupR + jr .FunctResident + +.QSearch: LD DE,QSearchR + jr .FunctResident + + IF TREE_REZID +.TestTree LD DE,TestTreeR + jr .FunctResident + +.TestTreeBeg LD DE,TestTreeR.TestTreeBeg + jr .FunctResident + +.ReadTree LD DE,ReadTreeR + jr .FunctResident + +.MakeTreePath LD DE,MakeTreePathR + jr .FunctResident + +.FindTreeDIR LD DE,FindTreeDIRR + jr .FunctResident + ENDIF +; ==============resident 2============== + +; ==============resident 3============== +.MarkFile: LD DE,MarkFileR +.HelpResident: LD A,(RAMPAGES.FNREZ3) + LD C,WINSP.CPU1 + JP Resident + + IF MARK_DIR +; считалка содержимого директории в байтах +.CountingDir LD DE,CountingDirR + JR .HelpResident + +; инициализация переменных для копирования директории +.InitCopyDirs LD DE,InitCopyDirsR + JR .HelpResident + +; копирование директории +.CopyDir LD DE,CopyDirR + JR .HelpResident + +; добавление имени директории в список и/или вход/выход +.Add2ListDir LD DE,Add2ListDirR + JR .HelpResident + ENDIF + +.UnMarkGroup: LD DE,UnMarkGroupR + jr .HelpResident + +.UnMarkGroupN: LD DE,UnMarkGroupRN + jr .HelpResident + +.MarkGroup: LD DE,MarkGroupR + jr .HelpResident + +.MarkGroupN: LD DE,MarkGroupRN + jr .HelpResident + +.SelectAll: LD DE,SelectAllR + jr .HelpResident + +.SelectAllN: LD DE,SelectAllRN + jr .HelpResident + +.UnSelectAll: LD DE,UnSelectAllR + jr .HelpResident + +.UnSelectAllN: LD DE,UnSelectAllRN + jr .HelpResident + +.InvertSelect: LD DE,InvertSelectR + jr .HelpResident + +.InvertSelectN: LD DE,InvertSelectRN + jr .HelpResident + +.PrintFile: CALL ResInvert +.PrintFileL3 + LD HL,SetInvert + PUSH HL + LD DE,PrintFileR + jr .HelpResident + +.FileInfo: CALL ResInvert +.FileInfoL2 + LD HL,SetInvert + PUSH HL + LD DE,FileInfoR + jr .HelpResident + +.Version: LD DE,VersionR + jr .HelpResident + +.DiskInfo: CALL ResInvert +.DiskInfoL4: + LD DE,DiskInfoR + jr .HelpResident + +.SystemInfo: LD DE,SystemInfoR + jr .HelpResident +; ==============resident 3============== ; Выход ComExit CALL ResDrivers @@ -260,9 +406,9 @@ ComExit CALL ResDrivers include fnsys.a80 ; Старт -StartPoint: DI +MainStartFN: DI LD SP,STACK -ReStartPoint: +ReStartFN: SETPORT BORDER,0 SETPORT WINSP.Y_PORT,0xC0 CALL InitVideoMode @@ -272,10 +418,10 @@ ReStartPoint: SUB A CALL InitPanels CALL WaitUnpressMouse -MainLoop: LD IX,FilePanelLeft +MainLoop: LD IX,MAINTAB.FilePanelLeft BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) JR Z,.L1 - LD IX,FilePanelRight + LD IX,MAINTAB.FilePanelRight .L1 CALL CheckCoordsMouse CALL TestKeys CALL C,DOSline @@ -349,122 +495,8 @@ END_TREE ENDIF include fnpanel.a80 include fndos.a80 + include fnwork.a80 - -; вызов функции в страницах -RESIDENT -.CopyFiles: LD DE,CopyFilesR -; resident 2 -.FunctResident: LD A,(RAMPAGES.FNREZ2) - LD C,WINSP.CPU1 - JP Resident - -.ReName: LD DE,ReNameR - jr .FunctResident - -.MakeDIR: LD DE,MakeDIRR - jr .FunctResident - -.DeleteFiles: LD DE,DeleteFilesR - jr .FunctResident - -.Quit: CALL ResInvert -.QuitL1 LD DE,QuitConfirmWin - CALL .FunctResident - JP C,SetInvert - LD HL,ComExit - EX (SP),HL - RET - -.Setup: LD DE,SetupR - jr .FunctResident - -.FileInfo: CALL ResInvert -.FileInfoL2 LD HL,SetInvert - PUSH HL - LD DE,FileInfoR - jr .FunctResident - -.PrintFile: CALL ResInvert -.PrintFileL3 LD HL,SetInvert - PUSH HL - LD DE,PrintFileR - jr .FunctResident - -.DiskInfo: CALL ResInvert -.DiskInfoL4: LD DE,DiskInfoR - jr .FunctResident - -.SystemInfo: LD DE,SystemInfoR - jr .FunctResident - -.Version: LD DE,VersionR - jr .FunctResident - -.QSearch: LD DE,QSearchR - jr .FunctResident - - IF TREE_REZID -.TestTree LD DE,TestTreeR - jr .FunctResident - -.TestTreeBeg LD DE,TestTreeR.TestTreeBeg - jr .FunctResident - -.ReadTree LD DE,ReadTreeR - jr .FunctResident - -.MakeTreePath LD DE,MakeTreePathR - jr .FunctResident - -.FindTreeDIR LD DE,FindTreeDIRR - jr .FunctResident - ENDIF - -.MarkFile: LD DE,MarkFileR -; resident 3 -.HelpResident: LD A,(RAMPAGES.FNREZ3) - LD C,WINSP.CPU1 - JP Resident - - IF MARK_DIR -.CountingDir LD DE,CountingDirR - JR .HelpResident - -.MkdirsDst LD DE,MkdirsDstR - JR .HelpResident - ENDIF - -.UnMarkGroup: LD DE,UnMarkGroupR - jr .HelpResident - -.UnMarkGroupN: LD DE,UnMarkGroupRN - jr .HelpResident - -.MarkGroup: LD DE,MarkGroupR - jr .HelpResident - -.MarkGroupN: LD DE,MarkGroupRN - jr .HelpResident - -.SelectAll: LD DE,SelectAllR - jr .HelpResident - -.SelectAllN: LD DE,SelectAllRN - jr .HelpResident - -.UnSelectAll: LD DE,UnSelectAllR - jr .HelpResident - -.UnSelectAllN: LD DE,UnSelectAllRN - jr .HelpResident - -.InvertSelect: LD DE,InvertSelectR - jr .HelpResident - -.InvertSelectN: LD DE,InvertSelectRN - jr .HelpResident - include fnmenu.a80 include fninit.a80 include fndosline.a80 @@ -472,20 +504,22 @@ RESIDENT END_BLOCK_1: DEPHASE ; BASE_ADDR +; ==============resident 2============== PHASE 0x4000 START_BLOCK_2 include rez2_fnfunct.a80 - include rez2_fnmisc.a80 include rez2_fnsearch.a80 include rez2_fnconfig.a80 include rez2_fnerror.a80 - include rez2_fntab1.a80 + include rez2_fntab.a80 IF TREE_REZID include fntree.a80 ENDIF END_BLOCK_2: DEPHASE ; 0x4000 +; ==============resident 2============== +; ==============fonts============== PHASE 0xC000 ; MAIN.FNFONT START_BLOCK_4 @@ -496,57 +530,41 @@ IFFFONT_RAW_END END_BLOCK_4: DEPHASE ; 0xC000 +; ==============fonts============== +; ==============resident 3============== PHASE 0x4000 ; MAIN.FNREZ3 START_BLOCK_3 include rez3_fnnext.a80 include rez3_fnmark.a80 + include rez3_fnmisc.a80 + include rez3_fntab.a80 + ; буфера чтобы память не занимали в EXE файле - INIT_VAR 0x8000 ; с конца страницы - 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 DOShistory, 0x200 ;times 0x200 db 0 +BUFFERS + _INIT_VAR 0x8000 ; с конца страницы + _MINUSVAR .DOShistory, 0x200 ;times 0x200 db 0 - IFDEF ENABLE.HELP -WINSP_CPU EQU WINSP.CPU3 ; окно проецирования -WINSP_ADR EQU 0xC000 ; адрес окна + _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 - include plugins/help/help.a80 -HelpText: include plugins/help/help_t.a80 -HelpTextEnd: - ENDIF + _MINUSVAR .OLDPATH, 0x100 ; сохраненный текущий путь + _MINUSVAR .CURRPATHSRC, 0x100 ; временной текущий путь источника + _MINUSVAR .CURRPATHDST, 0x100 ; временной текущий путь приемника + _MINUSVAR .FINDBUF, 0x100 ; временный буфер поиска + _MINUSVAR .LEVEL_DIR, BYTE ; текущий уровень директории + _MINUSVAR .ENDPATHSRC, WORD ; адрес хвоста пути источника + _MINUSVAR .ENDPATHDST, WORD ; адрес хвоста пути приемника + _MINUSVAR .CURR_DIRNAME, WORD ; текущий адрес в пути END_BLOCK_3: DEPHASE ; 0x4000 - - IFDEF ENABLE.VIEW -; MAIN.FNVIEW -START_BLOCK_VIEWER - PHASE 0xC000 - include plugins/fnviewer/fviewer.a80 - DEPHASE ; 0xC000 -END_BLOCK_VIEWER - ENDIF - - IFDEF ENABLE.EDIT -; MAIN.FNEDIT -START_BLOCK_EDITOR - PHASE 0xC000 - include plugins/fneditor/feditor.a80 - DEPHASE ; 0xC000 -END_BLOCK_EDITOR - ENDIF +; ==============resident 3============== ; чисто для отладки BLOCK1_SIZE EQU END_BLOCK_1 - START_BLOCK_1 ; основной код BLOCK2_SIZE EQU END_BLOCK_2 - START_BLOCK_2 ; резидент 2 BLOCK3_SIZE EQU END_BLOCK_3 - START_BLOCK_3 ; резидент 3 - IFDEF ENABLE.EDIT -EDITOR_SIZE EQU END_BLOCK_EDITOR - START_BLOCK_EDITOR ; редактор - ENDIF - IFDEF ENABLE.VIEW -VIEWER_SIZE EQU END_BLOCK_VIEWER - START_BLOCK_VIEWER ; вьювер - ENDIF SORT_SIZE EQU END_SORT - START_SORT ; сортировщик TREE_SIZE EQU END_TREE - START_TREE ; работа с деревом diff --git a/fnmenu.a80 b/fnmenu.a80 index c6e2ab0..4e1d50c 100644 --- a/fnmenu.a80 +++ b/fnmenu.a80 @@ -1,10 +1,10 @@ -; LAST UPDATE: 31.07.2025 savelij +; LAST UPDATE: 14.08.2025 savelij ;[]==========================================================[] PullDown: CALL ResInvert CALL SetPullInvert -PullLoop: LD IX,PullTab +PullLoop: LD IX,MAINTAB.PullTab CALL CheckCoordsMouse SPDSS DSSF.SCANKEY JR Z,PullLoop @@ -89,7 +89,7 @@ PullInvert: LD L,A ADD HL,HL ; *4 ADD HL,HL ; *8 ADD HL,HL ; *16 - LD BC,PullTab + LD BC,MAINTAB.PullTab ADD HL,BC PUSH HL POP IX @@ -141,7 +141,7 @@ MenuFile: CALL ResInvert W_TEXT 16,40,COLORP.HIGHGRAY,"Exit" W_TEXT 100,40,COLORP.HIGHGRAY,"F10" W_END - LD HL,FileTab + LD HL,MAINTAB.FileTab LD BC,3 JP MenuWork @@ -162,7 +162,7 @@ MenuSelect: CALL ResInvert W_TEXT 16,62,COLORP.HIGHGRAY,"Invert selection" W_TEXT 112,62,COLORP.HIGHGRAY,"*" W_END - LD HL,SelectTab + LD HL,MAINTAB.SelectTab LD BC,1 << 8 | 5 JP MenuWork @@ -186,7 +186,7 @@ MenuOption: CALL ResInvert W_TEXT 16,54,COLORP.HIGHGRAY,"Plugins..." ; 03 ENDIF W_END - LD HL,OptionTab + LD HL,MAINTAB.OptionTab IF PLUGS_ENABLE LD BC,2 << 8 | 4 ELSE @@ -326,7 +326,7 @@ MenuView: CALL ResInvert W_TEXT 110,172,COLORP.HIGHGRAY,"\xFE CTRL+F7" .sort5 EQU $ - STRLEN("v CTRL+F7v") W_END - LD HL,ViewTab + LD HL,MAINTAB.ViewTab LD BC,3 << 8 | 12 JP MenuWork @@ -338,7 +338,7 @@ MenuConfig: CALL ResInvert W_MAIN 174,26,96,20 W_TEXT 16,6,COLORP.HIGHGRAY,"Setup..." W_END - LD HL,ConfigTab + LD HL,MAINTAB.ConfigTab LD BC,4 << 8 | 1 JP MenuWork @@ -350,7 +350,7 @@ MenuAbout: CALL ResInvert W_MAIN 222,26,112,20 W_TEXT 16,6,COLORP.HIGHGRAY,"Version..." W_END - LD HL,AboutTab + LD HL,MAINTAB.AboutTab LD BC,5 << 8 | 1 ; HL - адрес таблицы активных зон ; B - текущий пункт меню @@ -804,7 +804,7 @@ NewFilter: CALL ResInvert NEG LD (FiltLen),A LD IX,FilterStr - LD HL,FilterTab + LD HL,MAINTAB.FilterTab CALL InputLine WINDOWCLOSE RET C @@ -855,7 +855,7 @@ LeftDrive: CALL ResInvert W_TEXT 86,3,COLORI.WHITE,"Left drive" W_END LD HL,LeftTab - LD DE,DriveTab + LD DE,MAINTAB.DriveTab LD BC,0x0020 LDIR LD IX,LeftPanel @@ -872,7 +872,7 @@ RightDrive: CALL ResInvert W_TEXT 86,3,COLORI.WHITE,"Right drive" W_END LD HL,RightTab - LD DE,DriveTab + LD DE,MAINTAB.DriveTab LD BC,0x0020 LDIR LD IX,RightPanel @@ -885,7 +885,7 @@ RightTab: DEFW 0x0000,0x0160,0x0000,0x0100,0x20,0x0000,DriveExit,0x0000 ChangeDrv: PUSH IY PUSH IX POP IY - LD IX,BegDrive + LD IX,MAINTAB.BegDrive LD A,(NUM_DEVICES) ADD A,A LD C,A @@ -948,7 +948,7 @@ ChangeDrv: PUSH IY SUB 'A' LD (CurDrive),A CALL SetDriveInv -DriveLoop: LD IX,DriveTab +DriveLoop: LD IX,MAINTAB.DriveTab CALL CheckCoordsMouse SPDSS DSSF.SCANKEY JR Z,DriveLoop @@ -1016,7 +1016,7 @@ DriveRight: LD A,(NUM_DEVICES) LD (CurDrive),A JP SetDriveInv -DriveMouse: LD IX,BegDrive +DriveMouse: LD IX,MAINTAB.BegDrive LD C,(IX+0x00) LD B,(IX+0x01) OR A @@ -1074,7 +1074,7 @@ DriveInvert: LD L,A ADD HL,HL ADD HL,HL ADD HL,HL - LD BC,BegDrive + LD BC,MAINTAB.BegDrive ADD HL,BC PUSH HL POP IX diff --git a/fnsort.a80 b/fnsort.a80 index 06c7fc7..3735944 100644 --- a/fnsort.a80 +++ b/fnsort.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 31.07.2025 savelij +; LAST UPDATE: 03.08.2025 savelij ;[]----------------------------------------------------------[] ReadDIR BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) @@ -390,7 +390,7 @@ SortDIR LD A,(RAMPAGES.RIGHTPANEL) .L1 SETPORT WINSP.CPU1,,0 - LD A,(RAMPAGES.BuffPg3) + LD A,(RAMPAGES.BuffPg4) SETPORT WINSP.CPU3,,0 LD HL,CPU3 LD (EndSort),HL @@ -486,7 +486,7 @@ SortDIR INC HL DJNZ .L3 GETPORT WINSP.CPU1 - LD (RAMPAGES.BuffPg3),A + LD (RAMPAGES.BuffPg4),A GETPORT WINSP.CPU3 BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) LD HL,RAMPAGES.LEFTPANEL diff --git a/fnsys.a80 b/fnsys.a80 index 804e4f4..ae2e477 100644 --- a/fnsys.a80 +++ b/fnsys.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 02.08.2025 savelij +; LAST UPDATE: 03.08.2025 savelij ;[]-----------------------------------------------------------[] ; Процедура умножения (8*8bit) @@ -252,23 +252,23 @@ ConvertNumbers_40b: LD BC,0x4876 EXX ld bc,0xE800 - ; E':BC':BC = 100,000,000,000 +; E':BC':BC = 100,000,000,000 call ConNumb40 exx ld e,0x02 ld bc,0x540B exx ld bc,0xE400 - ; E':BC':BC = 10,000,000,000 +; E':BC':BC = 10,000,000,000 CALL ConNumb40 exx ld e,0x00 ld bc,0x3B9A exx ld bc,0xCA00 - ; E':BC':BC = 1,000,000,000 +; E':BC':BC = 1,000,000,000 CALL ConNumb40 - ; E':BC':BC = 100,000,000 +; E':BC':BC = 100,000,000 CALL ConvNumTxt32_Shared.skip_1 POP IX RET @@ -689,8 +689,12 @@ SkipWord: ld b,0x20 ; HL' - X позиция вывода даты ; DE' - Y позиция вывода даты ; B' - цвет вывода даты +; A - формат вывода месяца в дате +; 1 - месяц выводится числом +; 2 - месяц выводится текстом, +; число выводится без ведущего нуля CMOSPrintDateTime: - EX AF,AF' + LD (CMOSpos.CMOSOut),A LD (CMOSpos.posXtime),HL LD (CMOSpos.posYtime),DE LD A,B @@ -701,35 +705,12 @@ CMOSPrintDateTime: LD (CMOSPrint),A LD (CMOSpos.Time),HL LD (CMOSpos.Time + 2),A -; LD (CMOSpos.Date),HL -; LD (CMOSpos.Date + 2),A -; LD HL,CMOSpos.TimeTXT -; LD DE,CMOSpos.DateTXT -; LD A,'0' -; LD B,0x03 -;.L1 LD (HL),A -; INC HL -; LD (HL),A -; INC HL -; INC HL -; LD (DE),A -; INC DE -; LD (DE),A -; INC DE -; INC DE -; DJNZ .L1 - EX AF,AF' - LD (CMOSpos.CMOSOut),A - OR A - JR Z,TestCMOS - EXX + EXX LD (CMOSpos.posXDate),HL LD (CMOSpos.posYDate),DE LD A,B LD (CMOSpos.colorDate),A EXX -; JR TestCMOS - TestCMOS: LD A,(CMOSFlag) OR A RET Z @@ -752,7 +733,7 @@ TestCMOS: LD A,(CMOSFlag) JR NZ,.PrnCMOSTime LD A,(CMOSpos.Time + 2) CP B - JR Z,TCMOS1 + JR Z,.TCMOS1 .PrnCMOSTime: EX DE,HL LD (CMOSpos.Time),HL LD A,B @@ -771,28 +752,13 @@ TestCMOS: LD A,(CMOSFlag) LD BC,(CMOSpos.posYtime) LD A,(CMOSpos.colorTime) CALL PrintTxtLine_IFF -TCMOS1 POP IX +.TCMOS1 POP IX POP DE ; DE,IX восстановили день,месяц,год LD A,(CMOSpos.CMOSOut) OR A JP Z,TCMOSexit -; PUSH IX -; POP HL -; LD BC,1900 -; OR A -; SBC HL,BC -; LD B,L -; LD HL,(CMOSpos.Date) -; OR A -; SBC HL,DE -; JR NZ,.PrnCMOSData -; LD A,(CMOSpos.Date + 2) -; CP B -; JP Z,TCMOSexit -;.PrnCMOSData EX DE,HL LD (CMOSpos.Date),HL ; день,месяц -; LD A,B LD (CMOSpos.Date + 2),IX ; год LD A,(CMOSpos.CMOSOut) DEC A @@ -805,12 +771,8 @@ TCMOS1 POP IX LD A,L CALL Conv4CMOS INC DE -; LD A,(CMOSpos.Date + 2) LD HL,(CMOSpos.Date + 2) - CALL ConvertNumbers_16b;Conv4CMOS -; LD A,(CMOSpos.CMOSOut) -; DEC A -; JR NZ,.TCMOS2 + CALL ConvertNumbers_16b LD HL,CMOSpos.DateTXT LD DE,(CMOSpos.posXDate) LD BC,(CMOSpos.posYDate) @@ -828,9 +790,7 @@ TCMOS1 POP IX LD A,L DEC A ADD A,A -; LD L,A ADD A,A -; ADD A,L LD HL,Month ADD A,L LD L,A @@ -841,32 +801,11 @@ TCMOS1 POP IX .L2 LDI CP (HL) JR NZ,.L2 -; LD (DE),A -; INC DE LDI -; PUSH IX -; POP HL LD HL,(CMOSpos.Date + 2) CALL ConvertNumbers_16b SUB A LD (DE),A -; LD HL,(CMOSpos.posXDate) -; LD (CMOSclX),HL -; LD HL,(CMOSpos.posYDate) -; LD (CMOSclY),HL -; LD A,(CMOSpos.colorDate) -; AND 0xF0 -; RRCA -; RRCA -; RRCA -; RRCA -; LD (CMOScol),A -; MAKEWINDOW WINSUBOBJ.WOBIND -; W_FILL 0,0,76,8,COLORI.BLACK -; W_END -;CMOSclX EQU $ - 10 -;CMOSclY EQU $ - 8 -;CMOScol EQU $ - 2 LD HL,CMOSpos.DateT1 LD DE,(CMOSpos.posXDate) LD BC,(CMOSpos.posYDate) @@ -875,10 +814,6 @@ TCMOS1 POP IX TCMOSexit POP IX RET -;CMOSPrintOff: LD A,DateMonthFormat.Digit -; LD (CMOSPrint),A -; RET - Conv4CMOS: EX DE,HL LD BC,(('0' - 1) << 8) + 10 .L1 INC B @@ -937,7 +872,7 @@ PointerMouseClock: PUSH AF LD A,(RAMPAGES.FNFONT) SETPORT WINSP.CPU3,,0 - LD IX,CLOCK_BMP;ClockBMP + LD IX,CLOCK_BMP LD HL,14 << 8 + 9 LD DE,7 << 8 | 4 SPMOUSE MOUSEF.LOAD_IMAGE @@ -964,7 +899,7 @@ PointerMousePointer: PUSH AF LD A,(RAMPAGES.FNFONT) SETPORT WINSP.CPU3,,0 - LD IX,MOUSE_BMP;MouseBMP + LD IX,MOUSE_BMP LD HL,13 << 8 + 9 LD DE,0 SPMOUSE MOUSEF.LOAD_IMAGE diff --git a/fntab.a80 b/fntab.a80 index d50f330..4baef9c 100644 --- a/fntab.a80 +++ b/fntab.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 01.08.2025 savelij +; LAST UPDATE: 14.08.2025 savelij ;[]==========================================================[] ; Формат таблицы @@ -29,7 +29,10 @@ ; +0A 2 Адрес обработчика при не нажатом огне ; +0C 2 Адрес обработчика при нажатом огне (лев) ; +0E 2 Адрес обработчика при нажатом огне (прав) -FilePanelLeft DW 6, 40, 15, 26,%0000000000000000,0,MenuFile,0 + +MAINTAB +;[]==========================================================[] +.FilePanelLeft DW 6, 40, 15, 26,%0000000000000000,0,MenuFile,0 DW 40, 84, 15, 26,%0000000000000000,0,MenuSelect,0 DW 84,138, 15, 26,%0000000000000000,0,MenuOption,0 DW 138,174, 15, 26,%0000000000000000,0,MenuView,0 @@ -37,7 +40,7 @@ FilePanelLeft DW 6, 40, 15, 26,%0000000000000000,0,MenuFile,0 DW 222,262, 15, 26,%0000000000000000,0,MenuAbout,0 DW 324,636, 44,225,%0000000000000000,0,ChPanel,0 -PanelPlaceL DW 0, 0, 0, 0,%0000000000000000,0,0,0 +.PanelPlaceL DW 0, 0, 0, 0,%0000000000000000,0,0,0 DW 0, 0, 0, 0,%0000000000000000,0,0,0 DW 0, 0, 0, 0,%0000000000000000,0,0,0 DW 0, 0, 0, 0,%0000000000000000,0,0,0 @@ -52,7 +55,7 @@ PanelPlaceL DW 0, 0, 0, 0,%0000000000000000,0,0,0 DW 480,560,242,256,%0000000000000001,0,RESIDENT.DeleteFiles,0 DW 560,640,242,256,%0000000000000001,0,RESIDENT.Quit,0 -BgDISKl DW 6, 34, 30, 42,%0000000000000001,0,ChangeDriveL,0 ; A +.BgDISKl DW 6, 34, 30, 42,%0000000000000001,0,ChangeDriveL,0 ; A DW 326,354, 30, 42,%0000000000000001,0,ChangeDriveR,0 DW 34, 62, 30, 42,%0000000000000001,0,ChangeDriveL,0 ; B DW 354,382, 30, 42,%0000000000000001,0,ChangeDriveR,0 @@ -77,7 +80,7 @@ BgDISKl DW 6, 34, 30, 42,%0000000000000001,0,ChangeDriveL,0 ; A DW 0x8000 ;[]==========================================================[] -FilePanelRight DW 6, 40, 15, 26,%0000000000000000,0,MenuFile,0 +.FilePanelRight DW 6, 40, 15, 26,%0000000000000000,0,MenuFile,0 DW 40, 84, 15, 26,%0000000000000000,0,MenuSelect,0 DW 84,138, 15, 26,%0000000000000000,0,MenuOption,0 DW 138,174, 15, 26,%0000000000000000,0,MenuView,0 @@ -85,7 +88,7 @@ FilePanelRight DW 6, 40, 15, 26,%0000000000000000,0,MenuFile,0 DW 222,262, 15, 26,%0000000000000000,0,MenuAbout,0 DW 4,316, 44,225,%0000000000000000,0,ChPanel,0 -PanelPlaceR DW 0, 0, 0, 0,%0000000000000000,0,0,0 +.PanelPlaceR DW 0, 0, 0, 0,%0000000000000000,0,0,0 DW 0, 0, 0, 0,%0000000000000000,0,0,0 DW 0, 0, 0, 0,%0000000000000000,0,0,0 DW 0, 0, 0, 0,%0000000000000000,0,0,0 @@ -100,7 +103,7 @@ PanelPlaceR DW 0, 0, 0, 0,%0000000000000000,0,0,0 DW 480,560,242,256,%0000000000000001,0,RESIDENT.DeleteFiles,0 DW 560,640,242,256,%0000000000000001,0,RESIDENT.Quit,0 -BgDISKr DW 6, 34, 30, 42,%0000000000000001,0,ChangeDriveL,0 ; A +.BgDISKr DW 6, 34, 30, 42,%0000000000000001,0,ChangeDriveL,0 ; A DW 326,354, 30, 42,%0000000000000001,0,ChangeDriveR,0 DW 34, 62, 30, 42,%0000000000000001,0,ChangeDriveL,0 ; B DW 354,382, 30, 42,%0000000000000001,0,ChangeDriveR,0 @@ -125,7 +128,7 @@ BgDISKr DW 6, 34, 30, 42,%0000000000000001,0,ChangeDriveL,0 ; A DW 0x8000 ;[]==========================================================[] -FileTab DW 8,160, 29, 43,%0000000100100100,0,RESIDENT.FileInfoL2,0 +.FileTab DW 8,160, 29, 43,%0000000100100100,0,RESIDENT.FileInfoL2,0 DW 8,160, 43, 57,%0000000100100100,0,RESIDENT.PrintFileL3,0 DW 8,160, 63, 77,%0000000100100100,0,RESIDENT.QuitL1,0 DW 6, 40, 15, 26,%0000000100101000,0,MenuExit,0 @@ -140,7 +143,7 @@ FileTab DW 8,160, 29, 43,%0000000100100100,0,RESIDENT.FileInfoL2,0 DW 164,640, 0,256,%0000000100100000,0,MenuExit,0 DW 0x8000 -SelectTab DW 44,196, 29, 43,%0000000100100100,0,RESIDENT.MarkGroupN,0 +.SelectTab DW 44,196, 29, 43,%0000000100100100,0,RESIDENT.MarkGroupN,0 DW 44,196, 43, 57,%0000000100100100,0,RESIDENT.UnMarkGroupN,0 DW 44,196, 57, 71,%0000000100100100,0,RESIDENT.SelectAllN,0 DW 44,196, 71, 85,%0000000100100100,0,RESIDENT.UnSelectAllN,0 @@ -158,7 +161,7 @@ SelectTab DW 44,196, 29, 43,%0000000100100100,0,RESIDENT.MarkGroupN,0 DW 0x8000 ; подменю "Options" -OptionTab DW 88,288, 29, 43,%0000000100100100,0,RefreshTree,0 ; Options->Refresh tree +.OptionTab DW 88,288, 29, 43,%0000000100100100,0,RefreshTree,0 ; Options->Refresh tree DW 88,288, 43, 57,%0000000100100100,0,RESIDENT.DiskInfoL4,0 ; Options->Disk info DW 88,288, 63, 77,%0000000100100100,0,RESIDENT.SystemInfo,0 ; Options->System information IF PLUGS_ENABLE @@ -177,7 +180,7 @@ OptionTab DW 88,288, 29, 43,%0000000100100100,0,RefreshTree,0 ; Options->Refres DW 0x8000 ; подменю "View" -ViewTab DW 142,324, 29, 43,%0000000100100100,0,ChView1,0 +.ViewTab DW 142,324, 29, 43,%0000000100100100,0,ChView1,0 DW 142,324, 43, 57,%0000000100100100,0,ChView2,0 DW 142,324, 57, 71,%0000000100100100,0,ChView3,0 DW 142,324, 77, 91,%0000000100100100,0,ChFilt1,0 @@ -201,7 +204,7 @@ ViewTab DW 142,324, 29, 43,%0000000100100100,0,ChView1,0 DW 330,640, 0,256,%0000000101100000,0,MenuExit,0 DW 0x8000 -ConfigTab DW 178,266, 29, 43,%0000000100100100,0,RESIDENT.Setup,0 +.ConfigTab DW 178,266, 29, 43,%0000000100100100,0,RESIDENT.Setup,0 DW 6, 40, 15, 26,%0000000010010000,MenuFile.L2,0,0 DW 40, 84, 15, 26,%0000000010010000,MenuSelect.L2,0,0 DW 84,138, 15, 26,%0000000010010000,MenuOption.L2,0,0 @@ -214,7 +217,7 @@ ConfigTab DW 178,266, 29, 43,%0000000100100100,0,RESIDENT.Setup,0 DW 270,640, 0,256,%0000000100100000,0,MenuExit,0 DW 0x8000 -AboutTab DW 226,330, 29, 43,%0000000100100100,0,RESIDENT.Version,0 +.AboutTab DW 226,330, 29, 43,%0000000100100100,0,RESIDENT.Version,0 DW 6, 40, 15, 26,%0000000010010000,MenuFile.L2,0,0 DW 40, 84, 15, 26,%0000000010010000,MenuSelect.L2,0,0 DW 84,138, 15, 26,%0000000010010000,MenuOption.L2,0,0 @@ -227,7 +230,7 @@ AboutTab DW 226,330, 29, 43,%0000000100100100,0,RESIDENT.Version,0 DW 334,640, 0,256,%0000000100100000,0,MenuExit,0 DW 0x8000 -PullTab DW 6, 40, 15, 26,%0000000000100000,0,MFile,0 +.PullTab DW 6, 40, 15, 26,%0000000000100000,0,MFile,0 DW 40, 84, 15, 26,%0000000000100000,0,MSelect,0 DW 84,138, 15, 26,%0000000000100000,0,MOption,0 DW 138,174, 15, 26,%0000000000100000,0,MView,0 @@ -240,7 +243,7 @@ PullTab DW 6, 40, 15, 26,%0000000000100000,0,MFile,0 DW 0x8000 ;[]==========================================================[] -FilterTab DW 240,312,123,137,%0000000000000001,0,InputLine.InputLineExitOk,0 +.FilterTab DW 240,312,123,137,%0000000000000001,0,InputLine.InputLineExitOk,0 DW 328,400,123,137,%0000000000000001,0,InputLine.InputLineExitCancel,0 DW 0,208, 0,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 DW 432,640, 0,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 @@ -248,21 +251,13 @@ FilterTab DW 240,312,123,137,%0000000000000001,0,InputLine.InputLineExitOk,0 DW 0,640,143,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 DW 0x8000 -SMaskTab DW 240,312,123,137,%0000000000000001,0,InputLine.InputLineExitOk,0 - DW 328,400,123,137,%0000000000000001,0,InputLine.InputLineExitCancel,0 - DW 0,208, 0,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 - DW 432,640, 0,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 - DW 0,640, 0, 81,%0000000000000000,0,InputLine.InputLineExitCancel,0 - DW 0,640,143,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 - DW 0x8000 - -DOSTab DW 0,256, 0,256,%0000000000000000,0,DOSLnExtC,0 +.DOSTab DW 0,256, 0,256,%0000000000000000,0,DOSLnExtC,0 DW 636,640, 0,256,%0000000000000000,0,DOSLnExtC,0 DW 0,640, 0,229,%0000000000000000,0,DOSLnExtC,0 DW 0,640,239,256,%0000000000000000,0,DOSLnExtC,0 DW 0x8000 -ViewEditTab DW 240,312,123,137,%0000000000000001,0,InputLine.InputLineExitOk,0 +.ViewEditTab DW 240,312,123,137,%0000000000000001,0,InputLine.InputLineExitOk,0 DW 328,400,123,137,%0000000000000001,0,InputLine.InputLineExitCancel,0 DW 0,200, 0,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 DW 440,640, 0,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 @@ -271,12 +266,12 @@ ViewEditTab DW 240,312,123,137,%0000000000000001,0,InputLine.InputLineExitOk,0 DW 0x8000 ;[]==========================================================[] -DriveTab DW 0, 0, 0, 0,%0000000000100000,0,DriveExit,0 +.DriveTab DW 0, 0, 0, 0,%0000000000100000,0,DriveExit,0 DW 0, 0, 0, 0,%0000000000100000,0,DriveExit,0 DW 0,640, 0, 92,%0000000000100000,0,DriveExit,0 DW 0,640,128,256,%0000000000100000,0,DriveExit,0 -BegDrive DW 0, 0,110,121,%0000000000100000,0,DriveMouse,0 +.BegDrive DW 0, 0,110,121,%0000000000100000,0,DriveMouse,0 DW 0, 0,110,121,%0000000000100000,0,DriveMouse,0 DW 0, 0,110,121,%0000000000100000,0,DriveMouse,0 DW 0, 0,110,121,%0000000000100000,0,DriveMouse,0 @@ -291,7 +286,7 @@ BegDrive DW 0, 0,110,121,%0000000000100000,0,DriveMouse,0 IF PLUGS_ENABLE ; области выбора в меню плагинов -PluginsTab: DW 4, 13,100, 10,%0000000000000000,0,SelectPlugin.NUM00,0 +.PluginsTab: DW 4, 13,100, 10,%0000000000000000,0,SelectPlugin.NUM00,0 DW 4, 23,100, 10,%0000000000000000,0,SelectPlugin.NUM01,0 DW 4, 33,100, 10,%0000000000000000,0,SelectPlugin.NUM02,0 DW 4, 43,100, 10,%0000000000000000,0,SelectPlugin.NUM03,0 @@ -307,7 +302,7 @@ PluginsTab: DW 4, 13,100, 10,%0000000000000000,0,SelectPlugin.NUM00,0 ENDIF ;[]==========================================================[] -;Формат таблицы +; Формат таблицы ; +00 2 ASCII + SCANCOD ; +02 2 Execute program HOTKEYS diff --git a/fntree.a80 b/fntree.a80 index b173de9..ee003be 100644 --- a/fntree.a80 +++ b/fntree.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 31.07.2025 savelij +; LAST UPDATE: 03.08.2025 savelij MAX_LEVEL_DIR EQU 21 @@ -28,7 +28,7 @@ ReadTreeR PUSH IY GETPORT WINSP.CPU3 LD B,A PUSH BC - LD A,(RAMPAGES.BuffPg3) + LD A,(RAMPAGES.BuffPg4) SETPORT WINSP.CPU1,,0 BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) LD A,(RAMPAGES.LEFTPANEL) @@ -182,7 +182,7 @@ ReadTreeR PUSH IY SET VIEWFLAG.B_SHORTTREE,(IY+PANEL.VIEWFLAG) .L4 GETPORT WINSP.CPU3 - LD (RAMPAGES.BuffPg3),A + LD (RAMPAGES.BuffPg4),A GETPORT WINSP.CPU1 BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) LD HL,RAMPAGES.LEFTPANEL diff --git a/fnwork.a80 b/fnwork.a80 index 0db1930..7a4d737 100644 --- a/fnwork.a80 +++ b/fnwork.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 31.07.2025 savelij +; LAST UPDATE: 14.08.2025 savelij ;[]===========================================================[] CursUp LD A,(IY + PANEL.FILES_ALL) @@ -70,7 +70,7 @@ ScrlDn1 BIT VIEWFLAG.B_FULL,(IY + PANEL.VIEWFLAG) PUSH HL LDIR POP HL - LD DE,0x18*0x11 + LD DE,FileHDR.SIZE * NUM_FILES_PANEL ADD HL,DE LD E,IXL LD D,IXH @@ -84,7 +84,7 @@ ScrlDn1 BIT VIEWFLAG.B_FULL,(IY + PANEL.VIEWFLAG) PUSH HL LDIR POP HL - LD DE,0x18*0x11 + LD DE,FileHDR.SIZE * NUM_FILES_PANEL ADD HL,DE LD E,IXL LD D,IXH @@ -419,14 +419,14 @@ ScrlUp1 BIT VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG) PUSH HL LDIR POP HL - LD DE,0x18*0x11 + LD DE,FileHDR.SIZE * NUM_FILES_PANEL ADD HL,DE LD DE,WorkBuffer+0x10 LD C,0x0E PUSH HL LDIR POP HL - LD DE,0x18*0x11 + LD DE,FileHDR.SIZE * NUM_FILES_PANEL ADD HL,DE LD DE,WorkBuffer+0x20 LD C,0x0E @@ -1356,7 +1356,7 @@ ShowDSexit JP WaitUnpressMouse ;[]==========================================================[] -RunEXEfile: LD IX,fn_ext +RunEXEfile: LD IX,BUFFERS.fn_ext LD DE,PrevFile PUSH DE SUB A @@ -1894,7 +1894,7 @@ ViewFileSH: BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) W_FILL 88,23,130,10,COLORI.WHITE W_END LD IX,ViewStr - LD HL,ViewEditTab + LD HL,MAINTAB.ViewEditTab CALL InputLine WINDOWCLOSE RET C @@ -1938,14 +1938,12 @@ StViewFile: LD A,0x01 LD A,(IY+PANEL.FILES_ALL) OR (IY+PANEL.FILES_ALL + 1) RET Z - IFNDEF ENABLE.VIEW ; попытка загрузки плагина CALL LOADFLX4RUN DZ FILENAME.VIEW_FLX ; вывод ошибки "Плагин не найден" LD A,FNinternal.PlugNotFound JP C,DOSError - ENDIF GETPORT WINSP.CPU1 PUSH AF BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) @@ -1991,7 +1989,7 @@ StViewFile: LD A,0x01 VFlag: EQU $-1 OR A JR NZ,View1 -View: LD IX,fnview_ext +View: LD IX,BUFFERS.fnview_ext LD DE,PrevFile CALL TestEXT RET NC @@ -2021,12 +2019,7 @@ View1: CALL ResInvert LD C,WINSP.CPU1 ; окно запуска с адреса 0x4000 JR NZ,.L4 LD C,WINSP.CPU3 ; окно запуска с адреса 0xC000 -.L4 - IFDEF ENABLE.VIEW - LD A,(RAMPAGES.FNVIEW) - ELSE - LD A,(RAMPAGES.FLX) - ENDIF +.L4 LD A,(RAMPAGES.FLX) CALL Resident LD HL,0 LD (RunFLX.FLXexec),HL ; при выходе из плагина глушим адрес загрузки @@ -2061,7 +2054,7 @@ EditFileSH: BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) W_FILL 88,23,130,10,COLORI.WHITE W_END LD IX,EditStr - LD HL,ViewEditTab + LD HL,MAINTAB.ViewEditTab CALL InputLine WINDOWCLOSE RET C @@ -2105,14 +2098,12 @@ StEditFile: LD A,0x01 LD A,(IY+PANEL.FILES_ALL) OR (IY+PANEL.FILES_ALL + 1) RET Z - IFNDEF ENABLE.VIEW ; попытка загрузки плагина CALL LOADFLX4RUN DZ FILENAME.EDIT_FLX ; вывод ошибки "Плагин не найден" LD A,FNinternal.PlugNotFound JP C,DOSError - ENDIF GETPORT WINSP.CPU1 PUSH AF BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) @@ -2158,7 +2149,7 @@ StEditFile: LD A,0x01 EFlag: EQU $-1 OR A JR NZ,Edit1 -Edit: LD IX,fnedit_ext +Edit: LD IX,BUFFERS.fnedit_ext LD DE,PrevFile CALL TestEXT RET NC @@ -2188,12 +2179,7 @@ Edit1: CALL ResInvert LD C,WINSP.CPU1 ; окно запуска с адреса 0x4000 JR NZ,.L4 LD C,WINSP.CPU3 ; окно запуска с адреса 0xC000 -.L4 - IFDEF ENABLE.VIEW - LD A,(RAMPAGES.FNEDIT) - ELSE - LD A,(RAMPAGES.FLX) - ENDIF +.L4 LD A,(RAMPAGES.FLX) CALL Resident LD HL,0 LD (RunFLX.FLXexec),HL ; при выходе из плагина глушим адрес загрузки diff --git a/plugins/fneditor/feditor.a80 b/plugins/fneditor/feditor.a80 index 0f03580..f0027e2 100644 --- a/plugins/fneditor/feditor.a80 +++ b/plugins/fneditor/feditor.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 02.08.2025 savelij +; LAST UPDATE: 03.08.2025 savelij ENABLE_CODEPAGE EQU 0 @@ -391,15 +391,15 @@ FEInitScreen LD BC,0x0011 LD A,COLORP.HIGHGRAY + COLORI.BLACK CALL JUMPS.PrintPathLeft - LD HL,508 + LD HL,520 LD DE,3 LD B,COLORP.BLACK + COLORI.HIGHGRAY EXX - LD HL,558 + LD HL,568 LD DE,3 LD B,COLORP.BLACK + COLORI.HIGHGRAY EXX - LD A,DateMonthFormat.Text + LD A,DateMonthFormat.Digit JP JUMPS.CMOSPrintDateTime ;[]==========================================================[] diff --git a/plugins/fnviewer/fviewer.a80 b/plugins/fnviewer/fviewer.a80 index badac46..e9237b4 100644 --- a/plugins/fnviewer/fviewer.a80 +++ b/plugins/fnviewer/fviewer.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 02.08.2025 savelij +; LAST UPDATE: 03.08.2025 savelij LineBuffer := WorkBuffer+0x300 @@ -486,10 +486,10 @@ FVFAttrib EQU $ - STRLEN(" ") - 1 W_END SPDSS DSSF.CURDISK LD HL,WorkBuffer - ADD A,"A" + ADD A,'A' LD (HL),A INC HL - LD (HL),":" + LD (HL),':' INC HL PUSH HL SPDSS DSSF.CURDIR @@ -512,21 +512,21 @@ FVFAttrib EQU $ - STRLEN(" ") - 1 CP (HL) JR NZ,.L6 LD (DE),A - LD IX,0x0200 + LD IX,512 LD HL,WorkBuffer - LD DE,0x0034 - LD BC,0x0011 + LD DE,52 + LD BC,17 LD A,COLORP.HIGHGRAY + COLORI.BLACK CALL JUMPS.PrintPathLeft - LD HL,508 + LD HL,520 LD DE,3 LD B,COLORP.BLACK + COLORI.HIGHGRAY EXX - LD HL,558 + LD HL,568 LD DE,3 LD B,COLORP.BLACK + COLORI.HIGHGRAY EXX - LD A,DateMonthFormat.Text + LD A,DateMonthFormat.Digit JP JUMPS.CMOSPrintDateTime FVFAtributs DEFB "--ad-shr" diff --git a/readme.md b/readme.md index 9d93466..55c04a7 100644 --- a/readme.md +++ b/readme.md @@ -3,12 +3,14 @@ Flex Navigator ╨┤╨╗╤П ╨║╨╛╨╝╨┐╤М╤О╤В╨╡╤А╨░ Sprinter ╨б╨╛╨▒╤А╨░╨╜╨╜╤Л╨╡ ╤Д╨░╨╣╨╗╤Л ╨╖╨░╨▒╨╕╤А╨░╤В╤М ╨╕╨╖ ╨┐╨░╨┐╨║╨╕ fn -`FileEditor.flx 1.10:` -- ╤Г╤Б╤В╤А╨░╨╜╨╡╨╜╨╛ ╨┐╨╡╤А╨╡╨┐╤Г╤В╨░╨╜╨╜╤Л╨╡ ╨║╨╜╨╛╨┐╨║╨╕ ╨┤╨╗╤П ╨╜╨░╨╢╨░╤В╨╕╨╣ ╨╝╤Л╤И╤М╤О ╨┤╨╗╤П F7 ╨╕ F9. +`FlexNavigator 1.16.03` +- MISC ╤Д╤Г╨╜╨║╤Ж╨╕╨╕ ╨┐╨╡╤А╨╡╨╜╨╡╤Б╨╡╨╜╤Л ╨╕╨╖ 2 ╤А╨╡╨╖╨╕╨┤╨╡╨╜╤В╨░ ╨▓ 3. +- ╨┐╨╡╤А╨╡╤А╨░╤Б╨┐╤А╨╡╨┤╨╡╨╗╨╡╨╜╨╕╨╡ TAB ╤В╨░╨▒╨╗╨╕╤Ж. +- ╨▓ ╨╛╨┐╨╕╤Б╨░╨╜╨╕╨╡ Flex Navigator API ╨┤╨╛╨▒╨░╨▓╨╗╨╡╨╜╨╛ ╨╛╨┐╨╕╤Б╨░╨╜╨╕╨╡ ╨│╨╗╨╛╨▒╨░╨╗╤М╨╜╤Л╤Е + ╨┐╨╡╤А╨╡╨╝╨╡╨╜╨╜╤Л╤Е. -`FileViewer.flx 1.06:` -- ╨┤╨╛╨▒╨░╨▓╨╗╨╡╨╜╨╛ ╨┐╨╡╤А╨╡╨║╨╗╤О╤З╨╡╨╜╨╕╨╡ ╨║╨╛╨┤╨╕╤А╨╛╨▓╨║╨╕ ╨▓ ╤А╨╡╨╢╨╕╨╝╨╡ HEX ╨┐╤А╨╛╤Б╨╝╨╛╤В╤А╨░. +`FileViewer.flx 1.07` +- ╨╝╨╡╨╗╨║╨╛╨╡ ╨╕╤Б╨┐╤А╨░╨▓╨╗╨╡╨╜╨╕╨╡ ╨┐╨╛╨╖╨╕╤Ж╨╕╨╕ ╨▓╤Л╨▓╨╛╨┤╨░ ╨┤╨░╤В╤Л/╨▓╤А╨╡╨╝╨╡╨╜╨╕. -`FlexNavigaror 1.16.01:` -- ╨╕╤Б╨┐╤А╨░╨▓╨╗╨╡╨╜ ╨▓╤Л╨╗╨╡╤В ╨┐╤А╨╕ ╤Б╨╛╨╖╨┤╨░╨╜╨╕╨╕ ╨╜╨╛╨▓╨╛╨│╨╛ ╤Д╨░╨╣╨╗╨░ ╨┐╨╛ Shift+F4 ╨╕╨╗╨╕ ╨┐╤А╨╛╤Б╨╝╨╛╤В╤А ╤Б - ╨▓╨▓╨╛╨┤╨╛╨╝ ╨╕╨╝╨╡╨╜╨╕ ╨┐╨╛ Shift+F3, ╨┐╨╗╨░╨│╨╕╨╜ ╨▒╤Л╨╗ ╨╜╨╡ ╨╖╨░╨│╤А╤Г╨╢╨╡╨╜. +`FileEditor.flx 1.11` +- ╨╝╨╡╨╗╨║╨╛╨╡ ╨╕╤Б╨┐╤А╨░╨▓╨╗╨╡╨╜╨╕╨╡ ╨┐╨╛╨╖╨╕╤Ж╨╕╨╕ ╨▓╤Л╨▓╨╛╨┤╨░ ╨┤╨░╤В╤Л/╨▓╤А╨╡╨╝╨╡╨╜╨╕. diff --git a/rez2_fnconfig.a80 b/rez2_fnconfig.a80 index 19174a8..593db4c 100644 --- a/rez2_fnconfig.a80 +++ b/rez2_fnconfig.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 01.08.2025 savelij +; LAST UPDATE: 14.08.2025 savelij PALITRA.RESERV EQU PALETTE + 0x34 @@ -84,7 +84,7 @@ SaveFlg EQU $-2 LD IX,BarBlue CALL InitScrollBar CALL InitElement -SetupLoop LD IX,SetupTab +SetupLoop LD IX,REZ2TAB.SetupTab CALL CheckCoordsMouse SPDSS DSSF.SCANKEY JR Z,SetupLoop @@ -511,7 +511,7 @@ InputColor LD (ColorY),BC SUB LOW (ColText) LD (ColLen),A InpAg LD IX,ColorStr - LD HL,EmptyTab + LD HL,REZ2TAB.EmptyTab CALL InputLine POP DE POP HL diff --git a/rez2_fnfunct.a80 b/rez2_fnfunct.a80 index b4b20a8..ca4434d 100644 --- a/rez2_fnfunct.a80 +++ b/rez2_fnfunct.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 31.07.2025 savelij +; LAST UPDATE: 14.08.2025 savelij ;[]==========================================================[] CopyFilesR LD A,(IY + PANEL.FILES_ALL) @@ -11,7 +11,7 @@ CopyFilesR LD A,(IY + PANEL.FILES_ALL) LD A,(IY + PANEL.FILES_MARK) OR (IY + PANEL.FILES_MARK + 1) JP NZ,CopyMark ; есть помеченные файлы -; копирование файла/диры под курсором +; копирование файла/диры под курсором, без пометки GETPORT WINSP.CPU3 PUSH AF BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) @@ -35,12 +35,15 @@ CopyFilesR LD A,(IY + PANEL.FILES_ALL) ADD HL,DE ; *18 SET 6,H SET 7,H ; | 0xC000 - LD (AdrCopyFile),HL + LD (COPY.PathCurrFile),HL LD DE,WorkBuffer LD BC,FileHDR.SIZE LDIR POP AF SETPORT WINSP.CPU3,,0 + LD HL,CopyNextFile.FLAG_DIRCOPY + XOR A ; копировать только файлы + LD (HL),A BIT DIR.B_Dir,(IX + FileHDR.Attr) IF MARK_DIR JP NZ,COPY_DIR @@ -48,63 +51,48 @@ CopyFilesR LD A,(IY + PANEL.FILES_ALL) RET NZ ENDIF LD HL,0 - LD (CopyFiles),HL + LD (COPY.CopyFiles),HL LD L,(IX + FileHDR.SizeBytes) LD H,(IX + FileHDR.SizeBytes + 1) - LD (CopyBytes),HL + LD (COPY.CopyBytes),HL LD E,(IX + FileHDR.SizeBytes + 2) LD D,(IX + FileHDR.SizeBytes + 3) - LD (CopyBytes + 2),DE + LD (COPY.CopyBytes + 2),DE CALL ConvBytes2Pages JP CopyNxt IF MARK_DIR -; копирование диры со всем содержимым -COPY_DIR PUSH IX - PUSH IY - PUSH IX -; LD HL,(AdrCopyFile) ; адрес описателя измеряемой диры -; CALL RESIDENT.GetDirSize ; считаем и получаем размер в байтах -; EXX - CALL RESIDENT.CountingDir +; копирование диры со всем содержимым под курсором +COPY_DIR INC A + LD (HL),A ; копировать будем директориями + CALL RESIDENT.CountingDir ; измерение размера директории с файлами LD HL,JUMPS.FILES_BYTES - CALL GET_DWORD - POP HL ; адрес описателя - LD (CopyBytes),DE - LD (CopyBytes + 2),BC - PUSH DE - LD DE,FileHDR.SizeBytes - ADD HL,DE ; указатель на количество байт копирования - POP DE - CALL SET_DWORD ; занесли размер диры в байтах в описатель + LD DE,COPY.CopyBytes + LD BC,5 + LDIR ; забрали размер директории LD HL,0 - LD (CopyFiles),HL - EX DE,HL - LD D,B - LD E,C + LD (COPY.CopyFiles),HL ; количество уже скопированных файлов + CALL RESIDENT.InitCopyDirs ; инициализация путей откуда/куда + + LD HL,(COPY.CopyBytes) + LD DE,(COPY.CopyBytes + 2) CALL ConvBytes2Pages ; пересчет в количество страниц для копирования - - LD HL,(AdrCopyFile) ; адрес описателя копируемой диры - CALL RESIDENT.MkdirsDst ; создание папок на приемнике - - POP IY - POP IX - RET + JP CopyNxt ENDIF ; копирование помеченных файлов CopyMark LD L,(IY + PANEL.FILES_MARK) LD H,(IY + PANEL.FILES_MARK + 1) - LD (CopyFiles),HL + LD (COPY.CopyFiles),HL LD L,(IY + PANEL.BYTES_MARK) LD H,(IY + PANEL.BYTES_MARK + 1) - LD (CopyBytes),HL + LD (COPY.CopyBytes),HL LD L,(IY + PANEL.BYTES_MARK + 2) LD H,(IY + PANEL.BYTES_MARK + 3) - LD (CopyBytes + 2),HL + LD (COPY.CopyBytes + 2),HL ; [ ] fat32 LD A,(IY + PANEL.BYTES_MARK_H) - LD (CopyBytes + 4),A + LD (COPY.CopyBytes + 4),A GETPORT WINSP.CPU3 PUSH AF BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) @@ -118,7 +106,7 @@ CopyMark LD L,(IY + PANEL.FILES_MARK) .L2 ADD HL,BC BIT FileHDR.B_MARK,(HL) JR Z,.L2 - LD (AdrCopyFile),HL + LD (COPY.PathCurrFile),HL PUSH HL POP IX SUB A @@ -136,13 +124,15 @@ CopyLp0 BIT FileHDR.B_MARK,(IX + FileHDR.Flag) LD E,(IX + FileHDR.SizeBytes + 2) LD D,(IX + FileHDR.SizeBytes + 3) CALL ConvBytes2Pages - LD C,L - LD B,H - POP HL +; LD C,L +; LD B,H +; POP HL + POP BC ADD HL,BC - LD C,E - LD B,D - POP DE +; LD C,E +; LD B,D +; POP DE + POP BC EX DE,HL ADC HL,BC EX DE,HL @@ -197,7 +187,7 @@ CopyNxt LD IX,ProcessAll SUB C LD (PathLen),A LD IX,PathStr - LD HL,PathTab + LD HL,REZ2TAB.PathTab CALL InputLine WINDOWCLOSE RET C @@ -207,7 +197,7 @@ CopyNxt LD IX,ProcessAll PUSH IY SPDSS DSSF.INFOMEM POP IY - LD (FreeBanks),BC + LD (COPY.FreeBanks),BC LD A,B OR C LD A,ERR_DSS.NOT_ENOUGH_MEMORY @@ -225,16 +215,16 @@ CopyNxt LD IX,ProcessAll W_FILL 18,57,284,10,COLORI.WHITE W_END SUB A - LD (OverWriteFlg),A + LD (COPY.OverWriteFlg),A BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) LD HL,LeftPanel JR Z,.L4 LD HL,RightPanel .L4 LD BC,PANEL.CURR_PATH ADD HL,BC - LD (CopySrc),HL + LD (COPY.PathSrc),HL LD HL,CurPath - LD (CopyDst),HL + LD (COPY.PathDst),HL CALL PointerMouseClock PUSH IY GETPORT WINSP.CPU3 @@ -245,17 +235,25 @@ CopyNxt LD IX,ProcessAll LD A,(RAMPAGES.RIGHTPANEL) .L3 SETPORT WINSP.CPU3,,0 -; копирование файлов -CopyNextFile CALL PrnFromTo - LD IX,(AdrCopyFile) - LD L,(IX + FileHDR.SizeBytes) +; копирование файлов/директорий +CopyNextFile CALL PrintSrcDst + LD IX,(COPY.PathCurrFile) + IF MARK_DIR + BIT DIR.B_Dir,(IX + FileHDR.Attr) + JR Z,.CopyFile +; копирование директории + CALL RESIDENT.Add2ListDir ; добавление имени диры в список + JR CopyNextFile + ENDIF + +.CopyFile LD L,(IX + FileHDR.SizeBytes) LD H,(IX + FileHDR.SizeBytes + 1) LD E,(IX + FileHDR.SizeBytes + 2) LD D,(IX + FileHDR.SizeBytes + 3) - LD (ReadBytes),HL - LD (ReadBytes + 2),DE - LD (WriteBytes),HL - LD (WriteBytes + 2),DE + LD (COPY.CurrReadBytes),HL + LD (COPY.CurrReadBytes + 2),DE + LD (COPY.CurrWriteBytes),HL + LD (COPY.CurrWriteBytes + 2),DE CALL ConvBytes2Pages LD (.PagesLow),HL LD (.PagesHigh),DE @@ -270,7 +268,7 @@ CopyNextFile CALL PrnFromTo LD (IX + PROGRESSBAR.MAX_PAGES + 3),D CALL InitProgressBar CALL DrawProgressBar - LD HL,(FreeBanks) + LD HL,(COPY.FreeBanks) LD DE,0x0000 .PagesHigh EQU $-2 LD A,D @@ -285,56 +283,56 @@ CopyNextFile CALL PrnFromTo .CopyLp1 EX DE,HL .L1 LD B,E SPDSS DSSF.GETMEM - LD (MemID),A + LD (COPY.MemID),A LD HL,PagesList SPBIOS BIOSF.GETMEMBLKPAGES - LD HL,(CopySrc) ; Открываем файл источник + LD HL,(COPY.PathSrc) ; открываем файл источник SPDSS DSSF.CHDIR JP C,CopyError1 - LD HL,(AdrCopyFile) + LD HL,(COPY.PathCurrFile) INC HL LD DE,WorkBuffer PUSH DE CALL MakeDOSname POP HL - SPDSS DSSF.OPEN,,1 + SPDSS DSSF.OPEN,,FILEMODE.R ; открытие на чтение JP C,CopyError1 - LD (FHandleSrc),A - LD HL,(CopyDst) ; Открываем файл приемник + LD (COPY.FHandleSrc),A + LD HL,(COPY.PathDst) ; открываем файл приемник SPDSS DSSF.CHDIR JP C,CopyError2 - LD IX,(AdrCopyFile) - LD HL,(AdrCopyFile) + LD IX,(COPY.PathCurrFile) + LD HL,(COPY.PathCurrFile) INC HL LD DE,WorkBuffer PUSH DE CALL MakeDOSname POP HL - LD A,(OverWriteFlg) + LD A,(COPY.OverWriteFlg) OR A LD C,DSSF.CREAT_N JR Z,.L2 LD C,DSSF.CREATE .L2 LD A,(IX + FileHDR.Attr) - SPDSS - JR NC,CopyLp2 - CP 0x07 + SPDSS ; создание файла + JR NC,.CopyLp2 + CP ERR_DSS.FILE_EXISTS JP NZ,CopyError2 - CALL OverWrite -CopyLp2 LD (FHandleDst),A - LD HL,(ReadBytes) + CALL OverWrite ; файл существут, запрос на перезапись +.CopyLp2 LD (COPY.FHandleDst),A + LD HL,(COPY.CurrReadBytes) LD A,H OR L - LD HL,(ReadBytes + 2) + LD HL,(COPY.CurrReadBytes + 2) OR H OR L - JP Z,CloseFiles -ReadFile + JP Z,.CloseFiles +.ReadFile GETPORT WINSP.CPU3 PUSH AF LD HL,PagesList LD A,(HL) -ReadLp1 INC HL +.ReadLp1 INC HL PUSH HL SETPORT WINSP.CPU3,,0 SPDSS DSSF.SCANKEY @@ -342,8 +340,8 @@ ReadLp1 INC HL OR A SBC HL,DE JP Z,CopyBreak - LD HL,(ReadBytes) - LD DE,(ReadBytes + 2) + LD HL,(COPY.CurrReadBytes) + LD DE,(COPY.CurrReadBytes + 2) LD BC,0x4000 OR A SBC HL,BC @@ -351,40 +349,40 @@ ReadLp1 INC HL EX DE,HL SBC HL,BC EX DE,HL - JR C,ReadEnd - LD (ReadBytes),HL - LD (ReadBytes + 2),DE + JR C,.ReadEnd + LD (COPY.CurrReadBytes),HL + LD (COPY.CurrReadBytes + 2),DE LD HL,0xC000 LD DE,0x4000 - LD A,(FHandleSrc) + LD A,(COPY.FHandleSrc) SPDSS DSSF.READ CALL NextProcess POP HL LD A,(HL) CP 0xFF - JR NZ,ReadLp1 + JR NZ,.ReadLp1 POP AF SETPORT WINSP.CPU3,,0 - JR WriteFile + JR .WriteFile ; !FIXIT сделать так: -ReadEnd: LD HL,0xC000 - LD DE,(ReadBytes) +.ReadEnd: LD HL,0xC000 + LD DE,(COPY.CurrReadBytes) LD A,D OR E - JR Z,.L1 - LD A,(FHandleSrc) + JR Z,.L3 + LD A,(COPY.FHandleSrc) SPDSS DSSF.READ CALL NextProcess -.L1 POP HL +.L3 POP HL POP AF SETPORT WINSP.CPU3,,0 -WriteFile +.WriteFile GETPORT WINSP.CPU3 PUSH AF LD HL,PagesList LD A,(HL) -WriteL1 INC HL +.WriteL1 INC HL PUSH HL SETPORT WINSP.CPU3,,0 SPDSS DSSF.SCANKEY @@ -392,8 +390,8 @@ WriteL1 INC HL OR A SBC HL,DE JP Z,CopyBreak - LD HL,(WriteBytes) - LD DE,(WriteBytes + 2) + LD HL,(COPY.CurrWriteBytes) + LD DE,(COPY.CurrWriteBytes + 2) LD BC,0x4000 OR A SBC HL,BC @@ -401,98 +399,114 @@ WriteL1 INC HL EX DE,HL SBC HL,BC EX DE,HL - JR C,WriteEnd - LD (WriteBytes),HL - LD (WriteBytes + 2),DE + JR C,.WriteEnd + LD (COPY.CurrWriteBytes),HL + LD (COPY.CurrWriteBytes + 2),DE LD HL,0xC000 LD DE,0x4000 - LD A,(FHandleDst) + LD A,(COPY.FHandleDst) SPDSS DSSF.WRITE JP C,CopyError3 CALL NextProcess POP HL LD A,(HL) CP 0xFF - JR NZ,WriteL1 + JR NZ,.WriteL1 POP AF SETPORT WINSP.CPU3,,0 - LD HL,(ReadBytes) + LD HL,(COPY.CurrReadBytes) LD A,H OR L - LD HL,(ReadBytes + 2) + LD HL,(COPY.CurrReadBytes + 2) OR H OR L - JR Z,CloseFiles - JP ReadFile + JR Z,.CloseFiles + JP .ReadFile ; !FIXIT сделать так: -WriteEnd: LD HL,0xC000 - LD DE,(WriteBytes) +.WriteEnd: LD HL,0xC000 + LD DE,(COPY.CurrWriteBytes) LD A,D OR E - JR Z,.L1 - LD A,(FHandleDst) + JR Z,.L4 + LD A,(COPY.FHandleDst) SPDSS DSSF.WRITE JP C,CopyError3 CALL NextProcess -.L1 POP HL +.L4 POP HL POP AF SETPORT WINSP.CPU3,,0 -CloseFiles LD A,(FHandleSrc) +.CloseFiles LD A,(COPY.FHandleSrc) SPDSS DSSF.GET_D_T - LD A,(FHandleDst) + LD A,(COPY.FHandleDst) SPDSS DSSF.PUT_D_T - LD A,(FHandleDst) + LD A,(COPY.FHandleDst) SPDSS DSSF.CLOSE -CloseFile1 LD A,(FHandleSrc) +.CloseFile1 LD A,(COPY.FHandleSrc) SPDSS DSSF.CLOSE - LD A,(MemID) + LD A,(COPY.MemID) SPDSS DSSF.FREEMEM - LD IX,(AdrCopyFile) + LD IX,(COPY.PathCurrFile) RES FileHDR.B_MARK,(IX + FileHDR.Flag) - LD HL,(CopyBytes) + LD HL,(COPY.CopyBytes) LD E,(IX + FileHDR.SizeBytes) LD D,(IX + FileHDR.SizeBytes + 1) OR A SBC HL,DE - LD (CopyBytes),HL - LD HL,(CopyBytes+2) + LD (COPY.CopyBytes),HL + LD HL,(COPY.CopyBytes+2) LD E,(IX + FileHDR.SizeBytes + 2) LD D,(IX + FileHDR.SizeBytes + 3) SBC HL,DE - LD (CopyBytes+2),HL - LD HL,(CopyFiles) + LD (COPY.CopyBytes+2),HL + LD HL,(COPY.CopyFiles) LD A,H OR L - JR Z,CopyEnd + JR Z,CopyEnd ; файлы кончились? DEC HL - LD (CopyFiles),HL + LD (COPY.CopyFiles),HL LD A,H OR L - JR Z,CopyEnd - LD HL,(AdrCopyFile) + JR Z,CopyEnd ; файлы кончились? + LD HL,(COPY.PathCurrFile) LD DE,FileHDR.SIZE -.L1 ADD HL,DE - BIT FileHDR.B_MARK,(HL) - JR Z,.L1 - LD (AdrCopyFile),HL +.L5 ADD HL,DE ; следующий описатель + IF MARK_DIR + LD A,(.FLAG_DIRCOPY) + AND A ; копируем только файлы? + JR Z,.L6 +; из-за копирования директорий файлы копируем все + INC HL + LD A,(HL) + AND A + JR NZ,.L7 ; файлы в дире еще не кончились +; файлы в дире кончились, смотреть оставшиеся диры в списке + CALL RESIDENT.CopyDir + ENDIF + +.L6 BIT FileHDR.B_MARK,(HL) + JR Z,.L5 +.L7 LD (COPY.PathCurrFile),HL JP CopyNextFile +.FLAG_DIRCOPY DB 0 + +; завершение копирования CopyEnd POP AF SETPORT WINSP.CPU3,,0 POP IY WINDOWCLOSE - LD HL,(CopyFiles) + LD HL,(COPY.CopyFiles) LD (IY + PANEL.FILES_MARK),L LD (IY + PANEL.FILES_MARK + 1),H - LD HL,(CopyBytes) + LD HL,(COPY.CopyBytes) LD (IY + PANEL.BYTES_MARK),L LD (IY + PANEL.BYTES_MARK + 1),H - LD HL,(CopyBytes + 2) + LD HL,(COPY.CopyBytes + 2) LD (IY + PANEL.BYTES_MARK + 2),L LD (IY + PANEL.BYTES_MARK + 3),H ; [ ] fat32 - LD A,(CopyBytes + 4) + LD A,(COPY.CopyBytes + 4) LD (IY + PANEL.BYTES_MARK_H),A PUSH IY BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) @@ -529,16 +543,16 @@ CopyError3: ; PUSH AF LD A,D SETPORT WINSP.CPU3,,0 - LD A,(FHandleDst) + LD A,(COPY.FHandleDst) SPDSS DSSF.CLOSE CALL CopyErrorFileDelete POP AF CopyError2 PUSH AF - LD A,(FHandleSrc) + LD A,(COPY.FHandleSrc) SPDSS DSSF.CLOSE POP AF CopyError1 PUSH AF - LD A,(MemID) + LD A,(COPY.MemID) SPDSS DSSF.FREEMEM POP AF CALL DOSError @@ -547,18 +561,18 @@ CopyError1 PUSH AF CopyBreak POP HL POP AF SETPORT WINSP.CPU3,,0 - LD A,(FHandleDst) + LD A,(COPY.FHandleDst) SPDSS DSSF.CLOSE - LD A,(FHandleSrc) + LD A,(COPY.FHandleSrc) SPDSS DSSF.CLOSE - LD A,(MemID) + LD A,(COPY.MemID) SPDSS DSSF.FREEMEM CALL CopyErrorFileDelete JP CopyEnd CopyErrorFileDelete: - LD IX,(AdrCopyFile) - LD HL,(AdrCopyFile) + LD IX,(COPY.PathCurrFile) + LD HL,(COPY.PathCurrFile) INC HL LD DE,WorkBuffer PUSH DE @@ -586,7 +600,7 @@ OverWrite CALL PointerMousePointer W_BUTTON 208,38,56,14 W_TEXT 220,41,COLORP.HIGHGRAY,"Cancel" W_END - LD HL,(CopyDst) + LD HL,(COPY.PathDst) LD DE,WorkBuffer SUB A .L1 LDI @@ -598,7 +612,7 @@ OverWrite CALL PointerMousePointer JR Z,.L2 LD (DE),A INC DE -.L2 LD HL,(AdrCopyFile) +.L2 LD HL,(COPY.PathCurrFile) INC HL CALL MakeDOSname LD IX,0x00F8 @@ -607,7 +621,7 @@ OverWrite CALL PointerMousePointer LD BC,114 LD A,COLORP.HIGHGRAY + COLORI.BLACK CALL PrintPathCentr -OvWrtLp LD IX,OverWrtTab +OvWrtLp LD IX,REZ2TAB.OverWrtTab CALL CheckCoordsMouse SPDSS DSSF.SCANKEY JR Z,OvWrtLp @@ -639,10 +653,10 @@ OvrJump JP (HL) OverWrtAll LD A,0x01 - LD (OverWriteFlg),A + LD (COPY.OverWriteFlg),A OverWrtFile CALL PointerMouseClock - LD IX,(AdrCopyFile) - LD HL,(AdrCopyFile) + LD IX,(COPY.PathCurrFile) + LD HL,(COPY.PathCurrFile) INC HL LD DE,WorkBuffer PUSH DE @@ -653,7 +667,7 @@ OverWrtFile CALL PointerMouseClock RET OverSkip CALL PointerMouseClock - LD IX,(AdrCopyFile) + LD IX,(COPY.PathCurrFile) LD L,(IX + FileHDR.SizeBytes) LD H,(IX + FileHDR.SizeBytes + 1) LD E,(IX + FileHDR.SizeBytes + 2) @@ -676,41 +690,42 @@ OverSkip CALL PointerMouseClock LD (IX + PROGRESSBAR.CURR_PAGE + 2),L LD (IX + PROGRESSBAR.CURR_PAGE + 3),H CALL DrawProgressBar - LD HL,CloseFile1 + LD HL,CopyNextFile.CloseFile1 EX (SP),HL RET OverExit INC SP INC SP - LD IX,(AdrCopyFile) + LD IX,(COPY.PathCurrFile) BIT FileHDR.B_MARK,(IX + FileHDR.Flag) - JP Z,CloseFile1 - LD A,(FHandleSrc) + JP Z,CopyNextFile.CloseFile1 + LD A,(COPY.FHandleSrc) SPDSS DSSF.CLOSE - LD A,(MemID) + LD A,(COPY.MemID) SPDSS DSSF.FREEMEM POP IY JP CopyEnd ;-------------------------------------------------------------- -AdrCopyFile DW 0x0000 ; Адрес описателя текущего файла/диры -CopySrc DW 0x0000 ; Адрес пути откуда -CopyDst DW 0x0000 ; Адрес пути куда -CopyFiles DW 0x0000 ; Количество копируемых файлов -CopyBytes DB 5 DUP 0 ; Количество копируемых байтов -OverWriteFlg DB 0x00 ; Флаг перезаписи файлов -FreeBanks DW 0x0000 ; Количество свободных банков -ReadBytes DD 0 ; Длина читаемого файла -WriteBytes DD 0 ; Длина записываемого файла -FHandleSrc DB 0x00 ; Файл источник -FHandleDst DB 0x00 ; Файл приемник -MemID DB 0x00 ; Индефик.памяти под копирование +COPY +.PathCurrFile DW 0 ; Адрес описателя текущего файла/диры +.PathSrc DW 0 ; Адрес пути источника +.PathDst DW 0 ; Адрес пути приемника +.CopyFiles DW 0 ; Количество копируемых файлов +.CopyBytes DB 5 DUP 0 ; Количество копируемых байтов +.OverWriteFlg DB 0 ; Флаг перезаписи файлов +.FreeBanks DW 0 ; Количество свободных банков +.CurrReadBytes DD 0 ; Длина читаемого файла +.CurrWriteBytes DD 0 ; Длина записываемого файла +.FHandleSrc DB 0 ; Файл источник +.FHandleDst DB 0 ; Файл приемник +.MemID DB 0 ; Идентификатор памяти под копирование ;-------------------------------------------------------------- ; На входе: ; DEHL - количество байт ; На выходе: -; HL - количество страниц +; HL - количество страниц 4294967295=FFFFFFFF ; 1028975 FB36F ; 231 E7 1 ; 59232 E760 4 @@ -720,20 +735,21 @@ MemID DB 0x00 ; ; 12652 316C 1 ; 14119 3727 1 ; 12546 3102 1 +; DEHL -> (((DEHL / 100) * 4) / 0x100) + ((L != 0) ? DE++ : DE) ConvBytes2Pages: LD A,H LD H,L - LD L,0x00 - SLA A + LD L,0 + ADD A,A RL E RL D - RL L ; LDEA * 2 - SLA A + RL L + ADD A,A RL E RL D - RL L ; LDEA * 2 + RL L OR H - LD H,0x00 + LD H,0 EX DE,HL JR Z,.L1 INC HL @@ -743,7 +759,7 @@ ConvBytes2Pages: INC DE RET -PrnFromTo LD HL,(CopySrc) +PrintSrcDst LD HL,(COPY.PathSrc) LD DE,WorkBuffer SUB A .L1 LDI @@ -755,10 +771,10 @@ PrnFromTo LD HL,(CopySrc) JR Z,.L2 LD (DE),A INC DE -.L2 LD HL,(AdrCopyFile) +.L2 LD HL,(COPY.PathCurrFile) INC HL CALL MakeDOSname - LD HL,(CopyDst) + LD HL,(COPY.PathDst) LD DE,WorkBuffer+0x100 SUB A .L3 LDI @@ -770,7 +786,7 @@ PrnFromTo LD HL,(CopySrc) JR Z,.L4 LD (DE),A INC DE -.L4 LD HL,(AdrCopyFile) +.L4 LD HL,(COPY.PathCurrFile) INC HL CALL MakeDOSname MAKEWINDOW WINSUBOBJ.WOBIND @@ -783,7 +799,7 @@ PrnFromTo LD HL,(CopySrc) LD A,COLORP.HIGHGRAY + COLORI.BLACK CALL PrintPathLeft LD IX,0x0100 - LD HL,WorkBuffer+0x100 + LD HL,WorkBuffer + 0x100 LD DE,204 LD BC,107 LD A,COLORP.HIGHGRAY + COLORI.BLACK @@ -957,7 +973,7 @@ RNfile EQU $ - STRLEN(" ") - 2 W_FILL 62,27,130,10,COLORI.WHITE W_END LD IX,NameStr - LD HL,ReNameTab + LD HL,REZ2TAB.ReNameTab CALL InputLine WINDOWCLOSE RET C @@ -1379,7 +1395,7 @@ MakeDIRR CALL ResInvert W_FILL 88,23,130,10,COLORI.WHITE W_END LD IX,MakeDIRStr - LD HL,MakeDIRTab + LD HL,REZ2TAB.MakeDIRTab CALL InputLine WINDOWCLOSE RET C @@ -1824,7 +1840,7 @@ DelLp0 LD IX,0x00F8 LD BC,106 LD A,COLORP.HIGHGRAY + COLORI.BLACK CALL PrintPathCentr -DelLoop LD IX,DeleteTab +DelLoop LD IX,REZ2TAB.DeleteTab CALL CheckCoordsMouse SPDSS DSSF.SCANKEY JR Z,DelLoop @@ -2417,7 +2433,7 @@ QuitConfirmWin W_BUTTON 120,32,72,14 W_TEXT 150,35,COLORP.HIGHGRAY,"No" W_END -.Loop LD IX,QuitTab +.Loop LD IX,REZ2TAB.QuitTab CALL CheckCoordsMouse SPDSS DSSF.SCANKEY JR Z,.Loop diff --git a/rez2_fntab1.a80 b/rez2_fntab.a80 similarity index 68% rename from rez2_fntab1.a80 rename to rez2_fntab.a80 index dd44367..4133c8a 100644 --- a/rez2_fntab1.a80 +++ b/rez2_fntab.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 01.08.2025 savelij +; LAST UPDATE: 14.08.2025 savelij ;[]==========================================================[] ; Формат таблицы @@ -30,8 +30,9 @@ ; +0C 2 Адрес обработчика при нажатом огне (лев) ; +0E 2 Адрес обработчика при нажатом огне (прав) +REZ2TAB ;[]==========================================================[] -SetupTab: DW 106,246, 85,133,%0000000000000000,0,NewElement,0 +.SetupTab: DW 106,246, 85,133,%0000000000000000,0,NewElement,0 DW 114,130,146,155,%0000000000000000,0,ChActivatePan,0 DW 114,130,164,173,%0000000000000000,0,ChSavePan,0 DW 274,290, 87, 95,%0000000000000011,0,DecRED,0 @@ -53,43 +54,7 @@ SetupTab: DW 106,246, 85,133,%0000000000000000,0,NewElement,0 DW 0x8000 ;[]===============================================================[] -FileInfoTab: DW 284,356,160,174,%0000000000100001,0,FileInfoExt,0 - DW 0,240, 0,256,%0000000000100000,0,FileInfoExt,0 - DW 400,640, 0,256,%0000000000100000,0,FileInfoExt,0 - DW 0,640, 0, 80,%0000000000100000,0,FileInfoExt,0 - DW 0,640,178,256,%0000000000100000,0,FileInfoExt,0 - DW 0x8000 - -;[]===============================================================[] -PrintFTab: DW 284,356,128,142,%0000000000000001,0,StopPrint,0 - DW 0x8000 - -;[]===============================================================[] -SysInfoTab: DW 284,356,160,174,%0000000000100001,0,SysInfoExt,0 - DW 0,224, 0,256,%0000000000100000,0,SysInfoExt,0 - DW 416,640, 0,256,%0000000000100000,0,SysInfoExt,0 - DW 0,640, 0, 64,%0000000000100000,0,SysInfoExt,0 - DW 0,640,178,256,%0000000000100000,0,SysInfoExt,0 - DW 0x8000 - -;[]===============================================================[] -DiskInfoTab: DW 284,356,160,174,%0000000000100001,0,DiskInfoR.Ext,0 - DW 0,192, 0,256,%0000000000100000,0,DiskInfoR.Ext,0 - DW 448,640, 0,256,%0000000000100000,0,DiskInfoR.Ext,0 - DW 0,640, 0, 80,%0000000000100000,0,DiskInfoR.Ext,0 - DW 0,640,178,256,%0000000000100000,0,DiskInfoR.Ext,0 - DW 0x8000 - -;[]===============================================================[] -VersionTab: DW 284,356,157,171,%0000000000100001,0,VersionExt,0 - DW 0,192, 0,256,%0000000000100000,0,VersionExt,0 - DW 448,640, 0,256,%0000000000100000,0,VersionExt,0 - DW 0,640, 0, 64,%0000000000100000,0,VersionExt,0 - DW 0,640,176,256,%0000000000100000,0,VersionExt,0 - DW 0x8000 - -;[]===============================================================[] -PathTab: DW 240,312,123,137,%0000000000000001,0,InputLine.InputLineExitOk,0 +.PathTab: DW 240,312,123,137,%0000000000000001,0,InputLine.InputLineExitOk,0 DW 328,400,123,137,%0000000000000001,0,InputLine.InputLineExitCancel,0 DW 0, 96, 0,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 DW 544,640, 0,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 @@ -98,7 +63,7 @@ PathTab: DW 240,312,123,137,%0000000000000001,0,InputLine.InputLineExitOk,0 DW 0x8000 ;[]===============================================================[] -OverWrtTab: DW 196,252,126,140,%0000000100100001,0,OverWrtFile,0 +.OverWrtTab: DW 196,252,126,140,%0000000100100001,0,OverWrtFile,0 DW 260,316,126,140,%0000000100100001,0,OverWrtAll,0 DW 324,380,126,140,%0000000100100001,0,OverSkip,0 DW 388,444,126,140,%0000000100100001,0,OverExit,0 @@ -109,7 +74,7 @@ OverWrtTab: DW 196,252,126,140,%0000000100100001,0,OverWrtFile,0 DW 0x8001 ;[]===============================================================[] -ReNameTab: DW 240,312,123,137,%0000000000000001,0,InputLine.InputLineExitOk,0 +.ReNameTab: DW 240,312,123,137,%0000000000000001,0,InputLine.InputLineExitOk,0 DW 328,400,123,137,%0000000000000001,0,InputLine.InputLineExitCancel,0 DW 0,208, 0,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 DW 432,640, 0,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 @@ -118,7 +83,7 @@ ReNameTab: DW 240,312,123,137,%0000000000000001,0,InputLine.InputLineExitOk,0 DW 0x8000 ;[]===============================================================[] -MakeDIRTab: DW 240,312,123,137,%0000000000000001,0,InputLine.InputLineExitOk,0 +.MakeDIRTab: DW 240,312,123,137,%0000000000000001,0,InputLine.InputLineExitOk,0 DW 328,400,123,137,%0000000000000001,0,InputLine.InputLineExitCancel,0 DW 0,200, 0,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 DW 440,640, 0,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 @@ -127,7 +92,7 @@ MakeDIRTab: DW 240,312,123,137,%0000000000000001,0,InputLine.InputLineExitOk,0 DW 0x8000 ;[]===============================================================[] -DeleteTab: DW 196,252,118,132,%0000000100100001,0,DelDelete,0 +.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 @@ -138,7 +103,7 @@ DeleteTab: DW 196,252,118,132,%0000000100100001,0,DelDelete,0 DW 0x8000 ;[]===============================================================[] -QuitTab: +.QuitTab: DW 240,312,120,134,%0000000000100001,0,QuitConfirmWin.OK,0 DW 328,400,120,134,%0000000000100001,0,QuitConfirmWin.Abort,0 DW 0,208, 0,256,%0000000000100000,0,QuitConfirmWin.Abort,0 @@ -147,5 +112,5 @@ QuitTab: DW 0,640,138,256,%0000000000100000,0,QuitConfirmWin.Abort,0 DW 0x8000 -EmptyTab: DW 0,640, 0,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 +.EmptyTab: DW 0,640, 0,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 DW 0x8000 diff --git a/rez3_fnmark.a80 b/rez3_fnmark.a80 index 4ed96e8..1e3a848 100644 --- a/rez3_fnmark.a80 +++ b/rez3_fnmark.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 01.08.2025 savelij +; LAST UPDATE: 14.08.2025 savelij ;[]==========================================================[] MarkFileR LD A,(IY+PANEL.FILES_ALL) @@ -260,7 +260,7 @@ SelectGroup: LD (SelMode),A W_FILL 72,23,130,10,COLORI.WHITE W_END LD IX,SMaskStr - LD HL,SMaskTab + LD HL,REZ3TAB.SMaskTab CALL InputLine WINDOWCLOSE RET C @@ -680,20 +680,102 @@ SUB_SIZE: EX AF,AF' ; [ ] fat32 RET IF MARK_DIR -; подсчет в байтах размера отмеченной директории -; HL - адрес описателя диры в странице панели которую мерять -CountingDirR +BUF_MARKDIR +.FILES_MASK DZ "*.*" ; маска файлов +.RET_DIR DZ ".. " ; для выхода из директории +.DIR_NAME DZ " " ; имя текущей директории -.OLDPATH EQU WorkBuffer + 0x300 ; сохраненный текущий путь -.CURRPATH EQU WorkBuffer + 0x200 ; временной текущий путь +; копирование директории +CopyDirR PUSH IX + PUSH IY + GETPORT WINSP.CPU3 + PUSH AF + LD A,(RAMPAGES.FLX) + SETPORT WINSP.CPU3,,0 +.EXIT POP AF + SETPORT WINSP.CPU3,,0 + POP IY + POP IX + RET + +; добавление имени директории в список и/или вход/выход +Add2ListDirR PUSH IX PUSH IY - PUSH HL - PUSH BC + GETPORT WINSP.CPU3 + PUSH AF + LD A,(RAMPAGES.FLX) + SETPORT WINSP.CPU3,,0 + PUSH IX + POP DE + LD HL,FileHDR.Name + ADD HL,DE ; смещение до имени в описателе + LD DE,BUF_MARKDIR.DIR_NAME + PUSH DE + LD BC,FileHDR.Name_Size + LDIR ; забрали имя диры + EX DE,HL + CALL .CUTOFFSPACES ; отсечение пробелов + +; выход +.EXIT POP AF + SETPORT WINSP.CPU3,,0 + POP IY + POP IX + RET + +; отсечение пробелов в имени +.CUTOFFSPACES LD A,' ' +.COS2 DEC HL + CP (HL) + JR Z,.COS2 + INC HL + LD (HL),0 + RET + +; добавление имени диры ".." для выхода в предыдущую диру +.ADD_2DOT PUSH HL + LD HL,BUF_MARKDIR.RET_DIR + LD DE,(BUFFERS.CURR_DIRNAME) + LD BC,FFIRST.Name_Size + LDIR + LD (BUFFERS.CURR_DIRNAME),DE + POP HL + RET + +; добавление имени в строку пути +; HL - куда добавлять (хвост текущего пути) +; DE - откуда имя брать +.ADDNAME2PATH CALL .CHECK_BSLASH + LD (HL),'\\' + INC HL + EX DE,HL +; копирование имени из буфера +.COPYNAME2PATH XOR A +.CNP2 CP (HL) + JR Z,.CNP1 + LDI + JR .CNP2 + +.CNP1 LD (DE),A + RET + +; проверка на BACKSLASH +.CHECK_BSLASH DEC HL + LD A,(HL) + CP '\\' + RET Z + INC HL + RET + +; подсчет в байтах размера отмеченной директории +; IX - адрес описателя диры в странице панели которую мерять +CountingDirR PUSH IX + PUSH IY GETPORT WINSP.CPU3 PUSH AF ; текущий номер страницы - PUSH HL + PUSH IX BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) LD A,(RAMPAGES.LEFTPANEL) JR Z,.L1 @@ -708,10 +790,10 @@ CountingDirR LD (JUMPS.FILES_BYTES + 2),HL ; обнуление размера диры LD (JUMPS.FILES_COUNT),HL ; обнуление количества файлов LD HL,CPU3 - LD (.CURR_DIRNAME),HL + LD (BUFFERS.CURR_DIRNAME),HL ; сохранение текущего пути для возврата SPDSS DSSF.CURDISK - LD HL,.OLDPATH ; сохраненый путь для возврата + LD HL,BUFFERS.OLDPATH ; сохраненый путь для возврата ADD A,'A' LD (HL),A INC HL @@ -723,7 +805,7 @@ CountingDirR ; вход в директорию LD HL,FileHDR.Name ADD HL,DE - LD DE,.DIR_NAME + LD DE,BUF_MARKDIR.DIR_NAME PUSH DE LD BC,FileHDR.Name_Size LDIR ; забрали имя диры для измерения @@ -731,10 +813,10 @@ CountingDirR SETPORT WINSP.CPU3,,0 CALL .ADD_2DOT ; для возврата в предыдущую диру POP HL - LD DE,(.CURR_DIRNAME) + LD DE,(BUFFERS.CURR_DIRNAME) LD BC,FileHDR.Name_Size LDIR ; имя диры для входа - LD (.CURR_DIRNAME),DE + LD (BUFFERS.CURR_DIRNAME),DE XOR A LD (DE),A CALL .SET_PATH ; установка текущего пути @@ -755,7 +837,7 @@ CountingDirR JR Z,.END_COUNT CALL .GET_NAME CALL .GET_NAME - LD HL,(.CURR_DIRNAME) + LD HL,(BUFFERS.CURR_DIRNAME) LD DE,-FileHDR.Name_Size ADD HL,DE LD A,(HL) @@ -768,31 +850,29 @@ CountingDirR ; возврат текущего пути .END_COUNT POP AF SETPORT WINSP.CPU3,,0 - LD HL,.OLDPATH ; сохраненый путь для возврата + LD HL,BUFFERS.OLDPATH ; сохраненый путь для возврата SPDSS DSSF.CHDIR - POP BC - POP HL POP IY POP IX RET ; выход в предыдущую диру -.GET_NAME LD HL,(.CURR_DIRNAME) +.GET_NAME LD HL,(BUFFERS.CURR_DIRNAME) LD (HL),0 LD DE,-FileHDR.Name_Size ADD HL,DE - LD (.CURR_DIRNAME),HL + LD (BUFFERS.CURR_DIRNAME),HL RET .OUT_DIR DEC IXH ; предыдущий уровень диры - LD HL,.RET_DIR + LD HL,BUF_MARKDIR.RET_DIR JR .SP1 ; переход в диру из списка -.SET_PATH LD HL,(.CURR_DIRNAME) +.SET_PATH LD HL,(BUFFERS.CURR_DIRNAME) LD DE,-FileHDR.Name_Size ADD HL,DE - LD DE,.DIR_NAME + LD DE,BUF_MARKDIR.DIR_NAME PUSH DE LD BC,FFIRST.Name_Size LDIR @@ -800,7 +880,7 @@ CountingDirR .SP1 PUSH IX SPDSS DSSF.CHDIR SPDSS DSSF.CURDISK - LD HL,.CURRPATH + LD HL,BUFFERS.CURRPATHSRC ADD A,'A' LD (HL),A INC HL @@ -812,11 +892,11 @@ CountingDirR ; добавление имени диры ".." для выхода в предыдущую диру .ADD_2DOT PUSH HL - LD HL,.RET_DIR - LD DE,(.CURR_DIRNAME) + LD HL,BUF_MARKDIR.RET_DIR + LD DE,(BUFFERS.CURR_DIRNAME) LD BC,FFIRST.Name_Size LDIR - LD (.CURR_DIRNAME),DE + LD (BUFFERS.CURR_DIRNAME),DE POP HL RET @@ -838,10 +918,10 @@ CountingDirR CP '.' ; . и .. пропускаем JR Z,.L5 ; для диры копируем имя в табличку - LD DE,(.CURR_DIRNAME) + LD DE,(BUFFERS.CURR_DIRNAME) LD BC,FFIRST.Name_Size LDIR - LD (.CURR_DIRNAME),DE + LD (BUFFERS.CURR_DIRNAME),DE INC IXL JR .L5 @@ -851,10 +931,7 @@ CountingDirR ADD HL,DE CALL GET_DWORD ; взять размер из описателя LD HL,JUMPS.FILES_BYTES - PUSH HL - CALL BCDEHLP ; добавили к текущему размеру - POP HL - CALL SET_DWORD ; положили обратно + CALL HLPBCDE ; добавили к текущему размеру LD HL,(JUMPS.FILES_COUNT) INC HL LD (JUMPS.FILES_COUNT),HL ; инкремент количества файлов @@ -869,8 +946,8 @@ CountingDirR DIR.M_Hidden + \ DIR.M_ReadOnly + \ DIR.M_Dir -.FFF1 LD HL,.FILES_MASK - LD DE,.OLDPATH +.FFF1 LD HL,BUF_MARKDIR.FILES_MASK + LD DE,BUFFERS.OLDPATH PUSH DE PUSH IX SPDSS DSSF.F_FIRST,0 @@ -879,7 +956,7 @@ CountingDirR RET ; поиск следующего описателя -.F_NEXT LD DE,.OLDPATH +.F_NEXT LD DE,BUFFERS.OLDPATH PUSH DE PUSH IX SPDSS DSSF.F_NEXT @@ -887,34 +964,103 @@ CountingDirR POP HL RET -;.FILES_SIZE DD 0 -;.FILES_COUNT DW 0 -.FILES_MASK DZ "*.*" -.RET_DIR DZ ".. " -.DIR_NAME DZ " " -.CURR_DIRNAME DW 0 +; инициализация копирования директории с содержимым +InitCopyDirsR PUSH IX + PUSH IY + GETPORT WINSP.CPU3 + PUSH AF + BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + LD HL,LeftPanel ; для пути откуда копировать + LD DE,RightPanel ; для пути куда копировать + LD A,(RAMPAGES.LEFTPANEL) ; из какой страницы панели брать путь + JR Z,.L1 + LD HL,RightPanel ; для пути откуда копировать + LD DE,LeftPanel ; для пути куда копировать + LD A,(RAMPAGES.RIGHTPANEL) ; из какой страницы панели брать путь +.L1 +; включаем пагу с директорией текущей панели + PUSH HL + SETPORT WINSP.CPU3,,0 + LD HL,PANEL.CURR_PATH + ADD HL,DE ; откуда путь приемника взять + LD DE,BUFFERS.CURRPATHDST ; буфер пути приемника + CALL .COPYNAME2PATH + LD (BUFFERS.ENDPATHDST),DE ; адрес хвоста пути приемника +; копирование имени директории для копирования + PUSH IX + POP DE + LD HL,FileHDR.Name + ADD HL,DE + LD DE,BUF_MARKDIR.DIR_NAME + LD BC,FileHDR.Name_Size + LDIR ; забрали имя диры для копирования + EX DE,HL + CALL .CUTOFFSPACES ; отсечение пробелов +; перенос текущего пути источника + POP DE + LD HL,PANEL.CURR_PATH + ADD HL,DE ; откуда путь приемника взять + LD DE,BUFFERS.CURRPATHSRC + CALL .COPYNAME2PATH ; скопировали путь источника + LD (BUFFERS.ENDPATHSRC),DE ; адрес хвоста пути источника +; добавление имени диры для копирования в путь источника + LD HL,(BUFFERS.ENDPATHSRC) + LD DE,BUF_MARKDIR.DIR_NAME + CALL .ADDNAME2PATH + LD (BUFFERS.ENDPATHSRC),DE ; адрес хвоста пути источника +; добавление имени диры для копирования в путь приемника + LD HL,(BUFFERS.ENDPATHDST) + LD DE,BUF_MARKDIR.DIR_NAME + CALL .ADDNAME2PATH + LD (BUFFERS.ENDPATHDST),DE + XOR A + LD (BUFFERS.LEVEL_DIR),A +; выход + POP AF + SETPORT WINSP.CPU3,,0 + POP IY + POP IX + RET -; подсчет размера директории -; На входе: -; HL - адрес описателя диры в странице панели которую мерять -; На выходе: -; BCDE' - размер в байтах -;GetDirSizeR CALL CountingDirR -; LD HL,JUMPS.FILES_BYTES -; CALL GET_DWORD -; EXX -; RET +; добавление имени в строку пути +; HL - куда добавлять (хвост текущего пути) +; DE - откуда имя брать +.ADDNAME2PATH CALL .CHECK_BSLASH + LD (HL),'\\' + INC HL + EX DE,HL +; копирование имени из буфера +.COPYNAME2PATH XOR A +.CNP2 CP (HL) + JR Z,.CNP1 + LDI + JR .CNP2 + +.CNP1 LD (DE),A + RET + +;.NAME2DIRNAME + +; проверка на BACKSLASH +.CHECK_BSLASH DEC HL + LD A,(HL) + CP '\\' + RET Z + INC HL + RET + +; отсечение пробелов в имени +.CUTOFFSPACES LD A,' ' +.COS2 DEC HL + CP (HL) + JR Z,.COS2 + INC HL + LD (HL),0 + RET ; создание папок на приемнике ; HL - адрес описателя диры в странице панели которую копировать -MkdirsDstR - -.OLDPATH EQU WorkBuffer + 0x300 ; сохраненный текущий путь -.CURRPATHSRC EQU WorkBuffer + 0x200 ; временной текущий путь источника -.CURRPATHDST EQU WorkBuffer + 0x100 ; временной текущий путь приемника -.FINDBUF EQU WorkBuffer - - PUSH IX +MkdirsDstRR PUSH IX PUSH IY GETPORT WINSP.CPU3 PUSH AF @@ -931,12 +1077,12 @@ MkdirsDstR SETPORT WINSP.CPU3,,0 LD HL,PANEL.CURR_PATH ADD HL,DE ; откуда путь приемника взять - LD DE,.CURRPATHDST ; буфер пути приемника + LD DE,BUFFERS.CURRPATHDST ; буфер пути приемника CALL .COPYNAME2PATH - LD (.ENDPATHDST),DE ; адрес хвоста пути приемника + LD (BUFFERS.ENDPATHDST),DE ; адрес хвоста пути приемника ; сохранение текущего пути для возврата SPDSS DSSF.CURDISK - LD HL,.OLDPATH ; сохраненный путь для возврата + LD HL,BUFFERS.OLDPATH ; сохраненный путь для возврата ADD A,'A' LD (HL),A INC HL @@ -948,29 +1094,29 @@ MkdirsDstR ; копирование имени директории для копирования LD HL,FileHDR.Name ADD HL,DE - LD DE,CountingDirR.DIR_NAME + LD DE,BUF_MARKDIR.DIR_NAME LD BC,FileHDR.Name_Size LDIR ; забрали имя диры для копирования EX DE,HL CALL .CUTOFFSPACES ; отсечение пробелов ; перенос текущего пути источника - LD HL,.OLDPATH - LD DE,.CURRPATHSRC + LD HL,BUFFERS.OLDPATH + LD DE,BUFFERS.CURRPATHSRC CALL .COPYNAME2PATH ; скопировали путь источника - LD (.ENDPATHSRC),DE ; адрес хвоста пути источника + LD (BUFFERS.ENDPATHSRC),DE ; адрес хвоста пути источника ; добавление имени диры для копирования в путь источника - LD HL,(.ENDPATHSRC) - LD DE,CountingDirR.DIR_NAME + LD HL,(BUFFERS.ENDPATHSRC) + LD DE,BUF_MARKDIR.DIR_NAME CALL .ADDNAME2PATH - LD (.ENDPATHSRC),DE ; адрес хвоста пути источника + LD (BUFFERS.ENDPATHSRC),DE ; адрес хвоста пути источника ; добавление имени диры для копирования в путь приемника - LD HL,(.ENDPATHDST) - LD DE,CountingDirR.DIR_NAME + LD HL,(BUFFERS.ENDPATHDST) + LD DE,BUF_MARKDIR.DIR_NAME CALL .ADDNAME2PATH - LD (.ENDPATHDST),DE + LD (BUFFERS.ENDPATHDST),DE ; создание диры в приемнике - LD HL,.CURRPATHDST + LD HL,BUFFERS.CURRPATHDST SPDSS DSSF.MKDIR ; создали диру приемника JR NC,.L3 CP ERR_DSS.DIR_EXISTS ; если дира уже есть игнорим ошибку @@ -978,27 +1124,27 @@ MkdirsDstR .L3 ; TODO циклический поиск директорий с созданием на приемнике - LD HL,.CURRPATHSRC + LD HL,BUFFERS.CURRPATHSRC SPDSS DSSF.CHDIR ; вход в диру источника CALL .FINDFIRSTSRCDIR ; поиск первого описателя JP C,.ENDCOPY ; больше директорий нет, выходим ; поиск директорий .L2 CALL .FINDNEXTSRCDIR ; поиск следующего описателя JP C,.ENDFINDNEXT ; поиск окончен? - LD HL,.FINDBUF + FFIRST.Name + LD HL,BUFFERS.FINDBUF + FFIRST.Name LD A,(HL) CP '.' ; описатели "." и ".." игнорим JR Z,.L2 LD DE,.TMPNAMEDIR PUSH DE CALL .COPYNAME2PATH - LD HL,(.ENDPATHDST) + LD HL,(BUFFERS.ENDPATHDST) POP DE CALL .ADDNAME2PATH - LD HL,.CURRPATHDST + LD HL,BUFFERS.CURRPATHDST SPDSS DSSF.MKDIR ; создаем диру на приемнике ; JP C,ERROR - LD HL,.CURRPATHSRC + LD HL,BUFFERS.CURRPATHSRC SPDSS DSSF.CHDIR ; возвращаем путь на источник ; JP C,ERROR JR .L2 ; ищем следующий @@ -1014,13 +1160,13 @@ MkdirsDstR ; поиск первой диры в текущей поддиректории .FINDFIRSTSRCDIR - LD HL,CountingDirR.FILES_MASK - LD DE,.FINDBUF + LD HL,BUF_MARKDIR.FILES_MASK + LD DE,BUFFERS.FINDBUF SPDSS DSSF.F_FIRST,1,DIR.M_Dir RET .FINDNEXTSRCDIR - LD DE,.FINDBUF + LD DE,BUFFERS.FINDBUF SPDSS DSSF.F_NEXT RET @@ -1041,7 +1187,7 @@ MkdirsDstR .CNP1 LD (DE),A RET -.NAME2DIRNAME +;.NAME2DIRNAME ; проверка на BACKSLASH .CHECK_BSLASH DEC HL @@ -1071,7 +1217,7 @@ MkdirsDstR ; выход из копирования директорий .ENDCOPY LD SP,0 .OLDSP EQU $-2 - LD HL,.OLDPATH + LD HL,BUFFERS.OLDPATH SPDSS DSSF.CHDIR POP AF SETPORT WINSP.CPU3,,0 @@ -1079,8 +1225,8 @@ MkdirsDstR POP IX RET -.ENDPATHSRC DW 0 ; адрес хвоста пути источника -.ENDPATHDST DW 0 ; адрес хвоста пути приемника +;.ENDPATHSRC DW 0 ; адрес хвоста пути источника +;.ENDPATHDST DW 0 ; адрес хвоста пути приемника .TMPNAMEDIR DB 8 DUP 0 ENDIF @@ -1100,3 +1246,51 @@ MkdirsDstR ; /F83 ; /F99 ; /TASM + +; DEV +; .. +; CAMEL401 +; DEMON +; MASM80 +; OASM028 +; SOLID +; SPFORTH +; TASM +; .. +; DOC +; EXAMPLES +; INCLUDE +; SRC +; .. +; CLIB +; .. +; BUILD +; .. +; F83 +; F99 + +;DEV/CAMEL401/ 25 +;DEV/DEMON/ 2 +;DEV/MASM/ 10 +;DEV/OASM28/ 5 +;DEV/SOLID/ 8 +;DEV/SOLID/DOC/ 13 +;DEV/SOLID/EXAMPLES/ 36 +;DEV/SOLID/INCLUDE/ 16 +;DEV/SOLID/SRC/CLIB/ 12 +;DEV/SOLID/SRC/CLIB/BUILD/ 8 +;DEV/SPFORTH/F83/ 4 +;DEV/SPFORTH/F99/ 3 +;DEV/TASM/ 6 +;----------------------------------- +; 0x94 148 + +; генерация списка для копирования дир +; "." для выхода в предыдущую диру +; 0 конец списка +; имена дир по 8 символов (можно и 8.3) только имена без 0 в конце имени + +; при копировании найдена дира +; занесение в путь источника имени диры +; занесение в путь приемника имени диры +; занесение в список ".." для выхода diff --git a/rez2_fnmisc.a80 b/rez3_fnmisc.a80 similarity index 88% rename from rez2_fnmisc.a80 rename to rez3_fnmisc.a80 index ecb4c1a..1cd5d93 100644 --- a/rez2_fnmisc.a80 +++ b/rez3_fnmisc.a80 @@ -1,5 +1,46 @@ -; LAST UPDATE: 02.08.2025 savelij +; LAST UPDATE: 14.08.2025 savelij + +;[]==========================================================[] +VersionR + SETPORT WINSP.Y_PORT,0xC0 + LD HL,SetInvert + PUSH HL + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 192,64,256,152 + W_FILL 4,2,248,10,COLORI.BLACK + W_TEXT 110,3,COLORI.WHITE,"Version" + W_TEXT 93,20,COLORP.HIGHGRAY,"Flex Navigator" + W_TEXT 76,38,COLORP.HIGHGRAY,"Component versions:" + W_TEXT 70,48,COLORP.HIGHGRAY,"Manager:" + W_TEXT 128,48,COLORP.HIGHGRAY,"\{FLEX_VERS.NAVIGATOR}" + W_TEXT 65,58,COLORP.HIGHGRAY,"File Editor:" + W_TEXT 128,58,COLORP.HIGHGRAY,"\{FLEX_VERS.EDITOR}" + W_TEXT 61,68,COLORP.HIGHGRAY,"File Viewer:" + W_TEXT 128,68,COLORP.HIGHGRAY,"\{FLEX_VERS.VIEWER}" + W_TEXT 40,86,COLORP.HIGHGRAY,"2000, Enin Anton" + W_TEXT 40,96,COLORP.HIGHGRAY,"2021, Mikhaltchenkov Dmitry" + W_TEXT 40,106,COLORP.HIGHGRAY,"2022, Belyanskiy Anatoliy" + W_TEXT 40,116,COLORP.HIGHGRAY,"(C) Sprinter Team build ",0 ; здесь вставляется дата сборки + W_BUTTON 92,133,72,14 + W_TEXT 120,136,COLORP.HIGHGRAY,"OK" + W_END + CALL WaitUnpressMouse +VersionLoop LD IX,REZ3TAB.VersionTab + CALL CheckCoordsMouse + SPDSS DSSF.SCANKEY + JR Z,VersionLoop + LD A,B + OR A + JR NZ,VersionLoop + LD A,E + CP 0x1B + JR Z,VersionExt + CP 0x0D + JR NZ,VersionLoop +VersionExt + WINDOWCLOSE + RET ;[]==========================================================[] FileInfoR LD A,(IY+PANEL.FILES_ALL) @@ -37,8 +78,8 @@ FileInfoR LD A,(IY+PANEL.FILES_ALL) POP AF SETPORT WINSP.CPU3,,0 LD IX,WorkBuffer - LD HL,WorkBuffer+1 - LD DE,WorkBuffer+0x20 + LD HL,WorkBuffer + 1 + LD DE,WorkBuffer + 0x20 LD A,(HL) CP '.' RET Z @@ -46,7 +87,7 @@ FileInfoR LD A,(IY+PANEL.FILES_ALL) PUSH DE CALL MakeDOSname POP HL - LD DE,FName + LD DE,.FName LD C,12 SUB A .L2 LDI @@ -60,8 +101,8 @@ FileInfoR LD A,(IY+PANEL.FILES_ALL) .L3 LD (DE),A INC DE DJNZ .L3 -.L5 LD HL,FAtributs - LD DE,FAttrib +.L5 LD HL,.FAtributs + LD DE,.FAttrib LD C,(IX + FileHDR.Attr) LD B,0x08 .L6 RL C @@ -72,13 +113,13 @@ FileInfoR LD A,(IY+PANEL.FILES_ALL) INC HL INC DE DJNZ .L6 - LD HL,FLen + LD HL,.FLen LD B,0x10 LD A,0x20 .L10 LD (HL),A INC HL DJNZ .L10 - LD DE,FLen + LD DE,.FLen BIT DIR.B_Dir,(IX + FileHDR.Attr) JR Z,.L7 LD HL,DirText @@ -94,505 +135,73 @@ FileInfoR LD A,(IY+PANEL.FILES_ALL) LD A,0x20 LD (DE),A INC DE - LD HL,Bytes + LD HL,.Bytes LD BC,0x0005 LDIR -.L8 LD DE,FData +.L8 LD DE,.FDate CALL GetData - LD DE,FTime + LD DE,.FTime CALL GetTime - LD HL,WorkBuffer+0x20 - LD DE,WorkBuffer+0x30 + LD HL,WorkBuffer + 0x20 + LD DE,WorkBuffer + 0x30 LD A,(FileAtribut) PUSH IY SPDSS DSSF.F_FIRST,0 POP IY JP C,PointerMousePointer - LD HL,FClast + LD HL,.FClast LD B,0x05 LD A,0x20 .L9 LD (HL),A INC HL DJNZ .L9 - LD HL,WorkBuffer+0x30+26 + LD HL,WorkBuffer + 0x30 + 26 LD E,(HL) INC HL LD D,(HL) EX DE,HL - LD DE,FClast + LD DE,.FClast CALL ConvertNumbers_16b MAKEWINDOW WINSUBOBJ.STORE W_MAIN 240,80,160,98 W_FILL 4,2,152,10,COLORI.BLACK W_TEXT 56,3,COLORI.WHITE,"File info" W_TEXT 10,20,COLORP.HIGHGRAY,"Name: " -FName EQU $ - STRLEN(" ") - 1 +.FName EQU $ - STRLEN(" ") - 1 W_TEXT 10,32,COLORP.HIGHGRAY,"Attributes: " -FAttrib EQU $ - STRLEN(" ") - 1 +.FAttrib EQU $ - STRLEN(" ") - 1 W_TEXT 10,44,COLORP.HIGHGRAY,"Len: " -FLen EQU $ - STRLEN(" ") - 1 +.FLen EQU $ - STRLEN(" ") - 1 W_TEXT 10,56,COLORP.HIGHGRAY,"Date: " -FData EQU $ - STRLEN(" ") - 1 -FTime EQU $ - STRLEN(" ") - 1 +.FDate EQU $ - STRLEN(" ") - 1 +.FTime EQU $ - STRLEN(" ") - 1 W_TEXT 10,68,COLORP.HIGHGRAY,"First cluster: " -FClast EQU $ - STRLEN(" ") - 1 +.FClast EQU $ - STRLEN(" ") - 1 W_BUTTON 44,80,72,14 W_TEXT 72,83,COLORP.HIGHGRAY,"Ok" W_END CALL PointerMousePointer -FileInfoLoop: LD IX,FileInfoTab +.FileInfoLoop: LD IX,REZ3TAB.FileInfoTab CALL CheckCoordsMouse SPDSS DSSF.SCANKEY - JR Z,FileInfoLoop + JR Z,.FileInfoLoop LD A,B OR A - JR NZ,FileInfoLoop + JR NZ,.FileInfoLoop LD A,E CP 0x1B - JR Z,FileInfoExt + JR Z,.FileInfoExt CP 0x0D - JR Z,FileInfoExt + JR Z,.FileInfoExt RES 5,A CP 'O' - JR NZ,FileInfoLoop -FileInfoExt: + JR NZ,.FileInfoLoop +.FileInfoExt: WINDOWCLOSE RET -FAtributs: DEFB "--ad-shr" - -;[]==========================================================[] -PrintFileR LD A,(IY+PANEL.FILES_ALL) - OR (IY+PANEL.FILES_ALL + 1) - RET Z - BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) - RET NZ - SETPORT WINSP.Y_PORT,0xC0 - GETPORT WINSP.CPU3 - PUSH AF - BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) - LD A,(RAMPAGES.LEFTPANEL) - JR Z,.L1 - LD A,(RAMPAGES.RIGHTPANEL) -.L1 - SETPORT WINSP.CPU3,,0 - LD L,(IY+PANEL.FIRST_FILE) - LD H,(IY+PANEL.FIRST_FILE + 1) - LD E,(IY+PANEL.CURR_FILE) - LD D,(IY+PANEL.CURR_FILE + 1) - ADD HL,DE - ADD HL,HL - ADD HL,HL - ADD HL,HL - LD E,L - LD D,H - ADD HL,HL - ADD HL,DE - LD A,H - OR 0xC0 - LD H,A - LD DE,WorkBuffer - LD BC,0x0018 - LDIR - POP AF - SETPORT WINSP.CPU3,,0 - LD IX,WorkBuffer - BIT DIR.B_Dir,(IX + FileHDR.Attr) - RET NZ - LD HL,WorkBuffer+1 - LD DE,PrnFileName - CALL MakeDOSname - LD L,(IX + FileHDR.SizeBytes) - LD H,(IX + FileHDR.SizeBytes + 1) - LD (PrnFileLen),HL - LD E,(IX + FileHDR.SizeBytes + 2) - LD D,(IX + FileHDR.SizeBytes + 3) - LD (PrnFileLen+2),DE - LD A,H - OR L - OR D - OR E - RET Z - PUSH IY - SPDSS DSSF.GETMEM,1 - POP IY - PUSH AF - CALL C,DOSError - POP AF - RET C - LD (PrnMIndef),A - PUSH IY - LD HL,PagesList - SPBIOS BIOSF.GETMEMBLKPAGES - MAKEWINDOW WINSUBOBJ.STORE - W_MAIN 168,84,304,62 - W_FILL 4,2,296,10,COLORI.BLACK - W_TEXT 142,3,COLORI.WHITE,"Print" - W_TEXT 16,16,COLORP.HIGHGRAY,"Printing file:" - W_BORDER 16,28,272,12 - W_FILL 18,29,268,10,COLORI.WHITE - W_BUTTON 116,44,72,14 - W_TEXT 140,47,COLORP.HIGHGRAY,"Stop" - W_END - PUSH IY - POP HL - LD DE,PANEL.CURR_PATH - ADD HL,DE - LD DE,WorkBuffer - SUB A -.L2 LDI - CP (HL) - JR NZ,.L2 - DEC HL - LD A,0x5C - CP (HL) - JR Z,.L3 - LD (DE),A - INC DE -.L3 LD HL,PrnFileName - SUB A -.L4 LDI - CP (HL) - JR NZ,.L4 - LD (DE),A - LD IX,0x00D0 - LD HL,WorkBuffer - LD DE,0x00F8 - LD BC,0x0064 - LD A,COLORP.HIGHGRAY + COLORI.BLACK - CALL PrintPathLeft - LD IX,PrintFTab - CALL CheckCoordsMouse - LD IX,ProcessFPrn - LD HL,(PrnFileLen) - LD DE,(PrnFileLen+2) - LD A,L - LD L,H - LD H,E - LD E,D - OR A - JR Z,InitPrn - INC HL - LD A,H - OR L - JR NZ,InitPrn - INC E -InitPrn LD (IX + PROGRESSBAR.MAX_PAGES),L - LD (IX + PROGRESSBAR.MAX_PAGES + 1),H - LD (IX + PROGRESSBAR.MAX_PAGES + 2),E - LD (IX + PROGRESSBAR.MAX_PAGES + 3),0x00 - CALL InitProgressBar - LD HL,PrnFileName - SPDSS DSSF.OPEN,,1 - PUSH AF - CALL C,DOSError - POP AF - JP C,PrnError - LD (PrnFHandle),A - GETPORT WINSP.CPU3 - PUSH AF - LD HL,PagesList - LD A,(HL) -ReadPr1 INC HL - PUSH HL - SETPORT WINSP.CPU3,,0 - LD HL,(PrnFileLen) - LD DE,(PrnFileLen+2) - LD BC,0x4000 - OR A - SBC HL,BC - LD B,0x00 - EX DE,HL - SBC HL,BC - EX DE,HL - JR C,ReadPrnEnd - LD (PrnFileLen),HL - LD (PrnFileLen+2),DE - CALL PointerMouseClock - LD HL,0xC000 - LD DE,0x4000 - LD A,(PrnFHandle) - SPDSS DSSF.READ - CALL PointerMousePointer - LD BC,0x4000 - CALL PrintBlock - POP HL - JR C,PrnEsc - LD A,(HL) - CP 0xFF - JR NZ,ReadPr1 -PrnEsc POP AF - SETPORT WINSP.CPU3,,0 - JR PrnFileExit - -ReadPrnEnd: LD HL,0xC000 - LD DE,(PrnFileLen) - LD A,D - OR E - JR Z,.L1 - CALL PointerMouseClock - LD A,(PrnFHandle) - PUSH DE - SPDSS DSSF.READ - POP BC - CALL PointerMousePointer - CALL PrintBlock - JR C,.L2 -.L1 CALL NxtPrnProc -.L2 POP HL - POP AF - SETPORT WINSP.CPU3,,0 -PrnFileExit LD A,(PrnFHandle) - SPDSS DSSF.CLOSE -PrnError LD A,(PrnMIndef) - SPDSS DSSF.FREEMEM - POP IY - HALT - HALT - WINDOWCLOSE - RET - -;[]----------------------------------------------------------[] -PrintBlock: LD DE,0xC000 -PrnBlockLp LD A,(DE) - INC DE - CALL PrintCHAR - RET C - CALL NxtPrnProc - DEC BC - LD A,B - OR C - JR NZ,PrnBlockLp - RET - -PrintCHAR: LD L,A - PUSH HL - PUSH DE - PUSH BC - SPMOUSE MOUSEF.READ_STATE - BIT 0,A - JR Z,PrnCH1 - LD IX,PrintFTab - CALL CheckCoordsMouse - JR C,PrnCH2 -PrnCH1 - SPDSS DSSF.SCANKEY - LD A,E -PrnCH2 POP BC - POP DE - POP HL - RET C - JR Z,PrnCHAR - CP 0x1B - SCF - RET Z - RES 5,A - CP 'S' - JR NZ,PrnCHAR -StopPrint SCF - RET - -PrnCHAR PUSH DE - PUSH BC - LD A,L - SPDSS DSSF.PRINT - LD A,B - POP BC - POP DE - RET NC - HALT - JR PrintCHAR - -;[]----------------------------------------------------------[] -NxtPrnProc LD A,E - OR A - RET NZ - PUSH DE - PUSH BC - LD IX,ProcessFPrn - LD L,(IX + PROGRESSBAR.CURR_PAGE) - LD H,(IX + PROGRESSBAR.CURR_PAGE + 1) - INC HL - LD (IX + PROGRESSBAR.CURR_PAGE),L - LD (IX + PROGRESSBAR.CURR_PAGE + 1),H - LD A,H - OR L - JR NZ,.L1 - LD L,(IX + PROGRESSBAR.CURR_PAGE + 2) - LD H,(IX + PROGRESSBAR.CURR_PAGE + 3) - INC HL - LD (IX + PROGRESSBAR.CURR_PAGE + 2),L - LD (IX + PROGRESSBAR.CURR_PAGE + 3),H -.L1 CALL DrawProgressBar - POP BC - POP DE - RET - -ProcessFPrn: DEFW 0x00BA - DEFW 0x0071 - DEFW 0x010C - DEFW 0x0000 - DEFW 0x0000 - DEFW 0x0000 - DEFW 0x0000 - DEFW 0x0000 - DEFW 0x0000 - DEFB 0x4F -PrnFileName: DUPL 13,0 -PrnFileLen: DUPL 4,0 -PrnMIndef: DEFB 0x00 -PrnFHandle: DEFB 0x00 - -;[]==========================================================[] -SystemInfoR - SETPORT WINSP.Y_PORT,0xC0 - LD HL,SetInvert - PUSH HL - LD HL,.DOSvers - LD DE,.BIOSver - LD B,0x05 - LD A,0x20 -.L1 LD (HL),A - INC HL - LD (DE),A - INC DE - DJNZ .L1 - PUSH IY - SPDSS DSSF.VERSION - POP IY - EX DE,HL - LD DE,.DOSvers - LD A,H - CALL ConvertNumbers_8b - LD A,'.' - LD (DE),A - INC DE - LD A,L - CALL ConvertNumbers_8b - LD HL,WorkBuffer - SPBIOS BIOSF.FN_VERSION - SUB A -.L2 INC HL - CP (HL) - JR NZ,.L2 - LD A,0x20 -.L3 DEC HL - CP (HL) - JR NZ,.L3 - INC HL - LD DE,.BIOSver - SUB A -.L4 LDI - CP (HL) - JR NZ,.L4 - LD HL,Present - LD A,(CMOSFlag) - OR A - JR NZ,.L5 - LD HL,NotPresent -.L5 LD DE,.CMOStxt - LD BC,0x000B - LDIR - LD HL,.TotMem - LD DE,.FreeMem - LD B,0x0F - LD A,0x20 -.L6 LD (HL),A - INC HL - LD (DE),A - INC DE - DJNZ .L6 - PUSH IY - SPDSS DSSF.INFOMEM - POP IY - PUSH BC - LD B,H - LD C,L - LD HL,0x0000 - LD DE,WorkBuffer - SRL B - RR C - RR H - RR L - SRL B - RR C - RR H - RR L - PUSH DE - CALL ConvertNumbers_32b - SUB A - LD (DE),A - POP HL - LD DE,.TotMem - CALL CorrBigNum - INC DE - LD HL,Bytes - LD BC,0x0005 - LDIR - POP HL - LD B,H - LD C,L - LD HL,0x0000 - LD DE,WorkBuffer - SRL B - RR C - RR H - RR L - SRL B - RR C - RR H - RR L - PUSH DE - CALL ConvertNumbers_32b - SUB A - LD (DE),A - POP HL - LD DE,.FreeMem - CALL CorrBigNum - INC DE - LD HL,Bytes - LD BC,0x0005 - LDIR - MAKEWINDOW WINSUBOBJ.STORE - W_MAIN 224,64,192,114 - W_FILL 4,2,184,10,COLORI.BLACK - W_TEXT 48,3,COLORI.WHITE,"System information" - W_TEXT 10,20,COLORP.HIGHGRAY,"FN version: \{FLEX_VERS.NAVIGATOR}" - W_TEXT 10,32,COLORP.HIGHGRAY,"BIOS version: " -.BIOSver EQU $ - STRLEN(" ") - 1 - W_TEXT 10,44,COLORP.HIGHGRAY,"DOS version: " -.DOSvers EQU $ - STRLEN(" ") - 1 - W_TEXT 10,56,COLORP.HIGHGRAY,"CMOS: " -.CMOStxt EQU $ - STRLEN(" ") - 1 - W_TEXT 10,70,COLORP.HIGHGRAY,"Total memory: " -.TotMem EQU $ - STRLEN(" ") - 1 - W_TEXT 10,82,COLORP.HIGHGRAY,"Free memory: " -.FreeMem EQU $ - STRLEN(" ") - 1 - W_BUTTON 60,96,72,14 - W_TEXT 88,99,COLORP.HIGHGRAY,"Ok",0 - W_END -SysInfoLoop: LD IX,SysInfoTab - CALL CheckCoordsMouse - SPDSS DSSF.SCANKEY - JR Z,SysInfoLoop - LD A,B - OR A - JR NZ,SysInfoLoop - LD A,E - CP 0x1B - JR Z,SysInfoExt - CP 0x0D - JR Z,SysInfoExt - RES 5,A - CP 'O' - JR NZ,SysInfoLoop -SysInfoExt - WINDOWCLOSE - RET - -Bytes: DEFB "bytes" -Present: DEFB "Present " -NotPresent: DEFB "Not present" +.FAtributs: DEFB "--ad-shr" +.Bytes: DEFB "bytes" ;[]==========================================================[] DiskInfoR: LD HL,SetInvert @@ -673,7 +282,7 @@ DiskInfoR: LD HL,SetInvert INC HL INC DE DJNZ .loop1 -.DiskI1: LD HL,WorkBuffer+0x2B +.DiskI1: LD HL,WorkBuffer + 0x2B .buf_label EQU $-2 JR NZ,.DiskI21F .DiskI2: LD HL,.NoLabelT @@ -682,19 +291,19 @@ DiskInfoR: LD HL,SetInvert LDIR ; серийник LD DE,.SerialN - LD A,(WorkBuffer+0x2A) + LD A,(WorkBuffer + 0x2A) .serial_4 EQU $-2 - CALL ConvHexTxt - LD A,(WorkBuffer+0x29) + CALL .ConvHexTxt + LD A,(WorkBuffer + 0x29) .serial_3 EQU $-2 - CALL ConvHexTxt + CALL .ConvHexTxt INC DE - LD A,(WorkBuffer+0x28) + LD A,(WorkBuffer + 0x28) .serial_2 EQU $-2 - CALL ConvHexTxt - LD A,(WorkBuffer+0x27) + CALL .ConvHexTxt + LD A,(WorkBuffer + 0x27) .serial_1 EQU $-2 - CALL ConvHexTxt + CALL .ConvHexTxt MAKEWINDOW WINSUBOBJ.STORE W_MAIN 192,80,256,98 W_FILL 4,2,248,10,COLORI.BLACK @@ -787,12 +396,12 @@ DiskInfoR: LD HL,SetInvert SUB A LD (DE),A LD HL,WorkBuffer - LD DE,WorkBuffer+0x100 - CALL CorrBigNum + LD DE,WorkBuffer + 0x100 + CALL .CorrBigNum LD A,' ' LD (DE),A INC DE - LD HL,Bytes + LD HL,FileInfoR.Bytes LD BC,5;Bytes.Size LDIR SUB A @@ -804,35 +413,35 @@ DiskInfoR: LD HL,SetInvert .freeSpace_m EQU $-2 LD HL,0 .freeSpace_l EQU $-2 - LD DE,WorkBuffer+0x80 + LD DE,WorkBuffer + 0x80 ; ABCHL - число для перевода CALL ConvertNumbers_40b SUB A LD (DE),A - LD HL,WorkBuffer+0x80 - LD DE,WorkBuffer+0x180 - CALL CorrBigNum + LD HL,WorkBuffer + 0x80 + LD DE,WorkBuffer + 0x180 + CALL .CorrBigNum LD A,' ' LD (DE),A INC DE - LD HL,Bytes + LD HL,FileInfoR.Bytes LD BC,5;Bytes.Size LDIR SUB A LD (DE),A ; вывод размеров - LD HL,WorkBuffer+0x100 - LD DE,0x0128 - LD BC,0x0070 - LD A,0x80 + LD HL,WorkBuffer + 0x100 + LD DE,296 + LD BC,112 + LD A,COLORP.HIGHGRAY + COLORI.BLACK CALL PrintTxtLine_IFF - LD HL,WorkBuffer+0x180 - LD DE,0x0013A - LD BC,0x007C - LD A,0x80 + LD HL,WorkBuffer + 0x180 + LD DE,314 + LD BC,124 + LD A,COLORP.HIGHGRAY + COLORI.BLACK CALL PrintTxtLine_IFF CALL PointerMousePointer -.DiskInfoLoop: LD IX,DiskInfoTab +.DiskInfoLoop: LD IX,REZ3TAB.DiskInfoTab CALL CheckCoordsMouse SPDSS DSSF.SCANKEY JR Z,.DiskInfoLoop @@ -877,14 +486,14 @@ DiskInfoR: LD HL,SetInvert .NoLabel DEFB "NO NAME " .NoLabelT DEFB "no label " -ConvHexTxt PUSH AF +.ConvHexTxt PUSH AF RRCA RRCA RRCA RRCA - CALL ConvHexT1 + CALL .ConvHexT1 POP AF -ConvHexT1 AND 0x0F +.ConvHexT1 AND 0x0F ADD A,0x90 DAA ADC A,0x40 @@ -893,7 +502,7 @@ ConvHexT1 AND 0x0F INC DE RET -CorrBigNum PUSH HL +.CorrBigNum PUSH HL SUB A LD C,A .L1 INC C @@ -924,42 +533,425 @@ CorrBigNum PUSH HL JR .L4 ;[]==========================================================[] -VersionR +SystemInfoR SETPORT WINSP.Y_PORT,0xC0 LD HL,SetInvert PUSH HL + LD HL,.DOSvers + LD DE,.BIOSver + LD B,0x05 + LD A,0x20 +.L1 LD (HL),A + INC HL + LD (DE),A + INC DE + DJNZ .L1 + PUSH IY + SPDSS DSSF.VERSION + POP IY + EX DE,HL + LD DE,.DOSvers + LD A,H + CALL ConvertNumbers_8b + LD A,'.' + LD (DE),A + INC DE + LD A,L + CALL ConvertNumbers_8b + LD HL,WorkBuffer + SPBIOS BIOSF.FN_VERSION + SUB A +.L2 INC HL + CP (HL) + JR NZ,.L2 + LD A,0x20 +.L3 DEC HL + CP (HL) + JR NZ,.L3 + INC HL + LD DE,.BIOSver + SUB A +.L4 LDI + CP (HL) + JR NZ,.L4 + LD HL,Present + LD A,(CMOSFlag) + OR A + JR NZ,.L5 + LD HL,NotPresent +.L5 LD DE,.CMOStxt + LD BC,0x000B + LDIR + LD HL,.TotMem + LD DE,.FreeMem + LD B,0x0F + LD A,0x20 +.L6 LD (HL),A + INC HL + LD (DE),A + INC DE + DJNZ .L6 + PUSH IY + SPDSS DSSF.INFOMEM + POP IY + PUSH BC + LD B,H + LD C,L + LD HL,0x0000 + LD DE,WorkBuffer + SRL B + RR C + RR H + RR L + SRL B + RR C + RR H + RR L + PUSH DE + CALL ConvertNumbers_32b + SUB A + LD (DE),A + POP HL + LD DE,.TotMem + CALL DiskInfoR.CorrBigNum + INC DE + LD HL,FileInfoR.Bytes + LD BC,0x0005 + LDIR + POP HL + LD B,H + LD C,L + LD HL,0x0000 + LD DE,WorkBuffer + SRL B + RR C + RR H + RR L + SRL B + RR C + RR H + RR L + PUSH DE + CALL ConvertNumbers_32b + SUB A + LD (DE),A + POP HL + LD DE,.FreeMem + CALL DiskInfoR.CorrBigNum + INC DE + LD HL,FileInfoR.Bytes + LD BC,0x0005 + LDIR MAKEWINDOW WINSUBOBJ.STORE - W_MAIN 192,64,256,152 - W_FILL 4,2,248,10,COLORI.BLACK - W_TEXT 110,3,COLORI.WHITE,"Version" - W_TEXT 93,20,COLORP.HIGHGRAY,"Flex Navigator" - W_TEXT 76,38,COLORP.HIGHGRAY,"Component versions:" - W_TEXT 70,48,COLORP.HIGHGRAY,"Manager:" - W_TEXT 128,48,COLORP.HIGHGRAY,"\{FLEX_VERS.NAVIGATOR}" - W_TEXT 65,58,COLORP.HIGHGRAY,"File Editor:" - W_TEXT 128,58,COLORP.HIGHGRAY,"\{FLEX_VERS.EDITOR}" - W_TEXT 61,68,COLORP.HIGHGRAY,"File Viewer:" - W_TEXT 128,68,COLORP.HIGHGRAY,"\{FLEX_VERS.VIEWER}" - W_TEXT 40,86,COLORP.HIGHGRAY,"2000, Enin Anton" - W_TEXT 40,96,COLORP.HIGHGRAY,"2021, Mikhaltchenkov Dmitry" - W_TEXT 40,106,COLORP.HIGHGRAY,"2022, Belyanskiy Anatoliy" - W_TEXT 40,116,COLORP.HIGHGRAY,"(C) Sprinter Team build ",0 ; здесь вставляется дата сборки - W_BUTTON 92,133,72,14 - W_TEXT 120,136,COLORP.HIGHGRAY,"OK" + W_MAIN 224,64,192,114 + W_FILL 4,2,184,10,COLORI.BLACK + W_TEXT 48,3,COLORI.WHITE,"System information" + W_TEXT 10,20,COLORP.HIGHGRAY,"FN version: \{FLEX_VERS.NAVIGATOR}" + W_TEXT 10,32,COLORP.HIGHGRAY,"BIOS version: " +.BIOSver EQU $ - STRLEN(" ") - 1 + W_TEXT 10,44,COLORP.HIGHGRAY,"DOS version: " +.DOSvers EQU $ - STRLEN(" ") - 1 + W_TEXT 10,56,COLORP.HIGHGRAY,"CMOS: " +.CMOStxt EQU $ - STRLEN(" ") - 1 + W_TEXT 10,70,COLORP.HIGHGRAY,"Total memory: " +.TotMem EQU $ - STRLEN(" ") - 1 + W_TEXT 10,82,COLORP.HIGHGRAY,"Free memory: " +.FreeMem EQU $ - STRLEN(" ") - 1 + W_BUTTON 60,96,72,14 + W_TEXT 88,99,COLORP.HIGHGRAY,"Ok" W_END - CALL WaitUnpressMouse -VersionLoop LD IX,VersionTab +SysInfoLoop: LD IX,REZ3TAB.SysInfoTab CALL CheckCoordsMouse SPDSS DSSF.SCANKEY - JR Z,VersionLoop + JR Z,SysInfoLoop LD A,B OR A - JR NZ,VersionLoop + JR NZ,SysInfoLoop LD A,E CP 0x1B - JR Z,VersionExt + JR Z,SysInfoExt CP 0x0D - JR NZ,VersionLoop -VersionExt + JR Z,SysInfoExt + RES 5,A + CP 'O' + JR NZ,SysInfoLoop +SysInfoExt WINDOWCLOSE RET + +Present: DEFB "Present " +NotPresent: DEFB "Not present" + +;[]==========================================================[] +PrintFileR LD A,(IY+PANEL.FILES_ALL) + OR (IY+PANEL.FILES_ALL + 1) + RET Z + BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + RET NZ + SETPORT WINSP.Y_PORT,0xC0 + GETPORT WINSP.CPU3 + PUSH AF + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + LD A,(RAMPAGES.LEFTPANEL) + JR Z,.L1 + LD A,(RAMPAGES.RIGHTPANEL) +.L1 + SETPORT WINSP.CPU3,,0 + LD L,(IY+PANEL.FIRST_FILE) + LD H,(IY+PANEL.FIRST_FILE + 1) + LD E,(IY+PANEL.CURR_FILE) + LD D,(IY+PANEL.CURR_FILE + 1) + ADD HL,DE + ADD HL,HL + ADD HL,HL + ADD HL,HL + LD E,L + LD D,H + ADD HL,HL + ADD HL,DE + LD A,H + OR 0xC0 + LD H,A + LD DE,WorkBuffer + LD BC,0x0018 + LDIR + POP AF + SETPORT WINSP.CPU3,,0 + LD IX,WorkBuffer + BIT DIR.B_Dir,(IX + FileHDR.Attr) + RET NZ + LD HL,WorkBuffer + 1 + LD DE,PrnFileName + CALL MakeDOSname + LD L,(IX + FileHDR.SizeBytes) + LD H,(IX + FileHDR.SizeBytes + 1) + LD (PrnFileLen),HL + LD E,(IX + FileHDR.SizeBytes + 2) + LD D,(IX + FileHDR.SizeBytes + 3) + LD (PrnFileLen+2),DE + LD A,H + OR L + OR D + OR E + RET Z + PUSH IY + SPDSS DSSF.GETMEM,1 + POP IY + PUSH AF + CALL C,DOSError + POP AF + RET C + LD (PrnMIndef),A + PUSH IY + LD HL,PagesList + SPBIOS BIOSF.GETMEMBLKPAGES + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 168,84,304,62 + W_FILL 4,2,296,10,COLORI.BLACK + W_TEXT 142,3,COLORI.WHITE,"Print" + W_TEXT 16,16,COLORP.HIGHGRAY,"Printing file:" + W_BORDER 16,28,272,12 + W_FILL 18,29,268,10,COLORI.WHITE + W_BUTTON 116,44,72,14 + W_TEXT 140,47,COLORP.HIGHGRAY,"Stop" + W_END + PUSH IY + POP HL + LD DE,PANEL.CURR_PATH + ADD HL,DE + LD DE,WorkBuffer + SUB A +.L2 LDI + CP (HL) + JR NZ,.L2 + DEC HL + LD A,'\\' + CP (HL) + JR Z,.L3 + LD (DE),A + INC DE +.L3 LD HL,PrnFileName + SUB A +.L4 LDI + CP (HL) + JR NZ,.L4 + LD (DE),A + LD IX,208 + LD HL,WorkBuffer + LD DE,248 + LD BC,100 + LD A,COLORP.HIGHGRAY + COLORI.BLACK + CALL PrintPathLeft + LD IX,REZ3TAB.PrintFTab + CALL CheckCoordsMouse + LD IX,ProcessFPrn + LD HL,(PrnFileLen) + LD DE,(PrnFileLen+2) + LD A,L + LD L,H + LD H,E + LD E,D + OR A + JR Z,InitPrn + INC HL + LD A,H + OR L + JR NZ,InitPrn + INC E +InitPrn LD (IX + PROGRESSBAR.MAX_PAGES),L + LD (IX + PROGRESSBAR.MAX_PAGES + 1),H + LD (IX + PROGRESSBAR.MAX_PAGES + 2),E + LD (IX + PROGRESSBAR.MAX_PAGES + 3),0x00 + CALL InitProgressBar + LD HL,PrnFileName + SPDSS DSSF.OPEN,,1 + PUSH AF + CALL C,DOSError + POP AF + JP C,PrnError + LD (PrnFHandle),A + GETPORT WINSP.CPU3 + PUSH AF + LD HL,PagesList + LD A,(HL) +ReadPr1 INC HL + PUSH HL + SETPORT WINSP.CPU3,,0 + LD HL,(PrnFileLen) + LD DE,(PrnFileLen+2) + LD BC,0x4000 + OR A + SBC HL,BC + LD B,0x00 + EX DE,HL + SBC HL,BC + EX DE,HL + JR C,ReadPrnEnd + LD (PrnFileLen),HL + LD (PrnFileLen+2),DE + CALL PointerMouseClock + LD HL,0xC000 + LD DE,0x4000 + LD A,(PrnFHandle) + SPDSS DSSF.READ + CALL PointerMousePointer + LD BC,0x4000 + CALL PrintBlock + POP HL + JR C,PrnEsc + LD A,(HL) + CP 0xFF + JR NZ,ReadPr1 +PrnEsc POP AF + SETPORT WINSP.CPU3,,0 + JR PrnFileExit + +ReadPrnEnd: LD HL,0xC000 + LD DE,(PrnFileLen) + LD A,D + OR E + JR Z,.L1 + CALL PointerMouseClock + LD A,(PrnFHandle) + PUSH DE + SPDSS DSSF.READ + POP BC + CALL PointerMousePointer + CALL PrintBlock + JR C,.L2 +.L1 CALL NxtPrnProc +.L2 POP HL + POP AF + SETPORT WINSP.CPU3,,0 +PrnFileExit LD A,(PrnFHandle) + SPDSS DSSF.CLOSE +PrnError LD A,(PrnMIndef) + SPDSS DSSF.FREEMEM + POP IY + HALT + HALT + WINDOWCLOSE + RET + +;[]----------------------------------------------------------[] +PrintBlock: LD DE,0xC000 +PrnBlockLp LD A,(DE) + INC DE + CALL PrintCHAR + RET C + CALL NxtPrnProc + DEC BC + LD A,B + OR C + JR NZ,PrnBlockLp + RET + +PrintCHAR: LD L,A + PUSH HL + PUSH DE + PUSH BC + SPMOUSE MOUSEF.READ_STATE + BIT 0,A + JR Z,PrnCH1 + LD IX,REZ3TAB.PrintFTab + CALL CheckCoordsMouse + JR C,PrnCH2 +PrnCH1 + SPDSS DSSF.SCANKEY + LD A,E +PrnCH2 POP BC + POP DE + POP HL + RET C + JR Z,PrnCHAR + CP 0x1B + SCF + RET Z + RES 5,A + CP 'S' + JR NZ,PrnCHAR +StopPrint SCF + RET + +PrnCHAR PUSH DE + PUSH BC + LD A,L + SPDSS DSSF.PRINT + LD A,B + POP BC + POP DE + RET NC + HALT + JR PrintCHAR + +;[]----------------------------------------------------------[] +NxtPrnProc LD A,E + OR A + RET NZ + PUSH DE + PUSH BC + LD IX,ProcessFPrn + LD L,(IX + PROGRESSBAR.CURR_PAGE) + LD H,(IX + PROGRESSBAR.CURR_PAGE + 1) + INC HL + LD (IX + PROGRESSBAR.CURR_PAGE),L + LD (IX + PROGRESSBAR.CURR_PAGE + 1),H + LD A,H + OR L + JR NZ,.L1 + LD L,(IX + PROGRESSBAR.CURR_PAGE + 2) + LD H,(IX + PROGRESSBAR.CURR_PAGE + 3) + INC HL + LD (IX + PROGRESSBAR.CURR_PAGE + 2),L + LD (IX + PROGRESSBAR.CURR_PAGE + 3),H +.L1 CALL DrawProgressBar + POP BC + POP DE + RET + +ProcessFPrn: DW 186,113,268,0,0,0,0,0,0 + DB COLORP.BLUE + COLORI.WHITE +PrnFileName: DB 13 DUP 0 +PrnFileLen: DB 4 DUP 0 +PrnMIndef: DB 0 +PrnFHandle: DB 0 diff --git a/rez3_fnnext.a80 b/rez3_fnnext.a80 index b2f9470..2fb355d 100644 --- a/rez3_fnnext.a80 +++ b/rez3_fnnext.a80 @@ -1,15 +1,15 @@ -; LAST UPDATE: 18.07.2025 savelij +; LAST UPDATE: 13.08.2025 savelij ;[]==========================================================[] InitExtention: LD HL,INIFILES.ExtName1 - LD DE,fn_ext + LD DE,BUFFERS.fn_ext CALL InitExt LD HL,INIFILES.ExtName2 - LD DE,fnview_ext + LD DE,BUFFERS.fnview_ext CALL InitExt LD HL,INIFILES.ExtName3 - LD DE,fnedit_ext + LD DE,BUFFERS.fnedit_ext ;[]----------------------------------------------------------[] InitExt: LD (.EXTdata),DE SPDSS DSSF.OPEN,,1 diff --git a/rez3_fntab.a80 b/rez3_fntab.a80 new file mode 100644 index 0000000..fe84e4c --- /dev/null +++ b/rez3_fntab.a80 @@ -0,0 +1,76 @@ + +; LAST UPDATE: 14.08.2025 savelij + +;[]==========================================================[] +; Формат таблицы +; +00 2 Xmin +; +02 2 Xmax +; +04 2 Ymin +; +06 2 Ymax +; +08 2 0 - простой об'ект +; бит 0 - кнопка +; бит 1 - рабочая кнопка +; бит 2 - инверт 1 +; бит 3 - статичный инверт +; бит 4 - программа запускается без адреса возвр. +; и без огня +; бит 5 - программа запускается без адреса возвр. +; по левой кнопке огня +; бит 6 - программа запускается без адреса возвр. +; по правой кнопке огня +; бит 7 - вызвать функцию закрытия окна перед +; запуском программы без огня +; бит 8 - вызвать функцию закрытия окна перед +; запуском программы по левой кнопке +; бит 9 - вызвать функцию закрытия окна перед +; запуском программы по правой кнопке +; бит15 - это переключатель (инверт при огне не +; убирать) +; +0A 2 Адрес обработчика при не нажатом огне +; +0C 2 Адрес обработчика при нажатом огне (лев) +; +0E 2 Адрес обработчика при нажатом огне (прав) + +REZ3TAB +;[]===============================================================[] +.VersionTab: DW 284,356,157,171,%0000000000100001,0,VersionExt,0 + DW 0,192, 0,256,%0000000000100000,0,VersionExt,0 + DW 448,640, 0,256,%0000000000100000,0,VersionExt,0 + DW 0,640, 0, 64,%0000000000100000,0,VersionExt,0 + DW 0,640,176,256,%0000000000100000,0,VersionExt,0 + DW 0x8000 + +.SMaskTab DW 240,312,123,137,%0000000000000001,0,InputLine.InputLineExitOk,0 + DW 328,400,123,137,%0000000000000001,0,InputLine.InputLineExitCancel,0 + DW 0,208, 0,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 + DW 432,640, 0,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 + DW 0,640, 0, 81,%0000000000000000,0,InputLine.InputLineExitCancel,0 + DW 0,640,143,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 + DW 0x8000 + +;[]===============================================================[] +.FileInfoTab: DW 284,356,160,174,%0000000000100001,0,FileInfoR.FileInfoExt,0 + DW 0,240, 0,256,%0000000000100000,0,FileInfoR.FileInfoExt,0 + DW 400,640, 0,256,%0000000000100000,0,FileInfoR.FileInfoExt,0 + DW 0,640, 0, 80,%0000000000100000,0,FileInfoR.FileInfoExt,0 + DW 0,640,178,256,%0000000000100000,0,FileInfoR.FileInfoExt,0 + DW 0x8000 + +;[]===============================================================[] +.DiskInfoTab: DW 284,356,160,174,%0000000000100001,0,DiskInfoR.Ext,0 + DW 0,192, 0,256,%0000000000100000,0,DiskInfoR.Ext,0 + DW 448,640, 0,256,%0000000000100000,0,DiskInfoR.Ext,0 + DW 0,640, 0, 80,%0000000000100000,0,DiskInfoR.Ext,0 + DW 0,640,178,256,%0000000000100000,0,DiskInfoR.Ext,0 + DW 0x8000 + +;[]===============================================================[] +.SysInfoTab: DW 284,356,160,174,%0000000000100001,0,SysInfoExt,0 + DW 0,224, 0,256,%0000000000100000,0,SysInfoExt,0 + DW 416,640, 0,256,%0000000000100000,0,SysInfoExt,0 + DW 0,640, 0, 64,%0000000000100000,0,SysInfoExt,0 + DW 0,640,178,256,%0000000000100000,0,SysInfoExt,0 + DW 0x8000 + +;[]===============================================================[] +.PrintFTab: DW 284,356,128,142,%0000000000000001,0,StopPrint,0 + DW 0x8000