From e4977b4a6f07d36b15a766dbdd2fe006b81f12b3 Mon Sep 17 00:00:00 2001 From: savelij13 Date: Sat, 2 Aug 2025 23:49:42 +0300 Subject: [PATCH] =?UTF-8?q?FlexNavigator=201.16.02=20-=20=D0=BF=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=D0=B4=D0=B5=D0=BB=D0=B0=D0=BD=D0=BE=20=D0=BE=D1=82?= =?UTF-8?q?=D0=BE=D0=B1=D1=80=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B4?= =?UTF-8?q?=D0=B0=D1=82=D1=8B/=D0=B2=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=B8,?= =?UTF-8?q?=20=D0=B2=20=D1=80=D0=B5=D0=B6=D0=B8=D0=BC=D0=B5=201=20(=D1=84?= =?UTF-8?q?=D0=BE=D1=80=D0=BC=D0=B0=D1=82=2002.08.2025)=20=20=20=D0=BD?= =?UTF-8?q?=D0=B5=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=D1=8C=D0=BD=D0=BE=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BD=D0=B2=D0=B5=D1=80=D1=82=D0=B8=D0=BB=D0=BE=20?= =?UTF-8?q?=D0=B3=D0=BE=D0=B4.=20-=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=20=D0=BE=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20Flex=20Navigator=20API=20=D0=B4=D0=BE=20=D0=B2=D0=B5?= =?UTF-8?q?=D1=80=D1=81=D0=B8=D0=B8=200.5.=20-=20=D1=83=D0=B4=D0=B0=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=BE=D0=B4=D0=B8=D0=BD=20=D0=B4=D0=B6=D0=B0?= =?UTF-8?q?=D0=BC=D0=BF=20=D0=B8=D0=B7=20=D1=82=D0=B0=D0=B1=D0=BB=D0=B8?= =?UTF-8?q?=D1=86=D1=8B=20=D0=B7=D0=B0=20=D0=BD=D0=B5=D0=BD=D0=B0=D0=B4?= =?UTF-8?q?=D0=BE=D0=B1=D0=BD=D0=BE=D1=81=D1=82=D1=8C=D1=8E.=20-=20=D0=B1?= =?UTF-8?q?=D0=BE=D0=BB=D1=8C=D1=88=D0=BE=D0=B5=20=D0=BF=D0=B5=D1=80=D0=B8?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BC?= =?UTF-8?q?=D0=B5=D1=82=D0=BE=D0=BA,=20=D0=BF=D0=B5=D1=80=D0=B5=D1=81?= =?UTF-8?q?=D0=B1=D0=BE=D1=80=D0=BA=D0=B0=20=D0=B2=D1=81=D0=B5=D0=B3=D0=BE?= =?UTF-8?q?=20=D0=B4=D0=BB=D1=8F=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80?= =?UTF-8?q?=D0=BA=D0=B8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.bat | 6 +- docs/fn_api_0.5.txt | 139 ++++----- docs/history.txt | 8 + fn/flx/calc.flx | Bin 1227 -> 1226 bytes fn/flx/date.flx | Bin 1324 -> 1319 bytes fn/flx/fneditor.flx | Bin 11675 -> 11673 bytes fn/flx/fnviewer.flx | Bin 6459 -> 6459 bytes fn/flx/help.flx | Bin 6364 -> 6364 bytes fn/fn.exe | Bin 48659 -> 49275 bytes fn/history.txt | 8 + fn_const.a80 | 101 ++++--- fn_version.a80 | 4 +- fnbar.a80 | 236 +++++++-------- fndos.a80 | 18 +- fndosline.a80 | 36 +-- fninit.a80 | 51 ++-- fninput.a80 | 16 +- fnmain.a80 | 526 +++++++++++++++------------------- fnmenu.a80 | 20 +- fnmouse.a80 | 20 +- fnpanel.a80 | 28 +- fnprint.a80 | 22 +- fnsort.a80 | 4 +- fnsys.a80 | 364 ++++++++++++----------- fntab.a80 | 38 +-- fntree.a80 | 4 +- fnwin.a80 | 27 +- fnwork.a80 | 34 +-- plugins/build_all.bat | 2 +- plugins/calc/calc.a80 | 87 +++--- plugins/cdplayer/build.bat | 2 +- plugins/cdplayer/cdplayer.a80 | 12 +- plugins/date/date.a80 | 45 ++- plugins/fneditor/feditor.a80 | 36 +-- plugins/fneditor/fedos.a80 | 64 ++--- plugins/fneditor/fehex.a80 | 46 ++- plugins/fneditor/feprn.a80 | 34 +-- plugins/fneditor/fesetup.a80 | 28 +- plugins/fneditor/fetext.a80 | 36 +-- plugins/fnviewer/fvhex.a80 | 18 +- plugins/fnviewer/fviewer.a80 | 74 ++--- plugins/fnviewer/fvprn.a80 | 34 +-- plugins/fnviewer/fvtext.a80 | 14 +- plugins/help/help.a80 | 18 +- plugins/test/test.a80 | 6 +- rez2_fnconfig.a80 | 46 +-- rez2_fnerror.a80 | 18 +- rez2_fnfunct.a80 | 204 ++++++------- rez2_fnmisc.a80 | 118 ++++---- rez2_fnsearch.a80 | 6 +- rez2_fntab1.a80 | 40 +-- rez3_fnmark.a80 | 68 +++-- 52 files changed, 1397 insertions(+), 1369 deletions(-) diff --git a/build.bat b/build.bat index 5c74a2d..c2f1e68 100644 --- a/build.bat +++ b/build.bat @@ -18,9 +18,9 @@ asl -U -L -C -x -olist tmp\fnexeboot.lst -i %includes% -D NO_EDIT,NO_VIEW,NO_HEL p2bin fn_exe_boot.p tmp\fn.exe -r $-$ -k rem Flex Navigator Plugins -rem cd plugins -rem call build_all -rem cd .. +cd plugins +call build_all +cd .. copy /Y /B tmp\fn.exe fn\fn.exe copy /Y /B plugins\*.flx fn\flx diff --git a/docs/fn_api_0.5.txt b/docs/fn_api_0.5.txt index 8c8d2da..ec8bff7 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 от 26.07.2025 (в процессе) * +* doc v0.5 от 02.08.2025 * * * []========================================================================[] @@ -137,7 +137,8 @@ []------------------------------------------------------------------------[] - JUMPS.InvertRectan - процедура замены цвета прямоугольной плоскости + JUMPS.ReplaceColorRectan - процедура замены цвета прямоугольной + плоскости на вход: HL - x координата @@ -156,7 +157,7 @@ []------------------------------------------------------------------------[] - JUMPS.PrnTxtLnIFF - процедура вывода текстовых строк на графический + JUMPS.PrintTxtLine_IFF - процедура вывода текстовых строк на графический экран 640x256 в режиме размерного по X шрифта на вход: @@ -170,7 +171,7 @@ []------------------------------------------------------------------------[] - JUMPS.PrnTxtLnNorm - процедура вывода текстовых строк на графический + JUMPS.PrintTxtLine - процедура вывода текстовых строк на графический экран 640x256 на вход: @@ -184,8 +185,8 @@ []------------------------------------------------------------------------[] - JUMPS.PrnTxtLnNormC - процедура вывода текстовых строк на графический - экран 640x256 с известным числом символов + JUMPS.PrintTxtLineNumsChar - процедура вывода текстовых строк на + графический экран 640x256 с известным числом символов на вход: HL - адрес текстовой строки @@ -199,7 +200,7 @@ []------------------------------------------------------------------------[] - JUMPS.PrnRangPathL - процедура вывода досовских путей на графический + JUMPS.PrintPathLeft - процедура вывода досовских путей на графический экран 640x256 в режиме размерного по X шрифта, прижатых к левому краю ( |-> ) @@ -218,7 +219,7 @@ []------------------------------------------------------------------------[] - JUMPS.PrnRangPathR - процедура вывода досовских путей на графический + JUMPS.PrintPathRight - процедура вывода досовских путей на графический экран 640x256 в режиме размерного по X шрифта, прижатых к правому краю ( <-| ) @@ -237,7 +238,7 @@ []------------------------------------------------------------------------[] - JUMPS.PrnRangPathC - процедура вывода досовских путей на графический + JUMPS.PrintPathCentr - процедура вывода досовских путей на графический экран 640x256 в режиме размерного по X шрифта, отцентрированных относительно краёв ( <-|-> ) @@ -278,8 +279,8 @@ +0C ... сама строка процедуры для таблицы элементов экрана: - JUMPS.InpLnExtN - процедура нормального выхода из редакции - JUMPS.InpLnExtC - процедура выхода из редакции по cancel + JUMPS.InputLineExitOk - процедура нормального выхода из редакции + JUMPS.InputLineExitCancel - процедура выхода из редакции по cancel (восстанавливает изначальную строку) []------------------------------------------------------------------------[] @@ -317,7 +318,7 @@ []------------------------------------------------------------------------[] - JUMPS.PrnHScrBar - процедура печати горизонтального скроллбара + JUMPS.DrawHScrollBar - процедура вывода горизонтального скроллбара на вход: IX - адрес описателя скроллбара (см. выше) @@ -326,7 +327,7 @@ []------------------------------------------------------------------------[] - JUMPS.PrnVScrBar - процедура печати вертикального скроллбара + JUMPS.DrawVScrollBar - процедура печати вертикального скроллбара на вход: IX - адрес описателя скроллбара (см. выше) @@ -335,7 +336,7 @@ []------------------------------------------------------------------------[] - JUMPS.InitProcess - процедура инициализации описателя процессбара + JUMPS.InitProgressBar - процедура инициализации описателя прогрессбара на вход: IX - адрес описателя процессбара @@ -346,16 +347,17 @@ +00 (2) X позиция процессбара (0-639) +02 (2) Y позиция процессбара (0-255) +04 (2) длина процессбара - +06 (2) коэффициент для процесса (инициализируется в InitProcess) - +08 (2) коррекция коэфициента (инициализируется в InitProcess) - +10 (4) максимум (инициализируется в InitProcess) - +14 (4) текущее (инициализируется в InitProcess) + +06 (2) коэффициент для процесса (инициализируется в + InitProgressBar) + +08 (2) коррекция коэфициента (инициализируется в InitProgressBar) + +10 (4) максимум (инициализируется в InitProgressBar) + +14 (4) текущее (инициализируется в InitProgressBar) +18 (1) цвет процессбара (d7-d4 цвет background, d3-d0 цвет foreground) []------------------------------------------------------------------------[] - JUMPS.PrnProcess - процедура печати процессбара + JUMPS.DrawProgressBar - процедура печати прогрессбара на вход: IX - адрес описателя процессбара (см. выше) @@ -369,8 +371,8 @@ []------------------------------------------------------------------------[] - JUMPS.ResFire - процедура ожидания, пока все кнопки мыши не будут - отпущены + JUMPS.WaitUnpressMouse - процедура ожидания, пока все кнопки мыши не + будут отпущены на вход: - @@ -379,7 +381,7 @@ []------------------------------------------------------------------------[] - JUMPS.TestCoords - процедура проверки координат мыши по таблице + JUMPS.CheckCoordsMouse - процедура проверки координат мыши по таблице элементов экрана на вход: @@ -388,10 +390,10 @@ - таблица элементов зкрана: - +00 (2) левая x координата элемента - +02 (2) правая x координата элемента - +04 (2) верхняя y координата элемента - +06 (2) нижняя y координата элемента + +00 (2) левая X координата элемента + +02 (2) правая X координата элемента + +04 (2) верхняя Y координата элемента + +06 (2) нижняя Y координата элемента +08 (2) флаги элемента +10 (2) адрес обработчика при не нажатом огне +12 (2) адрес обработчика при нажатом огне (левая кнопка) @@ -434,24 +436,24 @@ []------------------------------------------------------------------------[] - JUMPS.SetCMOSPrint - процедура включения печати даты/время из CMOS + JUMPS.CMOSPrintDateTime - процедура печати на экране даты/время из CMOS на вход: - - будет описано позднее + HL - X позиция вывода времени + DE - Y позиция вывода времени + B - цвет вывода времени + HL' - X позиция вывода даты + DE' - Y позиция вывода даты + B' - цвет вывода даты + A - формат вывода месяца в дате + 1 - месяц выводится числом + 2 - месяц выводится текстом, + число выводится без ведущего нуля на выход: - []------------------------------------------------------------------------[] - JUMPS.ResCMOSPrint - процедура выключения печати даты/время из CMOS - - на вход: - - будет описано позднее - на выход: - - - -[]------------------------------------------------------------------------[] - - JUMPS.SetClock - процедура установки курсора мыши в часы + JUMPS.PointerMouseClock - процедура установки курсора мыши в часы на вход: - @@ -460,7 +462,8 @@ []------------------------------------------------------------------------[] - JUMPS.SetMouse - процедура установки курсора мыши в нормальный курсор + JUMPS.PointerMousePointer - процедура установки курсора мыши в + нормальный курсор на вход: - @@ -474,8 +477,8 @@ []------------------------------------------------------------------------[] - JUMPS.ConvNumTxt40 - процедура конвертации беззнакового числа - 40 bit в текст + JUMPS.ConvertNumbers_40b - процедура конвертации беззнакового числа + 40 bit в текст с удалением ведущих нулей. на входе: ABCHL - число @@ -484,7 +487,7 @@ []------------------------------------------------------------------------[] - JUMPS.MoveBytes - процедура быстрого копирования памяти с помощью + JUMPS.MoveBytesInc - процедура быстрого копирования памяти с помощью акселлератора с увеличением адресов на вход: @@ -497,7 +500,7 @@ []------------------------------------------------------------------------[] - JUMPS.MoveBytesUp - процедура быстрого копирования памяти с помощью + JUMPS.MoveBytesDec - процедура быстрого копирования памяти с помощью акселлератора с уменьшением адресов на вход: @@ -510,7 +513,7 @@ []------------------------------------------------------------------------[] - JUMPS.Mult8 - процедура беззнакового умножения + JUMPS.Mul_8X8_16b - процедура беззнакового умножения 8 * 8 bit = 16 bit на вход: @@ -520,7 +523,7 @@ []------------------------------------------------------------------------[] - JUMPS.Mult16X8 - процедура беззнакового умножения + JUMPS.Mul_16X8_24b - процедура беззнакового умножения 16 * 8 bit = 24 bit на вход: @@ -530,7 +533,7 @@ []------------------------------------------------------------------------[] - JUMPS.Mult16 - процедура беззнакового умножения + JUMPS.Mul_16X16_16b - процедура беззнакового умножения 16 * 16 bit = 16 bit на вход: @@ -540,27 +543,27 @@ []------------------------------------------------------------------------[] - JUMPS.Mult16X16 - процедура беззнакового умножения + JUMPS.Mul_16X16_32b - процедура беззнакового умножения 16 * 16 bit = 32 bit на вход: DE * BC на выход: - HL, DE - результат + HLDE - результат []------------------------------------------------------------------------[] - JUMPS.Mult32 - процедура беззнакового умножения + JUMPS.Mul_32X16_32b - процедура беззнакового умножения 32 * 16 bit = 32 bit на вход: - HL, DE * BC + HLDE * BC на выход: - HL, DE - результат + HLDE - результат []------------------------------------------------------------------------[] - JUMPS.Divis16X16 - процедура беззнакового деления + JUMPS.Div_16X16_16b_16b - процедура беззнакового деления 16 / 16 bit = 16.16 bit на вход: @@ -571,52 +574,52 @@ []------------------------------------------------------------------------[] - JUMPS.Divis24X16 - процедура беззнакового деления + JUMPS.Div_24X16_8b_16b - процедура беззнакового деления 24 / 16 bit = 8.16 bit на вход: - HL, C / DE + HLC / DE на выход: A - результат HL - остаток []------------------------------------------------------------------------[] - JUMPS.Divis32X16 - процедура беззнакового деления + JUMPS.Div_32X16_16b_16b - процедура беззнакового деления 32 / 16 bit = 16.16 bit на вход: - HL, DE / BC + HLDE / BC на выход: DE - результат HL - остаток []------------------------------------------------------------------------[] - JUMPS.Divis32 - процедура беззнакового деления + JUMPS.Div_32X16_32b_16b - процедура беззнакового деления 32 / 16 bit = 32.16 bit на вход: - HL, DE / BC + HLDE / BC на выход: HL, DE - результат BC - остаток []------------------------------------------------------------------------[] - JUMPS.ConvNumTxt32 - процедура конвертации беззнакового числа - 32 bit в текст + JUMPS.ConvertNumbers_32b - процедура конвертации беззнакового числа + 32 bit в текст с удалением ведущих нулей. на вход: - BC, HL - число 32 bit + BCHL - число 32 bit DE - адрес буфера на выход: DE - адрес следующего байта за числом []------------------------------------------------------------------------[] - JUMPS.ConvNumTxt16 - процедура конвертации беззнакового числа - 16 bit в текст + JUMPS.ConvertNumbers_16b - процедура конвертации беззнакового числа + 16 bit в текст с удалением ведущих нулей. на вход: HL - число 16 bit @@ -626,8 +629,8 @@ []------------------------------------------------------------------------[] - JUMPS.ConvNumTxt8 - процедура конвертации беззнакового числа - 8 bit в текст + JUMPS.ConvertNumbers_8b- процедура конвертации беззнакового числа + 8 bit в текст с удалением ведущих нулей. на вход: A - число 8 bit @@ -637,18 +640,18 @@ []------------------------------------------------------------------------[] - JUMPS.ConvTxtNum32 - процедура конвертации текста в беззнаковое + JUMPS.atoi_32b - процедура конвертации текста в беззнаковое число 32 bit на вход: DE - адрес текста (конец строки - 0) на выход: - HL, IX - число + HLIX - число C flag - ошибка []------------------------------------------------------------------------[] - JUMPS.ConvTxtNum16 - процедура конвертации текста в беззнаковое + JUMPS.atoi_16b - процедура конвертации текста в беззнаковое число 16 bit на вход: diff --git a/docs/history.txt b/docs/history.txt index ce19b20..4a49b96 100644 --- a/docs/history.txt +++ b/docs/history.txt @@ -1,4 +1,12 @@ +02.08.2025 +FlexNavigator 1.16.02 +- переделано отображение даты/времени, в режиме 1 (формат 02.08.2025) + неправильно конвертило год. +- обновлено описание Flex Navigator API до версии 0.5. +- удален один джамп из таблицы за ненадобностью. +- большое перименование меток, пересборка всего для проверки. + 29.07.2025 FileEditor.flx 1.10 - устранено перепутанные кнопки для нажатий мышью для F7 и F9. diff --git a/fn/flx/calc.flx b/fn/flx/calc.flx index a2a85c09555f37187abd475481d3d23dea9769b5..756f11cd944b44a4a89a0a6e69c2e55cfb111e22 100644 GIT binary patch delta 462 zcmYk%ze>YE0LSsWDwS3T4@4|3IjW-)GM462w+_C6LlCJVDy2&4A0#PQjH8gv!NC`B zaBxn4TO^O*TLg5F==GW--gIB??sIn^mALZw?O%bdP}(PAl57XO3sx_x2i7Xe13N0} z25eB&nNp^?a;_9z7fR7}s}x;*A8bge&SS-dIdh^IT^+^f8Y@QEy;7d?bFNZe@|q|` z*A&d5RM!w2^FQU8w1Z>^pZp=Lmb$wF!n7Q`S~jdE%2nRNpuYZtG~y1t%#6PxF2d*1 zfo~&Qjnl~8B#RZJJd(?4G|KjkwMG-~vosRF5~=kXHkuNYh@53KKAqVz7bk0;+`l}Q k`>yAg93t5R7xF!A!tN;T$p2s~AjB}qzhM|}?$Raw1I?PEO8@`> delta 462 zcmX@bd75*=kNUjBg6xcpr3`irXQkT}3l0k^BX~uJ1sxE)`on_J2wury!EyvI18hnQ z)RZi+DKK6R*c2GA7HkTPR|Yh+f{_u%O#&M;8EQ-l*cccu4QvdIR}D4>#%l+gG7G9N z0c^@5D6bK03XIo!SkRu45yq=LECTWqlzY~r{jAF2yNaEYxtQ`*?GM`-7&#nXZ)A7a z$o4QBm!jk0a%F)(hrb+DbU0l1&*0SegNpW(=P^0f+a3PLed^1>crgZui~?IFQ2NWk z%71zaJXW@cw;%d)(C$Cb5XnL-yTdj>1A&GBS^pSMr5&;bav?e;>wxN6s(|W>K$iF( lKC63J(H`g?4+g`=qds!%C)i0=+_#-j?^!Yhc`3F(xO_yHI7n`8pdzl5QK?+r@YOK=+t&4 z(d9l!J;)ZTS2hjt@ZzR3sSOT6AnJVqcfj_<_PR5p2Y zi}hx`1;m3OnxG&gGl51K!Gq=?dkC0=74@LxQdoVPm}M^Wdw;(7-d9gPOFlo2&Sk~l z0X~H4n#sEIn&K&pXi4!`5t(7zq?IpgD8DFPLtGm7nAdINx6EAIoOXS=q0Je0IW^nM z|6XZ`U#me@?3lRgK)qYG^rB6?fD|p=4zXU%A3jzTNFGS|10mRJGq9~jooUBA*~3!jAN-RNiiMl*{(#5 znT|~8RH1tEt>8DjOKhK4V^e8c^Lo@Xp3s#E?*hw;kpkw^ftBAI*!e_|%*U#SGpu^3 zXz4Duy+>@;K|0RT&4NX{nynUvwb^tBD4|D(o~I=$7yW+fNRLd+SfQC)t+8+2u;w0~ynCyHv>S-|dGY_g&dnaZv&aj4b=_81JhePr~=TByxkq#0YP}%A)<^igf~= zH!Xm#@CVjm0}ucn5TCHx0_8jSDdG(APdJ7iJRa$NBYp}y UFyZ&aoA`N@mjF|6j|5@uALIGoOaK4? diff --git a/fn/flx/fneditor.flx b/fn/flx/fneditor.flx index 3827b0389b1a545fc434e2c51544f8189227a225..dc51035edad932e4012f77458efada02c2af4d39 100644 GIT binary patch delta 3565 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 delta 22710 zcmeHvc|cRg_VC;QVG#lsR01gGCW;YUFm5!32#Uc4LBXO0cj|&#Y^}SNL~V<-bsZIJ zwXTSL?Q2m~T&ki0C5g8c7ZB~WjTl?urPa2yeYJ_-nR^o!>udXa-|xTgi*oOrnKRp& zGiT16IddQD-SF?CjTs$!E>MqJBMGX#b#0Y8WzDs_3@WFyHqA{GZ4@6qTuV`Xae-*Q zuKPhl_FBXCwT5*Y47)ZN=*@<;n+*dt8g_3qC^i|AvEdOmJjRCjwFdKcgZF!e={pRk z-ZzBoG`9U2EISPkcN!k-H}pGTV2cdD6}3(`6z(-->^H30Zz$Mfcz=(fWRIa@kKw@{ zL%U9U4FmQXChRr5yw^~(*D!LQA#b0-zRxgVzaf1s-s{#8m$-StpA^6BJ^^$6ZZTl%E6w)jfhG8Uopwge*%^i0%!P+-<6gX{_hAvrFPZ!M4) z7RcW#kgjy-luPZolzpbi9Bb|jY4%(<`%HJhu;+T%XNvjQLI6DNGrb^(`h$Wv*&t?j zfqGX#erkUHsyF9HQ(bLYxZpL#0);JWtMgsxe80!Pr`odKCjr_U*+Za+vWl+?*x%k} zVhgPHJY-imDASI293s=@cN}h}=iYU=n=ZcV@GzyXbBIj^>l~h@2kRVOrh)4n-lpf* zJA6#>>mBV(!`3@=rrB>hd`+3}-~nFq`n_MU@_xCeXC1@l^R3FecDHWj&*ig7>&!o> zw-#`-)bAB=^Hp8mPSc=x+o-|iG$(s1d26-hukYUn>ZI@>=Y*0=}vm z@BSSCp_{qAeKPdfo&k@L#>lM&xQkD>uw9$%7GvbI)2H}!q<3wy0)ne;fQTD?LPU^x zFTA?Fi$C+}B@!aLZ7o>E&9|qJI<)XG$CyLfEsIkfeV3=TT>;H2co+9*H~KF!B&=)6 z&~Y6;-fnbEOZzgY5C!~5`|T+ryVlKHF*@-^C42GR^VLE&tA!OB?QCqwGujot#L61h z;g@~G1HN7dgEHc^_{YG-gb<{E{z4YQB6fwU+j?y9RdiUlUh2oN>!n_d-v+50GkQZK z!G7!;3e+eK_QRCOZzKL#vPZOQ6Hf78?Y?VMWfLCb-yJ{pPmKUFTkSbXw+mow?X!NY zgORRd|GoJ}-FZSL^Ft;P)3F%85|B;*G4@`-+-Jm2rAJF1Z@%xJ>IuKYbqr)bO?MI{ zVq8ae4eGu{z7=z3%2CKI5phf0*!kOVKw!_V|Jb&eJ-D5N3CTX(DH&9&d}uypo+@kL zn3OH%*)n&I>9GY*4eZjd`xa&cwpMahN#9z|V&o!)2q(NkI>$ny*q66|YIKG0kwE41 zkFlTf5%x=YgweP&TTsU3EnX6C3rh9hipD>;6^$LS^$8kxU@OYV+=?WPTc0>&H@%>p zc@-aQ!F>w{xEYGK;n6{zdlYYj*t1-oDDGG20mM2%?yP$i*WVez=ekj-^byi|uri2I zG-H=lk^VR5cIVEDs)Pva-F~Pl}vjJ$TVUmXXzay>baH%kh+yml_iGH(@%z4|Os z1pJ;vVjrgZ!%y{k;o(EfdPpG&Mj!)zu|t>8ZH0C#XXWxd?en=jcl#_D?>fMu-zvnL zJFJo~E3B)mvzU+ekS{7^#rb*>;(uQ7~;;MI=@{bR+Vq(ay_`2 zV%w;*+r5cQH2-vaU+V3Gq)Ph2c5Lf7DCk-7gMzyRmv0|XK2S`CNPT|$cceJw5rbko zemS_0xMI(FcEVn~FL;to7DWRfWOeS9utxoGeE z0CmMvLZd~HdsAq)b`^WL6n9SRK}tIx8pXq6PU}hFUqW~5o;x6M`=zW(`ZLRiyeR1B z>nCL%+{zP5nv?&!lhuAeS$0+ys`7V9!=cmpyS&O|9jt&?W*cIWwQF<*8>{59UAFY7 zU0e#{v=pRz-;#g8rHDAK8-%ZtFlk9yBS4LOl9-#S_2fZFO;sE6%a$oUIkQ(r#Y-Q+ zYjVYRA4rhjg%}~NYFU{w)|{lA3Q5|ErMm}TDT7c-IhW$gY5kTSHpP%kxk~C$CA>2# zj(@-^cjHB!6dpooS0_b3J_OmkQ>tKeb;#JJ*5j^PsQ|=z6P7orci|s9rAgOq;4GZA zIa&sZd<}R~=jTN0HsI}@2L-I#@Tl4X^U!(&_$%_)o%pNH2_#J(-p$v2kH$x3+09wm zUv}g4@S(nz-HWBC&R1KSSg$>JU%0B>q&-VP`o6G7wR}(MSK)Ih-GhCc8J(@HV{H56 zjr%O&!PMg6brkxR-M_CcTtu}S2f#fZK-7-s0Wbl;KHf_tft6#P%3jAlBq@MZN3hv5 z`zU0oqnbSUpnh8&wH@)n_#t(aKLmAvvFEKiiV~s&xkK`rx_CARZ8+v;mDVAW>b?j4DY#UN%8}fep zx~qrw;pvP@)UXe4W8M_Kx*vCzM~M#X$0Oxqbcsc_bZya6)$pRi`Lk3N`SKA(s!>Jq z%p%pqA||ZiX7P~D`EKw)|g93ws0)FyR4J|5DcBqrT09nUF))$NFq+;OnihQH` zLVj75x+1@a%4*gGOnK)WeHl!Q(8|YN*Tt3u%p@ojnmTHHk@`hasB}6#6L9nPX=H&xFTNg^KR^FX=FK8r%hAYed(O%p z2L?fX?8tqEfsrp1$-5OrjxUmTC)w{m|v<2C-WeKl95W>sgIdW0%4Dy@@ zK*FL~5R*RRm4z}{YBoG%Df1V@GjT>XJc&T4BGTG=qY_ju9MEL$)YALWj_4|mIrHn% z`{lCs9CPtkSWJC6#{b{2xI*5Se&uozr|3DT3V)T|L1i0y^dPLOpelcAgoc28Hsni? zOe7KgVq~v=#s0uCcMeJ>)~YM>C7N0)0oCH`VkJH*mbvQ@<&LY}I+c!hSBu1UGnI1T z2o`ngKGgOh{o98UKU)b|++m*~Z}?E`RY;a6*7G0SByL<}bHt--ckQnQ*%!38=ZWt7 zU%32{5urhmy(6LA;5fTklq>7Q{PrP@^y+_oNJw;p3PH6NvP9iv_x6inY1G``!Ouk&TfJn2G2k&G;zhd$Cs@yZNI)MNq&m8Y(bI>;@p7 z9WjGyz@JBKkNogs=;so7@yF1gF3d+C$M|<)%pb>icVW;!W89dL|CEpWSibmUd7qE* z#_rv`Km2$gQVc}$VtlrHxS}~TbTF?B)+MvwOzUNYER+=Fw70Y|@0rH3ol?5`#@+DeRen7~2ETkHp|40y~eFM*9g=UTgknFOIvB{T%D zZo%n2Ch0;xEmY}B`l2^s#I5q$5+hjZA-TSUeWN5go#=2YYQik0xDvIl zB-YVE83y@mS^5%lnrwg-dfg6kLnVM6b5%eFT+7O1%3v#_D;dD7B&inKABE&8Vr8F7 zZ)?i072rORem-+bVBu=Cl|<^XHgY(%8gGbv&P!inUle3t*dEhSLA{^{kQrM4sl=x? zhHe7hv}LU>F&~k%uYDv5tOa>Ul@pe<82XmrfT)3zoBw1)dU{@o*e~?#g`0R>RJK@q z#I_>jQ+y^WnA(VMMD_AtU2=nGbQj~%Jv&5wTM{DyHUx$hSTp+D$kioL1D|lCxx`3) zi8s*0vh;A3l?^zI$M)<1jh)p~rdeIWDU6UDMNdC`L+nmuUBK_vbrMuZ7MBr+$!Y{o zSdB&;CaV!M{V+X-q81{J9(L=vvgcx^({c9PY4+>GpyY$Furuk0l}6?9IfbmD;j0N<-vnrIA_i$|{YV z0k0XQ%$(BxegU5tp;>tvB=MKIYdj@7)ydLjswbt+J@;YUy^ki;_92lRJ*mjUr9eVT zjJz8q(HaD12(0T97r1*PFKU(@v*(4_kB44(?^tt}^n<*;Nfs$$GxlRgpRu~1j?&S3 zHuhK$JN_6W)!Qe#*)!aO;78RGqS2c?Hymg#tmEb6)b+{}PFE|=zJ2G$uK z?sY_i$TdqG@RuhOkufncs$(z+FhM|i$0m+Q)5v6vTwV~Hb8KL51((;}73iRYP@@sj zI+7?gqy_Ua;y&&*KGBaa`Uq=@5eBT0OtxOg8+Me1!g|K8FD1mf;C9q#&keKB>|{^r zY}ba{^SVGE*}}by+i|`X_S_Kr%urbQ7{BA7)7VN@&}da^O@uAcj7Rs47SWrru5aY? zDaV=q6ul1F^Qil7N-@)wqPHS>+HqU@xZ}>1F&0)uguD?95~aQ1Q^pfId+<~ybMdBTj_u0aew+m8l?@OxWEd)r(1b8Q^OzBY{a8DZQp$ukzKVIJ!3C~s~wQE%YKBXGK7|SmIbd<~`DGWqQmZWi-=AN4ZQrtM1$K+ki@8(A}kcN3ErObkpcCuKDyOP?6 z^uOxfaFYH3O9w=Ve>+KwPA$V>0~kDGfYR@WlXSz$G9b3-6#X0CF+d*3$J9xE9U_@e z9Uoo#`G8H7=;hCV$RooD^{9x`-Zyx{h*4uT$3%NYMS(pI_l@a*Zx8Y%y7sg|a@;Ov zQSiDAAkwVt<SRta&@nH%*tl-+NR6R=?k%I$j(o6s-2hGXze5 zUg8i=N|DJ~C>_fDlLCbX;#Zz)-_Iqo{%%$nVBAIBQzDbXyZ{4CzjMHB+wi03LPYX& z*jJt8$;U*T!;nQLufX6y&4<8k84gKiTr)RLebJjt7-iVd?l7^tw)L?!JJfp1XJMhie)OK|zTCzbmf}o`v z*9zSrxp@|TcJ8<0qWqtt7A}udc#kvi^l4WCZIxno%|I88WFwu#IoF0b9h1UaNC(tu zn@SH(YNjhthfgHbnKJm<)JYotXOuZ@x3&^W!m>icQbuZN)$L0>(VkHSPqc7cG+6Z% z;W`Dh&dyT}vWGr3e$#gdrjezpDm*y8m*|yBoEslS?ZP|ahjx96mM+fA?O>nTapf^n z;6<3om`YHIM_#m6Lh!kS9^rqOh;3#e)+cnMFP|>7FA26UaWXVyJf6^tx{U87s66=Q z;jkg$lohLotW__#o~bZ-n6PGO7g@wPVd2vBwlw`wD6x9{`p{6Fu&9BMdF1GQdH>nJ z7B%c|MP!p>f)+V-nuuc1Q)He*xdF|F=p=#=dP>4f-vN>VWTQHw_&dESqF9}N=sUfK zD*X_<9)~3k?AYlzQH;nED+3jYM3=H|M{%db=pO5#Z$itQQqCz`uds0PAwI)FKB=HB zl_y5%b{dy}uu~^<#WEjKoZVu2yNXwI?3VIp79dkkM5GYTj4pDyZrn`1Fo53TCcAMN z?%X0bZXv`0#%pfe0(ZuoPhZXtwe5*o0&#TuA*vU}LyCs4jdBeIk{otwpf1bA#LlH` z(yXS&pjsG3&`cMCFw7s;S@)XBp*0;gIfh-hZpu@bKXptX0eF*$8?f0cWV6>oF%~Kw z)i!;4%|SG4w$)BlBZ95yqg(N7jePb5XZCRx#Lh3&59u-U+fuj!X)V*>+Z__Pj-5m}$1>^$HBq zr~`utV6B9qBN~~25ykfdEHykP-jftXUBQ==x`-vLT^_{ZM@f;v5|-+KYRQR|2~MOK zw2BTuY6*)~!~1j@$=(++@q=Ze-sMXV980ndjb@i0_&I*oTpGm_9R2Wc#TBy^jQa3o z(=Wr`7O6=l$v)VP--QxEErCO@^TUJs@^%4!G|G%@*UQ6)C6DQ?O`d?RGOXqy9L|xc zTkf2=Faelz_|uUgIDEvUo;^Qj0)AnWF>e*TsgC}GoZfaeiEL|^kbUjXg@G2b zHlD%7BV>w`pSLNj>t$_9#)x6#ho$iqY95lYa_uNU{U)M8*CHCq6;QNuU^S>r)(+Tl zDMYc?O;`AaownMo%(k<(ETBfIEX)eMX;XnE+S6{~`$SOM(gUagyG?mC3&sE!w-U+( zT6xk~c-^Di)&Ir4YQAXG_gh~;-|v3$%)ZaMf)9=8qR77Tht3a695F8Szwi9YzwCUg z3jUkU>s*~DY;`eTvJVbU>2brQKhlSjrQgvTQ>71pB6QOWY|WKh=T0+K2kVV=%1hE~ z&f%c9W=Jo&!fPf-PZR8*NzzhUlqLOyu9+hJkWQE;JwU4x)K$*nYlcAabwi-|uZP4* zAJFwfr1$9iiPEp=2Z_>K^s-^n8}!Oy(knDOOlqdD43l1jLRq(~95cI#oc;8zRsOWJ zO!kmjg#AV{y5Fk}=T56Vug3jwyjtU-^1RAIjN4U+iFJr&RAF-rY}dc6VPZ*2nKFzS zay3rbff)`@enUr9* z=kjo$&VhYF-zK%r;_JS{KQ~+>F+tb)_!{!uRs;Pggf_4*)Z&MuX9W5_q}-6XGWQ+dLXhvEi4pW4ZL)Qx4TR{`9H@26_Q zt^)MqjpZu;niZ<3n%7mMYKV}MA#Zw3>EJQDsla_dP`++$3w=1YbD;ZA6y@GFx=UIY z-EoNakk{8NQ}wD{3Ume16sm^Sa*_2l#KPDO))Sbv6_T68z|m%?EH%~@jxc4K!_U<1 zrb7mgvhwAQamqQ43{yd^V}fZ{ts~8Js@5^yR9EX5YqHfEp-?#f4$+__2?D`r&Qt2d z%gj%pKHrdlA2i6UGoJ&%Sj`J3!y-6E6{+Udg2toDt~F|q{Va9ix`n(&@CF{?@pwjA zQ_C}op<2k>npH?#w_2q{-K#dPiuJy!9$H%_b0d&ysIJx^xk*xknp1n#CILq53BqSX zUCCY~6Up2v&JVH(sC=n>c?6$1{sElHzVv|=@;KSdHmbgc@R<>+G9}lxB)CBeKARq< z+5aC>Ad{%(nR!SGDeX?H(!jR+&<=;6&~{>cAlob`9=gZx zQMKiuH90$Z9b3k=?V-gMeIC7@n7oBTO6*(n`K z8RgjWdN2;mnEt|;+l8sT_PflMs2YBoV-jyOK0mjtw8L-1YBT0Gy*QCwm3W0Hg)$V< z2r=s6xB0b~Hz^kelBW8bzXxhrpl`;EFwo?!8Ic2b-KH1(0u!B>#z6m7Aw%ac5t4zq z22nD2+yDqs{5ftj3|oO=YW2^$LQ-CjQt$qlYsZu%K|36*XdR30i&!aZ9Kb7Xzn6 zQ~3Mwk-kSc_H~Y97W@K21b3UzRdY-sgH7G zojiusXsK~?JA(LIgjYDhsgENFLn}Tuf_9T?9%?%op5?A zkJ?4WdDcb`BBv`6cku2P`-)Y@e8!ZIZ@l=Nd)XcKQyiGtciiI#5>YLv(N<`^0<4FU za4>x94^fD+mAKrV7?ejPQMI==eFY&J>GFz|?zTPBUzv}-qTGR7Z0Wr(LkjeOpnN|I z7iM-7-J6BaW_BUg->))*MPT#&Dzjr$o+_DBu=hF8u!-(K7I&gyr58h9SZUw7V+0j* zBJ*n_{SW+HRu0v-bbnSFrTYo2WNVQx9Q6E7(Sb;;uVZ?Pgn&i_9$>1|_n7X*>T!pT z-xtXO>_AxdriI^b-Lyz)0`rqm*n!=&01Om&(%$N%d?6H~K7G%ebeSz;C8aHfDtlf} zkS7;Vz0-g^?yf>1pLAEg;;wwwU3vLkdC6T^X+q@l?#eIRm4A)*Ollvz_^$kiyYee= z?&NJ>;KL_hy(>S0&6DDFfG%w$I~cHQn`}2=4`nN{NL1eTMSk{$5{U!?{`Q3d2KpXM z95fhRA}@6AqN*eR` z>8@0Wd~v;eMZNsZdUgDzI@*nHvZuhWxa;hI> zZ0QB=KBeZth@yYm>H?xYr>U=(73^*7iV zd8)F9ZuxzkLll$dklgB3?Ffh&;Rq#x&N1ad0~Sr}-g237TP$022aV~5h$@xIc_v03R3(MD1c#{@Sppa0B?zrCp(3AKVU zR8BHh!HKP;udY^l8!$RDWY{;~5CfAI2130Sb=L-m8jKkO zwIJ%iA^~e1S!-c0_+MB~7a zi`d%zAcH)kNZd#J@xy6-bi_2U3ikex2clZ-(xVR6!zP*R)UObGLu*?DIrV-7+{6rn z4T{h&F_dojY=5I%`AushgHX0+Vjy^1HBiIcYHylTl^#sT2C0PcYhYF1=-BvgqP>|w z5{4k`t7DFX<rW94mMP>|NiDYjTVBlPnz^zl>9(LC8R*)q;cK~;xe=V@NwsCKOLdsf@QIR zK`>UpKE#Z1u%W+^XQP7+>f(m}17MubR`LFaH`zU80qgX;i`pC|u=gC0@_K0u*wJV0Ru4^Uv!gC|bIL&wpJ zA5eb4hSC7o(@h%JBgFiZf?oUp4gv_77eB~z^saJDtg;rS`YOOtWS~s3#Mfdde&7^u z&KIn7pt$P~VR}Xg9Fa%O80}TOjs5H!aM{E987HSty^4?$jYIw@l+RHM@Hq5#Graa1 z0_c-w*!MaD=uR^{wFUtshUHSozX9MxYNezPhef5;F$<04f^M z(_RAij4^0WGd%2b1kl4~_g#5>9^kL3Xpsy5TY#fM z1$4qXWP=DXlA~}GiAV#~;Fh7Krc*9B9$-1rv`L>%<+VxIpv*SudDM6vJ8oAe#j zac8;?S`QU0Mw{Cp9H*|fDPS{@*VQ1>z^l}EZPGtMrZ(x{Q9dFUJ}KXX?zc(z5k&~; zP(R;*`$*JWAgLfiG^9-dklH4Fh-h+~^l(buCVjGKd7E^k7XwGR_@RZrCj9R)m^+H4 z{y&2W4E+BhgL#3R=!~LJSD3|O(B23fg>=vH5rNK#!DuuOKjde!MGFuk@#;%!8? zuEMlvmUtV{J0R~`B;H2k5Av=>;%!9PAm3Uf-bS>UhY`|?kPbwk%vk}67(=$A&9FPk z*9;#Z8Ct`@1lWA%Ku;WxpkLy(5IQL`vhX3bsww#(B}z2FV{Fm+(L-Ju0DrD7YOVcM#Z0W zNf<^DaIQYN`siA@{zv23x=()?#&K=B)YWC1Aj7N!#zOk_u>86DlzkH+0=xQ@>x5n7 zxXcNUMp^u@z2k(lP!138a>6-i2@ikjgqNTxwa>B=ufrtI;gaQn(2O^WH2f+V{Z~khoD0NO=cc}+|I$40oQ=8|8UUUNZrUibR zC$bA3=_IlXM*1Vjr5K-%Mt*7GWg?RBL5MZ*b)J-9;%d~mJGRQ8J`}+K_vYCH(^5m|J4GK-rN7} zDl}ojIh5ve0gby|fifHw=tZz}rGvF-eBebicH~7gbbfWz=%ngiy5zX($Wb$@(HJnC zJrBE^IM~r>U>7qOb}sR-TS`m&?Xq(f> zE%Me9ggJ@a zI*`PIY1=mRymskfO}GiHcONgF8eXpD4J;AGaC%C7O^~JdhZ{$v?R5f@vi!S`^Ya zR1#OKVzmrKy zrAXq#6^+h5OX(_#{i75Npd@L{38q$V9HFgVsv;wI1MIrWup-`ZGQJ8&UCn(CksIz@xxcZ#dzNCxG z5a~K{b6Ss`?p00Tmh`) zwg+&&Qck9pt7W}htPV|ss|rSE(oFwI=Vx)?J5V zt;|HYRuhI#u3!cn`;YyD2?Z9_XLcR?uj~>$U?cbfPz?AsT}ISg;zUnk_To7!yNKBk z@HaaOL76CICw_OO?S*%edCQz8K=pRAv{SQr&iuPoLBEqsCNm{L-g%G;@?NU z2a<`o8xB-s9+LyroypEaS3sdt@#nAaP;5_T_AY3VW;>JNeDy%`l#a-jIS>K87#PWS z@_Nkxj=D*59Y}^T4uCP{ne3+e?PT+;3(H1A9&pJ~?@VrU2uqHKyAh{l;qaoBi|*5o z&|o!$BRS%?tZU|JlKXGCJd?9#s6FDGQ2UW)_bcArQJQRra=gHw^=?z!Q!*l()#iMq zoBDG8wYy$QshxKr#U;96MXLpX_ldlfH;Q?54(`Qxlj-UmWu@Q24Z2Qo2aY@Zp-M`bGmf?#2pAHvZuqw)( zcc$CB>J8nJRL1SK7WP|_3hcKgH7QTwP!n5oz|R5;!nq5TqHNz*oCzEV=s@wXW{w1y z@WKixgnfz^+)|yq(98&a{CTN8uf2Kvg~uuQ@amADKMeh^DVSSbNUgz()^z_{gR0W~ z9TGl0q@-!GV1cl39j&J#D6dTRb72hBzgaqb(V1Cz%pq>@&WLJr=F zZ}gNUj|B3OBM#(m6=y%viNHE~F$K!Zh5e z;}^)}vB2AgK4X9#@Ugd|0ze$y63}@OpNb#86()~gTUH@HV<<_7bs%LdtU-qCu{>GV z2@#ODSAIHEmc}uK>4K8E@|cWL2znrVSHPEBLKH!~H@^dwip%n4(g7P=w3&bK&2!fG zeSU{1XMGS4<#D+ZZl*t!CE*tOg9LBx6`u|FSsNetkEgn1IF47XmFq~CB{OC1iRk{V z$f`~mTXx|hS*hV(1@C8bpF}CYroVlGP34D=7t8hhr1%?>O_uIdLz|UaL8fKDz{@l& zF9>e`?F$M;Xqhqq?m;Soq)irc-i2&Dy5Q8`V)$rX5|J8D`Heqy)#Yh^e;WNii!k$c z7NppJxQhqp2?*iZx0ic-L)a5%yz{z_E#mcCx_rFES70*u7Jz4xa1W4KF@gSiJeML7 zdzooXuV^ZdxD5ToG>sPrXk_G2nQj_S21M!Ox}PQub7~AJG^Y(@Yxa_om|rJS9^}wA zXad}*qQfVUt8p?t+>?uFCFpPcR>Y_$h&_aonUQ+9kkm-4C%`o`y!72m-oF)bO!h0J z;k);D#xvGs_WC}PXh;0*Ir;CIuC0+HbLFukrLfVU;)s{FAo^4Y|7+bU(f65n{`%nd zM1MF&isG0rGb4Y`v}HLm@s9Ojx>N5n-)DldPuKFAw{L8ap%765~O%b#lv7+Ktznf6oNHISBC8RMrhZJrB5m7~__}ewxXv zkx&9C%qR;KX1itaVqPW~X;dB>#4gRe30Uox9+v%JoDWyR!22FP-Qex)5MH#Qr|8Q} zJa=Wd8_X6D5575CnOa3emCT&|FO|3x7j zS^ln(MZr@6xdgUg>=VhYeV7+sljvy^sdg})%<75sK|E$-FaMgo;KEI>p2&VOg^V_S zccaW1cd$9`^v2Qf$tUkk9|ozO>m5C)w<=mS0KSRATxuTEyPG=0^%g6C34p&`CW1Cz zOiJmWnHA>1 zI&+XY&`j5n57k`#XmZ^$)#J&wbo=C`);e1{ngR#$hcO%K6Y(l^s8t!MXeMd;0=xmdDY4H?nd>UNjQB=47DG> zyG2c%!Z#!tQ?15N7N}Zd=<)^P;mq|Zj*O`59t`ESu2H4>Og3P z)Gv&Rf5}f7|B{!aVLI+v_`G*c_APFUm4!p_R|-40!5t>NLLH6|76$y;-J}a}kLr41 zq*qS%)m78U0lIj5x`@lhS=+;VbtaKPr&$| zJ%SHzk5{zK5n_E7p7(pb2IU<#5^iP46hmw29&^C6#8#sISB~oUS!EiBl8RORHlt8= za5h}kQMJn{(>zg9ajMeNm*2Zb=^As`+&LWcV-9He9OE&Ee+82ly8+_+&WAB4)ctAc z{lUsE=Bctq^K9ie%$k{2;%gLST9e~oOzU$Ty-n}s7?<8Jhx@INw&MO2aD!IlIFd~L zavVcULvxHPU_%&Y`gs;O9*Jf=UtcXV-M1Wz^0BcRzAX-v{O`FF<2* zy_kEmU}^~RqJ=(zL1oH*@bw2+93qOXwmsyZg#xc~r=}AGRv^4#XNRbEIe>yz5qFnH zSiqZ{_vYb>1_fjl_7KEZ687o%i=Ckp{*@z@@#2!{F^5KLVLWbtLmiC*KBW#k`9j?; z2Ye3I2WOYT2P?>>u3{SHfza?#zzEBJIeU5LYz}HBzFtqopcWsT*_R zew9YT3oZ{-Nf`*hmzbm>@OF4qX*{I<5K3K9^MZLW`FFCaiOrewNX2u5VZ$88BM0~g zzKTH}v9`n|^g=`xAX|6%S}F&9k3st{-8((v#oCNRj@Hfi|>j9UwrWjolj!tpr7Fw{Y?mhtLtop7NFJOvGYC;d*%r60rXEEz7Oev zl$;umrtmJO3P|5a9chN606sxo;bD?t4Zs9{7MjoF_jBU&Fgd<>-kE_!kl%V|h9z*g zMtpFGIy1Q7QBHgUlizy)S5X0?eW-+|ROBr1%cV|GC(uQrBcPuFCh0C%1RX$VDtS;k z89WJs%z66cf`KS-t`m=1!{ofS8P=1**#oD2q>4oo;6X;ji9z6vuA@bW6w*nFWB3wX z@Db<%C37M0Me5;jn}V1+$qy4D27OH)lnfpO-qWfQA-$#9F8D|*{I(@dnZi@B z9125}3?5UaAXMI}NCFF#5Zdj6T}ARR-^g9)Bc2k^Pa`?X$%B%?gTSpz6w;d;spAny z6(y}Q{GId1sZcmiDE|1-HGCveH~}S9{MiX-1^ON3A>F%(0cyu+5pt(usXQdW{Qw4s zzGgTL;5Vqxn&GVgBXpEJC>i7@@MRa>oUlMQ;>{tX6L@1Qd`b`JxVq+Z+h?C&Ug4`C zkN@tFwe?Z)vuc3x|GzyVC4?kGiqP>AP@K@w1@})A=;(s8A)V0C1()d3N#9xsSpslt zLK3){0igmHyw*ub9wvl@CGstv0oP{;=ix3mA7IycxC}xBcAbaI&_E%gd90iW1O|T$ zO6G#~0)~s>N{4)?^Y`$%0N3mB#S_Ud%7V1q>r0lwYFNo1GMZ;8(RtXHnx~a7<<1bt zZLRD%dv36Orj$6f5?csOz7Il2oDOk)9)x?ntcjkOA#t z`DS}!usm%olzKZ&XP~G(z=Kb{5jQE3nb+!m(zHZyC1!FG`D?)NK`96dca>t=lP_xJ zB=UBAA=a>J^XYJEG467Dg8OUQiV1kd>AoJk)dwFwokeZNexLOgETw}#EAZhHgd@tU bpN(t{4*sk=9(|^_P=@Y|(pkpGXJY;j%86BB - JP MakeWindow ; 8606->86F0 - JP InvertRectan ; 8609->8DA0 - JP PrnTxtLnIFF ; 860C->8FB0 - JP PrnTxtLnNorm ; 860F->9024 - JP PrnTxtLnNormC ; 8612->909B - JP PrnRangPathL ; 8615->8E48 - JP PrnRangPathR ; 8618->8EB2 - JP PrnRangPathC ; 861B->8F36 - JP InputLine ; 861E->915F - JP InputLine.InpLnExtN ; 8621->9205 - JP InputLine.InpLnExtC ; 8624->920F - JP DOSError ; 8627->86A8 - JP InitScrollBar ; 862A->96EB - JP PrnHScrBar ; 862D->9729 - JP PrnVScrBar ; 8630->9882 - JP InitProcess ; 8633->99DA - JP PrnProcess ; 8636->9A39 + JP ClearScreen + JP MakeWindow + JP ReplaceColorRectan + JP PrintTxtLine_IFF + JP PrintTxtLine + JP PrintTxtLineNumsChar + JP PrintPathLeft + JP PrintPathRight + JP PrintPathCentr + JP InputLine + JP InputLine.InputLineExitOk + JP InputLine.InputLineExitCancel + JP DOSError + JP InitScrollBar + JP DrawHScrollBar + JP DrawVScrollBar + JP InitProgressBar + JP DrawProgressBar DB JUMPS.JUMPSIZE * 5 DUP 0xC9 - JP ResFire ; 8648->9B01 - JP TestCoords ; 864B->9B10 - JP SetCMOSPrint ; 864E->9EA9 - JP ResCMOSPrint ; 8651->9EF3 - JP SetClock ; 8654->A08E - JP SetMouse ; 8657->A0BB + JP WaitUnpressMouse + JP CheckCoordsMouse + JP CMOSPrintDateTime + + DB JUMPS.JUMPSIZE DUP 0xC9;JP CMOSPrintOff + + JP PointerMouseClock + JP PointerMousePointer DB JUMPS.JUMPSIZE * 4 DUP 0xC9 - JP ConvNumTxt40 ; 8666->A1F7 - JP MoveBytes ; 8669->A3B6 - JP MoveBytesUp ; 866C->A3E3 - JP Mult8 ; 866F->A0E8 - JP Mult16X8 ; 8672->A124 - JP Mult16 ; 8675->A110 - JP Mult16X16 ; 8678->A124 - JP Mult32 ; 867B->A149 - JP Divis16X16 ; 867E->A16B - JP Divis24X16 ; 8681->A195 - JP Divis32X16 ; 8684->A1B8 - JP Divis32 ; 8687->A1CD - JP ConvNumTxt32 ; 868A->A236 - JP ConvNumTxt16 ; 868D->A2AA - JP ConvNumTxt8 ; 8690->A2DE - JP ConvTxtNum32 ; 8693->A35D - JP ConvTxtNum16 ; 8696->A395 - JP Resident ; 8699->A40B + JP ConvertNumbers_40b + JP MoveBytesInc + JP MoveBytesDec + JP Mul_8X8_16b + JP Mul_16X8_24b + JP Mul_16X16_16b + JP Mul_16X16_32b + JP Mul_32X16_32b + JP Div_16X16_16b_16b + JP Div_24X16_8b_16b + JP Div_32X16_16b_16b + JP Div_32X16_32b_16b + JP ConvertNumbers_32b + JP ConvertNumbers_16b + JP ConvertNumbers_8b + JP atoi_32b + JP atoi_16b + JP Resident DB 0xC0 - LOW ($) DUP 0xC9 -;[]-----------------------------------------------------------------------[] -; flex navigator settings -NUM_DEVICES DB 0 ; Кол-во устройств +NUM_DEVICES DB 0 ; Количество устройств TreeFlag DB 0 ; Флаг дерева CMOSFlag DB 0 ; Флаг CMOS 0 - нет ; 1 - есть @@ -97,210 +75,50 @@ MouseFlag DB 1 ; ; 1 - есть CMOSPrint: DB 1 RAMPAGES -.FNPAGESID DB 0 ; Индеф.памяти где FN -.FNREZ2 DB 0 ; Страница с функциями FN -.FNFONT DB 0 ; Страница шрифтов -.FNREZ3 DB 0 ; Страница еще немного функций FN +.FNPAGESID DB 0 ; Индентификатор памяти где FN +.FNREZ2 DB 0 ; 0 Страница с функциями FN +.FNFONT DB 0 ; 1 Страница шрифтов +.FNREZ3 DB 0 ; 2 Страница еще немного функций FN IFDEF ENABLE.VIEW -.FNVIEW DB 0 ; Страница с FileViewer +.FNVIEW DB 0 ; 3 Страница с FileViewer ENDIF IFDEF ENABLE.EDIT -.FNEDIT DB 0 ; Страница с FileEditor +.FNEDIT DB 0 ; 4 Страница с FileEditor ENDIF -.BufferID DB 0 ; Индентификатор памяти под буфера -.FLX DB 0 ; Страница для подгрузки FLX просмотр. FLX утилит -.LEFTPANEL DB 0 ; Страница каталога Левой панели -.RIGHTPANEL DB 0 ; Страница каталога Правой панели ; Буферные страницы под интерфейс -.BuffPg1 DB 0 - DB 0 -.BuffPg3 DB 0 - DB 0 - DB 0 +.BufferID DB 0 ; Индентификатор памяти под буфера +.FLX DB 0 ; 0 Страница для загрузки FLX плагинов +.LEFTPANEL DB 0 ; 1 Страница каталога Левой панели +.RIGHTPANEL DB 0 ; 2 Страница каталога Правой панели +.BuffPg1 DB 0 ; 3 +.BuffPg2 DB 0 ; 4 +.BuffPg3 DB 0 ; 5 +.BuffPg4 DB 0 ; 6 +.BuffPgEnd DB 0xFF +.FILES_COUNT DW 0 ; количество помеченных файлов +.FILES_BYTES DB 5 DUP 0 ; размер помеченных файлов в байтах DB LOW (-$) DUP 0 -;UI palette & stack memory -;PALETTE: B G R - DB 0x00,0x00,0x00,0x00 ; Black 00 00 - DB 0x00,0x00,0xFF,0x00 ; B.Red 01 - DB 0x00,0x80,0x00,0x00 ; Green 02 08 - DB 0x00,0xFF,0xFF,0x00 ; B.Yellow 03 - DB 0x80,0x00,0x00,0x00 ; Blue 04 10 - DB 0xFF,0xFF,0x00,0x00 ; Invert paper 05 - DB 0x80,0x00,0x00,0x00 ; Invert ink 06 18 - DB 0x80,0x80,0x80,0x00 ; BlackGray 07 - DB 0xC0,0xC0,0xC0,0x00 ; HighGray 08 20 - DB 0x80,0x00,0x00,0x00 ; Panel 09 - DB 0xFF,0xFF,0x00,0x00 ; Files 0A 28 - DB 0x00,0xFF,0xFF,0x00 ; Select Files 0B - DB 0x00,0xFF,0xFF,0x00 ; InvSel Files 0C 30 - DB 0xC0,0xC0,0xC0,0x00 ; Reserved 0D - DB 0xFF,0xFF,0xFF,0x00 ; White 0E 38 - DB 0xFF,0xFF,0xFF,0x00 ; White 0F +; UI palette & stack memory +; PALETTE: B G R + DB 0x00,0x00,0x00,0x00 ; Black 00 00 + DB 0x00,0x00,0xFF,0x00 ; B.Red 01 + DB 0x00,0x80,0x00,0x00 ; Green 02 08 + DB 0x00,0xFF,0xFF,0x00 ; B.Yellow 03 + DB 0x80,0x00,0x00,0x00 ; Blue 04 10 + DB 0xFF,0xFF,0x00,0x00 ; Invert paper 05 + DB 0x80,0x00,0x00,0x00 ; Invert ink 06 18 + DB 0x80,0x80,0x80,0x00 ; BlackGray 07 + DB 0xC0,0xC0,0xC0,0x00 ; HighGray 08 20 + DB 0x80,0x00,0x00,0x00 ; Panel 09 + DB 0xFF,0xFF,0x00,0x00 ; Files 0A 28 + DB 0x00,0xFF,0xFF,0x00 ; Select Files 0B + DB 0x00,0xFF,0xFF,0x00 ; InvSel Files 0C 30 + DB 0xC0,0xC0,0xC0,0x00 ; Reserved 0D + DB 0xFF,0xFF,0xFF,0x00 ; White 0E 38 + DB 0xFF,0xFF,0xFF,0x00 ; White 0F -DOSError EX AF,AF' - GETPORT WINSP.CPU1 - PUSH AF - LD A,(RAMPAGES.FNREZ2) - SETPORT WINSP.CPU1,,0 - EX AF,AF' - CALL DOSErrorR - EX AF,AF' - POP AF - SETPORT WINSP.CPU1,,0 - EX AF,AF' - RET - -;[]----------------------------------------------------------[] -Resident LD (.ResCall),DE - IN B,(C) - PUSH BC - OUT (C),A - CALL 0x0000 -.ResCall EQU $-2 - POP BC - OUT (C),B - RET - - include fnwin.a80 - include fnprint.a80 - include fninput.a80 - include fnbar.a80 - include fnmouse.a80 - include fnsys.a80 - -;[]=======================================================================[] -;Старт -StartPoint: DI - LD SP,STACK -ReStartPoint: - SETPORT BORDER,0 - SETPORT WINSP.Y_PORT,0xC0 - CALL InitVideoMode - CALL InitDrivers - CALL InitScreen - CALL ClearDOSline - SUB A - CALL InitPanels - CALL ResFire -MainLoop: LD IX,FilePanelLeft - BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) - JR Z,.L1 - LD IX,FilePanelRight -.L1 CALL TestCoords - CALL TestKeys - CALL C,DOSline - LD A,(TreeFlag) - OR A - IF TREE_REZID - CALL NZ,RESIDENT.TestTree - ELSE - CALL NZ,TestTreeR - ENDIF - JR MainLoop - -;[]-----------------------------------------------------------------------[] -TestKeys - SPDSS DSSF.TESTKEY - JR Z,KeyExit - RES 7,D - LD A,B - AND KEYBSTAT.M_ALT | KEYBSTAT.M_CTRL - CP KEYBSTAT.M_ALT | KEYBSTAT.M_CTRL - RET Z - LD IX,HOTKEYS.SHIFTKeys - LD A,B - AND KEYBSTAT.M_LEFTSHIFT | KEYBSTAT.M_RIGHTSHIFT - JR NZ,.L1 - LD IX,HOTKEYS.CTRLKeys - BIT KEYBSTAT.B_CTRL,B - JR NZ,.L1 - LD IX,HOTKEYS.ALTKeys - BIT KEYBSTAT.B_ALT,B - JR NZ,.L1 - LD IX,HOTKEYS.ASCIIKeys -.L1 LD L,(IX+0x00) ; скан код - INC IX - INC L - SCF - RET Z - DEC L - LD H,(IX+0x00) ; ASCII код - INC IX - LD C,(IX+0x00) ; LOW адрес вызова - INC IX - LD B,(IX+0x00) ; HIGH адрес вызова - INC IX - OR A - SBC HL,DE - JR NZ,.L1 - LD (KeyCALL),BC - SPDSS DSSF.SCANKEY - CALL 0x0000 -KeyCALL EQU $-2 -KeyExit XOR A - RET - -;[]-----------------------------------------------------------------------[] -MouseOnOff LD A,(MouseFlag) - XOR 0x01 - LD (MouseFlag),A - LD C,MOUSEF.INIT - JR NZ,.L1 - LD C,MOUSEF.HIDE -.L1 - SPMOUSE - RET - -;[]-----------------------------------------------------------------------[] -ComExit CALL ResDrivers - CALL ResVideoMode - LD HL,thanks - SPDSS DSSF.PCHARS - LD A,(RAMPAGES.FNPAGESID) - SPDSS DSSF.FREEMEM - SPDSS DSSF.EXIT,0 - -thanks DZ "\r\nThank you for using Flex Navigator.\r\n" - -; (ADR) + BCDE = BCDE -BCDEHLP: LD A,(HL) - INC HL - ADD A,E - LD E,A - LD A,(HL) - INC HL - ADC A,D - LD D,A - LD A,(HL) - INC HL - ADC A,C - LD C,A - LD A,(HL) - ADC A,B - LD B,A - RET - -GET_DWORD: LD E,(HL) - INC HL - LD D,(HL) - INC HL - LD C,(HL) - INC HL - LD B,(HL) - RET - -SET_DWORD: LD (HL),E - INC HL - LD (HL),D - INC HL - LD (HL),C - INC HL - LD (HL),B - RET - -;[]=======================================================================[] ; discription of flex navigator file panels LeftPanel: DB 0x80 ; Флаг панели бит 7 - бит выделенности ; бит 0 - номер панели @@ -364,7 +182,162 @@ RightPanel: DB 0x01 ; DB 0x0A DUP 0 DB PANEL.CURR_PATH_Size DUP 0 ; Путь к текущей директории -;[]=======================================================================[] +DOSError EX AF,AF' + GETPORT WINSP.CPU1 + PUSH AF + LD A,(RAMPAGES.FNREZ2) + SETPORT WINSP.CPU1,,0 + EX AF,AF' + CALL DOSErrorR + EX AF,AF' + POP AF + SETPORT WINSP.CPU1,,0 + EX AF,AF' + RET + +Resident LD (.ResCall),DE + IN B,(C) + PUSH BC + OUT (C),A + CALL 0x0000 +.ResCall EQU $-2 + POP BC + OUT (C),B + RET + +; (ADR) + BCDE = BCDE +BCDEHLP: LD A,(HL) + INC HL + ADD A,E + LD E,A + LD A,(HL) + INC HL + ADC A,D + LD D,A + LD A,(HL) + INC HL + ADC A,C + LD C,A + LD A,(HL) + ADC A,B + LD B,A + RET + +GET_DWORD: LD E,(HL) + INC HL + LD D,(HL) + INC HL + LD C,(HL) + INC HL + LD B,(HL) + RET + +SET_DWORD: LD (HL),E + INC HL + LD (HL),D + INC HL + LD (HL),C + INC HL + LD (HL),B + RET + +thanks DZ "\r\nThank you for using Flex Navigator.\r\n" + +; Выход +ComExit CALL ResDrivers + CALL ResVideoMode + LD HL,thanks + SPDSS DSSF.PCHARS + LD A,(RAMPAGES.FNPAGESID) + SPDSS DSSF.FREEMEM + SPDSS DSSF.EXIT,0 + + include fnwin.a80 + include fnprint.a80 + include fninput.a80 + include fnbar.a80 + include fnmouse.a80 + include fnsys.a80 + +; Старт +StartPoint: DI + LD SP,STACK +ReStartPoint: + SETPORT BORDER,0 + SETPORT WINSP.Y_PORT,0xC0 + CALL InitVideoMode + CALL InitDrivers + CALL InitScreen + CALL ClearDOSline + SUB A + CALL InitPanels + CALL WaitUnpressMouse +MainLoop: LD IX,FilePanelLeft + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + JR Z,.L1 + LD IX,FilePanelRight +.L1 CALL CheckCoordsMouse + CALL TestKeys + CALL C,DOSline + LD A,(TreeFlag) + OR A + IF TREE_REZID + CALL NZ,RESIDENT.TestTree + ELSE + CALL NZ,TestTreeR + ENDIF + JR MainLoop + +TestKeys + SPDSS DSSF.TESTKEY + JR Z,KeyExit + RES 7,D + LD A,B + AND KEYBSTAT.M_ALT | KEYBSTAT.M_CTRL + CP KEYBSTAT.M_ALT | KEYBSTAT.M_CTRL + RET Z + LD IX,HOTKEYS.SHIFTKeys + LD A,B + AND KEYBSTAT.M_LEFTSHIFT | KEYBSTAT.M_RIGHTSHIFT + JR NZ,.L1 + LD IX,HOTKEYS.CTRLKeys + BIT KEYBSTAT.B_CTRL,B + JR NZ,.L1 + LD IX,HOTKEYS.ALTKeys + BIT KEYBSTAT.B_ALT,B + JR NZ,.L1 + LD IX,HOTKEYS.ASCIIKeys +.L1 LD L,(IX+0x00) ; скан код + INC IX + INC L + SCF + RET Z + DEC L + LD H,(IX+0x00) ; ASCII код + INC IX + LD C,(IX+0x00) ; LOW адрес вызова + INC IX + LD B,(IX+0x00) ; HIGH адрес вызова + INC IX + OR A + SBC HL,DE + JR NZ,.L1 + LD (KeyCALL),BC + SPDSS DSSF.SCANKEY + CALL 0x0000 +KeyCALL EQU $-2 +KeyExit XOR A + RET + +MouseOnOff LD A,(MouseFlag) + XOR 0x01 + LD (MouseFlag),A + LD C,MOUSEF.INIT + JR NZ,.L1 + LD C,MOUSEF.HIDE +.L1 + SPMOUSE + RET START_SORT include fnsort.a80 @@ -376,31 +349,25 @@ 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 @@ -409,38 +376,31 @@ RESIDENT 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 @@ -461,7 +421,6 @@ RESIDENT jr .FunctResident ENDIF -;[]==========================================================[] .MarkFile: LD DE,MarkFileR ; resident 3 .HelpResident: LD A,(RAMPAGES.FNREZ3) @@ -469,7 +428,7 @@ RESIDENT JP Resident IF MARK_DIR -.GetDirSize: LD DE,GetDirSizeR +.CountingDir LD DE,CountingDirR JR .HelpResident .MkdirsDst LD DE,MkdirsDstR @@ -513,13 +472,8 @@ RESIDENT END_BLOCK_1: DEPHASE ; BASE_ADDR -;[]=======================================================================[] PHASE 0x4000 -; MAIN.FNREZ2 START_BLOCK_2 -;FlexDIRECTORY: DB 0x100 DUP 0 -;FLXdir: DB 0x100 DUP 0 - include rez2_fnfunct.a80 include rez2_fnmisc.a80 include rez2_fnsearch.a80 @@ -532,7 +486,6 @@ START_BLOCK_2 END_BLOCK_2: DEPHASE ; 0x4000 -;[]=======================================================================[] PHASE 0xC000 ; MAIN.FNFONT START_BLOCK_4 @@ -544,7 +497,6 @@ IFFFONT_RAW_END END_BLOCK_4: DEPHASE ; 0xC000 -;[]-----------------------------------------------------------------------[] PHASE 0x4000 ; MAIN.FNREZ3 START_BLOCK_3 @@ -568,7 +520,6 @@ HelpTextEnd: END_BLOCK_3: DEPHASE ; 0x4000 -;[]-----------------------------------------------------------------------[] IFDEF ENABLE.VIEW ; MAIN.FNVIEW START_BLOCK_VIEWER @@ -586,7 +537,6 @@ START_BLOCK_EDITOR DEPHASE ; 0xC000 END_BLOCK_EDITOR ENDIF -;[]-----------------------------------------------------------------------[] ; чисто для отладки BLOCK1_SIZE EQU END_BLOCK_1 - START_BLOCK_1 ; основной код diff --git a/fnmenu.a80 b/fnmenu.a80 index e5c7c4b..c6e2ab0 100644 --- a/fnmenu.a80 +++ b/fnmenu.a80 @@ -1,11 +1,11 @@ -; LAST UPDATE: 25.07.2025 savelij +; LAST UPDATE: 31.07.2025 savelij ;[]==========================================================[] PullDown: CALL ResInvert CALL SetPullInvert PullLoop: LD IX,PullTab - CALL TestCoords + CALL CheckCoordsMouse SPDSS DSSF.SCANKEY JR Z,PullLoop LD A,B @@ -106,7 +106,7 @@ PullInvert: LD L,A EX AF,AF' SRL A LD IXL,A - JP InvertRectan + JP ReplaceColorRectan MFile: CALL ResPullInvert JP MenuFile.L1 @@ -364,7 +364,7 @@ MenuWork: LD (CurWTab),HL SUB A LD (CurMLine),A LD IX,(CurWTab) - CALL TestCoords + CALL CheckCoordsMouse CALL TestInvert JR NZ,MenuLoop LD A,0 @@ -373,7 +373,7 @@ MKeyFlg EQU $-1 CALL NZ,SetMSelect MenuLoop: LD IX,0x0000 CurWTab EQU $-2 - CALL TestCoords + CALL CheckCoordsMouse SPDSS DSSF.SCANKEY JR Z,MenuLoop LD A,B @@ -910,8 +910,8 @@ ChangeDrv: PUSH IY PUSH HL PUSH DE PUSH BC - LD A,0x80 - CALL PrnTxtLnIFF + LD A,COLORP.HIGHGRAY + COLORI.BLACK + CALL PrintTxtLine_IFF POP BC POP DE POP HL @@ -949,7 +949,7 @@ ChangeDrv: PUSH IY LD (CurDrive),A CALL SetDriveInv DriveLoop: LD IX,DriveTab - CALL TestCoords + CALL CheckCoordsMouse SPDSS DSSF.SCANKEY JR Z,DriveLoop LD A,B @@ -1091,7 +1091,7 @@ DriveInvert: LD L,A EX AF,AF' SRL A LD IXL,A - JP InvertRectan + JP ReplaceColorRectan CurDrive: DEFB 0x00 Drive: DEFB " ",0 @@ -1183,7 +1183,7 @@ GetPlugins: LD HL,WorkBuffer + 0x300 ; W_TEXT 50,179,COLORP.HIGHGRAY,"Cancel" W_END .Loop LD IX,PluginsTab - CALL TestCoords + CALL CheckCoordsMouse SPDSS DSSF.SCANKEY JR Z,.Loop LD A,B diff --git a/fnmouse.a80 b/fnmouse.a80 index 49cf754..9510612 100644 --- a/fnmouse.a80 +++ b/fnmouse.a80 @@ -1,8 +1,9 @@ -; LAST UPDATE: 25.07.2025 savelij +; LAST UPDATE: 31.07.2025 savelij ;[]----------------------------------------------------------[] -ResFire: LD A,(MouseFlag) +WaitUnpressMouse: + LD A,(MouseFlag) OR A RET Z RsFire1 CALL TestCMOS @@ -15,7 +16,8 @@ RsFire1 CALL TestCMOS ; Проверка координат мыши по таблице ; На вход: ; IX - Адрес таблицы -TestCoords: CALL TestCMOS +CheckCoordsMouse: + CALL TestCMOS SPMOUSE MOUSEF.READ_STATE EX AF,AF' LD BC,0x0000 @@ -28,7 +30,7 @@ TestCoords: CALL TestCMOS JR Z,.L3 .L2 LD (.PrvTabl),IX CALL ResMInvert - LD BC,ResFire + LD BC,WaitUnpressMouse PUSH BC SUB A LD (RunFlag),A @@ -219,7 +221,7 @@ SetSelect1 BIT FORMTABL.B_FIRENOINV,(IX+FORMTABL.FLAG + 1) ; 09 SRL A LD IXL,A LD DE,(COLORP.HIGHGRAY + COLORI.BLACK) << 8 | (COLORP.BLUE + COLORI.WHITE);0x804F - CALL InvertRectan + CALL ReplaceColorRectan POP IX PUSH IX NxCrds1 LD BC,FORMTABL.SIZE;0x0010 @@ -256,7 +258,7 @@ ResSelect1 BIT FORMTABL.B_FIRENOINV,(IX+FORMTABL.FLAG + 1) ; 09 SRL A LD IXL,A LD DE,(COLORP.BLUE + COLORI.WHITE) << 8 | (COLORP.HIGHGRAY + COLORI.BLACK);0x4F80 - CALL InvertRectan + CALL ReplaceColorRectan POP DE POP HL POP IX @@ -283,7 +285,7 @@ SetSelect2 BIT FORMTABL.B_HZ,(IX+FORMTABL.FLAG + 1) ; 09 SRL A LD IXL,A LD DE,(COLORP.HIGHGRAY + COLORI.BLACK) << 8 | (COLORP.BLUE + COLORI.WHITE);0x804F - CALL InvertRectan + CALL ReplaceColorRectan POP AF POP DE POP HL @@ -293,7 +295,7 @@ SetSelect2 BIT FORMTABL.B_HZ,(IX+FORMTABL.FLAG + 1) ; 09 ResSelect2 PUSH HL PUSH DE PUSH IX - LD IX,(TestCoords.PrvTabl) + LD IX,(CheckCoordsMouse.PrvTabl) LD BC,FORMTABL.SIZE;0x0010 NxCrds3 BIT FORMTABL.B_STATICINV,(IX+FORMTABL.FLAG) ; 08 JR NZ,ResSel22 @@ -319,7 +321,7 @@ ResSel22 BIT FORMTABL.B_HZ,(IX+FORMTABL.FLAG + 1) ; 09 SRL A LD IXL,A LD DE,(COLORP.BLUE + COLORI.WHITE) << 8 | (COLORP.HIGHGRAY + COLORI.BLACK);0x4F80 - CALL InvertRectan + CALL ReplaceColorRectan ResSel2E POP IX POP DE POP HL diff --git a/fnpanel.a80 b/fnpanel.a80 index 35eef2d..09878a0 100644 --- a/fnpanel.a80 +++ b/fnpanel.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 24.07.2025 savelij +; LAST UPDATE: 01.08.2025 savelij ;[]----------------------------------------------------------[] PrintDisks LD L,(IY + PANEL.X) @@ -116,7 +116,7 @@ PrintPath BIT PANELFLAG.B_PRNDOSPATH,(IY + PANEL.PANELFLAG) LD C,0x30 LD A,0x00 .PathCol EQU $-1 - JP PrnRangPathL + JP PrintPathLeft ;[]----------------------------------------------------------[] PrintDOSPath PUSH IY @@ -148,7 +148,7 @@ PrintDOSPath PUSH IY LD DE,250 LD BC,231 LD A,COLORP.HIGHGRAY + COLORI.BLACK - JP PrnRangPathR + JP PrintPathRight ;[]----------------------------------------------------------[] PrnFileInfo BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) @@ -179,7 +179,7 @@ PrnFileInfo BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) SET 6,H ; | 0x4000 LD DE,WorkBuffer LD BC,FileHDR.SIZE - CALL MoveBytes + CALL MoveBytesInc POP AF SETPORT WINSP.CPU1,,0 LD HL,WorkBuffer + FileHDR.SIZE;0x18 @@ -244,7 +244,7 @@ PrntFI LD HL,WorkBuffer + FileHDR.SIZE;0x18 INC DE LD BC,215 LD A,COLORP.HIGHGRAY + COLORI.BLACK - JP PrnTxtLnNorm + JP PrintTxtLine GetFileLen BIT DIR.B_Dir,(IX + FileHDR.Attr) JP NZ,PDirectory @@ -344,13 +344,13 @@ PrnSelInfo LD L,(IY+PANEL.BYTES_MARK) LD B,(IY+PANEL.BYTES_MARK + 3) LD A,(IY+PANEL.BYTES_MARK_H) ; [ ] FAT32 LD DE,WorkBuffer - CALL ConvNumTxt40 ; [ ] fat32 + CALL ConvertNumbers_40b ; [ ] fat32 LD HL,CrSizeT LD BC,0x000A LDIR LD L,(IY+PANEL.FILES_MARK) LD H,(IY+PANEL.FILES_MARK + 1) - CALL ConvNumTxt16 + CALL ConvertNumbers_16b LD HL,CrSelT LD BC,0x000F LDIR @@ -387,7 +387,7 @@ PrnSelInfo LD L,(IY+PANEL.BYTES_MARK) INC DE LD BC,215 LD A,COLORP.HIGHGRAY + COLORI.BLACK - JP PrnTxtLnNorm + JP PrintTxtLine CrSizeT DEFB " bytes in " CrSelT DEFB " selected files" @@ -444,7 +444,7 @@ PrnDIRECT BIT VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG) SET 6,H ; | 0x4000 LD DE,WorkBuffer LD BC,0x33 * FileHDR.SIZE;0x18 - CALL MoveBytes + CALL MoveBytesInc POP AF SETPORT WINSP.CPU1,,0 LD B,COLORP.PANEL + COLORI.FILES @@ -538,7 +538,7 @@ PrintFULL PUSH IY SET 6,H ; | 0x4000 LD DE,WorkBuffer LD BC,0x12 * FileHDR.SIZE;0x18 - CALL MoveBytes + CALL MoveBytesInc POP AF SETPORT WINSP.CPU1,,0 LD B,COLORP.PANEL + COLORI.FILES @@ -684,7 +684,7 @@ PrintTREE JR NZ,.PrDIRb1 .PrDIRb2 LD DE,WorkBuffer+0x100 LD BC,0x12*0x10 - CALL MoveBytes + CALL MoveBytesInc POP AF SETPORT WINSP.CPU1,,0 LD B,COLORP.PANEL + COLORI.FILES @@ -1132,7 +1132,7 @@ PrnInvert LD A,(IY + PANEL.FILES_ALL) LD IX,8 << 8 + 48 DEC HL DEC HL - JP InvertRectan + JP ReplaceColorRectan PrnInvertP LD L,(IY + PANEL.CURR_FILE) LD H,(IY + PANEL.CURR_FILE + 1) @@ -1148,7 +1148,7 @@ PrnInvertP LD L,(IY + PANEL.CURR_FILE) JR Z,.L1 LD HL,326 .L1 LD IX,8 << 8 + 146 - JP InvertRectan + JP ReplaceColorRectan PrnTreeInv PUSH HL GETPORT WINSP.CPU1 @@ -1236,4 +1236,4 @@ PrnTreeInv PUSH HL ADD HL,BC .L5 POP BC LD IXH,0x08 - JP InvertRectan + JP ReplaceColorRectan diff --git a/fnprint.a80 b/fnprint.a80 index ddd5c7f..382df16 100644 --- a/fnprint.a80 +++ b/fnprint.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 20.02.2025 savelij +; LAST UPDATE: 31.07.2025 savelij ;[]----------------------------------------------------------[] ; Процедура вывода текстовых строк на графический экран 640x256 @@ -11,7 +11,7 @@ ; BC - позиция вывода по Y ; A - цвет печати (7-4бит PAPER, 3-0бит INK) ; (конец строки - 0) -PrnRangPathL PUSH DE +PrintPathLeft: PUSH DE PUSH BC PUSH AF DI @@ -86,7 +86,7 @@ PrRngLE POP AF POP AF POP BC POP DE - JP PrnTxtLnIFF + JP PrintTxtLine_IFF ;[]----------------------------------------------------------[] ; Процедура вывода текстовых строк на графический экран 640x256 @@ -98,7 +98,7 @@ PrRngLE POP AF ; BC - позиция вывода по Y ; A - цвет печати (7-4бит PAPER, 3-0бит INK) ; (конец строки - 0) -PrnRangPathR PUSH AF +PrintPathRight: PUSH AF PUSH BC PUSH DE DI @@ -193,7 +193,7 @@ PrRngRE POP AF EX DE,HL POP BC POP AF - JP PrnTxtLnIFF + JP PrintTxtLine_IFF ;[]----------------------------------------------------------[] ; Процедура вывода текстовых строк на графический экран 640x256 @@ -205,7 +205,7 @@ PrRngRE POP AF ; BC - позиция вывода по Y ; A - цвет печати (7-4бит PAPER, 3-0бит INK) ; (конец строки - 0) -PrnRangPathC PUSH BC +PrintPathCentr: PUSH BC PUSH AF PUSH DE DI @@ -289,7 +289,7 @@ PrRngCE POP AF EX DE,HL POP AF POP BC - JP PrnTxtLnIFF + JP PrintTxtLine_IFF ;[]----------------------------------------------------------[] ; Процедура вывода текстовых строк на графический экран 640x256; @@ -300,7 +300,8 @@ PrRngCE POP AF ; BC - позиция вывода по Y ; A - цвет печати (7-4бит PAPER, 3-0бит INK) ; (конец строки - 0) -PrnTxtLnIFF PUSH IY +PrintTxtLine_IFF: + PUSH IY LD IYL,C ; Y координата LD B,A GETPORT WINSP.Y_PORT ; Сохраняем Y порт @@ -395,7 +396,7 @@ PrnIFFe LD L,C ; ; BC - позиция вывода по Y ; A - цвет печати (7-4бит PAPER, 3-0бит INK) ; (конец строки - 0) -PrnTxtLnNorm PUSH IY +PrintTxtLine PUSH IY LD IYL,C ; Y координата LD B,A GETPORT WINSP.Y_PORT ; Сохраняем Y порт @@ -492,7 +493,8 @@ PrnNORe LD L,C ; ; B - кол-во печатаемых символов ; A - цвет печати (7-4бит PAPER, 3-0бит INK) ; (конец строки - 0) -PrnTxtLnNormC PUSH IY +PrintTxtLineNumsChar: + PUSH IY LD IYL,C ; Y координата LD IYH,B ; кол-во симв LD B,A diff --git a/fnsort.a80 b/fnsort.a80 index 3bcbe26..06c7fc7 100644 --- a/fnsort.a80 +++ b/fnsort.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 24.07.2025 savelij +; LAST UPDATE: 31.07.2025 savelij ;[]----------------------------------------------------------[] ReadDIR BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) @@ -693,7 +693,7 @@ SortDIRins DEC HL EX DE,HL LD A,B OR C - CALL NZ,MoveBytesUp + CALL NZ,MoveBytesDec POP DE POP HL LD BC,FileHDR.SIZE diff --git a/fnsys.a80 b/fnsys.a80 index b91734a..804e4f4 100644 --- a/fnsys.a80 +++ b/fnsys.a80 @@ -1,12 +1,12 @@ -; LAST UPDATE: 25.07.2025 savelij +; LAST UPDATE: 02.08.2025 savelij ;[]-----------------------------------------------------------[] ; Процедура умножения (8*8bit) ; На вход: E * C ; На выход: ; HL - результат -Mult8 SUB A +Mul_8X8_16b: SUB A LD L,A LD H,A LD D,A @@ -26,7 +26,7 @@ Mult8 SUB A ; На вход: DE * C ; На выход: ; AHL - результат -Mult16X8 SUB A +Mul_16X8_24b: SUB A LD L,A LD H,A CP C @@ -48,7 +48,7 @@ Mult16X8 SUB A ; На вход: DE * BC ; На выход: ; HL - результат -Mult16 LD HL,0x0000 +Mul_16X16_16b: LD HL,0x0000 LD A,0x10 .L1 RR B RR C @@ -64,7 +64,7 @@ Mult16 LD HL,0x0000 ; На вход: DE * BC ; На выход: ; HLDE - результат -Mult16X16 PUSH IX +Mul_16X16_32b: PUSH IX EX DE,HL LD E,0x00 LD D,E @@ -90,7 +90,7 @@ Mult16X16 PUSH IX ; На вход: HLDE * BC ; На выход: ; HLDE - результат -Mult32 PUSH IX +Mul_32X16_32b: PUSH IX LD IX,0x0000 LD A,0x20 EX DE,HL @@ -114,7 +114,8 @@ Mult32 PUSH IX ; На выход: ; BC - результат ; HL - остаток -Divis16X16 LD A,D +Div_16X16_16b_16b: + LD A,D OR E RET Z LD HL,0x0000 @@ -149,7 +150,8 @@ Divis16X16 LD A,D ; На выход: ; A -результат ; HL - остаток -Divis24X16 LD A,D +Div_24X16_8b_16b: + LD A,D CPL LD D,A LD A,E @@ -184,7 +186,8 @@ Divis24X16 LD A,D ; На выход: ; DE - результат ; HL - остаток -Divis32X16 LD A,0x10 +Div_32X16_16b_16b: + LD A,0x10 .L2 EX DE,HL ADD HL,HL EX DE,HL @@ -206,7 +209,8 @@ Divis32X16 LD A,0x10 ; На выход: ; HLDE - результат ; BC-остаток -Divis32 PUSH IX +Div_32X16_32b_16b: + PUSH IX LD IXL,E LD IXH,D EX DE,HL @@ -235,7 +239,8 @@ Divis32 PUSH IX ;На вход: ; ABCHL - число 40 бит ; DE - буфер -ConvNumTxt40: PUSH IX +ConvertNumbers_40b: + PUSH IX LD IX,ConvertFlg RES 7,(IX+0x00) PUSH BC @@ -273,7 +278,8 @@ ConvNumTxt40: PUSH IX ;На вход: ; BCHL - число 32 бит ; DE - буфер -ConvNumTxt32 PUSH IX +ConvertNumbers_32b: + PUSH IX LD IX,ConvertFlg RES 7,(IX+0x00) PUSH BC @@ -333,7 +339,8 @@ ConvNumTxt32_Shared: ; На вход: ; HL - число 16 бит ; DE - буфер -ConvNumTxt16 PUSH IX +ConvertNumbers_16b: + PUSH IX PUSH BC LD IX,ConNumbExit ld (ChooseStringFormat.address),IX @@ -359,7 +366,8 @@ ConvNumTxt16 PUSH IX ; На вход: ; A - число 8 бит ; DE - буфер -ConvNumTxt8 PUSH IX +ConvertNumbers_8b: + PUSH IX PUSH BC LD IX,ConNumbExit ld (ChooseStringFormat.address),IX @@ -452,7 +460,7 @@ ConNumbExit: CP "0" ; На выход: ; HLIX - число ; CY - ошибка -ConvTxtNum32 LD IX,0x0000 +atoi_32b: LD IX,0x0000 LD HL,0x0000 ConvTN1 LD A,(DE) CP 0x21 @@ -494,7 +502,7 @@ ConvTN1 LD A,(DE) ; На выход: ; HL - число ; CY - ошибка -ConvTxtNum16 LD HL,0x0000 +atoi_16b: LD HL,0x0000 ConvTN2 LD A,(DE) CP 0x21 CCF @@ -522,7 +530,7 @@ ConvTN2 LD A,(DE) JR ConvTN2 ;[]-----------------------------------------------------------[] -MoveBytes LD A,B +MoveBytesInc: LD A,B OR A JR Z,MvByte1 DI @@ -563,7 +571,7 @@ Mvlen1 EQU $-1 INC H RET -MoveBytesUp LD A,B +MoveBytesDec: LD A,B OR A JR Z,MovUp1 DI @@ -675,49 +683,52 @@ SkipWord: ld b,0x20 jr .skipSpace ;[]----------------------------------------------------------[] -SetCMOSPrint: EX AF,AF' - LD (CMOSposXT),HL - LD (CMOSposYT),DE +; HL - X позиция вывода времени +; DE - Y позиция вывода времени +; B - цвет вывода времени +; HL' - X позиция вывода даты +; DE' - Y позиция вывода даты +; B' - цвет вывода даты +CMOSPrintDateTime: + EX AF,AF' + LD (CMOSpos.posXtime),HL + LD (CMOSpos.posYtime),DE LD A,B - LD (CMOSColorT),A + LD (CMOSpos.colorTime),A SUB A LD L,A LD H,A LD (CMOSPrint),A - LD (CMOSTime),HL - LD (CMOSTime+2),A - LD (CMOSData),HL - LD (CMOSData+2),A - LD HL,CMOSTimeT - LD DE,CMOSDataT - 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 + 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 (CMOSOut),A + LD (CMOSpos.CMOSOut),A OR A JR Z,TestCMOS EXX - LD (CMOSposXD),HL - LD (CMOSposYD),DE + LD (CMOSpos.posXDate),HL + LD (CMOSpos.posYDate),DE LD A,B - LD (CMOSColorD),A + LD (CMOSpos.colorDate),A EXX - JR TestCMOS - -ResCMOSPrint: LD A,0x01 - LD (CMOSPrint),A - RET +; JR TestCMOS TestCMOS: LD A,(CMOSFlag) OR A @@ -733,143 +744,143 @@ TestCMOS: LD A,(CMOSFlag) ;!TEST ;EI PUSH DE - PUSH IX + PUSH IX ; DE,IX сохранили день,месяц год EX DE,HL - LD HL,(CMOSTime) + LD HL,(CMOSpos.Time) OR A SBC HL,DE - JR NZ,PrnCMOSTime - LD A,(CMOSTime+2) + JR NZ,.PrnCMOSTime + LD A,(CMOSpos.Time + 2) CP B JR Z,TCMOS1 -PrnCMOSTime: EX DE,HL - LD (CMOSTime),HL +.PrnCMOSTime: EX DE,HL + LD (CMOSpos.Time),HL LD A,B - LD (CMOSTime+2),A - LD DE,CMOSTimeT - LD A,H - CALL GetCMOS + LD (CMOSpos.Time + 2),A + LD DE,CMOSpos.TimeTXT + LD A,H ; часы + CALL Conv4CMOS INC DE - LD A,L - CALL GetCMOS + LD A,L ; минуты + CALL Conv4CMOS INC DE - LD A,(CMOSTime+2) - CALL GetCMOS - LD HL,CMOSTimeT - LD DE,(CMOSposXT) - LD BC,(CMOSposYT) - LD A,(CMOSColorT) - CALL PrnTxtLnIFF + LD A,(CMOSpos.Time + 2) ; секунды + CALL Conv4CMOS + LD HL,CMOSpos.TimeTXT + LD DE,(CMOSpos.posXtime) + LD BC,(CMOSpos.posYtime) + LD A,(CMOSpos.colorTime) + CALL PrintTxtLine_IFF TCMOS1 POP IX - POP DE - LD A,(CMOSOut) + POP DE ; DE,IX восстановили день,месяц,год + LD A,(CMOSpos.CMOSOut) OR A - JP Z,TCMOSex - PUSH IX - POP HL - LD BC,1900 - OR A - SBC HL,BC - LD B,L - LD HL,(CMOSData) - OR A - SBC HL,DE - JR NZ,PrnCMOSData - LD A,(CMOSData+2) - CP B - JP Z,TCMOSex -PrnCMOSData EX DE,HL - LD (CMOSData),HL - LD A,B - LD (CMOSData+2),A - LD DE,CMOSDataT + 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 + JR NZ,.TCMOS2 +; вывод даты ввиде 02.08.2025 + LD DE,CMOSpos.DateTXT LD A,H - CALL GetCMOS + CALL Conv4CMOS INC DE LD A,L - CALL GetCMOS + CALL Conv4CMOS INC DE - LD A,(CMOSData+2) - CALL GetCMOS - LD A,(CMOSOut) - DEC A - JR NZ,TCMOS2 - LD HL,CMOSDataT - LD DE,(CMOSposXD) - LD BC,(CMOSposYD) - LD A,(CMOSColorD) - CALL PrnTxtLnIFF - JR TCMOSex +; LD A,(CMOSpos.Date + 2) + LD HL,(CMOSpos.Date + 2) + CALL ConvertNumbers_16b;Conv4CMOS +; LD A,(CMOSpos.CMOSOut) +; DEC A +; JR NZ,.TCMOS2 + LD HL,CMOSpos.DateTXT + LD DE,(CMOSpos.posXDate) + LD BC,(CMOSpos.posYDate) + LD A,(CMOSpos.colorDate) + CALL PrintTxtLine_IFF + JR TCMOSexit -TCMOS2 LD DE,CMOSDataT1 +; вывов даты ввиде 2 Aug 2025 +.TCMOS2 LD DE,CMOSpos.DateT1 LD A,H - CALL ConvNumTxt8 + CALL ConvertNumbers_8b LD A,' ' LD (DE),A INC DE LD A,L DEC A ADD A,A - LD L,A +; LD L,A ADD A,A - ADD A,L +; ADD A,L LD HL,Month ADD A,L LD L,A - JR NC,.L1 - INC H -.L1 LD A,' ' + ADC A,H + SUB L + LD H,A + LD A,' ' .L2 LDI CP (HL) JR NZ,.L2 - LD (DE),A - INC DE - PUSH IX - POP HL - CALL ConvNumTxt16 +; 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,(CMOSposXD) - LD (CMOSclX),HL - LD HL,(CMOSposYD) - LD (CMOSclY),HL - LD A,(CMOSColorD) - 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,CMOSDataT1 - LD DE,(CMOSposXD) - LD BC,(CMOSposYD) - LD A,(CMOSColorD) - CALL PrnTxtLnIFF -TCMOSex POP IX +; 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) + LD A,(CMOSpos.colorDate) + CALL PrintTxtLine_IFF +TCMOSexit POP IX RET -;CMOSPrint: DB 0x01 -CMOSOut: DB 0 -CMOSposXT: DW 0 -CMOSposYT: DW 0 -CMOSColorT: DB 0 -CMOSTime: DB 3 DUP 0 -CMOSTimeT: DB "00:00:00",0 -CMOSposXD: DW 0 -CMOSposYD: DW 0 -CMOSColorD: DB 0 -CMOSData: DB 3 DUP 0 -CMOSDataT: DB "00/00/00",0 -CMOSDataT1: DB 14 DUP ' ' +;CMOSPrintOff: LD A,DateMonthFormat.Digit +; LD (CMOSPrint),A +; RET -GetCMOS: EX DE,HL - LD BC,(('0' - 1) << 8) | 10;0x2F0A +Conv4CMOS: EX DE,HL + LD BC,(('0' - 1) << 8) + 10 .L1 INC B SUB C JR NC,.L1 @@ -882,21 +893,39 @@ GetCMOS: EX DE,HL EX DE,HL RET -Month: DB "Jan " - DB "Febr " - DB "March " - DB "Apr " - DB "May " - DB "June " - DB "July " - DB "Aug " - DB "Sept " - DB "Oct " - DB "Nov " - DB "Dec " +CMOSpos +.CMOSOut: DB 0 ; тип вывода даты: + ; 0 - тест + ; 1 - день/месяц/год + ; 2 - день месяц год +.posXtime: DW 0 ; позиция X для времени +.posYtime: DW 0 ; позиция Y для времени +.colorTime: DB 0 ; цвет для времени +.Time: DB 3 DUP 0 ; часы,минуты,секунды +.TimeTXT: DZ "00:00:00" +.posXDate: DW 0 ; позиция X для даты +.posYDate: DW 0 ; позиция Y для даты +.colorDate: DB 0 ; цвет для даты +.Date: DD 0 ; день,месяц,год +.DateTXT: DZ "00.00.0000" +.DateT1: DB 14 DUP 0 + +Month: DB "Jan " + DB "Feb " + DB "Mar " + DB "Apr " + DB "May " + DB "Jun " + DB "Jul " + DB "Aug " + DB "Sep " + DB "Oct " + DB "Nov " + DB "Dec " ;[]----------------------------------------------------------[] -SetClock: LD A,(MouseFlag) +PointerMouseClock: + LD A,(MouseFlag) OR A RET Z PUSH IY @@ -922,7 +951,8 @@ SetClock: LD A,(MouseFlag) HALT RET -SetMouse LD A,(MouseFlag) +PointerMousePointer: + LD A,(MouseFlag) OR A RET Z PUSH IY diff --git a/fntab.a80 b/fntab.a80 index 2d04d11..d50f330 100644 --- a/fntab.a80 +++ b/fntab.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 02.05.2025 savelij +; LAST UPDATE: 01.08.2025 savelij ;[]==========================================================[] ; Формат таблицы @@ -240,20 +240,20 @@ PullTab DW 6, 40, 15, 26,%0000000000100000,0,MFile,0 DW 0x8000 ;[]==========================================================[] -FilterTab DW 240,312,123,137,%0000000000000001,0,InputLine.InpLnExtN,0 - DW 328,400,123,137,%0000000000000001,0,InputLine.InpLnExtC,0 - DW 0,208, 0,256,%0000000000000000,0,InputLine.InpLnExtC,0 - DW 432,640, 0,256,%0000000000000000,0,InputLine.InpLnExtC,0 - DW 0,640, 0, 81,%0000000000000000,0,InputLine.InpLnExtC,0 - DW 0,640,143,256,%0000000000000000,0,InputLine.InpLnExtC,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 + DW 0,640, 0, 81,%0000000000000000,0,InputLine.InputLineExitCancel,0 + DW 0,640,143,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 DW 0x8000 -SMaskTab DW 240,312,123,137,%0000000000000001,0,InputLine.InpLnExtN,0 - DW 328,400,123,137,%0000000000000001,0,InputLine.InpLnExtC,0 - DW 0,208, 0,256,%0000000000000000,0,InputLine.InpLnExtC,0 - DW 432,640, 0,256,%0000000000000000,0,InputLine.InpLnExtC,0 - DW 0,640, 0, 81,%0000000000000000,0,InputLine.InpLnExtC,0 - DW 0,640,143,256,%0000000000000000,0,InputLine.InpLnExtC,0 +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 @@ -262,12 +262,12 @@ DOSTab DW 0,256, 0,256,%0000000000000000,0,DOSLnExtC,0 DW 0,640,239,256,%0000000000000000,0,DOSLnExtC,0 DW 0x8000 -ViewEditTab DW 240,312,123,137,%0000000000000001,0,InputLine.InpLnExtN,0 - DW 328,400,123,137,%0000000000000001,0,InputLine.InpLnExtC,0 - DW 0,200, 0,256,%0000000000000000,0,InputLine.InpLnExtC,0 - DW 440,640, 0,256,%0000000000000000,0,InputLine.InpLnExtC,0 - DW 0,640, 0, 81,%0000000000000000,0,InputLine.InpLnExtC,0 - DW 0,640,143,256,%0000000000000000,0,InputLine.InpLnExtC,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 + DW 0,640, 0, 81,%0000000000000000,0,InputLine.InputLineExitCancel,0 + DW 0,640,143,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 DW 0x8000 ;[]==========================================================[] diff --git a/fntree.a80 b/fntree.a80 index ac5a2e4..b173de9 100644 --- a/fntree.a80 +++ b/fntree.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 24.07.2025 savelij +; LAST UPDATE: 31.07.2025 savelij MAX_LEVEL_DIR EQU 21 @@ -451,7 +451,7 @@ LoadItemDIRR: LD DE,(EndTree) LD DE,336 ; X pos LD BC,116 ; Y pos LD A,COLORP.HIGHGRAY - JP PrnTxtLnIFF + JP PrintTxtLine_IFF .GetN16 LD A,'0' - 1 OR A diff --git a/fnwin.a80 b/fnwin.a80 index b7fb423..4747b3c 100644 --- a/fnwin.a80 +++ b/fnwin.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 17.07.2025 savelij +; LAST UPDATE: 01.08.2025 savelij ;[]----------------------------------------------------------[] ;Процедура отчиски 0 экрана @@ -200,9 +200,10 @@ StoreWindow DI LD HL,RAMPAGES.BuffPg1 ADD A,L LD L,A - JR NC,.L1 - INC H -.L1 LD A,(HL) + ADC A,H + SUB L + LD H,A + LD A,(HL) SETPORT WINSP.CPU3,,0 EXX LD A,H @@ -328,9 +329,10 @@ RestoreWindow LD HL,MakeWindow.Open LD HL,RAMPAGES.BuffPg1 ADD A,L LD L,A - JR NC,.L2 - INC H -.L2 LD A,(HL) + ADC A,H + SUB L + LD H,A + LD A,(HL) SETPORT WINSP.CPU3,,0 EXX LD A,H @@ -469,7 +471,7 @@ PutAdrTxtLine LD HL,(MakeWindow.PositX) LD A,H OR L LD A,IYL - CALL NZ,PrnTxtLnIFF ; печатать если адрес не 0 + CALL NZ,PrintTxtLine_IFF ; печатать если адрес не 0 POP IY RET @@ -495,7 +497,7 @@ PutTxtLine LD HL,(MakeWindow.PositX) INC IY PUSH IY POP HL - CALL PrnTxtLnIFF + CALL PrintTxtLine_IFF PUSH HL POP IY RET @@ -761,7 +763,7 @@ PutButton LD HL,(MakeWindow.PositX) INC IY PUSH IY POP HL - CALL PrnTxtLnIFF + CALL PrintTxtLine_IFF PUSH HL POP IY RET @@ -996,7 +998,7 @@ SBdown DB 0xFF,0x77,0x77,0x77,0x77,0x77,0x77,0x77 ; 7 ;[]----------------------------------------------------------[] -; Процедура инвертирования прямоугольной плоскости +; Процедура замены цвета в прямоугольной плоскости ; На вход: ; HL - X координата ; BC - Y координата @@ -1004,7 +1006,8 @@ SBdown ; LX - длина X ; D - текущий цвет ; E - нужный цвет -InvertRectan PUSH IY +ReplaceColorRectan: + PUSH IY GETPORT WINSP.Y_PORT ; Сохраняем Y порт PUSH AF GETPORT WINSP.CPU1 diff --git a/fnwork.a80 b/fnwork.a80 index 948e32d..0db1930 100644 --- a/fnwork.a80 +++ b/fnwork.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 29.07.2025 savelij +; LAST UPDATE: 31.07.2025 savelij ;[]===========================================================[] CursUp LD A,(IY + PANEL.FILES_ALL) @@ -171,7 +171,7 @@ ScrlDn1 BIT VIEWFLAG.B_FULL,(IY + PANEL.VIEWFLAG) POP IX LD DE,PANEL.BAR_X ADD IX,DE - JP PrnHScrBar + JP DrawHScrollBar ScrlDnP GETPORT WINSP.CPU1 @@ -257,7 +257,7 @@ ScrlDnP POP IX LD DE,PANEL.BAR_X ADD IX,DE - JP PrnVScrBar + JP DrawVScrollBar ScrlDnT GETPORT WINSP.CPU1 @@ -344,7 +344,7 @@ ScrDdn2 LD DE,WorkBuffer+0x100 POP IX LD DE,PANEL.BAR_X ADD IX,DE - JP PrnVScrBar + JP DrawVScrollBar ;[]===========================================================[] CursDown LD C,(IY+PANEL.FILES_ALL) @@ -507,7 +507,7 @@ ScrlUp1 BIT VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG) POP IX LD DE,PANEL.BAR_X ADD IX,DE - JP PrnHScrBar + JP DrawHScrollBar ScrlUpP GETPORT WINSP.CPU1 @@ -594,7 +594,7 @@ ScrlUpP POP IX LD DE,PANEL.BAR_X ADD IX,DE - JP PrnVScrBar + JP DrawVScrollBar ScrlUpT GETPORT WINSP.CPU1 @@ -681,7 +681,7 @@ ScrDup1 PUSH BC POP IX LD DE,PANEL.BAR_X ADD IX,DE - JP PrnVScrBar + JP DrawVScrollBar ; На вход: ; HL - X позиция @@ -858,9 +858,9 @@ PageUDex CALL PrintDIR LD A,(IY+PANEL.VIEWFLAG) AND VIEWFLAG.MASK PUSH AF - CALL Z,PrnHScrBar + CALL Z,DrawHScrollBar POP AF - CALL NZ,PrnVScrBar + CALL NZ,DrawVScrollBar LD B,0x07 PgUDext PUSH BC SPMOUSE MOUSEF.READ_STATE @@ -1032,7 +1032,7 @@ NewFile1 LD HL,0x003F LD (IY+PANEL.CURR_FILE + 1),H CALL SetInvert CALL PrnFileInfo - JP ResFire + JP WaitUnpressMouse ;[]==========================================================[] OpenFile BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) @@ -1111,7 +1111,7 @@ OpenF2 PUSH AF PUSH HL CALL ResInvert POP HL - CALL SetClock + CALL PointerMouseClock PUSH IY SPDSS DSSF.CHDIR POP IY @@ -1147,13 +1147,13 @@ OpenF2 PUSH AF LD A,(IY+PANEL.VIEWFLAG) AND VIEWFLAG.MASK PUSH AF - CALL Z,PrnHScrBar + CALL Z,DrawHScrollBar POP AF - CALL NZ,PrnVScrBar - CALL SetMouse + CALL NZ,DrawVScrollBar + CALL PointerMousePointer LD A,(TreeFlag) OR A - JP Z,ResFire + JP Z,WaitUnpressMouse PUSH IY BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) LD IY,LeftPanel @@ -1176,7 +1176,7 @@ OpenF2 PUSH AF POP IX LD DE,PANEL.BAR_X ADD IX,DE - CALL PrnVScrBar + CALL DrawVScrollBar POP IY RET @@ -1353,7 +1353,7 @@ ShowDSlp JR Z,ShowDSlp ShowDSexit SPDSS DSSF.SETVMOD,0,SETVMOD.GRF640X256 - JP ResFire + JP WaitUnpressMouse ;[]==========================================================[] RunEXEfile: LD IX,fn_ext diff --git a/plugins/build_all.bat b/plugins/build_all.bat index 854715d..5f9da7f 100644 --- a/plugins/build_all.bat +++ b/plugins/build_all.bat @@ -1,7 +1,7 @@ @echo off -cls +rem cls cd cdplayer call build diff --git a/plugins/calc/calc.a80 b/plugins/calc/calc.a80 index f5f3c30..3cecb0b 100644 --- a/plugins/calc/calc.a80 +++ b/plugins/calc/calc.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 15.07.2025 savelij +; LAST UPDATE: 31.07.2025 savelij include macros.a80 include fn_const.a80 @@ -42,102 +42,102 @@ PluginEntry: ld hl, asc_C36E ; "7" ld de, 107h ld bc, 75h - ld a, 80h - call JUMPS.PrnRangPathC + ld a,COLORP.HIGHGRAY + COLORI.BLACK + call JUMPS.PrintPathCentr ld hl, asc_C370 ; "8" ld de, 123h ld bc, 75h - ld a, 80h - call JUMPS.PrnRangPathC + ld a,COLORP.HIGHGRAY + COLORI.BLACK + call JUMPS.PrintPathCentr sub_C103: ld hl, asc_C372 ; "9" ld de, 140h ld bc, 75h - ld a, 80h - call JUMPS.PrnRangPathC + ld a,COLORP.HIGHGRAY + COLORI.BLACK + call JUMPS.PrintPathCentr ld hl, asc_C37F ; "/" ld de, 15Bh ld bc, 75h - ld a, 80h - call JUMPS.PrnRangPathC + ld a,COLORP.HIGHGRAY + COLORI.BLACK + call JUMPS.PrintPathCentr ld hl, asc_C374 ; "C" ld de, 177h ld bc, 75h - ld a, 80h - call JUMPS.PrnRangPathC + ld a,COLORP.HIGHGRAY + COLORI.BLACK + call JUMPS.PrintPathCentr ld hl, asc_C368 ; "4" ld de, 107h ld bc, 84h - ld a, 80h - call JUMPS.PrnRangPathC + ld a,COLORP.HIGHGRAY + COLORI.BLACK + call JUMPS.PrintPathCentr ld hl, asc_C36A ; "5" ld de, 123h ld bc, 84h - ld a, 80h - call JUMPS.PrnRangPathC + ld a,COLORP.HIGHGRAY + COLORI.BLACK + call JUMPS.PrintPathCentr ld hl, asc_C36C ; "6" ld de, 140h ld bc, 84h - ld a, 80h - call JUMPS.PrnRangPathC + ld a,COLORP.HIGHGRAY + COLORI.BLACK + call JUMPS.PrintPathCentr ld hl, asc_C37D ; "*" ld de, 15Bh ld bc, 84h - ld a, 80h - call JUMPS.PrnRangPathC + ld a,COLORP.HIGHGRAY + COLORI.BLACK + call JUMPS.PrintPathCentr ld hl, asc_C376 ; "CE" ld de, 178h ld bc, 84h - ld a, 80h - call JUMPS.PrnRangPathC + ld a,COLORP.HIGHGRAY + COLORI.BLACK + call JUMPS.PrintPathCentr ld hl, asc_C362 ; "1" ld de, 107h ld bc, 93h - ld a, 80h - call JUMPS.PrnRangPathC + ld a,COLORP.HIGHGRAY + COLORI.BLACK + call JUMPS.PrintPathCentr ld hl, asc_C364 ; "2" ld de, 123h ld bc, 93h - ld a, 80h - call JUMPS.PrnRangPathC + ld a,COLORP.HIGHGRAY + COLORI.BLACK + call JUMPS.PrintPathCentr ld hl, asc_C366 ; "3" ld de, 140h ld bc, 93h - ld a, 80h - call JUMPS.PrnRangPathC + ld a,COLORP.HIGHGRAY + COLORI.BLACK + call JUMPS.PrintPathCentr ld hl, asc_C37B ; "-" ld de, 15Bh ld bc, 93h - ld a, 80h - call JUMPS.PrnRangPathC + ld a,COLORP.HIGHGRAY + COLORI.BLACK + call JUMPS.PrintPathCentr ld hl, asc_C387 ; "=" ld de, 178h ld bc, 9Ah - ld a, 80h - call JUMPS.PrnRangPathC + ld a,COLORP.HIGHGRAY + COLORI.BLACK + call JUMPS.PrintPathCentr ld hl, asc_C360 ; "0" ld de, 107h ld bc, 0A2h - ld a, 80h - call JUMPS.PrnRangPathC + ld a,COLORP.HIGHGRAY + COLORI.BLACK + call JUMPS.PrintPathCentr ld hl, asc_C381 ; "+/-" ld de, 123h ld bc, 0A2h - ld a, 80h - call JUMPS.PrnRangPathC + ld a,COLORP.HIGHGRAY + COLORI.BLACK + call JUMPS.PrintPathCentr ld hl, asc_C385 ; "." ld de, 13Fh ld bc, 0A2h - ld a, 80h - call JUMPS.PrnRangPathC + ld a,COLORP.HIGHGRAY + COLORI.BLACK + call JUMPS.PrintPathCentr ld hl, asc_C379 ; "+" ld de, 15Bh ld bc, 0A2h - ld a, 80h - call JUMPS.PrnRangPathC - call JUMPS.ResFire + ld a,COLORP.HIGHGRAY + COLORI.BLACK + call JUMPS.PrintPathCentr + call JUMPS.WaitUnpressMouse loc_C1F4: call sub_C324 loc_C1F7: ld ix, PluginMouseTab - call JUMPS.TestCoords + call JUMPS.CheckCoordsMouse SPDSS DSSF.SCANKEY jp z, loc_C1F7 ld a, b @@ -290,9 +290,8 @@ sub_C324: ld hl, asc_C34D sub_C32D: ld ix, 48h ld de, 183h ld bc, 65h - ld a, 80h - call JUMPS.PrnRangPathR - ret + ld a,COLORP.HIGHGRAY + COLORI.BLACK + JP JUMPS.PrintPathRight byte_C33D: db 0 byte_C33E: db 0 diff --git a/plugins/cdplayer/build.bat b/plugins/cdplayer/build.bat index 27a9cd2..f3d815b 100644 --- a/plugins/cdplayer/build.bat +++ b/plugins/cdplayer/build.bat @@ -6,7 +6,7 @@ set path=d:\yad\svn\pentevo\tools\asl\bin\;d:\yad\svn\pentevo\tools\mhmt\;d:\yad call ..\..\setpath_includes set includes=%includes%;..\..\ -cls +rem cls asl -U -L -C -x -olist tmp\cdplayer.lst -i %includes% cdplayer.a80 || goto error p2bin cdplayer.p ..\cdplayer.flx -r $-$ -k diff --git a/plugins/cdplayer/cdplayer.a80 b/plugins/cdplayer/cdplayer.a80 index 988b446..1884ae0 100644 --- a/plugins/cdplayer/cdplayer.a80 +++ b/plugins/cdplayer/cdplayer.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 15.07.2025 savelij +; LAST UPDATE: 31.07.2025 savelij include macros.a80 include fn_const.a80 @@ -36,7 +36,7 @@ PluginEntry: W_BUTTON 442,35,36,18 W_HORIZLINE 2,56,480 W_END - call JUMPS.ResFire + call JUMPS.WaitUnpressMouse CALL SHOW_BUTTON ; вывод иконок на кнопки IF DEBUG CALL DEBUG_TXTKEYS ; отладочный текст @@ -68,7 +68,7 @@ plugin_loop: LD HL,FLAG CALL Z,BIGDIGITSALL ; или выводим на экран ; основной цикл опроса управления .L3 ld ix,PluginMouseTab - call JUMPS.TestCoords + call JUMPS.CheckCoordsMouse SPDSS DSSF.SCANKEY jr z,plugin_loop ld a,b @@ -310,7 +310,7 @@ CDinit: LD B,0xC0 - 1 LD DE,360 LD BC,140 LD A,COLORP.HIGHGRAY + COLORI.BLUE - CALL JUMPS.PrnTxtLnIFF + CALL JUMPS.PrintTxtLine_IFF LD A,1 LD (CURRENT.TRACK),A ; обновление текущего номера трека и времени играния на экране @@ -363,7 +363,7 @@ noCD: ld hl,msgN ld a,COLORP.HIGHGRAY + COLORI.RED CDprn: ld de,84 ld bc,140 - JP JUMPS.PrnTxtLnIFF + JP JUMPS.PrintTxtLine_IFF msgY DZ "CD-ROM is present" msgN DZ "CD-ROM is absent" @@ -418,7 +418,7 @@ DEBUG_TXTKEYS LD HL,DEBUGTABLKEYS INC HL EX (SP),HL LD A,COLORP.HIGHGRAY + COLORI.RED - CALL JUMPS.PrnTxtLnIFF + CALL JUMPS.PrninTxtLine_IFF POP HL JR .L1 ENDIF diff --git a/plugins/date/date.a80 b/plugins/date/date.a80 index 4f7e515..92ca4d7 100644 --- a/plugins/date/date.a80 +++ b/plugins/date/date.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 15.07.2025 savelij +; LAST UPDATE: 01.08.2025 savelij include macros.a80 include fn_const.a80 @@ -52,17 +52,17 @@ aYear: EQU $ - STRLEN("Year") - 2 ld de,202 ld bc,149 ld a,COLORP.HIGHGRAY;80h - call JUMPS.PrnRangPathC + call JUMPS.PrintPathCentr ld hl,aReset ; "Reset" ld de,270 ld bc,149 ld a,COLORP.HIGHGRAY;80h - call JUMPS.PrnRangPathC + call JUMPS.PrintPathCentr ld hl,aQuit ; "Quit" ld de,438 ld bc,149 ld a,COLORP.HIGHGRAY;80h - call JUMPS.PrnRangPathC + call JUMPS.PrintPathCentr call GetSysTime call InitDate ld ix,320 @@ -70,13 +70,13 @@ aYear: EQU $ - STRLEN("Year") - 2 ld de,320 ld bc,114 ld a,COLORP.HIGHGRAY;80h - call JUMPS.PrnRangPathC + call JUMPS.PrintPathCentr call sub_C2B7 call PrintMonth call PrintYear - call JUMPS.ResFire + call JUMPS.WaitUnpressMouse _plugin_loop: ld ix,PluginMouseTab - call JUMPS.TestCoords + call JUMPS.CheckCoordsMouse halt SPDSS DSSF.SCANKEY jr z,_plugin_loop @@ -109,9 +109,8 @@ PrintDay: ld a,(Day) ld ix,14h ld de,0C3h ld bc,82h - ld a,80h - call JUMPS.PrnRangPathL - ret + ld a,COLORP.HIGHGRAY + COLORI.BLACK + JP JUMPS.PrintPathLeft DecDay: ld a,(max_date) ld b,a @@ -149,8 +148,7 @@ sub_C1F3: ld ix,40h ; '@' ld de,13Ah ld bc,82h ld a,80h - call JUMPS.PrnRangPathC - ret + JP JUMPS.PrintPathCentr DecMonth: ld a,(Month) cp 0Bh @@ -186,10 +184,9 @@ PrintYear: ld ix,1Ah ld de,1A7h ld bc,82h ld a,80h - call JUMPS.PrnRangPathC + call JUMPS.PrintPathCentr call sub_C268 - call sub_C2B7 - ret + JP sub_C2B7 DecYear: ld hl, a0+4 ; " " ld c,'9' @@ -230,25 +227,25 @@ loc_C281: ld (max_date),a ret loc_C285: ld de, a0+1 ; " " - call JUMPS.ConvTxtNum16 + call JUMPS.atoi_16b push hl pop bc ld de,190h push bc - call JUMPS.Divis16X16 + call JUMPS.Div_16X16_16b_16b pop bc ld a,h or l jr z,loc_C2AF ld de,4 push bc - call JUMPS.Divis16X16 + call JUMPS.Div_16X16_16b_16b pop bc ld a,h or l jr nz,loc_C2B3 ld de,64h ; 'd' - call JUMPS.Divis16X16 + call JUMPS.Div_16X16_16b_16b ld a,h or l jr z,loc_C2B3 @@ -264,11 +261,10 @@ sub_C2B7: ld a,(Day) cp b jr nc,loc_C2C4 ld (Day),a -loc_C2C4: call PrintDay - ret +loc_C2C4: JP PrintDay SetDate: ld de, a0+1 ; " " - call JUMPS.ConvTxtNum16 + call JUMPS.atoi_16b push hl SPDSS DSSF.GETTIME,0 ld a,(Day) @@ -284,8 +280,7 @@ SetDate: ld de, a0+1 ; " " ReadDate: call GetSysTime loc_C2E9: call PrintDay call PrintMonth - call PrintYear - ret + JP PrintYear GetSysTime: SPDSS DSSF.GETTIME,0 @@ -302,7 +297,7 @@ loc_C307: ld (hl),30h ; '0' djnz loc_C307 pop hl ld de, a0+1 ; " " - call JUMPS.ConvNumTxt16 + call JUMPS.ConvertNumbers_16b InitDate: ld hl, aToday+6 ; "" ld b,' ' loc_C318: ld (hl),0 diff --git a/plugins/fneditor/feditor.a80 b/plugins/fneditor/feditor.a80 index 1c692da..0f03580 100644 --- a/plugins/fneditor/feditor.a80 +++ b/plugins/fneditor/feditor.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 29.07.2025 savelij +; LAST UPDATE: 02.08.2025 savelij ENABLE_CODEPAGE EQU 0 @@ -46,7 +46,7 @@ EditorLoop CALL FEChCursor JP NZ,HEditLoop ; режим редактирования текст TEditLoop LD IX,FEASCIItab - CALL JUMPS.TestCoords + CALL JUMPS.CheckCoordsMouse SPDSS DSSF.SCANKEY ; Ожидаем нажатия клавиш JR Z,EditorLoop LD A,D @@ -138,7 +138,7 @@ TEditLoop LD IX,FEASCIItab ; режим редактирования HEX HEditLoop LD IX,FEHEXtab - CALL JUMPS.TestCoords + CALL JUMPS.CheckCoordsMouse SPDSS DSSF.SCANKEY ; Ожидаем нажатия клавиш JP Z,EditorLoop LD A,D @@ -276,7 +276,7 @@ EditorExit CALL PutString W_TEXT 150,45,COLORP.HIGHGRAY,"No" W_END SureLoop LD IX,SureTab - CALL JUMPS.TestCoords + CALL JUMPS.CheckCoordsMouse SPDSS DSSF.SCANKEY JR Z,SureLoop LD A,B @@ -319,7 +319,7 @@ QuitAsk: ld a,0 W_TEXT 150,35,COLORP.HIGHGRAY,"No" W_END FEQuitLoop: LD IX,FEQuitTab - CALL JUMPS.TestCoords + CALL JUMPS.CheckCoordsMouse SPDSS DSSF.SCANKEY JR Z,FEQuitLoop LD A,B @@ -389,18 +389,18 @@ FEInitScreen LD HL,WorkBuffer LD DE,0x0030 LD BC,0x0011 - LD A,0x80 - CALL JUMPS.PrnRangPathL - LD HL,0x01FC - LD DE,0x0003 - LD B,0x08 + LD A,COLORP.HIGHGRAY + COLORI.BLACK + CALL JUMPS.PrintPathLeft + LD HL,508 + LD DE,3 + LD B,COLORP.BLACK + COLORI.HIGHGRAY EXX - LD HL,0x022E - LD DE,0x0003 - LD B,0x08 + LD HL,558 + LD DE,3 + LD B,COLORP.BLACK + COLORI.HIGHGRAY EXX - LD A,0x02 - JP JUMPS.SetCMOSPrint + LD A,DateMonthFormat.Text + JP JUMPS.CMOSPrintDateTime ;[]==========================================================[] InitStatus @@ -478,7 +478,7 @@ ASCIIenc2 EQU $ - 2 InitFile LD A,(EditMode) OR A JR NZ,InitFileHex - CALL JUMPS.SetClock + CALL JUMPS.PointerMouseClock LD HL,0x0000 LD E,L LD D,H @@ -511,7 +511,7 @@ InitAlp PUSH HL LD (CLine),HL LD H,0x00 LD (CAddX),HL - JP JUMPS.SetMouse + JP JUMPS.PointerMousePointer InitFileHex LD HL,(FEFileLenght) LD A,L @@ -704,7 +704,7 @@ FEAbout CALL FEResCursor W_TEXT 154,69,COLORP.HIGHGRAY,"Ok" W_END FEAboutLoop LD IX,FEAboutTab - CALL JUMPS.TestCoords + CALL JUMPS.CheckCoordsMouse SPDSS DSSF.SCANKEY JR Z,FEAboutLoop LD A,B diff --git a/plugins/fneditor/fedos.a80 b/plugins/fneditor/fedos.a80 index 34da050..0860d98 100644 --- a/plugins/fneditor/fedos.a80 +++ b/plugins/fneditor/fedos.a80 @@ -1,8 +1,8 @@ -; LAST UPDATE: 29.07.2025 savelij +; LAST UPDATE: 31.07.2025 savelij ;[]==========================================================[] -FELoadFile CALL JUMPS.SetClock +FELoadFile CALL JUMPS.PointerMouseClock LD DE,EditingFile PUSH HL SPDSS DSSF.F_FIRST,1,0x37 @@ -51,12 +51,12 @@ FELoadFile CALL JUMPS.SetClock AND 0xC0 RLCA RLCA - LD (IX+PROC.MAX_PAGES),A + LD (IX+PROGRESSBAR.MAX_PAGES),A SUB A - LD (IX+PROC.MAX_PAGES + 1),A - LD (IX+PROC.MAX_PAGES + 2),A - LD (IX+PROC.MAX_PAGES + 3),A - CALL JUMPS.InitProcess + LD (IX+PROGRESSBAR.MAX_PAGES + 1),A + LD (IX+PROGRESSBAR.MAX_PAGES + 2),A + LD (IX+PROGRESSBAR.MAX_PAGES + 3),A + CALL JUMPS.InitProgressBar MAKEWINDOW WINSUBOBJ.STORE W_MAIN 160,88,320,48 W_FILL 4,2,312,10,COLORI.BLACK @@ -97,8 +97,8 @@ FELoadFile CALL JUMPS.SetClock LD HL,WorkBuffer LD DE,0x00D8 LD BC,0x0068 - LD A,0x80 - CALL JUMPS.PrnRangPathL + LD A,COLORP.HIGHGRAY + COLORI.BLACK + CALL JUMPS.PrintPathLeft LD HL,EditingFile+33 SPDSS DSSF.OPEN,,1 PUSH AF @@ -162,7 +162,7 @@ FELoadExit HALT HALT WINDOWCLOSE PUSH AF - CALL JUMPS.SetMouse + CALL JUMPS.PointerMousePointer POP AF RET @@ -176,7 +176,7 @@ FENoRead LD A,(FEMemIndef) ;[]==========================================================[] FENewFile PUSH AF - CALL JUMPS.SetMouse + CALL JUMPS.PointerMousePointer POP AF CP 0x03 JR Z,.NewFile1 @@ -204,10 +204,10 @@ FENewFile PUSH AF LD HL,WorkBuffer LD DE,0x0140 LD BC,0x0076 - LD A,0x80 - CALL JUMPS.PrnRangPathC + LD A,COLORP.HIGHGRAY + COLORI.BLACK + CALL JUMPS.PrintPathCentr NewFLoop LD IX,NewFileTab - CALL JUMPS.TestCoords + CALL JUMPS.CheckCoordsMouse SPDSS DSSF.SCANKEY JR Z,NewFLoop LD A,B @@ -307,7 +307,7 @@ EError PUSH AF ;[]==========================================================[] SaveFile CALL PutString - CALL JUMPS.SetClock + CALL JUMPS.PointerMouseClock LD IX,ProcessEdit LD HL,(FEFileLenght) LD A,H @@ -320,12 +320,12 @@ SaveFile CALL PutString OR L JR Z,.L1 INC B -.L1 LD (IX+PROC.MAX_PAGES),B +.L1 LD (IX+PROGRESSBAR.MAX_PAGES),B SUB A - LD (IX+PROC.MAX_PAGES + 1),A - LD (IX+PROC.MAX_PAGES + 2),A - LD (IX+PROC.MAX_PAGES + 3),A - CALL JUMPS.InitProcess + LD (IX+PROGRESSBAR.MAX_PAGES + 1),A + LD (IX+PROGRESSBAR.MAX_PAGES + 2),A + LD (IX+PROGRESSBAR.MAX_PAGES + 3),A + CALL JUMPS.InitProgressBar MAKEWINDOW WINSUBOBJ.STORE W_MAIN 160,88,320,48 W_FILL 4,2,312,10,COLORI.BLACK @@ -370,8 +370,8 @@ SaveFile CALL PutString LD HL,WorkBuffer LD DE,0x00D0 LD BC,0x0068 - LD A,0x80 - CALL JUMPS.PrnRangPathL + LD A,COLORP.HIGHGRAY + COLORI.BLACK + CALL JUMPS.PrintPathLeft LD HL,EditingFile+33 LD A,(EditingFile+32) PUSH IY @@ -438,7 +438,7 @@ SaveExit SUB A SaveExit1 HALT HALT WINDOWCLOSE - CALL JUMPS.SetMouse + CALL JUMPS.PointerMousePointer RET SaveAbort POP HL @@ -448,20 +448,20 @@ SaveAbort POP HL ;[]----------------------------------------------------------[] FENextProcess LD IX,ProcessEdit - LD L,(IX+PROC.CURR_PAGE) - LD H,(IX+PROC.CURR_PAGE + 1) + LD L,(IX+PROGRESSBAR.CURR_PAGE) + LD H,(IX+PROGRESSBAR.CURR_PAGE + 1) INC HL - LD (IX+PROC.CURR_PAGE),L - LD (IX+PROC.CURR_PAGE + 1),H + LD (IX+PROGRESSBAR.CURR_PAGE),L + LD (IX+PROGRESSBAR.CURR_PAGE + 1),H LD A,H OR L JR NZ,.NextPr1 - LD L,(IX+PROC.CURR_PAGE + 2) - LD H,(IX+PROC.CURR_PAGE + 3) + LD L,(IX+PROGRESSBAR.CURR_PAGE + 2) + LD H,(IX+PROGRESSBAR.CURR_PAGE + 3) INC HL - LD (IX+PROC.CURR_PAGE + 2),L - LD (IX+PROC.CURR_PAGE + 3),H -.NextPr1 CALL JUMPS.PrnProcess + LD (IX+PROGRESSBAR.CURR_PAGE + 2),L + LD (IX+PROGRESSBAR.CURR_PAGE + 3),H +.NextPr1 CALL JUMPS.DrawProgressBar RET ProcessEdit DW 178 diff --git a/plugins/fneditor/fehex.a80 b/plugins/fneditor/fehex.a80 index b4cafe8..350ffd8 100644 --- a/plugins/fneditor/fehex.a80 +++ b/plugins/fneditor/fehex.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 26.07.2025 savelij +; LAST UPDATE: 01.08.2025 savelij ;[]==========================================================[] ;Процедура печати страницы дампа с тек.смещ. от начала файла @@ -161,7 +161,7 @@ FEFillHex LD A,0x10 ; LD B,0x4E LD C,IXH LD A,COLORP.PANEL + COLORI.FILES - CALL JUMPS.PrnTxtLnNormC + CALL JUMPS.PrintTxtLineNumsChar OR A RET ;CY-была последняя строка @@ -222,18 +222,18 @@ PrnHEXinfo LD HL,LineH LD HL,(CurLine) LD DE,LineH INC HL - CALL JUMPS.ConvNumTxt16 + CALL JUMPS.ConvertNumbers_16b LD DE,ColH LD A,(IY+CursorX) SRL A INC A - CALL JUMPS.ConvNumTxt8 + CALL JUMPS.ConvertNumbers_8b LD HL,0xC000 LD DE,FreeH LD BC,(FEFileLenght) OR A SBC HL,BC - CALL JUMPS.ConvNumTxt16 + CALL JUMPS.ConvertNumbers_16b LD HL,ReadyNo LD A,(IY+ReadyFile) OR A @@ -241,23 +241,23 @@ PrnHEXinfo LD HL,LineH LD HL,ReadyYes .L1 LD DE,0x017E LD BC,0x0011 - LD A,0x80 - CALL JUMPS.PrnTxtLnIFF + LD A,COLORP.HIGHGRAY + COLORI.BLACK + CALL JUMPS.PrintTxtLine_IFF LD HL,LineH LD DE,0x01AE LD BC,0x0011 - LD A,0x80 - CALL JUMPS.PrnTxtLnIFF + LD A,COLORP.HIGHGRAY + COLORI.BLACK + CALL JUMPS.PrintTxtLine_IFF LD HL,ColH LD DE,0x01F8 LD BC,0x0011 - LD A,0x80 - CALL JUMPS.PrnTxtLnIFF + LD A,COLORP.HIGHGRAY + COLORI.BLACK + CALL JUMPS.PrintTxtLine_IFF LD HL,FreeH LD DE,0x0248 LD BC,0x0011 - LD A,0x80 - CALL JUMPS.PrnTxtLnIFF + LD A,COLORP.HIGHGRAY + COLORI.BLACK + CALL JUMPS.PrintTxtLine_IFF LD IX,EditVBar LD HL,(ELines) LD DE,(EquipLines) @@ -268,7 +268,7 @@ PrnHEXinfo LD HL,LineH CALL JUMPS.InitScrollBar LD HL,(CurLine) LD (CLine),HL - CALL JUMPS.PrnVScrBar + CALL JUMPS.DrawVScrollBar RET TstLinH LD HL,(CLine) @@ -277,7 +277,7 @@ TstLinH LD HL,(CLine) SBC HL,DE RET Z LD (CLine),DE - CALL JUMPS.PrnVScrBar + CALL JUMPS.DrawVScrollBar RET LineH DUPL 6,0 @@ -448,7 +448,7 @@ HDeleteByte LD HL,(LineShift) LD C,A LD B,0x06 LD A,COLORP.PANEL + COLORI.FILES - CALL JUMPS.PrnTxtLnNormC + CALL JUMPS.PrintTxtLineNumsChar HDelS1 LD (IY+ReadyFile),0x01 RES 0,(IY+CursorX) LD A,0x01 @@ -1076,7 +1076,7 @@ FEPrintHGT LD HL,FENewShift LD DE,0x0008 LD BC,0x051C LD A,COLORP.PANEL + COLORI.FILES - CALL JUMPS.PrnTxtLnNormC + CALL JUMPS.PrintTxtLineNumsChar LD A,(FECursPos) ;Позиция вывода курсора INC A LD L,A @@ -1089,7 +1089,7 @@ FEPrintHGT LD HL,FENewShift LD (HL),0xAB;'<' LD BC,0x011C LD A,COLORP.PANEL + COLORI.FILES - CALL JUMPS.PrnTxtLnNormC + CALL JUMPS.PrintTxtLineNumsChar LD A,0x01 ;Номер выведенного курсора LD (FECurCurs),A LD A,0x06 ;Ожидание для смены курсора @@ -1127,7 +1127,7 @@ FECurCurs EQU $-1 LD (HL),A LD BC,0x011C LD A,COLORP.PANEL + COLORI.FILES - CALL JUMPS.PrnTxtLnNormC + CALL JUMPS.PrintTxtLineNumsChar LD A,0x0C ;Ожидание для смены курсора LD (FECurWait),A RET @@ -1169,8 +1169,7 @@ FEHGTenter SUB A ; SUB A LD (IY+CursorX),A LD (IY+CursorY),A - CALL FEPrnHEXpage ;Печатаем страницу - RET + JP FEPrnHEXpage ;Печатаем страницу ;Нажат Escape FEHGTescape LD HL,FENewShift ;Буфер строки @@ -1185,10 +1184,9 @@ FEHGTescape LD HL,FENewShift ; LD DE,0x0008 LD BC,0x051C LD A,COLORP.PANEL + COLORI.FILES - CALL JUMPS.PrnTxtLnNormC + CALL JUMPS.PrintTxtLineNumsChar CALL PrHEXCr - CALL JUMPS.ResFire - RET ;Выходим + JP JUMPS.WaitUnpressMouse ;Выходим FENewShift DEFB " ",0 diff --git a/plugins/fneditor/feprn.a80 b/plugins/fneditor/feprn.a80 index 592eef7..6a2b99d 100644 --- a/plugins/fneditor/feprn.a80 +++ b/plugins/fneditor/feprn.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 26.07.2025 savelij +; LAST UPDATE: 31.07.2025 savelij ;[]==========================================================[] FEPrintFile CALL FEResCursor @@ -13,7 +13,7 @@ FEPrintFile CALL FEResCursor W_TEXT 140,35,COLORP.HIGHGRAY,"Stop" W_END LD IX,FEPrintTab - CALL JUMPS.TestCoords + CALL JUMPS.CheckCoordsMouse LD IX,FEProcessPrn LD HL,(FEFileLenght) LD A,L @@ -22,11 +22,11 @@ FEPrintFile CALL FEResCursor OR A JR Z,.InitPrn INC HL -.InitPrn LD (IX+PROC.MAX_PAGES),L - LD (IX+PROC.MAX_PAGES + 1),H - LD (IX+PROC.MAX_PAGES + 2),0x00 - LD (IX+PROC.MAX_PAGES + 3),0x00 - CALL JUMPS.InitProcess +.InitPrn LD (IX+PROGRESSBAR.MAX_PAGES),L + LD (IX+PROGRESSBAR.MAX_PAGES + 1),H + LD (IX+PROGRESSBAR.MAX_PAGES + 2),0x00 + LD (IX+PROGRESSBAR.MAX_PAGES + 3),0x00 + CALL JUMPS.InitProgressBar LD A,(EditMode) OR A JP NZ,FEPrintHEX @@ -227,7 +227,7 @@ FEPrintCHAR LD IXL,A BIT 0,A JR Z,.PrnCH1 LD IX,FEPrintTab - CALL JUMPS.TestCoords + CALL JUMPS.CheckCoordsMouse JR C,.PrnCH2 .PrnCH1 SPDSS DSSF.SCANKEY @@ -278,20 +278,20 @@ FENxtPrnProc LD A,E EXX PUSH DE LD IX,FEProcessPrn - LD L,(IX+PROC.CURR_PAGE) - LD H,(IX+PROC.CURR_PAGE + 1) + LD L,(IX+PROGRESSBAR.CURR_PAGE) + LD H,(IX+PROGRESSBAR.CURR_PAGE + 1) INC HL - LD (IX+PROC.CURR_PAGE),L - LD (IX+PROC.CURR_PAGE + 1),H + LD (IX+PROGRESSBAR.CURR_PAGE),L + LD (IX+PROGRESSBAR.CURR_PAGE + 1),H LD A,H OR L JR NZ,.NxtProc - LD L,(IX+PROC.CURR_PAGE + 2) - LD H,(IX+PROC.CURR_PAGE + 3) + LD L,(IX+PROGRESSBAR.CURR_PAGE + 2) + LD H,(IX+PROGRESSBAR.CURR_PAGE + 3) INC HL - LD (IX+PROC.CURR_PAGE + 2),L - LD (IX+PROC.CURR_PAGE + 3),H -.NxtProc CALL JUMPS.PrnProcess + LD (IX+PROGRESSBAR.CURR_PAGE + 2),L + LD (IX+PROGRESSBAR.CURR_PAGE + 3),H +.NxtProc CALL JUMPS.DrawProgressBar POP DE EXX POP BC diff --git a/plugins/fneditor/fesetup.a80 b/plugins/fneditor/fesetup.a80 index 5588899..a4cb23d 100644 --- a/plugins/fneditor/fesetup.a80 +++ b/plugins/fneditor/fesetup.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 26.07.2025 savelij +; LAST UPDATE: 31.07.2025 savelij FECSign: DB "FEC" HomeKeyFlag: DB 0 @@ -140,7 +140,7 @@ BracketsFlg: EQU $-2 W_END FESetupLoop: LD IX,FESetupTab - CALL JUMPS.TestCoords + CALL JUMPS.CheckCoordsMouse SPDSS DSSF.SCANKEY JR Z,FESetupLoop LD A,E @@ -182,9 +182,9 @@ SetupConfirmDlgInvert: LD (HL),A LD DE,0x00DC LD BC,0x0065 - LD A,0xF0 - CALL JUMPS.PrnTxtLnIFF - JP JUMPS.ResFire + LD A,COLORP.WHITE + COLORI.BLACK + CALL JUMPS.PrintTxtLine_IFF + JP JUMPS.WaitUnpressMouse SetupHomeKeyInvert: LD HL,CheckTxt @@ -195,9 +195,9 @@ SetupHomeKeyInvert: LD (HL),A LD DE,0x00DC LD BC,0x0075 - LD A,0xF0 - CALL JUMPS.PrnTxtLnIFF - JP JUMPS.ResFire + LD A,COLORP.WHITE + COLORI.BLACK + CALL JUMPS.PrintTxtLine_IFF + JP JUMPS.WaitUnpressMouse SetupAutoIndentInvert: LD HL,CheckTxt @@ -208,9 +208,9 @@ SetupAutoIndentInvert: LD (HL),A LD DE,0x00DC LD BC,0x0085 - LD A,0xF0 - CALL JUMPS.PrnTxtLnIFF - JP JUMPS.ResFire + LD A,COLORP.WHITE + COLORI.BLACK + CALL JUMPS.PrintTxtLine_IFF + JP JUMPS.WaitUnpressMouse SetupAutoBracketsInvert: LD HL,CheckTxt @@ -221,9 +221,9 @@ SetupAutoBracketsInvert: LD (HL),A LD DE,0x00DC LD BC,0x0095 - LD A,0xF0 - CALL JUMPS.PrnTxtLnIFF - JP JUMPS.ResFire + LD A,COLORP.WHITE + COLORI.BLACK + CALL JUMPS.PrintTxtLine_IFF + JP JUMPS.WaitUnpressMouse FESetupOkey: ld a,(ExitDlgFlag) LD (QuitAsk.param),a diff --git a/plugins/fneditor/fetext.a80 b/plugins/fneditor/fetext.a80 index 0784f82..90a76fb 100644 --- a/plugins/fneditor/fetext.a80 +++ b/plugins/fneditor/fetext.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 29.07.2025 savelij +; LAST UPDATE: 01.08.2025 savelij ;[]==========================================================[] FEPrnASCIIpage LD HL,PrnASCIIinfo @@ -235,7 +235,7 @@ PutLnExA LD L,(IY+CursAddX) LD B,0x4E LD C,IXH LD A,COLORP.PANEL + COLORI.FILES - CALL JUMPS.PrnTxtLnNormC + CALL JUMPS.PrintTxtLineNumsChar OR A RET @@ -285,7 +285,7 @@ PrASCIIex1 CALL FEResCursor ADD A,0x1C LD C,A LD A,COLORP.PANEL + COLORI.FILES - CALL JUMPS.PrnTxtLnNormC + CALL JUMPS.PrintTxtLineNumsChar LD E,(IY+CursorX) LD D,(IY+CursorY) JP FESetCursor @@ -770,18 +770,18 @@ PrnASCIIinfo LD HL,LineT LD HL,(CurLine) LD DE,LineT INC HL - CALL JUMPS.ConvNumTxt16 + CALL JUMPS.ConvertNumbers_16b LD DE,ColT LD A,(IY+CursorX) ADD A,(IY+CursAddX) INC A - CALL JUMPS.ConvNumTxt8 + CALL JUMPS.ConvertNumbers_8b LD HL,0xC000 LD DE,FreeT LD BC,(FEFileLenght) OR A SBC HL,BC - CALL JUMPS.ConvNumTxt16 + CALL JUMPS.ConvertNumbers_16b LD HL,ReadyNo LD A,(IY+ReadyFile) OR A @@ -789,23 +789,23 @@ PrnASCIIinfo LD HL,LineT LD HL,ReadyYes .L1 LD DE,0x017E LD BC,0x0011 - LD A,0x80 - CALL JUMPS.PrnTxtLnIFF + LD A,COLORP.HIGHGRAY + COLORI.BLACK + CALL JUMPS.PrintTxtLine_IFF LD HL,LineT LD DE,0x01AE LD BC,0x0011 - LD A,0x80 - CALL JUMPS.PrnTxtLnIFF + LD A,COLORP.HIGHGRAY + COLORI.BLACK + CALL JUMPS.PrintTxtLine_IFF LD HL,ColT LD DE,0x01F8 LD BC,0x0011 - LD A,0x80 - CALL JUMPS.PrnTxtLnIFF + LD A,COLORP.HIGHGRAY + COLORI.BLACK + CALL JUMPS.PrintTxtLine_IFF LD HL,FreeT LD DE,0x0248 LD BC,0x0011 - LD A,0x80 - CALL JUMPS.PrnTxtLnIFF + LD A,COLORP.HIGHGRAY + COLORI.BLACK + CALL JUMPS.PrintTxtLine_IFF LD IX,EditVBar LD HL,(ELines) LD DE,(EquipLines) @@ -816,7 +816,7 @@ PrnASCIIinfo LD HL,LineT CALL JUMPS.InitScrollBar LD HL,(CurLine) LD (CLine),HL - CALL JUMPS.PrnVScrBar + CALL JUMPS.DrawVScrollBar JR TstAddX TstLine LD HL,(CLine) @@ -825,7 +825,7 @@ TstLine LD HL,(CLine) SBC HL,DE JR Z,TstAddX LD (CLine),DE - CALL JUMPS.PrnVScrBar + CALL JUMPS.DrawVScrollBar TstAddX LD A,(CAddX) SUB (IY+CursorX) CP (IY+CursAddX) @@ -834,7 +834,7 @@ TstAddX LD A,(CAddX) ADD A,(IY+CursAddX) LD (CAddX),A LD IX,EditHBar - JP JUMPS.PrnHScrBar + JP JUMPS.DrawHScrollBar ReadyNo DEFB 0x01,0 ReadyYes DEFB "*",0 @@ -1945,7 +1945,7 @@ NewPos6 LD A,C LD D,(IY+CursorY) CALL FESetCursor CALL PrnASCIIinfo - JP JUMPS.ResFire + JP JUMPS.WaitUnpressMouse IF ENABLE_CODEPAGE ; перекдючение кодировки diff --git a/plugins/fnviewer/fvhex.a80 b/plugins/fnviewer/fvhex.a80 index 2ada502..bbaa4ef 100644 --- a/plugins/fnviewer/fvhex.a80 +++ b/plugins/fnviewer/fvhex.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 28.07.2025 savelij +; LAST UPDATE: 31.07.2025 savelij ;-------------------------------------------------------------- ; Процедура печати страницы дампа с тек.смещ. от начала файла @@ -153,7 +153,7 @@ FillHex LD A,0x10 ; LD B,0x50 LD C,IXH LD A,COLORP.PANEL + COLORI.FILES - CALL JUMPS.PrnTxtLnNormC + CALL JUMPS.PrintTxtLineNumsChar OR A RET ; CY-была последняя строка @@ -369,7 +369,7 @@ HPageDwn LD HL,(FileShift) RET ; В начало файла -HBegFile LD HL,JUMPS.ResFire +HBegFile LD HL,JUMPS.WaitUnpressMouse PUSH HL LD HL,(FileShift) LD BC,(FileShift+2) @@ -384,7 +384,7 @@ HBegFile LD HL,JUMPS.ResFire JP PrnHEXpage ; Печатаем страницу ; В конец файла -HEndFile LD HL,JUMPS.ResFire +HEndFile LD HL,JUMPS.WaitUnpressMouse PUSH HL LD HL,(FileShift) LD BC,(FileShift+2) @@ -552,7 +552,7 @@ PrintHGT LD HL,NewShift LD DE,0x0008 LD BC,0x081C LD A,COLORP.PANEL + COLORI.FILES - CALL JUMPS.PrnTxtLnNormC + CALL JUMPS.PrintTxtLineNumsChar LD A,(CursPos+1) ; Позиция вывода курсора INC A LD L,A @@ -565,7 +565,7 @@ PrintHGT LD HL,NewShift LD (HL),0xAB;"<" LD BC,0x011C LD A,COLORP.PANEL + COLORI.FILES - CALL JUMPS.PrnTxtLnNormC + CALL JUMPS.PrintTxtLineNumsChar LD A,0x01 ; Номер выведенного курсора LD (CurCurs),A LD A,0x06 ; Ожидание для смены курсора @@ -603,7 +603,7 @@ CurCurs EQU $-1 LD (HL),A LD BC,0x011C LD A,COLORP.PANEL + COLORI.FILES - CALL JUMPS.PrnTxtLnNormC + CALL JUMPS.PrintTxtLineNumsChar LD A,0x0C ; Ожидание для смены курсора LD (CurWait),A RET @@ -661,8 +661,8 @@ HGTescape LD HL,NewShift ; LD DE,0x0008 LD BC,0x081C LD A,COLORP.PANEL + COLORI.FILES - CALL JUMPS.PrnTxtLnNormC - JP JUMPS.ResFire ; Выходим + CALL JUMPS.PrintTxtLineNumsChar + JP JUMPS.WaitUnpressMouse ; Выходим NewShift DEFB " ",0 diff --git a/plugins/fnviewer/fviewer.a80 b/plugins/fnviewer/fviewer.a80 index 3c70714..badac46 100644 --- a/plugins/fnviewer/fviewer.a80 +++ b/plugins/fnviewer/fviewer.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 28.07.2025 savelij +; LAST UPDATE: 02.08.2025 savelij LineBuffer := WorkBuffer+0x300 @@ -29,7 +29,7 @@ ViewerLoop LD A,(ViewMode) ; реж JR NZ,HViewLoop ; режим просмотра текст TViewLoop LD IX,ASCIItab - CALL JUMPS.TestCoords + CALL JUMPS.CheckCoordsMouse SPDSS DSSF.SCANKEY ; Ожидаем нажатия клавиш JR Z,TViewLoop LD A,E ; Е-ASCII код @@ -87,7 +87,7 @@ TViewLoop LD IX,ASCIItab ;-------------------------------------------------------------- ; режим просмотра HEX HViewLoop LD IX,HEXtab - CALL JUMPS.TestCoords + CALL JUMPS.CheckCoordsMouse SPDSS DSSF.SCANKEY ; Ожидаем нажатия клавиш JR Z,HViewLoop LD A,E ; Е-ASCII код @@ -168,7 +168,7 @@ ViewerExit LD A,(FVMemIndef) RET ;[]==========================================================[] -LoadFile CALL JUMPS.SetClock +LoadFile CALL JUMPS.PointerMouseClock LD DE,ViewingFile SPDSS DSSF.F_FIRST,1, DIR.M_Archive + \ DIR.M_Dir + \ @@ -233,13 +233,13 @@ LoadFl1 LD A,D POP DE JP C,LoadExit LD IX,ProcessView - LD (IX+PROC.MAX_PAGES),E - LD (IX+PROC.MAX_PAGES + 1),D + LD (IX+PROGRESSBAR.MAX_PAGES),E + LD (IX+PROGRESSBAR.MAX_PAGES + 1),D SUB A - LD (IX+PROC.MAX_PAGES + 2),A - LD (IX+PROC.MAX_PAGES + 3),A + LD (IX+PROGRESSBAR.MAX_PAGES + 2),A + LD (IX+PROGRESSBAR.MAX_PAGES + 3),A PUSH DE - CALL JUMPS.InitProcess + CALL JUMPS.InitProgressBar POP DE LD B,E SPDSS DSSF.GETMEM @@ -286,8 +286,8 @@ LoadFl1 LD A,D LD HL,WorkBuffer LD DE,0x00D8 LD BC,0x0068 - LD A,0x80 - CALL JUMPS.PrnRangPathL + LD A,COLORP.HIGHGRAY + COLORI.BLACK + CALL JUMPS.PrintPathLeft LD HL,ViewingFile+33 SPDSS DSSF.OPEN,,1 PUSH AF @@ -358,7 +358,7 @@ LoadExit HALT HALT WINDOWCLOSE PUSH AF - CALL JUMPS.SetMouse + CALL JUMPS.PointerMousePointer POP AF RET @@ -371,20 +371,20 @@ NoRead LD A,(FVMemIndef) JR LoadExit FVNextProcess LD IX,ProcessView - LD L,(IX+PROC.CURR_PAGE) - LD H,(IX+PROC.CURR_PAGE + 1) + LD L,(IX+PROGRESSBAR.CURR_PAGE) + LD H,(IX+PROGRESSBAR.CURR_PAGE + 1) INC HL - LD (IX+PROC.CURR_PAGE),L - LD (IX+PROC.CURR_PAGE + 1),H + LD (IX+PROGRESSBAR.CURR_PAGE),L + LD (IX+PROGRESSBAR.CURR_PAGE + 1),H LD A,H OR L JR NZ,.NextPr1 - LD L,(IX+PROC.CURR_PAGE + 2) - LD H,(IX+PROC.CURR_PAGE + 3) + LD L,(IX+PROGRESSBAR.CURR_PAGE + 2) + LD H,(IX+PROGRESSBAR.CURR_PAGE + 3) INC HL - LD (IX+PROC.CURR_PAGE + 2),L - LD (IX+PROC.CURR_PAGE + 3),H -.NextPr1 JP JUMPS.PrnProcess + LD (IX+PROGRESSBAR.CURR_PAGE + 2),L + LD (IX+PROGRESSBAR.CURR_PAGE + 3),H +.NextPr1 JP JUMPS.DrawProgressBar ;[]----------------------------------------------------------[] ProcessView DW 178 @@ -434,7 +434,7 @@ InitViewScr LD HL,FVFLen LD H,(IX+29) LD C,(IX+30) LD B,(IX+31) - CALL JUMPS.ConvNumTxt32 + CALL JUMPS.ConvertNumbers_32b LD A,0x20 LD (DE),A INC DE @@ -448,7 +448,7 @@ InitViewScr LD HL,FVFLen LD L,(IX+26) LD H,(IX+27) LD DE,FVFClast - CALL JUMPS.ConvNumTxt16 + CALL JUMPS.ConvertNumbers_16b LD HL,FVFAtributs LD DE,FVFAttrib LD C,(IX+32) @@ -516,18 +516,18 @@ FVFAttrib EQU $ - STRLEN(" ") - 1 LD HL,WorkBuffer LD DE,0x0034 LD BC,0x0011 - LD A,0x80 - CALL JUMPS.PrnRangPathL - LD HL,0x01FC - LD DE,0x0003 - LD B,0x08 + LD A,COLORP.HIGHGRAY + COLORI.BLACK + CALL JUMPS.PrintPathLeft + LD HL,508 + LD DE,3 + LD B,COLORP.BLACK + COLORI.HIGHGRAY EXX - LD HL,0x022E - LD DE,0x0003 - LD B,0x08 + LD HL,558 + LD DE,3 + LD B,COLORP.BLACK + COLORI.HIGHGRAY EXX - LD A,0x02 - JP JUMPS.SetCMOSPrint + LD A,DateMonthFormat.Text + JP JUMPS.CMOSPrintDateTime FVFAtributs DEFB "--ad-shr" @@ -667,7 +667,7 @@ About W_TEXT 154,69,COLORP.HIGHGRAY,"Ok" W_END AboutLoop LD IX,FVAboutTab - CALL JUMPS.TestCoords + CALL JUMPS.CheckCoordsMouse SPDSS DSSF.SCANKEY JR Z,AboutLoop LD A,B @@ -821,7 +821,7 @@ InitProc PUSH HL PUSH DE EX DE,HL LD BC,100 ; Длина файла/100 (%) - CALL JUMPS.Divis32 + CALL JUMPS.Div_32X16_32b_16b LD (Coeff1+1),DE ; Получаем кол-во байт на LD (Coeff2+1),HL ; один процент LD IX,ProcentTab @@ -988,8 +988,8 @@ PutProcent LD HL,ProcText POP HL LD DE,0x0250 LD BC,0x0011 - LD A,0x80 - JP JUMPS.PrnTxtLnNorm + LD A,COLORP.HIGHGRAY + COLORI.BLACK + JP JUMPS.PrintTxtLine InitCodePage: LD A,0 CodePage EQU $-1 diff --git a/plugins/fnviewer/fvprn.a80 b/plugins/fnviewer/fvprn.a80 index 34bceeb..5493cac 100644 --- a/plugins/fnviewer/fvprn.a80 +++ b/plugins/fnviewer/fvprn.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 28.07.2025 savelij +; LAST UPDATE: 31.07.2025 savelij ;[]==========================================================[] FVPrintFile @@ -13,7 +13,7 @@ FVPrintFile W_TEXT 140,35,COLORP.HIGHGRAY,"Stop" W_END LD IX,PrintTab - CALL JUMPS.TestCoords + CALL JUMPS.CheckCoordsMouse LD IX,ProcessPrn LD HL,(FileLenght) LD DE,(FileLenght+2) @@ -28,11 +28,11 @@ FVPrintFile OR L JR NZ,.InitPrn INC E -.InitPrn LD (IX+PROC.MAX_PAGES),L - LD (IX+PROC.MAX_PAGES + 1),H - LD (IX+PROC.MAX_PAGES + 2),E - LD (IX+PROC.MAX_PAGES + 3),0x00 - CALL JUMPS.InitProcess +.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 JUMPS.InitProgressBar LD A,(ViewMode) OR A JP NZ,PrintHEX @@ -220,7 +220,7 @@ FVPrintCHAR LD IXL,A BIT 0,A JR Z,.PrnCH1 LD IX,PrintTab - CALL JUMPS.TestCoords + CALL JUMPS.CheckCoordsMouse JR C,.PrnCH2 .PrnCH1 SPDSS DSSF.SCANKEY @@ -271,20 +271,20 @@ FVNxtPrnProc LD A,E EXX PUSH DE LD IX,ProcessPrn - LD L,(IX+PROC.CURR_PAGE) - LD H,(IX+PROC.CURR_PAGE + 1) + LD L,(IX+PROGRESSBAR.CURR_PAGE) + LD H,(IX+PROGRESSBAR.CURR_PAGE + 1) INC HL - LD (IX+PROC.CURR_PAGE),L - LD (IX+PROC.CURR_PAGE + 1),H + LD (IX+PROGRESSBAR.CURR_PAGE),L + LD (IX+PROGRESSBAR.CURR_PAGE + 1),H LD A,H OR L JR NZ,.NxtProc - LD L,(IX+PROC.CURR_PAGE + 2) - LD H,(IX+PROC.CURR_PAGE + 3) + LD L,(IX+PROGRESSBAR.CURR_PAGE + 2) + LD H,(IX+PROGRESSBAR.CURR_PAGE + 3) INC HL - LD (IX+PROC.CURR_PAGE + 2),L - LD (IX+PROC.CURR_PAGE + 3),H -.NxtProc CALL JUMPS.PrnProcess + LD (IX+PROGRESSBAR.CURR_PAGE + 2),L + LD (IX+PROGRESSBAR.CURR_PAGE + 3),H +.NxtProc CALL JUMPS.DrawProgressBar POP DE EXX POP BC diff --git a/plugins/fnviewer/fvtext.a80 b/plugins/fnviewer/fvtext.a80 index 3b87b99..ba62d2e 100644 --- a/plugins/fnviewer/fvtext.a80 +++ b/plugins/fnviewer/fvtext.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 28.07.2025 savelij +; LAST UPDATE: 31.07.2025 savelij ;[]---------------------------------------------------------[] PrnASCIIpage LD HL,PrintVProc @@ -143,7 +143,7 @@ PutLine4 LD HL,LineBuffer LD B,0x50 LD C,IXH LD A,COLORP.PANEL + COLORI.FILES - CALL JUMPS.PrnTxtLnNormC + CALL JUMPS.PrintTxtLineNumsChar OR A RET @@ -188,7 +188,7 @@ PutLnUW1 LD E,0x00 LD D,0x00 LD B,0x01 LD A,COLORP.PANEL + COLORI.YELLOW ;(Yellow) - CALL JUMPS.PrnTxtLnNormC + CALL JUMPS.PrintTxtLineNumsChar POP BC POP HL INC L @@ -209,14 +209,14 @@ SaveUW EQU $-1 LD DE,0x0278 LD B,0x01 LD A,COLORP.PANEL + COLORI.YELLOW ;(Yellow) - CALL JUMPS.PrnTxtLnNormC + CALL JUMPS.PrintTxtLineNumsChar POP BC POP DE POP HL DEC B PutLnUW3 LD D,0x00 LD A,COLORP.PANEL + COLORI.FILES ;(Yellow) - CALL JUMPS.PrnTxtLnNormC + CALL JUMPS.PrintTxtLineNumsChar OR A RET @@ -460,7 +460,7 @@ TPageDwn LD HL,(FVNextShift) RET ;[]----------------------------------------------------------[] -TBegFile LD HL,JUMPS.ResFire +TBegFile LD HL,JUMPS.WaitUnpressMouse PUSH HL LD HL,(FileShift) LD DE,(FileShift+2) @@ -475,7 +475,7 @@ TBegFile LD HL,JUMPS.ResFire JP PrnASCIIpage ;[]----------------------------------------------------------[] -TEndFile LD HL,JUMPS.ResFire +TEndFile LD HL,JUMPS.WaitUnpressMouse PUSH HL LD HL,(FVNextShift) LD DE,(FVNextShift+2) diff --git a/plugins/help/help.a80 b/plugins/help/help.a80 index a4f39af..4b768a2 100644 --- a/plugins/help/help.a80 +++ b/plugins/help/help.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 23.04.2025 savelij +; LAST UPDATE: 31.07.2025 savelij ;[]==========================================================[] HelpR LD A,0x01 @@ -18,9 +18,9 @@ HelpR LD A,0x01 W_END CALL InitHelpTxt CALL PrnHelpPg - CALL JUMPS.ResFire + CALL JUMPS.WaitUnpressMouse HelpLoop LD IX,HelpTab - CALL JUMPS.TestCoords + CALL JUMPS.CheckCoordsMouse SPDSS DSSF.SCANKEY JR Z,HelpLoop LD A,B @@ -101,7 +101,7 @@ PrnHPg1 PUSH BC LD A,(HL) INC A LD A,240 - CALL NZ,JUMPS.PrnTxtLnIFF + CALL NZ,JUMPS.PrintTxtLine_IFF POP BC LD A,B ADD A,8 @@ -110,7 +110,7 @@ PrnHPg1 PUSH BC JR NZ,PrnHPg1 LD (NextShift),HL LD IX,HelpVBar - JP JUMPS.PrnVScrBar + JP JUMPS.DrawVScrollBar ClearHRect PUSH HL PUSH BC @@ -230,9 +230,9 @@ HLnUp2 LD (NextShift),HL LD A,(HL) INC A LD A,240 - CALL NZ,JUMPS.PrnTxtLnIFF + CALL NZ,JUMPS.PrintTxtLine_IFF LD IX,HelpVBar - JP JUMPS.PrnVScrBar + JP JUMPS.DrawVScrollBar HLineDown LD HL,(NextShift) LD A,(HL) @@ -274,9 +274,9 @@ HLineDown LD HL,(NextShift) LD A,(HL) INC A LD A,240 - CALL NZ,JUMPS.PrnTxtLnIFF + CALL NZ,JUMPS.PrintTxtLine_IFF LD IX,HelpVBar - JP JUMPS.PrnVScrBar + JP JUMPS.DrawVScrollBar ;На вход: ; D - Y откуда diff --git a/plugins/test/test.a80 b/plugins/test/test.a80 index 4fcc967..eadc91c 100644 --- a/plugins/test/test.a80 +++ b/plugins/test/test.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 15.07.2025 savelij +; LAST UPDATE: 31.07.2025 savelij ;// DEVICE ZXSPECTRUM128 ;[]=======================================================================[] @@ -38,10 +38,10 @@ PluginEntry: W_BUTTON 60,74,72,14 W_TEXT 88,77,COLORP.HIGHGRAY,"Ok" W_END - call JUMPS.ResFire + call JUMPS.WaitUnpressMouse .plugin_loop: ld ix, PluginMouseTab - call JUMPS.TestCoords + call JUMPS.CheckCoordsMouse SPDSS DSSF.SCANKEY jr z, .plugin_loop ld a, b diff --git a/rez2_fnconfig.a80 b/rez2_fnconfig.a80 index a2181a5..19174a8 100644 --- a/rez2_fnconfig.a80 +++ b/rez2_fnconfig.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 24.07.2025 savelij +; LAST UPDATE: 01.08.2025 savelij PALITRA.RESERV EQU PALETTE + 0x34 @@ -85,7 +85,7 @@ SaveFlg EQU $-2 CALL InitScrollBar CALL InitElement SetupLoop LD IX,SetupTab - CALL TestCoords + CALL CheckCoordsMouse SPDSS DSSF.SCANKEY JR Z,SetupLoop LD A,B @@ -164,7 +164,7 @@ SetupLoop1 LD A,E RET ;[]----------------------------------------------------------[] -SaveSetup CALL SetClock +SaveSetup CALL PointerMouseClock PUSH IY SPDSS DSSF.CURDISK POP IY @@ -258,7 +258,7 @@ SetupSaveEx LD HL,WorkBuffer PUSH IY SPDSS DSSF.CHDIR POP IY - JP SetMouse + JP PointerMousePointer SetupHead DEFB 0xAE,"FlexSetup",0 SetupName DZ FILENAME.FN_INI @@ -344,9 +344,9 @@ RefreshSetup BIT VIEWFLAG.B_TREE,(IX+PANEL.VIEWFLAG) LD A,(IY+PANEL.VIEWFLAG) AND VIEWFLAG.MASK PUSH AF - CALL Z,PrnHScrBar + CALL Z,DrawHScrollBar POP AF - CALL NZ,PrnVScrBar + CALL NZ,DrawVScrollBar RefrErr POP IY RET @@ -404,8 +404,8 @@ ChSavePan LD HL,SavePanTxt LD DE,0x0074 LD BC,0x00A5 LD A,0xF0 - CALL PrnTxtLnIFF - JP ResFire + CALL PrintTxtLine_IFF + JP WaitUnpressMouse SavePanTxt DEFB 0x00,0x00 @@ -420,9 +420,9 @@ AutoActivatePanelFlag EQU $-1 LD (HL),A LD DE,0x0074 LD BC,0x0093 - LD A,0xF0 - CALL PrnTxtLnIFF - JP ResFire + LD A,COLORP.WHITE + COLORI.BLACK + CALL PrintTxtLine_IFF + JP WaitUnpressMouse ;-------------------------------------------------------------- DecRED LD HL,PALITRA.RESERV + 2 @@ -504,7 +504,7 @@ InputColor LD (ColorY),BC PUSH DE LD DE,ColText LD A,(HL) - CALL ConvNumTxt8 + CALL ConvertNumbers_8b SUB A LD (DE),A LD A,E @@ -519,7 +519,7 @@ InpAg LD IX,ColorStr PUSH HL PUSH DE LD DE,ColText - CALL ConvTxtNum16 + CALL atoi_16b JR C,InpAg LD A,H OR A @@ -597,7 +597,7 @@ SetupI1 LD IX,8 << 8 | 70 ; HIGH -> LD B,H ; Y LD HL,106 ; X ; TODO не учитывается позиция окна, сделать привязку - JP InvertRectan + JP ReplaceColorRectan InitElement LD HL,ElementColor LD A,(CurElement) @@ -631,7 +631,7 @@ PrintRED LD DE,WorkBuffer ADD HL,HL ADD HL,HL LD (CRed),HL - CALL ConvNumTxt8 + CALL ConvertNumbers_8b LD A,0x04 SUB E LD B,A @@ -645,9 +645,9 @@ InitEl1 LD (DE),A LD DE,0x01B8 LD BC,0x0058 LD A,0x80 - CALL PrnTxtLnIFF + CALL PrintTxtLine_IFF LD IX,BarRed - JP PrnHScrBar + JP DrawHScrollBar PrintGREEN LD DE,WorkBuffer LD A,(PALITRA.RESERV + 1) @@ -658,7 +658,7 @@ PrintGREEN LD DE,WorkBuffer ADD HL,HL ADD HL,HL LD (CGreen),HL - CALL ConvNumTxt8 + CALL ConvertNumbers_8b LD A,0x04 SUB E LD B,A @@ -672,9 +672,9 @@ InitEl2 LD (DE),A LD DE,0x01B8 LD BC,0x0068 LD A,0x80 - CALL PrnTxtLnIFF + CALL PrintTxtLine_IFF LD IX,BarGreen - JP PrnHScrBar + JP DrawHScrollBar PrintBLUE LD DE,WorkBuffer LD A,(PALITRA.RESERV) @@ -685,7 +685,7 @@ PrintBLUE LD DE,WorkBuffer ADD HL,HL ADD HL,HL LD (CBlue),HL - CALL ConvNumTxt8 + CALL ConvertNumbers_8b LD A,0x04 SUB E LD B,A @@ -699,9 +699,9 @@ InitEl3 LD (DE),A LD DE,0x01B8 LD BC,0x0078 LD A,0x80 - CALL PrnTxtLnIFF + CALL PrintTxtLine_IFF LD IX,BarBlue - JP PrnHScrBar + JP DrawHScrollBar PrnPALETTE LD HL,PALETTE LD DE,0x1000 diff --git a/rez2_fnerror.a80 b/rez2_fnerror.a80 index a2547c8..1f8f07a 100644 --- a/rez2_fnerror.a80 +++ b/rez2_fnerror.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 18.07.2025 savelij +; LAST UPDATE: 01.08.2025 savelij ; !FIXIT переделать одинаковые окна с разным текстом для ошибок под автоматическую процедуру ;[]===========================================================[] @@ -48,7 +48,7 @@ DOSErrorR ;[x] 30/07/23 -bug RET Z ; если адрес перехода 0, выходим LD (.ADRJUMP),HL LD (.ADRJUMP2),HL - CALL SetMouse + CALL PointerMousePointer LD A,0 .WINTYPE EQU $-1 BIT 7,A @@ -161,7 +161,7 @@ InputDrive PUSH IY LD HL,ErrorTab1 CALL InputLine WINDOWCLOSE - CALL SetClock + CALL PointerMouseClock LD A,(CurDrv) RES 5,A SUB 'A' @@ -174,11 +174,11 @@ InputDrive PUSH IY SPDSS DSSF.CHDIR POP IY JP C,DOSErrorR - CALL SetMouse + CALL PointerMousePointer LD A,0x01 RET -ErrorTab1 DEFW 284,356,118,132,%0000000000000001,%0000000000000000,InputLine.InpLnExtN,0 +ErrorTab1 DEFW 284,356,118,132,%0000000000000001,%0000000000000000,InputLine.InputLineExitOk,0 DEFW 0x8000 DriveStr DEFB 0x01,0x00,0x00,0x00 @@ -190,7 +190,7 @@ CurDrv DUPL 0x02,0x00 ;-------------------------------------------------------------- ErrorLp0 LD IX,ErrorTab2 - CALL TestCoords + CALL CheckCoordsMouse SPDSS DSSF.SCANKEY JR Z,ErrorLp0 LD A,B @@ -206,13 +206,13 @@ ErrorLp0 LD IX,ErrorTab2 JR NZ,ErrorLp0 ErrorExt0 WINDOWCLOSE - CALL SetClock + CALL PointerMouseClock LD HL,BegDIR PUSH IY SPDSS DSSF.CHDIR POP IY JP C,DOSErrorR - CALL SetMouse + CALL PointerMousePointer LD A,0x01 RET @@ -222,7 +222,7 @@ ErrorTab2 DEFW 284,356,118,132,%0000000000100001,%0000000000000000,ErrorExt0,0 ;-------------------------------------------------------------- ErrorLp LD IX,ErrorTab3 - CALL TestCoords + CALL CheckCoordsMouse SPDSS DSSF.SCANKEY JR Z,ErrorLp LD A,B diff --git a/rez2_fnfunct.a80 b/rez2_fnfunct.a80 index dabc970..b4b20a8 100644 --- a/rez2_fnfunct.a80 +++ b/rez2_fnfunct.a80 @@ -1,16 +1,16 @@ -; LAST UPDATE: 25.07.2025 savelij +; LAST UPDATE: 31.07.2025 savelij ;[]==========================================================[] CopyFilesR 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 + RET NZ ; режим отображения панели - дерево SETPORT WINSP.Y_PORT,0xC0 LD A,(IY + PANEL.FILES_MARK) OR (IY + PANEL.FILES_MARK + 1) - JP NZ,CopyMark + JP NZ,CopyMark ; есть помеченные файлы ; копирование файла/диры под курсором GETPORT WINSP.CPU3 PUSH AF @@ -63,9 +63,12 @@ CopyFilesR LD A,(IY + PANEL.FILES_ALL) COPY_DIR PUSH IX PUSH IY PUSH IX - LD HL,(AdrCopyFile) ; адрес описателя измеряемой диры - CALL RESIDENT.GetDirSize ; считаем и получаем размер в байтах - EXX +; LD HL,(AdrCopyFile) ; адрес описателя измеряемой диры +; CALL RESIDENT.GetDirSize ; считаем и получаем размер в байтах +; EXX + CALL RESIDENT.CountingDir + LD HL,JUMPS.FILES_BYTES + CALL GET_DWORD POP HL ; адрес описателя LD (CopyBytes),DE LD (CopyBytes + 2),BC @@ -81,8 +84,8 @@ COPY_DIR PUSH IX LD E,C CALL ConvBytes2Pages ; пересчет в количество страниц для копирования -; LD HL,(AdrCopyFile) ; адрес описателя копируемой диры -; CALL RESIDENT.MkdirsDst ; создание папок на приемнике + LD HL,(AdrCopyFile) ; адрес описателя копируемой диры + CALL RESIDENT.MkdirsDst ; создание папок на приемнике POP IY POP IX @@ -156,11 +159,11 @@ CopyNxt LD IX,ProcessAll EX DE,HL ADC HL,HL EX DE,HL - LD (IX + PROC.MAX_PAGES),L - LD (IX + PROC.MAX_PAGES + 1),H - LD (IX + PROC.MAX_PAGES + 2),E - LD (IX + PROC.MAX_PAGES + 3),D - CALL InitProcess + 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),D + CALL InitProgressBar CALL ResInvert LD HL,SetInvert PUSH HL @@ -232,7 +235,7 @@ CopyNxt LD IX,ProcessAll LD (CopySrc),HL LD HL,CurPath LD (CopyDst),HL - CALL SetClock + CALL PointerMouseClock PUSH IY GETPORT WINSP.CPU3 PUSH AF @@ -242,6 +245,7 @@ CopyNxt LD IX,ProcessAll LD A,(RAMPAGES.RIGHTPANEL) .L3 SETPORT WINSP.CPU3,,0 +; копирование файлов CopyNextFile CALL PrnFromTo LD IX,(AdrCopyFile) LD L,(IX + FileHDR.SizeBytes) @@ -260,12 +264,12 @@ CopyNextFile CALL PrnFromTo EX DE,HL ADC HL,HL EX DE,HL - LD (IX + PROC.MAX_PAGES),L - LD (IX + PROC.MAX_PAGES + 1),H - LD (IX + PROC.MAX_PAGES + 2),E - LD (IX + PROC.MAX_PAGES + 3),D - CALL InitProcess - CALL PrnProcess + 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),D + CALL InitProgressBar + CALL DrawProgressBar LD HL,(FreeBanks) LD DE,0x0000 .PagesHigh EQU $-2 @@ -517,7 +521,7 @@ CopyEnd POP AF JP C,BegDIRECTORY CALL PrintDIR CALL PrnFileInfo - JP SetMouse + JP PointerMousePointer CopyError3: ; Если нет места на диске для копирования ;!FIXIT оптимизировать POP HL ; снимаем лишнее @@ -567,7 +571,7 @@ CopyErrorFileDelete: RET ;-------------------------------------------------------------- -OverWrite CALL SetMouse +OverWrite CALL PointerMousePointer MAKEWINDOW WINSUBOBJ.STORE W_MAIN 180,88,280,56 W_FILL 4,2,272,10,COLORI.GREEN @@ -602,9 +606,9 @@ OverWrite CALL SetMouse LD DE,320 LD BC,114 LD A,COLORP.HIGHGRAY + COLORI.BLACK - CALL PrnRangPathC + CALL PrintPathCentr OvWrtLp LD IX,OverWrtTab - CALL TestCoords + CALL CheckCoordsMouse SPDSS DSSF.SCANKEY JR Z,OvWrtLp LD A,B @@ -636,7 +640,7 @@ OvrJump OverWrtAll LD A,0x01 LD (OverWriteFlg),A -OverWrtFile CALL SetClock +OverWrtFile CALL PointerMouseClock LD IX,(AdrCopyFile) LD HL,(AdrCopyFile) INC HL @@ -648,7 +652,7 @@ OverWrtFile CALL SetClock SPDSS DSSF.CREATE RET -OverSkip CALL SetClock +OverSkip CALL PointerMouseClock LD IX,(AdrCopyFile) LD L,(IX + FileHDR.SizeBytes) LD H,(IX + FileHDR.SizeBytes + 1) @@ -660,18 +664,18 @@ OverSkip CALL SetClock ADC HL,HL EX DE,HL LD IX,ProcessAll - LD C,(IX + PROC.CURR_PAGE) - LD B,(IX + PROC.CURR_PAGE + 1) + LD C,(IX + PROGRESSBAR.CURR_PAGE) + LD B,(IX + PROGRESSBAR.CURR_PAGE + 1) ADD HL,BC - LD (IX + PROC.CURR_PAGE),L - LD (IX + PROC.CURR_PAGE + 1),H - LD C,(IX + PROC.CURR_PAGE + 2) - LD B,(IX + PROC.CURR_PAGE + 3) + LD (IX + PROGRESSBAR.CURR_PAGE),L + LD (IX + PROGRESSBAR.CURR_PAGE + 1),H + LD C,(IX + PROGRESSBAR.CURR_PAGE + 2) + LD B,(IX + PROGRESSBAR.CURR_PAGE + 3) EX DE,HL ADC HL,BC - LD (IX + PROC.CURR_PAGE + 2),L - LD (IX + PROC.CURR_PAGE + 3),H - CALL PrnProcess + LD (IX + PROGRESSBAR.CURR_PAGE + 2),L + LD (IX + PROGRESSBAR.CURR_PAGE + 3),H + CALL DrawProgressBar LD HL,CloseFile1 EX (SP),HL RET @@ -777,44 +781,44 @@ PrnFromTo LD HL,(CopySrc) LD DE,204 LD BC,97 LD A,COLORP.HIGHGRAY + COLORI.BLACK - CALL PrnRangPathL + CALL PrintPathLeft LD IX,0x0100 LD HL,WorkBuffer+0x100 LD DE,204 LD BC,107 LD A,COLORP.HIGHGRAY + COLORI.BLACK - JP PrnRangPathL + JP PrintPathLeft NextProcess LD IX,ProcessAll - LD L,(IX + PROC.CURR_PAGE) - LD H,(IX + PROC.CURR_PAGE + 1) + LD L,(IX + PROGRESSBAR.CURR_PAGE) + LD H,(IX + PROGRESSBAR.CURR_PAGE + 1) INC HL - LD (IX + PROC.CURR_PAGE),L - LD (IX + PROC.CURR_PAGE + 1),H + LD (IX + PROGRESSBAR.CURR_PAGE),L + LD (IX + PROGRESSBAR.CURR_PAGE + 1),H LD A,H OR L JR NZ,.L1 - LD L,(IX + PROC.CURR_PAGE + 2) - LD H,(IX + PROC.CURR_PAGE + 3) + LD L,(IX + PROGRESSBAR.CURR_PAGE + 2) + LD H,(IX + PROGRESSBAR.CURR_PAGE + 3) INC HL - LD (IX + PROC.CURR_PAGE + 2),L - LD (IX + PROC.CURR_PAGE + 3),H -.L1 CALL PrnProcess + LD (IX + PROGRESSBAR.CURR_PAGE + 2),L + LD (IX + PROGRESSBAR.CURR_PAGE + 3),H +.L1 CALL DrawProgressBar LD IX,ProcessOne - LD L,(IX + PROC.CURR_PAGE) - LD H,(IX + PROC.CURR_PAGE + 1) + LD L,(IX + PROGRESSBAR.CURR_PAGE) + LD H,(IX + PROGRESSBAR.CURR_PAGE + 1) INC HL - LD (IX + PROC.CURR_PAGE),L - LD (IX + PROC.CURR_PAGE + 1),H + LD (IX + PROGRESSBAR.CURR_PAGE),L + LD (IX + PROGRESSBAR.CURR_PAGE + 1),H LD A,H OR L JR NZ,.L2 - LD L,(IX + PROC.CURR_PAGE + 2) - LD H,(IX + PROC.CURR_PAGE + 3) + LD L,(IX + PROGRESSBAR.CURR_PAGE + 2) + LD H,(IX + PROGRESSBAR.CURR_PAGE + 3) INC HL - LD (IX + PROC.CURR_PAGE + 2),L - LD (IX + PROC.CURR_PAGE + 3),H -.L2 JP PrnProcess + LD (IX + PROGRESSBAR.CURR_PAGE + 2),L + LD (IX + PROGRESSBAR.CURR_PAGE + 3),H +.L2 JP DrawProgressBar ProcessAll DW 178 ; X позиция DW 138 ; Y позиция @@ -966,8 +970,8 @@ RNfile EQU $ - STRLEN(" ") - 2 LD D,0 ADC HL,DE LD (HL),0 - CALL SetClock - LD HL,SetMouse + CALL PointerMouseClock + LD HL,PointerMousePointer EX (SP),HL PUSH HL BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) @@ -1037,9 +1041,9 @@ ReName0 LD HL,CurName LD A,(IY + PANEL.VIEWFLAG) AND VIEWFLAG.MASK PUSH AF - CALL Z,PrnHScrBar + CALL Z,DrawHScrollBar POP AF - CALL NZ,PrnVScrBar + CALL NZ,DrawVScrollBar ReName1 LD HL,LeftPanel + PANEL.CURR_PATH LD DE,RightPanel + PANEL.CURR_PATH ReName2 LD A,(DE) @@ -1071,9 +1075,9 @@ ReName2 LD A,(DE) LD A,(IY + PANEL.VIEWFLAG) AND VIEWFLAG.MASK PUSH AF - CALL Z,PrnHScrBar + CALL Z,DrawHScrollBar POP AF - CALL NZ,PrnVScrBar + CALL NZ,DrawVScrollBar ReNameE POP IY RET @@ -1237,9 +1241,9 @@ ReNameT POP AF LD A,(IY + PANEL.VIEWFLAG) AND VIEWFLAG.MASK PUSH AF - CALL Z,PrnHScrBar + CALL Z,DrawHScrollBar POP AF - CALL NZ,PrnVScrBar + CALL NZ,DrawVScrollBar PUSH IY BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) LD IY,RightPanel @@ -1251,7 +1255,7 @@ ReNameT POP AF POP IX LD DE,PANEL.BAR_X ADD IX,DE - CALL PrnVScrBar + CALL DrawVScrollBar POP IY RET @@ -1264,7 +1268,7 @@ ReNameExt1 INC SP POP IX LD DE,PANEL.BAR_X ADD IX,DE - CALL PrnVScrBar + CALL DrawVScrollBar IF TREE_REZID CALL TestTreeR.TestTreeBeg ELSE @@ -1309,9 +1313,9 @@ ReNameExit CALL ReadDIR LD A,(IY + PANEL.VIEWFLAG) AND VIEWFLAG.MASK PUSH AF - CALL Z,PrnHScrBar + CALL Z,DrawHScrollBar POP AF - CALL NZ,PrnVScrBar + CALL NZ,DrawVScrollBar LD HL,LeftPanel + PANEL.CURR_PATH LD DE,RightPanel + PANEL.CURR_PATH RNameE1 LD A,(DE) @@ -1343,9 +1347,9 @@ RNameE1 LD A,(DE) LD A,(IY + PANEL.VIEWFLAG) AND VIEWFLAG.MASK PUSH AF - CALL Z,PrnHScrBar + CALL Z,DrawHScrollBar POP AF - CALL NZ,PrnVScrBar + CALL NZ,DrawVScrollBar RNameE2 POP IY RET @@ -1391,8 +1395,8 @@ MkDIRlp LD A,(HL) CP '\\' RET Z DJNZ MkDIRlp - CALL SetClock - LD HL,SetMouse + CALL PointerMouseClock + LD HL,PointerMousePointer PUSH HL BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) JR Z,MkDIR0 @@ -1644,9 +1648,9 @@ MkDIRn1 CALL PrintDIR LD A,(IY + PANEL.VIEWFLAG) AND VIEWFLAG.MASK PUSH AF - CALL Z,PrnHScrBar + CALL Z,DrawHScrollBar POP AF - CALL NZ,PrnVScrBar + CALL NZ,DrawVScrollBar PUSH IY BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) LD IY,RightPanel @@ -1678,9 +1682,9 @@ MkDIRn2 CALL PrintDIR LD A,(IY + PANEL.VIEWFLAG) AND VIEWFLAG.MASK PUSH AF - CALL Z,PrnHScrBar + CALL Z,DrawHScrollBar POP AF - CALL NZ,PrnVScrBar + CALL NZ,DrawVScrollBar MkDIRex POP IY RET @@ -1819,9 +1823,9 @@ DelLp0 LD IX,0x00F8 LD DE,320 LD BC,106 LD A,COLORP.HIGHGRAY + COLORI.BLACK - CALL PrnRangPathC + CALL PrintPathCentr DelLoop LD IX,DeleteTab - CALL TestCoords + CALL CheckCoordsMouse SPDSS DSSF.SCANKEY JR Z,DelLoop LD A,B @@ -1911,7 +1915,7 @@ DelSkip LD C,(IY + PANEL.FILES_MARK) CALL PrintDIR JP DeleteMain -DelDelete CALL SetClock +DelDelete CALL PointerMouseClock BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) JR Z,DelDel0 PUSH IY @@ -1961,14 +1965,14 @@ DelDel1 PUSH IY JP DelExit DelDel2 LD A,0x01 LD (DeleteFlag),A - CALL SetMouse + CALL PointerMousePointer JP DelSkip DelAll BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) JR NZ,DelDelete LD A,0x01 LD (DeleteFlag),A - CALL SetClock + CALL PointerMouseClock MAKEWINDOW WINSUBOBJ.STORE W_MAIN 160,88,320,48 W_FILL 4,2,312,10,COLORI.BLACK @@ -1989,12 +1993,12 @@ DelAll BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) OR L JR NZ,.L1 INC HL -.L1 LD (IX + PROC.MAX_PAGES),L - LD (IX + PROC.MAX_PAGES + 1),H +.L1 LD (IX + PROGRESSBAR.MAX_PAGES),L + LD (IX + PROGRESSBAR.MAX_PAGES + 1),H SUB A - LD (IX + PROC.MAX_PAGES + 2),A - LD (IX + PROC.MAX_PAGES + 3),A - CALL InitProcess + 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 @@ -2017,7 +2021,7 @@ DelFrom EQU $-2 LD DE,208 LD BC,104 LD A,COLORP.HIGHGRAY + COLORI.BLACK - CALL PrnRangPathL + CALL PrintPathLeft SPDSS DSSF.SCANKEY LD HL,SC.ESC << 8 | 0x1B OR A @@ -2043,12 +2047,12 @@ DelFrom EQU $-2 JP DelAllExit DelA1 LD IX,ProcessDel - LD L,(IX + PROC.CURR_PAGE) - LD H,(IX + PROC.CURR_PAGE + 1) + LD L,(IX + PROGRESSBAR.CURR_PAGE) + LD H,(IX + PROGRESSBAR.CURR_PAGE + 1) INC HL - LD (IX + PROC.CURR_PAGE),L - LD (IX + PROC.CURR_PAGE + 1),H - CALL PrnProcess + LD (IX + PROGRESSBAR.CURR_PAGE),L + LD (IX + PROGRESSBAR.CURR_PAGE + 1),H + CALL DrawProgressBar LD C,(IY + PANEL.FILES_MARK) LD B,(IY + PANEL.FILES_MARK + 1) LD A,B @@ -2110,7 +2114,7 @@ DelExit BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) JR NZ,DelTreeDIR DelExt1 POP AF SETPORT WINSP.CPU3,,0 - LD HL,SetMouse + LD HL,PointerMousePointer PUSH HL LD A,(DeleteFlag) OR A @@ -2128,8 +2132,8 @@ DelTreeDIR1 LD A,(DeleteFlag) CALL MakeDELname POP AF SETPORT WINSP.CPU3,,0 - CALL SetClock - LD HL,SetMouse + CALL PointerMouseClock + LD HL,PointerMousePointer EX (SP),HL PUSH HL BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) @@ -2356,9 +2360,9 @@ DelDIRn POP AF LD A,(IY + PANEL.VIEWFLAG) AND VIEWFLAG.MASK PUSH AF - CALL Z,PrnHScrBar + CALL Z,DrawHScrollBar POP AF - CALL NZ,PrnVScrBar + CALL NZ,DrawVScrollBar PUSH IY BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) LD IY,RightPanel @@ -2370,7 +2374,7 @@ DelDIRn POP AF POP IX LD DE,PANEL.BAR_X ADD IX,DE - CALL PrnVScrBar + CALL DrawVScrollBar POP IY RET @@ -2384,7 +2388,7 @@ DeleteExt1 INC SP LD DE,PANEL.BAR_X ADD IX,DE CALL InitScrollBar - CALL PrnVScrBar + CALL DrawVScrollBar IF TREE_REZID CALL MakeTreePathR ELSE @@ -2414,7 +2418,7 @@ QuitConfirmWin W_TEXT 150,35,COLORP.HIGHGRAY,"No" W_END .Loop LD IX,QuitTab - CALL TestCoords + CALL CheckCoordsMouse SPDSS DSSF.SCANKEY JR Z,.Loop LD A,B diff --git a/rez2_fnmisc.a80 b/rez2_fnmisc.a80 index d54270d..ecb4c1a 100644 --- a/rez2_fnmisc.a80 +++ b/rez2_fnmisc.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 25.07.2025 savelij +; LAST UPDATE: 02.08.2025 savelij ;[]==========================================================[] FileInfoR LD A,(IY+PANEL.FILES_ALL) @@ -42,7 +42,7 @@ FileInfoR LD A,(IY+PANEL.FILES_ALL) LD A,(HL) CP '.' RET Z - CALL SetClock + CALL PointerMouseClock PUSH DE CALL MakeDOSname POP HL @@ -90,7 +90,7 @@ FileInfoR LD A,(IY+PANEL.FILES_ALL) LD H,(IX+0x10) LD C,(IX+0x11) LD B,(IX+0x12) - CALL ConvNumTxt32 + CALL ConvertNumbers_32b LD A,0x20 LD (DE),A INC DE @@ -107,7 +107,7 @@ FileInfoR LD A,(IY+PANEL.FILES_ALL) PUSH IY SPDSS DSSF.F_FIRST,0 POP IY - JP C,SetMouse + JP C,PointerMousePointer LD HL,FClast LD B,0x05 LD A,0x20 @@ -120,7 +120,7 @@ FileInfoR LD A,(IY+PANEL.FILES_ALL) LD D,(HL) EX DE,HL LD DE,FClast - CALL ConvNumTxt16 + CALL ConvertNumbers_16b MAKEWINDOW WINSUBOBJ.STORE W_MAIN 240,80,160,98 W_FILL 4,2,152,10,COLORI.BLACK @@ -139,9 +139,9 @@ FClast EQU $ - STRLEN(" ") - 1 W_BUTTON 44,80,72,14 W_TEXT 72,83,COLORP.HIGHGRAY,"Ok" W_END - CALL SetMouse + CALL PointerMousePointer FileInfoLoop: LD IX,FileInfoTab - CALL TestCoords + CALL CheckCoordsMouse SPDSS DSSF.SCANKEY JR Z,FileInfoLoop LD A,B @@ -259,10 +259,10 @@ PrintFileR LD A,(IY+PANEL.FILES_ALL) LD HL,WorkBuffer LD DE,0x00F8 LD BC,0x0064 - LD A,0x80 - CALL PrnRangPathL + LD A,COLORP.HIGHGRAY + COLORI.BLACK + CALL PrintPathLeft LD IX,PrintFTab - CALL TestCoords + CALL CheckCoordsMouse LD IX,ProcessFPrn LD HL,(PrnFileLen) LD DE,(PrnFileLen+2) @@ -277,11 +277,11 @@ PrintFileR LD A,(IY+PANEL.FILES_ALL) OR L JR NZ,InitPrn INC E -InitPrn LD (IX + PROC.MAX_PAGES),L - LD (IX + PROC.MAX_PAGES + 1),H - LD (IX + PROC.MAX_PAGES + 2),E - LD (IX + PROC.MAX_PAGES + 3),0x00 - CALL InitProcess +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 @@ -308,12 +308,12 @@ ReadPr1 INC HL JR C,ReadPrnEnd LD (PrnFileLen),HL LD (PrnFileLen+2),DE - CALL SetClock + CALL PointerMouseClock LD HL,0xC000 LD DE,0x4000 LD A,(PrnFHandle) SPDSS DSSF.READ - CALL SetMouse + CALL PointerMousePointer LD BC,0x4000 CALL PrintBlock POP HL @@ -330,12 +330,12 @@ ReadPrnEnd: LD HL,0xC000 LD A,D OR E JR Z,.L1 - CALL SetClock + CALL PointerMouseClock LD A,(PrnFHandle) PUSH DE SPDSS DSSF.READ POP BC - CALL SetMouse + CALL PointerMousePointer CALL PrintBlock JR C,.L2 .L1 CALL NxtPrnProc @@ -373,7 +373,7 @@ PrintCHAR: LD L,A BIT 0,A JR Z,PrnCH1 LD IX,PrintFTab - CALL TestCoords + CALL CheckCoordsMouse JR C,PrnCH2 PrnCH1 SPDSS DSSF.SCANKEY @@ -410,20 +410,20 @@ NxtPrnProc LD A,E PUSH DE PUSH BC LD IX,ProcessFPrn - LD L,(IX + PROC.CURR_PAGE) - LD H,(IX + PROC.CURR_PAGE + 1) + LD L,(IX + PROGRESSBAR.CURR_PAGE) + LD H,(IX + PROGRESSBAR.CURR_PAGE + 1) INC HL - LD (IX + PROC.CURR_PAGE),L - LD (IX + PROC.CURR_PAGE + 1),H + LD (IX + PROGRESSBAR.CURR_PAGE),L + LD (IX + PROGRESSBAR.CURR_PAGE + 1),H LD A,H OR L JR NZ,.L1 - LD L,(IX + PROC.CURR_PAGE + 2) - LD H,(IX + PROC.CURR_PAGE + 3) + LD L,(IX + PROGRESSBAR.CURR_PAGE + 2) + LD H,(IX + PROGRESSBAR.CURR_PAGE + 3) INC HL - LD (IX + PROC.CURR_PAGE + 2),L - LD (IX + PROC.CURR_PAGE + 3),H -.L1 CALL PrnProcess + LD (IX + PROGRESSBAR.CURR_PAGE + 2),L + LD (IX + PROGRESSBAR.CURR_PAGE + 3),H +.L1 CALL DrawProgressBar POP BC POP DE RET @@ -448,8 +448,8 @@ SystemInfoR SETPORT WINSP.Y_PORT,0xC0 LD HL,SetInvert PUSH HL - LD HL,DOSvers - LD DE,BIOSver + LD HL,.DOSvers + LD DE,.BIOSver LD B,0x05 LD A,0x20 .L1 LD (HL),A @@ -461,14 +461,14 @@ SystemInfoR SPDSS DSSF.VERSION POP IY EX DE,HL - LD DE,DOSvers + LD DE,.DOSvers LD A,H - CALL ConvNumTxt8 + CALL ConvertNumbers_8b LD A,'.' LD (DE),A INC DE LD A,L - CALL ConvNumTxt8 + CALL ConvertNumbers_8b LD HL,WorkBuffer SPBIOS BIOSF.FN_VERSION SUB A @@ -480,7 +480,7 @@ SystemInfoR CP (HL) JR NZ,.L3 INC HL - LD DE,BIOSver + LD DE,.BIOSver SUB A .L4 LDI CP (HL) @@ -490,11 +490,11 @@ SystemInfoR OR A JR NZ,.L5 LD HL,NotPresent -.L5 LD DE,CMOS +.L5 LD DE,.CMOStxt LD BC,0x000B LDIR - LD HL,TotMem - LD DE,FreeMem + LD HL,.TotMem + LD DE,.FreeMem LD B,0x0F LD A,0x20 .L6 LD (HL),A @@ -519,11 +519,11 @@ SystemInfoR RR H RR L PUSH DE - CALL ConvNumTxt32 + CALL ConvertNumbers_32b SUB A LD (DE),A POP HL - LD DE,TotMem + LD DE,.TotMem CALL CorrBigNum INC DE LD HL,Bytes @@ -543,11 +543,11 @@ SystemInfoR RR H RR L PUSH DE - CALL ConvNumTxt32 + CALL ConvertNumbers_32b SUB A LD (DE),A POP HL - LD DE,FreeMem + LD DE,.FreeMem CALL CorrBigNum INC DE LD HL,Bytes @@ -559,20 +559,20 @@ SystemInfoR 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 +.BIOSver EQU $ - STRLEN(" ") - 1 W_TEXT 10,44,COLORP.HIGHGRAY,"DOS version: " -DOSvers EQU $ - STRLEN(" ") - 1 +.DOSvers EQU $ - STRLEN(" ") - 1 W_TEXT 10,56,COLORP.HIGHGRAY,"CMOS: " -CMOS EQU $ - STRLEN(" ") - 1 +.CMOStxt EQU $ - STRLEN(" ") - 1 W_TEXT 10,70,COLORP.HIGHGRAY,"Total memory: " -TotMem EQU $ - STRLEN(" ") - 1 +.TotMem EQU $ - STRLEN(" ") - 1 W_TEXT 10,82,COLORP.HIGHGRAY,"Free memory: " -FreeMem EQU $ - STRLEN(" ") - 1 +.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 TestCoords + CALL CheckCoordsMouse SPDSS DSSF.SCANKEY JR Z,SysInfoLoop LD A,B @@ -599,7 +599,7 @@ DiskInfoR: LD HL,SetInvert ;!FIXIT проверить для это оно или нет SAFE_PORTY PUSH HL SETPORT WINSP.Y_PORT,0xC0 - CALL SetClock + CALL PointerMouseClock PUSH IY SPDSS DSSF.CURDISK POP IY @@ -614,7 +614,7 @@ DiskInfoR: LD HL,SetInvert ;PUSH IY ;RST ToDSS.DRV ;!FIXIT rst 0x18 ;POP IY - ;JP C,SetMouse + ;JP C,PointerMousePointer LD B,0 CALL .get_info EX AF,AF' @@ -783,7 +783,7 @@ DiskInfoR: LD HL,SetInvert ; вычисляем общий размер в байтах ; A:BC:HL - число для перевода LD DE,WorkBuffer - CALL ConvNumTxt40 + CALL ConvertNumbers_40b SUB A LD (DE),A LD HL,WorkBuffer @@ -805,8 +805,8 @@ DiskInfoR: LD HL,SetInvert LD HL,0 .freeSpace_l EQU $-2 LD DE,WorkBuffer+0x80 -; A:BC:HL - число для перевода - CALL ConvNumTxt40 +; ABCHL - число для перевода + CALL ConvertNumbers_40b SUB A LD (DE),A LD HL,WorkBuffer+0x80 @@ -825,15 +825,15 @@ DiskInfoR: LD HL,SetInvert LD DE,0x0128 LD BC,0x0070 LD A,0x80 - CALL PrnTxtLnIFF + CALL PrintTxtLine_IFF LD HL,WorkBuffer+0x180 LD DE,0x0013A LD BC,0x007C LD A,0x80 - CALL PrnTxtLnIFF - CALL SetMouse + CALL PrintTxtLine_IFF + CALL PointerMousePointer .DiskInfoLoop: LD IX,DiskInfoTab - CALL TestCoords + CALL CheckCoordsMouse SPDSS DSSF.SCANKEY JR Z,.DiskInfoLoop LD A,B @@ -947,9 +947,9 @@ VersionR W_BUTTON 92,133,72,14 W_TEXT 120,136,COLORP.HIGHGRAY,"OK" W_END - CALL ResFire + CALL WaitUnpressMouse VersionLoop LD IX,VersionTab - CALL TestCoords + CALL CheckCoordsMouse SPDSS DSSF.SCANKEY JR Z,VersionLoop LD A,B diff --git a/rez2_fnsearch.a80 b/rez2_fnsearch.a80 index 323efa9..7270885 100644 --- a/rez2_fnsearch.a80 +++ b/rez2_fnsearch.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 24.07.2025 savelij +; LAST UPDATE: 31.07.2025 savelij ;[]==========================================================[] QSearchR LD A,(IY+PANEL.FILES_ALL) @@ -188,9 +188,9 @@ FoundSFile PUSH HL LD A,(IY+PANEL.VIEWFLAG) AND VIEWFLAG.MASK PUSH AF - CALL Z,PrnHScrBar + CALL Z,DrawHScrollBar POP AF - JP NZ,PrnVScrBar + JP NZ,DrawVScrollBar RET QSdelet LD A,(IX+0x02) diff --git a/rez2_fntab1.a80 b/rez2_fntab1.a80 index 511269e..dd44367 100644 --- a/rez2_fntab1.a80 +++ b/rez2_fntab1.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 16.04.2025 savelij +; LAST UPDATE: 01.08.2025 savelij ;[]==========================================================[] ; Формат таблицы @@ -89,12 +89,12 @@ VersionTab: DW 284,356,157,171,%0000000000100001,0,VersionExt,0 DW 0x8000 ;[]===============================================================[] -PathTab: DW 240,312,123,137,%0000000000000001,0,InputLine.InpLnExtN,0 - DW 328,400,123,137,%0000000000000001,0,InputLine.InpLnExtC,0 - DW 0, 96, 0,256,%0000000000000000,0,InputLine.InpLnExtC,0 - DW 544,640, 0,256,%0000000000000000,0,InputLine.InpLnExtC,0 - DW 0,640, 0, 81,%0000000000000000,0,InputLine.InpLnExtC,0 - DW 0,640,143,256,%0000000000000000,0,InputLine.InpLnExtC,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 + DW 0,640, 0, 81,%0000000000000000,0,InputLine.InputLineExitCancel,0 + DW 0,640,143,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 DW 0x8000 ;[]===============================================================[] @@ -109,21 +109,21 @@ OverWrtTab: DW 196,252,126,140,%0000000100100001,0,OverWrtFile,0 DW 0x8001 ;[]===============================================================[] -ReNameTab: DW 240,312,123,137,%0000000000000001,0,InputLine.InpLnExtN,0 - DW 328,400,123,137,%0000000000000001,0,InputLine.InpLnExtC,0 - DW 0,208, 0,256,%0000000000000000,0,InputLine.InpLnExtC,0 - DW 432,640, 0,256,%0000000000000000,0,InputLine.InpLnExtC,0 - DW 0,640, 0, 81,%0000000000000000,0,InputLine.InpLnExtC,0 - DW 0,640,143,256,%0000000000000000,0,InputLine.InpLnExtC,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 + DW 0,640, 0, 81,%0000000000000000,0,InputLine.InputLineExitCancel,0 + DW 0,640,143,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 DW 0x8000 ;[]===============================================================[] -MakeDIRTab: DW 240,312,123,137,%0000000000000001,0,InputLine.InpLnExtN,0 - DW 328,400,123,137,%0000000000000001,0,InputLine.InpLnExtC,0 - DW 0,200, 0,256,%0000000000000000,0,InputLine.InpLnExtC,0 - DW 440,640, 0,256,%0000000000000000,0,InputLine.InpLnExtC,0 - DW 0,640, 0, 81,%0000000000000000,0,InputLine.InpLnExtC,0 - DW 0,640,143,256,%0000000000000000,0,InputLine.InpLnExtC,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 + DW 0,640, 0, 81,%0000000000000000,0,InputLine.InputLineExitCancel,0 + DW 0,640,143,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 DW 0x8000 ;[]===============================================================[] @@ -147,5 +147,5 @@ QuitTab: DW 0,640,138,256,%0000000000100000,0,QuitConfirmWin.Abort,0 DW 0x8000 -EmptyTab: DW 0,640, 0,256,%0000000000000000,0,InputLine.InpLnExtC,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 294df1e..4ed96e8 100644 --- a/rez3_fnmark.a80 +++ b/rez3_fnmark.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 25.07.2025 savelij +; LAST UPDATE: 01.08.2025 savelij ;[]==========================================================[] MarkFileR LD A,(IY+PANEL.FILES_ALL) @@ -85,7 +85,7 @@ UnSelectFile: LD IXL,0x00 POP HL BIT DIR.B_Dir,C ; это дира? IF MARK_DIR - CALL NZ,COUNTING_DIR ; измерение размера диры + CALL NZ,CountingDirR ; измерение размера диры ELSE JR NZ,.MrFile1 ; дирекории копировать не умеем, только файлы ENDIF @@ -102,7 +102,7 @@ UnSelectFile: LD IXL,0x00 JR Z,.L8 IF MARK_DIR ; копируем размер в байтах из размера диры - LD HL,COUNTING_DIR.FILES_SIZE + LD HL,JUMPS.FILES_BYTES LD DE,WorkBuffer + FileHDR.SizeBytes LD BC,DWORD LDIR @@ -147,7 +147,7 @@ UnSelectFile: LD IXL,0x00 .L4 LD IX,8 << 8 + 48 DEC HL DEC HL - CALL InvertRectan + CALL ReplaceColorRectan POP AF JR NZ,.MarkExit1 JR .MarkExit2 @@ -172,7 +172,7 @@ UnSelectFile: LD IXL,0x00 JR NZ,.L6 LD DE,(COLORP.INVERTPAPER + COLORI.INVSELFILES) << 8 | (COLORP.INVERTPAPER + COLORI.INVERTINK) .L6 LD IX,8 << 8 + 146 - CALL InvertRectan + CALL ReplaceColorRectan POP AF JR Z,.MarkExit2 ; установка выбор файла @@ -682,7 +682,7 @@ SUB_SIZE: EX AF,AF' ; [ ] fat32 IF MARK_DIR ; подсчет в байтах размера отмеченной директории ; HL - адрес описателя диры в странице панели которую мерять -COUNTING_DIR +CountingDirR .OLDPATH EQU WorkBuffer + 0x300 ; сохраненный текущий путь .CURRPATH EQU WorkBuffer + 0x200 ; временной текущий путь @@ -692,7 +692,7 @@ COUNTING_DIR PUSH HL PUSH BC GETPORT WINSP.CPU3 - PUSH AF + PUSH AF ; текущий номер страницы PUSH HL BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) LD A,(RAMPAGES.LEFTPANEL) @@ -704,8 +704,9 @@ COUNTING_DIR LD H,A LD L,A LD IXH,A ; обнуление уровня вхождения в диры - LD (.FILES_SIZE),HL - LD (.FILES_SIZE + 2),HL ; обнуление размера диры + LD (JUMPS.FILES_BYTES),HL + LD (JUMPS.FILES_BYTES + 2),HL ; обнуление размера диры + LD (JUMPS.FILES_COUNT),HL ; обнуление количества файлов LD HL,CPU3 LD (.CURR_DIRNAME),HL ; сохранение текущего пути для возврата @@ -728,7 +729,7 @@ COUNTING_DIR LDIR ; забрали имя диры для измерения LD A,(RAMPAGES.FLX) SETPORT WINSP.CPU3,,0 - CALL .ADD_2DOT ; возврат в предыдущую диру + CALL .ADD_2DOT ; для возврата в предыдущую диру POP HL LD DE,(.CURR_DIRNAME) LD BC,FileHDR.Name_Size @@ -738,7 +739,7 @@ COUNTING_DIR LD (DE),A CALL .SET_PATH ; установка текущего пути INC IXH ; следующий уровень диры -.CONTINUE CALL .ADD_2DOT +.CONTINUE CALL .ADD_2DOT ; для возврата в предыдущую диру CALL .COUNT_FILES LD A,IXL AND A ; здесь диры есть? @@ -775,6 +776,7 @@ COUNTING_DIR POP IX RET +; выход в предыдущую диру .GET_NAME LD HL,(.CURR_DIRNAME) LD (HL),0 LD DE,-FileHDR.Name_Size @@ -808,7 +810,7 @@ COUNTING_DIR POP IX RET -; добавление имени диры для выхода в предыдущую диру +; добавление имени диры ".." для выхода в предыдущую диру .ADD_2DOT PUSH HL LD HL,.RET_DIR LD DE,(.CURR_DIRNAME) @@ -822,19 +824,20 @@ COUNTING_DIR ; и выгребаем имена дир в табличку .COUNT_FILES LD IXL,0 ; количество дир в текущей дире CALL .F_FIRST ; ищем первый описатель - RET C + RET C ; выход если ничего не найдено .L2 LD DE,FFIRST.Attr ADD HL,DE LD A,(HL) SBC HL,DE BIT DIR.B_Dir,A - JR Z,.L4 + JR Z,.ADD_FILES_BYTES ; для диры копируем имя в табличку LD DE,FFIRST.Name ADD HL,DE LD A,(HL) CP '.' ; . и .. пропускаем JR Z,.L5 +; для диры копируем имя в табличку LD DE,(.CURR_DIRNAME) LD BC,FFIRST.Name_Size LDIR @@ -843,14 +846,19 @@ COUNTING_DIR JR .L5 ; для файла добавляем длину -.L4 LD DE,FFIRST.FileSize +.ADD_FILES_BYTES: + LD DE,FFIRST.FileSize ADD HL,DE CALL GET_DWORD ; взять размер из описателя - LD HL,.FILES_SIZE + LD HL,JUMPS.FILES_BYTES PUSH HL CALL BCDEHLP ; добавили к текущему размеру POP HL CALL SET_DWORD ; положили обратно + LD HL,(JUMPS.FILES_COUNT) + INC HL + LD (JUMPS.FILES_COUNT),HL ; инкремент количества файлов +; ищем следующий описатель .L5 CALL .F_NEXT JR NC,.L2 RET @@ -879,7 +887,8 @@ COUNTING_DIR POP HL RET -.FILES_SIZE DD 0 +;.FILES_SIZE DD 0 +;.FILES_COUNT DW 0 .FILES_MASK DZ "*.*" .RET_DIR DZ ".. " .DIR_NAME DZ " " @@ -890,11 +899,11 @@ COUNTING_DIR ; HL - адрес описателя диры в странице панели которую мерять ; На выходе: ; BCDE' - размер в байтах -GetDirSizeR CALL COUNTING_DIR - LD HL,COUNTING_DIR.FILES_SIZE - CALL GET_DWORD - EXX - RET +;GetDirSizeR CALL CountingDirR +; LD HL,JUMPS.FILES_BYTES +; CALL GET_DWORD +; EXX +; RET ; создание папок на приемнике ; HL - адрес описателя диры в странице панели которую копировать @@ -917,7 +926,8 @@ MkdirsDstR JR Z,.L1 LD DE,LeftPanel ; для пути куда копировать LD A,(RAMPAGES.RIGHTPANEL) ; из какой страницы панели брать путь -.L1 ; включаем пагу с директорией текущей панели +.L1 +; включаем пагу с директорией текущей панели SETPORT WINSP.CPU3,,0 LD HL,PANEL.CURR_PATH ADD HL,DE ; откуда путь приемника взять @@ -934,11 +944,11 @@ MkdirsDstR INC HL SPDSS DSSF.CURDIR POP DE ; адрес описателя диры в странице панели которую копировать -; JP C,ERROR ;COUNTING_DIR.END_COUNT +; JP C,ERROR ;CountingDirR.END_COUNT ; копирование имени директории для копирования LD HL,FileHDR.Name ADD HL,DE - LD DE,COUNTING_DIR.DIR_NAME + LD DE,CountingDirR.DIR_NAME LD BC,FileHDR.Name_Size LDIR ; забрали имя диры для копирования EX DE,HL @@ -950,12 +960,12 @@ MkdirsDstR LD (.ENDPATHSRC),DE ; адрес хвоста пути источника ; добавление имени диры для копирования в путь источника LD HL,(.ENDPATHSRC) - LD DE,COUNTING_DIR.DIR_NAME + LD DE,CountingDirR.DIR_NAME CALL .ADDNAME2PATH LD (.ENDPATHSRC),DE ; адрес хвоста пути источника ; добавление имени диры для копирования в путь приемника LD HL,(.ENDPATHDST) - LD DE,COUNTING_DIR.DIR_NAME + LD DE,CountingDirR.DIR_NAME CALL .ADDNAME2PATH LD (.ENDPATHDST),DE @@ -994,7 +1004,7 @@ MkdirsDstR JR .L2 ; ищем следующий ; завершение и выход - JP COUNTING_DIR.END_COUNT;RestoreDIR + JP CountingDirR.END_COUNT;RestoreDIR ; LD A,(RAMPAGES.FLX) ; SETPORT WINSP.CPU3,,0 @@ -1004,7 +1014,7 @@ MkdirsDstR ; поиск первой диры в текущей поддиректории .FINDFIRSTSRCDIR - LD HL,COUNTING_DIR.FILES_MASK + LD HL,CountingDirR.FILES_MASK LD DE,.FINDBUF SPDSS DSSF.F_FIRST,1,DIR.M_Dir RET