From 7940810ffd54f06f353a6266e8de804942b24f74 Mon Sep 17 00:00:00 2001 From: savelij13 Date: Thu, 14 Aug 2025 09:36:20 +0300 Subject: [PATCH] =?UTF-8?q?FlexNavigator=201.16.03=20-=20MISC=20=D1=84?= =?UTF-8?q?=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=B8=20=D0=BF=D0=B5=D1=80=D0=B5?= =?UTF-8?q?=D0=BD=D0=B5=D1=81=D0=B5=D0=BD=D1=8B=20=D0=B8=D0=B7=202=20?= =?UTF-8?q?=D1=80=D0=B5=D0=B7=D0=B8=D0=B4=D0=B5=D0=BD=D1=82=D0=B0=20=D0=B2?= =?UTF-8?q?=203.=20-=20=D0=BF=D0=B5=D1=80=D0=B5=D1=80=D0=B0=D1=81=D0=BF?= =?UTF-8?q?=D1=80=D0=B5=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20TAB=20?= =?UTF-8?q?=D1=82=D0=B0=D0=B1=D0=BB=D0=B8=D1=86.=20-=20=D0=B2=20=D0=BE?= =?UTF-8?q?=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8=D0=B5=20Flex=20Navigator?= =?UTF-8?q?=20API=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=BE?= =?UTF-8?q?=20=D0=BE=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B3?= =?UTF-8?q?=D0=BB=D0=BE=D0=B1=D0=B0=D0=BB=D1=8C=D0=BD=D1=8B=D1=85=20=20=20?= =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=BD=D1=8B=D1=85.?= =?UTF-8?q?=20FileViewer.flx=201.07=20-=20=D0=BC=D0=B5=D0=BB=D0=BA=D0=BE?= =?UTF-8?q?=D0=B5=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=BF=D0=BE=D0=B7=D0=B8=D1=86=D0=B8=D0=B8=20?= =?UTF-8?q?=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4=D0=B0=20=D0=B4=D0=B0=D1=82=D1=8B?= =?UTF-8?q?/=D0=B2=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=B8.=20FileEditor.flx?= =?UTF-8?q?=201.11=20-=20=D0=BC=D0=B5=D0=BB=D0=BA=D0=BE=D0=B5=20=D0=B8?= =?UTF-8?q?=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=B7=D0=B8=D1=86=D0=B8=D0=B8=20=D0=B2=D1=8B=D0=B2?= =?UTF-8?q?=D0=BE=D0=B4=D0=B0=20=D0=B4=D0=B0=D1=82=D1=8B/=D0=B2=D1=80?= =?UTF-8?q?=D0=B5=D0=BC=D0=B5=D0=BD=D0=B8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/fn_api_0.5.txt | 44 +- docs/history.txt | 11 + fn/flx/fneditor.flx | Bin 11673 -> 11673 bytes fn/flx/fnviewer.flx | Bin 6459 -> 6459 bytes fn/flx/help.flx | Bin 6364 -> 6364 bytes fn/fn.exe | Bin 49275 -> 48541 bytes fn/history.txt | 11 + fn_const.a80 | 33 +- fn_exe_boot.a80 | 40 +- fn_version.a80 | 8 +- fndosline.a80 | 14 +- fninit.a80 | 36 +- fnmain.a80 | 354 +++++----- fnmenu.a80 | 32 +- fnsort.a80 | 6 +- fnsys.a80 | 97 +-- fntab.a80 | 53 +- fntree.a80 | 6 +- fnwork.a80 | 38 +- plugins/fneditor/feditor.a80 | 8 +- plugins/fnviewer/fviewer.a80 | 18 +- readme.md | 16 +- rez2_fnconfig.a80 | 6 +- rez2_fnfunct.a80 | 376 +++++----- rez2_fntab1.a80 => rez2_fntab.a80 | 55 +- rez3_fnmark.a80 | 368 +++++++--- rez2_fnmisc.a80 => rez3_fnmisc.a80 | 1028 ++++++++++++++-------------- rez3_fnnext.a80 | 8 +- rez3_fntab.a80 | 76 ++ 29 files changed, 1471 insertions(+), 1271 deletions(-) rename rez2_fntab1.a80 => rez2_fntab.a80 (68%) rename rez2_fnmisc.a80 => rez3_fnmisc.a80 (88%) create mode 100644 rez3_fntab.a80 diff --git a/docs/fn_api_0.5.txt b/docs/fn_api_0.5.txt index ec8bff7..877c770 100644 --- a/docs/fn_api_0.5.txt +++ b/docs/fn_api_0.5.txt @@ -1,7 +1,7 @@ []========================================================================[] * * * Описание Flex Navigator API v1.xx для разработчиков Flx-Plugins * -* doc v0.5 от 02.08.2025 * +* doc v0.5 от 04.08.2025 * * * []========================================================================[] @@ -366,8 +366,8 @@ []------------------------------------------------------------------------[] - 5 команд перехода (12 байт) зарезервированы и заполнены - командой RET (12 байт 0xC9) + 5 команд перехода (15 байт) зарезервированы и заполнены + командой RET (15 байт 0xC9) []------------------------------------------------------------------------[] @@ -451,6 +451,12 @@ число выводится без ведущего нуля на выход: - + +[]------------------------------------------------------------------------[] + + 1 команда перехода (3 байта) зарезервированы и заполнены + командой RET (3 байта 0xC9) + []------------------------------------------------------------------------[] JUMPS.PointerMouseClock - процедура установки курсора мыши в часы @@ -673,3 +679,35 @@ старого значения номера страницы для восстановления) []------------------------------------------------------------------------[] + + До смещения 0xC0 команды перехода зарезервированы и заполнены + командой RET (байты 0xC9). + +[]------------------------------------------------------------------------[] + + Общие переменные со смещение 0xC0: + +NUM_DEVICES 1 Количество устройств +TreeFlag 1 Флаг дерева директорий +CMOSFlag 1 Флаг CMOS: 0 - нет + 1 - есть +MouseFlag 1 Флаг мыши: 0 - нет + 1 - есть +CMOSPrint 1 Флаг разрешения печати даты времени + 1 - запрещено, 0 - разрешено +RAMPAGES +.FNPAGESID 1 Индентификатор памяти где FN +.FNREZ2 1 Страница с функциями FN +.FNFONT 1 Страница шрифтов +.FNREZ3 1 Страница еще немного функций FN +.BufferID 1 Индентификатор памяти под буфера +.FLX 1 Страница для загрузки FLX плагинов +.LEFTPANEL 1 Страница каталога Левой панели +.RIGHTPANEL 1 Страница каталога Правой панели +.BuffPg1 1 +.BuffPg2 1 +.BuffPg3 1 +.BuffPg4 1 +.BuffPgEnd 1 +.FILES_COUNT 2 количество помеченных файлов +.FILES_BYTES 5 размер помеченных файлов в байтах diff --git a/docs/history.txt b/docs/history.txt index 4a49b96..e9ca579 100644 --- a/docs/history.txt +++ b/docs/history.txt @@ -1,4 +1,15 @@ +14.08.2025 +FlexNavigator 1.16.03 +- MISC функции перенесены из 2 резидента в 3. +- перераспределение TAB таблиц. +- в описание Flex Navigator API добавлено описание глобальных + переменных. +FileViewer.flx 1.07 +- мелкое исправление позиции вывода даты/времени. +FileEditor.flx 1.11 +- мелкое исправление позиции вывода даты/времени. + 02.08.2025 FlexNavigator 1.16.02 - переделано отображение даты/времени, в режиме 1 (формат 02.08.2025) diff --git a/fn/flx/fneditor.flx b/fn/flx/fneditor.flx index dc51035edad932e4012f77458efada02c2af4d39..e420c455d64371cd383b1da148fd5170363623ba 100644 GIT binary patch delta 68 zcmbOkJu`a4N@hmG$*Y(b33D(BGBdDo+*GuHGVB;P$Fode<}y@BD$UGEQ7|;w{F6O_ SkC_bf#Kx0e(y diff --git a/fn/flx/fnviewer.flx b/fn/flx/fnviewer.flx index 125dd446f777d8f92e918922ee5e39a6f8ecb000..554eb8f0a6bed0ab8d6112e3c0a959849376eca5 100644 GIT binary patch delta 62 zcmdmOwA*NdA`_$eW+kRaj6jN&g^f{|gGrE?fsNy)q6L&;$GBOJ)t-sVTp_76GbcsC L&}4Hu`xQX|y(JD? delta 62 zcmdmOwA*NdA`_$8W+kRaj6jN&g^f}852GM60~^OpMLi}6!;WdQ9IHJOmzhFRX=YA} Mf`QTIboMKP0O5BJKL7v# diff --git a/fn/flx/help.flx b/fn/flx/help.flx index abbe239172b24c2c57cf62b8b8e783c2a191edda..af93b9a36370411e819dda1304e4b0cf08209efd 100644 GIT binary patch delta 18 Zcmca(c*k&q7z?BEWP4V*&895NMF2h=1+@SG delta 18 Zcmca(c*k&q7z?A(WP4V*&895NMF2h$1+)MF diff --git a/fn/fn.exe b/fn/fn.exe index e7c3370e23965a31aaae4285344a52e80940ab2f..7f7acaf562cd73559c689a3438658368d4a0ef50 100644 GIT binary patch delta 21876 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 UDI^fGEC5#-Pyy)j1b7tuA64{yng9R* delta 22679 zcmeHvX+Tp)*YMl`VNnAYPy;CDCZZ7(F;$>ZA}9o`3o33c?z>j8weDJi+6pRFbgWeU z+!yrKDvB1jQZ!&m;;o_u1bW*>j8%D3m)6=X@jG*G!lJfM-{*b*eP5J&=ggcrGjrz5 znKLtI?#@3%e`L7ijB0cKUG>1#62GdNn=92rR^PnMpkn&to}1?M7e#oUJXu9iD!f)S zPdD|jK4`su=z4v^X8p)5dczid?8kcRX8mZauf=-Tt@tOLPuZ`ZxnI9xzkct2 zy}sRky>-9d=YT%sfPTXPz38Am@}U0ALA~{${?m1MuS*-8@8VvN?_w6U@u=PRRDC7$ z<~|Sh=-VET;cc*{6yj^*_CDhkqZC6FTElya`HFWH?-=kVvC@N`_#L~FV>o=qeYkE^ zwn?Y-vnd#a0&-M z831?NbPvd(9+e#s6cjE^_iU5)7*?QX^vId-uzF30X} z+?!+fF#ech_cZ>LWA`%tnqzNawB^`!M%hR9mPTJ}@t7-0$;LijZGuQ$Oi$E_=Gxm&fx()gH}?sR z!}mPfx5)U2o0qPbK2OfmPHhL2e+HtJB30c-P{Qb&YlEM^*XQP1o_MBLPk%rNG5OoZ zLz`@);1N(CIv8K`>J&I~i_L5ZePyzDi?%)^w^$(ES(ng(ct?vsYA_zwB2dI_z;j!4 zqxh(fgR@t1^K3&1c`ZCl(WZbFOJh`XHu7w=DWGO?xVps<0X^g|(0^-!{?$f2qvhbJ z#+r?y0u=Crif7w~h-_LHPsQN)ic&UxMPVU;1#6=FSfADb8v90VDC?I zfc*pBi~R#c7C1m!<}KtPJ#SN}xE#EomBK$^le87{;U=jEQ@Tm&!nkd&2jruzf~dg- zU$)vpiAp!)ao&4GBe&q^-m6?kZYh0=DWA^xm`^f^dzbd3PkvlceTlHd^oaTMWBTWh zF+)#zWvm}QOpkd*3hg^sQtz>wG)XME613(V%o2R>btE> z;#Ny3XOZ-%;>-pvRETiE%cZl;B#I5$al+sT;mLkodKYYMr985=)sQ1w(TIh)Xw(O} z9+Ho9QSz6$X!PS;G>rP>IT|tc6Ew>A6C~OH$#c8xmIu@_y<}7_ez?Aui+;j3Z1-#5 zWx_UyE#lHeF~36nA=UwMMXqIBPe%lwE8f40C!fqii~Jcy19D**X?#OwSFT7@CPd)# z{z)Pz%C&U@c@1p6st@E!bLT*Bbl=XUw{WtR(QFrcbYHCS`7@EkK1%k6pQ_jPlZP2C zq>uyy8-hLC$O49Jw^=v~m+o$x$ECa4X4I~IS`A3F2KQ^Tszs0O)uq*D)9EhqZunZ8 z)}n3O@!d9?IxpIxp;SwEXvC@|JGeAAZo1eyaM2D=qRC7@*X~QMU7J`+FWZ54wT<$7 zRs6lS9ojD0(W^L8Ou9q8bjOc`obr^ub~_H1c6VE`{}Stihf9YGp@JjQ5tKh4c>tJe zo42e$`C7$tRr*d$2aXe6+lk)^Tt>Z#eF8(UPf!HqgX4lad9B#b4RPhPZb0eXpsqY9 z=Ctkr<^}Chv4 zUfM25cWbvbrEWJj1aVrb(Av+lre+T}M8s)bAbf*_Nr{E^0M+wJq(mNq#ALNTvv8@> zoilliDrvVDUgJv+?UkTbmmdjfWlIZ{eN2hUiIAi%iP+codLe{{6mvsba@tl)P8uKi z?SY6iCH1%z-lIy=_Ojpa#huzK+=S4O_KMf|5ajb5QpSoib;!`H*feLcln>%Oi3}T` z?8XP$50@rv=FFU>AzB8Bd9RDi^U=I_Qi!EumuBe+w` zi~BTQs%`r?3wvT8cJ0u=<+go`q~|Y{o1e19`*2DJl~?QiOF(tD+OJX-Z0sV9;A@DntJNS2Q#)-Q=cF{7~8L!@`j)eF!rperYIrWr!$lw1n;@9SqG`9 zh&;W>^ZhFkzJ5?>DF=1spt8==K{*nnS7*4ySM;SklBp~{DDh$g@j*hCU{$y2UY%#{ zS8eUL!@v5*#DmyRt`hA#h!f=>Qe7}B?&4;66PV#%d@5&$y=g2nwL9ohN>h} zek@OQJkLXQD6df2s#<;)lFvi(#XLMu(MESHuh2SNCRQKMJFDzk54cMJnLd%Xg8ewp z?|t%sBzQ3=@~o*qdf<^f_0c?-c{p>q8b}&9=he$U&*S7@qK8_k~j2=JXUm& zxdeHk+=1uw)E7x!>Fe}Wz=}Mm=^^v=dp{;Klc~x3a9;MuGc+>mo+8;F);&VbTwmtu z3wd#`j^CzgIrbxtUHTnszLU!ao7ruU=7m+o^4j&i{1_ARbW?DBwj{ z7$1^Ahz6w8|XBx`aPwWC9_U}AR1USn(Z&Y2& z6M{NQp%iUJ(<4Xa;rvZOaI z?;@2wKLIvl`zo86xecKc5*mUx0#1;r<#uAJ`Wp5OP0{T-o~v@r?}0vquCvI;<}*IU za`$|(58r(Zh2(DetY>~i3NZ$jR|c7lmrtl&^ZVFaD}x}PHPtQOG+frpl3u860lA?# zz>dBlAOo&>#TjK=3*(yKi=jxWnf68j>54wG6Vh5u@y)fkHnf%3!xNw}>#g~rZum)P z66KD2hXqmB@aVAiNpAVJg?_dL{x%C3zC?W0rc9-a`YP$8=O=(5wC#k%t16m)3W8@% zblo4gnk57nO1r}W%_bH~jP7XGmv@YLu z+-APCW0z-xUb7_aQwP3N9p!3(xi5bs9uVoDM5irq3-!%kuMoRxKri_GSzawc)kJrG zl~0r{JVDuhl~0r{^Fuy8l%f_OO$MwO@w?p?F?-Lj@fX->Cv6tONgFeFtpZWg^0015`uUvkGu=5C1mF2bioge6hB)0NeCHGC^!UgCF$hD>7`sVXDw} zH_tFVDf%O1OQ-I-D8)=iivAeMtIk+cs?XqeRjoZYe#UcbS0Uc0>M~Yx2s&51U9y91 zcdmAAa_zpvQhou6GI&8?e9tRgn4{;#uL%qEI!mdzCA;z5B{LlWy&YDlbgT2ZBMo#@ zwq;g+R@WQ}`@fdhqDcXG`fI(IA%$0$o+io_I)s0Ha~iCeic$-MR*5?SX?*cDY1raI zOGPOUURrv^Be~q{^AJYizNI(U+RO$IW=bKKPT9kuYI6(m^VdFXR?5bnA?opGokUlQ zJK8Kj)@C+?UE(Q_11+NzyIuA=D-Ci}N||S8Z5C2qM^gNcJ#VczNU zVsz)|%yal*uQw!%&(ZVF6#`c?&(XSbI5Cp(7eLYAQ%mYtLI(`25s@oBVu#{vKu)=u$vH&JMGwp`B z0Cx2bUL>Agy|m+T3G4wy0bPE~Dio~gY@hj;+0t9v zK5J73mC;`AR?IWNTnr=K57+jd=-TcaI}As}wAO(_q7(a4;TaaTZ%H{rWl()vf{<2} zY&>VCXEsly|1ObnBtpgpxwECUwoPvnW?R_WwxA8smQA<;`)aWDg14yr@eh5vwR?q- zJH{AaQCUw?JG6@GO9cL(6%e=+$Mx)tkH#olj6d6ySZj@=)j3&0s|j5q$^Vcp?xE@G z{Q}qV9F4-W`ZCYw96hg5PiUeV_>7-xTId`M{-PO!+av}zvL86yJeBU7*w8n?VLtI? z4lDkK!;RBC-lg)wxNpS2<8?r9D6|P{zI+AC|Dr^m<-vGZtm;LU0|VUSni72lzyFe` zu!>)z8jR~>yNRBb;J~;rN{+R0{X4$U4Nl?b1#iU}V{R#^1pH~7N_?%bz}EfQZ%xcTWzdTSl14=^k& z5)l}AU?p6MTdaVIP!bGQXQR$~Y!APxEc*AFi;X%=RwhQMlEYYu&BC)L`E>;?_JWQI z+zHbKXi;@+){hyg*evzjweX(1mi5D5#z(f^dxn@eWPX)_u|uK@*epot(P0BLP^gJR zNjh}!br!bK*I&ew6CzZMVKG=o>e_GeWL|`Z&20281AR$C#jnm*k}yy=&7h(5u}sRVWFKqHHif}*t58cer-- zu84{4D-(qmFF9}~(c1sa)nx~MiJkE_jbaH-*8#yZMw%?J{|is{mI>CQNKG`8qZYeadM@&fxgNBA{2aQ2D4qeqef}UNT4cKyP-Zsk`bx726Y!ZPM_7Q`o!EMpgwb?h&>zGgC$_WKIk2X;_s zzG_D4h)FwS)PRK13B&o)G>@Rm9QJd2UE?S(Rsc;$ziLpStOZEv5{P2oG+yUxa{&f7 z6I5hP1%?#Jf-KO4W`xZV?lv>u5Q5U2CBP6^U&_y1g=KwHcK8ZnYUVAFVrQcR@PdKk zx}{!g*6<0}py4yFy|Ur|y2dyB-nEw+o)AA^MDl;X;Vb@a!jz1Hq>aha`@jvl`zSW`dQJQV#%+C_fzFyLz3J!*`r0Vzm(K9#W26@d z_TX{S0=iGC^f>J^QF?@4K1q6jR>i5y9OSoYfqXy`kpHes<(H|yAuh5kV(o1x8g7hMgXE%d2`^(Sd@SsPP^5-RmvPX<7 z_8ZL1SzoS?zo6b)9`hujT;rzNTFyeu=5mPXV;9S)+=duflD}Qam`F;YGKeWJk5RT} zs^IC(aPahG>fq_Z+%Jd5W+ZEn)PqjW&>+>u@_C(57x+=X;5~yobx+t#O8A8@XYLIW z4!%jA`}pTC6(k%|33bke^4L50>EP+~_J@=U(hq79J7>rqdd?%tjcOL#KKVU*{A0>R z)GT&ya=Y%!zFw-@`t@?vsjtcA)g#LOJlL+3m}XGV?ZI}L8)df#KVPD%0W1Xj>LK`F z$(o=^6-!mCDwe5sLCpDz_f<6&FlkUSvyt`DlO!B}x$JO;fs3CthlL4&}8B@Oh#^CY|XE01V~4#?rgO zX`D#)dnH&bswb5O4YCzcmnWOaTLf>A93GDsAK0`Z;-jA^bwq=$t9eGlsI44;bJqLF+h60422s{x;|zSHkOx zBS_4h%X|z;{7Oh1!pDeUo)#T%7IU|0jE-dEk$!B31f)e9;171RM7x@$KoKICCH^9X zdCk$m$`^os^$l$Q5YA_~YS?(|eZ#lM3C19d7sWGp3@$VxuMt)b5o6H-< zORe#$sv3^DS;Kttv~jwws)1SSyBb;-&#sHVP7FpF3aEz|byW>Nf%E&&xxSN247UHk z(P3`cBr9G%I&c7qj1@IUA{*s4GZ1|STY1DoB6DTs6>Gey?}rmse1%3c@mypa^$vo> zrySWg(PY4}1pan(T+99(+mZuC@(dIS4ja=^*PoM4V>*9hA$r5xK1vy4;72s3v=^B(Lqls;9tpA3yn5EuO1#kSXF#-NiMKMezK)^YX#6H7& z2Zy|tuo;*s8CI37_W!m}<^emC+!EC)XkCWn;k7*Gx!u}N>87zse!8aNt#>fH@w;!z z{PK6pZ|#=X?WSVft0JO^1IrnF;LUej6TW3*u=K4S)LQ(;TVcu$-!UkiM!NJorK@$1 z^jGHf?X>Jza z!u09?tpQBNvCNu!IvV#)okgh%j-;khIuZEvs0Q3&;uq_) zZTWaO0P?iW_u{c9-j>JW@^P`PAon5Rc*=zygM-Hh>2}wFIHSJkOY%bTR|>C_w*i$S z7kGPqL7+z1aH$a{p{FIyVR~#Pp+dol8V*IJ?rFtb@B;y@_BV~ zU7dVmom4)oPG|#P(MfgkckARU>*Sm8_3=YnLB=N4?KYwP2xoP#@#Q+J+Xuz}ZFS>? zS~gS{LG#FuR98I!@0!pi1=a;*O%3`-*vWIOt09uCtU>F+x|{S^a!K*$|7=}70J~3A z>p(Qj29&Gn^#D%(OcRw|mfh9aMbX3UlA2T3?LN^1?13cEK04Oki3CEUqwGB(AdOfK z#zHHLJ;+#f$Ie8A*k!Vo>Ld3HWkFyU>I<(gvmaLa*taWN+IJ{D?3x3R`;@@YBJLG2emQV4!GZMM_siOP}AuU}bxGs|Au_`C1`H zZLImZzEG}Ned@kl4TFNHlnod0$Vr_8{$h`T$;Tg0>KMaQa4vw&cUWN!3>t%mtw=;g z!tf@G>sfbeCXw2(8xO(gcMl_RQx4%@CUw`5)%QwRUqc> z!+IX-NltMe!^Q-&>TsPwsIwTT>lYlVmwyJ+W8*qrpsg9}>j&vnf=kscQ?k;HIdESp zVRqbSi|=-3zq%XY$?PFv2*Ua``ZL(5)RP7OD%heYRWs|MuBORBx`X#aRS&=;LyW*v zBU&VDt?v0CM%D8{DVzDjB^oUNH;v)aJ7IFwgHlL=$Z;b)74;Sh%?JF!@o?y+bPWr# zp1s6#e*V%vzJ9=YkOs09(DOl011}XlAEz6Y33)S$$9NgqnPhOGBKZs}kRtBGr9Iys16|X_dKy*OP`S zG%!U!G3Sbd7OnYGA6PJr8_^}e^s|C?z0V3ueODMB z;br!*WtQCJmat#*N2E-#xTRU&YxA@Ssu%7tZLr6LZR{IA5O1tC)6PwL2ntDwMj&rk zk&xf?8wj9v4RG6=2%zH)@D6~Fqi-AFhZP7QF&xVX`GYG#nNur7U6Glm=Z*JFpP)N+ zhX6y-6EI^a2;IL*pgj$+kwpMKYJeAjntg;~DJT9Im>goMoCbIbz&X_S4e(5Wzo#NZ zPW-t5M}S4-fOTj-M2L|b1*1?zD)2=aLRxAv<%CNCmLpBG^vP6uvvdu5t66$FwY^#T zTWC?U^zGDVj&vPDq<}?eb2Eg`s2j})YzEFcD?}=IgZi;q`f+4zmi{BtQ?-I1K4t=Oc0*5q;5M9$v@~ctIGIkl``t zC8wUtL9=eah-lDrIVcdcTBDxJLA!X^spoRg6VP&vdM*bsK#lxh&7}jyCvy})B8HNc zS_AA#uo~b4BtsJzWpqU)4Q;B0Dib&i2~8?@z^|i3zDX7boQOv9@IxNfl>j(}kN6ED zoC6T*%$u6dHamIX)b0PHHaBgu4%#%mX`6t}P1{)ZQk%yBznuMerWzpvJKMY;nm}M@ zHy-|*CJEgLy3N@pXB(aK)qkrWo3`ntZXD69NgbUFa?;H@A_^HBVA6B8=}8qr1a`K` z=7633=y6L(AB8+;JCKFUo~eZk%>Zv+@0cT)-wRC2MHHaRlSP zF+$Q*FnGDRjoxUe^QR4U{-0O5Q6=dF+soMoUMKx+oxkPT>}RO*TnDg|tpvUguuw&BMBqpV3M<|+Fj@BaR2c(1h2q+0`LuW(*zz6}afdqLFIN#AqCoEK97y|6HCyj)g|an*m6pNeVfs_rD)i-Qq3OiW6 zVPO*kix~|pVEV$MB^DMcaj-b)2Mdz;`PZML7~55(IsVmi)PKu$H2C}LXwZY}C}a=h zG~PmeYHuO%5QROZYLw8X8fky6MloU4NRw2J`cA7xv8$?4-0o`BCd7cG?-@|9^%tL` zp48LBNSOr`{#Aqe45~#jER?_a8j3$t{oLt%LQbBE2Z6)E@)VxCpu5hhg*^-KNVevK z7cK8Txh$4}WzbJr!F5vpRLhO0xlz8>lxJGjBT?Ta4)&B`rORHv&U~H8vg^#&l&4y2 z|7Y3?;`Uq4R`935KWXcSz6toDRxSJGb=ZW4<6qv<5h&Zzf^5^<0cBg7uDxw~u>6_U zmfk`2oAzb*-+NyWZ)uZO`G?%9g<~0T<{vkLgN+bnaA}1_sG?9mC<}HXJO}nGueZKY ze+jN^q*H~muSu(z+QcsP*4g#kLN9JX3+}y^-27JT{9R;&pNhwm7wUSoN^t{`=?8h-bzPjS&yF&kf zegh9<{L3PGmU|+D)<{aPg+A1h&E|jvpsyf1V6Yuv)==OR4sj~C#L&llI-Ni&&=g1g zyS7l$LMf7Xap{t(2oJmaWjcW!pP&*ahT60%&V)YKo<3vj5s%+l+a7A)>NAoZX|g+lkxS%fjXcE z4NrARY(}q#gBuQd;zV%xuAvf~BrgKV#;PfU^&|T8^r=Lk-%{Na9WY6GZL3JElz;kG zkr;ToCrWghD!xBVXiX@Qb#HEz4>;U|bcQ~2ivDnr(9oZN5z2rtkY9Myz&;ur@*R?? z&+Z4sfDaV8M+BI*g#oq&fk4l;Fvzx`9Z<3@Y;Ri-to}`FTin6v?Zmrgm7&E-#*K|`PkzEy1hgvU>X7Qh?Yps6CehWah>;Nb1R zX>6c|;6vJroeo_M<&Z-!gNTj7?=Rh@drXvpu-Qk5cKKO!a|MjZ1iBDlUqdddttXUsLNGQ{4BnGd5AyqJ?usPR_Si_{4IVTlp>+w-D;!0#~!~FUzeXO9%0Lbs8U4$slRFh7CK@pB4pOI*1HX zN&@!*AQifgDIMh4yraJzME17f z<1ffH2{N)g!z{ocg(9#}=?yn%6n@gDW;n~5<0<_iy-@aZIrA-kR~OWHk{cZfN4d~( z{52zT$H-=mRzMW~RHxEG4F#vfzi!FSW+RiFt-Z<(@wL~4Xz<2rbjl9g$-2Ou3*Pm= z*}V%m(cv!w;PDw=UEmG?cozJFn*1{-?Ana3uDlOfiXnRxR&{oRepDsn#8tV}=lHu-o&Qk>MTCg|5o1=Y?%MI62pc$y1>hqqTHr^k zd-<*zrjSaS3_ST79Q8q0*_vT6;2eYMrHMLMm4#P-@TG3;uqMiHwp01-e(y!)_aKE= ze$;SY`NcC3Aj&UoIIsM64s$5K2PuN`1A{dbszumnJX@r2oHZG2Ljr8tK)AvBAccc; z&V>I@W{mVf3WOWxn>E8g0QIwmvR*iNO;;Zn$~6KuuRqt~x7GwP+t(GAtiPy#kOE3J zYZ!Ri>URz!WywAgBE0a{H6z>}59gS2{BTX6bp9@|`d-rh>{`rZ%EnkX!|@vv1owD{ z8}IP-5=t6o22E|6A(4RT(9UK7!HMvKiHI*5@R;%xE=|Hs_f~KVCENmUwtQDZ^LR3N zTV|~9ofq1se}wBZ<*$>rOQy^GiAsz*Y*A+oE4)0A9Dc%G0-`dMcS)4;ds;qsTkr;EGR9NIu)DGWpwM3>KH;CbDcL;enoIw4onp?Ge0CnaZH=k(8yG4 zYIG{za6U)}BHtyIH;;KrH92podZ&UK0Ao5`VFCM6z-?xhc7^I#Q=(IeE)^`@-l@dW zjXDfy?4GyG(Qd@zC07!qA-qKznF5$(8IGXx4E3%<3Zf=2T`=vvq4TG`H!W>}41PoA zEs(tl5ugdu*6brO;JyPQ}YZq8Q4OM zW;krWH=*g!$@SHc9UsEN33YnzneFkP1;f!XqN_laotC5h^_ARQoC9KEpv$6iftyTQJ!BN>_U;*$;xeIyM=2 zX`D1g+>*aqta@{b;EzLlf!ENbNpw$my)}jT9`Qzq3yf5`eiH2tv16y;uInQPkDNlz z_Z{Cf0e=8E)pwla3tyioyu5rWse%D!OrM4lhZQ3@T*5UPVn|Ig+Gw$3w7*Eai`MWzhmjm&p>@bi0Q*KN!1E_5Dn^-J(jERj7Hcq+(Ro zX$4(3)KR*S+3exj9Mf$!So9pzS9lF0FV+C@Z_jJ!@VkAL9ZVBt^`@E1ADGXlTZkW# zpYiiqcE(sX%N}mLIm@u*ZZX^)g|y{&CxAQgxLNi@TsfDF?}hJ_@;)eDX4R&*-{xV?aY+fG|B>2S6InSZ=Vy? zf#=uM3A0qS->AQziND$;4cs%6gZ&`5c0;3d&^}%Y=t0@DqN{smZr&V5)*}DLZ~(V0 zb;#_PU!|e&0uTE#DFXrc;*B%_-gdV#jhoaPLdnZ3N1FPQf9J}cvioO0R`H#xH_T@G z&H_1r@5PWuA8Y(#dI6#iBF!Uqq;3mbPy+qaca{bLLc%O(GUk&>DifJS|2$i&bi6w= zy|QTK+pvoxyxTH8v*@vJ!vz`P?GE3sidigmP482-n8|tDQo(ed4Yd=-VrC`?=IRL% zls{lw_gMD~weB$pgsCw|>MziwW+JJlK#p31to_@~raqZf3S)(toemRMuJ7_nMil^J z*?Km!dI2nS%FVab0dNt%p{);>_oq75?^YnD&5qFVK zf=rm(65t6R3t@&41pItU$9}T8Qo8aH({V01py$lV%;dlOL2eWW`XvYYseXOi^aWf? zlFhO9pE$>w5(0nI=8&&{oi3C2o+IBd2lT|WkN4?%&;2khW$tV9rq2B#jTnU_{2u&~ z@Je`Zg1@~E_&nf}coV?i!k?AIrwO>yG$D$oxYMV5@T_HvVikK;+JK;V6BQ%jbD4h(R1VQFFX>!8CNmDFp3X`+h1~`NC z&K@|~BSoAT0}s+A4h#b4IFAt_Qb;GKLPL3qPWTkGfRZ^8c#;`#kWE2M&0FwjR!G-z z5QDxa4@w3P0`F;3h>%VS5vuKkPc^}BPI21=o`c0e3{f(8Y@2{kaTAgR7C0f)+X*{K z@-Sb?o#-gfiG`C$j$-nlWbhzxQ;I@*LnU=Q0x2TDNrr!N);JM}^Niw;8lBxoB8AgV zQpDe#W|p8oQ99CPBL=uVUyG0{)rU$)0z4OBaM^2svjP5qy4V0;0~n#x(Tg8)JSPB_cKNFFAPgh_G@FMwsE zgtKoad0z||7$$uw(%0&Eytn926Zgirqy!qFJ1~$XDNTKXqusH0VjpDcLwDOw&^8U z8skmJ0^G@WH0Yz}@yTQD;L~Vd9qU0QZ2okOKiSW`V9AwwI`-wj6nlcVfBJ!DdOY)c zlS?tbScQjy=}e3pVYG$+BG+k3Y>1 zz*~-MTvupICgIBCJ>2+>CEW5vD%BRxJP|JJtFFxNj4z#-?8PVY6~f)}-)IW1%pWPx zsL5A4Xto+LDDMgwEZI{-tKp3465J1flUYECL<9+HW8gvbAu)d4r6Jw8os1QcJw*38TLj91m9pHKxlX< z3J;g@KP0?lGNR;37eEJC-}4{9cLF_kE$Ig_4POu7KP?5{FCa_vhe_6yP6J-*1V-oq zp565<8UPFf&v_oZ;h(5@aj~8bTHUTUx1)OqAOBCTD1T$h~=JZU(f~!2XsLIaX1B0`5A% tEu-Ij4Poi9t*#hI* diff --git a/fn/history.txt b/fn/history.txt index 4a49b96..e9ca579 100644 --- a/fn/history.txt +++ b/fn/history.txt @@ -1,4 +1,15 @@ +14.08.2025 +FlexNavigator 1.16.03 +- MISC функции перенесены из 2 резидента в 3. +- перераспределение TAB таблиц. +- в описание Flex Navigator API добавлено описание глобальных + переменных. +FileViewer.flx 1.07 +- мелкое исправление позиции вывода даты/времени. +FileEditor.flx 1.11 +- мелкое исправление позиции вывода даты/времени. + 02.08.2025 FlexNavigator 1.16.02 - переделано отображение даты/времени, в режиме 1 (формат 02.08.2025) diff --git a/fn_const.a80 b/fn_const.a80 index c0e7450..5fa0eb8 100644 --- a/fn_const.a80 +++ b/fn_const.a80 @@ -1,8 +1,9 @@ -; LAST UPDATE: 02.08.2025 savelij +; LAST UPDATE: 14.08.2025 savelij -NUM_PAGES_FN EQU 7 ; количество страниц для работы FN -DateMonthFormat ; формат вывод месяца в дате +NUM_FILES_PANEL EQU 17 ; количество файлов в столбце панели +NUM_PAGES_FN EQU 7 ; количество страниц памяти для работы FN +DateMonthFormat ; формат вывода месяца в дате .Digit EQU 1 ; месяц цифрой 02.08.2025 .Text EQU 2 ; месяц текстом 2 Aug 2025 @@ -262,7 +263,8 @@ FORMTABL JUMPS .JUMPSIZE EQU 3 ; таблица переходов на функции для плагинов - _INIT_VAR BASE_ADDR + .JUMPSIZE ; пропуск перехода на основной вход + _INIT_VAR BASE_ADDR + _SETVAR .MainStartFN, .JUMPSIZE _SETVAR .ClearScreen, .JUMPSIZE _SETVAR .MakeWindow, .JUMPSIZE _SETVAR .ReplaceColorRectan, .JUMPSIZE @@ -281,14 +283,14 @@ JUMPS _SETVAR .DrawVScrollBar, .JUMPSIZE _SETVAR .InitProgressBar, .JUMPSIZE _SETVAR .DrawProgressBar, .JUMPSIZE - _ADDVAR .JUMPSIZE * 5 ; DUPL 15,0xC9 + _ADDVAR .JUMPSIZE * 5 ; RESERVED 15 BYTE 0xC9 _SETVAR .WaitUnpressMouse, .JUMPSIZE _SETVAR .CheckCoordsMouse, .JUMPSIZE _SETVAR .CMOSPrintDateTime, .JUMPSIZE - _ADDVAR .JUMPSIZE; _SETVAR .CMOSPrintOff, .JUMPSIZE + _ADDVAR .JUMPSIZE * 1 ; RESERVED 3 BYTE 0xC9 _SETVAR .PointerMouseClock, .JUMPSIZE _SETVAR .PointerMousePointer, .JUMPSIZE - _ADDVAR .JUMPSIZE * 4 ; DUPL 12,0xC9 + _ADDVAR .JUMPSIZE * 4 ; RESERVED 12 BYTE 0xC9 _SETVAR .ConvertNumbers_40b, .JUMPSIZE _SETVAR .MoveBytesInc, .JUMPSIZE _SETVAR .MoveBytesDec, .JUMPSIZE @@ -308,25 +310,20 @@ JUMPS _SETVAR .atoi_16b, .JUMPSIZE _SETVAR .Resident, .JUMPSIZE ; резервирование до смещения 0xC0 - _ADDVAR (BASE_ADDR + 0xC0) - .CURRVAR; - .JUMPSIZE; * 4 ; DUPL 12,0xC9 -; переменные для доступа из плагинов + _ADDVAR (BASE_ADDR + 0xC0) - .CURRVAR ; RESERVED UNTIL OFFSET 0xC0 BYTE 0xC9 +; глобальные переменные для доступа из плагинов _SETVAR .NUM_DEVICES, BYTE ; Кол-во устройств _SETVAR .TreeFlag, BYTE ; Флаг дерева _SETVAR .CMOSFlag, BYTE ; Флаг CMOS 0 - нет ; 1 - есть _SETVAR .MouseFlag, BYTE ; Флаг мыши 0 - нет ; 1 - есть - _SETVAR .CMOSPrint, BYTE + _SETVAR .CMOSPrint, BYTE ; Флаг разрешения печати даты времени + ; 1 - запрещено, 0 - разрешено _SETVAR .FNPAGESID, BYTE ; Индентификатор памяти FN _SETVAR .FNREZ2, BYTE ; Страница с функциями FN _SETVAR .FNFONT, BYTE ; Страница шрифтов _SETVAR .FNREZ3, BYTE ; Страница FN HELP - IFDEF ENABLE.VIEW - _SETVAR .FNVIEW, BYTE ; Страница с FileViewer - ENDIF - IFDEF ENABLE.EDIT - _SETVAR .FNEDIT, BYTE ; Страница с FileEditor - ENDIF ; Буферные страницы под интерфейс _SETVAR .BufferID, BYTE ; Индентификатор памяти под буфера _SETVAR .FLX, BYTE ; Страница для загрузки FLX плагинов @@ -354,6 +351,7 @@ FileHDR _SETVAR .Hours, BYTE ; +#16 _SETVAR .Minutes, BYTE ; +#17 _SETVAR .SIZE, 0 + _BITMASK MARK, 0 ; 1-файл помечен ; имена файлов @@ -375,6 +373,7 @@ FNinternal ; отладочное, не менять по избежание глюков PLUGS_ENABLE EQU 0 ; меню плагинов TREE_REZID EQU 0 -MARK_DIR EQU 1 ; выбор директории с подсчетом размера всех файлов +MARK_DIR EQU 0 ; выбор директории с подсчетом размера всех файлов TREE_DIR_ENTER EQU 0 ; показ содержимого директории в дереве по ENTER CORR_FILENAME EQU 1 ; преобразование символов имени файла +MISC2REZ3 EQU 0 ; переезд misc.a80 из резидента 2 в резидента 3 diff --git a/fn_exe_boot.a80 b/fn_exe_boot.a80 index d68f477..59ce872 100644 --- a/fn_exe_boot.a80 +++ b/fn_exe_boot.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 19.07.2025 savelij +; LAST UPDATE: 03.08.2025 savelij include macros.a80 @@ -14,19 +14,8 @@ include fat_dir_sp.a80 include fn_version.a80 -ENABLE -;.EDIT -;.VIEW -;.HELP - PAGES_MEM := 4 - IFDEF ENABLE.VIEW -PAGES_MEM := PAGES_MEM + 1 - ENDIF - IFDEF ENABLE.EDIT -PAGES_MEM := PAGES_MEM + 1 - ENDIF INIT_VAR 0xC000 SETVAR FONT_RAW, 6888;IFFFONT_RAW_PACK - FONT_RAW_PACK SETVAR_ALIGN @@ -98,32 +87,11 @@ EntryExec: DI ; загрузка хелпа LD A,(MAIN.FNREZ3) ; FNREZ3 SETPORT WINSP.CPU3,,0 -; SETPORT WINSP.CPU1,,0 ; ???? LD HL,0xC000 LD DE,END_BLOCK_3 - START_BLOCK_3 LD A,(MAIN.hFile) SPDSS DSSF.READ JP C,disk_error - IFDEF ENABLE.VIEW -; загрузка вьювера - LD A,(MAIN.FNVIEW) ; FNVIEW - SETPORT WINSP.CPU3,,0 - LD HL,0xC000 - LD DE,END_BLOCK_VIEWER - START_BLOCK_VIEWER - LD A,(MAIN.hFile) - SPDSS DSSF.READ - JP C,disk_error - ENDIF - IFDEF ENABLE.EDIT -; загрузка редактора - LD A,(MAIN.FNEDIT) ; FNEDIT - SETPORT WINSP.CPU3,,0 - LD HL,0xC000 - LD DE,END_BLOCK_EDITOR - START_BLOCK_EDITOR - LD A,(MAIN.hFile) - SPDSS DSSF.READ - JP C,disk_error - ENDIF LD A,(MAIN.hFile) SPDSS DSSF.CLOSE ; close file ;!TEST ; !HARDCODE SYS_PAGE @@ -205,12 +173,6 @@ MAIN .FNREZ2 db 0x00 ; 00 .FNFONT db 0x00 ; 01 .FNREZ3 db 0x00 ; 02 - IFDEF ENABLE.VIEW -.FNVIEW db 0x00 ; 03 - ENDIF - IFDEF ENABLE.EDIT -.FNEDIT db 0x00 ; 04 - ENDIF DB 0xFF .copyright_str: DZ "\r\nThe Flex Navigator, ver.\{FLEX_VERS.NAVIGATOR}\r\n" diff --git a/fn_version.a80 b/fn_version.a80 index 855bb06..d94a820 100644 --- a/fn_version.a80 +++ b/fn_version.a80 @@ -1,7 +1,7 @@ -; LAST UPDATE: 02.08.2025 savelij +; LAST UPDATE: 14.08.2025 savelij FLEX_VERS -.NAVIGATOR EQU "1.16.02" -.EDITOR EQU "1.10" -.VIEWER EQU "1.06" +.NAVIGATOR EQU "1.16.03" +.EDITOR EQU "1.11" +.VIEWER EQU "1.07" diff --git a/fndosline.a80 b/fndosline.a80 index c611b3d..df68e22 100644 --- a/fndosline.a80 +++ b/fndosline.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 01.08.2025 savelij +; LAST UPDATE: 14.08.2025 savelij ;[]==========================================================[] DOSline SUB A @@ -59,7 +59,7 @@ DOSlnEx DOSloop SUB A LD (HistCurrent),A LD IX,DOSstr - LD HL,DOSTab + LD HL,MAINTAB.DOSTab CALL DOSInputLine RET C JR Z,RunDOSline @@ -249,7 +249,7 @@ RunDOSexe1 ld hl,WorkBuffer SUB A CALL ClearScreen CALL ResVideoMode - LD HL,ReStartPoint + LD HL,ReStartFN EX (SP),HL LD HL,WorkBuffer + 0x0100 SPDSS DSSF.EXEC,0 @@ -348,7 +348,7 @@ SaveDOSline PUSH BC CALL FindHistory POP BC - LD DE,DOShistory + DOShistory_Size + LD DE,BUFFERS.DOShistory + BUFFERS.DOShistory_Size OR A EX DE,HL SBC HL,DE @@ -365,7 +365,7 @@ SaveDOSline INC HL EX DE,HL PUSH HL - LD BC,DOShistory + LD BC,BUFFERS.DOShistory OR A SBC HL,BC LD C,L @@ -379,7 +379,7 @@ SaveDOSline LDDR .L2 POP BC LD HL,DOSinp - LD DE,DOShistory + LD DE,BUFFERS.DOShistory LD A,C INC A LD (DE),A @@ -427,7 +427,7 @@ GetDOShistory LD IX,DOSstr SETPORT WINSP.CPU1,,0 RET -FindHistory LD HL,DOShistory +FindHistory LD HL,BUFFERS.DOShistory OR A RET Z LD B,A diff --git a/fninit.a80 b/fninit.a80 index 2fd1d32..9530f17 100644 --- a/fninit.a80 +++ b/fninit.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 02.08.2025 savelij +; LAST UPDATE: 14.08.2025 savelij ;[]==========================================================[] InitVideoMode @@ -262,8 +262,8 @@ FirstInit .EDIRFLX ; обновление в таблице выбора дисков на панели -SETUP_DISKS LD HL,BgDISKl ; диски левой панели - LD DE,BgDISKr ; диски правой панели +SETUP_DISKS LD HL,MAINTAB.BgDISKl ; диски левой панели + LD DE,MAINTAB.BgDISKr ; диски правой панели LD BC,FORMTABL.SIZE * 2 LD A,(NUM_DEVICES) .L1 ADD HL,BC @@ -337,38 +337,38 @@ InitScreen OR A RET Z MAKEWINDOW WINSUBOBJ.WOBIND - W_BORDER 500 + 10,15,136 - 10,12 + W_BORDER 510,15,126,12 W_END - LD HL,508 + 12 + LD HL,520 LD DE,17 LD B,COLORP.HIGHGRAY + COLORI.BLACK EXX - LD HL,558 + 10 + LD HL,568 LD DE,17 LD B,COLORP.HIGHGRAY + COLORI.BLACK EXX - LD A,DateMonthFormat.Text + LD A,DateMonthFormat.Digit JP CMOSPrintDateTime ;[]==========================================================[] InitPanels LD (InitPanFlg),A - LD HL,LeftPanel+PANEL.VIEWFLAG - LD A,(RightPanel+PANEL.VIEWFLAG) + LD HL,LeftPanel + PANEL.VIEWFLAG + LD A,(RightPanel + PANEL.VIEWFLAG) OR (HL) - AND 0x02 - JR NZ,InitPanTree + AND VIEWFLAG.M_TREE;0x02 + JR NZ,.InitPanTree LD IY,LeftPanel CALL InitPanelE LD IY,RightPanel CALL InitPanelE - JR InitPanExit + JR .InitPanExit -InitPanTree LD IY,LeftPanel +.InitPanTree LD IY,LeftPanel BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) JR NZ,.L1 LD IY,RightPanel .L1 CALL InitPanelE -InitPanExit LD HL,LeftPanel +.InitPanExit LD HL,LeftPanel LD DE,PANEL.CURR_PATH BIT 7,(HL) JR NZ,.L2 @@ -440,10 +440,10 @@ PanelN6 EQU $+1 W_END LD HL,NormMouse - LD DE,PanelPlaceL + LD DE,MAINTAB.PanelPlaceL BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) JR Z,.L1 - LD DE,PanelPlaceR + LD DE,MAINTAB.PanelPlaceR .L1 PUSH DE LD BC,0x0050 LDIR @@ -514,10 +514,10 @@ PanelP6 EQU $+1 W_END LD HL,PodrMouse - LD DE,PanelPlaceL + LD DE,MAINTAB.PanelPlaceL BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) JR Z,.L1 - LD DE,PanelPlaceR + LD DE,MAINTAB.PanelPlaceR .L1 PUSH DE LD BC,0x0050 LDIR diff --git a/fnmain.a80 b/fnmain.a80 index 2101c8c..55ab5ea 100644 --- a/fnmain.a80 +++ b/fnmain.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 02.08.2025 savelij +; LAST UPDATE: 14.08.2025 savelij ;[]=======================================================================[] ; FLEX NAVIGATOR ; @@ -12,7 +12,7 @@ PHASE BASE_ADDR START_BLOCK_1 - JP StartPoint ; entry point + JP MainStartFN ; entry point JP ClearScreen JP MakeWindow @@ -39,7 +39,7 @@ START_BLOCK_1 JP CheckCoordsMouse JP CMOSPrintDateTime - DB JUMPS.JUMPSIZE DUP 0xC9;JP CMOSPrintOff + DB JUMPS.JUMPSIZE * 1 DUP 0xC9 JP PointerMouseClock JP PointerMousePointer @@ -73,18 +73,13 @@ CMOSFlag DB 0 ; ; 1 - есть MouseFlag DB 1 ; Флаг мыши 0 - нет ; 1 - есть -CMOSPrint: DB 1 +CMOSPrint: DB 1 ; Флаг разрешения печати даты времени + ; 1 - запрещено, 0 - разрешено RAMPAGES .FNPAGESID DB 0 ; Индентификатор памяти где FN .FNREZ2 DB 0 ; 0 Страница с функциями FN .FNFONT DB 0 ; 1 Страница шрифтов .FNREZ3 DB 0 ; 2 Страница еще немного функций FN - IFDEF ENABLE.VIEW -.FNVIEW DB 0 ; 3 Страница с FileViewer - ENDIF - IFDEF ENABLE.EDIT -.FNEDIT DB 0 ; 4 Страница с FileEditor - ENDIF ; Буферные страницы под интерфейс .BufferID DB 0 ; Индентификатор памяти под буфера .FLX DB 0 ; 0 Страница для загрузки FLX плагинов @@ -182,6 +177,8 @@ RightPanel: DB 0x01 ; DB 0x0A DUP 0 DB PANEL.CURR_PATH_Size DUP 0 ; Путь к текущей директории +thanks DZ "\r\nThank you for using Flex Navigator.\r\n" + DOSError EX AF,AF' GETPORT WINSP.CPU1 PUSH AF @@ -223,6 +220,28 @@ BCDEHLP: LD A,(HL) LD B,A RET +; (ADR) + BCDE = (ADR) +HLPBCDE: LD A,(HL) + ADD A,E + LD (HL),A + INC HL + LD A,(HL) + ADC A,D + LD (HL),A + INC HL + LD A,(HL) + ADC A,C + LD (HL),A + INC HL + LD A,(HL) + ADC A,B + LD (HL),A + INC HL + LD A,(HL) + ADC A,0 + LD (HL),A + RET + GET_DWORD: LD E,(HL) INC HL LD D,(HL) @@ -241,7 +260,134 @@ SET_DWORD: LD (HL),E LD (HL),B RET -thanks DZ "\r\nThank you for using Flex Navigator.\r\n" +; вызов функции в страницах +RESIDENT +; ==============resident 2============== +.CopyFiles: LD DE,CopyFilesR +.FunctResident: LD A,(RAMPAGES.FNREZ2) + LD C,WINSP.CPU1 + JP Resident + +.ReName: LD DE,ReNameR + jr .FunctResident + +.MakeDIR: LD DE,MakeDIRR + jr .FunctResident + +.DeleteFiles: LD DE,DeleteFilesR + jr .FunctResident + +.Quit: CALL ResInvert +.QuitL1 LD DE,QuitConfirmWin + CALL .FunctResident + JP C,SetInvert + LD HL,ComExit + EX (SP),HL + RET + +.Setup: LD DE,SetupR + jr .FunctResident + +.QSearch: LD DE,QSearchR + jr .FunctResident + + IF TREE_REZID +.TestTree LD DE,TestTreeR + jr .FunctResident + +.TestTreeBeg LD DE,TestTreeR.TestTreeBeg + jr .FunctResident + +.ReadTree LD DE,ReadTreeR + jr .FunctResident + +.MakeTreePath LD DE,MakeTreePathR + jr .FunctResident + +.FindTreeDIR LD DE,FindTreeDIRR + jr .FunctResident + ENDIF +; ==============resident 2============== + +; ==============resident 3============== +.MarkFile: LD DE,MarkFileR +.HelpResident: LD A,(RAMPAGES.FNREZ3) + LD C,WINSP.CPU1 + JP Resident + + IF MARK_DIR +; считалка содержимого директории в байтах +.CountingDir LD DE,CountingDirR + JR .HelpResident + +; инициализация переменных для копирования директории +.InitCopyDirs LD DE,InitCopyDirsR + JR .HelpResident + +; копирование директории +.CopyDir LD DE,CopyDirR + JR .HelpResident + +; добавление имени директории в список и/или вход/выход +.Add2ListDir LD DE,Add2ListDirR + JR .HelpResident + ENDIF + +.UnMarkGroup: LD DE,UnMarkGroupR + jr .HelpResident + +.UnMarkGroupN: LD DE,UnMarkGroupRN + jr .HelpResident + +.MarkGroup: LD DE,MarkGroupR + jr .HelpResident + +.MarkGroupN: LD DE,MarkGroupRN + jr .HelpResident + +.SelectAll: LD DE,SelectAllR + jr .HelpResident + +.SelectAllN: LD DE,SelectAllRN + jr .HelpResident + +.UnSelectAll: LD DE,UnSelectAllR + jr .HelpResident + +.UnSelectAllN: LD DE,UnSelectAllRN + jr .HelpResident + +.InvertSelect: LD DE,InvertSelectR + jr .HelpResident + +.InvertSelectN: LD DE,InvertSelectRN + jr .HelpResident + +.PrintFile: CALL ResInvert +.PrintFileL3 + LD HL,SetInvert + PUSH HL + LD DE,PrintFileR + jr .HelpResident + +.FileInfo: CALL ResInvert +.FileInfoL2 + LD HL,SetInvert + PUSH HL + LD DE,FileInfoR + jr .HelpResident + +.Version: LD DE,VersionR + jr .HelpResident + +.DiskInfo: CALL ResInvert +.DiskInfoL4: + LD DE,DiskInfoR + jr .HelpResident + +.SystemInfo: LD DE,SystemInfoR + jr .HelpResident +; ==============resident 3============== ; Выход ComExit CALL ResDrivers @@ -260,9 +406,9 @@ ComExit CALL ResDrivers include fnsys.a80 ; Старт -StartPoint: DI +MainStartFN: DI LD SP,STACK -ReStartPoint: +ReStartFN: SETPORT BORDER,0 SETPORT WINSP.Y_PORT,0xC0 CALL InitVideoMode @@ -272,10 +418,10 @@ ReStartPoint: SUB A CALL InitPanels CALL WaitUnpressMouse -MainLoop: LD IX,FilePanelLeft +MainLoop: LD IX,MAINTAB.FilePanelLeft BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) JR Z,.L1 - LD IX,FilePanelRight + LD IX,MAINTAB.FilePanelRight .L1 CALL CheckCoordsMouse CALL TestKeys CALL C,DOSline @@ -349,122 +495,8 @@ END_TREE ENDIF include fnpanel.a80 include fndos.a80 + include fnwork.a80 - -; вызов функции в страницах -RESIDENT -.CopyFiles: LD DE,CopyFilesR -; resident 2 -.FunctResident: LD A,(RAMPAGES.FNREZ2) - LD C,WINSP.CPU1 - JP Resident - -.ReName: LD DE,ReNameR - jr .FunctResident - -.MakeDIR: LD DE,MakeDIRR - jr .FunctResident - -.DeleteFiles: LD DE,DeleteFilesR - jr .FunctResident - -.Quit: CALL ResInvert -.QuitL1 LD DE,QuitConfirmWin - CALL .FunctResident - JP C,SetInvert - LD HL,ComExit - EX (SP),HL - RET - -.Setup: LD DE,SetupR - jr .FunctResident - -.FileInfo: CALL ResInvert -.FileInfoL2 LD HL,SetInvert - PUSH HL - LD DE,FileInfoR - jr .FunctResident - -.PrintFile: CALL ResInvert -.PrintFileL3 LD HL,SetInvert - PUSH HL - LD DE,PrintFileR - jr .FunctResident - -.DiskInfo: CALL ResInvert -.DiskInfoL4: LD DE,DiskInfoR - jr .FunctResident - -.SystemInfo: LD DE,SystemInfoR - jr .FunctResident - -.Version: LD DE,VersionR - jr .FunctResident - -.QSearch: LD DE,QSearchR - jr .FunctResident - - IF TREE_REZID -.TestTree LD DE,TestTreeR - jr .FunctResident - -.TestTreeBeg LD DE,TestTreeR.TestTreeBeg - jr .FunctResident - -.ReadTree LD DE,ReadTreeR - jr .FunctResident - -.MakeTreePath LD DE,MakeTreePathR - jr .FunctResident - -.FindTreeDIR LD DE,FindTreeDIRR - jr .FunctResident - ENDIF - -.MarkFile: LD DE,MarkFileR -; resident 3 -.HelpResident: LD A,(RAMPAGES.FNREZ3) - LD C,WINSP.CPU1 - JP Resident - - IF MARK_DIR -.CountingDir LD DE,CountingDirR - JR .HelpResident - -.MkdirsDst LD DE,MkdirsDstR - JR .HelpResident - ENDIF - -.UnMarkGroup: LD DE,UnMarkGroupR - jr .HelpResident - -.UnMarkGroupN: LD DE,UnMarkGroupRN - jr .HelpResident - -.MarkGroup: LD DE,MarkGroupR - jr .HelpResident - -.MarkGroupN: LD DE,MarkGroupRN - jr .HelpResident - -.SelectAll: LD DE,SelectAllR - jr .HelpResident - -.SelectAllN: LD DE,SelectAllRN - jr .HelpResident - -.UnSelectAll: LD DE,UnSelectAllR - jr .HelpResident - -.UnSelectAllN: LD DE,UnSelectAllRN - jr .HelpResident - -.InvertSelect: LD DE,InvertSelectR - jr .HelpResident - -.InvertSelectN: LD DE,InvertSelectRN - jr .HelpResident - include fnmenu.a80 include fninit.a80 include fndosline.a80 @@ -472,20 +504,22 @@ RESIDENT END_BLOCK_1: DEPHASE ; BASE_ADDR +; ==============resident 2============== PHASE 0x4000 START_BLOCK_2 include rez2_fnfunct.a80 - include rez2_fnmisc.a80 include rez2_fnsearch.a80 include rez2_fnconfig.a80 include rez2_fnerror.a80 - include rez2_fntab1.a80 + include rez2_fntab.a80 IF TREE_REZID include fntree.a80 ENDIF END_BLOCK_2: DEPHASE ; 0x4000 +; ==============resident 2============== +; ==============fonts============== PHASE 0xC000 ; MAIN.FNFONT START_BLOCK_4 @@ -496,57 +530,41 @@ IFFFONT_RAW_END END_BLOCK_4: DEPHASE ; 0xC000 +; ==============fonts============== +; ==============resident 3============== PHASE 0x4000 ; MAIN.FNREZ3 START_BLOCK_3 include rez3_fnnext.a80 include rez3_fnmark.a80 + include rez3_fnmisc.a80 + include rez3_fntab.a80 + ; буфера чтобы память не занимали в EXE файле - INIT_VAR 0x8000 ; с конца страницы - MINUSVAR fnedit_ext, WorkBuffer_Size ;times 0x400 db 0 - MINUSVAR fnview_ext, WorkBuffer_Size ;times 0x400 db 0 - MINUSVAR fn_ext, WorkBuffer_Size ;times 0x400 db 0 - MINUSVAR DOShistory, 0x200 ;times 0x200 db 0 +BUFFERS + _INIT_VAR 0x8000 ; с конца страницы + _MINUSVAR .DOShistory, 0x200 ;times 0x200 db 0 - IFDEF ENABLE.HELP -WINSP_CPU EQU WINSP.CPU3 ; окно проецирования -WINSP_ADR EQU 0xC000 ; адрес окна + _MINUSVAR .fnedit_ext, WorkBuffer_Size ;times 0x400 db 0 + _MINUSVAR .fnview_ext, WorkBuffer_Size ;times 0x400 db 0 + _MINUSVAR .fn_ext, WorkBuffer_Size ;times 0x400 db 0 - include plugins/help/help.a80 -HelpText: include plugins/help/help_t.a80 -HelpTextEnd: - ENDIF + _MINUSVAR .OLDPATH, 0x100 ; сохраненный текущий путь + _MINUSVAR .CURRPATHSRC, 0x100 ; временной текущий путь источника + _MINUSVAR .CURRPATHDST, 0x100 ; временной текущий путь приемника + _MINUSVAR .FINDBUF, 0x100 ; временный буфер поиска + _MINUSVAR .LEVEL_DIR, BYTE ; текущий уровень директории + _MINUSVAR .ENDPATHSRC, WORD ; адрес хвоста пути источника + _MINUSVAR .ENDPATHDST, WORD ; адрес хвоста пути приемника + _MINUSVAR .CURR_DIRNAME, WORD ; текущий адрес в пути END_BLOCK_3: DEPHASE ; 0x4000 - - IFDEF ENABLE.VIEW -; MAIN.FNVIEW -START_BLOCK_VIEWER - PHASE 0xC000 - include plugins/fnviewer/fviewer.a80 - DEPHASE ; 0xC000 -END_BLOCK_VIEWER - ENDIF - - IFDEF ENABLE.EDIT -; MAIN.FNEDIT -START_BLOCK_EDITOR - PHASE 0xC000 - include plugins/fneditor/feditor.a80 - DEPHASE ; 0xC000 -END_BLOCK_EDITOR - ENDIF +; ==============resident 3============== ; чисто для отладки BLOCK1_SIZE EQU END_BLOCK_1 - START_BLOCK_1 ; основной код BLOCK2_SIZE EQU END_BLOCK_2 - START_BLOCK_2 ; резидент 2 BLOCK3_SIZE EQU END_BLOCK_3 - START_BLOCK_3 ; резидент 3 - IFDEF ENABLE.EDIT -EDITOR_SIZE EQU END_BLOCK_EDITOR - START_BLOCK_EDITOR ; редактор - ENDIF - IFDEF ENABLE.VIEW -VIEWER_SIZE EQU END_BLOCK_VIEWER - START_BLOCK_VIEWER ; вьювер - ENDIF SORT_SIZE EQU END_SORT - START_SORT ; сортировщик TREE_SIZE EQU END_TREE - START_TREE ; работа с деревом diff --git a/fnmenu.a80 b/fnmenu.a80 index c6e2ab0..4e1d50c 100644 --- a/fnmenu.a80 +++ b/fnmenu.a80 @@ -1,10 +1,10 @@ -; LAST UPDATE: 31.07.2025 savelij +; LAST UPDATE: 14.08.2025 savelij ;[]==========================================================[] PullDown: CALL ResInvert CALL SetPullInvert -PullLoop: LD IX,PullTab +PullLoop: LD IX,MAINTAB.PullTab CALL CheckCoordsMouse SPDSS DSSF.SCANKEY JR Z,PullLoop @@ -89,7 +89,7 @@ PullInvert: LD L,A ADD HL,HL ; *4 ADD HL,HL ; *8 ADD HL,HL ; *16 - LD BC,PullTab + LD BC,MAINTAB.PullTab ADD HL,BC PUSH HL POP IX @@ -141,7 +141,7 @@ MenuFile: CALL ResInvert W_TEXT 16,40,COLORP.HIGHGRAY,"Exit" W_TEXT 100,40,COLORP.HIGHGRAY,"F10" W_END - LD HL,FileTab + LD HL,MAINTAB.FileTab LD BC,3 JP MenuWork @@ -162,7 +162,7 @@ MenuSelect: CALL ResInvert W_TEXT 16,62,COLORP.HIGHGRAY,"Invert selection" W_TEXT 112,62,COLORP.HIGHGRAY,"*" W_END - LD HL,SelectTab + LD HL,MAINTAB.SelectTab LD BC,1 << 8 | 5 JP MenuWork @@ -186,7 +186,7 @@ MenuOption: CALL ResInvert W_TEXT 16,54,COLORP.HIGHGRAY,"Plugins..." ; 03 ENDIF W_END - LD HL,OptionTab + LD HL,MAINTAB.OptionTab IF PLUGS_ENABLE LD BC,2 << 8 | 4 ELSE @@ -326,7 +326,7 @@ MenuView: CALL ResInvert W_TEXT 110,172,COLORP.HIGHGRAY,"\xFE CTRL+F7" .sort5 EQU $ - STRLEN("v CTRL+F7v") W_END - LD HL,ViewTab + LD HL,MAINTAB.ViewTab LD BC,3 << 8 | 12 JP MenuWork @@ -338,7 +338,7 @@ MenuConfig: CALL ResInvert W_MAIN 174,26,96,20 W_TEXT 16,6,COLORP.HIGHGRAY,"Setup..." W_END - LD HL,ConfigTab + LD HL,MAINTAB.ConfigTab LD BC,4 << 8 | 1 JP MenuWork @@ -350,7 +350,7 @@ MenuAbout: CALL ResInvert W_MAIN 222,26,112,20 W_TEXT 16,6,COLORP.HIGHGRAY,"Version..." W_END - LD HL,AboutTab + LD HL,MAINTAB.AboutTab LD BC,5 << 8 | 1 ; HL - адрес таблицы активных зон ; B - текущий пункт меню @@ -804,7 +804,7 @@ NewFilter: CALL ResInvert NEG LD (FiltLen),A LD IX,FilterStr - LD HL,FilterTab + LD HL,MAINTAB.FilterTab CALL InputLine WINDOWCLOSE RET C @@ -855,7 +855,7 @@ LeftDrive: CALL ResInvert W_TEXT 86,3,COLORI.WHITE,"Left drive" W_END LD HL,LeftTab - LD DE,DriveTab + LD DE,MAINTAB.DriveTab LD BC,0x0020 LDIR LD IX,LeftPanel @@ -872,7 +872,7 @@ RightDrive: CALL ResInvert W_TEXT 86,3,COLORI.WHITE,"Right drive" W_END LD HL,RightTab - LD DE,DriveTab + LD DE,MAINTAB.DriveTab LD BC,0x0020 LDIR LD IX,RightPanel @@ -885,7 +885,7 @@ RightTab: DEFW 0x0000,0x0160,0x0000,0x0100,0x20,0x0000,DriveExit,0x0000 ChangeDrv: PUSH IY PUSH IX POP IY - LD IX,BegDrive + LD IX,MAINTAB.BegDrive LD A,(NUM_DEVICES) ADD A,A LD C,A @@ -948,7 +948,7 @@ ChangeDrv: PUSH IY SUB 'A' LD (CurDrive),A CALL SetDriveInv -DriveLoop: LD IX,DriveTab +DriveLoop: LD IX,MAINTAB.DriveTab CALL CheckCoordsMouse SPDSS DSSF.SCANKEY JR Z,DriveLoop @@ -1016,7 +1016,7 @@ DriveRight: LD A,(NUM_DEVICES) LD (CurDrive),A JP SetDriveInv -DriveMouse: LD IX,BegDrive +DriveMouse: LD IX,MAINTAB.BegDrive LD C,(IX+0x00) LD B,(IX+0x01) OR A @@ -1074,7 +1074,7 @@ DriveInvert: LD L,A ADD HL,HL ADD HL,HL ADD HL,HL - LD BC,BegDrive + LD BC,MAINTAB.BegDrive ADD HL,BC PUSH HL POP IX diff --git a/fnsort.a80 b/fnsort.a80 index 06c7fc7..3735944 100644 --- a/fnsort.a80 +++ b/fnsort.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 31.07.2025 savelij +; LAST UPDATE: 03.08.2025 savelij ;[]----------------------------------------------------------[] ReadDIR BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) @@ -390,7 +390,7 @@ SortDIR LD A,(RAMPAGES.RIGHTPANEL) .L1 SETPORT WINSP.CPU1,,0 - LD A,(RAMPAGES.BuffPg3) + LD A,(RAMPAGES.BuffPg4) SETPORT WINSP.CPU3,,0 LD HL,CPU3 LD (EndSort),HL @@ -486,7 +486,7 @@ SortDIR INC HL DJNZ .L3 GETPORT WINSP.CPU1 - LD (RAMPAGES.BuffPg3),A + LD (RAMPAGES.BuffPg4),A GETPORT WINSP.CPU3 BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) LD HL,RAMPAGES.LEFTPANEL diff --git a/fnsys.a80 b/fnsys.a80 index 804e4f4..ae2e477 100644 --- a/fnsys.a80 +++ b/fnsys.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 02.08.2025 savelij +; LAST UPDATE: 03.08.2025 savelij ;[]-----------------------------------------------------------[] ; Процедура умножения (8*8bit) @@ -252,23 +252,23 @@ ConvertNumbers_40b: LD BC,0x4876 EXX ld bc,0xE800 - ; E':BC':BC = 100,000,000,000 +; E':BC':BC = 100,000,000,000 call ConNumb40 exx ld e,0x02 ld bc,0x540B exx ld bc,0xE400 - ; E':BC':BC = 10,000,000,000 +; E':BC':BC = 10,000,000,000 CALL ConNumb40 exx ld e,0x00 ld bc,0x3B9A exx ld bc,0xCA00 - ; E':BC':BC = 1,000,000,000 +; E':BC':BC = 1,000,000,000 CALL ConNumb40 - ; E':BC':BC = 100,000,000 +; E':BC':BC = 100,000,000 CALL ConvNumTxt32_Shared.skip_1 POP IX RET @@ -689,8 +689,12 @@ SkipWord: ld b,0x20 ; HL' - X позиция вывода даты ; DE' - Y позиция вывода даты ; B' - цвет вывода даты +; A - формат вывода месяца в дате +; 1 - месяц выводится числом +; 2 - месяц выводится текстом, +; число выводится без ведущего нуля CMOSPrintDateTime: - EX AF,AF' + LD (CMOSpos.CMOSOut),A LD (CMOSpos.posXtime),HL LD (CMOSpos.posYtime),DE LD A,B @@ -701,35 +705,12 @@ CMOSPrintDateTime: LD (CMOSPrint),A LD (CMOSpos.Time),HL LD (CMOSpos.Time + 2),A -; LD (CMOSpos.Date),HL -; LD (CMOSpos.Date + 2),A -; LD HL,CMOSpos.TimeTXT -; LD DE,CMOSpos.DateTXT -; LD A,'0' -; LD B,0x03 -;.L1 LD (HL),A -; INC HL -; LD (HL),A -; INC HL -; INC HL -; LD (DE),A -; INC DE -; LD (DE),A -; INC DE -; INC DE -; DJNZ .L1 - EX AF,AF' - LD (CMOSpos.CMOSOut),A - OR A - JR Z,TestCMOS - EXX + EXX LD (CMOSpos.posXDate),HL LD (CMOSpos.posYDate),DE LD A,B LD (CMOSpos.colorDate),A EXX -; JR TestCMOS - TestCMOS: LD A,(CMOSFlag) OR A RET Z @@ -752,7 +733,7 @@ TestCMOS: LD A,(CMOSFlag) JR NZ,.PrnCMOSTime LD A,(CMOSpos.Time + 2) CP B - JR Z,TCMOS1 + JR Z,.TCMOS1 .PrnCMOSTime: EX DE,HL LD (CMOSpos.Time),HL LD A,B @@ -771,28 +752,13 @@ TestCMOS: LD A,(CMOSFlag) LD BC,(CMOSpos.posYtime) LD A,(CMOSpos.colorTime) CALL PrintTxtLine_IFF -TCMOS1 POP IX +.TCMOS1 POP IX POP DE ; DE,IX восстановили день,месяц,год LD A,(CMOSpos.CMOSOut) OR A JP Z,TCMOSexit -; PUSH IX -; POP HL -; LD BC,1900 -; OR A -; SBC HL,BC -; LD B,L -; LD HL,(CMOSpos.Date) -; OR A -; SBC HL,DE -; JR NZ,.PrnCMOSData -; LD A,(CMOSpos.Date + 2) -; CP B -; JP Z,TCMOSexit -;.PrnCMOSData EX DE,HL LD (CMOSpos.Date),HL ; день,месяц -; LD A,B LD (CMOSpos.Date + 2),IX ; год LD A,(CMOSpos.CMOSOut) DEC A @@ -805,12 +771,8 @@ TCMOS1 POP IX LD A,L CALL Conv4CMOS INC DE -; LD A,(CMOSpos.Date + 2) LD HL,(CMOSpos.Date + 2) - CALL ConvertNumbers_16b;Conv4CMOS -; LD A,(CMOSpos.CMOSOut) -; DEC A -; JR NZ,.TCMOS2 + CALL ConvertNumbers_16b LD HL,CMOSpos.DateTXT LD DE,(CMOSpos.posXDate) LD BC,(CMOSpos.posYDate) @@ -828,9 +790,7 @@ TCMOS1 POP IX LD A,L DEC A ADD A,A -; LD L,A ADD A,A -; ADD A,L LD HL,Month ADD A,L LD L,A @@ -841,32 +801,11 @@ TCMOS1 POP IX .L2 LDI CP (HL) JR NZ,.L2 -; LD (DE),A -; INC DE LDI -; PUSH IX -; POP HL LD HL,(CMOSpos.Date + 2) CALL ConvertNumbers_16b SUB A LD (DE),A -; LD HL,(CMOSpos.posXDate) -; LD (CMOSclX),HL -; LD HL,(CMOSpos.posYDate) -; LD (CMOSclY),HL -; LD A,(CMOSpos.colorDate) -; AND 0xF0 -; RRCA -; RRCA -; RRCA -; RRCA -; LD (CMOScol),A -; MAKEWINDOW WINSUBOBJ.WOBIND -; W_FILL 0,0,76,8,COLORI.BLACK -; W_END -;CMOSclX EQU $ - 10 -;CMOSclY EQU $ - 8 -;CMOScol EQU $ - 2 LD HL,CMOSpos.DateT1 LD DE,(CMOSpos.posXDate) LD BC,(CMOSpos.posYDate) @@ -875,10 +814,6 @@ TCMOS1 POP IX TCMOSexit POP IX RET -;CMOSPrintOff: LD A,DateMonthFormat.Digit -; LD (CMOSPrint),A -; RET - Conv4CMOS: EX DE,HL LD BC,(('0' - 1) << 8) + 10 .L1 INC B @@ -937,7 +872,7 @@ PointerMouseClock: PUSH AF LD A,(RAMPAGES.FNFONT) SETPORT WINSP.CPU3,,0 - LD IX,CLOCK_BMP;ClockBMP + LD IX,CLOCK_BMP LD HL,14 << 8 + 9 LD DE,7 << 8 | 4 SPMOUSE MOUSEF.LOAD_IMAGE @@ -964,7 +899,7 @@ PointerMousePointer: PUSH AF LD A,(RAMPAGES.FNFONT) SETPORT WINSP.CPU3,,0 - LD IX,MOUSE_BMP;MouseBMP + LD IX,MOUSE_BMP LD HL,13 << 8 + 9 LD DE,0 SPMOUSE MOUSEF.LOAD_IMAGE diff --git a/fntab.a80 b/fntab.a80 index d50f330..4baef9c 100644 --- a/fntab.a80 +++ b/fntab.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 01.08.2025 savelij +; LAST UPDATE: 14.08.2025 savelij ;[]==========================================================[] ; Формат таблицы @@ -29,7 +29,10 @@ ; +0A 2 Адрес обработчика при не нажатом огне ; +0C 2 Адрес обработчика при нажатом огне (лев) ; +0E 2 Адрес обработчика при нажатом огне (прав) -FilePanelLeft DW 6, 40, 15, 26,%0000000000000000,0,MenuFile,0 + +MAINTAB +;[]==========================================================[] +.FilePanelLeft DW 6, 40, 15, 26,%0000000000000000,0,MenuFile,0 DW 40, 84, 15, 26,%0000000000000000,0,MenuSelect,0 DW 84,138, 15, 26,%0000000000000000,0,MenuOption,0 DW 138,174, 15, 26,%0000000000000000,0,MenuView,0 @@ -37,7 +40,7 @@ FilePanelLeft DW 6, 40, 15, 26,%0000000000000000,0,MenuFile,0 DW 222,262, 15, 26,%0000000000000000,0,MenuAbout,0 DW 324,636, 44,225,%0000000000000000,0,ChPanel,0 -PanelPlaceL DW 0, 0, 0, 0,%0000000000000000,0,0,0 +.PanelPlaceL DW 0, 0, 0, 0,%0000000000000000,0,0,0 DW 0, 0, 0, 0,%0000000000000000,0,0,0 DW 0, 0, 0, 0,%0000000000000000,0,0,0 DW 0, 0, 0, 0,%0000000000000000,0,0,0 @@ -52,7 +55,7 @@ PanelPlaceL DW 0, 0, 0, 0,%0000000000000000,0,0,0 DW 480,560,242,256,%0000000000000001,0,RESIDENT.DeleteFiles,0 DW 560,640,242,256,%0000000000000001,0,RESIDENT.Quit,0 -BgDISKl DW 6, 34, 30, 42,%0000000000000001,0,ChangeDriveL,0 ; A +.BgDISKl DW 6, 34, 30, 42,%0000000000000001,0,ChangeDriveL,0 ; A DW 326,354, 30, 42,%0000000000000001,0,ChangeDriveR,0 DW 34, 62, 30, 42,%0000000000000001,0,ChangeDriveL,0 ; B DW 354,382, 30, 42,%0000000000000001,0,ChangeDriveR,0 @@ -77,7 +80,7 @@ BgDISKl DW 6, 34, 30, 42,%0000000000000001,0,ChangeDriveL,0 ; A DW 0x8000 ;[]==========================================================[] -FilePanelRight DW 6, 40, 15, 26,%0000000000000000,0,MenuFile,0 +.FilePanelRight DW 6, 40, 15, 26,%0000000000000000,0,MenuFile,0 DW 40, 84, 15, 26,%0000000000000000,0,MenuSelect,0 DW 84,138, 15, 26,%0000000000000000,0,MenuOption,0 DW 138,174, 15, 26,%0000000000000000,0,MenuView,0 @@ -85,7 +88,7 @@ FilePanelRight DW 6, 40, 15, 26,%0000000000000000,0,MenuFile,0 DW 222,262, 15, 26,%0000000000000000,0,MenuAbout,0 DW 4,316, 44,225,%0000000000000000,0,ChPanel,0 -PanelPlaceR DW 0, 0, 0, 0,%0000000000000000,0,0,0 +.PanelPlaceR DW 0, 0, 0, 0,%0000000000000000,0,0,0 DW 0, 0, 0, 0,%0000000000000000,0,0,0 DW 0, 0, 0, 0,%0000000000000000,0,0,0 DW 0, 0, 0, 0,%0000000000000000,0,0,0 @@ -100,7 +103,7 @@ PanelPlaceR DW 0, 0, 0, 0,%0000000000000000,0,0,0 DW 480,560,242,256,%0000000000000001,0,RESIDENT.DeleteFiles,0 DW 560,640,242,256,%0000000000000001,0,RESIDENT.Quit,0 -BgDISKr DW 6, 34, 30, 42,%0000000000000001,0,ChangeDriveL,0 ; A +.BgDISKr DW 6, 34, 30, 42,%0000000000000001,0,ChangeDriveL,0 ; A DW 326,354, 30, 42,%0000000000000001,0,ChangeDriveR,0 DW 34, 62, 30, 42,%0000000000000001,0,ChangeDriveL,0 ; B DW 354,382, 30, 42,%0000000000000001,0,ChangeDriveR,0 @@ -125,7 +128,7 @@ BgDISKr DW 6, 34, 30, 42,%0000000000000001,0,ChangeDriveL,0 ; A DW 0x8000 ;[]==========================================================[] -FileTab DW 8,160, 29, 43,%0000000100100100,0,RESIDENT.FileInfoL2,0 +.FileTab DW 8,160, 29, 43,%0000000100100100,0,RESIDENT.FileInfoL2,0 DW 8,160, 43, 57,%0000000100100100,0,RESIDENT.PrintFileL3,0 DW 8,160, 63, 77,%0000000100100100,0,RESIDENT.QuitL1,0 DW 6, 40, 15, 26,%0000000100101000,0,MenuExit,0 @@ -140,7 +143,7 @@ FileTab DW 8,160, 29, 43,%0000000100100100,0,RESIDENT.FileInfoL2,0 DW 164,640, 0,256,%0000000100100000,0,MenuExit,0 DW 0x8000 -SelectTab DW 44,196, 29, 43,%0000000100100100,0,RESIDENT.MarkGroupN,0 +.SelectTab DW 44,196, 29, 43,%0000000100100100,0,RESIDENT.MarkGroupN,0 DW 44,196, 43, 57,%0000000100100100,0,RESIDENT.UnMarkGroupN,0 DW 44,196, 57, 71,%0000000100100100,0,RESIDENT.SelectAllN,0 DW 44,196, 71, 85,%0000000100100100,0,RESIDENT.UnSelectAllN,0 @@ -158,7 +161,7 @@ SelectTab DW 44,196, 29, 43,%0000000100100100,0,RESIDENT.MarkGroupN,0 DW 0x8000 ; подменю "Options" -OptionTab DW 88,288, 29, 43,%0000000100100100,0,RefreshTree,0 ; Options->Refresh tree +.OptionTab DW 88,288, 29, 43,%0000000100100100,0,RefreshTree,0 ; Options->Refresh tree DW 88,288, 43, 57,%0000000100100100,0,RESIDENT.DiskInfoL4,0 ; Options->Disk info DW 88,288, 63, 77,%0000000100100100,0,RESIDENT.SystemInfo,0 ; Options->System information IF PLUGS_ENABLE @@ -177,7 +180,7 @@ OptionTab DW 88,288, 29, 43,%0000000100100100,0,RefreshTree,0 ; Options->Refres DW 0x8000 ; подменю "View" -ViewTab DW 142,324, 29, 43,%0000000100100100,0,ChView1,0 +.ViewTab DW 142,324, 29, 43,%0000000100100100,0,ChView1,0 DW 142,324, 43, 57,%0000000100100100,0,ChView2,0 DW 142,324, 57, 71,%0000000100100100,0,ChView3,0 DW 142,324, 77, 91,%0000000100100100,0,ChFilt1,0 @@ -201,7 +204,7 @@ ViewTab DW 142,324, 29, 43,%0000000100100100,0,ChView1,0 DW 330,640, 0,256,%0000000101100000,0,MenuExit,0 DW 0x8000 -ConfigTab DW 178,266, 29, 43,%0000000100100100,0,RESIDENT.Setup,0 +.ConfigTab DW 178,266, 29, 43,%0000000100100100,0,RESIDENT.Setup,0 DW 6, 40, 15, 26,%0000000010010000,MenuFile.L2,0,0 DW 40, 84, 15, 26,%0000000010010000,MenuSelect.L2,0,0 DW 84,138, 15, 26,%0000000010010000,MenuOption.L2,0,0 @@ -214,7 +217,7 @@ ConfigTab DW 178,266, 29, 43,%0000000100100100,0,RESIDENT.Setup,0 DW 270,640, 0,256,%0000000100100000,0,MenuExit,0 DW 0x8000 -AboutTab DW 226,330, 29, 43,%0000000100100100,0,RESIDENT.Version,0 +.AboutTab DW 226,330, 29, 43,%0000000100100100,0,RESIDENT.Version,0 DW 6, 40, 15, 26,%0000000010010000,MenuFile.L2,0,0 DW 40, 84, 15, 26,%0000000010010000,MenuSelect.L2,0,0 DW 84,138, 15, 26,%0000000010010000,MenuOption.L2,0,0 @@ -227,7 +230,7 @@ AboutTab DW 226,330, 29, 43,%0000000100100100,0,RESIDENT.Version,0 DW 334,640, 0,256,%0000000100100000,0,MenuExit,0 DW 0x8000 -PullTab DW 6, 40, 15, 26,%0000000000100000,0,MFile,0 +.PullTab DW 6, 40, 15, 26,%0000000000100000,0,MFile,0 DW 40, 84, 15, 26,%0000000000100000,0,MSelect,0 DW 84,138, 15, 26,%0000000000100000,0,MOption,0 DW 138,174, 15, 26,%0000000000100000,0,MView,0 @@ -240,7 +243,7 @@ PullTab DW 6, 40, 15, 26,%0000000000100000,0,MFile,0 DW 0x8000 ;[]==========================================================[] -FilterTab DW 240,312,123,137,%0000000000000001,0,InputLine.InputLineExitOk,0 +.FilterTab DW 240,312,123,137,%0000000000000001,0,InputLine.InputLineExitOk,0 DW 328,400,123,137,%0000000000000001,0,InputLine.InputLineExitCancel,0 DW 0,208, 0,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 DW 432,640, 0,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 @@ -248,21 +251,13 @@ FilterTab DW 240,312,123,137,%0000000000000001,0,InputLine.InputLineExitOk,0 DW 0,640,143,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 DW 0x8000 -SMaskTab DW 240,312,123,137,%0000000000000001,0,InputLine.InputLineExitOk,0 - DW 328,400,123,137,%0000000000000001,0,InputLine.InputLineExitCancel,0 - DW 0,208, 0,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 - DW 432,640, 0,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 - DW 0,640, 0, 81,%0000000000000000,0,InputLine.InputLineExitCancel,0 - DW 0,640,143,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 - DW 0x8000 - -DOSTab DW 0,256, 0,256,%0000000000000000,0,DOSLnExtC,0 +.DOSTab DW 0,256, 0,256,%0000000000000000,0,DOSLnExtC,0 DW 636,640, 0,256,%0000000000000000,0,DOSLnExtC,0 DW 0,640, 0,229,%0000000000000000,0,DOSLnExtC,0 DW 0,640,239,256,%0000000000000000,0,DOSLnExtC,0 DW 0x8000 -ViewEditTab DW 240,312,123,137,%0000000000000001,0,InputLine.InputLineExitOk,0 +.ViewEditTab DW 240,312,123,137,%0000000000000001,0,InputLine.InputLineExitOk,0 DW 328,400,123,137,%0000000000000001,0,InputLine.InputLineExitCancel,0 DW 0,200, 0,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 DW 440,640, 0,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 @@ -271,12 +266,12 @@ ViewEditTab DW 240,312,123,137,%0000000000000001,0,InputLine.InputLineExitOk,0 DW 0x8000 ;[]==========================================================[] -DriveTab DW 0, 0, 0, 0,%0000000000100000,0,DriveExit,0 +.DriveTab DW 0, 0, 0, 0,%0000000000100000,0,DriveExit,0 DW 0, 0, 0, 0,%0000000000100000,0,DriveExit,0 DW 0,640, 0, 92,%0000000000100000,0,DriveExit,0 DW 0,640,128,256,%0000000000100000,0,DriveExit,0 -BegDrive DW 0, 0,110,121,%0000000000100000,0,DriveMouse,0 +.BegDrive DW 0, 0,110,121,%0000000000100000,0,DriveMouse,0 DW 0, 0,110,121,%0000000000100000,0,DriveMouse,0 DW 0, 0,110,121,%0000000000100000,0,DriveMouse,0 DW 0, 0,110,121,%0000000000100000,0,DriveMouse,0 @@ -291,7 +286,7 @@ BegDrive DW 0, 0,110,121,%0000000000100000,0,DriveMouse,0 IF PLUGS_ENABLE ; области выбора в меню плагинов -PluginsTab: DW 4, 13,100, 10,%0000000000000000,0,SelectPlugin.NUM00,0 +.PluginsTab: DW 4, 13,100, 10,%0000000000000000,0,SelectPlugin.NUM00,0 DW 4, 23,100, 10,%0000000000000000,0,SelectPlugin.NUM01,0 DW 4, 33,100, 10,%0000000000000000,0,SelectPlugin.NUM02,0 DW 4, 43,100, 10,%0000000000000000,0,SelectPlugin.NUM03,0 @@ -307,7 +302,7 @@ PluginsTab: DW 4, 13,100, 10,%0000000000000000,0,SelectPlugin.NUM00,0 ENDIF ;[]==========================================================[] -;Формат таблицы +; Формат таблицы ; +00 2 ASCII + SCANCOD ; +02 2 Execute program HOTKEYS diff --git a/fntree.a80 b/fntree.a80 index b173de9..ee003be 100644 --- a/fntree.a80 +++ b/fntree.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 31.07.2025 savelij +; LAST UPDATE: 03.08.2025 savelij MAX_LEVEL_DIR EQU 21 @@ -28,7 +28,7 @@ ReadTreeR PUSH IY GETPORT WINSP.CPU3 LD B,A PUSH BC - LD A,(RAMPAGES.BuffPg3) + LD A,(RAMPAGES.BuffPg4) SETPORT WINSP.CPU1,,0 BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) LD A,(RAMPAGES.LEFTPANEL) @@ -182,7 +182,7 @@ ReadTreeR PUSH IY SET VIEWFLAG.B_SHORTTREE,(IY+PANEL.VIEWFLAG) .L4 GETPORT WINSP.CPU3 - LD (RAMPAGES.BuffPg3),A + LD (RAMPAGES.BuffPg4),A GETPORT WINSP.CPU1 BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) LD HL,RAMPAGES.LEFTPANEL diff --git a/fnwork.a80 b/fnwork.a80 index 0db1930..7a4d737 100644 --- a/fnwork.a80 +++ b/fnwork.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 31.07.2025 savelij +; LAST UPDATE: 14.08.2025 savelij ;[]===========================================================[] CursUp LD A,(IY + PANEL.FILES_ALL) @@ -70,7 +70,7 @@ ScrlDn1 BIT VIEWFLAG.B_FULL,(IY + PANEL.VIEWFLAG) PUSH HL LDIR POP HL - LD DE,0x18*0x11 + LD DE,FileHDR.SIZE * NUM_FILES_PANEL ADD HL,DE LD E,IXL LD D,IXH @@ -84,7 +84,7 @@ ScrlDn1 BIT VIEWFLAG.B_FULL,(IY + PANEL.VIEWFLAG) PUSH HL LDIR POP HL - LD DE,0x18*0x11 + LD DE,FileHDR.SIZE * NUM_FILES_PANEL ADD HL,DE LD E,IXL LD D,IXH @@ -419,14 +419,14 @@ ScrlUp1 BIT VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG) PUSH HL LDIR POP HL - LD DE,0x18*0x11 + LD DE,FileHDR.SIZE * NUM_FILES_PANEL ADD HL,DE LD DE,WorkBuffer+0x10 LD C,0x0E PUSH HL LDIR POP HL - LD DE,0x18*0x11 + LD DE,FileHDR.SIZE * NUM_FILES_PANEL ADD HL,DE LD DE,WorkBuffer+0x20 LD C,0x0E @@ -1356,7 +1356,7 @@ ShowDSexit JP WaitUnpressMouse ;[]==========================================================[] -RunEXEfile: LD IX,fn_ext +RunEXEfile: LD IX,BUFFERS.fn_ext LD DE,PrevFile PUSH DE SUB A @@ -1894,7 +1894,7 @@ ViewFileSH: BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) W_FILL 88,23,130,10,COLORI.WHITE W_END LD IX,ViewStr - LD HL,ViewEditTab + LD HL,MAINTAB.ViewEditTab CALL InputLine WINDOWCLOSE RET C @@ -1938,14 +1938,12 @@ StViewFile: LD A,0x01 LD A,(IY+PANEL.FILES_ALL) OR (IY+PANEL.FILES_ALL + 1) RET Z - IFNDEF ENABLE.VIEW ; попытка загрузки плагина CALL LOADFLX4RUN DZ FILENAME.VIEW_FLX ; вывод ошибки "Плагин не найден" LD A,FNinternal.PlugNotFound JP C,DOSError - ENDIF GETPORT WINSP.CPU1 PUSH AF BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) @@ -1991,7 +1989,7 @@ StViewFile: LD A,0x01 VFlag: EQU $-1 OR A JR NZ,View1 -View: LD IX,fnview_ext +View: LD IX,BUFFERS.fnview_ext LD DE,PrevFile CALL TestEXT RET NC @@ -2021,12 +2019,7 @@ View1: CALL ResInvert LD C,WINSP.CPU1 ; окно запуска с адреса 0x4000 JR NZ,.L4 LD C,WINSP.CPU3 ; окно запуска с адреса 0xC000 -.L4 - IFDEF ENABLE.VIEW - LD A,(RAMPAGES.FNVIEW) - ELSE - LD A,(RAMPAGES.FLX) - ENDIF +.L4 LD A,(RAMPAGES.FLX) CALL Resident LD HL,0 LD (RunFLX.FLXexec),HL ; при выходе из плагина глушим адрес загрузки @@ -2061,7 +2054,7 @@ EditFileSH: BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) W_FILL 88,23,130,10,COLORI.WHITE W_END LD IX,EditStr - LD HL,ViewEditTab + LD HL,MAINTAB.ViewEditTab CALL InputLine WINDOWCLOSE RET C @@ -2105,14 +2098,12 @@ StEditFile: LD A,0x01 LD A,(IY+PANEL.FILES_ALL) OR (IY+PANEL.FILES_ALL + 1) RET Z - IFNDEF ENABLE.VIEW ; попытка загрузки плагина CALL LOADFLX4RUN DZ FILENAME.EDIT_FLX ; вывод ошибки "Плагин не найден" LD A,FNinternal.PlugNotFound JP C,DOSError - ENDIF GETPORT WINSP.CPU1 PUSH AF BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) @@ -2158,7 +2149,7 @@ StEditFile: LD A,0x01 EFlag: EQU $-1 OR A JR NZ,Edit1 -Edit: LD IX,fnedit_ext +Edit: LD IX,BUFFERS.fnedit_ext LD DE,PrevFile CALL TestEXT RET NC @@ -2188,12 +2179,7 @@ Edit1: CALL ResInvert LD C,WINSP.CPU1 ; окно запуска с адреса 0x4000 JR NZ,.L4 LD C,WINSP.CPU3 ; окно запуска с адреса 0xC000 -.L4 - IFDEF ENABLE.VIEW - LD A,(RAMPAGES.FNEDIT) - ELSE - LD A,(RAMPAGES.FLX) - ENDIF +.L4 LD A,(RAMPAGES.FLX) CALL Resident LD HL,0 LD (RunFLX.FLXexec),HL ; при выходе из плагина глушим адрес загрузки diff --git a/plugins/fneditor/feditor.a80 b/plugins/fneditor/feditor.a80 index 0f03580..f0027e2 100644 --- a/plugins/fneditor/feditor.a80 +++ b/plugins/fneditor/feditor.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 02.08.2025 savelij +; LAST UPDATE: 03.08.2025 savelij ENABLE_CODEPAGE EQU 0 @@ -391,15 +391,15 @@ FEInitScreen LD BC,0x0011 LD A,COLORP.HIGHGRAY + COLORI.BLACK CALL JUMPS.PrintPathLeft - LD HL,508 + LD HL,520 LD DE,3 LD B,COLORP.BLACK + COLORI.HIGHGRAY EXX - LD HL,558 + LD HL,568 LD DE,3 LD B,COLORP.BLACK + COLORI.HIGHGRAY EXX - LD A,DateMonthFormat.Text + LD A,DateMonthFormat.Digit JP JUMPS.CMOSPrintDateTime ;[]==========================================================[] diff --git a/plugins/fnviewer/fviewer.a80 b/plugins/fnviewer/fviewer.a80 index badac46..e9237b4 100644 --- a/plugins/fnviewer/fviewer.a80 +++ b/plugins/fnviewer/fviewer.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 02.08.2025 savelij +; LAST UPDATE: 03.08.2025 savelij LineBuffer := WorkBuffer+0x300 @@ -486,10 +486,10 @@ FVFAttrib EQU $ - STRLEN(" ") - 1 W_END SPDSS DSSF.CURDISK LD HL,WorkBuffer - ADD A,"A" + ADD A,'A' LD (HL),A INC HL - LD (HL),":" + LD (HL),':' INC HL PUSH HL SPDSS DSSF.CURDIR @@ -512,21 +512,21 @@ FVFAttrib EQU $ - STRLEN(" ") - 1 CP (HL) JR NZ,.L6 LD (DE),A - LD IX,0x0200 + LD IX,512 LD HL,WorkBuffer - LD DE,0x0034 - LD BC,0x0011 + LD DE,52 + LD BC,17 LD A,COLORP.HIGHGRAY + COLORI.BLACK CALL JUMPS.PrintPathLeft - LD HL,508 + LD HL,520 LD DE,3 LD B,COLORP.BLACK + COLORI.HIGHGRAY EXX - LD HL,558 + LD HL,568 LD DE,3 LD B,COLORP.BLACK + COLORI.HIGHGRAY EXX - LD A,DateMonthFormat.Text + LD A,DateMonthFormat.Digit JP JUMPS.CMOSPrintDateTime FVFAtributs DEFB "--ad-shr" diff --git a/readme.md b/readme.md index 9d93466..55c04a7 100644 --- a/readme.md +++ b/readme.md @@ -3,12 +3,14 @@ Flex Navigator ╨┤╨╗╤П ╨║╨╛╨╝╨┐╤М╤О╤В╨╡╤А╨░ Sprinter ╨б╨╛╨▒╤А╨░╨╜╨╜╤Л╨╡ ╤Д╨░╨╣╨╗╤Л ╨╖╨░╨▒╨╕╤А╨░╤В╤М ╨╕╨╖ ╨┐╨░╨┐╨║╨╕ fn -`FileEditor.flx 1.10:` -- ╤Г╤Б╤В╤А╨░╨╜╨╡╨╜╨╛ ╨┐╨╡╤А╨╡╨┐╤Г╤В╨░╨╜╨╜╤Л╨╡ ╨║╨╜╨╛╨┐╨║╨╕ ╨┤╨╗╤П ╨╜╨░╨╢╨░╤В╨╕╨╣ ╨╝╤Л╤И╤М╤О ╨┤╨╗╤П F7 ╨╕ F9. +`FlexNavigator 1.16.03` +- MISC ╤Д╤Г╨╜╨║╤Ж╨╕╨╕ ╨┐╨╡╤А╨╡╨╜╨╡╤Б╨╡╨╜╤Л ╨╕╨╖ 2 ╤А╨╡╨╖╨╕╨┤╨╡╨╜╤В╨░ ╨▓ 3. +- ╨┐╨╡╤А╨╡╤А╨░╤Б╨┐╤А╨╡╨┤╨╡╨╗╨╡╨╜╨╕╨╡ TAB ╤В╨░╨▒╨╗╨╕╤Ж. +- ╨▓ ╨╛╨┐╨╕╤Б╨░╨╜╨╕╨╡ Flex Navigator API ╨┤╨╛╨▒╨░╨▓╨╗╨╡╨╜╨╛ ╨╛╨┐╨╕╤Б╨░╨╜╨╕╨╡ ╨│╨╗╨╛╨▒╨░╨╗╤М╨╜╤Л╤Е + ╨┐╨╡╤А╨╡╨╝╨╡╨╜╨╜╤Л╤Е. -`FileViewer.flx 1.06:` -- ╨┤╨╛╨▒╨░╨▓╨╗╨╡╨╜╨╛ ╨┐╨╡╤А╨╡╨║╨╗╤О╤З╨╡╨╜╨╕╨╡ ╨║╨╛╨┤╨╕╤А╨╛╨▓╨║╨╕ ╨▓ ╤А╨╡╨╢╨╕╨╝╨╡ HEX ╨┐╤А╨╛╤Б╨╝╨╛╤В╤А╨░. +`FileViewer.flx 1.07` +- ╨╝╨╡╨╗╨║╨╛╨╡ ╨╕╤Б╨┐╤А╨░╨▓╨╗╨╡╨╜╨╕╨╡ ╨┐╨╛╨╖╨╕╤Ж╨╕╨╕ ╨▓╤Л╨▓╨╛╨┤╨░ ╨┤╨░╤В╤Л/╨▓╤А╨╡╨╝╨╡╨╜╨╕. -`FlexNavigaror 1.16.01:` -- ╨╕╤Б╨┐╤А╨░╨▓╨╗╨╡╨╜ ╨▓╤Л╨╗╨╡╤В ╨┐╤А╨╕ ╤Б╨╛╨╖╨┤╨░╨╜╨╕╨╕ ╨╜╨╛╨▓╨╛╨│╨╛ ╤Д╨░╨╣╨╗╨░ ╨┐╨╛ Shift+F4 ╨╕╨╗╨╕ ╨┐╤А╨╛╤Б╨╝╨╛╤В╤А ╤Б - ╨▓╨▓╨╛╨┤╨╛╨╝ ╨╕╨╝╨╡╨╜╨╕ ╨┐╨╛ Shift+F3, ╨┐╨╗╨░╨│╨╕╨╜ ╨▒╤Л╨╗ ╨╜╨╡ ╨╖╨░╨│╤А╤Г╨╢╨╡╨╜. +`FileEditor.flx 1.11` +- ╨╝╨╡╨╗╨║╨╛╨╡ ╨╕╤Б╨┐╤А╨░╨▓╨╗╨╡╨╜╨╕╨╡ ╨┐╨╛╨╖╨╕╤Ж╨╕╨╕ ╨▓╤Л╨▓╨╛╨┤╨░ ╨┤╨░╤В╤Л/╨▓╤А╨╡╨╝╨╡╨╜╨╕. diff --git a/rez2_fnconfig.a80 b/rez2_fnconfig.a80 index 19174a8..593db4c 100644 --- a/rez2_fnconfig.a80 +++ b/rez2_fnconfig.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 01.08.2025 savelij +; LAST UPDATE: 14.08.2025 savelij PALITRA.RESERV EQU PALETTE + 0x34 @@ -84,7 +84,7 @@ SaveFlg EQU $-2 LD IX,BarBlue CALL InitScrollBar CALL InitElement -SetupLoop LD IX,SetupTab +SetupLoop LD IX,REZ2TAB.SetupTab CALL CheckCoordsMouse SPDSS DSSF.SCANKEY JR Z,SetupLoop @@ -511,7 +511,7 @@ InputColor LD (ColorY),BC SUB LOW (ColText) LD (ColLen),A InpAg LD IX,ColorStr - LD HL,EmptyTab + LD HL,REZ2TAB.EmptyTab CALL InputLine POP DE POP HL diff --git a/rez2_fnfunct.a80 b/rez2_fnfunct.a80 index b4b20a8..ca4434d 100644 --- a/rez2_fnfunct.a80 +++ b/rez2_fnfunct.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 31.07.2025 savelij +; LAST UPDATE: 14.08.2025 savelij ;[]==========================================================[] CopyFilesR LD A,(IY + PANEL.FILES_ALL) @@ -11,7 +11,7 @@ CopyFilesR LD A,(IY + PANEL.FILES_ALL) LD A,(IY + PANEL.FILES_MARK) OR (IY + PANEL.FILES_MARK + 1) JP NZ,CopyMark ; есть помеченные файлы -; копирование файла/диры под курсором +; копирование файла/диры под курсором, без пометки GETPORT WINSP.CPU3 PUSH AF BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) @@ -35,12 +35,15 @@ CopyFilesR LD A,(IY + PANEL.FILES_ALL) ADD HL,DE ; *18 SET 6,H SET 7,H ; | 0xC000 - LD (AdrCopyFile),HL + LD (COPY.PathCurrFile),HL LD DE,WorkBuffer LD BC,FileHDR.SIZE LDIR POP AF SETPORT WINSP.CPU3,,0 + LD HL,CopyNextFile.FLAG_DIRCOPY + XOR A ; копировать только файлы + LD (HL),A BIT DIR.B_Dir,(IX + FileHDR.Attr) IF MARK_DIR JP NZ,COPY_DIR @@ -48,63 +51,48 @@ CopyFilesR LD A,(IY + PANEL.FILES_ALL) RET NZ ENDIF LD HL,0 - LD (CopyFiles),HL + LD (COPY.CopyFiles),HL LD L,(IX + FileHDR.SizeBytes) LD H,(IX + FileHDR.SizeBytes + 1) - LD (CopyBytes),HL + LD (COPY.CopyBytes),HL LD E,(IX + FileHDR.SizeBytes + 2) LD D,(IX + FileHDR.SizeBytes + 3) - LD (CopyBytes + 2),DE + LD (COPY.CopyBytes + 2),DE CALL ConvBytes2Pages JP CopyNxt IF MARK_DIR -; копирование диры со всем содержимым -COPY_DIR PUSH IX - PUSH IY - PUSH IX -; LD HL,(AdrCopyFile) ; адрес описателя измеряемой диры -; CALL RESIDENT.GetDirSize ; считаем и получаем размер в байтах -; EXX - CALL RESIDENT.CountingDir +; копирование диры со всем содержимым под курсором +COPY_DIR INC A + LD (HL),A ; копировать будем директориями + CALL RESIDENT.CountingDir ; измерение размера директории с файлами LD HL,JUMPS.FILES_BYTES - CALL GET_DWORD - POP HL ; адрес описателя - LD (CopyBytes),DE - LD (CopyBytes + 2),BC - PUSH DE - LD DE,FileHDR.SizeBytes - ADD HL,DE ; указатель на количество байт копирования - POP DE - CALL SET_DWORD ; занесли размер диры в байтах в описатель + LD DE,COPY.CopyBytes + LD BC,5 + LDIR ; забрали размер директории LD HL,0 - LD (CopyFiles),HL - EX DE,HL - LD D,B - LD E,C + LD (COPY.CopyFiles),HL ; количество уже скопированных файлов + CALL RESIDENT.InitCopyDirs ; инициализация путей откуда/куда + + LD HL,(COPY.CopyBytes) + LD DE,(COPY.CopyBytes + 2) CALL ConvBytes2Pages ; пересчет в количество страниц для копирования - - LD HL,(AdrCopyFile) ; адрес описателя копируемой диры - CALL RESIDENT.MkdirsDst ; создание папок на приемнике - - POP IY - POP IX - RET + JP CopyNxt ENDIF ; копирование помеченных файлов CopyMark LD L,(IY + PANEL.FILES_MARK) LD H,(IY + PANEL.FILES_MARK + 1) - LD (CopyFiles),HL + LD (COPY.CopyFiles),HL LD L,(IY + PANEL.BYTES_MARK) LD H,(IY + PANEL.BYTES_MARK + 1) - LD (CopyBytes),HL + LD (COPY.CopyBytes),HL LD L,(IY + PANEL.BYTES_MARK + 2) LD H,(IY + PANEL.BYTES_MARK + 3) - LD (CopyBytes + 2),HL + LD (COPY.CopyBytes + 2),HL ; [ ] fat32 LD A,(IY + PANEL.BYTES_MARK_H) - LD (CopyBytes + 4),A + LD (COPY.CopyBytes + 4),A GETPORT WINSP.CPU3 PUSH AF BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) @@ -118,7 +106,7 @@ CopyMark LD L,(IY + PANEL.FILES_MARK) .L2 ADD HL,BC BIT FileHDR.B_MARK,(HL) JR Z,.L2 - LD (AdrCopyFile),HL + LD (COPY.PathCurrFile),HL PUSH HL POP IX SUB A @@ -136,13 +124,15 @@ CopyLp0 BIT FileHDR.B_MARK,(IX + FileHDR.Flag) LD E,(IX + FileHDR.SizeBytes + 2) LD D,(IX + FileHDR.SizeBytes + 3) CALL ConvBytes2Pages - LD C,L - LD B,H - POP HL +; LD C,L +; LD B,H +; POP HL + POP BC ADD HL,BC - LD C,E - LD B,D - POP DE +; LD C,E +; LD B,D +; POP DE + POP BC EX DE,HL ADC HL,BC EX DE,HL @@ -197,7 +187,7 @@ CopyNxt LD IX,ProcessAll SUB C LD (PathLen),A LD IX,PathStr - LD HL,PathTab + LD HL,REZ2TAB.PathTab CALL InputLine WINDOWCLOSE RET C @@ -207,7 +197,7 @@ CopyNxt LD IX,ProcessAll PUSH IY SPDSS DSSF.INFOMEM POP IY - LD (FreeBanks),BC + LD (COPY.FreeBanks),BC LD A,B OR C LD A,ERR_DSS.NOT_ENOUGH_MEMORY @@ -225,16 +215,16 @@ CopyNxt LD IX,ProcessAll W_FILL 18,57,284,10,COLORI.WHITE W_END SUB A - LD (OverWriteFlg),A + LD (COPY.OverWriteFlg),A BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) LD HL,LeftPanel JR Z,.L4 LD HL,RightPanel .L4 LD BC,PANEL.CURR_PATH ADD HL,BC - LD (CopySrc),HL + LD (COPY.PathSrc),HL LD HL,CurPath - LD (CopyDst),HL + LD (COPY.PathDst),HL CALL PointerMouseClock PUSH IY GETPORT WINSP.CPU3 @@ -245,17 +235,25 @@ CopyNxt LD IX,ProcessAll LD A,(RAMPAGES.RIGHTPANEL) .L3 SETPORT WINSP.CPU3,,0 -; копирование файлов -CopyNextFile CALL PrnFromTo - LD IX,(AdrCopyFile) - LD L,(IX + FileHDR.SizeBytes) +; копирование файлов/директорий +CopyNextFile CALL PrintSrcDst + LD IX,(COPY.PathCurrFile) + IF MARK_DIR + BIT DIR.B_Dir,(IX + FileHDR.Attr) + JR Z,.CopyFile +; копирование директории + CALL RESIDENT.Add2ListDir ; добавление имени диры в список + JR CopyNextFile + ENDIF + +.CopyFile LD L,(IX + FileHDR.SizeBytes) LD H,(IX + FileHDR.SizeBytes + 1) LD E,(IX + FileHDR.SizeBytes + 2) LD D,(IX + FileHDR.SizeBytes + 3) - LD (ReadBytes),HL - LD (ReadBytes + 2),DE - LD (WriteBytes),HL - LD (WriteBytes + 2),DE + LD (COPY.CurrReadBytes),HL + LD (COPY.CurrReadBytes + 2),DE + LD (COPY.CurrWriteBytes),HL + LD (COPY.CurrWriteBytes + 2),DE CALL ConvBytes2Pages LD (.PagesLow),HL LD (.PagesHigh),DE @@ -270,7 +268,7 @@ CopyNextFile CALL PrnFromTo LD (IX + PROGRESSBAR.MAX_PAGES + 3),D CALL InitProgressBar CALL DrawProgressBar - LD HL,(FreeBanks) + LD HL,(COPY.FreeBanks) LD DE,0x0000 .PagesHigh EQU $-2 LD A,D @@ -285,56 +283,56 @@ CopyNextFile CALL PrnFromTo .CopyLp1 EX DE,HL .L1 LD B,E SPDSS DSSF.GETMEM - LD (MemID),A + LD (COPY.MemID),A LD HL,PagesList SPBIOS BIOSF.GETMEMBLKPAGES - LD HL,(CopySrc) ; Открываем файл источник + LD HL,(COPY.PathSrc) ; открываем файл источник SPDSS DSSF.CHDIR JP C,CopyError1 - LD HL,(AdrCopyFile) + LD HL,(COPY.PathCurrFile) INC HL LD DE,WorkBuffer PUSH DE CALL MakeDOSname POP HL - SPDSS DSSF.OPEN,,1 + SPDSS DSSF.OPEN,,FILEMODE.R ; открытие на чтение JP C,CopyError1 - LD (FHandleSrc),A - LD HL,(CopyDst) ; Открываем файл приемник + LD (COPY.FHandleSrc),A + LD HL,(COPY.PathDst) ; открываем файл приемник SPDSS DSSF.CHDIR JP C,CopyError2 - LD IX,(AdrCopyFile) - LD HL,(AdrCopyFile) + LD IX,(COPY.PathCurrFile) + LD HL,(COPY.PathCurrFile) INC HL LD DE,WorkBuffer PUSH DE CALL MakeDOSname POP HL - LD A,(OverWriteFlg) + LD A,(COPY.OverWriteFlg) OR A LD C,DSSF.CREAT_N JR Z,.L2 LD C,DSSF.CREATE .L2 LD A,(IX + FileHDR.Attr) - SPDSS - JR NC,CopyLp2 - CP 0x07 + SPDSS ; создание файла + JR NC,.CopyLp2 + CP ERR_DSS.FILE_EXISTS JP NZ,CopyError2 - CALL OverWrite -CopyLp2 LD (FHandleDst),A - LD HL,(ReadBytes) + CALL OverWrite ; файл существут, запрос на перезапись +.CopyLp2 LD (COPY.FHandleDst),A + LD HL,(COPY.CurrReadBytes) LD A,H OR L - LD HL,(ReadBytes + 2) + LD HL,(COPY.CurrReadBytes + 2) OR H OR L - JP Z,CloseFiles -ReadFile + JP Z,.CloseFiles +.ReadFile GETPORT WINSP.CPU3 PUSH AF LD HL,PagesList LD A,(HL) -ReadLp1 INC HL +.ReadLp1 INC HL PUSH HL SETPORT WINSP.CPU3,,0 SPDSS DSSF.SCANKEY @@ -342,8 +340,8 @@ ReadLp1 INC HL OR A SBC HL,DE JP Z,CopyBreak - LD HL,(ReadBytes) - LD DE,(ReadBytes + 2) + LD HL,(COPY.CurrReadBytes) + LD DE,(COPY.CurrReadBytes + 2) LD BC,0x4000 OR A SBC HL,BC @@ -351,40 +349,40 @@ ReadLp1 INC HL EX DE,HL SBC HL,BC EX DE,HL - JR C,ReadEnd - LD (ReadBytes),HL - LD (ReadBytes + 2),DE + JR C,.ReadEnd + LD (COPY.CurrReadBytes),HL + LD (COPY.CurrReadBytes + 2),DE LD HL,0xC000 LD DE,0x4000 - LD A,(FHandleSrc) + LD A,(COPY.FHandleSrc) SPDSS DSSF.READ CALL NextProcess POP HL LD A,(HL) CP 0xFF - JR NZ,ReadLp1 + JR NZ,.ReadLp1 POP AF SETPORT WINSP.CPU3,,0 - JR WriteFile + JR .WriteFile ; !FIXIT сделать так: -ReadEnd: LD HL,0xC000 - LD DE,(ReadBytes) +.ReadEnd: LD HL,0xC000 + LD DE,(COPY.CurrReadBytes) LD A,D OR E - JR Z,.L1 - LD A,(FHandleSrc) + JR Z,.L3 + LD A,(COPY.FHandleSrc) SPDSS DSSF.READ CALL NextProcess -.L1 POP HL +.L3 POP HL POP AF SETPORT WINSP.CPU3,,0 -WriteFile +.WriteFile GETPORT WINSP.CPU3 PUSH AF LD HL,PagesList LD A,(HL) -WriteL1 INC HL +.WriteL1 INC HL PUSH HL SETPORT WINSP.CPU3,,0 SPDSS DSSF.SCANKEY @@ -392,8 +390,8 @@ WriteL1 INC HL OR A SBC HL,DE JP Z,CopyBreak - LD HL,(WriteBytes) - LD DE,(WriteBytes + 2) + LD HL,(COPY.CurrWriteBytes) + LD DE,(COPY.CurrWriteBytes + 2) LD BC,0x4000 OR A SBC HL,BC @@ -401,98 +399,114 @@ WriteL1 INC HL EX DE,HL SBC HL,BC EX DE,HL - JR C,WriteEnd - LD (WriteBytes),HL - LD (WriteBytes + 2),DE + JR C,.WriteEnd + LD (COPY.CurrWriteBytes),HL + LD (COPY.CurrWriteBytes + 2),DE LD HL,0xC000 LD DE,0x4000 - LD A,(FHandleDst) + LD A,(COPY.FHandleDst) SPDSS DSSF.WRITE JP C,CopyError3 CALL NextProcess POP HL LD A,(HL) CP 0xFF - JR NZ,WriteL1 + JR NZ,.WriteL1 POP AF SETPORT WINSP.CPU3,,0 - LD HL,(ReadBytes) + LD HL,(COPY.CurrReadBytes) LD A,H OR L - LD HL,(ReadBytes + 2) + LD HL,(COPY.CurrReadBytes + 2) OR H OR L - JR Z,CloseFiles - JP ReadFile + JR Z,.CloseFiles + JP .ReadFile ; !FIXIT сделать так: -WriteEnd: LD HL,0xC000 - LD DE,(WriteBytes) +.WriteEnd: LD HL,0xC000 + LD DE,(COPY.CurrWriteBytes) LD A,D OR E - JR Z,.L1 - LD A,(FHandleDst) + JR Z,.L4 + LD A,(COPY.FHandleDst) SPDSS DSSF.WRITE JP C,CopyError3 CALL NextProcess -.L1 POP HL +.L4 POP HL POP AF SETPORT WINSP.CPU3,,0 -CloseFiles LD A,(FHandleSrc) +.CloseFiles LD A,(COPY.FHandleSrc) SPDSS DSSF.GET_D_T - LD A,(FHandleDst) + LD A,(COPY.FHandleDst) SPDSS DSSF.PUT_D_T - LD A,(FHandleDst) + LD A,(COPY.FHandleDst) SPDSS DSSF.CLOSE -CloseFile1 LD A,(FHandleSrc) +.CloseFile1 LD A,(COPY.FHandleSrc) SPDSS DSSF.CLOSE - LD A,(MemID) + LD A,(COPY.MemID) SPDSS DSSF.FREEMEM - LD IX,(AdrCopyFile) + LD IX,(COPY.PathCurrFile) RES FileHDR.B_MARK,(IX + FileHDR.Flag) - LD HL,(CopyBytes) + LD HL,(COPY.CopyBytes) LD E,(IX + FileHDR.SizeBytes) LD D,(IX + FileHDR.SizeBytes + 1) OR A SBC HL,DE - LD (CopyBytes),HL - LD HL,(CopyBytes+2) + LD (COPY.CopyBytes),HL + LD HL,(COPY.CopyBytes+2) LD E,(IX + FileHDR.SizeBytes + 2) LD D,(IX + FileHDR.SizeBytes + 3) SBC HL,DE - LD (CopyBytes+2),HL - LD HL,(CopyFiles) + LD (COPY.CopyBytes+2),HL + LD HL,(COPY.CopyFiles) LD A,H OR L - JR Z,CopyEnd + JR Z,CopyEnd ; файлы кончились? DEC HL - LD (CopyFiles),HL + LD (COPY.CopyFiles),HL LD A,H OR L - JR Z,CopyEnd - LD HL,(AdrCopyFile) + JR Z,CopyEnd ; файлы кончились? + LD HL,(COPY.PathCurrFile) LD DE,FileHDR.SIZE -.L1 ADD HL,DE - BIT FileHDR.B_MARK,(HL) - JR Z,.L1 - LD (AdrCopyFile),HL +.L5 ADD HL,DE ; следующий описатель + IF MARK_DIR + LD A,(.FLAG_DIRCOPY) + AND A ; копируем только файлы? + JR Z,.L6 +; из-за копирования директорий файлы копируем все + INC HL + LD A,(HL) + AND A + JR NZ,.L7 ; файлы в дире еще не кончились +; файлы в дире кончились, смотреть оставшиеся диры в списке + CALL RESIDENT.CopyDir + ENDIF + +.L6 BIT FileHDR.B_MARK,(HL) + JR Z,.L5 +.L7 LD (COPY.PathCurrFile),HL JP CopyNextFile +.FLAG_DIRCOPY DB 0 + +; завершение копирования CopyEnd POP AF SETPORT WINSP.CPU3,,0 POP IY WINDOWCLOSE - LD HL,(CopyFiles) + LD HL,(COPY.CopyFiles) LD (IY + PANEL.FILES_MARK),L LD (IY + PANEL.FILES_MARK + 1),H - LD HL,(CopyBytes) + LD HL,(COPY.CopyBytes) LD (IY + PANEL.BYTES_MARK),L LD (IY + PANEL.BYTES_MARK + 1),H - LD HL,(CopyBytes + 2) + LD HL,(COPY.CopyBytes + 2) LD (IY + PANEL.BYTES_MARK + 2),L LD (IY + PANEL.BYTES_MARK + 3),H ; [ ] fat32 - LD A,(CopyBytes + 4) + LD A,(COPY.CopyBytes + 4) LD (IY + PANEL.BYTES_MARK_H),A PUSH IY BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) @@ -529,16 +543,16 @@ CopyError3: ; PUSH AF LD A,D SETPORT WINSP.CPU3,,0 - LD A,(FHandleDst) + LD A,(COPY.FHandleDst) SPDSS DSSF.CLOSE CALL CopyErrorFileDelete POP AF CopyError2 PUSH AF - LD A,(FHandleSrc) + LD A,(COPY.FHandleSrc) SPDSS DSSF.CLOSE POP AF CopyError1 PUSH AF - LD A,(MemID) + LD A,(COPY.MemID) SPDSS DSSF.FREEMEM POP AF CALL DOSError @@ -547,18 +561,18 @@ CopyError1 PUSH AF CopyBreak POP HL POP AF SETPORT WINSP.CPU3,,0 - LD A,(FHandleDst) + LD A,(COPY.FHandleDst) SPDSS DSSF.CLOSE - LD A,(FHandleSrc) + LD A,(COPY.FHandleSrc) SPDSS DSSF.CLOSE - LD A,(MemID) + LD A,(COPY.MemID) SPDSS DSSF.FREEMEM CALL CopyErrorFileDelete JP CopyEnd CopyErrorFileDelete: - LD IX,(AdrCopyFile) - LD HL,(AdrCopyFile) + LD IX,(COPY.PathCurrFile) + LD HL,(COPY.PathCurrFile) INC HL LD DE,WorkBuffer PUSH DE @@ -586,7 +600,7 @@ OverWrite CALL PointerMousePointer W_BUTTON 208,38,56,14 W_TEXT 220,41,COLORP.HIGHGRAY,"Cancel" W_END - LD HL,(CopyDst) + LD HL,(COPY.PathDst) LD DE,WorkBuffer SUB A .L1 LDI @@ -598,7 +612,7 @@ OverWrite CALL PointerMousePointer JR Z,.L2 LD (DE),A INC DE -.L2 LD HL,(AdrCopyFile) +.L2 LD HL,(COPY.PathCurrFile) INC HL CALL MakeDOSname LD IX,0x00F8 @@ -607,7 +621,7 @@ OverWrite CALL PointerMousePointer LD BC,114 LD A,COLORP.HIGHGRAY + COLORI.BLACK CALL PrintPathCentr -OvWrtLp LD IX,OverWrtTab +OvWrtLp LD IX,REZ2TAB.OverWrtTab CALL CheckCoordsMouse SPDSS DSSF.SCANKEY JR Z,OvWrtLp @@ -639,10 +653,10 @@ OvrJump JP (HL) OverWrtAll LD A,0x01 - LD (OverWriteFlg),A + LD (COPY.OverWriteFlg),A OverWrtFile CALL PointerMouseClock - LD IX,(AdrCopyFile) - LD HL,(AdrCopyFile) + LD IX,(COPY.PathCurrFile) + LD HL,(COPY.PathCurrFile) INC HL LD DE,WorkBuffer PUSH DE @@ -653,7 +667,7 @@ OverWrtFile CALL PointerMouseClock RET OverSkip CALL PointerMouseClock - LD IX,(AdrCopyFile) + LD IX,(COPY.PathCurrFile) LD L,(IX + FileHDR.SizeBytes) LD H,(IX + FileHDR.SizeBytes + 1) LD E,(IX + FileHDR.SizeBytes + 2) @@ -676,41 +690,42 @@ OverSkip CALL PointerMouseClock LD (IX + PROGRESSBAR.CURR_PAGE + 2),L LD (IX + PROGRESSBAR.CURR_PAGE + 3),H CALL DrawProgressBar - LD HL,CloseFile1 + LD HL,CopyNextFile.CloseFile1 EX (SP),HL RET OverExit INC SP INC SP - LD IX,(AdrCopyFile) + LD IX,(COPY.PathCurrFile) BIT FileHDR.B_MARK,(IX + FileHDR.Flag) - JP Z,CloseFile1 - LD A,(FHandleSrc) + JP Z,CopyNextFile.CloseFile1 + LD A,(COPY.FHandleSrc) SPDSS DSSF.CLOSE - LD A,(MemID) + LD A,(COPY.MemID) SPDSS DSSF.FREEMEM POP IY JP CopyEnd ;-------------------------------------------------------------- -AdrCopyFile DW 0x0000 ; Адрес описателя текущего файла/диры -CopySrc DW 0x0000 ; Адрес пути откуда -CopyDst DW 0x0000 ; Адрес пути куда -CopyFiles DW 0x0000 ; Количество копируемых файлов -CopyBytes DB 5 DUP 0 ; Количество копируемых байтов -OverWriteFlg DB 0x00 ; Флаг перезаписи файлов -FreeBanks DW 0x0000 ; Количество свободных банков -ReadBytes DD 0 ; Длина читаемого файла -WriteBytes DD 0 ; Длина записываемого файла -FHandleSrc DB 0x00 ; Файл источник -FHandleDst DB 0x00 ; Файл приемник -MemID DB 0x00 ; Индефик.памяти под копирование +COPY +.PathCurrFile DW 0 ; Адрес описателя текущего файла/диры +.PathSrc DW 0 ; Адрес пути источника +.PathDst DW 0 ; Адрес пути приемника +.CopyFiles DW 0 ; Количество копируемых файлов +.CopyBytes DB 5 DUP 0 ; Количество копируемых байтов +.OverWriteFlg DB 0 ; Флаг перезаписи файлов +.FreeBanks DW 0 ; Количество свободных банков +.CurrReadBytes DD 0 ; Длина читаемого файла +.CurrWriteBytes DD 0 ; Длина записываемого файла +.FHandleSrc DB 0 ; Файл источник +.FHandleDst DB 0 ; Файл приемник +.MemID DB 0 ; Идентификатор памяти под копирование ;-------------------------------------------------------------- ; На входе: ; DEHL - количество байт ; На выходе: -; HL - количество страниц +; HL - количество страниц 4294967295=FFFFFFFF ; 1028975 FB36F ; 231 E7 1 ; 59232 E760 4 @@ -720,20 +735,21 @@ MemID DB 0x00 ; ; 12652 316C 1 ; 14119 3727 1 ; 12546 3102 1 +; DEHL -> (((DEHL / 100) * 4) / 0x100) + ((L != 0) ? DE++ : DE) ConvBytes2Pages: LD A,H LD H,L - LD L,0x00 - SLA A + LD L,0 + ADD A,A RL E RL D - RL L ; LDEA * 2 - SLA A + RL L + ADD A,A RL E RL D - RL L ; LDEA * 2 + RL L OR H - LD H,0x00 + LD H,0 EX DE,HL JR Z,.L1 INC HL @@ -743,7 +759,7 @@ ConvBytes2Pages: INC DE RET -PrnFromTo LD HL,(CopySrc) +PrintSrcDst LD HL,(COPY.PathSrc) LD DE,WorkBuffer SUB A .L1 LDI @@ -755,10 +771,10 @@ PrnFromTo LD HL,(CopySrc) JR Z,.L2 LD (DE),A INC DE -.L2 LD HL,(AdrCopyFile) +.L2 LD HL,(COPY.PathCurrFile) INC HL CALL MakeDOSname - LD HL,(CopyDst) + LD HL,(COPY.PathDst) LD DE,WorkBuffer+0x100 SUB A .L3 LDI @@ -770,7 +786,7 @@ PrnFromTo LD HL,(CopySrc) JR Z,.L4 LD (DE),A INC DE -.L4 LD HL,(AdrCopyFile) +.L4 LD HL,(COPY.PathCurrFile) INC HL CALL MakeDOSname MAKEWINDOW WINSUBOBJ.WOBIND @@ -783,7 +799,7 @@ PrnFromTo LD HL,(CopySrc) LD A,COLORP.HIGHGRAY + COLORI.BLACK CALL PrintPathLeft LD IX,0x0100 - LD HL,WorkBuffer+0x100 + LD HL,WorkBuffer + 0x100 LD DE,204 LD BC,107 LD A,COLORP.HIGHGRAY + COLORI.BLACK @@ -957,7 +973,7 @@ RNfile EQU $ - STRLEN(" ") - 2 W_FILL 62,27,130,10,COLORI.WHITE W_END LD IX,NameStr - LD HL,ReNameTab + LD HL,REZ2TAB.ReNameTab CALL InputLine WINDOWCLOSE RET C @@ -1379,7 +1395,7 @@ MakeDIRR CALL ResInvert W_FILL 88,23,130,10,COLORI.WHITE W_END LD IX,MakeDIRStr - LD HL,MakeDIRTab + LD HL,REZ2TAB.MakeDIRTab CALL InputLine WINDOWCLOSE RET C @@ -1824,7 +1840,7 @@ DelLp0 LD IX,0x00F8 LD BC,106 LD A,COLORP.HIGHGRAY + COLORI.BLACK CALL PrintPathCentr -DelLoop LD IX,DeleteTab +DelLoop LD IX,REZ2TAB.DeleteTab CALL CheckCoordsMouse SPDSS DSSF.SCANKEY JR Z,DelLoop @@ -2417,7 +2433,7 @@ QuitConfirmWin W_BUTTON 120,32,72,14 W_TEXT 150,35,COLORP.HIGHGRAY,"No" W_END -.Loop LD IX,QuitTab +.Loop LD IX,REZ2TAB.QuitTab CALL CheckCoordsMouse SPDSS DSSF.SCANKEY JR Z,.Loop diff --git a/rez2_fntab1.a80 b/rez2_fntab.a80 similarity index 68% rename from rez2_fntab1.a80 rename to rez2_fntab.a80 index dd44367..4133c8a 100644 --- a/rez2_fntab1.a80 +++ b/rez2_fntab.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 01.08.2025 savelij +; LAST UPDATE: 14.08.2025 savelij ;[]==========================================================[] ; Формат таблицы @@ -30,8 +30,9 @@ ; +0C 2 Адрес обработчика при нажатом огне (лев) ; +0E 2 Адрес обработчика при нажатом огне (прав) +REZ2TAB ;[]==========================================================[] -SetupTab: DW 106,246, 85,133,%0000000000000000,0,NewElement,0 +.SetupTab: DW 106,246, 85,133,%0000000000000000,0,NewElement,0 DW 114,130,146,155,%0000000000000000,0,ChActivatePan,0 DW 114,130,164,173,%0000000000000000,0,ChSavePan,0 DW 274,290, 87, 95,%0000000000000011,0,DecRED,0 @@ -53,43 +54,7 @@ SetupTab: DW 106,246, 85,133,%0000000000000000,0,NewElement,0 DW 0x8000 ;[]===============================================================[] -FileInfoTab: DW 284,356,160,174,%0000000000100001,0,FileInfoExt,0 - DW 0,240, 0,256,%0000000000100000,0,FileInfoExt,0 - DW 400,640, 0,256,%0000000000100000,0,FileInfoExt,0 - DW 0,640, 0, 80,%0000000000100000,0,FileInfoExt,0 - DW 0,640,178,256,%0000000000100000,0,FileInfoExt,0 - DW 0x8000 - -;[]===============================================================[] -PrintFTab: DW 284,356,128,142,%0000000000000001,0,StopPrint,0 - DW 0x8000 - -;[]===============================================================[] -SysInfoTab: DW 284,356,160,174,%0000000000100001,0,SysInfoExt,0 - DW 0,224, 0,256,%0000000000100000,0,SysInfoExt,0 - DW 416,640, 0,256,%0000000000100000,0,SysInfoExt,0 - DW 0,640, 0, 64,%0000000000100000,0,SysInfoExt,0 - DW 0,640,178,256,%0000000000100000,0,SysInfoExt,0 - DW 0x8000 - -;[]===============================================================[] -DiskInfoTab: DW 284,356,160,174,%0000000000100001,0,DiskInfoR.Ext,0 - DW 0,192, 0,256,%0000000000100000,0,DiskInfoR.Ext,0 - DW 448,640, 0,256,%0000000000100000,0,DiskInfoR.Ext,0 - DW 0,640, 0, 80,%0000000000100000,0,DiskInfoR.Ext,0 - DW 0,640,178,256,%0000000000100000,0,DiskInfoR.Ext,0 - DW 0x8000 - -;[]===============================================================[] -VersionTab: DW 284,356,157,171,%0000000000100001,0,VersionExt,0 - DW 0,192, 0,256,%0000000000100000,0,VersionExt,0 - DW 448,640, 0,256,%0000000000100000,0,VersionExt,0 - DW 0,640, 0, 64,%0000000000100000,0,VersionExt,0 - DW 0,640,176,256,%0000000000100000,0,VersionExt,0 - DW 0x8000 - -;[]===============================================================[] -PathTab: DW 240,312,123,137,%0000000000000001,0,InputLine.InputLineExitOk,0 +.PathTab: DW 240,312,123,137,%0000000000000001,0,InputLine.InputLineExitOk,0 DW 328,400,123,137,%0000000000000001,0,InputLine.InputLineExitCancel,0 DW 0, 96, 0,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 DW 544,640, 0,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 @@ -98,7 +63,7 @@ PathTab: DW 240,312,123,137,%0000000000000001,0,InputLine.InputLineExitOk,0 DW 0x8000 ;[]===============================================================[] -OverWrtTab: DW 196,252,126,140,%0000000100100001,0,OverWrtFile,0 +.OverWrtTab: DW 196,252,126,140,%0000000100100001,0,OverWrtFile,0 DW 260,316,126,140,%0000000100100001,0,OverWrtAll,0 DW 324,380,126,140,%0000000100100001,0,OverSkip,0 DW 388,444,126,140,%0000000100100001,0,OverExit,0 @@ -109,7 +74,7 @@ OverWrtTab: DW 196,252,126,140,%0000000100100001,0,OverWrtFile,0 DW 0x8001 ;[]===============================================================[] -ReNameTab: DW 240,312,123,137,%0000000000000001,0,InputLine.InputLineExitOk,0 +.ReNameTab: DW 240,312,123,137,%0000000000000001,0,InputLine.InputLineExitOk,0 DW 328,400,123,137,%0000000000000001,0,InputLine.InputLineExitCancel,0 DW 0,208, 0,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 DW 432,640, 0,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 @@ -118,7 +83,7 @@ ReNameTab: DW 240,312,123,137,%0000000000000001,0,InputLine.InputLineExitOk,0 DW 0x8000 ;[]===============================================================[] -MakeDIRTab: DW 240,312,123,137,%0000000000000001,0,InputLine.InputLineExitOk,0 +.MakeDIRTab: DW 240,312,123,137,%0000000000000001,0,InputLine.InputLineExitOk,0 DW 328,400,123,137,%0000000000000001,0,InputLine.InputLineExitCancel,0 DW 0,200, 0,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 DW 440,640, 0,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 @@ -127,7 +92,7 @@ MakeDIRTab: DW 240,312,123,137,%0000000000000001,0,InputLine.InputLineExitOk,0 DW 0x8000 ;[]===============================================================[] -DeleteTab: DW 196,252,118,132,%0000000100100001,0,DelDelete,0 +.DeleteTab: DW 196,252,118,132,%0000000100100001,0,DelDelete,0 DW 260,316,118,132,%0000000100100001,0,DelAll,0 DW 324,380,118,132,%0000000100100001,0,DelSkip,0 DW 388,444,118,132,%0000000100100001,0,DelExit,0 @@ -138,7 +103,7 @@ DeleteTab: DW 196,252,118,132,%0000000100100001,0,DelDelete,0 DW 0x8000 ;[]===============================================================[] -QuitTab: +.QuitTab: DW 240,312,120,134,%0000000000100001,0,QuitConfirmWin.OK,0 DW 328,400,120,134,%0000000000100001,0,QuitConfirmWin.Abort,0 DW 0,208, 0,256,%0000000000100000,0,QuitConfirmWin.Abort,0 @@ -147,5 +112,5 @@ QuitTab: DW 0,640,138,256,%0000000000100000,0,QuitConfirmWin.Abort,0 DW 0x8000 -EmptyTab: DW 0,640, 0,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 +.EmptyTab: DW 0,640, 0,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 DW 0x8000 diff --git a/rez3_fnmark.a80 b/rez3_fnmark.a80 index 4ed96e8..1e3a848 100644 --- a/rez3_fnmark.a80 +++ b/rez3_fnmark.a80 @@ -1,5 +1,5 @@ -; LAST UPDATE: 01.08.2025 savelij +; LAST UPDATE: 14.08.2025 savelij ;[]==========================================================[] MarkFileR LD A,(IY+PANEL.FILES_ALL) @@ -260,7 +260,7 @@ SelectGroup: LD (SelMode),A W_FILL 72,23,130,10,COLORI.WHITE W_END LD IX,SMaskStr - LD HL,SMaskTab + LD HL,REZ3TAB.SMaskTab CALL InputLine WINDOWCLOSE RET C @@ -680,20 +680,102 @@ SUB_SIZE: EX AF,AF' ; [ ] fat32 RET IF MARK_DIR -; подсчет в байтах размера отмеченной директории -; HL - адрес описателя диры в странице панели которую мерять -CountingDirR +BUF_MARKDIR +.FILES_MASK DZ "*.*" ; маска файлов +.RET_DIR DZ ".. " ; для выхода из директории +.DIR_NAME DZ " " ; имя текущей директории -.OLDPATH EQU WorkBuffer + 0x300 ; сохраненный текущий путь -.CURRPATH EQU WorkBuffer + 0x200 ; временной текущий путь +; копирование директории +CopyDirR PUSH IX + PUSH IY + GETPORT WINSP.CPU3 + PUSH AF + LD A,(RAMPAGES.FLX) + SETPORT WINSP.CPU3,,0 +.EXIT POP AF + SETPORT WINSP.CPU3,,0 + POP IY + POP IX + RET + +; добавление имени директории в список и/или вход/выход +Add2ListDirR PUSH IX PUSH IY - PUSH HL - PUSH BC + GETPORT WINSP.CPU3 + PUSH AF + LD A,(RAMPAGES.FLX) + SETPORT WINSP.CPU3,,0 + PUSH IX + POP DE + LD HL,FileHDR.Name + ADD HL,DE ; смещение до имени в описателе + LD DE,BUF_MARKDIR.DIR_NAME + PUSH DE + LD BC,FileHDR.Name_Size + LDIR ; забрали имя диры + EX DE,HL + CALL .CUTOFFSPACES ; отсечение пробелов + +; выход +.EXIT POP AF + SETPORT WINSP.CPU3,,0 + POP IY + POP IX + RET + +; отсечение пробелов в имени +.CUTOFFSPACES LD A,' ' +.COS2 DEC HL + CP (HL) + JR Z,.COS2 + INC HL + LD (HL),0 + RET + +; добавление имени диры ".." для выхода в предыдущую диру +.ADD_2DOT PUSH HL + LD HL,BUF_MARKDIR.RET_DIR + LD DE,(BUFFERS.CURR_DIRNAME) + LD BC,FFIRST.Name_Size + LDIR + LD (BUFFERS.CURR_DIRNAME),DE + POP HL + RET + +; добавление имени в строку пути +; HL - куда добавлять (хвост текущего пути) +; DE - откуда имя брать +.ADDNAME2PATH CALL .CHECK_BSLASH + LD (HL),'\\' + INC HL + EX DE,HL +; копирование имени из буфера +.COPYNAME2PATH XOR A +.CNP2 CP (HL) + JR Z,.CNP1 + LDI + JR .CNP2 + +.CNP1 LD (DE),A + RET + +; проверка на BACKSLASH +.CHECK_BSLASH DEC HL + LD A,(HL) + CP '\\' + RET Z + INC HL + RET + +; подсчет в байтах размера отмеченной директории +; IX - адрес описателя диры в странице панели которую мерять +CountingDirR PUSH IX + PUSH IY GETPORT WINSP.CPU3 PUSH AF ; текущий номер страницы - PUSH HL + PUSH IX BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) LD A,(RAMPAGES.LEFTPANEL) JR Z,.L1 @@ -708,10 +790,10 @@ CountingDirR LD (JUMPS.FILES_BYTES + 2),HL ; обнуление размера диры LD (JUMPS.FILES_COUNT),HL ; обнуление количества файлов LD HL,CPU3 - LD (.CURR_DIRNAME),HL + LD (BUFFERS.CURR_DIRNAME),HL ; сохранение текущего пути для возврата SPDSS DSSF.CURDISK - LD HL,.OLDPATH ; сохраненый путь для возврата + LD HL,BUFFERS.OLDPATH ; сохраненый путь для возврата ADD A,'A' LD (HL),A INC HL @@ -723,7 +805,7 @@ CountingDirR ; вход в директорию LD HL,FileHDR.Name ADD HL,DE - LD DE,.DIR_NAME + LD DE,BUF_MARKDIR.DIR_NAME PUSH DE LD BC,FileHDR.Name_Size LDIR ; забрали имя диры для измерения @@ -731,10 +813,10 @@ CountingDirR SETPORT WINSP.CPU3,,0 CALL .ADD_2DOT ; для возврата в предыдущую диру POP HL - LD DE,(.CURR_DIRNAME) + LD DE,(BUFFERS.CURR_DIRNAME) LD BC,FileHDR.Name_Size LDIR ; имя диры для входа - LD (.CURR_DIRNAME),DE + LD (BUFFERS.CURR_DIRNAME),DE XOR A LD (DE),A CALL .SET_PATH ; установка текущего пути @@ -755,7 +837,7 @@ CountingDirR JR Z,.END_COUNT CALL .GET_NAME CALL .GET_NAME - LD HL,(.CURR_DIRNAME) + LD HL,(BUFFERS.CURR_DIRNAME) LD DE,-FileHDR.Name_Size ADD HL,DE LD A,(HL) @@ -768,31 +850,29 @@ CountingDirR ; возврат текущего пути .END_COUNT POP AF SETPORT WINSP.CPU3,,0 - LD HL,.OLDPATH ; сохраненый путь для возврата + LD HL,BUFFERS.OLDPATH ; сохраненый путь для возврата SPDSS DSSF.CHDIR - POP BC - POP HL POP IY POP IX RET ; выход в предыдущую диру -.GET_NAME LD HL,(.CURR_DIRNAME) +.GET_NAME LD HL,(BUFFERS.CURR_DIRNAME) LD (HL),0 LD DE,-FileHDR.Name_Size ADD HL,DE - LD (.CURR_DIRNAME),HL + LD (BUFFERS.CURR_DIRNAME),HL RET .OUT_DIR DEC IXH ; предыдущий уровень диры - LD HL,.RET_DIR + LD HL,BUF_MARKDIR.RET_DIR JR .SP1 ; переход в диру из списка -.SET_PATH LD HL,(.CURR_DIRNAME) +.SET_PATH LD HL,(BUFFERS.CURR_DIRNAME) LD DE,-FileHDR.Name_Size ADD HL,DE - LD DE,.DIR_NAME + LD DE,BUF_MARKDIR.DIR_NAME PUSH DE LD BC,FFIRST.Name_Size LDIR @@ -800,7 +880,7 @@ CountingDirR .SP1 PUSH IX SPDSS DSSF.CHDIR SPDSS DSSF.CURDISK - LD HL,.CURRPATH + LD HL,BUFFERS.CURRPATHSRC ADD A,'A' LD (HL),A INC HL @@ -812,11 +892,11 @@ CountingDirR ; добавление имени диры ".." для выхода в предыдущую диру .ADD_2DOT PUSH HL - LD HL,.RET_DIR - LD DE,(.CURR_DIRNAME) + LD HL,BUF_MARKDIR.RET_DIR + LD DE,(BUFFERS.CURR_DIRNAME) LD BC,FFIRST.Name_Size LDIR - LD (.CURR_DIRNAME),DE + LD (BUFFERS.CURR_DIRNAME),DE POP HL RET @@ -838,10 +918,10 @@ CountingDirR CP '.' ; . и .. пропускаем JR Z,.L5 ; для диры копируем имя в табличку - LD DE,(.CURR_DIRNAME) + LD DE,(BUFFERS.CURR_DIRNAME) LD BC,FFIRST.Name_Size LDIR - LD (.CURR_DIRNAME),DE + LD (BUFFERS.CURR_DIRNAME),DE INC IXL JR .L5 @@ -851,10 +931,7 @@ CountingDirR ADD HL,DE CALL GET_DWORD ; взять размер из описателя LD HL,JUMPS.FILES_BYTES - PUSH HL - CALL BCDEHLP ; добавили к текущему размеру - POP HL - CALL SET_DWORD ; положили обратно + CALL HLPBCDE ; добавили к текущему размеру LD HL,(JUMPS.FILES_COUNT) INC HL LD (JUMPS.FILES_COUNT),HL ; инкремент количества файлов @@ -869,8 +946,8 @@ CountingDirR DIR.M_Hidden + \ DIR.M_ReadOnly + \ DIR.M_Dir -.FFF1 LD HL,.FILES_MASK - LD DE,.OLDPATH +.FFF1 LD HL,BUF_MARKDIR.FILES_MASK + LD DE,BUFFERS.OLDPATH PUSH DE PUSH IX SPDSS DSSF.F_FIRST,0 @@ -879,7 +956,7 @@ CountingDirR RET ; поиск следующего описателя -.F_NEXT LD DE,.OLDPATH +.F_NEXT LD DE,BUFFERS.OLDPATH PUSH DE PUSH IX SPDSS DSSF.F_NEXT @@ -887,34 +964,103 @@ CountingDirR POP HL RET -;.FILES_SIZE DD 0 -;.FILES_COUNT DW 0 -.FILES_MASK DZ "*.*" -.RET_DIR DZ ".. " -.DIR_NAME DZ " " -.CURR_DIRNAME DW 0 +; инициализация копирования директории с содержимым +InitCopyDirsR PUSH IX + PUSH IY + GETPORT WINSP.CPU3 + PUSH AF + BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + LD HL,LeftPanel ; для пути откуда копировать + LD DE,RightPanel ; для пути куда копировать + LD A,(RAMPAGES.LEFTPANEL) ; из какой страницы панели брать путь + JR Z,.L1 + LD HL,RightPanel ; для пути откуда копировать + LD DE,LeftPanel ; для пути куда копировать + LD A,(RAMPAGES.RIGHTPANEL) ; из какой страницы панели брать путь +.L1 +; включаем пагу с директорией текущей панели + PUSH HL + SETPORT WINSP.CPU3,,0 + LD HL,PANEL.CURR_PATH + ADD HL,DE ; откуда путь приемника взять + LD DE,BUFFERS.CURRPATHDST ; буфер пути приемника + CALL .COPYNAME2PATH + LD (BUFFERS.ENDPATHDST),DE ; адрес хвоста пути приемника +; копирование имени директории для копирования + PUSH IX + POP DE + LD HL,FileHDR.Name + ADD HL,DE + LD DE,BUF_MARKDIR.DIR_NAME + LD BC,FileHDR.Name_Size + LDIR ; забрали имя диры для копирования + EX DE,HL + CALL .CUTOFFSPACES ; отсечение пробелов +; перенос текущего пути источника + POP DE + LD HL,PANEL.CURR_PATH + ADD HL,DE ; откуда путь приемника взять + LD DE,BUFFERS.CURRPATHSRC + CALL .COPYNAME2PATH ; скопировали путь источника + LD (BUFFERS.ENDPATHSRC),DE ; адрес хвоста пути источника +; добавление имени диры для копирования в путь источника + LD HL,(BUFFERS.ENDPATHSRC) + LD DE,BUF_MARKDIR.DIR_NAME + CALL .ADDNAME2PATH + LD (BUFFERS.ENDPATHSRC),DE ; адрес хвоста пути источника +; добавление имени диры для копирования в путь приемника + LD HL,(BUFFERS.ENDPATHDST) + LD DE,BUF_MARKDIR.DIR_NAME + CALL .ADDNAME2PATH + LD (BUFFERS.ENDPATHDST),DE + XOR A + LD (BUFFERS.LEVEL_DIR),A +; выход + POP AF + SETPORT WINSP.CPU3,,0 + POP IY + POP IX + RET -; подсчет размера директории -; На входе: -; HL - адрес описателя диры в странице панели которую мерять -; На выходе: -; BCDE' - размер в байтах -;GetDirSizeR CALL CountingDirR -; LD HL,JUMPS.FILES_BYTES -; CALL GET_DWORD -; EXX -; RET +; добавление имени в строку пути +; HL - куда добавлять (хвост текущего пути) +; DE - откуда имя брать +.ADDNAME2PATH CALL .CHECK_BSLASH + LD (HL),'\\' + INC HL + EX DE,HL +; копирование имени из буфера +.COPYNAME2PATH XOR A +.CNP2 CP (HL) + JR Z,.CNP1 + LDI + JR .CNP2 + +.CNP1 LD (DE),A + RET + +;.NAME2DIRNAME + +; проверка на BACKSLASH +.CHECK_BSLASH DEC HL + LD A,(HL) + CP '\\' + RET Z + INC HL + RET + +; отсечение пробелов в имени +.CUTOFFSPACES LD A,' ' +.COS2 DEC HL + CP (HL) + JR Z,.COS2 + INC HL + LD (HL),0 + RET ; создание папок на приемнике ; HL - адрес описателя диры в странице панели которую копировать -MkdirsDstR - -.OLDPATH EQU WorkBuffer + 0x300 ; сохраненный текущий путь -.CURRPATHSRC EQU WorkBuffer + 0x200 ; временной текущий путь источника -.CURRPATHDST EQU WorkBuffer + 0x100 ; временной текущий путь приемника -.FINDBUF EQU WorkBuffer - - PUSH IX +MkdirsDstRR PUSH IX PUSH IY GETPORT WINSP.CPU3 PUSH AF @@ -931,12 +1077,12 @@ MkdirsDstR SETPORT WINSP.CPU3,,0 LD HL,PANEL.CURR_PATH ADD HL,DE ; откуда путь приемника взять - LD DE,.CURRPATHDST ; буфер пути приемника + LD DE,BUFFERS.CURRPATHDST ; буфер пути приемника CALL .COPYNAME2PATH - LD (.ENDPATHDST),DE ; адрес хвоста пути приемника + LD (BUFFERS.ENDPATHDST),DE ; адрес хвоста пути приемника ; сохранение текущего пути для возврата SPDSS DSSF.CURDISK - LD HL,.OLDPATH ; сохраненный путь для возврата + LD HL,BUFFERS.OLDPATH ; сохраненный путь для возврата ADD A,'A' LD (HL),A INC HL @@ -948,29 +1094,29 @@ MkdirsDstR ; копирование имени директории для копирования LD HL,FileHDR.Name ADD HL,DE - LD DE,CountingDirR.DIR_NAME + LD DE,BUF_MARKDIR.DIR_NAME LD BC,FileHDR.Name_Size LDIR ; забрали имя диры для копирования EX DE,HL CALL .CUTOFFSPACES ; отсечение пробелов ; перенос текущего пути источника - LD HL,.OLDPATH - LD DE,.CURRPATHSRC + LD HL,BUFFERS.OLDPATH + LD DE,BUFFERS.CURRPATHSRC CALL .COPYNAME2PATH ; скопировали путь источника - LD (.ENDPATHSRC),DE ; адрес хвоста пути источника + LD (BUFFERS.ENDPATHSRC),DE ; адрес хвоста пути источника ; добавление имени диры для копирования в путь источника - LD HL,(.ENDPATHSRC) - LD DE,CountingDirR.DIR_NAME + LD HL,(BUFFERS.ENDPATHSRC) + LD DE,BUF_MARKDIR.DIR_NAME CALL .ADDNAME2PATH - LD (.ENDPATHSRC),DE ; адрес хвоста пути источника + LD (BUFFERS.ENDPATHSRC),DE ; адрес хвоста пути источника ; добавление имени диры для копирования в путь приемника - LD HL,(.ENDPATHDST) - LD DE,CountingDirR.DIR_NAME + LD HL,(BUFFERS.ENDPATHDST) + LD DE,BUF_MARKDIR.DIR_NAME CALL .ADDNAME2PATH - LD (.ENDPATHDST),DE + LD (BUFFERS.ENDPATHDST),DE ; создание диры в приемнике - LD HL,.CURRPATHDST + LD HL,BUFFERS.CURRPATHDST SPDSS DSSF.MKDIR ; создали диру приемника JR NC,.L3 CP ERR_DSS.DIR_EXISTS ; если дира уже есть игнорим ошибку @@ -978,27 +1124,27 @@ MkdirsDstR .L3 ; TODO циклический поиск директорий с созданием на приемнике - LD HL,.CURRPATHSRC + LD HL,BUFFERS.CURRPATHSRC SPDSS DSSF.CHDIR ; вход в диру источника CALL .FINDFIRSTSRCDIR ; поиск первого описателя JP C,.ENDCOPY ; больше директорий нет, выходим ; поиск директорий .L2 CALL .FINDNEXTSRCDIR ; поиск следующего описателя JP C,.ENDFINDNEXT ; поиск окончен? - LD HL,.FINDBUF + FFIRST.Name + LD HL,BUFFERS.FINDBUF + FFIRST.Name LD A,(HL) CP '.' ; описатели "." и ".." игнорим JR Z,.L2 LD DE,.TMPNAMEDIR PUSH DE CALL .COPYNAME2PATH - LD HL,(.ENDPATHDST) + LD HL,(BUFFERS.ENDPATHDST) POP DE CALL .ADDNAME2PATH - LD HL,.CURRPATHDST + LD HL,BUFFERS.CURRPATHDST SPDSS DSSF.MKDIR ; создаем диру на приемнике ; JP C,ERROR - LD HL,.CURRPATHSRC + LD HL,BUFFERS.CURRPATHSRC SPDSS DSSF.CHDIR ; возвращаем путь на источник ; JP C,ERROR JR .L2 ; ищем следующий @@ -1014,13 +1160,13 @@ MkdirsDstR ; поиск первой диры в текущей поддиректории .FINDFIRSTSRCDIR - LD HL,CountingDirR.FILES_MASK - LD DE,.FINDBUF + LD HL,BUF_MARKDIR.FILES_MASK + LD DE,BUFFERS.FINDBUF SPDSS DSSF.F_FIRST,1,DIR.M_Dir RET .FINDNEXTSRCDIR - LD DE,.FINDBUF + LD DE,BUFFERS.FINDBUF SPDSS DSSF.F_NEXT RET @@ -1041,7 +1187,7 @@ MkdirsDstR .CNP1 LD (DE),A RET -.NAME2DIRNAME +;.NAME2DIRNAME ; проверка на BACKSLASH .CHECK_BSLASH DEC HL @@ -1071,7 +1217,7 @@ MkdirsDstR ; выход из копирования директорий .ENDCOPY LD SP,0 .OLDSP EQU $-2 - LD HL,.OLDPATH + LD HL,BUFFERS.OLDPATH SPDSS DSSF.CHDIR POP AF SETPORT WINSP.CPU3,,0 @@ -1079,8 +1225,8 @@ MkdirsDstR POP IX RET -.ENDPATHSRC DW 0 ; адрес хвоста пути источника -.ENDPATHDST DW 0 ; адрес хвоста пути приемника +;.ENDPATHSRC DW 0 ; адрес хвоста пути источника +;.ENDPATHDST DW 0 ; адрес хвоста пути приемника .TMPNAMEDIR DB 8 DUP 0 ENDIF @@ -1100,3 +1246,51 @@ MkdirsDstR ; /F83 ; /F99 ; /TASM + +; DEV +; .. +; CAMEL401 +; DEMON +; MASM80 +; OASM028 +; SOLID +; SPFORTH +; TASM +; .. +; DOC +; EXAMPLES +; INCLUDE +; SRC +; .. +; CLIB +; .. +; BUILD +; .. +; F83 +; F99 + +;DEV/CAMEL401/ 25 +;DEV/DEMON/ 2 +;DEV/MASM/ 10 +;DEV/OASM28/ 5 +;DEV/SOLID/ 8 +;DEV/SOLID/DOC/ 13 +;DEV/SOLID/EXAMPLES/ 36 +;DEV/SOLID/INCLUDE/ 16 +;DEV/SOLID/SRC/CLIB/ 12 +;DEV/SOLID/SRC/CLIB/BUILD/ 8 +;DEV/SPFORTH/F83/ 4 +;DEV/SPFORTH/F99/ 3 +;DEV/TASM/ 6 +;----------------------------------- +; 0x94 148 + +; генерация списка для копирования дир +; "." для выхода в предыдущую диру +; 0 конец списка +; имена дир по 8 символов (можно и 8.3) только имена без 0 в конце имени + +; при копировании найдена дира +; занесение в путь источника имени диры +; занесение в путь приемника имени диры +; занесение в список ".." для выхода diff --git a/rez2_fnmisc.a80 b/rez3_fnmisc.a80 similarity index 88% rename from rez2_fnmisc.a80 rename to rez3_fnmisc.a80 index ecb4c1a..1cd5d93 100644 --- a/rez2_fnmisc.a80 +++ b/rez3_fnmisc.a80 @@ -1,5 +1,46 @@ -; LAST UPDATE: 02.08.2025 savelij +; LAST UPDATE: 14.08.2025 savelij + +;[]==========================================================[] +VersionR + SETPORT WINSP.Y_PORT,0xC0 + LD HL,SetInvert + PUSH HL + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 192,64,256,152 + W_FILL 4,2,248,10,COLORI.BLACK + W_TEXT 110,3,COLORI.WHITE,"Version" + W_TEXT 93,20,COLORP.HIGHGRAY,"Flex Navigator" + W_TEXT 76,38,COLORP.HIGHGRAY,"Component versions:" + W_TEXT 70,48,COLORP.HIGHGRAY,"Manager:" + W_TEXT 128,48,COLORP.HIGHGRAY,"\{FLEX_VERS.NAVIGATOR}" + W_TEXT 65,58,COLORP.HIGHGRAY,"File Editor:" + W_TEXT 128,58,COLORP.HIGHGRAY,"\{FLEX_VERS.EDITOR}" + W_TEXT 61,68,COLORP.HIGHGRAY,"File Viewer:" + W_TEXT 128,68,COLORP.HIGHGRAY,"\{FLEX_VERS.VIEWER}" + W_TEXT 40,86,COLORP.HIGHGRAY,"2000, Enin Anton" + W_TEXT 40,96,COLORP.HIGHGRAY,"2021, Mikhaltchenkov Dmitry" + W_TEXT 40,106,COLORP.HIGHGRAY,"2022, Belyanskiy Anatoliy" + W_TEXT 40,116,COLORP.HIGHGRAY,"(C) Sprinter Team build ",0 ; здесь вставляется дата сборки + W_BUTTON 92,133,72,14 + W_TEXT 120,136,COLORP.HIGHGRAY,"OK" + W_END + CALL WaitUnpressMouse +VersionLoop LD IX,REZ3TAB.VersionTab + CALL CheckCoordsMouse + SPDSS DSSF.SCANKEY + JR Z,VersionLoop + LD A,B + OR A + JR NZ,VersionLoop + LD A,E + CP 0x1B + JR Z,VersionExt + CP 0x0D + JR NZ,VersionLoop +VersionExt + WINDOWCLOSE + RET ;[]==========================================================[] FileInfoR LD A,(IY+PANEL.FILES_ALL) @@ -37,8 +78,8 @@ FileInfoR LD A,(IY+PANEL.FILES_ALL) POP AF SETPORT WINSP.CPU3,,0 LD IX,WorkBuffer - LD HL,WorkBuffer+1 - LD DE,WorkBuffer+0x20 + LD HL,WorkBuffer + 1 + LD DE,WorkBuffer + 0x20 LD A,(HL) CP '.' RET Z @@ -46,7 +87,7 @@ FileInfoR LD A,(IY+PANEL.FILES_ALL) PUSH DE CALL MakeDOSname POP HL - LD DE,FName + LD DE,.FName LD C,12 SUB A .L2 LDI @@ -60,8 +101,8 @@ FileInfoR LD A,(IY+PANEL.FILES_ALL) .L3 LD (DE),A INC DE DJNZ .L3 -.L5 LD HL,FAtributs - LD DE,FAttrib +.L5 LD HL,.FAtributs + LD DE,.FAttrib LD C,(IX + FileHDR.Attr) LD B,0x08 .L6 RL C @@ -72,13 +113,13 @@ FileInfoR LD A,(IY+PANEL.FILES_ALL) INC HL INC DE DJNZ .L6 - LD HL,FLen + LD HL,.FLen LD B,0x10 LD A,0x20 .L10 LD (HL),A INC HL DJNZ .L10 - LD DE,FLen + LD DE,.FLen BIT DIR.B_Dir,(IX + FileHDR.Attr) JR Z,.L7 LD HL,DirText @@ -94,505 +135,73 @@ FileInfoR LD A,(IY+PANEL.FILES_ALL) LD A,0x20 LD (DE),A INC DE - LD HL,Bytes + LD HL,.Bytes LD BC,0x0005 LDIR -.L8 LD DE,FData +.L8 LD DE,.FDate CALL GetData - LD DE,FTime + LD DE,.FTime CALL GetTime - LD HL,WorkBuffer+0x20 - LD DE,WorkBuffer+0x30 + LD HL,WorkBuffer + 0x20 + LD DE,WorkBuffer + 0x30 LD A,(FileAtribut) PUSH IY SPDSS DSSF.F_FIRST,0 POP IY JP C,PointerMousePointer - LD HL,FClast + LD HL,.FClast LD B,0x05 LD A,0x20 .L9 LD (HL),A INC HL DJNZ .L9 - LD HL,WorkBuffer+0x30+26 + LD HL,WorkBuffer + 0x30 + 26 LD E,(HL) INC HL LD D,(HL) EX DE,HL - LD DE,FClast + LD DE,.FClast CALL ConvertNumbers_16b MAKEWINDOW WINSUBOBJ.STORE W_MAIN 240,80,160,98 W_FILL 4,2,152,10,COLORI.BLACK W_TEXT 56,3,COLORI.WHITE,"File info" W_TEXT 10,20,COLORP.HIGHGRAY,"Name: " -FName EQU $ - STRLEN(" ") - 1 +.FName EQU $ - STRLEN(" ") - 1 W_TEXT 10,32,COLORP.HIGHGRAY,"Attributes: " -FAttrib EQU $ - STRLEN(" ") - 1 +.FAttrib EQU $ - STRLEN(" ") - 1 W_TEXT 10,44,COLORP.HIGHGRAY,"Len: " -FLen EQU $ - STRLEN(" ") - 1 +.FLen EQU $ - STRLEN(" ") - 1 W_TEXT 10,56,COLORP.HIGHGRAY,"Date: " -FData EQU $ - STRLEN(" ") - 1 -FTime EQU $ - STRLEN(" ") - 1 +.FDate EQU $ - STRLEN(" ") - 1 +.FTime EQU $ - STRLEN(" ") - 1 W_TEXT 10,68,COLORP.HIGHGRAY,"First cluster: " -FClast EQU $ - STRLEN(" ") - 1 +.FClast EQU $ - STRLEN(" ") - 1 W_BUTTON 44,80,72,14 W_TEXT 72,83,COLORP.HIGHGRAY,"Ok" W_END CALL PointerMousePointer -FileInfoLoop: LD IX,FileInfoTab +.FileInfoLoop: LD IX,REZ3TAB.FileInfoTab CALL CheckCoordsMouse SPDSS DSSF.SCANKEY - JR Z,FileInfoLoop + JR Z,.FileInfoLoop LD A,B OR A - JR NZ,FileInfoLoop + JR NZ,.FileInfoLoop LD A,E CP 0x1B - JR Z,FileInfoExt + JR Z,.FileInfoExt CP 0x0D - JR Z,FileInfoExt + JR Z,.FileInfoExt RES 5,A CP 'O' - JR NZ,FileInfoLoop -FileInfoExt: + JR NZ,.FileInfoLoop +.FileInfoExt: WINDOWCLOSE RET -FAtributs: DEFB "--ad-shr" - -;[]==========================================================[] -PrintFileR LD A,(IY+PANEL.FILES_ALL) - OR (IY+PANEL.FILES_ALL + 1) - RET Z - BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) - RET NZ - SETPORT WINSP.Y_PORT,0xC0 - GETPORT WINSP.CPU3 - PUSH AF - BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) - LD A,(RAMPAGES.LEFTPANEL) - JR Z,.L1 - LD A,(RAMPAGES.RIGHTPANEL) -.L1 - SETPORT WINSP.CPU3,,0 - LD L,(IY+PANEL.FIRST_FILE) - LD H,(IY+PANEL.FIRST_FILE + 1) - LD E,(IY+PANEL.CURR_FILE) - LD D,(IY+PANEL.CURR_FILE + 1) - ADD HL,DE - ADD HL,HL - ADD HL,HL - ADD HL,HL - LD E,L - LD D,H - ADD HL,HL - ADD HL,DE - LD A,H - OR 0xC0 - LD H,A - LD DE,WorkBuffer - LD BC,0x0018 - LDIR - POP AF - SETPORT WINSP.CPU3,,0 - LD IX,WorkBuffer - BIT DIR.B_Dir,(IX + FileHDR.Attr) - RET NZ - LD HL,WorkBuffer+1 - LD DE,PrnFileName - CALL MakeDOSname - LD L,(IX + FileHDR.SizeBytes) - LD H,(IX + FileHDR.SizeBytes + 1) - LD (PrnFileLen),HL - LD E,(IX + FileHDR.SizeBytes + 2) - LD D,(IX + FileHDR.SizeBytes + 3) - LD (PrnFileLen+2),DE - LD A,H - OR L - OR D - OR E - RET Z - PUSH IY - SPDSS DSSF.GETMEM,1 - POP IY - PUSH AF - CALL C,DOSError - POP AF - RET C - LD (PrnMIndef),A - PUSH IY - LD HL,PagesList - SPBIOS BIOSF.GETMEMBLKPAGES - MAKEWINDOW WINSUBOBJ.STORE - W_MAIN 168,84,304,62 - W_FILL 4,2,296,10,COLORI.BLACK - W_TEXT 142,3,COLORI.WHITE,"Print" - W_TEXT 16,16,COLORP.HIGHGRAY,"Printing file:" - W_BORDER 16,28,272,12 - W_FILL 18,29,268,10,COLORI.WHITE - W_BUTTON 116,44,72,14 - W_TEXT 140,47,COLORP.HIGHGRAY,"Stop" - W_END - PUSH IY - POP HL - LD DE,PANEL.CURR_PATH - ADD HL,DE - LD DE,WorkBuffer - SUB A -.L2 LDI - CP (HL) - JR NZ,.L2 - DEC HL - LD A,0x5C - CP (HL) - JR Z,.L3 - LD (DE),A - INC DE -.L3 LD HL,PrnFileName - SUB A -.L4 LDI - CP (HL) - JR NZ,.L4 - LD (DE),A - LD IX,0x00D0 - LD HL,WorkBuffer - LD DE,0x00F8 - LD BC,0x0064 - LD A,COLORP.HIGHGRAY + COLORI.BLACK - CALL PrintPathLeft - LD IX,PrintFTab - CALL CheckCoordsMouse - LD IX,ProcessFPrn - LD HL,(PrnFileLen) - LD DE,(PrnFileLen+2) - LD A,L - LD L,H - LD H,E - LD E,D - OR A - JR Z,InitPrn - INC HL - LD A,H - OR L - JR NZ,InitPrn - INC E -InitPrn LD (IX + PROGRESSBAR.MAX_PAGES),L - LD (IX + PROGRESSBAR.MAX_PAGES + 1),H - LD (IX + PROGRESSBAR.MAX_PAGES + 2),E - LD (IX + PROGRESSBAR.MAX_PAGES + 3),0x00 - CALL InitProgressBar - LD HL,PrnFileName - SPDSS DSSF.OPEN,,1 - PUSH AF - CALL C,DOSError - POP AF - JP C,PrnError - LD (PrnFHandle),A - GETPORT WINSP.CPU3 - PUSH AF - LD HL,PagesList - LD A,(HL) -ReadPr1 INC HL - PUSH HL - SETPORT WINSP.CPU3,,0 - LD HL,(PrnFileLen) - LD DE,(PrnFileLen+2) - LD BC,0x4000 - OR A - SBC HL,BC - LD B,0x00 - EX DE,HL - SBC HL,BC - EX DE,HL - JR C,ReadPrnEnd - LD (PrnFileLen),HL - LD (PrnFileLen+2),DE - CALL PointerMouseClock - LD HL,0xC000 - LD DE,0x4000 - LD A,(PrnFHandle) - SPDSS DSSF.READ - CALL PointerMousePointer - LD BC,0x4000 - CALL PrintBlock - POP HL - JR C,PrnEsc - LD A,(HL) - CP 0xFF - JR NZ,ReadPr1 -PrnEsc POP AF - SETPORT WINSP.CPU3,,0 - JR PrnFileExit - -ReadPrnEnd: LD HL,0xC000 - LD DE,(PrnFileLen) - LD A,D - OR E - JR Z,.L1 - CALL PointerMouseClock - LD A,(PrnFHandle) - PUSH DE - SPDSS DSSF.READ - POP BC - CALL PointerMousePointer - CALL PrintBlock - JR C,.L2 -.L1 CALL NxtPrnProc -.L2 POP HL - POP AF - SETPORT WINSP.CPU3,,0 -PrnFileExit LD A,(PrnFHandle) - SPDSS DSSF.CLOSE -PrnError LD A,(PrnMIndef) - SPDSS DSSF.FREEMEM - POP IY - HALT - HALT - WINDOWCLOSE - RET - -;[]----------------------------------------------------------[] -PrintBlock: LD DE,0xC000 -PrnBlockLp LD A,(DE) - INC DE - CALL PrintCHAR - RET C - CALL NxtPrnProc - DEC BC - LD A,B - OR C - JR NZ,PrnBlockLp - RET - -PrintCHAR: LD L,A - PUSH HL - PUSH DE - PUSH BC - SPMOUSE MOUSEF.READ_STATE - BIT 0,A - JR Z,PrnCH1 - LD IX,PrintFTab - CALL CheckCoordsMouse - JR C,PrnCH2 -PrnCH1 - SPDSS DSSF.SCANKEY - LD A,E -PrnCH2 POP BC - POP DE - POP HL - RET C - JR Z,PrnCHAR - CP 0x1B - SCF - RET Z - RES 5,A - CP 'S' - JR NZ,PrnCHAR -StopPrint SCF - RET - -PrnCHAR PUSH DE - PUSH BC - LD A,L - SPDSS DSSF.PRINT - LD A,B - POP BC - POP DE - RET NC - HALT - JR PrintCHAR - -;[]----------------------------------------------------------[] -NxtPrnProc LD A,E - OR A - RET NZ - PUSH DE - PUSH BC - LD IX,ProcessFPrn - LD L,(IX + PROGRESSBAR.CURR_PAGE) - LD H,(IX + PROGRESSBAR.CURR_PAGE + 1) - INC HL - LD (IX + PROGRESSBAR.CURR_PAGE),L - LD (IX + PROGRESSBAR.CURR_PAGE + 1),H - LD A,H - OR L - JR NZ,.L1 - LD L,(IX + PROGRESSBAR.CURR_PAGE + 2) - LD H,(IX + PROGRESSBAR.CURR_PAGE + 3) - INC HL - LD (IX + PROGRESSBAR.CURR_PAGE + 2),L - LD (IX + PROGRESSBAR.CURR_PAGE + 3),H -.L1 CALL DrawProgressBar - POP BC - POP DE - RET - -ProcessFPrn: DEFW 0x00BA - DEFW 0x0071 - DEFW 0x010C - DEFW 0x0000 - DEFW 0x0000 - DEFW 0x0000 - DEFW 0x0000 - DEFW 0x0000 - DEFW 0x0000 - DEFB 0x4F -PrnFileName: DUPL 13,0 -PrnFileLen: DUPL 4,0 -PrnMIndef: DEFB 0x00 -PrnFHandle: DEFB 0x00 - -;[]==========================================================[] -SystemInfoR - SETPORT WINSP.Y_PORT,0xC0 - LD HL,SetInvert - PUSH HL - LD HL,.DOSvers - LD DE,.BIOSver - LD B,0x05 - LD A,0x20 -.L1 LD (HL),A - INC HL - LD (DE),A - INC DE - DJNZ .L1 - PUSH IY - SPDSS DSSF.VERSION - POP IY - EX DE,HL - LD DE,.DOSvers - LD A,H - CALL ConvertNumbers_8b - LD A,'.' - LD (DE),A - INC DE - LD A,L - CALL ConvertNumbers_8b - LD HL,WorkBuffer - SPBIOS BIOSF.FN_VERSION - SUB A -.L2 INC HL - CP (HL) - JR NZ,.L2 - LD A,0x20 -.L3 DEC HL - CP (HL) - JR NZ,.L3 - INC HL - LD DE,.BIOSver - SUB A -.L4 LDI - CP (HL) - JR NZ,.L4 - LD HL,Present - LD A,(CMOSFlag) - OR A - JR NZ,.L5 - LD HL,NotPresent -.L5 LD DE,.CMOStxt - LD BC,0x000B - LDIR - LD HL,.TotMem - LD DE,.FreeMem - LD B,0x0F - LD A,0x20 -.L6 LD (HL),A - INC HL - LD (DE),A - INC DE - DJNZ .L6 - PUSH IY - SPDSS DSSF.INFOMEM - POP IY - PUSH BC - LD B,H - LD C,L - LD HL,0x0000 - LD DE,WorkBuffer - SRL B - RR C - RR H - RR L - SRL B - RR C - RR H - RR L - PUSH DE - CALL ConvertNumbers_32b - SUB A - LD (DE),A - POP HL - LD DE,.TotMem - CALL CorrBigNum - INC DE - LD HL,Bytes - LD BC,0x0005 - LDIR - POP HL - LD B,H - LD C,L - LD HL,0x0000 - LD DE,WorkBuffer - SRL B - RR C - RR H - RR L - SRL B - RR C - RR H - RR L - PUSH DE - CALL ConvertNumbers_32b - SUB A - LD (DE),A - POP HL - LD DE,.FreeMem - CALL CorrBigNum - INC DE - LD HL,Bytes - LD BC,0x0005 - LDIR - MAKEWINDOW WINSUBOBJ.STORE - W_MAIN 224,64,192,114 - W_FILL 4,2,184,10,COLORI.BLACK - W_TEXT 48,3,COLORI.WHITE,"System information" - W_TEXT 10,20,COLORP.HIGHGRAY,"FN version: \{FLEX_VERS.NAVIGATOR}" - W_TEXT 10,32,COLORP.HIGHGRAY,"BIOS version: " -.BIOSver EQU $ - STRLEN(" ") - 1 - W_TEXT 10,44,COLORP.HIGHGRAY,"DOS version: " -.DOSvers EQU $ - STRLEN(" ") - 1 - W_TEXT 10,56,COLORP.HIGHGRAY,"CMOS: " -.CMOStxt EQU $ - STRLEN(" ") - 1 - W_TEXT 10,70,COLORP.HIGHGRAY,"Total memory: " -.TotMem EQU $ - STRLEN(" ") - 1 - W_TEXT 10,82,COLORP.HIGHGRAY,"Free memory: " -.FreeMem EQU $ - STRLEN(" ") - 1 - W_BUTTON 60,96,72,14 - W_TEXT 88,99,COLORP.HIGHGRAY,"Ok",0 - W_END -SysInfoLoop: LD IX,SysInfoTab - CALL CheckCoordsMouse - SPDSS DSSF.SCANKEY - JR Z,SysInfoLoop - LD A,B - OR A - JR NZ,SysInfoLoop - LD A,E - CP 0x1B - JR Z,SysInfoExt - CP 0x0D - JR Z,SysInfoExt - RES 5,A - CP 'O' - JR NZ,SysInfoLoop -SysInfoExt - WINDOWCLOSE - RET - -Bytes: DEFB "bytes" -Present: DEFB "Present " -NotPresent: DEFB "Not present" +.FAtributs: DEFB "--ad-shr" +.Bytes: DEFB "bytes" ;[]==========================================================[] DiskInfoR: LD HL,SetInvert @@ -673,7 +282,7 @@ DiskInfoR: LD HL,SetInvert INC HL INC DE DJNZ .loop1 -.DiskI1: LD HL,WorkBuffer+0x2B +.DiskI1: LD HL,WorkBuffer + 0x2B .buf_label EQU $-2 JR NZ,.DiskI21F .DiskI2: LD HL,.NoLabelT @@ -682,19 +291,19 @@ DiskInfoR: LD HL,SetInvert LDIR ; серийник LD DE,.SerialN - LD A,(WorkBuffer+0x2A) + LD A,(WorkBuffer + 0x2A) .serial_4 EQU $-2 - CALL ConvHexTxt - LD A,(WorkBuffer+0x29) + CALL .ConvHexTxt + LD A,(WorkBuffer + 0x29) .serial_3 EQU $-2 - CALL ConvHexTxt + CALL .ConvHexTxt INC DE - LD A,(WorkBuffer+0x28) + LD A,(WorkBuffer + 0x28) .serial_2 EQU $-2 - CALL ConvHexTxt - LD A,(WorkBuffer+0x27) + CALL .ConvHexTxt + LD A,(WorkBuffer + 0x27) .serial_1 EQU $-2 - CALL ConvHexTxt + CALL .ConvHexTxt MAKEWINDOW WINSUBOBJ.STORE W_MAIN 192,80,256,98 W_FILL 4,2,248,10,COLORI.BLACK @@ -787,12 +396,12 @@ DiskInfoR: LD HL,SetInvert SUB A LD (DE),A LD HL,WorkBuffer - LD DE,WorkBuffer+0x100 - CALL CorrBigNum + LD DE,WorkBuffer + 0x100 + CALL .CorrBigNum LD A,' ' LD (DE),A INC DE - LD HL,Bytes + LD HL,FileInfoR.Bytes LD BC,5;Bytes.Size LDIR SUB A @@ -804,35 +413,35 @@ DiskInfoR: LD HL,SetInvert .freeSpace_m EQU $-2 LD HL,0 .freeSpace_l EQU $-2 - LD DE,WorkBuffer+0x80 + LD DE,WorkBuffer + 0x80 ; ABCHL - число для перевода CALL ConvertNumbers_40b SUB A LD (DE),A - LD HL,WorkBuffer+0x80 - LD DE,WorkBuffer+0x180 - CALL CorrBigNum + LD HL,WorkBuffer + 0x80 + LD DE,WorkBuffer + 0x180 + CALL .CorrBigNum LD A,' ' LD (DE),A INC DE - LD HL,Bytes + LD HL,FileInfoR.Bytes LD BC,5;Bytes.Size LDIR SUB A LD (DE),A ; вывод размеров - LD HL,WorkBuffer+0x100 - LD DE,0x0128 - LD BC,0x0070 - LD A,0x80 + LD HL,WorkBuffer + 0x100 + LD DE,296 + LD BC,112 + LD A,COLORP.HIGHGRAY + COLORI.BLACK CALL PrintTxtLine_IFF - LD HL,WorkBuffer+0x180 - LD DE,0x0013A - LD BC,0x007C - LD A,0x80 + LD HL,WorkBuffer + 0x180 + LD DE,314 + LD BC,124 + LD A,COLORP.HIGHGRAY + COLORI.BLACK CALL PrintTxtLine_IFF CALL PointerMousePointer -.DiskInfoLoop: LD IX,DiskInfoTab +.DiskInfoLoop: LD IX,REZ3TAB.DiskInfoTab CALL CheckCoordsMouse SPDSS DSSF.SCANKEY JR Z,.DiskInfoLoop @@ -877,14 +486,14 @@ DiskInfoR: LD HL,SetInvert .NoLabel DEFB "NO NAME " .NoLabelT DEFB "no label " -ConvHexTxt PUSH AF +.ConvHexTxt PUSH AF RRCA RRCA RRCA RRCA - CALL ConvHexT1 + CALL .ConvHexT1 POP AF -ConvHexT1 AND 0x0F +.ConvHexT1 AND 0x0F ADD A,0x90 DAA ADC A,0x40 @@ -893,7 +502,7 @@ ConvHexT1 AND 0x0F INC DE RET -CorrBigNum PUSH HL +.CorrBigNum PUSH HL SUB A LD C,A .L1 INC C @@ -924,42 +533,425 @@ CorrBigNum PUSH HL JR .L4 ;[]==========================================================[] -VersionR +SystemInfoR SETPORT WINSP.Y_PORT,0xC0 LD HL,SetInvert PUSH HL + LD HL,.DOSvers + LD DE,.BIOSver + LD B,0x05 + LD A,0x20 +.L1 LD (HL),A + INC HL + LD (DE),A + INC DE + DJNZ .L1 + PUSH IY + SPDSS DSSF.VERSION + POP IY + EX DE,HL + LD DE,.DOSvers + LD A,H + CALL ConvertNumbers_8b + LD A,'.' + LD (DE),A + INC DE + LD A,L + CALL ConvertNumbers_8b + LD HL,WorkBuffer + SPBIOS BIOSF.FN_VERSION + SUB A +.L2 INC HL + CP (HL) + JR NZ,.L2 + LD A,0x20 +.L3 DEC HL + CP (HL) + JR NZ,.L3 + INC HL + LD DE,.BIOSver + SUB A +.L4 LDI + CP (HL) + JR NZ,.L4 + LD HL,Present + LD A,(CMOSFlag) + OR A + JR NZ,.L5 + LD HL,NotPresent +.L5 LD DE,.CMOStxt + LD BC,0x000B + LDIR + LD HL,.TotMem + LD DE,.FreeMem + LD B,0x0F + LD A,0x20 +.L6 LD (HL),A + INC HL + LD (DE),A + INC DE + DJNZ .L6 + PUSH IY + SPDSS DSSF.INFOMEM + POP IY + PUSH BC + LD B,H + LD C,L + LD HL,0x0000 + LD DE,WorkBuffer + SRL B + RR C + RR H + RR L + SRL B + RR C + RR H + RR L + PUSH DE + CALL ConvertNumbers_32b + SUB A + LD (DE),A + POP HL + LD DE,.TotMem + CALL DiskInfoR.CorrBigNum + INC DE + LD HL,FileInfoR.Bytes + LD BC,0x0005 + LDIR + POP HL + LD B,H + LD C,L + LD HL,0x0000 + LD DE,WorkBuffer + SRL B + RR C + RR H + RR L + SRL B + RR C + RR H + RR L + PUSH DE + CALL ConvertNumbers_32b + SUB A + LD (DE),A + POP HL + LD DE,.FreeMem + CALL DiskInfoR.CorrBigNum + INC DE + LD HL,FileInfoR.Bytes + LD BC,0x0005 + LDIR MAKEWINDOW WINSUBOBJ.STORE - W_MAIN 192,64,256,152 - W_FILL 4,2,248,10,COLORI.BLACK - W_TEXT 110,3,COLORI.WHITE,"Version" - W_TEXT 93,20,COLORP.HIGHGRAY,"Flex Navigator" - W_TEXT 76,38,COLORP.HIGHGRAY,"Component versions:" - W_TEXT 70,48,COLORP.HIGHGRAY,"Manager:" - W_TEXT 128,48,COLORP.HIGHGRAY,"\{FLEX_VERS.NAVIGATOR}" - W_TEXT 65,58,COLORP.HIGHGRAY,"File Editor:" - W_TEXT 128,58,COLORP.HIGHGRAY,"\{FLEX_VERS.EDITOR}" - W_TEXT 61,68,COLORP.HIGHGRAY,"File Viewer:" - W_TEXT 128,68,COLORP.HIGHGRAY,"\{FLEX_VERS.VIEWER}" - W_TEXT 40,86,COLORP.HIGHGRAY,"2000, Enin Anton" - W_TEXT 40,96,COLORP.HIGHGRAY,"2021, Mikhaltchenkov Dmitry" - W_TEXT 40,106,COLORP.HIGHGRAY,"2022, Belyanskiy Anatoliy" - W_TEXT 40,116,COLORP.HIGHGRAY,"(C) Sprinter Team build ",0 ; здесь вставляется дата сборки - W_BUTTON 92,133,72,14 - W_TEXT 120,136,COLORP.HIGHGRAY,"OK" + W_MAIN 224,64,192,114 + W_FILL 4,2,184,10,COLORI.BLACK + W_TEXT 48,3,COLORI.WHITE,"System information" + W_TEXT 10,20,COLORP.HIGHGRAY,"FN version: \{FLEX_VERS.NAVIGATOR}" + W_TEXT 10,32,COLORP.HIGHGRAY,"BIOS version: " +.BIOSver EQU $ - STRLEN(" ") - 1 + W_TEXT 10,44,COLORP.HIGHGRAY,"DOS version: " +.DOSvers EQU $ - STRLEN(" ") - 1 + W_TEXT 10,56,COLORP.HIGHGRAY,"CMOS: " +.CMOStxt EQU $ - STRLEN(" ") - 1 + W_TEXT 10,70,COLORP.HIGHGRAY,"Total memory: " +.TotMem EQU $ - STRLEN(" ") - 1 + W_TEXT 10,82,COLORP.HIGHGRAY,"Free memory: " +.FreeMem EQU $ - STRLEN(" ") - 1 + W_BUTTON 60,96,72,14 + W_TEXT 88,99,COLORP.HIGHGRAY,"Ok" W_END - CALL WaitUnpressMouse -VersionLoop LD IX,VersionTab +SysInfoLoop: LD IX,REZ3TAB.SysInfoTab CALL CheckCoordsMouse SPDSS DSSF.SCANKEY - JR Z,VersionLoop + JR Z,SysInfoLoop LD A,B OR A - JR NZ,VersionLoop + JR NZ,SysInfoLoop LD A,E CP 0x1B - JR Z,VersionExt + JR Z,SysInfoExt CP 0x0D - JR NZ,VersionLoop -VersionExt + JR Z,SysInfoExt + RES 5,A + CP 'O' + JR NZ,SysInfoLoop +SysInfoExt WINDOWCLOSE RET + +Present: DEFB "Present " +NotPresent: DEFB "Not present" + +;[]==========================================================[] +PrintFileR LD A,(IY+PANEL.FILES_ALL) + OR (IY+PANEL.FILES_ALL + 1) + RET Z + BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + RET NZ + SETPORT WINSP.Y_PORT,0xC0 + GETPORT WINSP.CPU3 + PUSH AF + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + LD A,(RAMPAGES.LEFTPANEL) + JR Z,.L1 + LD A,(RAMPAGES.RIGHTPANEL) +.L1 + SETPORT WINSP.CPU3,,0 + LD L,(IY+PANEL.FIRST_FILE) + LD H,(IY+PANEL.FIRST_FILE + 1) + LD E,(IY+PANEL.CURR_FILE) + LD D,(IY+PANEL.CURR_FILE + 1) + ADD HL,DE + ADD HL,HL + ADD HL,HL + ADD HL,HL + LD E,L + LD D,H + ADD HL,HL + ADD HL,DE + LD A,H + OR 0xC0 + LD H,A + LD DE,WorkBuffer + LD BC,0x0018 + LDIR + POP AF + SETPORT WINSP.CPU3,,0 + LD IX,WorkBuffer + BIT DIR.B_Dir,(IX + FileHDR.Attr) + RET NZ + LD HL,WorkBuffer + 1 + LD DE,PrnFileName + CALL MakeDOSname + LD L,(IX + FileHDR.SizeBytes) + LD H,(IX + FileHDR.SizeBytes + 1) + LD (PrnFileLen),HL + LD E,(IX + FileHDR.SizeBytes + 2) + LD D,(IX + FileHDR.SizeBytes + 3) + LD (PrnFileLen+2),DE + LD A,H + OR L + OR D + OR E + RET Z + PUSH IY + SPDSS DSSF.GETMEM,1 + POP IY + PUSH AF + CALL C,DOSError + POP AF + RET C + LD (PrnMIndef),A + PUSH IY + LD HL,PagesList + SPBIOS BIOSF.GETMEMBLKPAGES + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 168,84,304,62 + W_FILL 4,2,296,10,COLORI.BLACK + W_TEXT 142,3,COLORI.WHITE,"Print" + W_TEXT 16,16,COLORP.HIGHGRAY,"Printing file:" + W_BORDER 16,28,272,12 + W_FILL 18,29,268,10,COLORI.WHITE + W_BUTTON 116,44,72,14 + W_TEXT 140,47,COLORP.HIGHGRAY,"Stop" + W_END + PUSH IY + POP HL + LD DE,PANEL.CURR_PATH + ADD HL,DE + LD DE,WorkBuffer + SUB A +.L2 LDI + CP (HL) + JR NZ,.L2 + DEC HL + LD A,'\\' + CP (HL) + JR Z,.L3 + LD (DE),A + INC DE +.L3 LD HL,PrnFileName + SUB A +.L4 LDI + CP (HL) + JR NZ,.L4 + LD (DE),A + LD IX,208 + LD HL,WorkBuffer + LD DE,248 + LD BC,100 + LD A,COLORP.HIGHGRAY + COLORI.BLACK + CALL PrintPathLeft + LD IX,REZ3TAB.PrintFTab + CALL CheckCoordsMouse + LD IX,ProcessFPrn + LD HL,(PrnFileLen) + LD DE,(PrnFileLen+2) + LD A,L + LD L,H + LD H,E + LD E,D + OR A + JR Z,InitPrn + INC HL + LD A,H + OR L + JR NZ,InitPrn + INC E +InitPrn LD (IX + PROGRESSBAR.MAX_PAGES),L + LD (IX + PROGRESSBAR.MAX_PAGES + 1),H + LD (IX + PROGRESSBAR.MAX_PAGES + 2),E + LD (IX + PROGRESSBAR.MAX_PAGES + 3),0x00 + CALL InitProgressBar + LD HL,PrnFileName + SPDSS DSSF.OPEN,,1 + PUSH AF + CALL C,DOSError + POP AF + JP C,PrnError + LD (PrnFHandle),A + GETPORT WINSP.CPU3 + PUSH AF + LD HL,PagesList + LD A,(HL) +ReadPr1 INC HL + PUSH HL + SETPORT WINSP.CPU3,,0 + LD HL,(PrnFileLen) + LD DE,(PrnFileLen+2) + LD BC,0x4000 + OR A + SBC HL,BC + LD B,0x00 + EX DE,HL + SBC HL,BC + EX DE,HL + JR C,ReadPrnEnd + LD (PrnFileLen),HL + LD (PrnFileLen+2),DE + CALL PointerMouseClock + LD HL,0xC000 + LD DE,0x4000 + LD A,(PrnFHandle) + SPDSS DSSF.READ + CALL PointerMousePointer + LD BC,0x4000 + CALL PrintBlock + POP HL + JR C,PrnEsc + LD A,(HL) + CP 0xFF + JR NZ,ReadPr1 +PrnEsc POP AF + SETPORT WINSP.CPU3,,0 + JR PrnFileExit + +ReadPrnEnd: LD HL,0xC000 + LD DE,(PrnFileLen) + LD A,D + OR E + JR Z,.L1 + CALL PointerMouseClock + LD A,(PrnFHandle) + PUSH DE + SPDSS DSSF.READ + POP BC + CALL PointerMousePointer + CALL PrintBlock + JR C,.L2 +.L1 CALL NxtPrnProc +.L2 POP HL + POP AF + SETPORT WINSP.CPU3,,0 +PrnFileExit LD A,(PrnFHandle) + SPDSS DSSF.CLOSE +PrnError LD A,(PrnMIndef) + SPDSS DSSF.FREEMEM + POP IY + HALT + HALT + WINDOWCLOSE + RET + +;[]----------------------------------------------------------[] +PrintBlock: LD DE,0xC000 +PrnBlockLp LD A,(DE) + INC DE + CALL PrintCHAR + RET C + CALL NxtPrnProc + DEC BC + LD A,B + OR C + JR NZ,PrnBlockLp + RET + +PrintCHAR: LD L,A + PUSH HL + PUSH DE + PUSH BC + SPMOUSE MOUSEF.READ_STATE + BIT 0,A + JR Z,PrnCH1 + LD IX,REZ3TAB.PrintFTab + CALL CheckCoordsMouse + JR C,PrnCH2 +PrnCH1 + SPDSS DSSF.SCANKEY + LD A,E +PrnCH2 POP BC + POP DE + POP HL + RET C + JR Z,PrnCHAR + CP 0x1B + SCF + RET Z + RES 5,A + CP 'S' + JR NZ,PrnCHAR +StopPrint SCF + RET + +PrnCHAR PUSH DE + PUSH BC + LD A,L + SPDSS DSSF.PRINT + LD A,B + POP BC + POP DE + RET NC + HALT + JR PrintCHAR + +;[]----------------------------------------------------------[] +NxtPrnProc LD A,E + OR A + RET NZ + PUSH DE + PUSH BC + LD IX,ProcessFPrn + LD L,(IX + PROGRESSBAR.CURR_PAGE) + LD H,(IX + PROGRESSBAR.CURR_PAGE + 1) + INC HL + LD (IX + PROGRESSBAR.CURR_PAGE),L + LD (IX + PROGRESSBAR.CURR_PAGE + 1),H + LD A,H + OR L + JR NZ,.L1 + LD L,(IX + PROGRESSBAR.CURR_PAGE + 2) + LD H,(IX + PROGRESSBAR.CURR_PAGE + 3) + INC HL + LD (IX + PROGRESSBAR.CURR_PAGE + 2),L + LD (IX + PROGRESSBAR.CURR_PAGE + 3),H +.L1 CALL DrawProgressBar + POP BC + POP DE + RET + +ProcessFPrn: DW 186,113,268,0,0,0,0,0,0 + DB COLORP.BLUE + COLORI.WHITE +PrnFileName: DB 13 DUP 0 +PrnFileLen: DB 4 DUP 0 +PrnMIndef: DB 0 +PrnFHandle: DB 0 diff --git a/rez3_fnnext.a80 b/rez3_fnnext.a80 index b2f9470..2fb355d 100644 --- a/rez3_fnnext.a80 +++ b/rez3_fnnext.a80 @@ -1,15 +1,15 @@ -; LAST UPDATE: 18.07.2025 savelij +; LAST UPDATE: 13.08.2025 savelij ;[]==========================================================[] InitExtention: LD HL,INIFILES.ExtName1 - LD DE,fn_ext + LD DE,BUFFERS.fn_ext CALL InitExt LD HL,INIFILES.ExtName2 - LD DE,fnview_ext + LD DE,BUFFERS.fnview_ext CALL InitExt LD HL,INIFILES.ExtName3 - LD DE,fnedit_ext + LD DE,BUFFERS.fnedit_ext ;[]----------------------------------------------------------[] InitExt: LD (.EXTdata),DE SPDSS DSSF.OPEN,,1 diff --git a/rez3_fntab.a80 b/rez3_fntab.a80 new file mode 100644 index 0000000..fe84e4c --- /dev/null +++ b/rez3_fntab.a80 @@ -0,0 +1,76 @@ + +; LAST UPDATE: 14.08.2025 savelij + +;[]==========================================================[] +; Формат таблицы +; +00 2 Xmin +; +02 2 Xmax +; +04 2 Ymin +; +06 2 Ymax +; +08 2 0 - простой об'ект +; бит 0 - кнопка +; бит 1 - рабочая кнопка +; бит 2 - инверт 1 +; бит 3 - статичный инверт +; бит 4 - программа запускается без адреса возвр. +; и без огня +; бит 5 - программа запускается без адреса возвр. +; по левой кнопке огня +; бит 6 - программа запускается без адреса возвр. +; по правой кнопке огня +; бит 7 - вызвать функцию закрытия окна перед +; запуском программы без огня +; бит 8 - вызвать функцию закрытия окна перед +; запуском программы по левой кнопке +; бит 9 - вызвать функцию закрытия окна перед +; запуском программы по правой кнопке +; бит15 - это переключатель (инверт при огне не +; убирать) +; +0A 2 Адрес обработчика при не нажатом огне +; +0C 2 Адрес обработчика при нажатом огне (лев) +; +0E 2 Адрес обработчика при нажатом огне (прав) + +REZ3TAB +;[]===============================================================[] +.VersionTab: DW 284,356,157,171,%0000000000100001,0,VersionExt,0 + DW 0,192, 0,256,%0000000000100000,0,VersionExt,0 + DW 448,640, 0,256,%0000000000100000,0,VersionExt,0 + DW 0,640, 0, 64,%0000000000100000,0,VersionExt,0 + DW 0,640,176,256,%0000000000100000,0,VersionExt,0 + DW 0x8000 + +.SMaskTab DW 240,312,123,137,%0000000000000001,0,InputLine.InputLineExitOk,0 + DW 328,400,123,137,%0000000000000001,0,InputLine.InputLineExitCancel,0 + DW 0,208, 0,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 + DW 432,640, 0,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 + DW 0,640, 0, 81,%0000000000000000,0,InputLine.InputLineExitCancel,0 + DW 0,640,143,256,%0000000000000000,0,InputLine.InputLineExitCancel,0 + DW 0x8000 + +;[]===============================================================[] +.FileInfoTab: DW 284,356,160,174,%0000000000100001,0,FileInfoR.FileInfoExt,0 + DW 0,240, 0,256,%0000000000100000,0,FileInfoR.FileInfoExt,0 + DW 400,640, 0,256,%0000000000100000,0,FileInfoR.FileInfoExt,0 + DW 0,640, 0, 80,%0000000000100000,0,FileInfoR.FileInfoExt,0 + DW 0,640,178,256,%0000000000100000,0,FileInfoR.FileInfoExt,0 + DW 0x8000 + +;[]===============================================================[] +.DiskInfoTab: DW 284,356,160,174,%0000000000100001,0,DiskInfoR.Ext,0 + DW 0,192, 0,256,%0000000000100000,0,DiskInfoR.Ext,0 + DW 448,640, 0,256,%0000000000100000,0,DiskInfoR.Ext,0 + DW 0,640, 0, 80,%0000000000100000,0,DiskInfoR.Ext,0 + DW 0,640,178,256,%0000000000100000,0,DiskInfoR.Ext,0 + DW 0x8000 + +;[]===============================================================[] +.SysInfoTab: DW 284,356,160,174,%0000000000100001,0,SysInfoExt,0 + DW 0,224, 0,256,%0000000000100000,0,SysInfoExt,0 + DW 416,640, 0,256,%0000000000100000,0,SysInfoExt,0 + DW 0,640, 0, 64,%0000000000100000,0,SysInfoExt,0 + DW 0,640,178,256,%0000000000100000,0,SysInfoExt,0 + DW 0x8000 + +;[]===============================================================[] +.PrintFTab: DW 284,356,128,142,%0000000000000001,0,StopPrint,0 + DW 0x8000