From aa4d5d57e43660242b040e8c9f36d4a922c37310 Mon Sep 17 00:00:00 2001 From: savelij13 Date: Mon, 11 May 2026 21:37:10 +0300 Subject: [PATCH] =?UTF-8?q?FlexNavigator=201.16.07:=20-=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=BB=D1=83=D1=87=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D1=83=D1=82?= =?UTF-8?q?=D0=B5=D0=B9=20=D0=BF=D1=80=D0=BE=D0=B3=D1=80=D0=B0=D0=BC=D0=BC?= =?UTF-8?q?=D1=8B=20=D0=B8=20=D1=84=D0=BE=D1=80=D0=BC=D0=B8=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BF=D1=83=D1=82=D0=B5=D0=B9?= =?UTF-8?q?=20=D0=B4=D0=BE=20=D0=BF=D0=BB=D0=B0=D0=B3=D0=B8=D0=BD=D0=BE?= =?UTF-8?q?=D0=B2=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BD=D0=B5=D1=81=D0=B5=D0=BD?= =?UTF-8?q?=D1=8B=20=20=20=D0=B2=20=D0=BD=D0=B0=D1=87=D0=B0=D0=BB=D0=BE=20?= =?UTF-8?q?=D0=B8=D0=BD=D0=B8=D1=86=D0=B8=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D0=B8.=20Flex=20CD=20Player=201.11:=20-=20=D0=BF?= =?UTF-8?q?=D0=BB=D0=B0=D0=B3=D0=B8=D0=BD=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B8?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D0=BE=D0=B2=D0=B0=D0=BD.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/history.txt | 5 + fn/flx/cdplayer.flx | Bin 9657 -> 9657 bytes fn/flx/fneditor.flx | Bin 11673 -> 11673 bytes fn/flx/fnviewer.flx | Bin 6459 -> 6459 bytes fn/flx/help.flx | Bin 6414 -> 6414 bytes fn/fn.exe | Bin 49276 -> 49439 bytes fn/history.txt | 5 + fn_const.a80 | 4 +- fn_init.a80 | 19 ++- fn_main.a80 | 10 +- fn_sort.a80 | 105 ++++++++++++----- fn_version.a80 | 4 +- plugins/cdplayer/cdplayer.a80 | 6 +- plugins/cdplayer/vers.a80 | 4 +- readme.md | 15 +-- rez2_fn_funct.a80 | 213 +++++++++++++++++++++++++--------- 16 files changed, 276 insertions(+), 114 deletions(-) diff --git a/docs/history.txt b/docs/history.txt index 0031d2d..e3f759e 100644 --- a/docs/history.txt +++ b/docs/history.txt @@ -1,4 +1,9 @@ +11.05.2026 +FlexNavigator 1.16.07 +- получение путей программы и формирование путей до плагинов перенесены + в начало инициализации. + 22.01.2026 FlexNavigator 1.16.06 - для ошибок у которых нет текста описания теперь выдает всегда diff --git a/fn/flx/cdplayer.flx b/fn/flx/cdplayer.flx index 217a0e38bab91c2ab2e509d6ce21a40787d88ad2..b0fc8df7da8e7ca31f6d020b17abd5468f440fbf 100644 GIT binary patch delta 30 lcmdn#z0-Swj<8!!YK4Nci$Xw7Vr6QPLYbkS;YRx^RRE~J3Qzz5 delta 30 lcmdn#z0-Swj&QJtqkpi1vx{y(PGV(hkwTfF-bVW>RRE%R3L5|b diff --git a/fn/flx/fneditor.flx b/fn/flx/fneditor.flx index 8e873135527a52316842f4e13050af4cafe241ee..06cb00c8ac370ea8111edd146d9906f25bc130a9 100644 GIT binary patch delta 18 acmbOkJu`a4cXn1oLp=l2&41YEssaE;{s##F delta 18 acmbOkJu`a4cXn1IBRvDd&41YEssaE;`3DC8 diff --git a/fn/flx/fnviewer.flx b/fn/flx/fnviewer.flx index 64d720b0f3e0e7a569dd87d45f82d5c5e5e26ea9..d56329a2ce0185b7c6f14b3eba4d97d0bc762c43 100644 GIT binary patch delta 18 ZcmdmOwA*MyDm$y8p`L;1<}CJ$f&e`P1@`~| delta 18 ZcmdmOwA*MyDm$x@k)DC!<}CJ$f&e`K1@!;` diff --git a/fn/flx/help.flx b/fn/flx/help.flx index ebb830f66c7f276c494551a3f241b9bd2f5d3b5f..4e269eae1e388aa364c312bee17fd8063be956e6 100644 GIT binary patch delta 18 ZcmeA(>NDCP#=>Ym*`8Hyvnk6>5dbu71yKM1 delta 18 ZcmeA(>NDCP#=>Ye*`8Hyvnk6>5dbt|1yBG0 diff --git a/fn/fn.exe b/fn/fn.exe index fff59415f7868e968561cad5adf5f2fbb9e8cbc3..20d365af29ca1a0a193c03768fc71dcedebe4588 100644 GIT binary patch delta 15323 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 E-=i`4%>V!Z delta 15172 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 La!Q7rZE^k|kIAhY diff --git a/fn/history.txt b/fn/history.txt index 0031d2d..e3f759e 100644 --- a/fn/history.txt +++ b/fn/history.txt @@ -1,4 +1,9 @@ +11.05.2026 +FlexNavigator 1.16.07 +- получение путей программы и формирование путей до плагинов перенесены + в начало инициализации. + 22.01.2026 FlexNavigator 1.16.06 - для ошибок у которых нет текста описания теперь выдает всегда diff --git a/fn_const.a80 b/fn_const.a80 index ce2ac8c..d7de134 100644 --- a/fn_const.a80 +++ b/fn_const.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 18.01.2026 savelij +; LAST UPDATE: 11.05.2026 savelij NUM_FILES_PANEL EQU 17 ; количество файлов в столбце панели NUM_PAGES_FN EQU 7 ; количество страниц памяти для работы FN @@ -152,9 +152,11 @@ PANEL _SETVAR .BYTES_MARK_H, BYTE ; Кол-во маркированных байтов FAT32 _SETVAR .FILE_MASK, MASK_SIZE ; Маска показа файлов _SETVAR .CURR_PATH, 0x100 ; Текущий путь панели + _SETVAR .SIZE, 0 ; Размер структуры панели PANELFLAG _BITMASK PRNDOSPATH, 7 ; =1-печатать путь DOS + _BITMASK DIRS, 2 ; =1-в помеченных есть директории, =0-только файлы _BITMASK DIRPAGE, 1 ; =1-A-номер страницы, =0-страницы панелей _BITMASK SIDE, 0 ; =1-правая панель, =0-левая панель diff --git a/fn_init.a80 b/fn_init.a80 index 478fa6e..0844f13 100644 --- a/fn_init.a80 +++ b/fn_init.a80 @@ -1,11 +1,14 @@ -; LAST UPDATE: 27.08.2025 savelij +; LAST UPDATE: 11.05.2026 savelij ;[]==========================================================[] -InitVideoMode +InitVideoMode LD A,0x00 +.InitFlg EQU $-1 + OR A + CALL Z,FirstInit SPDSS DSSF.GETVMOD LD C,A ; текущий режим экрана - LD A,(InitFlg) + LD A,(InitVideoMode.InitFlg) OR A JR NZ,.L1 LD A,C @@ -105,18 +108,14 @@ InitDrivers SUB A JR C,.L2 INC A .L2 LD (CMOSFlag),A - LD A,0x00 -InitFlg EQU $-1 - OR A - CALL Z,FirstInit CALL SETUP_DISKS SPMOUSE MOUSEF.INIT LD A,(MouseFlag) OR A LD C,MOUSEF.SHOW - JR NZ,.L1 + JR NZ,.L4 LD C,MOUSEF.HIDE -.L1 +.L4 SPMOUSE ;!TEST enable shared interrupts ;Check BIOS version @@ -259,7 +258,7 @@ FirstInit LD HL,LeftPanel + PANEL.CURR_PATH SPDSS DSSF.CHDIR LD A,0x01 - LD (InitFlg),A + LD (InitVideoMode.InitFlg),A RET .DIRFLX DZ "FLX\\" diff --git a/fn_main.a80 b/fn_main.a80 index d51e90c..8a54859 100644 --- a/fn_main.a80 +++ b/fn_main.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 18.01.2026 savelij +; LAST UPDATE: 30.04.2026 savelij include fn_const.a80 include fn_macros.a80 @@ -236,6 +236,7 @@ HLPBCDE: LD A,(HL) LD (HL),A RET +; получение DWORD по указателю HL GET_DWORD: LD E,(HL) INC HL LD D,(HL) @@ -245,6 +246,7 @@ GET_DWORD: LD E,(HL) LD B,(HL) RET +; установка DWROD по указателю HL SET_DWORD: LD (HL),E INC HL LD (HL),D @@ -254,6 +256,8 @@ SET_DWORD: LD (HL),E LD (HL),B RET +; получение указателя на описатель файла +; A - старший байт адрес буфера с описателями GET_HANDLE_ADR LD L,(IY+PANEL.FIRST_FILE) LD H,(IY+PANEL.FIRST_FILE + 1) LD E,(IY+PANEL.CURR_FILE) @@ -485,10 +489,10 @@ START_BLOCK_2 ; буфера чтобы память не занимали в EXE файле REZ2_BUFFERS _INIT_VAR BUF_REZ2.FlexDIRECTORY - _MINUSVAR .OLDLEFTPANEL, 0x100 ; текущий путь левой панели - _MINUSVAR .OLDRIGHTPANEL, 0x100 ; текущий путь правой панели _MINUSVAR .FINDCURRPATH, 0x100 ; временной текущий путь источника _MINUSVAR .FINDBUF, 0x100 ; временный буфер поиска + _MINUSVAR .OLDLEFTPANEL, PANEL.SIZE ; текущий путь левой панели + _MINUSVAR .OLDRIGHTPANEL, PANEL.SIZE ; текущий путь правой панели _MINUSVAR .ENDPATHSRC, WORD ; адрес хвоста пути источника _MINUSVAR .CURR_DIRNAME, WORD ; текущий адрес в пути diff --git a/fn_sort.a80 b/fn_sort.a80 index 34ef2b8..6d3f1d4 100644 --- a/fn_sort.a80 +++ b/fn_sort.a80 @@ -1,32 +1,58 @@ -; LAST UPDATE: 07.09.2025 savelij +; LAST UPDATE: 09.05.2026 savelij ;[]----------------------------------------------------------[] -; На входе: -; A - номер страницы для работы если бит PANELFLAG.B_DIRPAGE установлен -; иначе не требуется -ReadDIR BIT PANELFLAG.B_DIRPAGE,(IY + PANEL.PANELFLAG) - JR NZ,.RD1 -.RD2 BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) - LD A,(RAMPAGES.LEFTPANEL) - JR Z,.RD1 - LD A,(RAMPAGES.RIGHTPANEL) -.RD1 LD (.DIRPAGE),A - BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) - JP NZ,ReadTreeR +ReadDIRCopy + GETPORT WINSP.CPU3 + PUSH AF + LD A,(IY + PANEL.SORTFLAG) + AND SORTFLAG.MASK + LD A,(RAMPAGES.BuffPg3) + JR Z,.L1 + LD A,(RAMPAGES.BuffPg4) +.L1 + SETPORT WINSP.CPU3,,0 + LD HL,NORMmask +.L2 LD DE,FILEmask + LD BC,MASK_SIZE + LDIR + LD IX,0 + LD HL,CPU3 + LD (AdrNxtFile),HL + LD B,8 +.L3 LD (HL),0 + INC HL + DJNZ .L3 + CALL FindFILES + LD E,IXL + LD D,IXH + LD HL,(AdrNxtFile) + LD B,8 +.L4 LD (HL),0 + INC HL + DJNZ .L4 + POP AF + SETPORT WINSP.CPU3,,0 + LD (IY + PANEL.FILES_ALL),E ;EQUIP FIL + LD (IY + PANEL.FILES_ALL + 1),D + LD HL,(RAMPAGES.BuffPg3) + JP ReadDIR.RD3 + +; загрузка директории для отображения в панели с сортировкой +ReadDIR BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) + JP NZ,ReadTreeR ; переход если панель в режиме дерева GETPORT WINSP.CPU3 PUSH AF LD A,(IY + PANEL.SORTFLAG) AND SORTFLAG.MASK - JR Z,.L6 -; с сортировкой грузим в свободную пагу - LD A,(RAMPAGES.BuffPg4) - JR .L1 - -; без сортировки грузим в страницу панели -.L6 LD A,0 -.DIRPAGE EQU $-1 -.L1 + LD A,(RAMPAGES.BuffPg3) + JR NZ,.RD1 ; с сортировкой грузим во временную страницу +; иначе грузим в страницу панели + BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + LD A,(RAMPAGES.LEFTPANEL) + JR Z,.RD1 + LD A,(RAMPAGES.RIGHTPANEL) +.RD1 SETPORT WINSP.CPU3,,0 PUSH IY POP HL @@ -34,8 +60,6 @@ ReadDIR BIT PANELFLAG.B_DIRPAGE,(IY + PANEL.PANELFLAG) LD E,L LD BC,PANEL.FILE_MASK ADD HL,BC - BIT PANELFLAG.B_DIRPAGE,(IY + PANEL.PANELFLAG) - JR NZ,.L8 EX DE,HL LD BC,PANEL.FILES_ALL ADD HL,BC @@ -43,8 +67,8 @@ ReadDIR BIT PANELFLAG.B_DIRPAGE,(IY + PANEL.PANELFLAG) .L5 LD (HL),0 INC HL DJNZ .L5 -.L8 RES PANELFLAG.B_DIRPAGE,(IY + PANEL.PANELFLAG) - BIT SORTFLAG.B_FILTER,(IY + PANEL.SORTFLAG) + EX DE,HL +.L8 BIT SORTFLAG.B_FILTER,(IY + PANEL.SORTFLAG) JR NZ,.L2 LD HL,NORMmask .L2 LD DE,FILEmask @@ -71,7 +95,14 @@ ReadDIR BIT PANELFLAG.B_DIRPAGE,(IY + PANEL.PANELFLAG) SETPORT WINSP.CPU3,,0 LD (IY + PANEL.FILES_ALL),E ;EQUIP FIL LD (IY + PANEL.FILES_ALL + 1),D - LD A,(IY + PANEL.SORTFLAG) + BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + LD A,(RAMPAGES.LEFTPANEL) + JR Z,.RD2 + LD A,(RAMPAGES.RIGHTPANEL) +.RD2 LD L,A ; куда + LD A,(RAMPAGES.BuffPg3) + LD H,A ; откуда +.RD3 LD A,(IY + PANEL.SORTFLAG) AND SORTFLAG.MASK JP NZ,SortDIR RET @@ -398,15 +429,23 @@ CorrSmallChar CP 'a' ENDIF ; CORR_FILENAME ;[]----------------------------------------------------------[] +; H - SRC номер страницы откуда брать для сортировки +; L - DST номер страницы куда складывать отсортированное SortDIR GETPORT WINSP.CPU1 LD C,A GETPORT WINSP.CPU3 LD B,A PUSH BC - LD A,(ReadDIR.DIRPAGE) +; BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) +; LD A,(RAMPAGES.LEFTPANEL) +; JR Z,.RD1 +; LD A,(RAMPAGES.RIGHTPANEL) +;.RD1 + LD A,L SETPORT WINSP.CPU3,,0 - LD A,(RAMPAGES.BuffPg4) +; LD A,(RAMPAGES.BuffPg3) + LD A,H SETPORT WINSP.CPU1,,0 LD HL,CPU3 LD (EndSort),HL @@ -501,6 +540,14 @@ SortDIR .L3 LD (HL),A INC HL DJNZ .L3 +; GETPORT WINSP.CPU1 +; LD (RAMPAGES.BuffPg3),A +; GETPORT WINSP.CPU3 +; BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) +; LD HL,RAMPAGES.LEFTPANEL +; JR Z,.L2 +; LD HL,RAMPAGES.RIGHTPANEL +;.L2 LD (HL),A POP BC LD A,B SETPORT WINSP.CPU3,,0 diff --git a/fn_version.a80 b/fn_version.a80 index 0015b58..5703915 100644 --- a/fn_version.a80 +++ b/fn_version.a80 @@ -1,7 +1,7 @@ -; LAST UPDATE: 22.01.2026 savelij +; LAST UPDATE: 11.05.2026 savelij FLEX_VERS -.NAVIGATOR EQU "1.16.06" +.NAVIGATOR EQU "1.16.07" .EDITOR EQU "1.11" .VIEWER EQU "1.07" diff --git a/plugins/cdplayer/cdplayer.a80 b/plugins/cdplayer/cdplayer.a80 index 1884ae0..f6a9c4c 100644 --- a/plugins/cdplayer/cdplayer.a80 +++ b/plugins/cdplayer/cdplayer.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 31.07.2025 savelij +; LAST UPDATE: 30.01.2026 savelij include macros.a80 include fn_const.a80 @@ -22,7 +22,7 @@ PluginEntry: MAKEWINDOW WINSUBOBJ.STORE W_MAIN 78,79,484,72 W_FILL 4,2,464,10,COLORI.BLUE + COLORP.BLUE - W_TEXT 8,4,COLORI.WHITE + COLORP.BLUE,"SHAOS CD-Player v\{CDVERS}" + W_TEXT 8,4,COLORI.WHITE + COLORP.BLUE,"Flex CD Player v\{CDVERS}" W_BUTTONTEXT 468,2,12,10,COLORP.HIGHGRAY,"x" W_BORDER 8,15,268,38 W_FILL 10,16,264,36,COLORI.BLACK @@ -261,7 +261,7 @@ CDinit: LD B,0xC0 - 1 CALL CHANGEDISK LD HL,FLAG RES B_TRAY,(HL) -.UPDATE_TOC LD HL,RESULT+6 +.UPDATE_TOC LD HL,RESULT + 6 LD (HL),0xAA LD HL,APCMD.READTOC CALL SEND_PACKET diff --git a/plugins/cdplayer/vers.a80 b/plugins/cdplayer/vers.a80 index 533feed..4132ea7 100644 --- a/plugins/cdplayer/vers.a80 +++ b/plugins/cdplayer/vers.a80 @@ -1,7 +1,7 @@ -; LAST UPDATE: 11.07.2025 savelij +; LAST UPDATE: 11.05.2026 savelij -CDVERS EQU "1.1" +CDVERS EQU "1.11" PAUSE EQU 10 ; шаг в секундах для перемотки PAUSEDIGITS EQU 12 ; пауза моргания цифр в режиме пауза \ No newline at end of file diff --git a/readme.md b/readme.md index 55c1de6..fd7b6bc 100644 --- a/readme.md +++ b/readme.md @@ -3,14 +3,9 @@ Flex Navigator ╨┤╨╗╤П ╨║╨╛╨╝╨┐╤М╤О╤В╨╡╤А╨░ Sprinter ╨б╨╛╨▒╤А╨░╨╜╨╜╤Л╨╡ ╤Д╨░╨╣╨╗╤Л ╨╖╨░╨▒╨╕╤А╨░╤В╤М ╨╕╨╖ ╨┐╨░╨┐╨║╨╕ fn -`FlexNavigator 1.16.06` -- ╨┤╨╗╤П ╨╛╤И╨╕╨▒╨╛╨║ ╤Г ╨║╨╛╤В╨╛╤А╤Л╤Е ╨╜╨╡╤В ╤В╨╡╨║╤Б╤В╨░ ╨╛╨┐╨╕╤Б╨░╨╜╨╕╤П ╤В╨╡╨┐╨╡╤А╤М ╨▓╤Л╨┤╨░╨╡╤В ╨▓╤Б╨╡╨│╨┤╨░ - ╤В╨╡╨║╤Б╤В ╨╛╤И╨╕╨▒╨║╨╕ "Unknown Error". -- ╨╕╤Б╨┐╤А╨░╨▓╨╗╨╡╨╜╨░ ╨╛╤И╨╕╨▒╨║╨░ ╨┐╤А╨╕╨▓╨╛╨┤╤П╤Й╨░╤П ╨║ ╨▓╤Л╨╗╨╡╤В╤Г ╨┐╤А╨╕ ╨║╨╛╨┐╨╕╤А╨╛╨▓╨░╨╜╨╕╨╕ ╨╜╨╡╤Б╨║╨╛╨╗╤М╨║╨╕╤Е ╤Д╨░╨╣╨╗╨╛╨▓ - ╨╜╨░ ╤Г╨╢╨╡ ╤Б╤Г╤Й╨╡╤Б╤В╨▓╤Г╤О╤Й╨╕╨╡ ╨╕ ╨▓╤Л╨▒╨╛╤А╨╡ ╨╛╤В╨╝╨╡╨╜╤Л ╨╛╤В ╨┐╤А╨╛╨┤╨╛╨╗╨╢╨╡╨╜╨╕╤П ╨║╨╛╨┐╨╕╤А╨╛╨▓╨░╨╜╨╕╤П. +`FlexNavigator 1.16.07` +- ╨┐╨╛╨╗╤Г╤З╨╡╨╜╨╕╨╡ ╨┐╤Г╤В╨╡╨╣ ╨┐╤А╨╛╨│╤А╨░╨╝╨╝╤Л ╨╕ ╤Д╨╛╤А╨╝╨╕╤А╨╛╨▓╨░╨╜╨╕╨╡ ╨┐╤Г╤В╨╡╨╣ ╨┤╨╛ ╨┐╨╗╨░╨│╨╕╨╜╨╛╨▓ ╨┐╨╡╤А╨╡╨╜╨╡╤Б╨╡╨╜╤Л + ╨▓ ╨╜╨░╤З╨░╨╗╨╛ ╨╕╨╜╨╕╤Ж╨╕╨░╨╗╨╕╨╖╨░╤Ж╨╕╨╕. -`FileViewer.flx 1.07` -- ╨╝╨╡╨╗╨║╨╛╨╡ ╨╕╤Б╨┐╤А╨░╨▓╨╗╨╡╨╜╨╕╨╡ ╨┐╨╛╨╖╨╕╤Ж╨╕╨╕ ╨▓╤Л╨▓╨╛╨┤╨░ ╨┤╨░╤В╤Л/╨▓╤А╨╡╨╝╨╡╨╜╨╕. - -`FileEditor.flx 1.11` -- ╨╝╨╡╨╗╨║╨╛╨╡ ╨╕╤Б╨┐╤А╨░╨▓╨╗╨╡╨╜╨╕╨╡ ╨┐╨╛╨╖╨╕╤Ж╨╕╨╕ ╨▓╤Л╨▓╨╛╨┤╨░ ╨┤╨░╤В╤Л/╨▓╤А╨╡╨╝╨╡╨╜╨╕. +`Flex CD Player 1.11` +- ╨┐╨╗╨░╨│╨╕╨╜ ╨┐╨╡╤А╨╡╨╕╨╝╨╡╨╜╨╛╨▓╨░╨╜. diff --git a/rez2_fn_funct.a80 b/rez2_fn_funct.a80 index 686f75c..52e0c1b 100644 --- a/rez2_fn_funct.a80 +++ b/rez2_fn_funct.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 22.01.2026 savelij +; LAST UPDATE: 09.05.2026 savelij ;[]==========================================================[] CopyFilesR LD A,(IY + PANEL.FILES_ALL) @@ -33,7 +33,7 @@ CopyFilesR LD A,(IY + PANEL.FILES_ALL) IF MARK_DIR JP NZ,.InitCopyDir ELSE - RET NZ + RET NZ ; копирование директорий нет, выход ENDIF LD HL,0 LD (COPY.CopyFiles),HL @@ -53,6 +53,8 @@ CopyFilesR LD A,(IY + PANEL.FILES_ALL) CALL CalcDirSizeR ; измерение размера директории с файлами POP HL LD (COPY.PathCurrFile),HL + LD HL,(JUMPS.FILES_COUNT) + LD (COPY.CopyFiles),HL LD HL,JUMPS.FILES_BYTES LD DE,COPY.CopyBytes LD BC,DWORD + 1 @@ -194,7 +196,11 @@ CopyNxt LD IX,ProcessAll W_FILL 18,57,284,10,COLORI.WHITE W_END XOR A - LD (COPY.OverWriteFlg),A + LD (COPY.OverWriteFlg),A ; сброс флага перезаписи файла + LD (COPY.LevelDir),A ; сброс уровня вхождения в директории + LD H,A + LD L,A + LD (COPY.PathCurrRoot),HL LD HL,CurPath LD DE,0 ; адрес отредактированного пути приемника .NEWPATH EQU $-2 @@ -209,19 +215,15 @@ CopyNxt LD IX,ProcessAll PUSH AF LD (CopyDir.CURR_PANEL),IY ; при копировании файла портится IF MARK_DIR -; текущую директорию грузим в свободную страницу - LD A,(RAMPAGES.BuffPg3) - SETPORT WINSP.CPU3,,0 - SET PANELFLAG.B_DIRPAGE,(IY + PANEL.PANELFLAG) - CALL ReadDIR - ELSE +; текущую директорию грузим в свободную страницу для копирования директорий + CALL ReadDIRCopy + ENDIF BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) LD A,(RAMPAGES.LEFTPANEL) JR Z,.L3 LD A,(RAMPAGES.RIGHTPANEL) .L3 SETPORT WINSP.CPU3,,0 - ENDIF ; копирование файлов/директорий CopyNextFile LD IX,(COPY.PathCurrFile) IF MARK_DIR @@ -313,7 +315,7 @@ CopyNextFile LD IX,(COPY.PathCurrFile) AND A ; OverWrite.REWRITE JR Z,.CopyLp2 ; продолжать с перезаписью DEC A ; OverWrite.SKIP - JP Z,CopyNextFile.CloseFile1 ; пропуск копирования + JP Z,.CloseFile1 ; пропуск копирования ; прерывание копирования OverWrite.BREAK LD A,(COPY.FHandleSrc) SPDSS DSSF.CLOSE @@ -448,6 +450,7 @@ CopyNextFile LD IX,(COPY.PathCurrFile) SPDSS DSSF.CLOSE LD A,(COPY.MemID) SPDSS DSSF.FREEMEM +; файл скопирован, проверяем есть ли еще что-то .NextHandle LD IX,(COPY.PathCurrFile) RES FileHDR.B_MARK,(IX + FileHDR.Flag) LD HL,(COPY.CopyBytes) @@ -481,6 +484,11 @@ CopyNextFile LD IX,(COPY.PathCurrFile) LD HL,(COPY.PathCurrFile) LD DE,FileHDR.SIZE .L5 ADD HL,DE ; следующий описатель + INC HL + LD A,(HL) + DEC HL + AND A + JR Z,CopyDir ; директория кончилась BIT FileHDR.B_MARK,(HL) JR Z,.L5 LD (COPY.PathCurrFile),HL @@ -489,8 +497,14 @@ CopyNextFile LD IX,(COPY.PathCurrFile) ; копирование директории CopyDir LD IY,0 .CURR_PANEL EQU $-2 - CALL DIRLIST.GET_DIRNAME ; получение имени диры, если есть - JP C,CopyEnd ; C=1 текущая дира кончилась или их нет + LD DE,(COPY.PathCurrRoot) + LD A,D + OR E + JR NZ,.L1 + LD HL,(COPY.PathCurrFile) + LD (COPY.PathCurrRoot),HL +.L1 CALL DIRLIST.GET_DIRNAME ; получение имени диры, если есть + JR C,.CopyEnd ; C=1 текущая дира кончилась или их нет CALL DIRLIST.ADD_DIRLEVEL ; добавление списка диры PUSH IY LD HL,(COPY.PathDst) @@ -500,16 +514,41 @@ CopyDir LD IY,0 SPDSS DSSF.CHDIR ; смена текущего пути ; CALL C,DOSError POP IY - LD A,(RAMPAGES.BuffPg3) - SET PANELFLAG.B_DIRPAGE,(IY + PANEL.PANELFLAG) - CALL ReadDIR + LD A,(RAMPAGES.BuffPg3) ; для копирования диры включаем страницу с поддиректорией + SETPORT WINSP.CPU3,,0 + CALL ReadDIRCopy CALL DIRLIST.MARK_ALL ; маркировка всех файлов/дир LD HL,0xC000 + FileHDR.SIZE LD (COPY.PathCurrFile),HL JP CopyNextFile -BUF_MARKDIR -.DIR_NAME DZ " " ; имя текущей директории +; директория скопирована, проверка в корне окончания описателей +.CopyEnd LD HL,LeftPanel + PANEL.CURR_PATH + CALL DIRLIST.FIND_END_LINE + LD HL,RightPanel + PANEL.CURR_PATH + CALL DIRLIST.FIND_END_LINE + BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + LD A,(RAMPAGES.LEFTPANEL) + JR Z,.L2 + LD A,(RAMPAGES.RIGHTPANEL) +.L2 + SETPORT WINSP.CPU3,,0 + XOR A + LD HL,COPY.PathCurrRoot + LD E,(HL) + LD (HL),A + INC HL + LD D,(HL) + LD (HL),A + EX DE,HL + LD DE,FileHDR.SIZE + 1 + ADD HL,DE + LD A,(HL) + SBC HL,DE + DEC DE + AND A + JP NZ,CopyNextFile.L5 ; есть еще что копировать + JP CopyEnd ; больше ничего не осталось DIRLIST ; пометка всех файлов/дир @@ -537,13 +576,15 @@ DIRLIST EXX JR .MLNEXT -; добавление имени диры в список, создание диры на приемнике +; добавление имени диры в список .ADD_DIRNAME PUSH IX POP HL INC HL LD DE,BUF_MARKDIR.DIR_NAME LD BC,8 LDIR ; забрали имя диры до переключения паг + LD HL,COPY.LevelDir + INC (HL) ; добавление уровня директории LD A,(RAMPAGES.FLX) LD C,WINSP.CPU3 IN B,(C) @@ -558,6 +599,7 @@ DIRLIST LD L,C JR .ANNEXT +; найдено свободное место .ANFOUND PUSH HL LD HL,BUF_MARKDIR.DIR_NAME LD BC,8 @@ -607,6 +649,19 @@ DIRLIST INC HL RET +; поиск конца строки +.FIND_END_LINE LD A,(HL) + INC HL + AND A + JR NZ,.FIND_END_LINE +.FEL1 DEC HL + LD A,(HL) + CP '\\' + JR NZ,.FEL1 + INC HL + LD (HL),0 + RET + ; отсечение пробелов в имени .CUTOFFSPACES LD A,' ' .COS2 DEC HL @@ -631,9 +686,10 @@ DIRLIST LD L,C JR .ALNEXT -.ALFOUND LD (HL),D +.ALFOUND +; LD (HL),D DEC HL - LD (HL),E +; LD (HL),E LD H,D LD L,E INC DE @@ -657,6 +713,8 @@ DIRLIST IN B,(C) PUSH BC OUT (C),A + LD HL,COPY.LevelDir + DEC (HL) ; уменьшение уровня директории .GNRESTART LD HL,0xC000 .GNNEXT CALL GET_DWORD LD A,B @@ -760,12 +818,12 @@ DIRLIST .L1 LD (COPY.PathSrc),HL EX DE,HL LD (COPY.PathDst),HL + XOR A .L2 INC HL CP (HL) JR NZ,.L2 LD (COPY.PathDstEnd),HL EX DE,HL - XOR A .L3 INC HL CP (HL) JR NZ,.L3 @@ -790,37 +848,50 @@ DIRLIST SETPORT WINSP.CPU3,,0 RET -; сохранение путей панелей -StorePaths LD HL,LeftPanel + PANEL.CURR_PATH +; сохранение описателей панелей +StorePaths + GETPORT WINSP.CPU1 + LD (COPY.PageStorePaths),A + LD HL,LeftPanel LD DE,REZ2_BUFFERS.OLDLEFTPANEL - LD BC,PANEL.CURR_PATH_Size + LD BC,PANEL.SIZE LDIR - LD HL,RightPanel + PANEL.CURR_PATH + LD HL,RightPanel LD DE,REZ2_BUFFERS.OLDRIGHTPANEL - LD BC,PANEL.CURR_PATH_Size + LD BC,PANEL.SIZE LDIR RET -; восстановление путей панелей -RestorePaths LD HL,REZ2_BUFFERS.OLDLEFTPANEL - LD DE,LeftPanel + PANEL.CURR_PATH - LD BC,PANEL.CURR_PATH_Size +; восстановление описателей панелей +RestorePaths LD A,(COPY.PageStorePaths) + AND A + RET Z ; сохранения не было, выходим + GETPORT WINSP.CPU1 + EX AF,AF' + LD HL,COPY.PageStorePaths + LD A,(HL) + LD (HL),0 + SETPORT WINSP.CPU1,,0 + LD HL,REZ2_BUFFERS.OLDLEFTPANEL + LD DE,LeftPanel + LD BC,PANEL.SIZE LDIR LD HL,REZ2_BUFFERS.OLDRIGHTPANEL - LD DE,RightPanel + PANEL.CURR_PATH - LD BC,PANEL.CURR_PATH_Size + LD DE,RightPanel + LD BC,PANEL.SIZE LDIR + EX AF,AF' + SETPORT WINSP.CPU1,,0 RET ; подсчет в байтах размера отмеченной директории CalcDirSizeR: PUSH IX PUSH IY + SET PANELFLAG.B_DIRS,(IY + PANEL.PANELFLAG) GETPORT WINSP.CPU3 PUSH AF ; текущий номер страницы LD (.CURR_PANEL),IY - LD A,(RAMPAGES.BuffPg3) - SET PANELFLAG.B_DIRPAGE,(IY + PANEL.PANELFLAG) - CALL ReadDIR + CALL ReadDIRCopy LD A,(RAMPAGES.BuffPg3) SETPORT WINSP.CPU3,,0 LD A,HIGH (CPU3) @@ -881,9 +952,7 @@ CalcDirSizeR: PUSH IX SPDSS DSSF.CHDIR ; смена текущего пути ; CALL C,DOSError POP IY - LD A,(RAMPAGES.BuffPg3) - SET PANELFLAG.B_DIRPAGE,(IY + PANEL.PANELFLAG) - CALL ReadDIR + CALL ReadDIRCopy CALL DIRLIST.MARK_ALL ; маркировка всех файлов/дир LD HL,0xC000 + FileHDR.SIZE LD (COPY.PathCurrFile),HL @@ -985,6 +1054,7 @@ CopyError1 PUSH AF CALL DOSError JP CopyEnd +; прерывание копирования CopyBreak POP HL POP AF SETPORT WINSP.CPU3,,0 @@ -2112,13 +2182,16 @@ MDIRLen DB 0x00 NewDIR DB 0x0D DUP 0x00 ;[]==========================================================[] +; удаление файлов/директорий DeleteFilesR LD A,(IY + PANEL.FILES_ALL) OR (IY + PANEL.FILES_ALL + 1) - RET Z + RET Z ; файлов нет + BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) + RET NZ ; режим отображения панели - дерево SETPORT WINSP.Y_PORT,0xC0 LD A,(IY + PANEL.FILES_MARK) OR (IY + PANEL.FILES_MARK + 1) - JR NZ,DeleteMark + JR NZ,DeleteMark ; есть помеченные файлы ; удаление под курсором файла/директории GETPORT WINSP.CPU3 PUSH AF @@ -2128,13 +2201,14 @@ DeleteFilesR LD A,(IY + PANEL.FILES_ALL) LD A,(RAMPAGES.RIGHTPANEL) .L1 SETPORT WINSP.CPU3,,0 + if 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 BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) - JR Z,DelFile + JR Z,.DelFile ADD HL,HL ADD HL,HL ADD HL,HL @@ -2143,9 +2217,9 @@ DeleteFilesR LD A,(IY + PANEL.FILES_ALL) SET 7,H LD (AdrDelFile),HL INC HL - JR DelFil1 + JR .DelFil1 -DelFile ADD HL,HL +.DelFile ADD HL,HL ADD HL,HL ADD HL,HL LD E,L @@ -2155,17 +2229,38 @@ DelFile ADD HL,HL SET 6,H SET 7,H LD (AdrDelFile),HL -DelFil1 INC HL +.DelFil1 INC HL LD E,(HL) POP AF SETPORT WINSP.CPU3,,0 + else ; if 0 + LD IX,WorkBuffer + LD A,HIGH (CPU3) + CALL GET_HANDLE_ADR + LD (AdrDelFile),HL + LD DE,WorkBuffer + LD BC,FileHDR.SIZE + LDIR ; копирование текущего описателя + POP AF + SETPORT WINSP.CPU3,,0 +; BIT DIR.B_Dir,(IX + FileHDR.Attr) +; IF MARK_DIR +; JP NZ,.InitDeleteDir ; переход на подготовку удаления диры +; ELSE +; RET NZ ; выход если директория +; ENDIF + endif ; if 0 LD A,E - CP '.' ; в имени файла в описателе? странная проверка + CP '.' ; нельзя удалить запись ".." RET Z - CP '\\' ; в имени файла в описателе? еще странней + CP '\\' ; в имени файла в описателе? что за проверка? RET Z JR DelNext +; удаление диры со всем содержимым +;.InitDeleteDir CALL StorePaths ; сохранение текущих путей панелей +; JR DelNext + ; удаление маркированных файлов/директорий DeleteMark GETPORT WINSP.CPU3 @@ -2268,9 +2363,7 @@ DelJump WINDOWCLOSE JP (HL) -AdrDelFile DEFW 0x0000 -DeleteFlag DEFB 0x00 - +; создание имени удаляемого файла/директории MakeDELname LD HL,(AdrDelFile) INC HL BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) @@ -2330,7 +2423,8 @@ DeleteSkip LD C,(IY + PANEL.FILES_MARK) ; удаление одного файла/диры DeleteOne CALL PointerMouseClock BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) - JR Z,DelDel0 + JR Z,.DelDel0 +; для режима показа дерева жиректорий PUSH IY POP HL LD DE,PANEL.CURR_PATH @@ -2356,7 +2450,7 @@ DeleteOne CALL PointerMouseClock CALL C,DOSError POP AF JP C,DeleteExit -DelDel0 LD IX,(AdrDelFile) +.DelDel0 LD IX,(AdrDelFile) LD DE,WorkBuffer PUSH DE CALL MakeDELname @@ -2382,6 +2476,7 @@ DelDel2 LD A,0x01 CALL PointerMousePointer JP DeleteSkip +; удаление всех файлов/директорий DeleteAll BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) JR NZ,DeleteOne LD A,0x01 @@ -2413,6 +2508,7 @@ DeleteAll BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) LD (IX + PROGRESSBAR.MAX_PAGES + 2),A LD (IX + PROGRESSBAR.MAX_PAGES + 3),A CALL InitProgressBar +; начало циклического удаления DeleteAllLp LD HL,0x0000 DelFrom EQU $-2 LD DE,WorkBuffer @@ -2795,11 +2891,18 @@ DeleteExt1 INC SP POP IY RET -DelName DB 13 DUP 0 - ;-------------------------------------------------------------- + +BUF_MARKDIR ; 01234567 +.DIR_NAME DZ " " ; имя текущей директории +.DIR_PREV DZ ".." +DelName DB 13 DUP 0 +AdrDelFile DW 0 +DeleteFlag DB 0 + COPY .PathCurrFile DW 0 ; Адрес описателя текущего файла/диры +.PathCurrRoot DW 0 ; Адрес описателя в директории старта копирования .PathSrc DW 0 ; Адрес пути источника .PathDst DW 0 ; Адрес пути приемника .PathSrcEnd DW 0 ; Адрес хвоста пути источника @@ -2810,6 +2913,8 @@ COPY .FreeBanks DW 0 ; Количество свободных банков .CurrReadBytes DD 0 ; Длина читаемого файла .CurrWriteBytes DD 0 ; Длина записываемого файла +.LevelDir DB 0 ; Уровень вхождения в директории от текущей позиции копирования +.PageStorePaths DB 0 ; Страница сохраненных описателей панелей .FHandleSrc DB 0 ; Файл источник .FHandleDst DB 0 ; Файл приемник .MemID DB 0 ; Идентификатор памяти под копирование