commit 70e1e6bb0478d0fd31330bf0de302da5b80ac3f3 Author: savelij13 Date: Fri May 30 08:35:57 2025 +0300 Добавлены файлы. diff --git a/build.bat b/build.bat new file mode 100644 index 0000000..d5314db --- /dev/null +++ b/build.bat @@ -0,0 +1,39 @@ + +@echo off + +if not exist tmp md tmp +if not exist fn md fn +if not exist fn\flx md fn\flx +set path=d:\yad\svn\pentevo\tools\asl\bin\;d:\yad\svn\pentevo\tools\mhmt\;d:\yad\svn\pentevo\tools\noice2equ\;d:\yad\sprinter_src\tools\ +set includes=d:\yad\svn\pentevo\rom;d:\yad\sprinter_src\ + +cls + +rem Flex Navigator + +mhmt font.raw tmp\font_raw.pack +mhmt iff_font.raw tmp\iff_font_raw.pack + +rem asl -U -L -C -x -olist tmp\fnexeboot.lst -i %includes% fn_exe_boot.a80 || goto error +asl -U -L -C -x -olist tmp\fnexeboot.lst -i %includes% -D NO_EDIT,NO_VIEW,NO_HELP fn_exe_boot.a80 || goto error +p2bin fn_exe_boot.p tmp\fn.exe -r $-$ -k + +rem Flex Navigator Plugins +rem cd plugins +rem call build_all +rem cd .. + +copy /Y /B tmp\fn.exe fn\fn.exe +copy /Y /B plugins\*.flx fn\flx + +echo ######################## +echo # -= End Compile Ok =- # +echo ######################## +goto exit + +:error +echo ####################### +echo # -= Error Compile =- # +echo ####################### + +:exit \ No newline at end of file diff --git a/build_pause.bat b/build_pause.bat new file mode 100644 index 0000000..84aefe7 --- /dev/null +++ b/build_pause.bat @@ -0,0 +1,6 @@ + +@ECHO OFF + +call build.bat + +pause diff --git a/docs/HELP.ENG b/docs/HELP.ENG new file mode 100644 index 0000000..ea8d9f1 --- /dev/null +++ b/docs/HELP.ENG @@ -0,0 +1,25 @@ + +struct FlxPluginHeader { + char Id[8]; + unsigned short LoadOffset; + unsigned short EntryOffset; + unsigned char PluginMode; + unsigned char Reserved[3]; +}; + + Header of Plugin for Flex Navigator v1.xx: + 8 bytes Id - identifier of plugin, you should begin from three symbols - FLX + 2 bytes LoadOffset - displacement in page of memory for load (0 - 0x3FFF) + 2 bytes EntryOffset - displacement in page of memory for executing (0 - 0x3FFF) + 1 byte PluginMode - modes of work: + 0 - repairing Flex Navigator screen after finish + 1 - without repairing Flex Navigator screen after finish + 3 bytes Reserved + length = 16 bytes + + ATTANTION!!! + 1. Size of plugin code (without header) must be less 4000 bytes. + 2. ORG = 0xC000 + 3. When control will return to Flex Navigator, Carry Flag are specify error status: + CF = 1 error during initialization + CF = 0 no error diff --git a/docs/HELP.RUS b/docs/HELP.RUS new file mode 100644 index 0000000..6a22292 --- /dev/null +++ b/docs/HELP.RUS @@ -0,0 +1,29 @@ + +struct FlxPluginHeader { + char Id[8]; + unsigned short LoadOffset; + unsigned short EntryOffset; + unsigned char PluginMode; + unsigned char Reserved[3]; +}; + + Flex Navigator v1.xx: + 8 Id - 䨪 , 3 ᨬ ᥣ FLX + 2 LoadOffset - ᬥ饭 ࠭ 㧪 (0 - 0x3FFF) + 2 EntryOffset - ᬥ饭 ࠭ ᪠ (0 - 0x3FFF) + 1 PluginMode - ० ࠡ: + 0 - ࠡ⠥ ⠭ ࠡ祩 Flex Navigator + (.. ᫥ ࠡ 㦭 ⠭ ࠭) + 1 - ࠡ⠥ ⠭ ࠡ祩 Flex Navigator + (.. ᫥ ࠡ 㦭 ⠭ ࠭) + 3 Reserved - १ࢨ஢ + = 16 + + !!! + 1. Flex Navigator v1.xx ॢ ࠧ ᭮ +(.. ) 0x4000 . + 2. Flex Navigator v1.xx ⪮஢ 0xC000 +(.. org = 0xC000). + 3. 頥 祭: + CF = 1 訡 ⠤ ⨠樨 (᫥ 祣 ⠭) + CF = 0 訡 diff --git a/docs/fn_api_0.2.txt b/docs/fn_api_0.2.txt new file mode 100644 index 0000000..9e47e18 --- /dev/null +++ b/docs/fn_api_0.2.txt @@ -0,0 +1,572 @@ +[]========================================================================[] +* * +* ᠭ Flex Navigator API v1.xx ࠧࠡ稪 Flx-Plugins * +* doc v0.2 07.07.2002 * +* * +[]========================================================================[] + + + + + +[]------------------------------------------------------------------------[] + + ClearScreen - 楤 ⪨ 0- 㦭 梥⮬. + + 室: + A - 梥 ⪨ (00-0Fh) + 室: + - + +[]------------------------------------------------------------------------[] + + MakeWindow - 楤 ᮧ ᪮ + + 室: + (SP) - ⥫ + 室: + - + + ࠧ 맮 ⮩ 楤 ணࠬ ᫥ ⥫ . + 楤 ந室 , ᫥饬 ⥫. + + ਬ: + call MakeWindow + ... ; ⥫ + + + ⥫ : + +00 (1) 䫠 뢮 : 0 - ࠭ + (ᯮ ࠭ ) + 1 - ࠭ + (ᯮ ) + 0x7F - ⠭ + (䫠 㦨 + ⥪饣 ) + +01 (2) न x 뢮 (0 - 639) + +03 (2) न y 뢮 (0 - 255) + +05 (2) x (0 - 639) + +07 (2) y (0 - 255) + + ' ଠ: + +00 (1) ⨯ + +01 ... ⥫ + + ' : + 0. +00 (1) == 0 - ᯨ᪠ '⮢. ᫥ ⮣ + 㭪 頥 ࠢ. + + 1. +00 (1) == 1 - ⥪⮢ ப + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + +05 (1) 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + +06 ... ⥪⮢ ப ( ப - 0) + + 2. +00 (1) == 2 - אַ㣮쭮 ᪮ + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + +05 (2) x (0 - 639) + +07 (2) y (0 - 255) + +09 (1) 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + + 3. +00 (1) == 3 - ᮢ 㣫㡫񭭮 אַ㣮쭮 ᪮ + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + +05 (2) x (0 - 639) + +07 (2) y (0 - 255) + + 4. +00 (1) == 4 - ᮢ 㪫 אַ㣮쭮 ᪮ + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + +05 (2) x (0 - 639) + +07 (2) y (0 - 255) + + 5. +00 (1) == 5 - ᮢ ⥪⮬ + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + +05 (2) x (0 - 639) + +07 (2) y (0 - 255) + +09 (1) 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + +10 ... ⥪⮢ ப ( ப - 0) + + ! ⥪ ⢫ 権 + x + 4, y + 1 + + 6. +00 (1) == 6 - ᮢ ਧ⠫쭮 ࠧ⥫ + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + +05 (2) x (0 - 639) + + 7. +00 (1) == 7 - ᮢ ⨪쭮 ࠧ⥫ + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + +05 (2) y (0 - 255) + + 8. +00 (1) == 8 - ᮢ ஫ <- + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + + 9. +00 (1) == 9 - ᮢ ࠢ ஫ -> + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + + 10. +00 (1) == 10 - ᮢ 孥 ஫ ^ + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + + 11. +00 (1) == 11 - ᮢ ஫ + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + + +[]------------------------------------------------------------------------[] + + InvertRectan - 楤 梥 אַ㣮쭮 ᪮ + + 室: + HL - x न + BC - y न + HX - y + LX - x + D - ⥪騩 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + E - 㦭 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + 室: + - + + ᮦ 楤 祭 , ⮬ 訥 + אַ㣮쭨 ᮢ ᮡ ஢... ;) + +[]------------------------------------------------------------------------[] + + PrnTxtLnIFF - 楤 뢮 ⥪⮢ ப ᪨ ࠭ + 640x256 ० ࠧ୮ X + 室: + HL - ⥪⮢ ப ( ப - 0) + DE - 뢮 X + BC - 뢮 Y + A - 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + 室: + HL - , ᫥饣 ப + +[]------------------------------------------------------------------------[] + + PrnTxtLnNorm - 楤 뢮 ⥪⮢ ப ᪨ ࠭ + 640x256 + 室: + HL - ⥪⮢ ப ( ப - 0) + DE - 뢮 X + BC - 뢮 Y + A - 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + 室: + HL - , ᫥饣 ப + +[]------------------------------------------------------------------------[] + + PrnTxtLnNormC - 楤 뢮 ⥪⮢ ப ᪨ ࠭ + 640x256 ᫮ ᨬ + 室: + HL - ⥪⮢ ப + DE - 뢮 X + C - 뢮 Y + B - - ⠥ ᨬ + A - 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + 室: + HL - , ᫥饣 ᫥ ᨬ + +[]------------------------------------------------------------------------[] + + PrnRangPathL - 楤 뢮 ᮢ᪨ ⥩ ᪨ ࠭ + 640x256 ० ࠧ୮ X , ਦ + ( |-> ) + 室: + IX - - ᥫ 뢮 ப + HL - ⥪⮢ ப ( ப - 0) + DE - 뢮 X + BC - 뢮 Y + A - 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + 室: + - + + 楤 ࠬ⭮ 㪮稢 ᮢ᪨ 㦭 + ࠧ 饭 ४਩ ..\ + +[]------------------------------------------------------------------------[] + + PrnRangPathR - 楤 뢮 ᮢ᪨ ⥩ ᪨ ࠭ + 640x256 ० ࠧ୮ X , ਦ + ࠢ ( <-| ) + 室: + IX - - ᥫ 뢮 ப + HL - ⥪⮢ ப ( ப - 0) + DE - 뢮 X + BC - 뢮 Y + A - 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + 室: + - + + 楤 ࠬ⭮ 㪮稢 ᮢ᪨ 㦭 + ࠧ 饭 ४਩ ..\ + +[]------------------------------------------------------------------------[] + + PrnRangPathC - 楤 뢮 ᮢ᪨ ⥩ ᪨ ࠭ + 640x256 ० ࠧ୮ X , 業஢ + ⭮⥫쭮 ( <-|-> ) + 室: + IX - - ᥫ 뢮 ப + HL - ⥪⮢ ப ( ப - 0) + DE - 뢮 X + BC - 뢮 Y + A - 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + 室: + - + + 楤 ࠬ⭮ 㪮稢 ᮢ᪨ 㦭 + ࠧ 饭 ४਩ ..\ + +[]------------------------------------------------------------------------[] + + InputLine - 楤 ।஢ ப ᪮ ࠭ + 640x256 ० ࠧ୮ X + + 室: + IX - ⥫ ப + HL - ⥫ ⮢ ࠭ ( 誨) + 室: + - + + ⥫ ப: + +00 (1) ᨬ쭠 ப + +01 (1) 䫠 ⮢ + +02 (1) ⥪ X (樠 InputLine) + +03 (1) ⥪ add_x (樠 InputLine) + +04 (1) ⢮ ᨬ / ப + +05 (2) X ப ࠭ + +07 (2) Y ப ࠭ + +09 (2) X ப ࠭ + +0B (1) 梥 ப (d7-d4 梥 background, d3-d0 梥 foreground) + +0C ... ᠬ ப + + 楤 ⠡ ⮢ ࠭: + InpLnExtN - 楤 ଠ쭮 室 ।樨 + InpLnExtC - 楤 室 ।樨 cancel + (⠭ 砫 ப) + +[]------------------------------------------------------------------------[] + + InitScrBar - 楤 樠樨 ⥫ ஫ + + 室: + IX - ⥫ ஫ + 室: + - + +[]------------------------------------------------------------------------[] + + PrnHScrBar - 楤 ਧ⠫쭮 ஫ + + 室: + IX - ⥫ ஫ + 室: + - + +[]------------------------------------------------------------------------[] + + PrnVScrBar - 楤 ⨪쭮 ஫ + + 室: + IX - ⥫ ஫ + 室: + - + +[]------------------------------------------------------------------------[] + + InitProcess - 楤 樠樨 ⥫ ᡠ + + 室: + IX - ⥫ ᡠ + 室: + - + +[]------------------------------------------------------------------------[] + + PrnProcess - 楤 ᡠ + + 室: + IX - ⥫ ᡠ + 室: + - + +[]------------------------------------------------------------------------[] + + ResFire - 楤 , 饭 + + 室: + - + 室: + - + +[]------------------------------------------------------------------------[] + + TestCoords - 楤 ஢ન न ⠡ ⮢ + ࠭ + + 室: + IX - ⠡ ⮢ ࠭ + 室: + - + + ⠡ ⮢ ࠭: + +00 (2) x न + +02 (2) ࠢ x न + +04 (2) y न + +06 (2) y न + +08 (2) 䫠 + +10 (2) ࠡ稪 ⮬ + +12 (2) ࠡ稪 ⮬ ( ) + +14 (2) ࠡ稪 ⮬ (ࠢ ) + + 䫠 : + d00 - + d01 - ࠡ + d02 - + d03 - + d04 - ணࠬ ᪠ + d05 - ணࠬ ᪠ + + d06 - ணࠬ ᪠ ࠢ + + d07 - 맢 㭪 । ᪮ ணࠬ + + d08 - 맢 㭪 । ᪮ ணࠬ + + d09 - 맢 㭪 । ᪮ ணࠬ + ࠢ + d15 - 䫠: 1 - 㡨 + + + ᫨ +00 == 0x8000 ⠥ 殬 ⠡ ⮢ ࠭ + +[]------------------------------------------------------------------------[] + + SetCMOSPrint - 楤 祭 /६ CMOS + + 室: + - 㤥 ᠭ + 室: + - +[]------------------------------------------------------------------------[] + + ResCMOSPrint - 楤 몫祭 /६ CMOS + + 室: + - 㤥 ᠭ + 室: + - + +[]------------------------------------------------------------------------[] + + SetClock - 楤 ⠭ + + 室: + - + 室: + - + +[]------------------------------------------------------------------------[] + + SetMouse - 楤 ⠭ ଠ + + 室: + - + 室: + - + +[]------------------------------------------------------------------------[] + + MoveBytes - 楤 ண ஢ + ᥫ 㢥祭 ᮢ + 室: + HL - 㤠 + DE - 㤠 + BC - ᪮쪮 + 室: + HL - (㤠 + ᪮쪮) + DE - (㤠 + ᪮쪮) + +[]------------------------------------------------------------------------[] + + MoveBytesUp - 楤 ண ஢ + ᥫ 㬥襭 ᮢ + 室: + HL - 㤠 + DE - 㤠 + BC - ᪮쪮 + 室: + HL - (㤠 - ᪮쪮) + DE - (㤠 - ᪮쪮) + +[]------------------------------------------------------------------------[] + + Mult8 - 楤 㬭 8 * 8 bit = 16 bit + + 室: + E * C + 室: + HL - १ + +[]------------------------------------------------------------------------[] + + Mult16X8 - 楤 㬭 16 * 8 bit = 24 bit + + 室: + DE * C + 室: + A, HL - १ + +[]------------------------------------------------------------------------[] + + Mult16 - 楤 㬭 16 * 16 bit = 16 bit + + 室: + DE * BC + 室: + HL - १ + +[]------------------------------------------------------------------------[] + + Mult16X16 - 楤 㬭 16 * 16 bit = 32 bit + + 室: + DE * BC + 室: + HL, DE - १ + +[]------------------------------------------------------------------------[] + + Mult32 - 楤 㬭 32 * 16 bit = 32 bit + + 室: + HL, DE * BC + 室: + HL, DE - १ + +[]------------------------------------------------------------------------[] + + Divis16X16 - 楤 16 / 16 bit = 16.16 bit + + 室: + BC / DE + 室: + BC - १ + HL - ⮪ + +[]------------------------------------------------------------------------[] + + Divis24X16 - 楤 24 / 16 bit = 8.16 bit + + 室: + HL, C / DE + 室: + A - १ + HL - ⮪ + +[]------------------------------------------------------------------------[] + + Divis32X16 - 楤 32 / 16 bit = 16.16 bit + + 室: + HL, DE / BC + 室: + DE - १ + HL - ⮪ + +[]------------------------------------------------------------------------[] + + Divis32 - 楤 32 / 16 bit = 32.16 bit + + 室: + HL, DE / BC + 室: + HL, DE - १ + BC - ⮪ + +[]------------------------------------------------------------------------[] + + ConvNumTxt32 - 楤 樨 ᫠ 32 bit ⥪ + + 室: + BC, HL - ᫮ 32 bit + DE - + 室: + DE - ᫥饣 ᫮ + +[]------------------------------------------------------------------------[] + + ConvNumTxt16 - 楤 樨 ᫠ 16 bit ⥪ + + 室: + HL - ᫮ 16 bit + DE - + 室: + DE - ᫥饣 ᫮ + +[]------------------------------------------------------------------------[] + + ConvNumTxt8 - 楤 樨 ᫠ 8 bit ⥪ + + 室: + A - ᫮ 8 bit + DE - + 室: + DE - ᫥饣 ᫮ + +[]------------------------------------------------------------------------[] + + ConvTxtNum32 - 楤 樨 ⥪ ᫮ 32 bit + + 室: + DE - ⥪ ( ப - 0) + 室: + HL, IX - ᫮ + C flag - 訡 + +[]------------------------------------------------------------------------[] + + ConvTxtNum16 - 楤 樨 ⥪ ᫮ 16 bit + + 室: + DE - ⥪ ( ப - 0) + 室: + HL - ᫮ + C flag - 訡 + +[]------------------------------------------------------------------------[] + + DOSError - 楤 뢮 訡 ( 訡) + + 室: + A - 訡 + 室: + - + +[]------------------------------------------------------------------------[] + + + + + +07 july 2002 +Anton Enin (C) Copyright 2002 R-lab +᫨ e-mail: r-lab@mail.ru ਭ 㬥. \ No newline at end of file diff --git a/docs/fn_api_0.3.txt b/docs/fn_api_0.3.txt new file mode 100644 index 0000000..a688359 --- /dev/null +++ b/docs/fn_api_0.3.txt @@ -0,0 +1,596 @@ +[]========================================================================[] +* * +* ᠭ Flex Navigator API v1.xx ࠧࠡ稪 Flx-Plugins * +* doc v0.3 10.07.2002 * +* * +[]========================================================================[] + + + + +[]------------------------------------------------------------------------[] + + ClearScreen - 楤 ⪨ 0- 㦭 梥⮬. + + 室: + A - 梥 ⪨ (00-0Fh) + 室: + - + +[]------------------------------------------------------------------------[] + + MakeWindow - 楤 ᮧ ᪮ + + 室: + (SP) - ⥫ + 室: + - + + ࠧ 맮 ⮩ 楤 ணࠬ ᫥ ⥫ . + 楤 ந室 , ᫥饬 ⥫. + + ਬ: + call MakeWindow + ... ; ⥫ + + + ⥫ : + +00 (1) 䫠 뢮 : 0 - ࠭ + (ᯮ ࠭ ) + 1 - ࠭ + (ᯮ ) + 0x7F - ⠭ + (䫠 㦨 + ⥪饣 ) + +01 (2) न x 뢮 (0 - 639) + +03 (2) न y 뢮 (0 - 255) + +05 (2) x (0 - 639) + +07 (2) y (0 - 255) + + ' ଠ: + +00 (1) ⨯ + +01 ... ⥫ + + ' : + 0. +00 (1) == 0 - ᯨ᪠ '⮢. ᫥ ⮣ + 㭪 頥 ࠢ. + + 1. +00 (1) == 1 - ⥪⮢ ப + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + +05 (1) 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + +06 ... ⥪⮢ ப ( ப - 0) + + 2. +00 (1) == 2 - אַ㣮쭮 ᪮ + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + +05 (2) x (0 - 639) + +07 (2) y (0 - 255) + +09 (1) 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + + 3. +00 (1) == 3 - ᮢ 㣫㡫񭭮 אַ㣮쭮 ᪮ + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + +05 (2) x (0 - 639) + +07 (2) y (0 - 255) + + 4. +00 (1) == 4 - ᮢ 㪫 אַ㣮쭮 ᪮ + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + +05 (2) x (0 - 639) + +07 (2) y (0 - 255) + + 5. +00 (1) == 5 - ᮢ ⥪⮬ + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + +05 (2) x (0 - 639) + +07 (2) y (0 - 255) + +09 (1) 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + +10 ... ⥪⮢ ப ( ப - 0) + + ! ⥪ ⢫ 権 + x + 4, y + 1 + + 6. +00 (1) == 6 - ᮢ ਧ⠫쭮 ࠧ⥫ + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + +05 (2) x (0 - 639) + + 7. +00 (1) == 7 - ᮢ ⨪쭮 ࠧ⥫ + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + +05 (2) y (0 - 255) + + 8. +00 (1) == 8 - ᮢ ஫ <- + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + + 9. +00 (1) == 9 - ᮢ ࠢ ஫ -> + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + + 10. +00 (1) == 10 - ᮢ 孥 ஫ ^ + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + + 11. +00 (1) == 11 - ᮢ ஫ + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + + +[]------------------------------------------------------------------------[] + + InvertRectan - 楤 梥 אַ㣮쭮 ᪮ + + 室: + HL - x न + BC - y न + HX - y + LX - x + D - ⥪騩 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + E - 㦭 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + 室: + - + + ᮦ 楤 祭 , ⮬ 訥 + אַ㣮쭨 ᮢ ᮡ ஢... ;) + +[]------------------------------------------------------------------------[] + + PrnTxtLnIFF - 楤 뢮 ⥪⮢ ப ᪨ ࠭ + 640x256 ० ࠧ୮ X + 室: + HL - ⥪⮢ ப ( ப - 0) + DE - 뢮 X + BC - 뢮 Y + A - 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + 室: + HL - , ᫥饣 ப + +[]------------------------------------------------------------------------[] + + PrnTxtLnNorm - 楤 뢮 ⥪⮢ ப ᪨ ࠭ + 640x256 + 室: + HL - ⥪⮢ ப ( ப - 0) + DE - 뢮 X + BC - 뢮 Y + A - 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + 室: + HL - , ᫥饣 ப + +[]------------------------------------------------------------------------[] + + PrnTxtLnNormC - 楤 뢮 ⥪⮢ ப ᪨ ࠭ + 640x256 ᫮ ᨬ + 室: + HL - ⥪⮢ ப + DE - 뢮 X + C - 뢮 Y + B - - ⠥ ᨬ + A - 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + 室: + HL - , ᫥饣 ᫥ ᨬ + +[]------------------------------------------------------------------------[] + + PrnRangPathL - 楤 뢮 ᮢ᪨ ⥩ ᪨ ࠭ + 640x256 ० ࠧ୮ X , ਦ + ( |-> ) + 室: + IX - - ᥫ 뢮 ப + HL - ⥪⮢ ப ( ப - 0) + DE - 뢮 X + BC - 뢮 Y + A - 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + 室: + - + + 楤 ࠬ⭮ 㪮稢 ᮢ᪨ 㦭 + ࠧ 饭 ४਩ ..\ + +[]------------------------------------------------------------------------[] + + PrnRangPathR - 楤 뢮 ᮢ᪨ ⥩ ᪨ ࠭ + 640x256 ० ࠧ୮ X , ਦ + ࠢ ( <-| ) + 室: + IX - - ᥫ 뢮 ப + HL - ⥪⮢ ப ( ப - 0) + DE - 뢮 X + BC - 뢮 Y + A - 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + 室: + - + + 楤 ࠬ⭮ 㪮稢 ᮢ᪨ 㦭 + ࠧ 饭 ४਩ ..\ + +[]------------------------------------------------------------------------[] + + PrnRangPathC - 楤 뢮 ᮢ᪨ ⥩ ᪨ ࠭ + 640x256 ० ࠧ୮ X , 業஢ + ⭮⥫쭮 ( <-|-> ) + 室: + IX - - ᥫ 뢮 ப + HL - ⥪⮢ ப ( ப - 0) + DE - 뢮 X + BC - 뢮 Y + A - 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + 室: + - + + 楤 ࠬ⭮ 㪮稢 ᮢ᪨ 㦭 + ࠧ 饭 ४਩ ..\ + +[]------------------------------------------------------------------------[] + + InputLine - 楤 ।஢ ப ᪮ ࠭ + 640x256 ० ࠧ୮ X + + 室: + IX - ⥫ ப + HL - ⥫ ⮢ ࠭ ( 誨) + 室: + - + + ⥫ ப: + +00 (1) ᨬ쭠 ப + +01 (1) 䫠 ⮢ + +02 (1) ⥪ X (樠 InputLine) + +03 (1) ⥪ add_x (樠 InputLine) + +04 (1) ⢮ ᨬ / ப + +05 (2) X ப ࠭ + +07 (2) Y ப ࠭ + +09 (2) X ப ࠭ + +0B (1) 梥 ப (d7-d4 梥 background, d3-d0 梥 foreground) + +0C ... ᠬ ப + + 楤 ⠡ ⮢ ࠭: + InpLnExtN - 楤 ଠ쭮 室 ।樨 + InpLnExtC - 楤 室 ।樨 cancel + (⠭ 砫 ப) + +[]------------------------------------------------------------------------[] + + InitScrBar - 楤 樠樨 ⥫ ஫ + + 室: + IX - ⥫ ஫ + 室: + - + + ⥫ ஫: + +00 (2) X ஫ (0-639) + +02 (2) Y ஫ (0-255) + +04 (2) ஫ + +06 (2) ⥪ ஫ (樠 InitScrBar) + +08 (2) 祩, 㤠 砫쭠 न + ᫨ 0, ᯮ + (ᯮ ⠡ ⮢ ࠭) + +10 (2) 祩, 㤠 筠 न + ᫨ 0, ᯮ + (ᯮ ⠡ ⮢ ࠭) + +12 (2) - ⮢ + +14 (2) 饥 - ⮢ + +16 (2) ࢠ + +[]------------------------------------------------------------------------[] + + PrnHScrBar - 楤 ਧ⠫쭮 ஫ + + 室: + IX - ⥫ ஫ (. ) + 室: + - + +[]------------------------------------------------------------------------[] + + PrnVScrBar - 楤 ⨪쭮 ஫ + + 室: + IX - ⥫ ஫ (. ) + 室: + - + +[]------------------------------------------------------------------------[] + + InitProcess - 楤 樠樨 ⥫ ᡠ + + 室: + IX - ⥫ ᡠ + 室: + - + + ⥫ ᡠ: + +00 (2) X ᡠ (0-639) + +02 (2) Y ᡠ (0-255) + +04 (2) ᡠ + +06 (2) 樥 (樠 InitProcess) + +08 (2) ४ 樥 (樠 InitProcess) + +10 (4) ᨬ (樠 InitProcess) + +14 (4) ⥪饥 (樠 InitProcess) + +18 (1) 梥 ᡠ + (d7-d4 梥 background, d3-d0 梥 foreground) + +[]------------------------------------------------------------------------[] + + PrnProcess - 楤 ᡠ + + 室: + IX - ⥫ ᡠ (. ) + 室: + - + +[]------------------------------------------------------------------------[] + + ResFire - 楤 , 饭 + + 室: + - + 室: + - + +[]------------------------------------------------------------------------[] + + TestCoords - 楤 ஢ન न ⠡ ⮢ + ࠭ + + 室: + IX - ⠡ ⮢ ࠭ + 室: + - + + ⠡ ⮢ ࠭: + +00 (2) x न + +02 (2) ࠢ x न + +04 (2) y न + +06 (2) y न + +08 (2) 䫠 + +10 (2) ࠡ稪 ⮬ + +12 (2) ࠡ稪 ⮬ ( ) + +14 (2) ࠡ稪 ⮬ (ࠢ ) + + ᫨ +00 == 0x8000 ⠥ 殬 ⠡ ⮢ ࠭ + + 䫠 : + d00 - + d01 - ࠡ + d02 - + d03 - + d04 - ணࠬ ᪠ + d05 - ணࠬ ᪠ + + d06 - ணࠬ ᪠ ࠢ + + d07 - 맢 㭪 । ᪮ ணࠬ + + d08 - 맢 㭪 । ᪮ ணࠬ + + d09 - 맢 㭪 । ᪮ ணࠬ + ࠢ + d15 - 䫠: 1 - 㡨 + +[]------------------------------------------------------------------------[] + + SetCMOSPrint - 楤 祭 /६ CMOS + + 室: + - 㤥 ᠭ + 室: + - +[]------------------------------------------------------------------------[] + + ResCMOSPrint - 楤 몫祭 /६ CMOS + + 室: + - 㤥 ᠭ + 室: + - + +[]------------------------------------------------------------------------[] + + SetClock - 楤 ⠭ + + 室: + - + 室: + - + +[]------------------------------------------------------------------------[] + + SetMouse - 楤 ⠭ ଠ + + 室: + - + 室: + - + +[]------------------------------------------------------------------------[] + + MoveBytes - 楤 ண ஢ + ᥫ 㢥祭 ᮢ + 室: + HL - 㤠 + DE - 㤠 + BC - ᪮쪮 + 室: + HL - (㤠 + ᪮쪮) + DE - (㤠 + ᪮쪮) + +[]------------------------------------------------------------------------[] + + MoveBytesUp - 楤 ண ஢ + ᥫ 㬥襭 ᮢ + 室: + HL - 㤠 + DE - 㤠 + BC - ᪮쪮 + 室: + HL - (㤠 - ᪮쪮) + DE - (㤠 - ᪮쪮) + +[]------------------------------------------------------------------------[] + + Mult8 - 楤 㬭 8 * 8 bit = 16 bit + + 室: + E * C + 室: + HL - १ + +[]------------------------------------------------------------------------[] + + Mult16X8 - 楤 㬭 16 * 8 bit = 24 bit + + 室: + DE * C + 室: + A, HL - १ + +[]------------------------------------------------------------------------[] + + Mult16 - 楤 㬭 16 * 16 bit = 16 bit + + 室: + DE * BC + 室: + HL - १ + +[]------------------------------------------------------------------------[] + + Mult16X16 - 楤 㬭 16 * 16 bit = 32 bit + + 室: + DE * BC + 室: + HL, DE - १ + +[]------------------------------------------------------------------------[] + + Mult32 - 楤 㬭 32 * 16 bit = 32 bit + + 室: + HL, DE * BC + 室: + HL, DE - १ + +[]------------------------------------------------------------------------[] + + Divis16X16 - 楤 16 / 16 bit = 16.16 bit + + 室: + BC / DE + 室: + BC - १ + HL - ⮪ + +[]------------------------------------------------------------------------[] + + Divis24X16 - 楤 24 / 16 bit = 8.16 bit + + 室: + HL, C / DE + 室: + A - १ + HL - ⮪ + +[]------------------------------------------------------------------------[] + + Divis32X16 - 楤 32 / 16 bit = 16.16 bit + + 室: + HL, DE / BC + 室: + DE - १ + HL - ⮪ + +[]------------------------------------------------------------------------[] + + Divis32 - 楤 32 / 16 bit = 32.16 bit + + 室: + HL, DE / BC + 室: + HL, DE - १ + BC - ⮪ + +[]------------------------------------------------------------------------[] + + ConvNumTxt32 - 楤 樨 ᫠ 32 bit ⥪ + + 室: + BC, HL - ᫮ 32 bit + DE - + 室: + DE - ᫥饣 ᫮ + +[]------------------------------------------------------------------------[] + + ConvNumTxt16 - 楤 樨 ᫠ 16 bit ⥪ + + 室: + HL - ᫮ 16 bit + DE - + 室: + DE - ᫥饣 ᫮ + +[]------------------------------------------------------------------------[] + + ConvNumTxt8 - 楤 樨 ᫠ 8 bit ⥪ + + 室: + A - ᫮ 8 bit + DE - + 室: + DE - ᫥饣 ᫮ + +[]------------------------------------------------------------------------[] + + ConvTxtNum32 - 楤 樨 ⥪ ᫮ 32 bit + + 室: + DE - ⥪ ( ப - 0) + 室: + HL, IX - ᫮ + C flag - 訡 + +[]------------------------------------------------------------------------[] + + ConvTxtNum16 - 楤 樨 ⥪ ᫮ 16 bit + + 室: + DE - ⥪ ( ப - 0) + 室: + HL - ᫮ + C flag - 訡 + +[]------------------------------------------------------------------------[] + + DOSError - 楤 뢮 訡 ( 訡) + + 室: + A - 訡 + 室: + - + +[]------------------------------------------------------------------------[] + + + + + +10 july 2002 +Anton Enin (C) Copyright 2002 R-lab +᫨ e-mail: r-lab@mail.ru ਭ 㬥. \ No newline at end of file diff --git a/docs/fn_api_0.4.txt b/docs/fn_api_0.4.txt new file mode 100644 index 0000000..8047424 --- /dev/null +++ b/docs/fn_api_0.4.txt @@ -0,0 +1,611 @@ +[]========================================================================[] +* * +* ᠭ Flex Navigator API v1.xx ࠧࠡ稪 Flx-Plugins * +* doc v0.4 13.07.2002 * +* * +[]========================================================================[] + + + + +[]------------------------------------------------------------------------[] + + ClearScreen - 楤 ⪨ 0- 㦭 梥⮬. + + 室: + A - 梥 ⪨ (00-0Fh) + 室: + - + +[]------------------------------------------------------------------------[] + + MakeWindow - 楤 ᮧ ᪮ + + 室: + (SP) - ⥫ + 室: + - + + ࠧ 맮 ⮩ 楤 ணࠬ ᫥ ⥫ . + 楤 ந室 , ᫥饬 ⥫. + + ਬ: + call MakeWindow + ... ; ⥫ + + + ⥫ : + +00 (1) 䫠 뢮 : 0 - ࠭ + (ᯮ ࠭ ) + 1 - ࠭ + (ᯮ ) + 0x7F - ⠭ + (䫠 㦨 + ⥪饣 ) + +01 (2) न x 뢮 (0 - 639) + +03 (2) न y 뢮 (0 - 255) + +05 (2) x (0 - 639) + +07 (2) y (0 - 255) + + ' ଠ: + +00 (1) ⨯ + +01 ... ⥫ + + ' : + 0. +00 (1) == 0 - ᯨ᪠ '⮢. ᫥ ⮣ + 㭪 頥 ࠢ. + + 1. +00 (1) == 1 - ⥪⮢ ப + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + +05 (1) 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + +06 ... ⥪⮢ ப ( ப - 0) + + 2. +00 (1) == 2 - אַ㣮쭮 ᪮ + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + +05 (2) x (0 - 639) + +07 (2) y (0 - 255) + +09 (1) 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + + 3. +00 (1) == 3 - ᮢ 㣫㡫񭭮 אַ㣮쭮 ᪮ + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + +05 (2) x (0 - 639) + +07 (2) y (0 - 255) + + 4. +00 (1) == 4 - ᮢ 㪫 אַ㣮쭮 ᪮ + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + +05 (2) x (0 - 639) + +07 (2) y (0 - 255) + + 5. +00 (1) == 5 - ᮢ ⥪⮬ + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + +05 (2) x (0 - 639) + +07 (2) y (0 - 255) + +09 (1) 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + +10 ... ⥪⮢ ப ( ப - 0) + + ! ⥪ ⢫ 権 + x + 4, y + 1 + + 6. +00 (1) == 6 - ᮢ ਧ⠫쭮 ࠧ⥫ + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + +05 (2) x (0 - 639) + + 7. +00 (1) == 7 - ᮢ ⨪쭮 ࠧ⥫ + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + +05 (2) y (0 - 255) + + 8. +00 (1) == 8 - ᮢ ஫ <- + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + + 9. +00 (1) == 9 - ᮢ ࠢ ஫ -> + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + + 10. +00 (1) == 10 - ᮢ 孥 ஫ ^ + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + + 11. +00 (1) == 11 - ᮢ ஫ + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + + +[]------------------------------------------------------------------------[] + + InvertRectan - 楤 梥 אַ㣮쭮 ᪮ + + 室: + HL - x न + BC - y न + HX - y + LX - x + D - ⥪騩 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + E - 㦭 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + 室: + - + + ᮦ 楤 祭 , ⮬ 訥 + אַ㣮쭨 ᮢ ᮡ ஢... ;) + +[]------------------------------------------------------------------------[] + + PrnTxtLnIFF - 楤 뢮 ⥪⮢ ப ᪨ ࠭ + 640x256 ० ࠧ୮ X + 室: + HL - ⥪⮢ ப ( ப - 0) + DE - 뢮 X + BC - 뢮 Y + A - 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + 室: + HL - , ᫥饣 ப + +[]------------------------------------------------------------------------[] + + PrnTxtLnNorm - 楤 뢮 ⥪⮢ ப ᪨ ࠭ + 640x256 + 室: + HL - ⥪⮢ ப ( ப - 0) + DE - 뢮 X + BC - 뢮 Y + A - 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + 室: + HL - , ᫥饣 ப + +[]------------------------------------------------------------------------[] + + PrnTxtLnNormC - 楤 뢮 ⥪⮢ ப ᪨ ࠭ + 640x256 ᫮ ᨬ + 室: + HL - ⥪⮢ ப + DE - 뢮 X + C - 뢮 Y + B - - ⠥ ᨬ + A - 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + 室: + HL - , ᫥饣 ᫥ ᨬ + +[]------------------------------------------------------------------------[] + + PrnRangPathL - 楤 뢮 ᮢ᪨ ⥩ ᪨ ࠭ + 640x256 ० ࠧ୮ X , ਦ + ( |-> ) + 室: + IX - - ᥫ 뢮 ப + HL - ⥪⮢ ப ( ப - 0) + DE - 뢮 X + BC - 뢮 Y + A - 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + 室: + - + + 楤 ࠬ⭮ 㪮稢 ᮢ᪨ 㦭 + ࠧ 饭 ४਩ ..\ + +[]------------------------------------------------------------------------[] + + PrnRangPathR - 楤 뢮 ᮢ᪨ ⥩ ᪨ ࠭ + 640x256 ० ࠧ୮ X , ਦ + ࠢ ( <-| ) + 室: + IX - - ᥫ 뢮 ப + HL - ⥪⮢ ப ( ப - 0) + DE - 뢮 X + BC - 뢮 Y + A - 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + 室: + - + + 楤 ࠬ⭮ 㪮稢 ᮢ᪨ 㦭 + ࠧ 饭 ४਩ ..\ + +[]------------------------------------------------------------------------[] + + PrnRangPathC - 楤 뢮 ᮢ᪨ ⥩ ᪨ ࠭ + 640x256 ० ࠧ୮ X , 業஢ + ⭮⥫쭮 ( <-|-> ) + 室: + IX - - ᥫ 뢮 ப + HL - ⥪⮢ ப ( ப - 0) + DE - 뢮 X + BC - 뢮 Y + A - 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + 室: + - + + 楤 ࠬ⭮ 㪮稢 ᮢ᪨ 㦭 + ࠧ 饭 ४਩ ..\ + +[]------------------------------------------------------------------------[] + + InputLine - 楤 ।஢ ப ᪮ ࠭ + 640x256 ० ࠧ୮ X + + 室: + IX - ⥫ ப + HL - ⥫ ⮢ ࠭ ( 誨) + 室: + - + + ⥫ ப: + +00 (1) ᨬ쭠 ப + +01 (1) 䫠 ⮢ + +02 (1) ⥪ X (樠 InputLine) + +03 (1) ⥪ add_x (樠 InputLine) + +04 (1) ⢮ ᨬ / ப + +05 (2) X ப ࠭ + +07 (2) Y ப ࠭ + +09 (2) X ப ࠭ + +0B (1) 梥 ப (d7-d4 梥 background, d3-d0 梥 foreground) + +0C ... ᠬ ப + + 楤 ⠡ ⮢ ࠭: + InpLnExtN - 楤 ଠ쭮 室 ।樨 + InpLnExtC - 楤 室 ।樨 cancel + (⠭ 砫 ப) + +[]------------------------------------------------------------------------[] + + InitScrBar - 楤 樠樨 ⥫ ஫ + + 室: + IX - ⥫ ஫ + 室: + - + + ⥫ ஫: + +00 (2) X ஫ (0-639) + +02 (2) Y ஫ (0-255) + +04 (2) ஫ + +06 (2) ⥪ ஫ (樠 InitScrBar) + +08 (2) 祩, 㤠 砫쭠 न + ᫨ 0, ᯮ + (ᯮ ⠡ ⮢ ࠭) + +10 (2) 祩, 㤠 筠 न + ᫨ 0, ᯮ + (ᯮ ⠡ ⮢ ࠭) + +12 (2) - ⮢ + +14 (2) 饥 - ⮢ + +16 (2) ࢠ + +[]------------------------------------------------------------------------[] + + PrnHScrBar - 楤 ਧ⠫쭮 ஫ + + 室: + IX - ⥫ ஫ (. ) + 室: + - + +[]------------------------------------------------------------------------[] + + PrnVScrBar - 楤 ⨪쭮 ஫ + + 室: + IX - ⥫ ஫ (. ) + 室: + - + +[]------------------------------------------------------------------------[] + + InitProcess - 楤 樠樨 ⥫ ᡠ + + 室: + IX - ⥫ ᡠ + 室: + - + + ⥫ ᡠ: + +00 (2) X ᡠ (0-639) + +02 (2) Y ᡠ (0-255) + +04 (2) ᡠ + +06 (2) 樥 (樠 InitProcess) + +08 (2) ४ 樥 (樠 InitProcess) + +10 (4) ᨬ (樠 InitProcess) + +14 (4) ⥪饥 (樠 InitProcess) + +18 (1) 梥 ᡠ + (d7-d4 梥 background, d3-d0 梥 foreground) + +[]------------------------------------------------------------------------[] + + PrnProcess - 楤 ᡠ + + 室: + IX - ⥫ ᡠ (. ) + 室: + - + +[]------------------------------------------------------------------------[] + + ResFire - 楤 , 饭 + + 室: + - + 室: + - + +[]------------------------------------------------------------------------[] + + TestCoords - 楤 ஢ન न ⠡ ⮢ + ࠭ + + 室: + IX - ⠡ ⮢ ࠭ + 室: + - + + ⠡ ⮢ ࠭: + +00 (2) x न + +02 (2) ࠢ x न + +04 (2) y न + +06 (2) y न + +08 (2) 䫠 + +10 (2) ࠡ稪 ⮬ + +12 (2) ࠡ稪 ⮬ ( ) + +14 (2) ࠡ稪 ⮬ (ࠢ ) + + ᫨ +00 == 0x8000 ⠥ 殬 ⠡ ⮢ ࠭ + + 䫠 : + d00 - + d01 - ࠡ + d02 - + d03 - + d04 - ணࠬ ᪠ + (.. אַ㣮 + 㤠 ⥪ ⢫ + 室 , 室 +10) + d05 - ணࠬ ᪠ + + (.. ⨨ אַ㣮쭮 + 㤠 ⥪ ⢫ + 室 , 室 +12) + d06 - ணࠬ ᪠ ࠢ + + (.. ⨨ ࠢ אַ㣮쭮 + 㤠 ⥪ ⢫ + 室 , 室 +14) + d07 - 맢 㭪 । ᪮ ணࠬ + + (.. אַ㣮 + 㤠 ᫥ ࠭) + d08 - 맢 㭪 । ᪮ ணࠬ + + (.. ⨨ אַ㣮쭮 + 㤠 ᫥ ࠭) + d09 - 맢 㭪 । ᪮ ணࠬ + ࠢ + (.. ⨨ ࠢ אַ㣮쭮 + 㤠 ᫥ ࠭) + d15 - 䫠: 1 - 㡨 + +[]------------------------------------------------------------------------[] + + SetCMOSPrint - 楤 祭 /६ CMOS + + 室: + - 㤥 ᠭ + 室: + - +[]------------------------------------------------------------------------[] + + ResCMOSPrint - 楤 몫祭 /६ CMOS + + 室: + - 㤥 ᠭ + 室: + - + +[]------------------------------------------------------------------------[] + + SetClock - 楤 ⠭ + + 室: + - + 室: + - + +[]------------------------------------------------------------------------[] + + SetMouse - 楤 ⠭ ଠ + + 室: + - + 室: + - + +[]------------------------------------------------------------------------[] + + MoveBytes - 楤 ண ஢ + ᥫ 㢥祭 ᮢ + 室: + HL - 㤠 + DE - 㤠 + BC - ᪮쪮 + 室: + HL - (㤠 + ᪮쪮) + DE - (㤠 + ᪮쪮) + +[]------------------------------------------------------------------------[] + + MoveBytesUp - 楤 ண ஢ + ᥫ 㬥襭 ᮢ + 室: + HL - 㤠 + DE - 㤠 + BC - ᪮쪮 + 室: + HL - (㤠 - ᪮쪮) + DE - (㤠 - ᪮쪮) + +[]------------------------------------------------------------------------[] + + Mult8 - 楤 㬭 8 * 8 bit = 16 bit + + 室: + E * C + 室: + HL - १ + +[]------------------------------------------------------------------------[] + + Mult16X8 - 楤 㬭 16 * 8 bit = 24 bit + + 室: + DE * C + 室: + A, HL - १ + +[]------------------------------------------------------------------------[] + + Mult16 - 楤 㬭 16 * 16 bit = 16 bit + + 室: + DE * BC + 室: + HL - १ + +[]------------------------------------------------------------------------[] + + Mult16X16 - 楤 㬭 16 * 16 bit = 32 bit + + 室: + DE * BC + 室: + HL, DE - १ + +[]------------------------------------------------------------------------[] + + Mult32 - 楤 㬭 32 * 16 bit = 32 bit + + 室: + HL, DE * BC + 室: + HL, DE - १ + +[]------------------------------------------------------------------------[] + + Divis16X16 - 楤 16 / 16 bit = 16.16 bit + + 室: + BC / DE + 室: + BC - १ + HL - ⮪ + +[]------------------------------------------------------------------------[] + + Divis24X16 - 楤 24 / 16 bit = 8.16 bit + + 室: + HL, C / DE + 室: + A - १ + HL - ⮪ + +[]------------------------------------------------------------------------[] + + Divis32X16 - 楤 32 / 16 bit = 16.16 bit + + 室: + HL, DE / BC + 室: + DE - १ + HL - ⮪ + +[]------------------------------------------------------------------------[] + + Divis32 - 楤 32 / 16 bit = 32.16 bit + + 室: + HL, DE / BC + 室: + HL, DE - १ + BC - ⮪ + +[]------------------------------------------------------------------------[] + + ConvNumTxt32 - 楤 樨 ᫠ 32 bit ⥪ + + 室: + BC, HL - ᫮ 32 bit + DE - + 室: + DE - ᫥饣 ᫮ + +[]------------------------------------------------------------------------[] + + ConvNumTxt16 - 楤 樨 ᫠ 16 bit ⥪ + + 室: + HL - ᫮ 16 bit + DE - + 室: + DE - ᫥饣 ᫮ + +[]------------------------------------------------------------------------[] + + ConvNumTxt8 - 楤 樨 ᫠ 8 bit ⥪ + + 室: + A - ᫮ 8 bit + DE - + 室: + DE - ᫥饣 ᫮ + +[]------------------------------------------------------------------------[] + + ConvTxtNum32 - 楤 樨 ⥪ ᫮ 32 bit + + 室: + DE - ⥪ ( ப - 0) + 室: + HL, IX - ᫮ + C flag - 訡 + +[]------------------------------------------------------------------------[] + + ConvTxtNum16 - 楤 樨 ⥪ ᫮ 16 bit + + 室: + DE - ⥪ ( ப - 0) + 室: + HL - ᫮ + C flag - 訡 + +[]------------------------------------------------------------------------[] + + DOSError - 楤 뢮 訡 ( 訡) + + 室: + A - 訡 + 室: + - + +[]------------------------------------------------------------------------[] + + + + + +13 july 2002 +Anton Enin (C) Copyright 2002 R-lab +᫨ e-mail: r-lab@mail.ru ਭ 㬥. \ No newline at end of file diff --git a/docs/fn_api_0.5.txt b/docs/fn_api_0.5.txt new file mode 100644 index 0000000..db053bf --- /dev/null +++ b/docs/fn_api_0.5.txt @@ -0,0 +1,671 @@ +[]========================================================================[] +* * +* ᠭ Flex Navigator API v1.xx ࠧࠡ稪 Flx-Plugins * +* doc v0.5 31.03.2025 ( ) * +* * +[]========================================================================[] + + 㭪 ⢫ १ 室 砫 + Flex Navigator ᡮન ᨬ . + 室 稭 JUMPS + 3 + BASE_ADDR + 3. 砫 ⠡ ஢ ࠭ 256 . + 室 ᪠ ᠬ . + ⠡ 室 192 , ᫥ ⠡ ᯮ + ६ Flex Navigator 㯠 . + ࠢ쭮 ࠡ ᡮથ । 㤨 + 䠩 fn_const.a80 + +[]------------------------------------------------------------------------[] + + JUMPS.ClearScreen - 楤 ⪨ 0- ࠭ 㦭 梥⮬. + + 室: + A - 梥 ⪨ (00-0Fh) + 室: + - + +[]------------------------------------------------------------------------[] + + JUMPS.MakeWindow - 楤 ᮧ ᪮ + + 室: + (SP) - ⥫ + 室: + - + + ࠧ 맮 ⮩ 楤 ணࠬ ᫥ ⥫ . + 楤 ந室 , ᫥饬 ⥫. + + ਬ: + call MakeWindow + ... ; ⥫ + + + ⥫ : + +00 (1) 䫠 뢮 : 0 - ࠭ + (ᯮ ࠭ ) + 1 - ࠭ + (ᯮ ) + 0x7F - ⠭ + (䫠 㦨 + ⥪饣 ) + 0x8x - ਢ離 ⥫ + +01 (2) न x 뢮 (0 - 639) + +03 (2) न y 뢮 (0 - 255) + +05 (2) ਭ (0 - 639) + +07 (2) (0 - 255) + + ' ଠ: + +00 (1) ⨯ ꥪ + +01 ... ⥫ + + ' : + 0. +00 (1) == 0 - ᯨ᪠ '⮢. ᫥ ⮣ + 㭪 頥 ࠢ. + + 1. +00 (1) == 1 - ⥪⮢ ப + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + +05 (1) 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + +06 ... ⥪⮢ ப ( ப - 0) + + 2. +00 (1) == 2 - אַ㣮쭮 ᪮ + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + +05 (2) x (0 - 639) + +07 (2) y (0 - 255) + +09 (1) 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + + 3. +00 (1) == 3 - ᮢ 㣫㡫񭭮 אַ㣮쭮 ᪮ + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + +05 (2) x (0 - 639) + +07 (2) y (0 - 255) + + 4. +00 (1) == 4 - ᮢ 㪫 אַ㣮쭮 ᪮ + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + +05 (2) x (0 - 639) + +07 (2) y (0 - 255) + + 5. +00 (1) == 5 - ᮢ ⥪⮬ + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + +05 (2) x (0 - 639) + +07 (2) y (0 - 255) + +09 (1) 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + +10 ... ⥪⮢ ப ( ப - 0) + + ! ⥪ ⢫ 権 + x + 4, y + 1 + + 6. +00 (1) == 6 - ᮢ ਧ⠫쭮 ࠧ⥫ + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + +05 (2) x (0 - 639) + + 7. +00 (1) == 7 - ᮢ ⨪쭮 ࠧ⥫ + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + +05 (2) y (0 - 255) + + 8. +00 (1) == 8 - ᮢ ஫ <- + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + + 9. +00 (1) == 9 - ᮢ ࠢ ஫ -> + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + + 10. +00 (1) == 10 - ᮢ 孥 ஫ ^ + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + + 11. +00 (1) == 11 - ᮢ ஫ + +01 (2) ᬥ饭 x 砫 (0 - 639) + +03 (2) ᬥ饭 y 砫 (0 - 255) + +[]------------------------------------------------------------------------[] + + JUMPS.InvertRectan - 楤 梥 אַ㣮쭮 ᪮ + + 室: + HL - x न + BC - y न + HX - y + LX - x + D - ⥪騩 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + E - 㦭 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + 室: + - + + ᮦ 楤 祭 , ⮬ 訥 + אַ㣮쭨 ᮢ ᮡ ஢... ;) + +[]------------------------------------------------------------------------[] + + JUMPS.PrnTxtLnIFF - 楤 뢮 ⥪⮢ ப ᪨ + ࠭ 640x256 ० ࠧ୮ X + + 室: + HL - ⥪⮢ ப ( ப - 0) + DE - 뢮 X + BC - 뢮 Y + A - 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + 室: + HL - , ᫥饣 ப + +[]------------------------------------------------------------------------[] + + JUMPS.PrnTxtLnNorm - 楤 뢮 ⥪⮢ ப ᪨ + ࠭ 640x256 + + 室: + HL - ⥪⮢ ப ( ப - 0) + DE - 뢮 X + BC - 뢮 Y + A - 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + 室: + HL - , ᫥饣 ப + +[]------------------------------------------------------------------------[] + + JUMPS.PrnTxtLnNormC - 楤 뢮 ⥪⮢ ப ᪨ + ࠭ 640x256 ᫮ ᨬ + + 室: + HL - ⥪⮢ ப + DE - 뢮 X + C - 뢮 Y + B - - ⠥ ᨬ + A - 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + 室: + HL - , ᫥饣 ᫥ ᨬ + +[]------------------------------------------------------------------------[] + + JUMPS.PrnRangPathL - 楤 뢮 ᮢ᪨ ⥩ ᪨ + ࠭ 640x256 ० ࠧ୮ X , ਦ + ( |-> ) + + 室: + IX - - ᥫ 뢮 ப + HL - ⥪⮢ ப ( ப - 0) + DE - 뢮 X + BC - 뢮 Y + A - 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + 室: + - + + 楤 ࠬ⭮ 㪮稢 ᮢ᪨ 㦭 + ࠧ 饭 ४਩ ..\ + +[]------------------------------------------------------------------------[] + + JUMPS.PrnRangPathR - 楤 뢮 ᮢ᪨ ⥩ ᪨ + ࠭ 640x256 ० ࠧ୮ X , ਦ + ࠢ ( <-| ) + + 室: + IX - - ᥫ 뢮 ப + HL - ⥪⮢ ப ( ப - 0) + DE - 뢮 X + BC - 뢮 Y + A - 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + 室: + - + + 楤 ࠬ⭮ 㪮稢 ᮢ᪨ 㦭 + ࠧ 饭 ४਩ ..\ + +[]------------------------------------------------------------------------[] + + JUMPS.PrnRangPathC - 楤 뢮 ᮢ᪨ ⥩ ᪨ + ࠭ 640x256 ० ࠧ୮ X , 業஢ + ⭮⥫쭮 ( <-|-> ) + + 室: + IX - - ᥫ 뢮 ப + HL - ⥪⮢ ப ( ப - 0) + DE - 뢮 X + BC - 뢮 Y + A - 梥 + (d7-d4 梥 background, d3-d0 梥 foreground) + 室: + - + + 楤 ࠬ⭮ 㪮稢 ᮢ᪨ 㦭 + ࠧ 饭 ४਩ ..\ + +[]------------------------------------------------------------------------[] + + JUMPS.InputLine - 楤 ।஢ ப ᪮ + ࠭ 640x256 ० ࠧ୮ X + + 室: + IX - ⥫ ப + HL - ⥫ ⮢ ࠭ ( 誨) + 室: + - + + ⥫ ப: + +00 (1) ᨬ쭠 ப + +01 (1) 䫠 ⮢ + +02 (1) ⥪ X (樠 InputLine) + +03 (1) ⥪ add_x (樠 InputLine) + +04 (1) ⢮ ᨬ / ப + +05 (2) X ப ࠭ + +07 (2) Y ப ࠭ + +09 (2) X ப ࠭ + +0B (1) 梥 ப (d7-d4 梥 background, d3-d0 梥 foreground) + +0C ... ᠬ ப + + 楤 ⠡ ⮢ ࠭: + InpLnExtN - 楤 ଠ쭮 室 ।樨 + InpLnExtC - 楤 室 ।樨 cancel + (⠭ 砫 ப) + +[]------------------------------------------------------------------------[] + + JUMPS.InpLnExtN + +[]------------------------------------------------------------------------[] + + JUMPS.InpLnExtC + +[]------------------------------------------------------------------------[] + + JUMPS.DOSError - 楤 뢮 訡 ( DOS 訡) + + 室: + A - 訡 + 室: + - + +[]------------------------------------------------------------------------[] + + JUMPS.InitScrBar - 楤 樠樨 ⥫ ஫ + + 室: + IX - ⥫ ஫ + 室: + - + + ⥫ ஫: + +00 (2) X ஫ (0-639) + +02 (2) Y ஫ (0-255) + +04 (2) ஫ + +06 (2) ⥪ ஫ (樠 InitScrBar) + +08 (2) 祩, 㤠 砫쭠 न + ᫨ 0, ᯮ + (ᯮ ⠡ ⮢ ࠭) + +10 (2) 祩, 㤠 筠 न + ᫨ 0, ᯮ + (ᯮ ⠡ ⮢ ࠭) + +12 (2) - ⮢ + +14 (2) 饥 - ⮢ + +16 (2) ࢠ + +[]------------------------------------------------------------------------[] + + JUMPS.PrnHScrBar - 楤 ਧ⠫쭮 ஫ + + 室: + IX - ⥫ ஫ (. ) + 室: + - + +[]------------------------------------------------------------------------[] + + JUMPS.PrnVScrBar - 楤 ⨪쭮 ஫ + + 室: + IX - ⥫ ஫ (. ) + 室: + - + +[]------------------------------------------------------------------------[] + + JUMPS.InitProcess - 楤 樠樨 ⥫ ᡠ + + 室: + IX - ⥫ ᡠ + 室: + - + + ⥫ ᡠ: + +00 (2) X ᡠ (0-639) + +02 (2) Y ᡠ (0-255) + +04 (2) ᡠ + +06 (2) 樥 (樠 InitProcess) + +08 (2) ४ 樥 (樠 InitProcess) + +10 (4) ᨬ (樠 InitProcess) + +14 (4) ⥪饥 (樠 InitProcess) + +18 (1) 梥 ᡠ + (d7-d4 梥 background, d3-d0 梥 foreground) + +[]------------------------------------------------------------------------[] + + JUMPS.PrnProcess - 楤 ᡠ + + 室: + IX - ⥫ ᡠ (. ) + 室: + - + +[]------------------------------------------------------------------------[] + + JUMPS.InitScrollBar + +[]------------------------------------------------------------------------[] + + JUMPS.MenuWork + +[]------------------------------------------------------------------------[] + + 3 室 (12 ) १ࢨ஢ + RET (12 0xC9) + +[]------------------------------------------------------------------------[] + + JUMPS.ResFire - 楤 , + 饭 + + 室: + - + 室: + - + +[]------------------------------------------------------------------------[] + + JUMPS.TestCoords - 楤 ஢ન न ⠡ + ⮢ ࠭ + + 室: + IX - ⠡ ⮢ ࠭ + 室: + - + + ⠡ ⮢ ࠭: + +00 (2) x न + +02 (2) ࠢ x न + +04 (2) y न + +06 (2) y न + +08 (2) 䫠 + +10 (2) ࠡ稪 ⮬ + +12 (2) ࠡ稪 ⮬ ( ) + +14 (2) ࠡ稪 ⮬ (ࠢ ) + + ᫨ +00 == 0x8000 ⠥ 殬 ⠡ ⮢ ࠭ + + 䫠 : + d00 - + d01 - ࠡ + d02 - + d03 - + d04 - ணࠬ ᪠ + (.. אַ㣮 + 㤠 ⥪ ⢫ + 室 , 室 +10) + d05 - ணࠬ ᪠ + + (.. ⨨ אַ㣮쭮 + 㤠 ⥪ ⢫ + 室 , 室 +12) + d06 - ணࠬ ᪠ ࠢ + + (.. ⨨ ࠢ אַ㣮쭮 + 㤠 ⥪ ⢫ + 室 , 室 +14) + d07 - 맢 㭪 । ᪮ ணࠬ + + (.. אַ㣮 + 㤠 ᫥ ࠭) + d08 - 맢 㭪 । ᪮ ணࠬ + + (.. ⨨ אַ㣮쭮 + 㤠 ᫥ ࠭) + d09 - 맢 㭪 । ᪮ ணࠬ + ࠢ + (.. ⨨ ࠢ אַ㣮쭮 + 㤠 ᫥ ࠭) + d15 - 䫠: 1 - 㡨 + +[]------------------------------------------------------------------------[] + + JUMPS.SetCMOSPrint - 楤 祭 /६ CMOS + + 室: + - 㤥 ᠭ + 室: + - +[]------------------------------------------------------------------------[] + + JUMPS.ResCMOSPrint - 楤 몫祭 /६ CMOS + + 室: + - 㤥 ᠭ + 室: + - + +[]------------------------------------------------------------------------[] + + JUMPS.SetClock - 楤 ⠭ + + 室: + - + 室: + - + +[]------------------------------------------------------------------------[] + + JUMPS.SetMouse - 楤 ⠭ ଠ + + 室: + - + 室: + - + +[]------------------------------------------------------------------------[] + + 4 室 (12 ) १ࢨ஢ + RET (12 0xC9) + +[]------------------------------------------------------------------------[] + + JUMPS.ConvNumTxt40 + +[]------------------------------------------------------------------------[] + + JUMPS.MoveBytes - 楤 ண ஢ + ᥫ 㢥祭 ᮢ + + 室: + HL - 㤠 + DE - 㤠 + BC - ᪮쪮 + 室: + HL - (㤠 + ᪮쪮) + DE - (㤠 + ᪮쪮) + +[]------------------------------------------------------------------------[] + + JUMPS.MoveBytesUp - 楤 ண ஢ + ᥫ 㬥襭 ᮢ + + 室: + HL - 㤠 + DE - 㤠 + BC - ᪮쪮 + 室: + HL - (㤠 - ᪮쪮) + DE - (㤠 - ᪮쪮) + +[]------------------------------------------------------------------------[] + + JUMPS.Mult8 - 楤 㬭 + 8 * 8 bit = 16 bit + + 室: + E * C + 室: + HL - १ + +[]------------------------------------------------------------------------[] + + JUMPS.Mult16X8 - 楤 㬭 + 16 * 8 bit = 24 bit + + 室: + DE * C + 室: + A, HL - १ + +[]------------------------------------------------------------------------[] + + JUMPS.Mult16 - 楤 㬭 + 16 * 16 bit = 16 bit + + 室: + DE * BC + 室: + HL - १ + +[]------------------------------------------------------------------------[] + + JUMPS.Mult16X16 - 楤 㬭 + 16 * 16 bit = 32 bit + + 室: + DE * BC + 室: + HL, DE - १ + +[]------------------------------------------------------------------------[] + + JUMPS.Mult32 - 楤 㬭 + 32 * 16 bit = 32 bit + + 室: + HL, DE * BC + 室: + HL, DE - १ + +[]------------------------------------------------------------------------[] + + JUMPS.Divis16X16 - 楤 + 16 / 16 bit = 16.16 bit + + 室: + BC / DE + 室: + BC - १ + HL - ⮪ + +[]------------------------------------------------------------------------[] + + JUMPS.Divis24X16 - 楤 + 24 / 16 bit = 8.16 bit + + 室: + HL, C / DE + 室: + A - १ + HL - ⮪ + +[]------------------------------------------------------------------------[] + + JUMPS.Divis32X16 - 楤 + 32 / 16 bit = 16.16 bit + + 室: + HL, DE / BC + 室: + DE - १ + HL - ⮪ + +[]------------------------------------------------------------------------[] + + JUMPS.Divis32 - 楤 + 32 / 16 bit = 32.16 bit + + 室: + HL, DE / BC + 室: + HL, DE - १ + BC - ⮪ + +[]------------------------------------------------------------------------[] + + JUMPS.ConvNumTxt32 - 楤 樨 ᫠ + 32 bit ⥪ + + 室: + BC, HL - ᫮ 32 bit + DE - + 室: + DE - ᫥饣 ᫮ + +[]------------------------------------------------------------------------[] + + JUMPS.ConvNumTxt16 - 楤 樨 ᫠ + 16 bit ⥪ + + 室: + HL - ᫮ 16 bit + DE - + 室: + DE - ᫥饣 ᫮ + +[]------------------------------------------------------------------------[] + + JUMPS.ConvNumTxt8 - 楤 樨 ᫠ + 8 bit ⥪ + + 室: + A - ᫮ 8 bit + DE - + 室: + DE - ᫥饣 ᫮ + +[]------------------------------------------------------------------------[] + + JUMPS.ConvTxtNum32 - 楤 樨 ⥪ + ᫮ 32 bit + + 室: + DE - ⥪ ( ப - 0) + 室: + HL, IX - ᫮ + C flag - 訡 + +[]------------------------------------------------------------------------[] + + JUMPS.ConvTxtNum16 - 楤 樨 ⥪ + ᫮ 16 bit + + 室: + DE - ⥪ ( ப - 0) + 室: + HL - ᫮ + C flag - 訡 + +[]------------------------------------------------------------------------[] + + JUMPS.Resident + +[]------------------------------------------------------------------------[] + +13 july 2002 +Anton Enin (C) Copyright 2002 R-lab +᫨ e-mail: r-lab@mail.ru ਭ 㬥. diff --git a/docs/history.txt b/docs/history.txt new file mode 100644 index 0000000..a3e7acf --- /dev/null +++ b/docs/history.txt @@ -0,0 +1,145 @@ + +FN - FlexNavigator +FV - FileViewer +FE - FileEditor + +28.05.25 +FE v1.08 +- ࠭ "᪠" 䠩 ᪥. +FV v1.05 +- ࠭ "᪠" 䠩 ᪥. +FN v1.14 +- ࠢ ᠭ ப ⨨ ALT+F1/F2. +- ᤥ ய ४ਨ ".." ஢騪 ࠢ쭮 ஢. +- ࠢ ⨯ ஢. +- ᤥ ⥫ ࠧ ४ਨ ஢ ४ﬨ ( ⠭). +- ᮤন ४ਨ ॢ ᤥ ENTER ⮯ ( ⠭). +- ࠢ ॢ 䠩. + +------------------------------------------------------------------------------- + +25/06/24 + ⮡ࠦ ᮮ饭 . + +13/05/24 +ࠢ 訡 樠樨 ࠭ help. + প 䠩 FAT32 + + +11/05/24 + 뢮 ᮮ饭 ⮬, ᫨誮 䠩 ४ਨ. 䠩, " " - ⮡ࠦ. + + +12/12/23 +প Current Dir, ⮡ࠦ ⥪ ४ ᪠. + + +07/09/23 +⢥ ࠢ. + + +01/08/23 +ᠥ FN ᫥ १㧪 让 (titd, ldconf). +࠭ ஢ઠ Sp97. + ଠ쭮 யᠭ, 譨 ࠩ ᪥ ࠭. + + +29/07/23 + 訡 訢襣 ਫ - 32 . +DSS ࠭ 頫 䫠 CF 室 訡, FN ᥣ ஢ ᫥ ਫ 䫠 CF. +DSS ⥯ , FN 訡 ஢, ⠬ FF, ⠡ 32... + disttest.exe, 室 祬- ⠭ 訡 #FF, ⠪ . +㦭 㫥 室 訡. + + +17/07/23 + 2.55  㭪 - । ࠢ ࠡ稪 뢠 㫥 . +C ஢ઠ . + + +10/05/22 +Viewer: +* ࠢ ᬥ᪨ ப ᬥ 㭪樮 . +* ࠢ ᠭ ਭ ⠩ . +* ந᪨ ⠪⮢ ⠬, ))). ++ ७ᥭ F7, ⮡ 룭 ))). ++ ⠭ CTRL+P . +? ࠢ Wrap, ⠫ 孥 ப. , 祬 祣. + +Editor: ++ "F7 Print" ++ ⠭ CTRL+P ० HEX +* ࠢ ᬥ᪨ ப ᬥ 㭪樮 +* ࠢ ᠭ ਭ ⠩ + +------------------------------------------------------------------------------- + +FE v.1.06 05.08.2021 (Mikhaltchenkov Dmitry aka Hard/WCG) ++ F9 뢠 ன । ࠭ ன + 䠩 + +FN v.1.13.1 02.08.2021 (Mikhaltchenkov Dmitry aka Hard/WCG) +* ᦠ + +FE v.1.05.1 02.08.2021 (Mikhaltchenkov Dmitry aka Hard/WCG) ++ ࠬ 䨣-䠩 fnedit.ini, 砥/⪫砥 + ⢥ত । + +FE v.1.05 07.06.2021 (Mikhaltchenkov Dmitry aka Hard/WCG) +* ࠢ , ਢ ᠭ ᫥ 7- + । ++ ⮧⨥ ᨬ ᪮ 祪 ++ ।  䨣-䠩 fnedit.ini, १ ⪫ + + +FE v.1.04 18.04.2021 (Mikhaltchenkov Dmitry aka Hard/WCG) ++ Ctrl+P (⥬ F9 㤥 ७祭 㣮 + 㭪樮) ++ 㭪樮 ⬥ Ctrl+Z ( 蠣 Undo, 業, + 뢠 ⥪饩 ।㥬 ப, 室 + ப) + +FE v.1.03 17.04.2021 (Mikhaltchenkov Dmitry aka Hard/WCG) ++ ࠢ Alt+CursorLeft(Home) Alt+CursorRight(End) +* ࠢ ணࠬ THomeString - ⮩ ப 横 +* ࠢ TEndString, 筮 - ⮩ ப 横 +* ࠢ ணࠬ ⥪饩 ப ( 㫥 + ப 頫) + +FN v.1.12.1 13.04.2021 (Mikhaltchenkov Dmitry aka Hard/WCG) +* ࠢ ⮬᪮ ᬥ ++ ன SetUp ⪫祭 ⮬᪮ ⨢樨 + ᬥ ᪠ + +FE v.1.02 10.04.2021 (Mikhaltchenkov Dmitry aka Hard/WCG) ++ Ctrl+D 㡫஢ ப (ࠡ⠥ + ⮫쪮 ப 127 ᨬ) ++ ७ ப 砫 ப ⠪ 砫, + ।饩 ப +* ࠡ⠭ 楤 樮஢ + +FN v.1.12+ 07.04.2021 (Mikhaltchenkov Dmitry aka Hard/WCG) ++ , ன Alt+F1/F2 ⠭ ⨢ + +FE v.1.01 07.04.2021 (Mikhaltchenkov Dmitry aka Hard/WCG) ++ ᮬ ⢥ত 室 । ++ 祭 ப ப 頥 - ࠭ 뫮  + ப 樨 ப +* ࠡ⠭ 楤 樮஢ 樨 ப + (࠭) / - ᨬ ⠡஢ ப, + ᪠ ᪮쪮 権 ஭ ++ 㤠 楫 ப Ctrl+Y ++ ࠭ Ctrl+S ++ ० ࠡ Home - ᫨ ⠡ 砫 ப, + ࢮ ⨨ ६頥 -஡ + ᨬ, ୮ ⨨ - ६頥 + +FN v.1.12 02.04.2021 (Mikhaltchenkov Dmitry aka Hard/WCG) ++ BAT-䠩, , ⠪ ப + ।祩 ࠬ஢. + +FN v.1.11 27.03.2021 (Mikhaltchenkov Dmitry aka Hard/WCG) +* ࠢ । ⠫ ஬ ᯮ 䠩 FlexNavigator-. + +FV v.1.03 10.02.2021 (Mikhaltchenkov Dmitry aka Hard/WCG) ++ ४祭 ஢ ⥪ WIN/DOS/KOI diff --git a/docs/todo.txt b/docs/todo.txt new file mode 100644 index 0000000..a821898 --- /dev/null +++ b/docs/todo.txt @@ -0,0 +1,19 @@ + +Flex navigator TODO: + +[] ன ⮯ ENTER ६饭 ॢ ⠫ +[] ன 롮 ⨢ ᬥ ᪠ ⨢ +[] 뢮 ॢ ⠫ ᤥ ஫ /ࠢ ᫨ ॢ ਧ⠫ +[] F6 ⮫쪮 २, २/६饭 䠩 ᫨ ࠧ +[] । प न, । ਢ離 न⠬ +[] ࠧ ࠡ⠥ ப ᪥ 䠩 +[] ।஢ +[] ᮧ +[] 㧪 FLX ᪠ +[?] 맮 ⢨ + +[x] ப ⨥ ALT+F1/F2 (롮 ࠩ) ᠥ +[x] ஢騪 "..", +[x]  祭 䠩 稨 ᪨ ᨬ "File not found" +[x] Disk Info 뢠 ᪠ 䠩 (npl.exe) +[x] ந⥫ ॢ ⠫ ࠡ⠥ diff --git a/fn_const.a80 b/fn_const.a80 new file mode 100644 index 0000000..efa2d67 --- /dev/null +++ b/fn_const.a80 @@ -0,0 +1,386 @@ + +; LAST UPDATE: 28.05.2025 savelij + +DOShistory_Size EQU 0x200 ; ࠧ DOS ਨ + + INIT_VAR 0x8000 + SETVAR WorkBuffer, 0x400 ; ࠡ稩 + SETVAR StackTree, 0x100 ; 砫 ⥪ ࠡ ॢ ४਩ + SETVAR STACKTREE, 0 ; 㪠⥫ (⥪ ) + SETVAR PagesList, 0x100 ; ᯨ᮪ ࠭ + SETVAR Stack, 0x100 ; 砫 ࠡ祣 ⥪ + SETVAR STACK, 0 ; 㪠⥫ (⥪ ) + SETVAR BASE_ADDR, 0x100 ; 砫 ( 室 ६ 㯠 ) + SETVAR PALETTE, 0 ; ࠧ ⠡楩 室 ६ + +ADDR + _INIT_VAR 0x4000 + _SETVAR .FlexDIRECTORY + +PluginOrg EQU 0xC000 - 0x10 ; ⮬ ࠧ + +LenInpData EQU 12 ; - ᬥ饭 ⪨ SearchStr +CursTimer EQU 6 ; "" ࣠ ⥪⮢ +Step EQU 8 ; ਭ ᨬ ६饭 ⥪ +MainPullMenu EQU 6 ; ⢮ 㭪⮢ +MASK_SIZE EQU 13 +PANFILES ; ⢮ 䠩/४਩ +.BRIEF EQU 17 ; Brief ० +.FULL EQU 18 ; Full ० +.TREE EQU 18 ; Tree ० + +SUPPFILES + _INIT_VAR 1 + _SETVAR .EXE + _SETVAR .BAT + _SETVAR .FLX + +; 梥 INK +COLORI + _INIT_VAR + _SETVAR .BLACK ; 0 + _SETVAR .RED ; 1 + _SETVAR .GREEN ; 2 + _SETVAR .YELLOW ; 3 + _SETVAR .BLUE ; 4 + _SETVAR .INVERTPAPER ; 5 + _SETVAR .INVERTINK ; 6 + _SETVAR .BLACKGRAY ; 7 + _SETVAR .HIGHGRAY ; 8 + _SETVAR .PANEL ; 9 + _SETVAR .FILES ; A + _SETVAR .SELECTFILES ; B + _SETVAR .INVSELFILES ; C + _SETVAR .RESERVED ; D + _SETVAR .WHITE0E ; E + _SETVAR .WHITE ; F + +; 梥 PAPER +COLORP + _INIT_VAR + _SETVAR .BLACK, 0x10 + _SETVAR .RED, 0x10 + _SETVAR .GREEN, 0x10 + _SETVAR .YELLOW, 0x10 + _SETVAR .BLUE, 0x10 + _SETVAR .INVERTPAPER, 0x10 + _SETVAR .INVERTINK, 0x10 + _SETVAR .BLACKGRAY, 0x10 + _SETVAR .HIGHGRAY, 0x10 + _SETVAR .PANEL, 0x10 + _SETVAR .FILES, 0x10 + _SETVAR .SELECTFILES, 0x10 + _SETVAR .INVSELFILES, 0x10 + _SETVAR .RESERVED, 0x10 + _SETVAR .WHITE0E, 0x10 + _SETVAR .WHITE, 0x10 + +WINOBJECT + _INIT_VAR + _SETVAR .TYPE, BYTE + +; 㬥 ꥪ⮢ +WINSUBOBJ + _INIT_VAR + _SETVAR .END ; ⥫ + _SETVAR .TEXT ; ⥪⮢ ப + _SETVAR .FILL ; 梥⮬ 㪠 + _SETVAR .BORDER ; 㣫㡫 + _SETVAR .BUTTON ; + _SETVAR .BUTTONTEXT ; ⥪⮬ + _SETVAR .HORIZLINE ; ਧ⠫쭠 + _SETVAR .VERTICLINE ; ⨪쭠 + _SETVAR .ICONLEFTARROW ; ࠩ⨪ ஫ "५ " + _SETVAR .ICONRIGHTARROW ; ࠩ⨪ ஫ "५ ࠢ" + _SETVAR .ICONUPARROW ; ࠩ⨪ ஫ "५ " + _SETVAR .ICONDOWNARROW ; ࠩ⨪ ஫ "५ " + _SETVAR .ADRTEXT ; ⥪⮢ ப + _INIT_VAR 0x7F + _SETVAR .RESTOREWIN ; ⠭ ࠭ + _SETVAR .WOBIND ; ᫥ ਢ離 ⥫ + _INIT_VAR + _SETVAR .NOSTORE ; ࠭ + _SETVAR .STORE ; ࠭ + +;[]----------------------------------------------------------[] +PANEL + _INIT_VAR + _SETVAR .PANELFLAG ; 7 - 뤥 + ; 0 - + _SETVAR .VIEWFLAG ; 0 - ⪠ + ; 0 - ஡ + ; 1 - ॢ + ; 2 - 㦠⮥ ॢ + _SETVAR .SORTFLAG ; ஢ + ; 0 - + ; 1 - ७ + ; 2 - ࠧ + ; 3 - + ; 4 - execute file + ; 5 - file mask + _SETVAR .XL ; X LOW + _SETVAR .XH ; X HIGH + _SETVAR .BARXL ; X ஫ LOW + _SETVAR .BARXH ; X ஫ HIGH + _SETVAR .BARYL ; Y ஫ LOW + _SETVAR .BARYH ; Y ஫ HIGH + _SETVAR .BARMLL ; Max ஫ LOW + _SETVAR .BARMLH ; Max ஫ HIGH + _SETVAR .BARCLL ; ⥪. ஫ LOW + _SETVAR .BARCLH ; ⥪. ஫ HIGH + _SETVAR .BARLFL ; 祩 BarLeft LOW + _SETVAR .BARLFH ; 祩 BarLeft HIGH + _SETVAR .BARRTL ; 祩 BarRight LOW + _SETVAR .BARRTH ; 祩 BarRight HIGH + _SETVAR .FPL ; - 䠩 ࠭ LOW + _SETVAR .FPH ; - 䠩 ࠭ HIGH + _SETVAR .EFL ; 饥 - 䠩 LOW + _SETVAR .EFH ; 饥 - 䠩 HIGH + _SETVAR .FFL ; 䠩 ࠭ LOW + _SETVAR .FFH ; 䠩 ࠭ HIGH + _SETVAR .CFL ; T騩 䠩 ࠭ LOW + _SETVAR .CFH ; T騩 䠩 ࠭ HIGH + _SETVAR .MFL ; - ન஢ 䠩 LOW + _SETVAR .MFH ; - ન஢ 䠩 HIGH + _SETVAR .MBL1 ; - ન஢ ⮢ [ + _SETVAR .MBH1 ; - ન஢ ⮢ + _SETVAR .MBL2 ; - ન஢ ⮢ + _SETVAR .MBH2 ; - ન஢ ⮢ ] + _SETVAR .MBL3 ; - ન஢ ⮢ FAT32 + _SETVAR .FILEMASK, MASK_SIZE ; ᪠ 䠩 + _SETVAR .CURRPATH, 0x100 ; 騩 + +PANELFLAG + _BITMASK PRNDOSPATH, 7 ; =1- DOS + _BITMASK SIDE, 0 ; =1-ࠢ , =0- + +VIEWFLAG + _BITMASK SHORTTREE, 2 ; =1-㦠⮥ ॢ + _BITMASK TREE, 1 ; =1- ॢ ⠫ + _BITMASK FULL, 0 ; =1-஡ ⠫, 0-⪨ +.MASK EQU .M_TREE | .M_FULL + +SORTFLAG + _BITMASK BIT7, 7 ; not used + _BITMASK BIT6, 6 ; not used + _BITMASK FILTER, 5 ; =1- 䠩 䨫 + _BITMASK EXEC, 4 ; =1-뢠 ⮫쪮 ᯮ塞 䠩 + _BITMASK SIZE, 3 ; =1-஢ ࠧ + _BITMASK DATE, 2 ; =1-஢ + _BITMASK EXT, 1 ; =1-஢ ७ + _BITMASK NAME, 0 ; =1-஢ +.MASK EQU .M_SIZE | .M_DATE | .M_EXT | .M_NAME +.MASKH EQU .M_BIT7 | .M_BIT6 | .M_FILTER | .M_EXEC +.MASKEXECFILTER EQU .M_FILTER | .M_EXEC + +;[]----------------------------------------------------------[] +BAR + _INIT_VAR + _SETVAR .XL + _SETVAR .XH + _SETVAR .YL + _SETVAR .YH + _SETVAR .MAXLL + _SETVAR .MAXLH + _SETVAR .LENL + _SETVAR .LENH + _SETVAR .LEFTL + _SETVAR .LEFTH + _SETVAR .RIGHTL + _SETVAR .RIGHTH + _SETVAR .PAGEL + _SETVAR .PAGEH + _SETVAR .MAXL + _SETVAR .MAXH + _SETVAR .FIRSTL + _SETVAR .FIRSTH + +;[]----------------------------------------------------------[] +PROC + _INIT_VAR + _SETVAR .XL + _SETVAR .XH + _SETVAR .YL + _SETVAR .YH + _SETVAR .MAXLL + _SETVAR .MAXLH + _SETVAR .COEFL + _SETVAR .COEFH + _SETVAR .CORRL + _SETVAR .CORRH + _SETVAR .MAXL1 + _SETVAR .MAXH1 + _SETVAR .MAXL2 + _SETVAR .MAXH2 + _SETVAR .CURL1 + _SETVAR .CURH1 + _SETVAR .CURL2 + _SETVAR .CURH2 + _SETVAR .COLOR + +; ଠ ⠡ +; +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 ࠡ稪 ⮬ (ࠢ) +FORMTABL + _INIT_VAR + _SETVAR .XMINL + _SETVAR .XMINH + _SETVAR .XMAXL + _SETVAR .XMAXH + _SETVAR .YMINL + _SETVAR .YMINH + _SETVAR .YMAXL + _SETVAR .YMAXH + _SETVAR .FLAGL + _SETVAR .FLAGH + _SETVAR .FIRENOL + _SETVAR .FIRENOH + _SETVAR .FIRELEFTL + _SETVAR .FIRELEFTH + _SETVAR .FIRERIGHTL + _SETVAR .FIRERIGHTH + _SETVAR .SIZE, 0 + +;FLAGS ; 7-0 + _BITMASK EXECNOPRESS, 7 ; 맢 㭪 । ᪮ ணࠬ + _BITMASK EXECNORETRMB, 6 ; ணࠬ ᪠ . ࠢ + _BITMASK EXECNORETLMB, 5 ; ணࠬ ᪠ . + _BITMASK EXECONLY, 4 ; ணࠬ ᪠ . + _BITMASK STATICINV, 3 ; + _BITMASK INV1, 2 ; 1 + _BITMASK WORKBUTTON, 1 ; ࠡ + _BITMASK BUTTON, 0 ; +; ; 15-8 + _BITMASK FIRENOINV, 7 ; ४⥫ ( 㡨) + _BITMASK CLOSEANDRUN, 1 ; 맢 㭪 । ᪮ ணࠬ + _BITMASK CLOSEWIN, 0 ; 맢 㭪 । ᪮ ணࠬ + _BITMASK ENDTABL, 7 ; .XMINH 㪠⥫ ᯨ᪠ + +; ⠡ 室 맮 +JUMPS +.JUMPSIZE EQU 3 +; ⠡ 室 㭪樨 + _INIT_VAR BASE_ADDR + .JUMPSIZE ; ய 室 ᭮ 室 + _SETVAR .ClearScreen, .JUMPSIZE + _SETVAR .MakeWindow, .JUMPSIZE + _SETVAR .InvertRectan, .JUMPSIZE + _SETVAR .PrnTxtLnIFF, .JUMPSIZE + _SETVAR .PrnTxtLnNorm, .JUMPSIZE + _SETVAR .PrnTxtLnNormC, .JUMPSIZE + _SETVAR .PrnRangPathL, .JUMPSIZE + _SETVAR .PrnRangPathR, .JUMPSIZE + _SETVAR .PrnRangPathC, .JUMPSIZE + _SETVAR .InputLine, .JUMPSIZE + _SETVAR .InpLnExtN, .JUMPSIZE + _SETVAR .InpLnExtC, .JUMPSIZE + _SETVAR .DOSError, .JUMPSIZE + _SETVAR .InitScrBar, .JUMPSIZE + _SETVAR .PrnHScrBar, .JUMPSIZE + _SETVAR .PrnVScrBar, .JUMPSIZE + _SETVAR .InitProcess, .JUMPSIZE + _SETVAR .PrnProcess, .JUMPSIZE + _SETVAR .InitScrollBar, .JUMPSIZE + _ADDVAR .JUMPSIZE * 4 ; DUPL 15,0xC9 + _SETVAR .ResFire, .JUMPSIZE + _SETVAR .TestCoords, .JUMPSIZE + _SETVAR .SetCMOSPrint, .JUMPSIZE + _SETVAR .ResCMOSPrint, .JUMPSIZE + _SETVAR .SetClock, .JUMPSIZE + _SETVAR .SetMouse, .JUMPSIZE + _ADDVAR .JUMPSIZE * 4 ; DUPL 12,0xC9 + _SETVAR .ConvNumTxt40, .JUMPSIZE + _SETVAR .MoveBytes, .JUMPSIZE + _SETVAR .MoveBytesUp, .JUMPSIZE + _SETVAR .Mult8, .JUMPSIZE + _SETVAR .Mult16X8, .JUMPSIZE + _SETVAR .Mult16, .JUMPSIZE + _SETVAR .Mult16X16, .JUMPSIZE + _SETVAR .Mult32, .JUMPSIZE + _SETVAR .Divis16X16, .JUMPSIZE + _SETVAR .Divis24X16, .JUMPSIZE + _SETVAR .Divis32X16, .JUMPSIZE + _SETVAR .Divis32, .JUMPSIZE + _SETVAR .ConvNumTxt32, .JUMPSIZE + _SETVAR .ConvNumTxt16, .JUMPSIZE + _SETVAR .ConvNumTxt8, .JUMPSIZE + _SETVAR .ConvTxtNum32, .JUMPSIZE + _SETVAR .ConvTxtNum16, .JUMPSIZE + _SETVAR .Resident, .JUMPSIZE + _ADDVAR (BASE_ADDR + 0xC0) - .CURRVAR; - .JUMPSIZE; * 4 ; DUPL 12,0xC9 +; ६ 㯠 + _SETVAR .NUM_DEVICES, BYTE ; - ன + _SETVAR .TreeFlag, BYTE ; ॢ + _SETVAR .CMOSFlag, BYTE ; CMOS 0 - + ; 1 - + _SETVAR .MouseFlag, BYTE ; 0 - + ; 1 - + _SETVAR .CMOSPrint, BYTE + _SETVAR .FNPAGESID, BYTE ; . FN + _SETVAR .FNFUNCT, BYTE ; ࠭ 㭪ﬨ FN + _SETVAR .FNVIEW, BYTE ; ࠭ FileViewer + _SETVAR .FNEDIT, BYTE ; ࠭ FileEditor + _SETVAR .FNHELP, BYTE ; ࠭ FN HELP + _SETVAR .FNFONT, BYTE ; ࠭ ⮢ + _SETVAR .BufferID, BYTE ; 䨪 + _SETVAR .FLX, BYTE ; ࠭ 㧪 FLX ᬮ. FLX ⨫ + _SETVAR .LEFTPANEL, BYTE ; ࠭ ⠫ + _SETVAR .RIGHTPANEL, BYTE ; ࠭ ⠫ ࠢ +; ࠭ 䥩 + _SETVAR .BuffPg1, WORD + _SETVAR .BuffPg3, 3 + +FileHDR + _INIT_VAR + _SETVAR .Flag, BYTE ; +#00 + _SETVAR .Name, 8 ; +#01 + _SETVAR .Dot, BYTE ; +#09 ??? + _SETVAR .Ext, 3 ; +#0A + _SETVAR .Zero, BYTE ; +#0D ??? + _SETVAR .Attr, BYTE ; +#0E ᯮ 7 祣- + _SETVAR .SizeBytes, DWORD ; +#0F + _SETVAR .Date, BYTE ; +#13 + _SETVAR .Month, BYTE ; +#14 + _SETVAR .Year, BYTE ; +#15 + _SETVAR .Hours, BYTE ; +#16 + _SETVAR .Minutes, BYTE ; +#17 + _SETVAR .SIZE, 0 + _BITMASK MARK, 0 ; 1-䠩 祭 + +; 䠩 +FILENAME +.FN_INI EQU "fn.ini" +.FN_EXT EQU "fn.ext" +.FNVIEW_EXT EQU "fnview.ext" +.FNEDIT_EXT EQU "fnedit.ext" +.FNTREE_FLN EQU "treeinfo.fln" +.FNEDIT_INI EQU "FNEDIT.INI" + +; ⫠筮,  +PLUGS_ENABLE EQU 0 +TREE_REZID EQU 0 +MARK_DIR EQU 0 ; 롮 ४ਨ ⮬ ࠧ 䠩 +TREE_DIR_ENTER EQU 0 ; ᮤন ४ਨ ॢ ENTER diff --git a/fn_exe_boot.a80 b/fn_exe_boot.a80 new file mode 100644 index 0000000..c3724cc --- /dev/null +++ b/fn_exe_boot.a80 @@ -0,0 +1,191 @@ + +; LAST UPDATE: 29.05.2025 savelij + + include macros.a80 + + include macros_sp.a80 + include define_sp.a80 + include bios_sp.a80 + include dss_sp.a80 + include errors_sp.a80 + include ports_sp.a80 + include mouse_sp.a80 + include accel_sp.a80 + include fatdir.a80 + include fn_version.a80 + + INIT_VAR 0xC000 + SETVAR FONT_RAW, 6888;IFFFONT_RAW_PACK - FONT_RAW_PACK + SETVAR_ALIGN + SETVAR IFFFONT_RAW, 8704;IFFFONT_RAW_END - IFFFONT_RAW_PACK + SETVAR CLOCK_BMP, CLOCK_BMP_END - Clock_BMP + SETVAR MOUSE_BMP, MOUSE_BMP_END - Mouse_BMP + + org 0x80EA + +EXEhead: db "EXE" + db 1 ; +3 + dw EntryExec-EXEhead + dw 0x0000 ; +4 + dw EXEend-EntryExec ; +8 + dw 0,0 ; +10 + dw 0 ; +14 + dw EntryExec ; +16 + dw EntryExec + dw 0x80FF + +EntryExec: DI + LD A,(IX-0x03) ; file handle + LD (MAIN.hFile),A ; save + LD HL,MAIN.copyright_str + SPDSS DSSF.PCHARS ; print text + SPDSS DSSF.VERSION + LD A,D + OR A + JR NZ,.next1 + LD HL,MAIN.incor_dos_str + SPDSS DSSF.PCHARS ; print text + SPDSS DSSF.EXIT,0x26 ; exit + +.next1 + SPDSS DSSF.GETMEM,6 ; 6 ࠭ + JR NC,.next2 ; CY - not enough memory + LD HL,MAIN.no_memory_str + SPDSS DSSF.PCHARS ; print text + SPDSS DSSF.EXIT,0x1E ; exit + +.next2 LD (MAIN.hMem),A ; memory handle + LD HL,MAIN.FNMAIN + SPBIOS BIOSF.GETMEMBLKPAGES ; get memory pages list + LD A,(MAIN.FNMAIN) ; set pages from 0xC000 + SETPORT WINSP.CPU3,,0 + LD HL,BASE_ADDR ; FNMAIN + LD DE,END_BLOCK_1 - START_BLOCK_1 + LD A,(MAIN.hFile) + SPDSS DSSF.READ + JP C,disk_error + LD A,(MAIN.FNFUNCT) + SETPORT WINSP.CPU3,,0 + LD HL,0xC000 ; FNFUNCT + LD DE,END_BLOCK_2 - START_BLOCK_2 + LD A,(MAIN.hFile) + SPDSS DSSF.READ + JP C,disk_error + LD A,(MAIN.FNVIEW) ; FNVIEW + 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 + LD A,(MAIN.FNEDIT) ; FNEDIT + 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 + LD A,(MAIN.FNHELP) ; FNHELP + 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 + LD A,(MAIN.FNFONT) ; FNFONT + SETPORT WINSP.CPU3,,0 + LD HL,0xFFFF - (IFFFONT_RAW_END - FONT_RAW_PACK) + LD DE,END_BLOCK_4 - START_BLOCK_4 + LD A,(MAIN.hFile) + SPDSS DSSF.READ + JP C,disk_error + LD A,(MAIN.hFile) + SPDSS DSSF.CLOSE ; close file +; ᯠ ⮢ + LD HL,0xFFFF - (IFFFONT_RAW_END - FONT_RAW_PACK) + LD DE,0xC000 + CALL UNPACK + LD HL,0xFFFF - (IFFFONT_RAW_END - IFFFONT_RAW_PACK) + LD DE,0xDB00 + CALL UNPACK +; ७ ࠡ祥 + LD HL,Clock_BMP + LD DE,CLOCK_BMP + LD BC,CLOCK_BMP_Size + MOUSE_BMP_Size + LDIR + ;!TEST ; !HARDCODE SYS_PAGE + SETPORT WINSP.CPU3,PAGE.SYSTEM;0xFE + LD HL,0x0124 + CPU3 ; !HARDCODE + LD (HL),0x38 ; interrupt routine address Low byte + INC HL + XOR A + LD (HL),A ; interrupt routine address High byte + INC HL + GETPORT WINSP.CPU0 + LD (HL),A ; interrupt routine page + LD A,(MAIN.FNMAIN) + SETPORT WINSP.CPU3,,0 + LD A,(MAIN.hMem) + LD (RAMPAGES.FNPAGESID),A + LD HL,MAIN.FNFUNCT + LD DE,RAMPAGES.FNFUNCT + LD BC,0x0005 + LDIR + JP BASE_ADDR + +disk_error: PUSH AF + LD A,(MAIN.hMem) ; free memory + SPDSS DSSF.FREEMEM + LD A,(MAIN.hFile) + SPDSS DSSF.CLOSE ; close file + LD HL,MAIN.load_err_str + SPDSS DSSF.PCHARS ; print text + POP BC + SPDSS DSSF.EXIT ; exit + +UNPACK include dec40.a80 + +; 14 x 9 = 126 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D +Clock_BMP: DB 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFE,0xFE,0xFE ; 00 + DB 0xFE,0xFE,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF ; 01 + DB 0x00,0xFE,0xFE,0xFE,0xFE,0xFE,0x00,0xFF,0xFF,0x00,0xFE,0xFE,0xFE,0x00 ; 02 + DB 0xFE,0x00,0xFF,0xFF,0xFF,0x00,0xFE,0xF0,0xFE,0x00,0xFF,0xFF,0xFF,0xFF ; 03 + DB 0xFF,0x00,0xFE,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFE,0x00,0xFF ; 04 + DB 0xFF,0xFF,0xFF,0xFF,0x00,0xFE,0xF0,0xFE,0x00,0xFF,0xFF,0xFF,0x00,0xFE ; 05 + DB 0xFE,0xFE,0x00,0xFE,0x00,0xFF,0xFF,0x00,0xFE,0xFE,0xFE,0xFE,0xFE,0x00 ; 06 + DB 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFE,0xFE ; 07 + DB 0xFE,0xFE,0xFE,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ; 08 +CLOCK_BMP_END + +; 13 x 9 = 117 00 01 02 03 04 05 06 07 08 09 0A 0B 0C +Mouse_BMP: DB 0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFE,0x00,0xFF ; 00 + DB 0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFE,0xFE,0x00,0xFF,0xFF,0xFF,0xFF ; 01 + DB 0xFF,0x00,0xFE,0xFE,0xFE,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0xFE,0xFE ; 02 + DB 0xFE,0xFE,0x00,0xFF,0xFF,0xFF,0x00,0xFE,0xFE,0xFE,0xFE,0xFE,0x00 ; 03 + DB 0xFF,0xFF,0x00,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0x00,0xFF,0x00,0xFE ; 04 + DB 0xFE,0xFE,0xFE,0x00,0x00,0x00,0x00,0x00,0xFE,0xFE,0x00,0xFE,0x00 ; 05 + DB 0xFF,0xFF,0xFF,0x00,0xFE,0x00,0x00,0xFE,0xFE,0x00,0xFF,0xFF,0x00 ; 06 + DB 0x00,0xFF,0xFF,0x00,0xFE,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00 ; 07 + DB 0xFE,0xFE,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF ; 08 +MOUSE_BMP_END + +MAIN +.hFile db 0x00 +.hMem db 0x00 +.FNMAIN db 0x00 +.FNFUNCT db 0x00 ; 00 +.FNVIEW db 0x00 ; 01 +.FNEDIT db 0x00 ; 02 +.FNHELP db 0x00 ; 03 +.FNFONT db 0x00 ; 04 + DB 0xFF + +.copyright_str: DB "\r\nThe Flex Navigator, ver.\{FLEX_VERS.NAVIGATOR}\r\n",0 +.incor_dos_str: DZ "Incorrect DOS version, need DOS 1.00 or high.\r\n" +.no_memory_str: DZ "Not enough memory to load program.\r\n" +.load_err_str: DZ "Disk loading error.\r\n" + +EXEend: + + include fnmain.a80 diff --git a/fn_macros.a80 b/fn_macros.a80 new file mode 100644 index 0000000..de61368 --- /dev/null +++ b/fn_macros.a80 @@ -0,0 +1,101 @@ + +; LAST UPDATE: 28.05.2025 savelij + +MAKEWINDOW MACRO TYPE + CALL JUMPS.MakeWindow + DB TYPE + ENDM + +; ⥫ +W_MAIN MACRO X,Y,H,V + DW X,Y,H,V + ENDM + +; ⥪⮢ ப +W_TEXT MACRO OFFSETX,OFFSETY,COLOR,TXT + DB WINSUBOBJ.TEXT + DW OFFSETX,OFFSETY + DB COLOR,TXT,0 + ENDM + +W_ADRTEXT MACRO OFFSETX,OFFSETY,COLOR,ADRTXT + DB WINSUBOBJ.ADRTEXT + DW OFFSETX,OFFSETY + DB COLOR + DW ADRTXT + ENDM + +; אַ㣮쭮 ᪮ +W_FILL MACRO OFFSETX,OFFSETY,H,V,COLOR + DB WINSUBOBJ.FILL + DW OFFSETX,OFFSETY,H,V + DB COLOR + ENDM + +; ᮢ 㣫㡫񭭮 אַ㣮쭮 ᪮ +W_BORDER MACRO OFFSETX,OFFSETY,H,V + DB WINSUBOBJ.BORDER + DW OFFSETX,OFFSETY,H,V + ENDM + +; ᮢ 㪫 אַ㣮쭮 ᪮ +W_BUTTON MACRO OFFSETX,OFFSETY,H,V + DB WINSUBOBJ.BUTTON + DW OFFSETX,OFFSETY,H,V + ENDM + +; ᮢ ⥪⮬ ( ⥪ ⢫ 権 x + 4, y + 1) +W_BUTTONTEXT MACRO OFFSETX,OFFSETY,H,V,COLOR,TXT + DB WINSUBOBJ.BUTTONTEXT + DW OFFSETX,OFFSETY,H,V + DB COLOR,TXT,0 + ENDM + +; ᮢ ਧ⠫쭮 ࠧ⥫ +W_HORIZLINE MACRO OFFSETX,OFFSETY,SIZE + DB WINSUBOBJ.HORIZLINE + DW OFFSETX,OFFSETY,SIZE + ENDM + +; ᮢ ⨪쭮 ࠧ⥫ +W_VERTICLINE MACRO OFFSETX,OFFSETY,SIZE + DB WINSUBOBJ.VERTICLINE + DW OFFSETX,OFFSETY,SIZE + ENDM + +; ᮢ ஫ +W_ICONLEFTARROW MACRO OFFSETX,OFFSETY + DB WINSUBOBJ.ICONLEFTARROW + DW OFFSETX,OFFSETY + ENDM + +; ᮢ ࠢ ஫ +W_ICONRIGHTARROW MACRO OFFSETX,OFFSETY + DB WINSUBOBJ.ICONRIGHTARROW + DW OFFSETX,OFFSETY + ENDM + +; ᮢ 孥 ஫ +W_ICONUPARROW MACRO OFFSETX,OFFSETY + DB WINSUBOBJ.ICONUPARROW + DW OFFSETX,OFFSETY + ENDM + +; ᮢ ஫ +W_ICONDOWNARROW MACRO OFFSETX,OFFSETY + DB WINSUBOBJ.ICONDOWNARROW + DW OFFSETX,OFFSETY + ENDM + +; ⥫ +W_END MACRO + DB WINSUBOBJ.END + ENDM + +; ⠭ +WINDOWCLOSE MACRO + MAKEWINDOW WINSUBOBJ.RESTOREWIN + W_END + ENDM + +BUILDDATE EQU "\{(DDATE / 10) + '0'}\{(DDATE # 10) + '0'}.\{MMOUNTH / 10 + '0'}\{MMOUNTH # 10 + '0'}.20\{(YYEAR / 10) + '0'}\{(YYEAR # 10) + '0'}" diff --git a/fn_version.a80 b/fn_version.a80 new file mode 100644 index 0000000..320fe9b --- /dev/null +++ b/fn_version.a80 @@ -0,0 +1,7 @@ + +; LAST UPDATE: 28.05.2025 savelij + +FLEX_VERS +.NAVIGATOR EQU "1.14" +.EDITOR EQU "1.08" +.VIEWER EQU "1.05" diff --git a/fnbar.a80 b/fnbar.a80 new file mode 100644 index 0000000..a146343 --- /dev/null +++ b/fnbar.a80 @@ -0,0 +1,596 @@ + +; LAST UPDATE: 07.03.2025 savelij + +;[]-----------------------------------------------------------[] +InitScrollBar LD C,(IX + BAR.PAGEL) + LD B,(IX + BAR.PAGEH) ; - . . + LD L,C + LD H,B + LD E,(IX + BAR.MAXL) + LD D,(IX + BAR.MAXH) ; .⮢ + LD A,D + OR E + JR NZ,.L1 + INC DE +.L1 OR A + SBC HL,DE + JR C,.L2 + ADD HL,DE + EX DE,HL +.L2 PUSH DE + LD E,(IX + BAR.MAXLL) + LD D,(IX + BAR.MAXLH) ; - . . * ࠧ + CALL Mult16X16 ; DE * BC = HL + DE + POP BC ; /.⮢ + CALL Divis32X16 ; HL + DE / BC = DE (HL-) + LD A,H + OR L + JR Z,.L3 + INC DE +.L3 LD HL,0x0003 + SBC HL,DE + JR C,.L4 + LD DE,0x0003 +.L4 LD (IX + BAR.LENL),E ; = + LD (IX + BAR.LENH),D ; = + RET + +PrnHScrBar PUSH IY + GETPORT WINSP.Y_PORT + PUSH AF + GETPORT WINSP.CPU1 + LD IYL,A + LD L,(IX + BAR.FIRSTL) ; FirstFile + LD H,(IX + BAR.FIRSTH) + LD E,(IX + BAR.PAGEL) + LD D,(IX + BAR.PAGEH) + LD C,(IX + BAR.MAXL) ; EquipFiles + LD B,(IX + BAR.MAXH) + LD A,B + OR C + JR NZ,.L1 + INC BC +.L1 PUSH BC + PUSH HL + ADD HL,DE + SBC HL,BC + POP HL + JR C,.L2 + JR Z,.L2 + LD L,C + LD H,B + SBC HL,DE + JR NC,.L2 + LD HL,0x0000 +.L2 EX DE,HL + LD C,(IX + BAR.MAXLL) + LD B,(IX + BAR.MAXLH) + CALL Mult16X16 + POP BC + CALL Divis32X16 + LD A,D + OR E + JR Z,.L3 + PUSH DE + SRL D + RR E + JR NC,.L4 + INC DE +.L4 LD L,(IX + BAR.XL) + LD H,(IX + BAR.XH) + SRL H + RR L + SET 6,H + LD A,(IX + BAR.YL) + LD C,A + LD B,COLORP.HIGHGRAY + COLORI.HIGHGRAY;0x88 + SETPORT WINSP.CPU1,0x50 + DI + ACCEL ACCELCMD.SET_BUFFER + LD A,0x08 + ACCEL ACCELCMD.OFF +.L5 LD A,C + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.FILL_VERT + LD (HL),B + ACCEL ACCELCMD.OFF + INC HL + DEC DE + LD A,D + OR E + JR NZ,.L5 + LD A,IYL + SETPORT WINSP.CPU1,,0 + EI + POP DE +.L3 PUSH DE + LD L,(IX + BAR.XL) + LD H,(IX + BAR.XH) + ADD HL,DE + LD E,(IX + BAR.LEFTL) + LD D,(IX + BAR.LEFTH) + LD A,D + OR E + JR Z,.L6 + EX DE,HL + SETPORT WINSP.Y_PORT,0xC0 + LD (HL),E + INC HL + LD (HL),D + EX DE,HL +.L6 PUSH HL + SRL H + RR L + SET 6,H + LD A,(IX + BAR.YL) + LD C,A + LD E,(IX + BAR.LENL) + LD D,(IX + BAR.LENH) + LD A,D + OR A + JR NZ,.L7 + LD A,E + CP 0x06 + JR NC,.L7 + LD E,0x06 +.L7 SRL D + RR E + JR C,.L8 + DEC DE +.L8 DEC DE + SETPORT WINSP.CPU1,0x50 + DI + ACCEL ACCELCMD.SET_BUFFER + LD A,0x06 + ACCEL ACCELCMD.OFF + LD B,COLORP.WHITE + COLORI.WHITE;0xFF + LD A,C + SETPORT WINSP.Y_PORT,,0 + LD (HL),B + INC A + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.FILL_VERT + LD (HL),B + ACCEL ACCELCMD.OFF + LD (HL),0xF7 + INC HL +.L9 LD A,C + SETPORT WINSP.Y_PORT,,0 + LD (HL),B + INC A + SETPORT WINSP.Y_PORT,,0 + LD A,COLORP.HIGHGRAY + COLORI.HIGHGRAY;0x88 + ACCEL ACCELCMD.FILL_VERT + LD (HL),A + ACCEL ACCELCMD.OFF + LD (HL),COLORP.BLACKGRAY + COLORI.BLACKGRAY;0x77 + INC HL + DEC DE + LD A,D + OR E + JR NZ,.L9 + LD A,C + SETPORT WINSP.Y_PORT,,0 + LD (HL),0xF7 + INC A + SETPORT WINSP.Y_PORT,,0 + LD A,COLORP.BLACKGRAY + COLORI.BLACKGRAY;0x77 + ACCEL ACCELCMD.FILL_VERT + LD (HL),A + ACCEL ACCELCMD.OFF + LD (HL),A + INC HL + EX DE,HL + LD A,IYL + SETPORT WINSP.CPU1,,0 + EI + POP HL + LD C,(IX + BAR.LENL) + LD B,(IX + BAR.LENH) + PUSH BC + ADD HL,BC + LD C,(IX+BAR.RIGHTL) + LD B,(IX+BAR.RIGHTH) + LD A,B + OR C + JR Z,.L10 + SETPORT WINSP.Y_PORT,0xC0 + LD A,L + LD (BC),A + INC BC + LD A,H + LD (BC),A +.L10 POP BC + LD L,(IX + BAR.MAXLL) + LD H,(IX + BAR.MAXLH) + OR A + SBC HL,BC + POP BC + JR Z,.L11 + JR C,.L11 + OR A + SBC HL,BC + JR Z,.L11 + JR C,.L11 + EX DE,HL + SRL D + RR E + JR Z,.L11 + LD A,(IX + BAR.YL) + LD C,A + LD B,COLORP.HIGHGRAY + COLORI.HIGHGRAY;0x88 + SETPORT WINSP.CPU1,0x50 + DI + ACCEL ACCELCMD.SET_BUFFER + LD A,0x08 + ACCEL ACCELCMD.OFF +.L12 LD A,C + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.FILL_VERT + LD (HL),B + ACCEL ACCELCMD.OFF + INC HL + DEC DE + LD A,D + OR E + JR NZ,.L12 + LD A,IYL + SETPORT WINSP.CPU1,,0 + EI +.L11 POP AF + SETPORT WINSP.Y_PORT,,0 + POP IY + RET + +PrnVScrBar PUSH IY + GETPORT WINSP.Y_PORT + PUSH AF + GETPORT WINSP.CPU1 + LD IYH,A + LD L,(IX + BAR.FIRSTL) ; FirstFile + LD H,(IX + BAR.FIRSTH) + LD E,(IX + BAR.PAGEL) + LD D,(IX + BAR.PAGEH) + LD C,(IX + BAR.MAXL) ; EquipFiles + LD B,(IX + BAR.MAXH) + LD A,B + OR C + JR NZ,.L1 + INC BC +.L1 PUSH BC + PUSH HL + ADD HL,DE + SBC HL,BC + POP HL + JR C,.L2 + JR Z,.L2 + LD L,C + LD H,B + SBC HL,DE + JR NC,.L2 + LD HL,0x0000 +.L2 EX DE,HL + LD C,(IX + BAR.MAXLL) + LD B,(IX + BAR.MAXLH) + CALL Mult16X16 + POP BC + CALL Divis32X16 + LD A,(IX + BAR.YL) + LD IYL,A + LD A,D + OR E + JR Z,.L3 + PUSH DE + LD A,E + LD (.L4),A + LD L,(IX + BAR.XL) + LD H,(IX + BAR.XH) + SRL H + RR L + SET 6,H + LD D,COLORP.HIGHGRAY + COLORI.HIGHGRAY;0x88 + SETPORT WINSP.CPU1,0x50 + DI + ACCEL ACCELCMD.SET_BUFFER + LD A,0x00 +.L4 EQU $-1 + ACCEL ACCELCMD.OFF + LD B,0x08 +.L5 LD A,IYL + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.FILL_VERT + LD (HL),D + ACCEL ACCELCMD.OFF + INC HL + DJNZ .L5 + LD A,IYL + ADD A,E + LD IYL,A + LD A,IYH + SETPORT WINSP.CPU1,,0 + EI + POP DE +.L3 PUSH DE + LD L,(IX + BAR.YL) + LD H,(IX + BAR.YH) + ADD HL,DE + LD E,(IX + BAR.LEFTL) + LD D,(IX + BAR.LEFTH) + LD A,D + OR E + JR Z,.L6 + EX DE,HL + SETPORT WINSP.Y_PORT,0xC0 + LD (HL),E + INC HL + LD (HL),D + EX DE,HL +.L6 PUSH HL + LD L,(IX + BAR.XL) + LD H,(IX + BAR.XH) + SRL H + RR L + SET 6,H + LD A,(IX + BAR.LENL) + LD C,A + SUB 0x02 + LD (.L7),A + SETPORT WINSP.CPU1,0x50 + DI + ACCEL ACCELCMD.SET_BUFFER + LD A,0x00 +.L7 EQU $-1 + ACCEL ACCELCMD.OFF + LD DE,(COLORP.WHITE + COLORI.WHITE) << 8 + COLORP.HIGHGRAY + COLORI.HIGHGRAY;0xFF88 + LD A,IYL + SETPORT WINSP.Y_PORT,,0 + LD (HL),D + INC A + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.FILL_VERT + LD (HL),D + ACCEL ACCELCMD.OFF + LD (HL),COLORP.WHITE + COLORI.BLACKGRAY;0xF7 + INC HL + LD B,0x06 +.L8 LD A,IYL + SETPORT WINSP.Y_PORT,,0 + LD (HL),D + INC A + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.FILL_VERT + LD (HL),E + ACCEL ACCELCMD.OFF + LD (HL),COLORP.BLACKGRAY + COLORI.BLACKGRAY;0x77 + INC HL + DJNZ .L8 + LD A,IYL + SETPORT WINSP.Y_PORT,,0 + LD (HL),COLORP.WHITE + COLORI.BLACKGRAY;0xF7 + INC A + SETPORT WINSP.Y_PORT,,0 + LD A,COLORP.BLACKGRAY + COLORI.BLACKGRAY;0x77 + ACCEL ACCELCMD.FILL_VERT + LD (HL),A + ACCEL ACCELCMD.OFF + LD (HL),A + INC HL + LD A,IYL + ADD A,C + LD IYL,A + LD A,IYH + SETPORT WINSP.CPU1,,0 + EI + POP HL + LD C,(IX + BAR.LENL) + LD B,(IX + BAR.LENH) + PUSH BC + ADD HL,BC + LD C,(IX + BAR.RIGHTL) + LD B,(IX + BAR.RIGHTH) + LD A,B + OR C + JR Z,.L9 + SETPORT WINSP.Y_PORT,0xC0 + LD A,L + LD (BC),A + INC BC + LD A,H + LD (BC),A +.L9 POP BC + LD L,(IX + BAR.MAXLL) + LD H,(IX + BAR.MAXLH) + OR A + SBC HL,BC + POP BC + JR Z,.L10 + JR C,.L10 + OR A + SBC HL,BC + JR Z,.L10 + JR C,.L10 + LD A,L + LD (.L11),A + LD L,(IX+BAR.XL) + LD H,(IX+BAR.XH) + SRL H + RR L + SET 6,H + LD D,COLORP.HIGHGRAY + COLORI.HIGHGRAY;0x88 + SETPORT WINSP.CPU1,0x50 + DI + ACCEL ACCELCMD.SET_BUFFER + LD A,0x00 +.L11 EQU $-1 + ACCEL ACCELCMD.OFF + LD B,0x08 +.L12 LD A,IYL + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.FILL_VERT + LD (HL),D + ACCEL ACCELCMD.OFF + INC HL + DJNZ .L12 + LD A,IYH + SETPORT WINSP.CPU1,,0 + EI +.L10 POP AF + SETPORT WINSP.Y_PORT,,0 + POP IY + RET + +;[]-----------------------------------------------------------[] +InitProcess SUB A + LD (IX + PROC.CURL1),A + LD (IX + PROC.CURH1),A + LD (IX + PROC.CURL2),A + LD (IX + PROC.CURH2),A + LD (IX + PROC.CORRL),A + LD (IX + PROC.CORRH),A + LD C,(IX + PROC.MAXLL) ; /. + LD B,(IX + PROC.MAXLH) + LD E,(IX + PROC.MAXL1) + LD D,(IX + PROC.MAXH1) + LD L,(IX + PROC.MAXL2) + LD H,(IX + PROC.MAXH2) + CALL Divis32X16 ; HL + DE / BC = DE (HL-) + LD A,H + OR L + JR Z,.L2 + INC DE ; = 樥 +.L2 LD HL,9 + OR A + SBC HL,DE + JR C,.L1 + LD A,(IX + PROC.MAXL2) + OR (IX + PROC.MAXH2) + JR NZ,.L1 + LD E,(IX + PROC.MAXL1) + LD D,(IX + PROC.MAXH1) + LD BC,1000 + LD (IX + PROC.CORRL),C + LD (IX + PROC.CORRH),B + CALL Mult16X16 + LD C,(IX + PROC.MAXLL) ; /. + LD B,(IX + PROC.MAXLH) + CALL Divis32X16 ; HL + DE / BC = DE (HL-) +.L1 LD (IX + PROC.COEFL),E + LD (IX + PROC.COEFH),D + RET + +PrnProcess PUSH IY + GETPORT WINSP.Y_PORT + PUSH AF + GETPORT WINSP.CPU1 + LD IYL,A + LD E,(IX + PROC.CURL1) + LD D,(IX + PROC.CURH1) + LD L,(IX + PROC.CURL2) + LD H,(IX + PROC.CURH2) + LD A,(IX + PROC.CORRL) + OR (IX + PROC.CORRH) + JR Z,.L1 + LD C,(IX + PROC.CORRL) + LD B,(IX + PROC.CORRH) + CALL Mult16X16 +.L1 LD C,(IX + PROC.COEFL) + LD B,(IX + PROC.COEFH) + CALL Divis32X16 + LD L,(IX + PROC.XL) + LD H,(IX + PROC.XH) + SRL H + RR L + SET 6,H + LD A,D + OR E + JR Z,.L2 + PUSH DE + PUSH HL + LD L,(IX + PROC.MAXLL) + LD H,(IX + PROC.MAXLH) + OR A + SBC HL,DE + JR NC,.L3 + ADD HL,DE + EX DE,HL +.L3 POP HL + SRL D + RR E + JR NC,.L4 + INC DE +.L4 LD A,(IX + PROC.YL) + LD C,A + LD A,(IX + PROC.COLOR) + AND 0xF0 + LD B,A + RRCA + RRCA + RRCA + RRCA + OR B + LD B,A + SETPORT WINSP.CPU1,0x50 + DI + ACCEL ACCELCMD.SET_BUFFER + LD A,0x0A + ACCEL ACCELCMD.OFF +.L5 LD A,C + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.FILL_VERT + LD (HL),B + ACCEL ACCELCMD.OFF + INC HL + DEC DE + LD A,D + OR E + JR NZ,.L5 + LD A,IYL + SETPORT WINSP.CPU1,,0 + EI + POP DE +.L2 PUSH HL + LD L,(IX + PROC.MAXLL) + LD H,(IX + PROC.MAXLH) + OR A + SBC HL,DE + EX DE,HL + POP HL + JR Z,.L6 + JR C,.L6 + SRL D + RR E + JR NC,.L7 + INC DE +.L7 LD A,(IX + PROC.YL) + LD C,A + LD A,(IX + PROC.COLOR) + AND 0x0F + LD B,A + RLCA + RLCA + RLCA + RLCA + OR B + LD B,A + SETPORT WINSP.CPU1,0x50 + DI + ACCEL ACCELCMD.SET_BUFFER + LD A,0x0A + ACCEL ACCELCMD.OFF +.L8 LD A,C + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.FILL_VERT + LD (HL),B + ACCEL ACCELCMD.OFF + INC HL + DEC DE + LD A,D + OR E + JR NZ,.L8 + LD A,IYL + SETPORT WINSP.CPU1,,0 + EI +.L6 POP AF + SETPORT WINSP.Y_PORT,,0 + POP IY + RET diff --git a/fndos.a80 b/fndos.a80 new file mode 100644 index 0000000..e9617b0 --- /dev/null +++ b/fndos.a80 @@ -0,0 +1,313 @@ + +; LAST UPDATE: 27.04.2025 savelij + +;[]----------------------------------------------------------[] +BegDIRECTORY LD HL,BegDIR +NewDIRECTORY PUSH HL + CALL ResInvert + POP HL + CALL SetClock + PUSH IY + SPDSS DSSF.CHDIR + POP IY + CALL C,DOSError + PUSH IY + SPDSS DSSF.CURDISK + POP IY + PUSH IY + POP HL + LD DE,PANEL.CURRPATH + ADD HL,DE + ADD A,'A' + CP (HL) + PUSH AF + LD (HL),A + INC HL + LD (HL),':' + INC HL + PUSH IY + SPDSS DSSF.CURDIR + POP IY + POP AF + JR Z,NewDIRECT1 + LD A,(TreeFlag) + OR A + JP Z,InitPanel + BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) + JP NZ,InitPanel + BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + LD HL,LeftPanel + PANEL.CURRPATH + LD DE,RightPanel + PANEL.CURRPATH + JR Z,NewDIR0 + LD HL,RightPanel + PANEL.CURRPATH + LD DE,LeftPanel + PANEL.CURRPATH +NewDIR0 SUB A +.L1 LDI + CP (HL) + JR NZ,.L1 + LD (DE),A + JP InitPanels + +NewDIRECT1 BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) + PUSH AF + CALL NZ,NewDIRTree + POP AF + CALL Z,ReadDIR + CALL PrintPath + BIT PANELFLAG.B_PRNDOSPATH,(IY + PANEL.PANELFLAG) + CALL NZ,PrintDOSPath + CALL PrintDIR + CALL SetInvert + CALL PrnFileInfo + PUSH IY + POP IX + LD DE,PANEL.BARXL + ADD IX,DE + CALL InitScrollBar + LD A,(IY + PANEL.VIEWFLAG) + AND VIEWFLAG.MASK + PUSH AF + CALL Z,PrnHScrBar + POP AF + CALL NZ,PrnVScrBar + JP SetMouse + +NewDIRTree PUSH IY + POP HL + LD DE,PANEL.CURRPATH + ADD HL,DE + INC HL + INC HL + IF TREE_REZID + CALL RESIDENT.FindTreeDIR + CALL RESIDENT.MakeTreePath + ELSE + CALL FindTreeDIRR + CALL MakeTreePathR + ENDIF + PUSH IY + BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + LD IY,RightPanel + JR Z,.L1 + LD IY,LeftPanel +.L1 CALL NewDIRECTORY + POP IY + RET + +;[]----------------------------------------------------------[] +RefreshDIR BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) + JR NZ,RfDIRn1 + CALL ReadDIR + CALL PrintDIR + CALL PrnFileInfo + PUSH IY + POP IX + LD DE,PANEL.BARXL + ADD IX,DE + CALL InitScrollBar + LD A,(IY + PANEL.VIEWFLAG) + AND VIEWFLAG.MASK + PUSH AF + CALL Z,PrnHScrBar + POP AF + CALL NZ,PrnVScrBar +RfDIRn1 LD HL,LeftPanel + PANEL.CURRPATH + LD DE,RightPanel + PANEL.CURRPATH +RefrDIR LD A,(DE) + CP (HL) + RET NZ + INC HL + INC DE + LD A,(HL) + OR A + JR NZ,RefrDIR + LD A,(DE) + OR A + RET NZ + PUSH IY + BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + LD IY,RightPanel + JR Z,.L1 + LD IY,LeftPanel +.L1 BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) + JR NZ,RefrDex + CALL ReadDIR + CALL PrintDIR + CALL PrnFileInfo + PUSH IY + POP IX + LD DE,PANEL.BARXL + ADD IX,DE + CALL InitScrollBar + LD A,(IY + PANEL.VIEWFLAG) + AND VIEWFLAG.MASK + PUSH AF + CALL Z,PrnHScrBar + POP AF + CALL NZ,PrnVScrBar +RefrDex POP IY + RET + +;[]----------------------------------------------------------[] +FindPrevFile LD A,(IY + PANEL.EFL) + OR (IY + PANEL.EFH) + RET Z + BIT PANELFLAG.B_PRNDOSPATH,(IY + PANEL.PANELFLAG) + RET Z + GETPORT WINSP.CPU1 + PUSH AF + BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + LD A,(RAMPAGES.LEFTPANEL) + JR Z,.L1 + LD A,(RAMPAGES.RIGHTPANEL) +.L1 + SETPORT WINSP.CPU1,,0 + LD IX,0x4000 + LD HL,0x4001 + LD BC,0x0000 +FndPrFile0 PUSH HL + BIT DIR.B_Dir,(IX + FileHDR.Attr) + JR NZ,FndPrFileNxt + LD DE,WorkBuffer + PUSH DE + PUSH BC + CALL MakeDOSname + POP BC + POP HL + LD DE,PrevFile +FndPrFile1 LD A,(DE) + OR A + JR Z,FndPrFileE + CP (HL) + JR NZ,FndPrFileNxt + INC HL + INC DE + JR FndPrFile1 + +FndPrFileNxt POP HL + LD DE,FileHDR.SIZE + ADD HL,DE + ADD IX,DE + INC BC + LD A,(HL) + OR A + JR NZ,FndPrFile0 + JP FndTreeExt + +FndPrFileE LD A,(HL) + OR A + JR NZ,FndPrFileNxt + JR FndTree + +PrevFile DB 13 DUP 0 + +;[]----------------------------------------------------------[] +FindPrevDIR LD A,(IY + PANEL.EFL) + OR (IY + PANEL.EFH) + RET Z + BIT PANELFLAG.B_PRNDOSPATH,(IY + PANEL.PANELFLAG) + RET Z + GETPORT WINSP.CPU1 + PUSH AF + BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + LD A,(RAMPAGES.LEFTPANEL) + JR Z,.L1 + LD A,(RAMPAGES.RIGHTPANEL) +.L1 + SETPORT WINSP.CPU1,,0 + LD IX,0x4000 + LD HL,0x4001 + LD BC,0x0000 +FndPrDIR0 PUSH HL + BIT DIR.B_Dir,(IX + FileHDR.Attr) + JR Z,FndPrDIRnxt + LD DE,WorkBuffer + PUSH DE + PUSH BC + CALL MakeDOSname + POP BC + POP HL + LD DE,PrevDIR +FndPrDIR1 LD A,(DE) + OR A + JR Z,FndPrDIRe + CP (HL) + JR NZ,FndPrDIRnxt + INC HL + INC DE + JR FndPrDIR1 + +FndPrDIRnxt POP HL + LD DE,FileHDR.SIZE + ADD HL,DE + ADD IX,DE + INC BC + LD A,(HL) + OR A + JR NZ,FndPrDIR0 + JR FndTreeExt + +FndPrDIRe LD A,(HL) + OR A + JR NZ,FndPrDIRnxt +FndTree INC SP + INC SP + LD L,C + LD H,B + LD C,(IY + PANEL.FPL) + LD B,(IY + PANEL.FPH) + LD DE,0x0000 + EX DE,HL + OR A + SBC HL,BC + EX DE,HL +.L1 EX DE,HL + ADD HL,BC + EX DE,HL + OR A + SBC HL,BC + JR NC,.L1 + ADD HL,BC + LD (IY + PANEL.CFL),L + LD (IY + PANEL.CFH),H + LD (IY + PANEL.FFL),E + LD (IY + PANEL.FFH),D +FndTreeExt POP AF + SETPORT WINSP.CPU1,,0 + RET + +PrevDIR DB 13 DUP 0 + +;[]----------------------------------------------------------[] +MakeDOSname LD BC,0x0820 +.L1 LD A,(HL) + CP C + JR Z,.L2 + INC HL + LD (DE),A + INC DE + DJNZ .L1 + JR .L5 + +.L2 +; LD A,B +; OR A +; JR Z,.L5 + INC HL + DJNZ .L2 +.L5 LD B,0x03 + INC HL + LD A,(HL) + CP C + JR Z,.L4 + LD A,'.' + LD (DE),A + INC DE +.L3 LD A,(HL) + INC HL + LD (DE),A + INC DE + DJNZ .L3 +.L4 SUB A + LD (DE),A + RET diff --git a/fndosline.a80 b/fndosline.a80 new file mode 100644 index 0000000..e35ada5 --- /dev/null +++ b/fndosline.a80 @@ -0,0 +1,710 @@ + +; LAST UPDATE: 28.05.2025 savelij + +;[]==========================================================[] +DOSline SUB A + LD (HistCurrent),A + SPDSS DSSF.TESTKEY + BIT KEYBSTAT.B_ALT,B + JR Z,DOSln0 + LD A,D + AND 0x7F + CP SC.1 ; 0x02 + JR C,DOSlnEx + CP SC.BKSP ; 0x0E + JP C,RESIDENT.QSearch + CP SC.Q ; 0x10 + JR C,DOSlnEx + CP SC.QSKOBKAL ; 0x1A + JP C,RESIDENT.QSearch + CP SC.A ; 0x1D + JR C,DOSlnEx + CP SC.DOTZAP ; 0x26 + JP C,RESIDENT.QSearch + CP SC.Z ; 0x2A + JR C,DOSlnEx + CP SC.ZAP ; 0x31 + JP C,RESIDENT.QSearch + JR DOSlnEx + +DOSln0 LD A,E + CP 0x0D + JP Z,RunDOSline + CP 0x1B + JP Z,ClrDOSln1 + CP '!' ; 0x21 + JR NC,DOSloop + CP ' ' ; 0x20 + JR NZ,DOSln1 + LD A,(DOSstr.slen) + OR A + JR NZ,DOSloop +; ⪠ 䠩 SPACE + SPDSS DSSF.SCANKEY + JP RESIDENT.MarkFile + +DOSln1 LD A,D + CP SC.ENTER | SC.RUS ; 0xA8 + JR Z,DOSloop + CP SC.QSKOBKAL | SC.RUS ; 0x9A + JR Z,DOSloop + CP SC.QSKOBKAR | SC.RUS ; 0x9B + JR Z,DOSloop + CP SC.E | SC.RUS ; 0x92 + JR Z,DOSloop +DOSlnEx + SPDSS DSSF.SCANKEY + RET + +DOSloop SUB A + LD (HistCurrent),A + LD IX,DOSstr + LD HL,DOSTab + CALL DOSInputLine + RET C + JR Z,RunDOSline + SPDSS DSSF.TESTKEY + LD A,E + CP 0x1B + RET NZ + LD A,(DOSstr.slen) + OR A + RET Z + CALL ClearDOSline + SPDSS DSSF.SCANKEY + JR DOSloop + +;[]----------------------------------------------------------[] +ClrDOSln1 + SPDSS DSSF.SCANKEY + LD A,(DOSstr.slen) + OR A + JP Z,ShowDOSscreen +ClearDOSline SUB A + LD (HistCurrent),A + LD A,(DOSstr.slen) + OR A + RET Z + LD HL,DOSinp + SUB A + LD B,0x80 +.L1 LD (HL),A + INC HL + DJNZ .L1 + LD (DOSstr.slen),A + LD (DOSstr.posX),A + LD (DOSstr.addX),A + MAKEWINDOW WINSUBOBJ.WOBIND + W_FILL 254,229,380,10,COLORI.PANEL + W_END + RET + +;[]----------------------------------------------------------[] +RunDOSline + SPDSS DSSF.SCANKEY + LD A,(DOSstr.slen) + OR A + JP Z,OpenFile + CALL SaveDOSline + LD HL,DOSinp + LD A,(HL) + CP 0x20 + JP Z,ClearDOSline + LD A,(DOSstr.slen) + LD B,A + LD C,0x00 + LD A,0x20 +RunDLn0 CP (HL) + JR Z,RunDLine + INC HL + INC C + DJNZ RunDLn0 +RunDLine DEC HL + LD A,'\\' + CP (HL) + JP NZ,RunDOSexe + LD HL,DOSinp + LD DE,WorkBuffer + PUSH DE + LD B,0x00 + LDIR + SUB A + LD (DE),A + CALL ClearDOSline + POP HL + LD A,(DOSinp + 1) + CP ':' + JR NZ,.L1 + LD (IY + PANEL.CURRPATH),0x00 +.L1 CALL NewDIRECTORY + LD A,(TreeFlag) + OR A + RET Z + BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) + RET NZ + PUSH IY + BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + LD IY,LeftPanel + LD HL,RightPanel + JR NZ,.L2 + LD IY,RightPanel + LD HL,LeftPanel +.L2 LD DE,PANEL.CURRPATH + ADD HL,DE + INC HL + INC HL + IF TREE_REZID + CALL RESIDENT.FindTreeDIR + ELSE + CALL FindTreeDIRR + ENDIF + CALL PrintDIR + CALL PrnFileInfo + PUSH IY + POP IX + LD DE,PANEL.BARXL + ADD IX,DE + CALL PrnVScrBar + POP IY + RET + +RunDOSexe LD HL,DOSinp - 1 +RunDE1 INC HL + LD A,(HL) + CP '!' + JR C,RunDOSexe1 + CP '.' + JR NZ,RunDE1 + INC HL + LD A,(HL) + RES 5,A + CP 'F' + JR NZ,RunDOSexe1 + INC HL + LD A,(HL) + RES 5,A + CP 'L' + JR NZ,RunDOSexe1 + INC HL + LD A,(HL) + RES 5,A + CP 'X' + JR NZ,RunDOSexe1 + LD HL,DOSinp + LD DE,WorkBuffer + SUB A +.L1 LDI + CP (HL) + JR NZ,.L1 + LD (DE),A + CALL ClearDOSline + CALL RunFLX + JP C,DOSError + RET + +RunDOSexe1 ld hl,WorkBuffer + ld de,WorkBuffer + 1 + ld bc,0x0100 + ld (hl),0 + ldir + LD DE,WorkBuffer + call GetFileName + jp c,.error + ld hl,DOSinp + call SkipWord + ld a,(hl) + and a + jr z,.endOfLine + dec hl + ld de,WorkBuffer + call ConcatString +.endOfLine: ld hl,WorkBuffer + ld de,WorkBuffer + 0x0100 + SPDSS DSSF.EX_PATH,4 + jr c,.error + and 2 + jr z,.unknown + ld hl,(WorkBuffer + 0x0100) + ld de,'XE' ;0x5845 - 'EX' + sbc hl,de + jr nz,.noExe + ld a,(WorkBuffer + 0x0102) + cp 'E' + jr nz,.noExe + ;!TODO ᯥ筮 ᪠ exe? + ; ... ... ... + ; +.unknown: ld hl,WorkBuffer + ld de,WorkBuffer + 0x0100 + ld bc,0x0100 + ldir + jr .noBatch + +.noExe: ld hl,ShellFile ;㥬 襫 + ld de,WorkBuffer + 0x0100 + call CopyString + ld hl,WorkBuffer + call ConcatString +.noBatch: CALL ResDrivers + SUB A + CALL ClearScreen + CALL ResVideoMode + LD HL,ReStartPoint + EX (SP),HL + LD HL,WorkBuffer + 0x0100 + SPDSS DSSF.EXEC,0 + RET NC + PUSH AF + SETPORT BORDER,0 + CALL InitVideoMode + CALL InitDrivers + CALL InitScreen + CALL ClearDOSline + SUB A + CALL InitPanels + POP AF +.error: CALL DOSError + LD HL,MainLoop + EX (SP),HL + RET + +; ⠢ .ப ᯮ塞 䠩 +; ᫨ 㪠 ᮫ 䠩 ᪠, 楫 +; ᫨ 䠩, ந ⪠ ᪠ 䠩 +; ⠫ ⥪饩 ⠢ ᮫ , ᫨ , 䠩 +; DE - 䠩 +GetFileName: LD A,(DOSinp + 1) ; .ப 㪠 ᮫ 䠩 ( ᪮) + CP ':' + JR nz,.panelSearch +.notFound: ld hl,DOSinp ;㥬 .ப + jp CopyWord + +.panelSearch: ex hl,de + ld (.str),hl + bit PANELFLAG.B_SIDE,(iy + PANEL.PANELFLAG) + ld hl,RightPanel + PANEL.CURRPATH + jr nz,.next + ld hl,LeftPanel + PANEL.CURRPATH +.next: ld de,WorkBuffer + 0x0100 + call CopyString + ld a,'\\' + ld (de),a + inc de +; 뤥 䠩 ப + ld hl,DOSinp ; 㤠 + SPDSS DSSF.EX_PATH,3 + ret c ; 䠩 + bit 1,a + jr z,.noExt ; ᯮ塞 䠩 㪠 ७, ᪠ 㦭 + ld hl,EndOfString + jr .found1 + +.noExt: ld hl,BATExtension + call PrepareFilename + call SearchFilename + jr nc,.found + ld hl,EXEExtension +.found1: call PrepareFilename + call SearchFilename +.found: ld de,0 +.str EQU $-2 + jr c,.notFound + ld hl,WorkBuffer + 0200h + jp CopyString + +;⮢ 䠩 ᪠ +PrepareFilename: + ld de,WorkBuffer + 0200h + push hl + ld hl,WorkBuffer + 0x0100 + call CopyString + pop hl + jp ConcatString + +; 䠩 +SearchFilename: ld hl,WorkBuffer + 0200h ; 䠩 ⠫ ⥪饩 + ld de,WorkBuffer + 0300h + SPDSS DSSF.F_FIRST,1,DIR.M_Archive + DIR.M_ReadOnly + ret + +;[]----------------------------------------------------------[] +SaveDOSline + GETPORT WINSP.CPU1 + PUSH AF + LD A,(RAMPAGES.FNHELP) + SETPORT WINSP.CPU1,,0 + SETPORT WINSP.Y_PORT,0xC0 + LD IX,DOSstr + LD HL,(HistSpace) + LD C,(IX + DOSstr.slen - DOSstr) + LD B,0x00 +.L4 OR A + SBC HL,BC + JR C,.L1 + JR NZ,.L3 +.L1 LD A,(HistCount) + DEC A + LD (HistCount),A + PUSH BC + CALL FindHistory + POP BC + LD DE,DOShistory + DOShistory_Size + OR A + EX DE,HL + SBC HL,DE + JR .L4 + +.L3 DEC HL + LD (HistSpace),HL + PUSH BC + LD A,(HistCount) + CALL FindHistory + LD E,L + LD D,H + ADD HL,BC + INC HL + EX DE,HL + PUSH HL + LD BC,DOShistory + OR A + SBC HL,BC + LD C,L + LD B,H + POP HL + LD A,B + OR C + JR Z,.L2 + DEC HL + DEC DE + LDDR +.L2 POP BC + LD HL,DOSinp + LD DE,DOShistory + LD A,C + INC A + LD (DE),A + INC DE + LDIR + SUB A + LD (HistCurrent),A + POP AF + SETPORT WINSP.CPU1,,0 + LD HL,HistCount + INC (HL) + RET + +GetDOShistory LD IX,DOSstr + LD HL,HistCount + LD A,(HistCurrent) + INC (HL) + DEC (HL) + JP Z,ClearDOSline + CP (HL) + RET Z + EX AF,AF' + GETPORT WINSP.CPU1 + PUSH AF + LD A,(RAMPAGES.FNHELP) + SETPORT WINSP.CPU1,,0 + EX AF,AF' + PUSH AF + CALL FindHistory + LD DE,DOSinp + LD A,(HL) + INC HL + DEC A + LD (IX + DOSstr.slen - DOSstr),A + LD (IX + DOSstr.posX - DOSstr),A + LD C,A + LD B,0x00 + LDIR + SUB A + LD (IX + DOSstr.addX - DOSstr),A + POP AF + INC A + LD (HistCurrent),A + POP AF + SETPORT WINSP.CPU1,,0 + RET + +FindHistory LD HL,DOShistory + OR A + RET Z + LD B,A + LD D,0x00 +.L1 LD E,(HL) + ADD HL,DE + DJNZ .L1 + RET + +;[]----------------------------------------------------------[] +DOSInputLine LD (InpLnData),IX + LD (InputLine.InpMous),HL + RES 7,(IX + 0x01) + SET 6,(IX + 0x01) + SPDSS DSSF.TESTKEY + JR NZ,.L1 + RES 6,(IX + 0x01) +.L1 CALL InsInpLnCol + PUSH IX + POP HL + LD DE,LenInpData + ADD HL,DE + LD E,(IX + 0x04) + ADD HL,DE + LD (HL),D + CALL PrintInpLn + 3 +DOSLineLp HALT + CALL ChCursor + LD IX,(InputLine.InpMous) + CALL TestCoords + SPDSS DSSF.TESTKEY + JR Z,DOSLineLp + RES 7,D + BIT KEYBSTAT.B_ALT,B + JR NZ,DOSLineLp1;DOSLineLp ; 室, 権 ALT + LD IX,DOSTable2 ; CTRL + BIT KEYBSTAT.B_CTRL,B + JR NZ,DOSKeys + LD IX,DOSTable1 ; 䨪஢ +DOSKeys LD L,(IX + 0x00) ; ASCII code + INC IX + INC L + JR Z,DOSLineLp1 + DEC L + LD H,(IX + 0x00) ; position code + INC IX + LD C,(IX + 0x00) ; adr LOW + INC IX + LD B,(IX + 0x00) ; adr HIGH + INC IX + OR A + SBC HL,DE + JR NZ,DOSKeys + LD IX,(InpLnData) + RES 6,(IX + 0x01) + LD A,E + CP 0x1B + JR NZ,DOSLnNx + CALL ResCursor + LD A,0x01 + OR A + RET + +DOSLnNx LD HL,DOSLineLp + PUSH HL + PUSH BC + PUSH IX + SPDSS DSSF.SCANKEY + POP IX + RET + +DOSLineLp1 LD IX,(InpLnData) + LD A,E + CP 0x20 + JR NC,DOSLineLp2 + BIT 6,(IX + 0x01) + JR Z,DOSLnE0 + PUSH IX + SPDSS DSSF.SCANKEY + POP IX +DOSLnE0 CALL ResCursor + LD A,0x01 + OR A + RET + +DOSLineLp2 RES 6,(IX + 0x01) + LD HL,DOSLineLp + PUSH HL + PUSH IX + SPDSS DSSF.SCANKEY + POP IX + LD A,E + JP InsertSymbol + +DOSLnExtN POP HL + LD IX,(InpLnData) + CALL ResCursor + XOR A + RET + +DOSLnExtC POP HL + LD IX,(InpLnData) + CALL ResCursor + SCF + RET + +DOSTable1 DW SC.ESC << 8 | 0x1B, InputLine.InpLnExtC ; 0x011B,InpLnExtC + DW SC.ENTER << 8 | 0x0D,InputLine.InpLnExtN ; 0x280D,InpLnExtN + DW SC.X4 << 8, ILleft ; 0x5400,ILleft + DW SC.X6 << 8, ILright ; 0x5600,ILright + DW SC.BKSP << 8 | 8, ILdelet ; 0x0E08,ILdelet + DW SC.XDEL << 8, IL_del_ ; 0x4F00,IL_del_ + DW SC.X7 << 8, ILhome ; 0x5700,ILhome + DW SC.X1 << 8, ILend ; 0x5100,ILend + DB 0xFF + +DOSTable2 DW SC.X4 << 8, ILwordL ; 0x5400,ILwordL + DW SC.X6 << 8, ILwordR ; 0x5600,ILwordR + DW SC.BKSP << 8, ILdelWR ; 0x0E00,ILdelWR + DW SC.ENTER << 8, InsFileName ; 0x2800,InsFileName + DW SC.QSKOBKAL << 8, InsLeftPath ; 0x1A00,InsLeftPath + DW SC.QSKOBKAR << 8, InsRightPath ; 0x1B00,InsRightPath + DW SC.E << 8, InsHistory ; 0x1200,InsHistory + DB 0xFF + +InsFileName + GETPORT WINSP.CPU1 + PUSH AF + BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + LD A,(RAMPAGES.LEFTPANEL) + JR Z,.L1 + LD A,(RAMPAGES.RIGHTPANEL) +.L1 + SETPORT WINSP.CPU1,,0 + LD L,(IY + PANEL.FFL) + LD H,(IY + PANEL.FFH) + LD E,(IY + PANEL.CFL) + LD D,(IY + PANEL.CFH) + ADD HL,DE + BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) + JR Z,InsFN1 + ADD HL,HL + ADD HL,HL + ADD HL,HL + ADD HL,HL + SET 6,H + INC HL + INC HL + LD DE,TempName + LD BC,0x000D + LDIR + JR InsFN2 + +InsFN1 ADD HL,HL + ADD HL,HL + ADD HL,HL + LD E,L + LD D,H + ADD HL,HL + ADD HL,DE + SET 6,H + INC HL + LD DE,TempName + CALL MakeDOSname +InsFN2 POP AF + SETPORT WINSP.CPU1,,0 + LD HL,TempName + LD A,(HL) + CP '.' + RET Z + CP '\\' + RET Z + PUSH HL + SUB A + LD C,A +.L1 INC C + INC HL + CP (HL) + JR NZ,.L1 + LD (HL),0x20 + INC HL + LD (HL),A + INC C + POP HL + JP InsertWord + +TempName DB 14 DUP 0 + +InsLeftPath LD HL,LeftPanel + PANEL.CURRPATH + JR InsPath + +InsRightPath LD HL,RightPanel + PANEL.CURRPATH +InsPath LD DE,WorkBuffer + 0x100 + PUSH DE + SUB A + LD C,A +.L1 LDI + CP (HL) + JR NZ,.L1 + DEC HL + LD A,'\\' + CP (HL) + JR Z,.L2 + LD (DE),A + INC DE + DEC C +.L2 SUB A + SUB C + LD C,A + POP HL + JP InsertWord + +InsertWord LD A,(IX + 0x04) ;InpytSymb + ADD A,C + RET C + SUB (IX + 0x00) ;Max len + RET NC + PUSH HL + LD A,(IX + 0x04) + SUB (IX + 0x02) + JR Z,NotInsWord +; । ⥪ + PUSH IX + POP HL + LD DE,LenInpData + ADD HL,DE + LD E,(IX + 0x04) + ADD HL,DE + LD E,L + LD D,H + LD B,0x00 + ADD HL,BC + EX DE,HL + DEC HL + DEC DE + PUSH BC + LD C,A + LDDR + POP BC +NotInsWord PUSH IX + POP HL + LD DE,LenInpData + ADD HL,DE + LD E,(IX + 0x02) + ADD HL,DE + EX DE,HL + POP HL + PUSH BC + LD B,0x00 + LDIR + POP BC + LD A,(IX + 0x04) + ADD A,C + LD (IX + 0x04),A + LD A,(IX + 0x02) + ADD A,C + LD (IX + 0x02),A + JP PrintInpLn + +InsHistory CALL GetDOShistory + JP PrintInpLn + +;[]----------------------------------------------------------[] +ShellFile: db "X:\\SYSTEM.EXE /C ",0 ; 襫 +BATExtension: db ".BAT",0 +EXEExtension: db ".EXE" +EndOfString: db 0 +DOSstr DB 0x80,0x00 +.posX DB 0x00 +.addX DB 0x00 +.slen DB 0x00 + DW 256,231,376 + DB COLORP.PANEL + COLORI.FILES + +DOSinp DB 0x81 DUP 0 + +HistSpace DEFW 0x200 +HistCount DEFB 0x00 +HistCurrent DEFB 0x00 +;[]----------------------------------------------------------[] diff --git a/fninit.a80 b/fninit.a80 new file mode 100644 index 0000000..7e25c25 --- /dev/null +++ b/fninit.a80 @@ -0,0 +1,602 @@ + +; LAST UPDATE: 27.04.2025 savelij + +;[]==========================================================[] +InitVideoMode + SPDSS DSSF.GETVMOD + LD C,A ; ⥪騩 ० ࠭ + LD A,(InitFlg) + OR A + JR NZ,.L1 + LD A,C + LD (VMode),A + LD A,B ; ࠭ ࠭ + LD (VScrn),A +.L1 LD HL,WorkBuffer + SPBIOS BIOSF.FN_VERSION + ;!TODO ஢ ᫥ + AND A + LD HL,-0x101;ACEX.Config_ID.Sp2000 + SBC HL,BC + JR Z,.L2 + SPBIOS BIOSF.RST_CONF_CUSTOM,,-3 +.L2: + ;????? ਠ 뤠 FN_VERSION ஢. 㬠. + ; LD A,%0000'1101 ; 㦭 All_Mode + ; AND L + ; SUB %0000'1101 + ; JR Z,InitVM1 + ; IN A,(SCREEN_SWITCH) + ; PUSH AF + ; LD C,BIOS.RST_CONF.SP97_2 + ; RST ToBIOS + ; SUB A + ; OUT (BorderColor),A + ; POP AF + ; OUT (SCREEN_SWITCH),A +InitVM1 + SPDSS DSSF.SETVMOD,0,SETVMOD.GRF640X256 + SUB A + CALL ClearScreen +InitPAL LD HL,PALETTE + LD DE,0x1000 + SPBIOS BIOSF.PIC_SET_PAL,0xFF,0 + RET + +;[]----------------------------------------------------------[] +ResVideoMode LD B,0x00 +VScrn EQU $-1 + LD A,0x00 +VMode EQU $-1 + PUSH IY + SPDSS DSSF.SETVMOD + POP IY + RET + +;[]==========================================================[] +InitDrivers SUB A + LD (CMOSFlag),A + LD L,A + LD H,A + LD (TestCoords.PrvTabl),HL + LD (TestCoords.PrMousX),HL + LD (TestCoords.PrMousY),HL + SPDSS DSSF.GETMEM,7 + JR NC,InitDrv + CALL ResVideoMode + LD HL,NoEnMemory + SPDSS DSSF.PCHARS + LD A,(RAMPAGES.FNPAGESID) + SPDSS DSSF.FREEMEM + SPDSS DSSF.EXIT,0x1E + +NoEnMemory DZ "Not enough memory to run program.\r\n" + +InitDrv LD (RAMPAGES.BufferID),A + LD HL,RAMPAGES.FLX + SPBIOS BIOSF.GETMEMBLKPAGES +.skip: + SPDSS DSSF.CURDISK + JR C,.skip + LD A,C + CP 12 + JR C,.L1 + LD A,11 +.L1 LD (NUM_DEVICES),A + SPDSS DSSF.GETTIME + JR C,.L3 + LD A,D + CP 32 + CCF + JR C,.L3 + LD A,E + CP 13 + CCF + JR C,.L3 + LD A,H + CP 24 + CCF + JR C,.L3 + LD A,L + CP 60 + CCF +.L3 LD A,0x00 + JR C,.L2 + INC A +.L2 LD (CMOSFlag),A + LD A,0x00 +InitFlg EQU $-1 + OR A + CALL Z,FirstInit + CALL SETUP_DISKS + SPMOUSE MOUSEF.INIT + LD A,(MouseFlag) + OR A + LD C,MOUSEF.SHOW + JR NZ,.L1 + LD C,MOUSEF.HIDE +.L1 + SPMOUSE + ;!TEST enable shared interrupts + ;Check BIOS version + SPBIOS BIOSF.DRV_VERSION + AND A + LD HL,2 << 8 + 54 ;!HARDCODE (쭠 )-1 ⨢樨 뢠 + SBC HL,DE + RET NC ; 室, ᫨ 2.55 + LD BC,WINSP.CPU2 + IN B,(C) + SETPORT WINSP.CPU2,0xFE + LD A,0xAA + LD (0x0127 + CPU2),A;(SYS_PAGE.INT_ID - #4000),A ;!HARDCODE SYS_PAGE.INT_ID - #4000 + OUT (C),B + RET + +FirstInit + SPDSS DSSF.BOOTDSK,0 + ADD A,'A' + LD (ShellFile),a ; fndosln.z80 + SPDSS DSSF.CURDISK + LD HL,LeftPanel + PANEL.CURRPATH + PUSH HL + ADD A,'A' + LD (HL),A + INC HL + LD (HL),':' + INC HL + SPDSS DSSF.CURDIR + POP HL + LD DE,RightPanel + PANEL.CURRPATH + LD BC,0x0100 + LDIR + GETPORT WINSP.CPU1 + PUSH AF + LD A,(RAMPAGES.FNFUNCT) + SETPORT WINSP.CPU1,,0 + LD HL,FlexDIRECTORY + SPDSS DSSF.APPINFO,1 + JP C,.L5 + LD HL,FlexDIRECTORY + SPDSS DSSF.CHDIR + JP C,.L5 + LD HL,SetupName + SPDSS DSSF.OPEN,,1 + JR C,.L5 + PUSH AF + LD HL,WorkBuffer + push hl + push hl + ld (hl),0 + pop de + ld bc,0x00ff + inc de + ldir + pop hl + LD DE,0x0100 + SPDSS DSSF.READ + POP AF + SPDSS DSSF.CLOSE + LD HL,WorkBuffer + LD DE,SetupHead + LD B,11 +.L3 LD A,(DE) + CP (HL) + JR NZ,.L5 + INC HL + INC DE + DJNZ .L3 + LD DE,PALETTE + LD BC,0x0040 + LDIR + LD A,(HL) + INC HL + OR A + JR Z,.L4 + LD A,(HL) + INC HL + AND 0x01 + LD (MouseFlag),A + LD DE,LeftPanel + PUSH DE + LDI + LDI + LDI + POP DE + EX DE,HL + LD BC,PANEL.FILEMASK + ADD HL,BC + EX DE,HL + SUB A +.L1 LDI + CP (HL) + JR NZ,.L1 + LD (DE),A + INC HL + LD DE,RightPanel + PUSH DE + LDI + LDI + LDI + POP DE + EX DE,HL + LD BC,PANEL.FILEMASK + ADD HL,BC + EX DE,HL + SUB A +.L2 LDI + CP (HL) + JR NZ,.L2 + LD (DE),A +.L4 inc hl + ld a,(hl) ;ࠬ - ᬥ ᬥ ᪠ + ld (AutoActivatePanel),a + inc hl + CALL InitPAL +.L5 POP AF + SETPORT WINSP.CPU1,,0 + LD DE,InitExtention + LD A,(RAMPAGES.FNHELP) + LD C,WINSP.CPU1 + CALL Resident + LD HL,LeftPanel + PANEL.CURRPATH + SPDSS DSSF.CHDIR + LD A,0x01 + LD (InitFlg),A + RET + +; ⠡ 롮 ᪮ +SETUP_DISKS LD HL,BgDISKl ; ᪨ + LD DE,BgDISKr ; ᪨ ࠢ + LD BC,FORMTABL.SIZE * 2 + LD A,(NUM_DEVICES) +.L1 ADD HL,BC + INC HL + RES FORMTABL.B_ENDTABL,(HL) + DEC HL + EX DE,HL + ADD HL,BC + INC HL + RES FORMTABL.B_ENDTABL,(HL) + DEC HL + EX DE,HL + DEC A + JR NZ,.L1 + INC HL + SET FORMTABL.B_ENDTABL,(HL) + EX DE,HL + INC HL + SET FORMTABL.B_ENDTABL,(HL) + RET + +;[]----------------------------------------------------------[] +ResDrivers + SPMOUSE MOUSEF.HIDE + LD A,(RAMPAGES.BufferID) + SPDSS DSSF.FREEMEM + ;!TEST disable shared interrupts + LD BC,WINSP.CPU2 + IN B,(C) + SETPORT WINSP.CPU2,PAGE.SYSTEM;0xFE + XOR A + LD (0x0127 + CPU2),A ;!HARDCODE SYS_PAGE.INT_ID + OUT (C),B + RET + +;[]==========================================================[] +InitScreen + MAKEWINDOW WINSUBOBJ.NOSTORE + W_MAIN 0,0,640,256 + W_FILL 4,2,632,10,COLORI.BLACK + W_TEXT 16,3,COLORI.WHITE,"Flex Navigator v\{FLEX_VERS.NAVIGATOR}" + W_HORIZLINE 0,13,640 + W_TEXT 16,17,COLORP.HIGHGRAY,"File Select Options View Config About" + W_HORIZLINE 0,27,640 + W_VERTICLINE 318,30,12 + W_HORIZLINE 0,43,640 + W_HORIZLINE 0,211,640 + W_VERTICLINE 318,214,10 + W_HORIZLINE 0,225,640 + W_BORDER 252,228,384,12 + W_FILL 254,229,380,10,COLORI.PANEL + W_HORIZLINE 0,241,640 + W_BUTTON 0,242,80,14 + W_TEXT 22,245,COLORP.HIGHGRAY,"F1 Help" + W_BUTTON 80,242,80,14 + W_TEXT 100,245,COLORP.HIGHGRAY,"F3 View" + W_BUTTON 160,242,80,14 + W_TEXT 182,245,COLORP.HIGHGRAY,"F4 Edit" + W_BUTTON 240,242,80,14 + W_TEXT 260,245,COLORP.HIGHGRAY,"F5 Copy" + W_BUTTON 320,242,80,14 + W_TEXT 334,245,COLORP.HIGHGRAY,"F6 Rename" + W_BUTTON 400,242,80,14 + W_TEXT 414,245,COLORP.HIGHGRAY,"F7 MakeDir" + W_BUTTON 480,242,80,14 + W_TEXT 496,245,COLORP.HIGHGRAY,"F8 Delete" + W_BUTTON 560,242,80,14 + W_TEXT 580,245,COLORP.HIGHGRAY,"F10 Quit" + W_END + LD A,(CMOSFlag) + OR A + RET Z + MAKEWINDOW WINSUBOBJ.WOBIND + W_BORDER 500,15,136,12 + W_END + LD HL,0x01FC + LD DE,0x0012 + LD B,0x80 + EXX + LD HL,0x022E + LD DE,0x0012 + LD B,0x80 + EXX + LD A,0x02 + JP SetCMOSPrint + +;[]==========================================================[] +InitPanels LD (InitPanFlg),A + LD HL,LeftPanel+PANEL.VIEWFLAG + LD A,(RightPanel+PANEL.VIEWFLAG) + OR (HL) + AND 0x02 + JR NZ,InitPanTree + LD IY,LeftPanel + CALL InitPanelE + LD IY,RightPanel + CALL InitPanelE + JR InitPanExit + +InitPanTree LD IY,LeftPanel + BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + JR NZ,.L1 + LD IY,RightPanel +.L1 CALL InitPanelE +InitPanExit LD HL,LeftPanel + LD DE,PANEL.CURRPATH + BIT 7,(HL) + JR NZ,.L2 + LD HL,RightPanel +.L2 PUSH HL + ADD HL,DE + SPDSS DSSF.CHDIR + POP IY + RET + +InitPanel SUB A +InitPanel1 LD (InitPanFlg),A +InitPanelE LD A,(InitPanFlg) + BIT 0,A + CALL Z,SetClock + CALL PrintDisks + CALL PrintPath + BIT PANELFLAG.B_PRNDOSPATH,(IY+PANEL.PANELFLAG) + CALL NZ,PrintDOSPath + LD A,(IY+PANEL.VIEWFLAG) + AND VIEWFLAG.MASK + JP NZ,InitPPanel + LD L,(IY+PANEL.XL) + LD H,(IY+PANEL.XH) + LD (PanelN1),HL + INC HL + INC HL + LD (PanelN2),HL + LD (PanelN6),HL + LD (PanelN3),HL + LD (Nbut1),HL + LD (Nfile),HL + LD DE,0x0010 + ADD HL,DE + LD (PanelN4),HL + LD (Nbut1+2),HL + LD (Nbar1),HL + LD (IY+PANEL.BARXL),L + LD (IY+PANEL.BARXH),H + LD (IY+PANEL.BARYL),0xC9 + LD (IY+PANEL.BARYH),0x00 + LD DE,0x0114 + ADD HL,DE + LD (PanelN5),HL + LD (Nbar2+2),HL + LD (Nbut2),HL + LD (IY+PANEL.BARMLL),E + LD (IY+PANEL.BARMLH),D + LD DE,0x0010 + ADD HL,DE + LD (Nbut2+2),HL + LD (Nfile+2),HL + LD (IY+PANEL.FPL),0x33 + LD (IY+PANEL.FPH),0x00 +; ⪠ + MAKEWINDOW WINSUBOBJ.WOBIND +PanelN1 EQU $+1 + W_BORDER 0,59,312,151 +PanelN2 EQU $+1 + W_FILL 0,60,308,149,COLORI.PANEL +PanelN3 EQU $+1 + W_ICONLEFTARROW 0,201 +PanelN4 EQU $+1 + W_FILL 0,201,276,8,COLORI.HIGHGRAY +PanelN5 EQU $+1 + W_ICONRIGHTARROW 0,201 +PanelN6 EQU $+1 + W_FILL 0,213,310,12,COLORI.HIGHGRAY + W_END + + LD HL,NormMouse + LD DE,PanelPlaceL + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + JR Z,.L1 + LD DE,PanelPlaceR +.L1 PUSH DE + LD BC,0x0050 + LDIR + POP HL + LD C,0x32 + ADD HL,BC + LD (IY+PANEL.BARLFL),L + LD (IY+PANEL.BARLFH),H + LD C,0x0E + ADD HL,BC + LD (IY+PANEL.BARRTL),L + LD (IY+PANEL.BARRTH),H + JP InitPanEx + +NormMouse +Nfile DEFW 0, 0, 63,199,%0000000000000000,0,NewFile,RESIDENT.MarkFile +Nbut1 DEFW 0, 0,201,209,%0000000000000011,0,ScrollDown,0 +Nbut2 DEFW 0, 0,201,209,%0000000000000011,0,ScrollUp,0 +Nbar1 DEFW 0, 0,201,209,%0000000000000000,0,PageUp,0 +Nbar2 DEFW 0, 0,201,209,%0000000000000000,0,PageDown,0 + +; ஡ ॢ +InitPPanel LD L,(IY+PANEL.XL) + LD H,(IY+PANEL.XH) + LD (PanelP1),HL + INC HL + INC HL + LD (PanelP2),HL + LD (PanelP6),HL + LD (Pfile),HL + LD DE,0x0124 + ADD HL,DE + LD (PanelP3),HL + LD (PanelP4),HL + LD (PanelP5),HL + LD (Pbut1),HL + LD (Pbut2),HL + LD (Pbar1),HL + LD (Pbar2),HL + LD (Pfile+2),HL + LD (IY+PANEL.BARXL),L + LD (IY+PANEL.BARXH),H + LD DE,0x0010 + ADD HL,DE + LD (Pbut1+2),HL + LD (Pbut2+2),HL + LD (Pbar1+2),HL + LD (Pbar2+2),HL + LD (IY+PANEL.BARYL),0x44 + LD (IY+PANEL.BARYH),0x00 + LD (IY+PANEL.BARMLL),0x85 + LD (IY+PANEL.BARMLH),0x00 + LD (IY+PANEL.FPL),0x12 + LD (IY+PANEL.FPH),0x00 + MAKEWINDOW WINSUBOBJ.WOBIND +PanelP1 EQU $+1 + W_BORDER 0,59,312,151 +PanelP2 EQU $+1 + W_FILL 0,60,308,149,COLORI.PANEL +PanelP3 EQU $+1 + W_ICONUPARROW 0,60 +PanelP4 EQU $+1 + W_FILL 0,68,16,133,COLORI.HIGHGRAY +PanelP5 EQU $+1 + W_ICONDOWNARROW 0,201 +PanelP6 EQU $+1 + W_FILL 0,213,310,12,COLORI.HIGHGRAY + W_END + + LD HL,PodrMouse + LD DE,PanelPlaceL + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + JR Z,.L1 + LD DE,PanelPlaceR +.L1 PUSH DE + LD BC,0x0050 + LDIR + POP HL + LD BC,0x0036 + ADD HL,BC + LD (IY+PANEL.BARLFL),L + LD (IY+PANEL.BARLFH),H + LD BC,0x000E + ADD HL,BC + LD (IY+PANEL.BARRTL),L + LD (IY+PANEL.BARRTH),H + JP InitPanEx + +PodrMouse +Pfile DW 0, 0, 63,207,%0000000000000000,0,NewFile,RESIDENT.MarkFile +Pbut1 DW 0, 0, 60, 68,%0000000000000011,0,ScrollDown,0 +Pbut2 DW 0, 0,201,209,%0000000000000011,0,ScrollUp,0 +Pbar1 DW 0, 0, 68, 0,%0000000000000000,0,PageUp,0 +Pbar2 DW 0, 0, 0,209,%0000000000000000,0,PageDown,0 + +InitPanEx LD A,(InitPanFlg) + BIT 0,A + JR NZ,.L2 + PUSH IY + PUSH IY + POP HL + LD DE,PANEL.CURRPATH + ADD HL,DE + SPDSS DSSF.CHDIR + POP IY + JR NC,.L1 + CALL DOSError + PUSH IY + SPDSS DSSF.CURDISK + POP IY + PUSH IY + POP HL + LD DE,PANEL.CURRPATH + ADD HL,DE + ADD A,'A' + LD (HL),A + INC HL + LD (HL),':' + INC HL + PUSH IY + SPDSS DSSF.CURDIR + POP IY + JP InitPanel + +.L1 CALL ReadDIR + LD A,(InitPanFlg) + BIT 1,A + CALL NZ,FindPrevFile +.L2 CALL PrintDIR + CALL SetInvert + CALL PrnFileInfo + PUSH IY + POP IX + LD DE,PANEL.BARXL + ADD IX,DE + CALL InitScrollBar + LD A,(IY+PANEL.VIEWFLAG) + AND VIEWFLAG.MASK + PUSH AF + CALL Z,PrnHScrBar + POP AF + CALL NZ,PrnVScrBar + CALL SetMouse + LD A,(InitPanFlg) + BIT 0,A + RET NZ + LD HL,LeftPanel+PANEL.VIEWFLAG + LD A,(RightPanel+PANEL.VIEWFLAG) + OR (HL) + AND 0x02 + RRCA + LD (TreeFlag),A + BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + RET Z + PUSH IY + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + LD IY,RightPanel + LD HL,LeftPanel + PANEL.CURRPATH + LD DE,RightPanel + PANEL.CURRPATH + JR Z,.L3 + LD IY,LeftPanel + LD HL,RightPanel + PANEL.CURRPATH + LD DE,LeftPanel + PANEL.CURRPATH +.L3 SUB A +.L4 LDI + CP (HL) + JR NZ,.L4 + LD (DE),A + CALL InitPanelE + POP IY + RET + +InitPanFlg DEFB 0x00 diff --git a/fninput.a80 b/fninput.a80 new file mode 100644 index 0000000..af8baf6 --- /dev/null +++ b/fninput.a80 @@ -0,0 +1,801 @@ + +; LAST UPDATE: 20.03.2025 savelij + +;[]----------------------------------------------------------[] +InputLine LD (InpLnData),IX + LD (.InpMous),HL + SET 7,(IX+0x01) + SUB A + LD (IX+0x02),A + LD (IX+0x03),A + CALL InsInpLnCol + PUSH IX + POP HL + LD DE,LenInpData + ADD HL,DE + PUSH HL + LD E,(IX+0x04) + ADD HL,DE + LD (HL),D + LD (IX+0x02),E + POP HL + LD DE,WorkBuffer + LD A,(IX+0x02) + LD (DE),A + INC DE + LD A,(IX+0x03) + LD (DE),A + INC DE + LD A,(IX+0x04) + LD (DE),A + INC DE + LD C,A + LD B,0x00 + OR B + JR Z,.L1 + LDIR +.L1 CALL PrintInpLn.L1 +.InpLineLp HALT + CALL ChCursor + LD IX,0x0000 +.InpMous EQU $-2 + CALL TestCoords + SPDSS DSSF.TESTKEY + JR Z,.InpLineLp + RES 7,D + BIT KEYBSTAT.B_ALT,B + JR NZ,.InpLineLp + LD IX,InpTable2 + BIT KEYBSTAT.B_CTRL,B + JR NZ,.NextInpKeys + LD IX,InpTable1 +.NextInpKeys LD L,(IX+0x00) + INC L + JR Z,.InpLineLp1 + INC IX + DEC L + LD H,(IX+0x00) + INC IX + LD C,(IX+0x00) + INC IX + LD B,(IX+0x00) + INC IX + OR A + SBC HL,DE + JR NZ,.NextInpKeys + LD IX,(InpLnData) + LD HL,.InpLineLp + PUSH HL + PUSH BC + PUSH IX + SPDSS DSSF.SCANKEY + POP IX + RET + +.InpLineLp1 LD IX,(InpLnData) + LD HL,.InpLineLp + PUSH HL + PUSH IX + SPDSS DSSF.SCANKEY + POP IX + LD A,E + JR InsertSymbol + +.InpLnExtN POP HL + LD IX,(InpLnData) + CALL ResCursor + XOR A + RET + +.InpLnExtC POP HL + LD IX,(InpLnData) + CALL ResCursor + PUSH IX + POP HL + LD DE,LenInpData + ADD HL,DE + EX DE,HL + LD HL,WorkBuffer + LD A,(HL) + INC HL + LD (IX+0x02),A + LD A,(HL) + INC HL + LD (IX+0x03),A + LD A,(HL) + INC HL + LD (IX+0x04),A + LD C,A + LD B,0x00 + LD A,B + OR C + SCF + RET Z + LDIR + RET + +InpLnData DEFW 0x0000 ; ⥫ ப + ; +00 ᨬ쭠 ப + ; +01 ⮢ + ; +02 ⥪ X + ; +03 ⥪ AddX + ; +04 ⢮ ᨬ + ; +05 X ப ࠭ + ; +07 Y ப ࠭ + ; +09 X ப ࠭ + ; +0B ப + ; +0C ...ᠬ ப + +InpTable1 DW SC.ESC << 8 | 0x1B, InputLine.InpLnExtC + DW SC.ENTER << 8 | 0x0D, InputLine.InpLnExtN + DW SC.XENTER << 8 | 0x0D, InputLine.InpLnExtN + DW SC.X4 << 8, ILleft + DW SC.X6 << 8, ILright + DW SC.BKSP << 8 | 0x08, ILdelet + DW SC.XDEL << 8, IL_del_ + DW SC.X7 << 8, ILhome + DW SC.X1 << 8, ILend + DB 0xFF + +InpTable2 DW SC.X4 << 8, ILwordL + DW SC.X6 << 8, ILwordR + DW SC.BKSP << 8, ILdelWR + DB 0xFF + +InsertSymbol CP ' ' + RET C + EX AF,AF' + BIT 7,(IX+0x01) ; ready + CALL NZ,ClearInpLn + LD A,(IX+0x04) ; InpytSymb + SUB (IX+0x00) ; Max len + RET NC + LD A,(IX+0x04) + SUB (IX+0x02) + JR Z,NotInsert +; । ⥪ + LD C,A + LD B,0x00 + PUSH IX + POP HL + LD DE,LenInpData + ADD HL,DE + LD E,(IX+0x04) + ADD HL,DE + LD E,L + LD D,H + DEC HL + LDDR +NotInsert PUSH IX + POP HL + LD DE,LenInpData + ADD HL,DE + LD E,(IX+0x02) + ADD HL,DE + EX AF,AF' + LD (HL),A + INC (IX+0x04) + INC (IX+0x02) + JP PrintInpLn + +; Clear Buffer +ClearInpLn RES 7,(IX+0x01) + PUSH IX + POP HL + LD DE,LenInpData + ADD HL,DE + LD B,(IX+0x00) + SUB A +.L1 LD (HL),A + INC HL + DJNZ .L1 + LD (IX+0x02),A + LD (IX+0x03),A + LD (IX+0x04),A + JP PrintInpLn + +; +ILleft RES 7,(IX+0x01) + LD A,(IX+0x02) + DEC A + RET M + LD (IX+0x02),A + JP PrintInpLn + +; ࠢ +ILright RES 7,(IX+0x01) + LD A,(IX+0x02) + CP (IX+0x04) + RET Z + INC (IX+0x02) + JP PrintInpLn + +; delete +ILdelet BIT 7,(IX+0x01) ; ready + CALL NZ,ClearInpLn + LD A,(IX+0x02) + OR A + RET Z + PUSH IX + POP HL + LD DE,LenInpData + ADD HL,DE + LD E,(IX+0x02) + ADD HL,DE + LD E,L + LD D,H + DEC DE + LD A,(IX+0x04) + SUB (IX+0x02) + JR Z,ILDel1 + LD C,A + LD B,0x00 + LDIR + SUB A +ILDel1 LD (DE),A + DEC (IX+0x02) + DEC (IX+0x04) + JP PrintInpLn + +; Delete Char in Current Position +IL_del_ BIT 7,(IX+0x01) ; ready + CALL NZ,ClearInpLn + PUSH IX + POP HL + LD DE,LenInpData + ADD HL,DE + LD E,(IX+0x02) + ADD HL,DE + INC HL + LD E,L + LD D,H + DEC DE + LD A,(IX+0x04) + SUB (IX+0x02) + RET Z + LD C,A + LD B,0x00 + LDIR + SUB A + LD (DE),A + DEC (IX+0x04) + JP PrintInpLn + +; Home +ILhome RES 7,(IX+0x01) + LD A,(IX+0x02) + OR A + RET Z + SUB A + LD (IX+0x02),A + JP PrintInpLn + +; End string +ILend RES 7,(IX+0x01) + LD A,(IX+0x04) + CP (IX+0x02) + RET Z + LD (IX+0x02),A + JP PrintInpLn + +; Word right +ILwordR RES 7,(IX+0x01) + LD A,(IX+0x04) + SUB (IX+0x02) + RET Z + LD B,A + PUSH IX + POP HL + LD DE,LenInpData + ADD HL,DE + LD E,(IX+0x02) + ADD HL,DE + LD C,E +.L2 LD A,(HL) + CP ' ' + JR Z,.L3 + CP ',' + JR Z,.L3 + CP '.' + JR Z,.L3 + CP '\\' + JR Z,.L3 + INC HL + INC C + DJNZ .L2 + JR .L4 + +.L3 LD A,(HL) + CP ' ' + JR Z,.L1 + CP ',' + JR Z,.L1 + CP '.' + JR Z,.L1 + CP '\\' + JR NZ,.L4 +.L1 INC HL + INC C + DJNZ .L3 +.L4 LD (IX+0x02),C + JP PrintInpLn + +; Word left +ILwordL RES 7,(IX+0x01) + LD A,(IX+0x02) + OR A + RET Z + LD B,A + LD C,B + PUSH IX + POP HL + LD DE,LenInpData + ADD HL,DE + LD E,C + ADD HL,DE +.L3 DEC HL + DEC C + LD A,(HL) + CP ' ' + JR Z,.L2 + CP ',' + JR Z,.L2 + CP '.' + JR Z,.L2 + CP 0x5C + JR Z,.L2 + DJNZ .L3 + JR .L5 + +.L2 LD A,(HL) + CP ' ' + JR Z,.L1 + CP ',' + JR Z,.L1 + CP '.' + JR Z,.L1 + CP '\\' + JR NZ,.L4 +.L1 DEC HL + DEC C + DJNZ .L2 +.L4 INC C +.L5 LD (IX+0x02),C + JP PrintInpLn + +; Delete word +ILdelWR RES 7,(IX+0x01) + LD A,(IX+0x02) + OR A + RET Z + LD B,A + LD C,B + PUSH IX + POP HL + LD DE,LenInpData + ADD HL,DE + LD E,C + ADD HL,DE + LD A,(IX+0x04) + SUB B + LD E,A + PUSH HL + DEC HL + DEC C + LD A,(HL) + CP ' ' + JR Z,.L4 + CP ',' + JR Z,.L4 + CP '.' + JR Z,.L4 + CP '\\' + JR Z,.L4 + DEC B + JR Z,.L6 +.L3 DEC HL + DEC C + LD A,(HL) + CP ' ' + JR Z,.L2 + CP ',' + JR Z,.L2 + CP '.' + JR Z,.L2 + CP '\\' + JR Z,.L2 + DJNZ .L3 + JR .L6 + +.L4 LD A,(HL) + CP ' ' + JR Z,.L1 + CP ',' + JR Z,.L1 + CP '.' + JR Z,.L1 + CP '\\' + JR NZ,.L2 +.L1 DEC HL + DEC C + DJNZ .L4 +.L2 INC HL + INC C +.L6 LD A,(IX+0x02) + LD (IX+0x02),C + SUB C + LD C,A + EX AF,AF' + LD A,(IX+0x04) + SUB C + LD (IX+0x04),A + LD C,E + LD B,0x00 + EX DE,HL + POP HL + LD A,C + OR A + JR Z,.L7 + LDIR +.L7 EX DE,HL + EX AF,AF' + LD B,A + SUB A +.L5 LD (HL),A + INC HL + DJNZ .L5 + JP PrintInpLn + +;[]----------------------------------------------------------[] +InsInpLnCol LD L,(IX+0x07) + LD H,(IX+0x08) + LD (FillILy),HL + LD A,(IX+0x0B) + AND 0x0F ; INK + LD C,A + RLCA + RLCA + RLCA + RLCA + OR C + LD HL,PrnINKl ; INK + LD B,0x08 + CPL +.L1 LD (HL),A + INC HL + DJNZ .L1 + LD B,A + LD A,(IX+0x0B) + AND 0xF0 ; PAPER + LD C,A + RRCA + RRCA + RRCA + RRCA + LD (FillILc),A + OR C + XOR B + LD HL,PrnPAPl ; PAPER + LD B,0x08 +.L2 LD (HL),A + INC HL + DJNZ .L2 + RET + +PrintInpLn CALL ResCursor +.L1 LD A,(IX+0x02) + SUB (IX+0x03) + JR NC,PrnInpLn1 + LD A,(IX+0x03) + SUB Step + LD (IX+0x03),A + JR PrintInpLn.L1 + +PrnInpLn1 PUSH IX + POP HL + LD DE,LenInpData + ADD HL,DE + LD E,(IX+0x03) + ADD HL,DE + OR A + CALL NZ,TstInpLnLen ; 室: HL-砫 뢮 + ; -.ᨬ. + PUSH IY + PUSH IX + LD A,(IX+0x07) + LD IYL,A ; Y न + LD A,(IX+0x04) + LD IYH,A + GETPORT WINSP.Y_PORT ; ࠭塞 Y + PUSH AF + EXX + LD HL,PrnPAPl + LD DE,PrnINKl + LD C,(IX+0x05) + LD B,(IX+0x06) + SRL B + RR C + SET 6,B + EXX + LD C,(IX+0x09) + LD B,(IX+0x0A) + SRL B + RR C + LD IXL,C + LD C,L ; ப + LD B,H + GETPORT WINSP.CPU1 + LD IXH,A + DI + GETPORT WINSP.CPU0 + PUSH AF + LD A,(RAMPAGES.FNFONT) + SETPORT WINSP.CPU0,,0 + ACCEL ACCELCMD.SET_BUFFER + LD A,0x08 + ACCEL ACCELCMD.OFF + LD A,IYH + OR A + JR Z,PrnInpE + LD A,(BC) + INC BC +PInpLnP LD L,A + LD H,HIGH (FONT_RAW)-0xC0 + PUSH BC + LD B,(HL) ; ᨬ + INC H + LD E,(HL) + INC H + LD D,(HL) + LD HL,0x0008 + EX DE,HL + SETPORT WINSP.CPU1,0x50 +PrnLoopInp + ACCEL ACCELCMD.COPY + LD A,(HL) + ACCEL ACCELCMD.OFF + EXX + LD A,IYL + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.COPY + OR (HL) + EX DE,HL + XOR (HL) + ACCEL ACCELCMD.COPY_VERT + LD (BC),A + ACCEL ACCELCMD.OFF + EX DE,HL + INC BC + EXX + ADD HL,DE + DEC IXL + JR Z,.L1 + DJNZ PrnLoopInp +.L1 POP BC + LD A,IXH + SETPORT WINSP.CPU1,,0 + LD A,IXL + OR A + JR Z,PrnInpE + DEC IYH + JR Z,PrnInpE + LD A,(BC) + INC BC + OR A + JR NZ,PInpLnP +PrnInpE POP AF + SETPORT WINSP.CPU0,,0 + EI + POP AF + SETPORT WINSP.Y_PORT,,0 + LD A,IXL + OR A + JR Z,PrnInE1 + LD L,A + LD H,0x00 + ADD HL,HL + LD (FillILl),HL + EXX + PUSH BC + EXX + POP HL + RES 6,H + ADD HL,HL + LD (FillILx),HL + MAKEWINDOW WINSUBOBJ.WOBIND + W_FILL 0x0000,0x0000,0x0000,8,0x00 + W_END +FillILx EQU $-10 +FillILy EQU $-8 +FillILl EQU $-6 +FillILc EQU $-2 + +PrnInE1 POP IX + POP IY + JP SetCursor + +PrnINKl DB 8 DUP 0 +PrnPAPl DB 8 DUP 0 + +TstInpLnLen PUSH IY + LD IYL,A + LD IYH,A + DI + GETPORT WINSP.CPU0 + PUSH AF + LD A,(RAMPAGES.FNFONT) + SETPORT WINSP.CPU0,,0 + LD D,HIGH (FONT_RAW)-0xC0 +TstInpLn PUSH HL + LD BC,0x0000 +TstInpL LD E,(HL) + INC HL + LD A,(DE) + ADD A,A + ADD A,C + LD C,A + LD A,B + ADC A,0x00 + LD B,A + DEC IYL + JR NZ,TstInpL + LD L,(IX+0x09) + LD H,(IX+0x0A) + OR A + SBC HL,BC + JR NC,TstInpE + POP HL + LD BC,Step + ADD HL,BC + LD A,(IX+0x03) + ADD A,C + LD (IX+0x03),A + LD A,IYH + SUB C + LD IYH,A + LD IYL,A + JR TstInpLn + +TstInpE POP HL + POP AF + SETPORT WINSP.CPU0,,0 + EI + POP IY + RET + +SetCursor PUSH IX + POP HL + LD DE,LenInpData + ADD HL,DE + LD E,(IX+0x03) + ADD HL,DE + LD BC,0x0000 + LD A,(IX+0x02) + SUB E + JR Z,StCurs1 + EX AF,AF' + DI + GETPORT WINSP.CPU0 + PUSH AF + LD A,(RAMPAGES.FNFONT) + SETPORT WINSP.CPU0,,0 + LD D,HIGH (FONT_RAW)-0xC0 + EX AF,AF' +StCurs0 EX AF,AF' + LD E,(HL) + INC HL + LD A,(DE) + ADD A,A + ADD A,C + LD C,A + LD A,B + ADC A,0x00 + LD B,A + EX AF,AF' + DEC A + JR NZ,StCurs0 + POP AF + SETPORT WINSP.CPU0,,0 + EI +StCurs1 LD (CurShiftX),BC + LD A,0x01 + LD (CurCursor),A + LD A,CursTimer + LD (CrTimer),A +SetCr LD L,(IX+0x05) + LD H,(IX+0x06) + LD BC,(CurShiftX) + ADD HL,BC + SRL H + RR L + SET 6,H + GETPORT WINSP.CPU1 + LD C,A + GETPORT WINSP.Y_PORT + LD B,A + PUSH BC + LD DE,CursBuffer + LD C,(IX+0x07) + DEC C + LD A,(IX+0x0B) + AND 0x0F + LD B,A + RLCA + RLCA + RLCA + RLCA + OR B + LD B,A + SETPORT WINSP.CPU1,0x50 + DI + LD A,C + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.SET_BUFFER + LD A,0x09 + ACCEL ACCELCMD.COPY_VERT + LD A,(HL) + ACCEL ACCELCMD.COPY + LD (DE),A + ACCEL ACCELCMD.OFF + LD A,C + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.FILL_VERT + LD (HL),B + ACCEL ACCELCMD.OFF + EI + POP BC + LD A,B + SETPORT WINSP.Y_PORT,,0 + LD A,C + SETPORT WINSP.CPU1,,0 + RET + +ResCursor LD L,(IX+0x05) + LD H,(IX+0x06) + LD BC,(CurShiftX) + ADD HL,BC + SRL H + RR L + SET 6,H + GETPORT WINSP.CPU1 + LD C,A + GETPORT WINSP.Y_PORT + LD B,A + PUSH BC + LD DE,CursBuffer + LD B,(IX+0x07) + DEC B + LD C,WINSP.Y_PORT + SETPORT WINSP.CPU1,0x50 + DI + ACCEL ACCELCMD.SET_BUFFER + LD A,0x09 + ACCEL ACCELCMD.COPY + LD A,(DE) + OUT (C),B + ACCEL ACCELCMD.COPY_VERT + LD (HL),A + ACCEL ACCELCMD.OFF + EI + POP BC + LD A,B + SETPORT WINSP.Y_PORT,,0 + LD A,C + SETPORT WINSP.CPU1,,0 + RET + +ChCursor LD HL,CrTimer + DEC (HL) + RET NZ + LD (HL),CursTimer + LD IX,(InpLnData) + LD A,(CurCursor) + XOR 0x01 + LD (CurCursor),A + JR Z,ResCursor + JP SetCr + +CurShiftX DEFW 0x00 +CrTimer DEFB 0x00 +CurCursor DEFB 0x00 +CursBuffer DB 9 DUP 0 diff --git a/fnmain.a80 b/fnmain.a80 new file mode 100644 index 0000000..34d592d --- /dev/null +++ b/fnmain.a80 @@ -0,0 +1,570 @@ + +; LAST UPDATE: 26.05.2025 savelij + +;[]=======================================================================[] +; FLEX NAVIGATOR ; +; v1.11 ; +; Last edition: 03/02/2000 ; +;[]=======================================================================[] + +; flex navigator equs + include fn_const.a80 + include fn_macros.a80 + +;[]-----------------------------------------------------------------------[] +; org BASE_ADDR ;0x8000 +; section .bss + +;WorkBuffer: EQU 0x8000 + ;resb 0x400 ; work buffer for func/procs + +;[]-----------------------------------------------------------------------[] +; ; org 0x8400 +; section .bss + +;PagesList: EQU 0x8400 + ;resb 0x100 ; buffer for memory pages +;[]-----------------------------------------------------------------------[] +; ; org 0x8500 +; section .text + PHASE BASE_ADDR +START_BLOCK_1 + +;[]=======================================================================[] +; section .text + +;EntryPoint: + JP StartPoint ; entry point + + JP ClearScreen ; 8603->86BB + JP MakeWindow ; 8606->86F0 + JP InvertRectan ; 8609->8DA0 + JP PrnTxtLnIFF ; 860C->8FB0 + JP PrnTxtLnNorm ; 860F->9024 + JP PrnTxtLnNormC ; 8612->909B + JP PrnRangPathL ; 8615->8E48 + JP PrnRangPathR ; 8618->8EB2 + JP PrnRangPathC ; 861B->8F36 + JP InputLine ; 861E->915F + JP InputLine.InpLnExtN ; 8621->9205 + JP InputLine.InpLnExtC ; 8624->920F + JP DOSError ; 8627->86A8 + JP InitScrollBar ; 862A->96EB + JP PrnHScrBar ; 862D->9729 + JP PrnVScrBar ; 8630->9882 + JP InitProcess ; 8633->99DA + JP PrnProcess ; 8636->9A39 + JP InitScrollBar + + DB JUMPS.JUMPSIZE * 4 DUP 0xC9 + + JP ResFire ; 8648->9B01 + JP TestCoords ; 864B->9B10 + JP SetCMOSPrint ; 864E->9EA9 + JP ResCMOSPrint ; 8651->9EF3 + JP SetClock ; 8654->A08E + JP SetMouse ; 8657->A0BB + + DB JUMPS.JUMPSIZE * 4 DUP 0xC9 + + JP ConvNumTxt40 ; 8666->A1F7 + JP MoveBytes ; 8669->A3B6 + JP MoveBytesUp ; 866C->A3E3 + JP Mult8 ; 866F->A0E8 + JP Mult16X8 ; 8672->A124 + JP Mult16 ; 8675->A110 + JP Mult16X16 ; 8678->A124 + JP Mult32 ; 867B->A149 + JP Divis16X16 ; 867E->A16B + JP Divis24X16 ; 8681->A195 + JP Divis32X16 ; 8684->A1B8 + JP Divis32 ; 8687->A1CD + JP ConvNumTxt32 ; 868A->A236 + JP ConvNumTxt16 ; 868D->A2AA + JP ConvNumTxt8 ; 8690->A2DE + JP ConvTxtNum32 ; 8693->A35D + JP ConvTxtNum16 ; 8696->A395 + JP Resident ; 8699->A40B + + DB 0xC0 - LOW ($) DUP 0xC9 + +;[]-----------------------------------------------------------------------[] +; flex navigator settings +NUM_DEVICES DB 0 ; - ன +TreeFlag DB 0 ; ॢ +CMOSFlag DB 0 ; CMOS 0 - + ; 1 - +MouseFlag DB 1 ; 0 - + ; 1 - +CMOSPrint: DB 1 +RAMPAGES +.FNPAGESID DB 0 ; . FN +.FNFUNCT DB 0 ; ࠭ 㭪ﬨ FN +.FNVIEW DB 0 ; ࠭ FileViewer +.FNEDIT DB 0 ; ࠭ FileEditor +.FNHELP DB 0 ; ࠭ FN HELP +.FNFONT DB 0 ; ࠭ ⮢ +.BufferID DB 0 ; 䨪 +.FLX DB 0 ; ࠭ 㧪 FLX ᬮ. FLX ⨫ +.LEFTPANEL DB 0 ; ࠭ ⠫ +.RIGHTPANEL DB 0 ; ࠭ ⠫ ࠢ +; ࠭ 䥩 +.BuffPg1 DB 0 + DB 0 +.BuffPg3 DB 0 + DB 0 + DB 0 + + DB LOW (-$) DUP 0 + +;UI palette & stack memory +;PALETTE: B G R + DB 0x00,0x00,0x00,0x00 ; Black 00 00 + DB 0x00,0x00,0xFF,0x00 ; B.Red 01 + DB 0x00,0x80,0x00,0x00 ; Green 02 08 + DB 0x00,0xFF,0xFF,0x00 ; B.Yellow 03 + DB 0x80,0x00,0x00,0x00 ; Blue 04 10 + DB 0xFF,0xFF,0x00,0x00 ; Invert paper 05 + DB 0x80,0x00,0x00,0x00 ; Invert ink 06 18 + DB 0x80,0x80,0x80,0x00 ; BlackGray 07 + DB 0xC0,0xC0,0xC0,0x00 ; HighGray 08 20 + DB 0x80,0x00,0x00,0x00 ; Panel 09 + DB 0xFF,0xFF,0x00,0x00 ; Files 0A 28 + DB 0x00,0xFF,0xFF,0x00 ; Select Files 0B + DB 0x00,0xFF,0xFF,0x00 ; InvSel Files 0C 30 + DB 0xC0,0xC0,0xC0,0x00 ; Reserved 0D + DB 0xFF,0xFF,0xFF,0x00 ; White 0E 38 + DB 0xFF,0xFF,0xFF,0x00 ; White 0F + +DOSError EX AF,AF' + GETPORT WINSP.CPU1 + PUSH AF + LD A,(RAMPAGES.FNFUNCT) + SETPORT WINSP.CPU1,,0 + EX AF,AF' + CALL DOSErrorR + EX AF,AF' + POP AF + SETPORT WINSP.CPU1,,0 + EX AF,AF' + RET + + include fnwin.a80 + include fnprint.a80 + include fninput.a80 + include fnbar.a80 + include fnmouse.a80 + include fnsys.a80 + +;[]=======================================================================[] +; +StartPoint: DI + LD SP,STACK +ReStartPoint: + SETPORT BORDER,0 + SETPORT WINSP.Y_PORT,0xC0 + CALL InitVideoMode + CALL InitDrivers + CALL InitScreen + CALL ClearDOSline + SUB A + CALL InitPanels + CALL ResFire +MainLoop: LD IX,FilePanelLeft + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + JR Z,.L1 + LD IX,FilePanelRight +.L1 CALL TestCoords + CALL TestKeys + CALL C,DOSline + LD A,(TreeFlag) + OR A + IF TREE_REZID + CALL NZ,RESIDENT.TestTree + ELSE + CALL NZ,TestTreeR + ENDIF + JR MainLoop + +;[]-----------------------------------------------------------------------[] +TestKeys + SPDSS DSSF.TESTKEY + JR Z,KeyExit + RES 7,D + LD A,B + AND KEYBSTAT.M_ALT | KEYBSTAT.M_CTRL + CP KEYBSTAT.M_ALT | KEYBSTAT.M_CTRL + RET Z + LD IX,HOTKEYS.SHIFTKeys + LD A,B + AND KEYBSTAT.M_LEFTSHIFT | KEYBSTAT.M_RIGHTSHIFT + JR NZ,.L1 + LD IX,HOTKEYS.CTRLKeys + BIT KEYBSTAT.B_CTRL,B + JR NZ,.L1 + LD IX,HOTKEYS.ALTKeys + BIT KEYBSTAT.B_ALT,B + JR NZ,.L1 + LD IX,HOTKEYS.ASCIIKeys +.L1 LD L,(IX+0x00) ; ᪠ + INC IX + INC L + SCF + RET Z + DEC L + LD H,(IX+0x00) ; ASCII + INC IX + LD C,(IX+0x00) ; LOW 맮 + INC IX + LD B,(IX+0x00) ; HIGH 맮 + INC IX + OR A + SBC HL,DE + JR NZ,.L1 + LD (KeyCALL),BC + SPDSS DSSF.SCANKEY + CALL 0x0000 +KeyCALL EQU $-2 +KeyExit XOR A + RET + +;[]-----------------------------------------------------------------------[] +MouseOnOff LD A,(MouseFlag) + XOR 0x01 + LD (MouseFlag),A + LD C,MOUSEF.INIT + JR NZ,.L1 + LD C,MOUSEF.HIDE +.L1 + SPMOUSE + RET + +;[]-----------------------------------------------------------------------[] +ComExit CALL ResDrivers + CALL ResVideoMode + LD HL,thanks + SPDSS DSSF.PCHARS + LD A,(RAMPAGES.FNPAGESID) + SPDSS DSSF.FREEMEM + SPDSS DSSF.EXIT,0 + +thanks DZ "\r\nThank you for using Flex Navigator.\r\n" + +; (ADR) + BCDE = BCDE +BCDEHLP: LD A,(HL) + INC HL + ADD A,E + LD E,A + LD A,(HL) + INC HL + ADC A,D + LD D,A + LD A,(HL) + INC HL + ADC A,C + LD C,A + LD A,(HL) + ADC A,B + LD B,A + RET + +GET_DWORD: LD E,(HL) + INC HL + LD D,(HL) + INC HL + LD C,(HL) + INC HL + LD B,(HL) + RET + +SET_DWORD: LD (HL),E + INC HL + LD (HL),D + INC HL + LD (HL),C + INC HL + LD (HL),B + RET + +;[]=======================================================================[] +; discription of flex navigator file panels +LeftPanel: DB 0x80 ; 7 - 뤥 + ; 0 - + DB 0x00 ; 0 - ⪠ + ; 0 - ஡ + ; 1 - ॢ + ; 2 - 㦠⮥ ॢ + DB 0x01 ; ஢ + ; 0 - + ; 1 - ७ + ; 2 - ࠧ + ; 3 - + ; 4 - execute file + ; 5 - file mask + DW 4 ; X + DW 0 ; X ஫ + DW 0 ; Y ஫ + DW 0 ; Max ஫ + DW 0 ; ⥪. ஫ + DW 0 ; 祩 BarLeft + DW 0 ; 祩 BarRight + DW 0 ; - 䠩 ࠭ + DW 0 ; 饥 - 䠩 + DW 0 ; 䠩 ࠭ + DW 0 ; T騩 䠩 ࠭ + DW 0 ; - ન஢ 䠩 + DD 0 ; - ન஢ ⮢ + DB 0 + DB "*.*" ; Ma᪠ 䠩 + DB 0x0A DUP 0 + DB 0x100 DUP 0 ; ⥪饩 ४ਨ + +RightPanel: DB 0x01 ; 7 - 뤥 + ; 0 - + DB 0x00 ; 0 - ⪠ + ; 0 - ஡ + ; 1 - ॢ + ; 2 - 㦠⮥ ॢ + DB 0x01 ; ஢ + ; 0 - + ; 1 - ७ + ; 2 - ࠧ + ; 3 - + ; 4 - execute file + ; 5 - file mask + DW 324 ; X + DW 0 ; X ஫ + DW 0 ; Y ஫ + DW 0 ; Max ஫ + DW 0 ; ⥪. ஫ + DW 0 ; 祩 BarLeft + DW 0 ; 祩 BarRight + DW 0 ; - 䠩 ࠭ + DW 0 ; 饥 - 䠩 + DW 0 ; 䠩 ࠭ + DW 0 ; T騩 䠩 ࠭ + DW 0 ; - ન஢ 䠩 + DD 0 ; - ન஢ ⮢ + DB 0 + DB "*.*" ; Ma᪠ 䠩 + DB 0x0A DUP 0 + DB 0x100 DUP 0 ; ⥪饩 ४ਨ + +;[]=======================================================================[] + +START_SORT + include fnsort.a80 +END_SORT + IF TREE_REZID = 0 +START_TREE + include fntree.a80 +END_TREE + ENDIF + include fnpanel.a80 + include fndos.a80 + + include fnwork.a80 + +; 맮 㭪樨 ࠭ +RESIDENT +;[]----------------------------------------------------------[] +.CopyFiles: LD DE,CopyFilesR +; resident 2 +.FunctResident: LD A,(RAMPAGES.FNFUNCT) + 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.FNHELP) + LD C,WINSP.CPU1 + JP Resident + + IF MARK_DIR +.GetDirSize: LD DE,GetDirSizeR + 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 + include fntab.a80 +END_BLOCK_1: + DEPHASE ; BASE_ADDR + +;[]=======================================================================[] + PHASE 0x4000 +; section .text +START_BLOCK_2 +FlexDIRECTORY: DB 0x100 DUP 0 + + include rez2_fnfunct.a80 + include rez2_fnmisc.a80 + include rez2_fnsearch.a80 + include rez2_fnconfig.a80 + include rez2_fnerror.a80 + include rez2_fntab1.a80 + IF TREE_REZID + include fntree.a80 + ENDIF +END_BLOCK_2: + DEPHASE ; 0x4000 + +START_BLOCK_EDITOR + PHASE 0xC000 + include plugins/fnviewer/fviewer.a80 + DEPHASE ; 0xC000 +END_BLOCK_EDITOR + +START_BLOCK_VIEWER + PHASE 0xC000 + include plugins/fneditor/feditor.a80 + DEPHASE ; 0xC000 +END_BLOCK_VIEWER + +;[]-----------------------------------------------------------------------[] + PHASE 0x4000 +; section .text +START_BLOCK_3 + +DOShistory: DB DOShistory_Size DUP 0 ;times 0x200 db 0 +fn_ext: DB WorkBuffer_Size DUP 0 ;times 0x400 db 0 +fnview_ext: DB WorkBuffer_Size DUP 0 ;times 0x400 db 0 +fnedit_ext: DB WorkBuffer_Size DUP 0 ;times 0x400 db 0 + + include rez3_fnnext.a80 + include rez3_fnmark.a80 + +WINSP_CPU EQU WINSP.CPU3 ; ஥஢ +WINSP_ADR EQU 0xC000 ; + + include plugins/help/help.a80 +HelpText: include plugins/help/help_t.a80 +HelpTextEnd: +END_BLOCK_3: + DEPHASE ; 0x4000 + +;[]=======================================================================[] + PHASE 0xC000 +; section .data +START_BLOCK_4 + +FONT_RAW_PACK binclude tmp/font_raw.pack +IFFFONT_RAW_PACK binclude tmp/iff_font_raw.pack +IFFFONT_RAW_END + +END_BLOCK_4: + DEPHASE ; 0xC000 + +; ⫠ +BLOCK1_SIZE EQU END_BLOCK_1 - START_BLOCK_1 +BLOCK2_SIZE EQU END_BLOCK_2 - START_BLOCK_2 +BLOCK3_SIZE EQU END_BLOCK_3 - START_BLOCK_3 +EDITOR_SIZE EQU END_BLOCK_EDITOR - START_BLOCK_EDITOR +VIEWER_SIZE EQU END_BLOCK_VIEWER - START_BLOCK_VIEWER +SORT_SIZE EQU END_SORT - START_SORT +TREE_SIZE EQU END_TREE - START_TREE diff --git a/fnmenu.a80 b/fnmenu.a80 new file mode 100644 index 0000000..b1c15b9 --- /dev/null +++ b/fnmenu.a80 @@ -0,0 +1,1232 @@ + +; LAST UPDATE: 27.05.2025 savelij + +;[]==========================================================[] +PullDown: CALL ResInvert + CALL SetPullInvert +PullLoop: LD IX,PullTab + CALL TestCoords + SPDSS DSSF.SCANKEY + JR Z,PullLoop + LD A,B + OR A + JR NZ,PullLoop + LD HL,PullLoop + PUSH HL + LD A,E + CP 0x1B + JR Z,PullExit + CP 0x0D + JR Z,PullEnter + OR A + RET NZ + LD A,D + CP SC.X2 + JR Z,PullEnter + CP SC.X8 + JR Z,PullEnter + CP SC.X4 + JR Z,PullLeft + CP SC.X6 + JR Z,PullRight + RET + +PullExit: POP DE +.L1 CALL ResPullInvert + JP SetInvert + +PullLeft: LD A,(CurrMenu) + DEC A + JP P,.L1 + LD A,MainPullMenu-1 +.L1 LD (CurrMenu),A + CALL ResPullInvert + JP SetPullInvert + +PullRight: LD A,(CurrMenu) + INC A + CP MainPullMenu + JR NZ,.L1 + SUB A +.L1 LD (CurrMenu),A + CALL ResPullInvert + JP SetPullInvert + +PullEnter: LD A,0x01 + LD (MKeyFlg),A + LD HL,MFile + LD A,(CurrMenu) + OR A + JR Z,.L1 + LD HL,MSelect + DEC A + JR Z,.L1 + LD HL,MOption + DEC A + JR Z,.L1 + LD HL,MView + DEC A + JR Z,.L1 + LD HL,MConfig + DEC A + JR Z,.L1 + LD HL,MAbout +.L1 EX (SP),HL + RET + +ResPullInvert: LD DE,(COLORP.BLUE + COLORI.WHITE) << 8 | (COLORP.HIGHGRAY + COLORI.BLACK);0x4F80 + LD A,0 +PrevMenu EQU $-1 + JR PullInvert + +SetPullInvert: LD DE,(COLORP.HIGHGRAY + COLORI.BLACK) << 8 | (COLORP.BLUE + COLORI.WHITE);0x804F + LD A,0 +CurrMenu EQU $-1 + LD (PrevMenu),A +PullInvert: LD L,A + LD H,0 + ADD HL,HL ; *2 + ADD HL,HL ; *4 + ADD HL,HL ; *8 + ADD HL,HL ; *16 + LD BC,PullTab + ADD HL,BC + PUSH HL + POP IX + LD L,(IX + FORMTABL.XMINL) + LD H,(IX + FORMTABL.XMINH) + LD C,(IX + FORMTABL.YMINL) + LD B,(IX + FORMTABL.YMINH) + LD A,(IX + FORMTABL.XMAXL) + SUB (IX + FORMTABL.XMINL) + EX AF,AF' + LD A,(IX + FORMTABL.YMAXL) + SUB (IX + FORMTABL.YMINL) + LD IXH,A + EX AF,AF' + SRL A + LD IXL,A + JP InvertRectan + +MFile: CALL ResPullInvert + JP MenuFile.L1 + +MSelect: CALL ResPullInvert + JP MenuSelect.L1 + +MOption: CALL ResPullInvert + JP MenuOption.L1 + +MView: CALL ResPullInvert + JP MenuView.L7 + +MConfig: CALL ResPullInvert + JP MenuConfig.L1 + +MAbout: CALL ResPullInvert + JP MenuAbout.L1 + +;[]==========================================================[] +MenuFile: CALL ResInvert +.L2 SUB A + LD (MKeyFlg),A +.L1 CALL STORE_PANELFLAG + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 4,26,160,54 + W_TEXT 16,6,COLORP.HIGHGRAY,"File info..." + W_TEXT 100,6,COLORP.HIGHGRAY,"ALT+ENT" + W_TEXT 16,20,COLORP.HIGHGRAY,"Print" + W_TEXT 100,20,COLORP.HIGHGRAY,"CTRL+F9" + W_HORIZLINE 4,33,152 + W_TEXT 16,40,COLORP.HIGHGRAY,"Exit" + W_TEXT 100,40,COLORP.HIGHGRAY,"F10" + W_END + LD HL,FileTab + LD BC,3 + JP MenuWork + +MenuSelect: CALL ResInvert +.L2 SUB A + LD (MKeyFlg),A +.L1 CALL STORE_PANELFLAG + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 40,26,160,76 + W_TEXT 16,6,COLORP.HIGHGRAY,"Mark group..." + W_TEXT 112,6,COLORP.HIGHGRAY,"+" + W_TEXT 16,20,COLORP.HIGHGRAY,"Unmark group..." + W_TEXT 112,20,COLORP.HIGHGRAY,"-" + W_TEXT 16,34,COLORP.HIGHGRAY,"Mark all" + W_TEXT 112,34,COLORP.HIGHGRAY,"CTRL+" + W_TEXT 16,48,COLORP.HIGHGRAY,"Unmark all" + W_TEXT 112,48,COLORP.HIGHGRAY,"CTRL-" + W_TEXT 16,62,COLORP.HIGHGRAY,"Invert selection" + W_TEXT 112,62,COLORP.HIGHGRAY,"*" + W_END + LD HL,SelectTab + LD BC,1 << 8 | 5 + JP MenuWork + +MenuOption: CALL ResInvert +.L2 SUB A + LD (MKeyFlg),A +.L1 CALL STORE_PANELFLAG + MAKEWINDOW WINSUBOBJ.STORE + IF PLUGS_ENABLE + W_MAIN 84,26,208,54+14 + ELSE + W_MAIN 84,26,208,54 + ENDIF + W_TEXT 16,6,COLORP.HIGHGRAY,"Refresh tree" ; 00 + W_TEXT 152,6,COLORP.HIGHGRAY,"ALT+F10" + W_TEXT 16,20,COLORP.HIGHGRAY,"Disk info..." ; 01 + W_TEXT 152,20,COLORP.HIGHGRAY,"CTRL+L" + W_HORIZLINE 4,33,200 + W_TEXT 16,40,COLORP.HIGHGRAY,"System information..." ; 02 + IF PLUGS_ENABLE + W_TEXT 16,54,COLORP.HIGHGRAY,"Plugins..." ; 03 + ENDIF + W_END + LD HL,OptionTab + IF PLUGS_ENABLE + LD BC,2 << 8 | 4 + ELSE + LD BC,2 << 8 | 3 + ENDIF + JP MenuWork + +MenuView: CALL ResInvert +.L8 SUB A + LD (MKeyFlg),A +.L7 CALL STORE_PANELFLAG + LD A,(IY + PANEL.VIEWFLAG) + OR A + LD BC,0xFFFE + LD E,0xFE + JR Z,.L1 + LD BC,0xFEFF + LD E,0xFE + BIT VIEWFLAG.B_FULL,A + JR NZ,.L1 + LD BC,0xFEFE + LD E,0xFF +.L1 LD A,B + LD (MenuView.view1),A + LD A,C + LD (MenuView.view2),A + LD A,E + LD (MenuView.view3),A + LD A,(IY + PANEL.SORTFLAG) + AND SORTFLAG.MASKH + LD BC,0xFFFE + LD E,0xFE + JR Z,.L2 + BIT SORTFLAG.B_EXEC,A + LD BC,0xFEFF + LD E,0xFE + JR NZ,.L2 + LD BC,0xFEFE + LD E,0xFF +.L2 LD A,B + LD (MenuView.filt1),A + LD A,C + LD (MenuView.filt2),A + LD A,E + LD (MenuView.filt3),A + LD A,(IY + PANEL.SORTFLAG) + AND SORTFLAG.MASK + LD BC,0xFEFE + LD DE,0xFEFE + LD L,0xFF + JR Z,.L3 + BIT SORTFLAG.B_NAME,A + LD BC,0xFFFE + LD DE,0xFEFE + LD L,0xFE + JR NZ,.L3 + BIT SORTFLAG.B_EXT,A + LD BC,0xFEFF + LD DE,0xFEFE + LD L,0xFE + JR NZ,.L3 + BIT SORTFLAG.B_DATE,A + LD BC,0xFEFE + LD DE,0xFFFE + LD L,0xFE + JR NZ,.L3 + LD BC,0xFEFE + LD DE,0xFEFF + LD L,0xFE +.L3 LD A,B + LD (MenuView.sort1),A + LD A,C + LD (MenuView.sort2),A + LD A,D + LD (MenuView.sort3),A + LD A,E + LD (MenuView.sort4),A + LD A,L + LD (MenuView.sort5),A + PUSH IY + POP HL + LD BC,PANEL.FILEMASK + ADD HL,BC + LD DE,MenuView.Tfilter + LD C,STRLEN("*.* ");0x0C + SUB A +.L4 LDI + CP (HL) + JR NZ,.L4 + LD A,C + OR A + JR Z,.L6 + LD B,A + LD A,' ' +.L5 LD (DE),A + INC DE + DJNZ .L5 +.L6 + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 138,26,190,186 + W_TEXT 16,6,COLORP.HIGHGRAY,"Brief" + W_TEXT 110,6,COLORP.HIGHGRAY,"\xFE CTRL+F1" +.view1 EQU $ - STRLEN ("v CTRL+F1v") + W_TEXT 16,20,COLORP.HIGHGRAY,"Full" + W_TEXT 110,20,COLORP.HIGHGRAY,"\xFE CTRL+F2" +.view2 EQU $ - STRLEN ("v CTRL+F2 ") + W_TEXT 16,34,COLORP.HIGHGRAY,"Tree" + W_TEXT 110,34,COLORP.HIGHGRAY,"\xFE CTRL+F8" +.view3 EQU $ - STRLEN("v CTRL+F8v") + W_HORIZLINE 4,47,182 + W_TEXT 16,54,COLORP.HIGHGRAY,"All files" + W_TEXT 110,54,COLORP.HIGHGRAY,"\xFE CTRL+F10" +.filt1 EQU $ - STRLEN("v CTRL+F10v") + W_TEXT 16,68,COLORP.HIGHGRAY,"Execute files" + W_TEXT 110,68,COLORP.HIGHGRAY,"\xFE CTRL+F11" +.filt2 EQU $ - STRLEN("v CTRL+F11v") + W_TEXT 16,82,COLORP.HIGHGRAY,"*.* " +.Tfilter EQU $ - STRLEN("*.* ") + W_TEXT 110,82,COLORP.HIGHGRAY,"\xFE" +.filt3 EQU $ - 2 + W_TEXT 16,96,COLORP.HIGHGRAY,"Filter..." + W_TEXT 110,96,COLORP.HIGHGRAY,"\xFE CTRL+F12" + W_HORIZLINE 4,109,182 + W_TEXT 16,116,COLORP.HIGHGRAY,"Name" + W_TEXT 110,116,COLORP.HIGHGRAY,"\xFE CTRL+F3" +.sort1 EQU $ - STRLEN("v CTRL+F3v") + W_TEXT 16,130,COLORP.HIGHGRAY,"Extension" + W_TEXT 110,130,COLORP.HIGHGRAY,"\xFE CTRL+F4" +.sort2 EQU $ - STRLEN("v CTRL+F4v") + W_TEXT 16,144,COLORP.HIGHGRAY,"Date" + W_TEXT 110,144,COLORP.HIGHGRAY,"\xFE CTRL+F5" +.sort3 EQU $ - STRLEN("v CTRL+F5v") + W_TEXT 16,158,COLORP.HIGHGRAY,"Size" + W_TEXT 110,158,COLORP.HIGHGRAY,"\xFE CTRL+F6" +.sort4 EQU $ - STRLEN("v CTRL+F6v") + W_TEXT 16,172,COLORP.HIGHGRAY,"Unsorted" + W_TEXT 110,172,COLORP.HIGHGRAY,"\xFE CTRL+F7" +.sort5 EQU $ - STRLEN("v CTRL+F7v") + W_END + LD HL,ViewTab + LD BC,3 << 8 | 12 + JP MenuWork + +MenuConfig: CALL ResInvert +.L2 SUB A + LD (MKeyFlg),A +.L1 CALL STORE_PANELFLAG + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 174,26,96,20 + W_TEXT 16,6,COLORP.HIGHGRAY,"Setup..." + W_END + LD HL,ConfigTab + LD BC,4 << 8 | 1 + JP MenuWork + +MenuAbout: CALL ResInvert +.L2 SUB A + LD (MKeyFlg),A +.L1 CALL STORE_PANELFLAG + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 222,26,112,20 + W_TEXT 16,6,COLORP.HIGHGRAY,"Version..." + W_END + LD HL,AboutTab + LD BC,5 << 8 | 1 +; HL - ⠡ ⨢ +; B - ⥪騩 㭪 +; C - ⢮ 㭪⮢ +MenuWork: LD (CurWTab),HL + LD A,C + LD (MaxLines),A + LD A,B + LD (CurrMenu),A + LD (PrevMenu),A + SUB A + LD (CurMLine),A + LD IX,(CurWTab) + CALL TestCoords + CALL TestInvert + JR NZ,MenuLoop + LD A,0 +MKeyFlg EQU $-1 + OR A + CALL NZ,SetMSelect +MenuLoop: LD IX,0x0000 +CurWTab EQU $-2 + CALL TestCoords + SPDSS DSSF.SCANKEY + JR Z,MenuLoop + LD A,B + OR A + JR NZ,MenuLoop + LD HL,MenuLoop + PUSH HL + LD A,E + CP 0x1B + JR Z,MenuKExt + CP 0x0D + JP Z,ChangeSet + CP ' ' + JP Z,ChangeSet + OR A + RET NZ + LD A,D + CP SC.X4 + JR Z,MenuLeft + CP SC.X6 + JP Z,MenuRight + CP SC.X8 + JP Z,MenuUp + CP SC.X2 + JP Z,MenuDown + CP SC.X7 + JP Z,MenuHome + CP SC.X1 + JP Z,MenuEnd + RET + +TestInvert: LD HL,(CurWTab) + LD DE,FORMTABL.FLAGH + ADD HL,DE + LD A,0 +MaxLines EQU $-1 + LD B,A + LD C,0 + LD DE,FORMTABL.SIZE +.L2 BIT FORMTABL.B_FIRENOINV,(HL) + JR Z,.L1 + LD A,C + SET 7,A + LD (CurMLine),A +.L1 INC C + ADD HL,DE + DJNZ .L2 + LD A,0 +CurMLine EQU $-1 + BIT 7,A + RES 7,A + LD (CurMLine),A + RET + +; 室 Esc +MenuKExt: POP DE + WINDOWCLOSE + JP PullLoop + +; ६ ࠭ 䫠 뢮 +STORE_PANELFLAG LD A,(IY + PANEL.SORTFLAG) + LD (PANEL_SORTFLAG),A + LD A,(IY + PANEL.VIEWFLAG) + LD (PANEL_VIEWFLAG),A + RET + +MenuExit: LD A,0 +PANEL_VIEWFLAG EQU $-1 + CP (IY+PANEL.VIEWFLAG) + JP NZ,InitPanel + LD A,0 +PANEL_SORTFLAG EQU $-1 + CP (IY+PANEL.SORTFLAG) + JP NZ,InitPanel + JP SetInvert + +MenuLeft: + WINDOWCLOSE + LD A,(CurrMenu) + DEC A + JP P,.L1 + LD A,MainPullMenu-1 +.L1 LD (CurrMenu),A + JP PullEnter + +MenuRight: + WINDOWCLOSE + LD A,(CurrMenu) + INC A + CP MainPullMenu + JR NZ,.L1 + SUB A +.L1 LD (CurrMenu),A + JP PullEnter + +MenuUp: CALL TestInvert + JR Z,.L1 + LD A,(MaxLines) + DEC A + RET Z + CALL ResMSelect + LD A,(CurMLine) + OR A + JR NZ,.L2 +.L1 LD A,(MaxLines) +.L2 DEC A + LD (CurMLine),A + JP SetMSelect + +MenuDown: CALL TestInvert + JR Z,.L1 + LD A,(MaxLines) + DEC A + RET Z + CALL ResMSelect + LD A,(MaxLines) + LD B,A + LD A,(CurMLine) + INC A + CP B + JR NZ,.L2 +.L1 SUB A +.L2 LD (CurMLine),A + JP SetMSelect + +MenuHome: CALL TestInvert + JR Z,.L1 + LD A,(CurMLine) + OR A + RET Z + CALL ResMSelect +.L1 SUB A + LD (CurMLine),A + JP SetMSelect + +MenuEnd: CALL TestInvert + JR Z,.L1 + LD A,(MaxLines) + LD B,A + LD A,(CurMLine) + INC A + CP B + RET Z + CALL ResMSelect +.L1 LD A,(MaxLines) + DEC A + LD (CurMLine),A + JP SetMSelect + +ResMSelect: LD HL,ResSelect1 + JR SetMSelect.L1 + +SetMSelect: LD HL,SetSelect1 +.L1 PUSH HL + LD A,(CurMLine) + LD L,A + LD H,0x00 + ADD HL,HL + ADD HL,HL + ADD HL,HL + ADD HL,HL + LD BC,(CurWTab) + ADD HL,BC + PUSH HL + POP IX + RET + +ChangeSet: CALL TestInvert + JP Z,MenuKExt + LD A,(CurMLine) + LD L,A + LD H,0x00 + ADD HL,HL + ADD HL,HL + ADD HL,HL + ADD HL,HL + LD BC,(CurWTab) + ADD HL,BC + PUSH HL + POP IX + LD C,(IX + FORMTABL.FIRELEFTL) ; + LD B,(IX + FORMTABL.FIRELEFTH) + LD A,B + OR C + RET Z + BIT FORMTABL.B_EXECNORETLMB,(IX + FORMTABL.FLAGL) ; + JR Z,.L1 + POP AF +.L1 PUSH BC + BIT FORMTABL.B_INV1,(IX + FORMTABL.FLAGL) + CALL NZ,ResSelect1 + CALL ResSelect2 + BIT FORMTABL.B_CLOSEWIN,(IX + FORMTABL.FLAGH) + RET Z + WINDOWCLOSE + RET + +; brief +ChView1: RES VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG) + RES VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + JP MenuExit + +; full +ChView2: SET VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG) + RES VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + JP MenuExit + +; tree +ChView3: LD A,(TreeFlag) + OR A + JP NZ,MenuExit + RES VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG) + SET VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + JP MenuExit + +; all files +ChFilt1: BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + JP NZ,MenuExit + RES SORTFLAG.B_EXEC,(IY+PANEL.SORTFLAG) + RES SORTFLAG.B_FILTER,(IY+PANEL.SORTFLAG) + JP MenuExit + +; execute files +ChFilt2: BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + JP NZ,MenuExit + SET SORTFLAG.B_EXEC,(IY+PANEL.SORTFLAG) + RES SORTFLAG.B_FILTER,(IY+PANEL.SORTFLAG) + JP MenuExit + +; filter +ChFilt3: BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + JP NZ,MenuExit + RES SORTFLAG.B_EXEC,(IY+PANEL.SORTFLAG) + SET SORTFLAG.B_FILTER,(IY+PANEL.SORTFLAG) + JP MenuExit + +; name +ChSort1: BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + JP NZ,MenuExit + SET SORTFLAG.B_NAME,(IY+PANEL.SORTFLAG) + RES SORTFLAG.B_EXT,(IY+PANEL.SORTFLAG) + RES SORTFLAG.B_DATE,(IY+PANEL.SORTFLAG) + RES SORTFLAG.B_SIZE,(IY+PANEL.SORTFLAG) + JP MenuExit + +; extension +ChSort2: BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + JP NZ,MenuExit + RES SORTFLAG.B_NAME,(IY+PANEL.SORTFLAG) + SET SORTFLAG.B_EXT,(IY+PANEL.SORTFLAG) + RES SORTFLAG.B_DATE,(IY+PANEL.SORTFLAG) + RES SORTFLAG.B_SIZE,(IY+PANEL.SORTFLAG) + JP MenuExit + +; date +ChSort3: BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + JP NZ,MenuExit + RES SORTFLAG.B_NAME,(IY+PANEL.SORTFLAG) + RES SORTFLAG.B_EXT,(IY+PANEL.SORTFLAG) + SET SORTFLAG.B_DATE,(IY+PANEL.SORTFLAG) + RES SORTFLAG.B_SIZE,(IY+PANEL.SORTFLAG) + JP MenuExit + +; size +ChSort4: BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + JP NZ,MenuExit + RES SORTFLAG.B_NAME,(IY+PANEL.SORTFLAG) + RES SORTFLAG.B_EXT,(IY+PANEL.SORTFLAG) + RES SORTFLAG.B_DATE,(IY+PANEL.SORTFLAG) + SET SORTFLAG.B_SIZE,(IY+PANEL.SORTFLAG) + JP MenuExit + +; unsorted +ChSort5: BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + JP NZ,MenuExit + LD A,(IY+PANEL.SORTFLAG) + AND SORTFLAG.MASKH + LD (IY+PANEL.SORTFLAG),A + JP MenuExit + +;[]==========================================================[] +Brief: LD A,(IY+PANEL.VIEWFLAG) + AND VIEWFLAG.MASK + RET Z + RES VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG) + RES VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + JP InitPanel + +Full: BIT VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG) + RET NZ + SET VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG) + RES VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + JP InitPanel + +Tree: LD A,(TreeFlag) + OR A + RET NZ + BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + RET NZ + RES VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG) + SET VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + JP InitPanel + +AllFiles: BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + RET NZ + LD A,(IY+PANEL.SORTFLAG) + AND SORTFLAG.MASKEXECFILTER + RET Z + RES SORTFLAG.B_EXEC,(IY+PANEL.SORTFLAG) + RES SORTFLAG.B_FILTER,(IY+PANEL.SORTFLAG) + JP InitPanel + +ExeFiles: BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + RET NZ + BIT SORTFLAG.B_EXEC,(IY+PANEL.SORTFLAG) + RET NZ + SET SORTFLAG.B_EXEC,(IY+PANEL.SORTFLAG) + RES SORTFLAG.B_FILTER,(IY+PANEL.SORTFLAG) + JP InitPanel + +NameS: BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + RET NZ + BIT SORTFLAG.B_NAME,(IY+PANEL.SORTFLAG) + RET NZ + SET SORTFLAG.B_NAME,(IY+PANEL.SORTFLAG) + RES SORTFLAG.B_EXT,(IY+PANEL.SORTFLAG) + RES SORTFLAG.B_DATE,(IY+PANEL.SORTFLAG) + RES SORTFLAG.B_SIZE,(IY+PANEL.SORTFLAG) + JP InitPanel + +Extention: BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + RET NZ + BIT SORTFLAG.B_EXT,(IY+PANEL.SORTFLAG) + RET NZ + RES SORTFLAG.B_NAME,(IY+PANEL.SORTFLAG) + SET SORTFLAG.B_EXT,(IY+PANEL.SORTFLAG) + RES SORTFLAG.B_DATE,(IY+PANEL.SORTFLAG) + RES SORTFLAG.B_SIZE,(IY+PANEL.SORTFLAG) + JP InitPanel + +Data: BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + RET NZ + BIT SORTFLAG.B_DATE,(IY+PANEL.SORTFLAG) + RET NZ + RES SORTFLAG.B_NAME,(IY+PANEL.SORTFLAG) + RES SORTFLAG.B_EXT,(IY+PANEL.SORTFLAG) + SET SORTFLAG.B_DATE,(IY+PANEL.SORTFLAG) + RES SORTFLAG.B_SIZE,(IY+PANEL.SORTFLAG) + JP InitPanel + +Size: BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + RET NZ + BIT SORTFLAG.B_SIZE,(IY+PANEL.SORTFLAG) + RET NZ + RES SORTFLAG.B_NAME,(IY+PANEL.SORTFLAG) + RES SORTFLAG.B_EXT,(IY+PANEL.SORTFLAG) + RES SORTFLAG.B_DATE,(IY+PANEL.SORTFLAG) + SET SORTFLAG.B_SIZE,(IY+PANEL.SORTFLAG) + JP InitPanel + +UnSort: BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + RET NZ + LD A,(IY+PANEL.SORTFLAG) + AND SORTFLAG.MASK + RET Z + LD A,(IY+PANEL.SORTFLAG) + AND SORTFLAG.MASKH + LD (IY+PANEL.SORTFLAG),A + JP InitPanel + +;[]==========================================================[] +RefreshTree: LD A,(TreeFlag) + OR A + JR Z,RfTree1 + BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + JR NZ,RfTree1 + PUSH IY + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + LD IY,RightPanel + JR Z,.L1 + LD IY,LeftPanel +.L1 CALL RfTree1 + POP IY + RET + +RfTree1: LD HL,BegDIR + PUSH IY + SPDSS DSSF.CHDIR + POP IY + RET C + LD HL,TreeName + PUSH IY + SPDSS DSSF.DELETE,,0 + POP IY + RES VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG) + SET VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + JP InitPanel + +;[]==========================================================[] +NewFilter: CALL ResInvert +.L1 LD HL,SetInvert + PUSH HL + BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + RET NZ + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 208,81,224,62 + W_FILL 4,2,216,10,COLORI.BLACK + W_TEXT 98,3,COLORI.WHITE,"Filter" + W_BUTTON 32,42,72,14 + W_TEXT 60,45,COLORP.HIGHGRAY,"Ok" + W_BUTTON 120,42,72,14 + W_TEXT 140,45,COLORP.HIGHGRAY,"Cancel" + W_TEXT 16,25,COLORP.HIGHGRAY,"New filter:" + W_BORDER 70,22,134,12 + W_FILL 72,23,130,10,COLORI.WHITE + W_END + PUSH IY + POP HL + LD BC,PANEL.FILEMASK + ADD HL,BC + LD DE,CurFilt + SUB A + LD C,A +.L3 LDI + CP (HL) + JR NZ,.L3 + LD A,C + NEG + LD (FiltLen),A + LD IX,FilterStr + LD HL,FilterTab + CALL InputLine + WINDOWCLOSE + RET C + LD A,(FiltLen) + OR A + RET Z + LD HL,CurFilt + LD DE,SelMask + CALL MakeMask + RET NC + PUSH IY + POP HL + LD DE,PANEL.FILEMASK + ADD HL,DE + EX DE,HL + LD HL,CurFilt + LD A,(FiltLen) + LD B,A +.L2 LD A,(HL) + CALL CorrBigChar + LD (DE),A + INC HL + INC DE + DJNZ .L2 + SUB A + LD (DE),A + LD A,(IY+PANEL.SORTFLAG) + AND SORTFLAG.MASK + SET SORTFLAG.B_FILTER,A + LD (IY+PANEL.SORTFLAG),A + POP HL + JP InitPanel + +FilterStr: DEFB 0x0C,0x00,0x00,0x00 +FiltLen: DEFB 0x00 + DEFW 0x011A,0x006A + DEFW 0x0068 + DEFB 0xF0 +CurFilt: DUPL 0x0D,0x00 + +;[]==========================================================[] +LeftDrive: CALL ResInvert + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 32,92,224,36 + W_FILL 4,2,216,10,COLORI.BLACK + W_TEXT 86,3,COLORI.WHITE,"Left drive" + W_END + LD HL,LeftTab + LD DE,DriveTab + LD BC,0x0020 + LDIR + LD IX,LeftPanel + LD HL,0x0032 + JP ChangeDrv + +LeftTab: DEFW 0x0000,0x0020,0x0000,0x0100,0x20,0x0000,DriveExit,0x0000 + DEFW 0x0100,0x0280,0x0000,0x0100,0x20,0x0000,DriveExit,0x0000 + +RightDrive: CALL ResInvert + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 352,92,224,36 + W_FILL 4,2,216,10,COLORI.BLACK + W_TEXT 86,3,COLORI.WHITE,"Right drive" + W_END + LD HL,RightTab + LD DE,DriveTab + LD BC,0x0020 + LDIR + LD IX,RightPanel + LD HL,0x0172 + JR ChangeDrv + +RightTab: DEFW 0x0000,0x0160,0x0000,0x0100,0x20,0x0000,DriveExit,0x0000 + DEFW 0x0240,0x0280,0x0000,0x0100,0x20,0x0000,DriveExit,0x0000 + +ChangeDrv: PUSH IY + PUSH IX + POP IY + LD IX,BegDrive + LD A,(NUM_DEVICES) + ADD A,A + LD C,A + ADD A,A + ADD A,A + ADD A,A + ADD A,C + SUB 11*0x12 + NEG + SRL A + ADD A,L + LD E,A + LD A,H + ADC A,0x00 + LD D,A + LD HL,Drive + LD (HL),'A' + LD BC,0x0070 + LD A,(NUM_DEVICES) +.Drive1 PUSH AF + PUSH IX + PUSH HL + PUSH DE + PUSH BC + LD A,0x80 + CALL PrnTxtLnIFF + POP BC + POP DE + POP HL + POP IX + LD A,E + SUB 0x06 + LD (IX+0x00),A + LD A,D + SBC A,0x00 + LD (IX+0x01),A + LD A,E + ADD A,0x12 + LD E,A + JR NC,.L1 + INC D +.L1 LD A,E + SUB 0x06 + LD (IX+0x02),A + LD A,D + SBC A,0x00 + LD (IX+0x03),D + LD A,IXL + ADD A,0x10 + LD IXL,A + JR NC,.L2 + INC IXH +.L2 INC (HL) + POP AF + DEC A + JR NZ,.Drive1 + LD (IX+0x00),0x00 + LD (IX+0x01),0x80 + LD A,(IY + PANEL.CURRPATH) + SUB 'A' + LD (CurDrive),A + CALL SetDriveInv +DriveLoop: LD IX,DriveTab + CALL TestCoords + SPDSS DSSF.SCANKEY + JR Z,DriveLoop + LD A,B + OR A + JR NZ,DriveLoop + LD A,E + CP 0x1B + JR Z,DriveExit + CP 0x0D + JR Z,DriveEnter + OR A + JR Z,DriveLoop1 + LD A,(NUM_DEVICES) + LD C,A + LD A,E + RES 5,A + SUB 'A' + JR C,DriveLoop + CP C + JR NC,DriveLoop + LD (CurDrive),A + JR DriveEnter + +DriveLoop1: LD HL,DriveLoop + PUSH HL + LD A,D + CP 0x54 + JR Z,DriveLeft + CP 0x56 + JR Z,DriveRight + RET + +DriveExit: + WINDOWCLOSE + POP IY + JP SetInvert + +DriveLeft: LD A,(NUM_DEVICES) + DEC A + RET Z + LD A,(CurDrive) + OR A + JR NZ,.L1 + LD A,(NUM_DEVICES) +.L1 DEC A + PUSH AF + CALL ResDriveInv + POP AF + LD (CurDrive),A + JP SetDriveInv + +DriveRight: LD A,(NUM_DEVICES) + CP 0x01 + RET Z + LD B,A + LD A,(CurDrive) + INC A + CP B + JR NZ,.L1 + SUB A +.L1 PUSH AF + CALL ResDriveInv + POP AF + LD (CurDrive),A + JP SetDriveInv + +DriveMouse: LD IX,BegDrive + LD C,(IX+0x00) + LD B,(IX+0x01) + OR A + SBC HL,BC + LD BC,0x0012 + LD A,0xFF +.L1 INC A + SBC HL,BC + JR NC,.L1 + JR SetDrive + +DriveEnter: LD A,(CurDrive) +SetDrive: LD HL,NewDrive + ADD A,'A' + LD (HL),A + LD (IY+PANEL.CURRPATH),0x00 + WINDOWCLOSE + EX (SP),IY + CALL SetInvert + EX (SP),IY + LD HL,NewDrive + CALL NewDIRECTORY + ld a,0 +AutoActivatePanel EQU $-1 + and a + jr nz,.old + bit 7,(IY+0x00) + jp z,.chPanel + push ix + pop hl + jr .readDir + +.chPanel: pop iy + jp ChPanel + +.old: LD HL,LeftPanel + BIT 7,(HL) + JR NZ,.readDir + LD HL,RightPanel +.readDir: LD DE,PANEL.CURRPATH + ADD HL,DE + SPDSS DSSF.CHDIR + POP IY + RET + +ResDriveInv: LD DE,0x4F80 ; TODO + LD A,(CurDrive) + JR DriveInvert + +SetDriveInv: LD DE,0x804F ; TODO + LD A,(CurDrive) +DriveInvert: LD L,A + LD H,0x00 + ADD HL,HL + ADD HL,HL + ADD HL,HL + ADD HL,HL + LD BC,BegDrive + ADD HL,BC + PUSH HL + POP IX + LD L,(IX + FORMTABL.XMINL) + LD H,(IX + FORMTABL.XMINH) + LD C,(IX + FORMTABL.YMINL) + LD B,(IX + FORMTABL.YMINH) + LD A,(IX + FORMTABL.XMAXL) + SUB (IX + FORMTABL.XMINL) + EX AF,AF' + LD A,(IX + FORMTABL.YMAXL) + SUB (IX + FORMTABL.YMINL) + LD IXH,A + EX AF,AF' + SRL A + LD IXL,A + JP InvertRectan + +CurDrive: DEFB 0x00 +Drive: DEFB " ",0 + + IF PLUGS_ENABLE +GetPlugins: LD HL,WorkBuffer + 0x300 ; ࠭ ⥪饣 + SPDSS DSSF.CURDIR + LD HL,StackTree + LD (.CURRNAME),HL + LD HL,FLXDir ; + SPDSS DSSF.CHDIR + LD HL,FLXExt + LD DE,WorkBuffer + 0x200 + PUSH DE + SPDSS DSSF.F_FIRST,0, DIR.M_Archive + \ + DIR.M_System + \ + DIR.M_Hidden + \ + DIR.M_ReadOnly + POP HL + RET C +.L1 CALL .ADDFILENAME + LD DE,WorkBuffer + 0x200 + PUSH DE + SPDSS DSSF.F_NEXT + POP HL + JR NC,.L1 + LD HL,(.CURRNAME) + LD DE,StackTree + AND A + SBC HL,DE + LD A,L + SRL H + RRA + SRL H + RRA + SRL H + RRA ; A-⢮ + LD HL,StackTree + LD DE,WorkBuffer + 0x200 + EXX + LD HL,.ADR00 + LD BC,7 + EXX +; 㫮 ⥪ +.L2 PUSH DE + EXX + POP DE + LD (HL),E + INC HL + LD (HL),D + ADD HL,BC + EXX + LD BC,8 + LDIR + EX DE,HL + LD (HL),B + INC HL + EX DE,HL + DEC A + JR NZ,.L2 +; ᪠ + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 300,20,108,166 + W_FILL 4,2,100,10,COLORI.BLUE + W_TEXT 40,3,COLORI.WHITE,"Plugins" + W_ADRTEXT 16,14,COLORP.HIGHGRAY,0 +.ADR00 EQU $-2 + W_ADRTEXT 16,28,COLORP.HIGHGRAY,0 +.ADR01 EQU $-2 + W_ADRTEXT 16,42,COLORP.HIGHGRAY,0 +.ADR02 EQU $-2 + W_ADRTEXT 16,56,COLORP.HIGHGRAY,0 +.ADR03 EQU $-2 + W_ADRTEXT 16,70,COLORP.HIGHGRAY,0 +.ADR04 EQU $-2 + W_ADRTEXT 16,84,COLORP.HIGHGRAY,0 +.ADR05 EQU $-2 + W_ADRTEXT 16,98,COLORP.HIGHGRAY,0 +.ADR06 EQU $-2 + W_ADRTEXT 16,112,COLORP.HIGHGRAY,0 +.ADR07 EQU $-2 + W_ADRTEXT 16,126,COLORP.HIGHGRAY,0 +.ADR08 EQU $-2 + W_ADRTEXT 16,140,COLORP.HIGHGRAY,0 +.ADR09 EQU $-2 + W_ADRTEXT 16,154,COLORP.HIGHGRAY,0 +.ADR10 EQU $-2 + W_BUTTON 30,176,72,14 + W_TEXT 50,179,COLORP.HIGHGRAY,"Cancel" + W_END +.Loop LD IX,PluginsTab + CALL TestCoords + SPDSS DSSF.SCANKEY + JR Z,.Loop + LD A,B +; AND 0x3F +; JR Z,SetupLoop0 + BIT 4,B + JR NZ,.Loop +; BIT 5,B +; JR Z,SetupLoop +; LD HL,SetupLoop +; PUSH HL +; LD A,D +; AND 0x7F +; CP SC.R +; JP Z,InputRED +; CP SC.G +; JP Z,InputGREEN +; CP SC.B +; JP Z,InputBLUE + RET + +.ADDFILENAME LD DE,FFIRST.Name + ADD HL,DE + LD DE,0 +.CURRNAME EQU $-2 + LD BC,8 + LDIR + LD (.CURRNAME),DE + RET + +SelectPlugin +.NUM00 +.NUM01 +.NUM02 +.NUM03 +.NUM04 +.NUM05 +.NUM06 +.NUM07 +.NUM08 +.NUM09 +.NUM10 +.CANCEL + JR $ + +FLXDir: DZ "C:\\FN\\FLX" +FLXExt: DZ "*.FLX" + ENDIF diff --git a/fnmouse.a80 b/fnmouse.a80 new file mode 100644 index 0000000..d93e2a1 --- /dev/null +++ b/fnmouse.a80 @@ -0,0 +1,498 @@ + +; LAST UPDATE: 20.04.2025 savelij + +;[]----------------------------------------------------------[] +ResFire: LD A,(MouseFlag) + OR A + RET Z +RsFire1 CALL TestCMOS + SPMOUSE MOUSEF.READ_STATE + OR A + RET Z + JR RsFire1 + +;[]----------------------------------------------------------[] +; ஢ઠ न ⠡ +; 室: +; IX - ⠡ +TestCoords: CALL TestCMOS + SPMOUSE MOUSEF.READ_STATE + EX AF,AF' + LD BC,0x0000 +.PrvTabl EQU $-2 + LD A,IXL + CP C + JR NZ,.L2 + LD A,IXH + CP B + JR Z,.L3 +.L2 LD (.PrvTabl),IX + CALL ResMInvert + LD BC,ResFire + PUSH BC + SUB A + LD (RunFlag),A + JR .L4 + +.L3 LD A,0x01 + LD (RunFlag),A + EX AF,AF' + OR A + JR NZ,.L4 + PUSH HL + LD BC,0x0000 +.PrMousX EQU $-2 + OR A + SBC HL,BC + POP HL + JR NZ,.L4 + EX DE,HL + PUSH HL + LD BC,0x0000 +.PrMousY EQU $-2 + OR A + SBC HL,BC + POP HL + EX DE,HL + RET Z +.L4 LD (.PrMousX),HL + LD (.PrMousY),DE +CoordLp LD C,(IX+FORMTABL.XMINL) ; 00 + LD B,(IX+FORMTABL.XMINH) ; 01 + OR A + SBC HL,BC + ADD HL,BC + JP C,NxtCrds + LD C,(IX+FORMTABL.XMAXL) ; 02 + LD B,(IX+FORMTABL.XMAXH) ; 03 + SBC HL,BC + ADD HL,BC + JP NC,NxtCrds + LD C,(IX+FORMTABL.YMINL) ; 04 + LD B,(IX+FORMTABL.YMINH) ; 05 + OR A + EX DE,HL + SBC HL,BC + ADD HL,BC + EX DE,HL + JP C,NxtCrds + LD C,(IX+FORMTABL.YMAXL) ; 06 + LD B,(IX+FORMTABL.YMAXH) ; 07 + EX DE,HL + SBC HL,BC + ADD HL,BC + EX DE,HL + JP NC,NxtCrds + LD C,A + LD A,(MouseFlag) + OR A + LD A,C + JR Z,CoordL1 + BIT FORMTABL.B_INV1,(IX+FORMTABL.FLAGL) ; 08 + CALL NZ,SetSelect1 +CoordL1 BIT FORMTABL.B_STATICINV,(IX+FORMTABL.FLAGL) ; 08 + CALL NZ,SetSelect2 + LD C,0x00 +RunFlag EQU $-1 + DEC C + JP NZ,NxtCrds1 + LD C,A + LD A,(MouseFlag) + OR A + RET Z + LD A,C + OR A ; + JR Z,Execute1 + BIT 0,A + JR Z,Execute2 + BIT FORMTABL.B_BUTTON,(IX+FORMTABL.FLAGL) ; 08 + CALL NZ,PushButton + CCF + RET NC + OR A + BIT FORMTABL.B_WORKBUTTON,(IX+FORMTABL.FLAGL) ; 08 ; ࠡ + RET NZ + LD C,(IX+FORMTABL.FIRELEFTL) ; 0C ; + LD B,(IX+FORMTABL.FIRELEFTH) ; 0D + LD A,B + OR C + JP Z,NxtCrds1 + BIT FORMTABL.B_EXECNORETLMB,(IX+FORMTABL.FLAGL) ; 08 ; + JR Z,.L1 + POP AF +.L1 PUSH BC + BIT FORMTABL.B_INV1,(IX+FORMTABL.FLAGL) ; 08 + CALL NZ,ResSelect1 + CALL ResSelect2 + OR A + BIT FORMTABL.B_CLOSEWIN,(IX+FORMTABL.FLAGH) ; 09 + RET Z + WINDOWCLOSE + RET + +Execute1 LD C,(IX+FORMTABL.FIRENOL) ; 0A ; + LD B,(IX+FORMTABL.FIRENOH) ; 0B + LD A,B + OR C + JR Z,NxtCrds1 + BIT FORMTABL.B_EXECONLY,(IX+FORMTABL.FLAGL) ; 08 ; + JR Z,.L1 + POP AF +.L1 PUSH BC + BIT FORMTABL.B_INV1,(IX+FORMTABL.FLAGL) ; 08 + CALL NZ,ResSelect1 + CALL ResSelect2 + OR A + BIT FORMTABL.B_EXECNOPRESS,(IX+FORMTABL.FLAGL) ; 08 + RET Z + WINDOWCLOSE + RET + +Execute2 LD C,(IX+FORMTABL.FIRERIGHTL) ; 0E ; ࠢ + LD B,(IX+FORMTABL.FIRERIGHTH) ; 0F + LD A,B + OR C + JR Z,NxtCrds1 + BIT FORMTABL.B_EXECNORETRMB,(IX+FORMTABL.FLAGL) ; 08 ; + JR Z,.L1 + POP AF +.L1 PUSH BC + BIT FORMTABL.B_INV1,(IX+FORMTABL.FLAGL) ; 08 + CALL NZ,ResSelect1 + CALL ResSelect2 + OR A + BIT FORMTABL.B_WORKBUTTON,(IX+FORMTABL.FLAGH) ; 09 + RET Z + WINDOWCLOSE + RET + +NxtCrds LD C,A + LD A,(MouseFlag) + OR A + LD A,C + JR Z,NxtCrds0 + BIT FORMTABL.B_INV1,(IX+FORMTABL.FLAGL) ; 08 + CALL NZ,ResSelect1 +NxtCrds0 BIT FORMTABL.B_STATICINV,(IX+FORMTABL.FLAGL) ; 08 + CALL NZ,SetSelect2 +NxtCrds1 LD BC,FORMTABL.SIZE;0x0010 + ADD IX,BC + BIT FORMTABL.B_ENDTABL,(IX+FORMTABL.XMINH) ; ⠡? + JP Z,CoordLp + OR A + RET + +ResMInvert PUSH IX + PUSH HL + PUSH DE + PUSH AF + LD BC,FORMTABL.SIZE;0x0010 +ResCrds RES FORMTABL.B_FIRENOINV,(IX+FORMTABL.FLAGH) ; 09 + RES 6,(IX+FORMTABL.FLAGH) ; 09 + ADD IX,BC + BIT FORMTABL.B_ENDTABL,(IX+FORMTABL.XMINH) + JR Z,ResCrds + POP AF + POP DE + POP HL + POP IX + RET + +SetSelect1 BIT FORMTABL.B_FIRENOINV,(IX+FORMTABL.FLAGH) ; 09 + RET NZ + SET FORMTABL.B_FIRENOINV,(IX+FORMTABL.FLAGH) ; 09 + PUSH AF + PUSH HL + PUSH DE + PUSH IX + LD L,(IX+FORMTABL.XMINL) ; 00 + LD H,(IX+FORMTABL.XMINH) ; 01 + LD C,(IX+FORMTABL.YMINL) ; 04 + LD B,(IX+FORMTABL.YMINH) ; 05 + LD A,(IX+FORMTABL.XMAXL) ; 02 + SUB (IX+FORMTABL.XMINL) ; 00 + EX AF,AF' + LD A,(IX+FORMTABL.YMAXL) ; 06 + SUB (IX+FORMTABL.YMINL) ; 04 + LD IXH,A + EX AF,AF' + SRL A + LD IXL,A + LD DE,(COLORP.HIGHGRAY + COLORI.BLACK) << 8 | (COLORP.BLUE + COLORI.WHITE);0x804F + CALL InvertRectan + POP IX + PUSH IX +NxCrds1 LD BC,FORMTABL.SIZE;0x0010 + ADD IX,BC + BIT FORMTABL.B_ENDTABL,(IX+FORMTABL.XMINH) ; 01 ; ஢ઠ ⠡? + JR NZ,NxCrds2 + BIT FORMTABL.B_INV1,(IX+FORMTABL.FLAGL) ; 08 + CALL NZ,ResSelect1 + JR NxCrds1 + +NxCrds2 POP IX + POP DE + POP HL + POP AF + RET + +ResSelect1 BIT FORMTABL.B_FIRENOINV,(IX+FORMTABL.FLAGH) ; 09 + RET Z + RES FORMTABL.B_FIRENOINV,(IX+FORMTABL.FLAGH) ; 09 + PUSH IX + PUSH HL + PUSH DE + LD L,(IX+FORMTABL.XMINL) ; 00 + LD H,(IX+FORMTABL.XMINH) ; 01 + LD C,(IX+FORMTABL.YMINL) ; 04 + LD B,(IX+FORMTABL.YMINH) ; 05 + LD A,(IX+FORMTABL.XMAXL) ; 02 + SUB (IX+FORMTABL.XMINL) ; 00 + EX AF,AF' + LD A,(IX+FORMTABL.YMAXL) ; 06 + SUB (IX+FORMTABL.YMINL) ; 04 + LD IXH,A + EX AF,AF' + SRL A + LD IXL,A + LD DE,(COLORP.BLUE + COLORI.WHITE) << 8 | (COLORP.HIGHGRAY + COLORI.BLACK);0x4F80 + CALL InvertRectan + POP DE + POP HL + POP IX + RET + +SetSelect2 BIT 6,(IX+FORMTABL.FLAGH) ; 09 + RET NZ + SET 6,(IX+FORMTABL.FLAGH) ; 09 + PUSH IX + PUSH HL + PUSH DE + PUSH AF + LD L,(IX+FORMTABL.XMINL) ; 00 + LD H,(IX+FORMTABL.XMINH) ; 01 + LD C,(IX+FORMTABL.YMINL) ; 04 + LD B,(IX+FORMTABL.YMINH) ; 05 + LD A,(IX+FORMTABL.XMAXL) ; 02 + SUB (IX+FORMTABL.XMINL) ; 00 + EX AF,AF' + LD A,(IX+FORMTABL.YMAXL) ; 06 + SUB (IX+FORMTABL.YMINL) ; 04 + LD IXH,A + EX AF,AF' + SRL A + LD IXL,A + LD DE,(COLORP.HIGHGRAY + COLORI.BLACK) << 8 | (COLORP.BLUE + COLORI.WHITE);0x804F + CALL InvertRectan + POP AF + POP DE + POP HL + POP IX + RET + +ResSelect2 PUSH HL + PUSH DE + PUSH IX + LD IX,(TestCoords.PrvTabl) + LD BC,FORMTABL.SIZE;0x0010 +NxCrds3 BIT FORMTABL.B_STATICINV,(IX+FORMTABL.FLAGL) ; 08 + JR NZ,ResSel22 + ADD IX,BC + BIT FORMTABL.B_ENDTABL,(IX+FORMTABL.XMINH) ; 01 ; ஢ઠ ⠡? + JR NZ,ResSel2E + JR NxCrds3 + +ResSel22 BIT 6,(IX+FORMTABL.FLAGH) ; 09 + JR Z,ResSel2E + RES 6,(IX+FORMTABL.FLAGH) ; 09 + LD L,(IX+FORMTABL.XMINL) ; 00 + LD H,(IX+FORMTABL.XMINH) ; 01 + LD C,(IX+FORMTABL.YMINL) ; 04 + LD B,(IX+FORMTABL.YMINH) ; 05 + LD A,(IX+FORMTABL.XMAXL) ; 02 + SUB (IX+FORMTABL.XMINL) ; 00 + EX AF,AF' + LD A,(IX+FORMTABL.YMAXL) ; 06 + SUB (IX+FORMTABL.YMINL) ; 04 + LD IXH,A + EX AF,AF' + SRL A + LD IXL,A + LD DE,(COLORP.BLUE + COLORI.WHITE) << 8 | (COLORP.HIGHGRAY + COLORI.BLACK);0x4F80 + CALL InvertRectan +ResSel2E POP IX + POP DE + POP HL + RET + +PushButton PUSH HL + PUSH DE + LD L,(IX+FORMTABL.XMINL) ; 00 + LD H,(IX+FORMTABL.XMINH) ; 01 + LD E,(IX+FORMTABL.YMINL) ; 04 + LD D,(IX+FORMTABL.YMINH) ; 05 + LD A,(IX+FORMTABL.XMAXL) ; 02 + SUB (IX+FORMTABL.XMINL) ; 00 + LD C,A + LD A,(IX+FORMTABL.YMAXL) ; 06 + SUB (IX+FORMTABL.YMINL) ; 04 + LD B,A + PUSH HL + PUSH DE + PUSH BC + CALL PutPushBut + LD A,0x0A + LD (PausePh+1),A +PushLp PUSH IX + CALL TestRun + POP IX +PushLp1 + SPMOUSE MOUSEF.READ_STATE + OR A + JR Z,PushButtEx + BIT 0,A + JR Z,PushButtEx + LD C,(IX+FORMTABL.XMINL) ; 00 + LD B,(IX+FORMTABL.XMINH) ; 01 + OR A + SBC HL,BC + ADD HL,BC + JR C,PushButtEx + LD C,(IX+FORMTABL.XMAXL) ; 02 + LD B,(IX+FORMTABL.XMAXH) ; 03 + SBC HL,BC + ADD HL,BC + CCF + JR C,PushButtEx + EX DE,HL + LD C,(IX+FORMTABL.YMINL) ; 04 + LD B,(IX+FORMTABL.YMINH) ; 05 + OR A + SBC HL,BC + ADD HL,BC + JR C,PushButtEx + LD C,(IX+FORMTABL.YMAXL) ; 06 + LD B,(IX+FORMTABL.YMAXH) ; 07 + SBC HL,BC + CCF + JR C,PushButtEx +PausePh LD A,0x00 + OR A + JR Z,PushLp + DEC A + LD (PausePh+1),A + HALT + JR PushLp1 + +PushButtEx POP BC + POP DE + POP HL + PUSH AF + CALL PutPopBut + POP AF + POP DE + POP HL + RET + +TestRun BIT FORMTABL.B_WORKBUTTON,(IX+FORMTABL.FLAGL) ; 08 + RET Z + LD C,(IX+FORMTABL.FIRELEFTL) ; 0C + LD B,(IX+FORMTABL.FIRELEFTH) ; 0D + PUSH BC + RET + +PutPushBut LD A,COLORP.WHITE | COLORI.BLACKGRAY;0xF7 + JR PutButt + +PutPopBut LD A,COLORP.BLACKGRAY | COLORI.WHITE;0x7F +PutButt PUSH IY + EX AF,AF' + GETPORT WINSP.CPU1 + PUSH AF + SETPORT WINSP.CPU1,0x50 + GETPORT WINSP.Y_PORT + PUSH AF + SRL H + RR L + SET 6,H + LD IYL,E + SRL C + DEC C + DEC C + LD A,C + LD (ButLen3),A + LD A,B + SUB 0x02 + LD (ButLen1),A + LD (ButLen2),A + ADD A,IYL + INC A + LD IYH,A + EX AF,AF' + PUSH AF + AND 0xF0 + LD E,A + RRCA + RRCA + RRCA + RRCA + OR E + LD D,A + POP AF + AND 0x0F + LD E,A + RLCA + RLCA + RLCA + RLCA + OR E + LD E,A + DI + LD A,IYL + SETPORT WINSP.Y_PORT,,0 + LD (HL),E + INC A + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.SET_BUFFER + LD A,0x00 +ButLen1 EQU $-1 + ACCEL ACCELCMD.FILL_VERT + LD (HL),E + ACCEL ACCELCMD.OFF + LD (HL),E + INC HL + ACCEL ACCELCMD.SET_BUFFER + LD A,0x00 +ButLen3 EQU $-1 + ACCEL ACCELCMD.OFF + LD A,IYL + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.FILL + LD (HL),E + ACCEL ACCELCMD.OFF + LD A,IYH + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.FILL + LD (HL),D + ACCEL ACCELCMD.OFF + LD B,0x00 + ADD HL,BC + LD A,IYL + SETPORT WINSP.Y_PORT,,0 + LD (HL),D + INC A + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.SET_BUFFER + LD A,0x00 +ButLen2 EQU $-1 + ACCEL ACCELCMD.FILL_VERT + LD (HL),D + ACCEL ACCELCMD.OFF + LD (HL),D + EI + POP AF + SETPORT WINSP.Y_PORT,,0 + POP AF + SETPORT WINSP.CPU1,,0 + POP IY + RET diff --git a/fnpanel.a80 b/fnpanel.a80 new file mode 100644 index 0000000..7c8182c --- /dev/null +++ b/fnpanel.a80 @@ -0,0 +1,1239 @@ + +; LAST UPDATE: 27.04.2025 savelij + +;[]----------------------------------------------------------[] +PrintDisks LD L,(IY + PANEL.XL) + LD H,(IY + PANEL.XH) + INC HL + INC HL + LD (.DiskX1),HL + LD DE,0x0004 + ADD HL,DE + LD (.DiskX2),HL + LD DE,0x0006 + ADD HL,DE + LD (.NameX),HL + LD A,'A' + LD (.DISK),A + PUSH IY + POP HL + LD DE,PANEL.CURRPATH + ADD HL,DE + LD A,(HL) + SUB 'A' + LD C,A + LD A,(NUM_DEVICES) + LD B,A +.L1 LD A,C + OR A + LD DE,(COLORP.BLACK + COLORI.BLACKGRAY) << 8 | (COLORP.BLACKGRAY + COLORI.YELLOW) + JR Z,.L2 + LD DE,(COLORP.BLACK + COLORI.HIGHGRAY) << 8 | (COLORP.HIGHGRAY + COLORI.BLACK) +.L2 LD A,D + LD (.ColRect),A + LD A,E + LD (.ColName),A + MAKEWINDOW WINSUBOBJ.WOBIND + W_BUTTON 0,30,28,12 +.DiskX1 EQU $ - 8 +.LnDiskX EQU $ - 4 + W_FILL 0,32,20,8,COLORI.BLACK +.DiskX2 EQU $ - 9 +.ColRect EQU $ - 1 + W_TEXT 0,32,COLORI.BLACK," " +.NameX EQU $ - 7 +.ColName EQU $ - 3 +.DISK EQU $ - 2 + W_END + LD HL,(.DiskX1) + LD DE,(.LnDiskX) + ADD HL,DE + LD (.DiskX1),HL + LD HL,(.DiskX2) + ADD HL,DE + LD (.DiskX2),HL + LD HL,(.NameX) + ADD HL,DE + LD (.NameX),HL + LD HL,.DISK + INC (HL) + DEC C + DJNZ .L1 + RET + +;[]----------------------------------------------------------[] +PrintPath BIT PANELFLAG.B_PRNDOSPATH,(IY + PANEL.PANELFLAG) + LD A,COLORP.BLACK + COLORI.BLACK + LD C,COLORP.BLACK + COLORI.WHITE + JR NZ,.L1 + LD A,COLORP.BLACK + COLORI.BLACKGRAY + LD C,COLORP.BLACKGRAY + COLORI.WHITE +.L1 LD (.HeadCol),A + LD A,C + LD (.PathCol),A + LD L,(IY + PANEL.XL) + LD H,(IY + PANEL.XH) + LD (.PanelHX),HL + MAKEWINDOW WINSUBOBJ.WOBIND + W_FILL 0,46,310,12,COLORI.BLACK +.PanelHX EQU $ - 9 +.HeadCol EQU $ - 1 + W_END + + PUSH IY + POP HL + LD BC,PANEL.CURRPATH + ADD HL,BC + PUSH HL + 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 POP HL + SUB A + LD (DE),A + BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) + JR NZ,.PrPath1 + LD BC,0x000D + SBC HL,BC + BIT SORTFLAG.B_FILTER,(IY + PANEL.SORTFLAG) + JR NZ,.L4 + LD HL,NORMmask +.L4 LDIR +.PrPath1 LD IX,300 + LD HL,(.PanelHX) + LD DE,WorkBuffer + LD BC,0x0006 + ADD HL,BC + EX DE,HL + LD C,0x30 + LD A,0x00 +.PathCol EQU $-1 + JP PrnRangPathL + +;[]----------------------------------------------------------[] +PrintDOSPath PUSH IY + POP HL + LD BC,PANEL.CURRPATH + ADD HL,BC + LD DE,WorkBuffer + SUB A +.L1 LDI + CP (HL) + JR NZ,.L1 + DEC HL + LD A,'\\' + CP (HL) + JR Z,.L2 + LD (DE),A + INC DE +.L2 LD A,'>' + LD (DE),A + INC DE + SUB A + LD (DE),A + MAKEWINDOW WINSUBOBJ.WOBIND + W_FILL 4,231,246,8,COLORI.HIGHGRAY + W_END + + LD IX,246 + LD HL,WorkBuffer + LD DE,250 + LD BC,231 + LD A,COLORP.HIGHGRAY + COLORI.BLACK + JP PrnRangPathR + +;[]----------------------------------------------------------[] +PrnFileInfo BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) + JP NZ,PrnTreeInfo ;Tree + LD A,(IY + PANEL.MFL) + OR (IY + PANEL.MFH) + JP NZ,PrnSelInfo + GETPORT WINSP.CPU1 + PUSH AF + BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + LD A,(RAMPAGES.LEFTPANEL) + JR Z,.L1 + LD A,(RAMPAGES.RIGHTPANEL) +.L1 + SETPORT WINSP.CPU1,,0 + LD L,(IY + PANEL.FFL) + LD H,(IY + PANEL.FFH) + LD E,(IY + PANEL.CFL) + LD D,(IY + PANEL.CFH) + ADD HL,DE + ADD HL,HL ; *2 + ADD HL,HL ; *4 + ADD HL,HL ; *8 + LD E,L + LD D,H + ADD HL,HL ; *10 + ADD HL,DE ; *18 + SET 6,H ; | 0x4000 + LD DE,WorkBuffer + LD BC,FileHDR.SIZE + CALL MoveBytes + POP AF + SETPORT WINSP.CPU1,,0 + LD HL,WorkBuffer + FileHDR.SIZE;0x18 + LD B,38 + LD A,' ' +.L2 LD (HL),A + INC HL + DJNZ .L2 + LD (HL),0x00 + LD IX,WorkBuffer + LD HL,WorkBuffer+1 + LD A,(HL) + OR A + JR Z,PrntFI + LD DE,WorkBuffer + FileHDR.SIZE;0x18 + LD B,0x08 +.EFI0 LD A,(HL) + CP ' ' + JR Z,.EFI1 + INC HL + LD (DE),A + INC DE + DJNZ .EFI0 +.EFI1 LD A,B + OR A + JR Z,.L3 +.L4 INC HL + DJNZ .L4 +.L3 LD B,0x03 + INC HL + LD A,(HL) + CP ' ' + JR NZ,.EFI3 +.EFI2 LD A,(HL) + INC HL + LD (DE),A + INC DE + DJNZ .EFI2 +.EFI3 LD A,B + OR A + JR Z,.EndFI + LD A,'.' + LD (DE),A + INC DE +.EFI4 LD A,(HL) + INC HL + LD (DE),A + INC DE + DJNZ .EFI4 +.EndFI LD DE,WorkBuffer + FileHDR.SIZE + FileHDR.Zero;0x18 + 0x0D + CALL GetFileLen + LD DE,WorkBuffer + FileHDR.SIZE + FileHDR.SIZE;0x18+0x18 + CALL GetData + INC DE + CALL GetTime +PrntFI LD HL,WorkBuffer + FileHDR.SIZE;0x18 + LD E,(IY+PANEL.XL) + LD D,(IY+PANEL.XH) + INC DE + INC DE + INC DE + INC DE + LD BC,215 + LD A,COLORP.HIGHGRAY + COLORI.BLACK + JP PrnTxtLnNorm + +GetFileLen BIT DIR.B_Dir,(IX + FileHDR.Attr) + JP NZ,PDirectory + RES DIR.B_Device,(IX + FileHDR.Attr) + LD HL,GetLenExit + LD (ChooseStringFormat.address),HL + LD L,(IX + FileHDR.SizeBytes) + LD H,(IX + FileHDR.SizeBytes + 1) + EXX + LD L,(IX + FileHDR.SizeBytes + 2) + LD H,(IX + FileHDR.SizeBytes + 3) + EXX + JP ConvNumTxt32_Shared + +GetLenExit CP 0x30 + JR Z,.L1 + SET DIR.B_Device,(IX + FileHDR.Attr) +.L1 BIT DIR.B_Device,(IX + FileHDR.Attr) + JR NZ,.L2 + LD A,0x20 +.L2 LD (DE),A + INC DE + RET + +PDirectory LD HL,DirText + LD BC,0x000A + LDIR + RET + +DirText DEFB " " + +; +GetData EX DE,HL + LD A,(IX + FileHDR.Date) + CALL Get8Bit + LD (HL),'.' + INC HL + LD A,(IX + FileHDR.Month) + CALL Get8Bit + LD (HL),'.' + INC HL + LD A,(IX + FileHDR.Year) ; + CALL Get8Bit + EX DE,HL + RET + +; ६ +GetTime EX DE,HL + LD A,(IX + FileHDR.Hours) ; + CALL Get8Bit + LD (HL),':' + INC HL + LD A,(IX + FileHDR.Minutes) + CALL Get8Bit + EX DE,HL + RET + +Get8Bit LD B,'0' - 1 +.L1 INC B + SUB 10 + JR NC,.L1 + ADD A,10 + LD (HL),B + INC HL + ADD A,'0' + LD (HL),A + INC HL + RET + +PrnTreeInfo + IF TREE_REZID + CALL RESIDENT.MakeTreePath + ELSE + CALL MakeTreePathR + ENDIF + EX DE,HL + PUSH IY + POP HL + LD BC,PANEL.CURRPATH + ADD HL,BC + INC HL + INC HL + EX DE,HL + SUB A +.L1 LDI + CP (HL) + JR NZ,.L1 + LD (DE),A + CALL PrintPath + BIT PANELFLAG.B_PRNDOSPATH,(IY+PANEL.PANELFLAG) + JP NZ,PrintDOSPath + RET + +PrnSelInfo LD L,(IY+PANEL.MBL1) + LD H,(IY+PANEL.MBH1) + LD C,(IY+PANEL.MBL2) + LD B,(IY+PANEL.MBH2) + LD A,(IY+PANEL.MBL3) ; [ ] FAT32 + LD DE,WorkBuffer + CALL ConvNumTxt40 ; [ ] fat32 + LD HL,CrSizeT + LD BC,0x000A + LDIR + LD L,(IY+PANEL.MFL) + LD H,(IY+PANEL.MFH) + CALL ConvNumTxt16 + LD HL,CrSelT + LD BC,0x000F + LDIR + LD A,E + LD DE,WorkBuffer+0x100 + LD C,A + SUB 38 + NEG + SRL A + LD B,A + JR Z,.PrSelI1 + LD A,0x20 +.L1 LD (DE),A + INC E + DJNZ .L1 +.PrSelI1 LD HL,WorkBuffer + LDIR + LD A,38 + SUB E + JR Z,.PrSelI2 + LD B,A + LD A,0x20 +.L2 LD (DE),A + INC E + DJNZ .L2 +.PrSelI2 SUB A + LD (DE),A + LD HL,WorkBuffer+0x100 + LD E,(IY+PANEL.XL) + LD D,(IY+PANEL.XH) + INC DE + INC DE + INC DE + INC DE + LD BC,215 + LD A,COLORP.HIGHGRAY + COLORI.BLACK + JP PrnTxtLnNorm + +CrSizeT DEFB " bytes in " +CrSelT DEFB " selected files" + +;[]----------------------------------------------------------[] +PrintDIR LD A,(IY+PANEL.EFL) + OR (IY+PANEL.EFH) + JR NZ,PrnDIRECT + LD L,(IY+PANEL.XL) + LD H,(IY+PANEL.XH) + INC HL + INC HL + LD (.ClrDIR1),HL + LD HL,308 + LD DE,141 + LD A,(IY+PANEL.VIEWFLAG) + AND VIEWFLAG.MASK + JR Z,.L1 + LD HL,292 + LD DE,149 +.L1 LD (.H),HL + LD (.V),DE + MAKEWINDOW WINSUBOBJ.WOBIND + W_FILL 0,60,0,0,COLORI.PANEL +.ClrDIR1 EQU $ - 9 +.H EQU $ - 5 +.V EQU $ - 3 + W_END + RET + +PrnDIRECT BIT VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG) + JP NZ,PrintFULL + BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + JP NZ,PrintTREE +; ⪨ ᯨ᮪ + PUSH IY + GETPORT WINSP.CPU1 + PUSH AF + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + LD A,(RAMPAGES.LEFTPANEL) + JR Z,.L1 + LD A,(RAMPAGES.RIGHTPANEL) +.L1 + SETPORT WINSP.CPU1,,0 + LD L,(IY+PANEL.FFL) + LD H,(IY+PANEL.FFH) + ADD HL,HL ; *2 + ADD HL,HL ; *4 + ADD HL,HL ; *8 + LD E,L + LD D,H + ADD HL,HL ; *10 + ADD HL,DE ; *18 + SET 6,H ; | 0x4000 + LD DE,WorkBuffer + LD BC,0x33 * FileHDR.SIZE;0x18 + CALL MoveBytes + POP AF + SETPORT WINSP.CPU1,,0 + LD B,COLORP.PANEL + COLORI.FILES + LD C,COLORP.PANEL + COLORI.SELECTFILES + CALL InsPrnColor + GETPORT WINSP.Y_PORT ; ࠭塞 Y + LD C,A + GETPORT WINSP.CPU1 + LD B,A + PUSH BC + SETPORT WINSP.CPU1,0x50 + LD HL,WorkBuffer + PUSH HL + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + LD HL,PositTABLeft + JR Z,.L2 + LD HL,PositTABRight +.L2 LD B,0x33 +.PrnDIR1 LD E,(HL) + INC HL + LD D,(HL) + INC HL + LD C,(HL) + INC HL + EX (SP),HL + PUSH HL + PUSH BC + LD B,0x0C + CALL PrintName + POP BC + POP HL + LD DE,0x0019 + ADD HL,DE + LD A,(HL) + DEC HL + OR A + JR Z,PrnDIR2 + EX (SP),HL + DJNZ .PrnDIR1 + JR PrnDIRe + +PrnDIR2 DEC B + JR Z,PrnDIRe + LD HL,EmptyFile + EX (SP),HL +PrnDIR3 LD E,(HL) + INC HL + LD D,(HL) + INC HL + LD C,(HL) + INC HL + EX (SP),HL + PUSH HL + PUSH BC + LD B,0x0C + CALL PrintName + POP BC + POP HL + EX (SP),HL + DJNZ PrnDIR3 +PrnDIRe POP HL + POP BC + LD A,B + SETPORT WINSP.CPU1,,0 + LD A,C + SETPORT WINSP.Y_PORT,,0 + POP IY + RET + +EmptyFile DB 0x00," ",0x01," ",0x00 + +; ஡ ᯨ᮪ +PrintFULL PUSH IY + GETPORT WINSP.CPU1 + PUSH AF + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + LD A,(RAMPAGES.LEFTPANEL) + JR Z,.L1 + LD A,(RAMPAGES.RIGHTPANEL) +.L1 + SETPORT WINSP.CPU1,,0 + LD L,(IY+PANEL.FFL) + LD H,(IY+PANEL.FFH) + ADD HL,HL ; *2 + ADD HL,HL ; *4 + ADD HL,HL ; *8 + LD E,L + LD D,H + ADD HL,HL ; *10 + ADD HL,DE ; *18 + SET 6,H ; | 0x4000 + LD DE,WorkBuffer + LD BC,0x12 * FileHDR.SIZE;0x18 + CALL MoveBytes + POP AF + SETPORT WINSP.CPU1,,0 + LD B,COLORP.PANEL + COLORI.FILES + LD C,COLORP.PANEL + COLORI.SELECTFILES + CALL InsPrnColor + GETPORT WINSP.Y_PORT ; ࠭塞 Y + LD C,A + GETPORT WINSP.CPU1 + LD B,A + PUSH BC + SETPORT WINSP.CPU1,0x50 + LD HL,WorkBuffer + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + LD DE,8 + JR Z,.L2 + LD DE,328 +.L2 LD BC,0x123F +.PrnDIRp PUSH HL + PUSH DE + PUSH BC + PUSH HL + LD DE,WorkBuffer+0x200 + LD BC,0x000D + LDIR + LD A,0x01 + LD (DE),A + INC DE + POP IX + BIT DIR.B_Dir,(IX + FileHDR.Attr) + CALL NZ,PutDIRTxt + CALL Z,GetFileLen + LD A,0x01 + LD (DE),A + INC DE + CALL GetData + LD A,0x01 + LD (DE),A + INC DE + CALL GetTime + POP BC + POP DE + POP HL + PUSH DE + PUSH BC + PUSH HL + LD HL,WorkBuffer+0x200 + LD B,0x26 + CALL PrintName + POP HL + LD BC,0x0019 + ADD HL,BC + POP BC + LD A,C + ADD A,0x08 + LD C,A + POP DE + LD A,(HL) + DEC HL + OR A + JR Z,.PrnDIRp2 + DJNZ .PrnDIRp + JR .PrnDIRpE + +.PrnDIRp2 DEC B + JR Z,.PrnDIRpE + LD HL,EmptyFile1 +.PrnDIRp3 PUSH HL + PUSH DE + PUSH BC + LD B,0x26 + CALL PrintName + POP BC + LD A,C + ADD A,0x08 + LD C,A + POP DE + POP HL + DJNZ .PrnDIRp3 +.PrnDIRpE POP BC + LD A,B + SETPORT WINSP.CPU1,,0 + LD A,C + SETPORT WINSP.Y_PORT,,0 + POP IY + RET + +PutDIRTxt EX AF,AF' + LD HL,DIRt1 + LD A,(IX + FileHDR.Name) + CP '.' + JR Z,.L1 + LD HL,DIRt2 +.L1 LD BC,0x000A + LDIR + EX AF,AF' + RET + +DIRt1 DEFB 0x20,0x10,"UP--DIR",0x11 +DIRt2 DEFB 0x20,0x10,"SUB-DIR",0x11 + +EmptyFile1 DEFB 0x00," " + DEFB 0x01," " + DEFB 0x01," " + DEFB 0x01," " + DEFB 0x01," " + +; ॢ ⠫ +PrintTREE + GETPORT WINSP.CPU1 + PUSH AF + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + LD A,(RAMPAGES.LEFTPANEL) + JR Z,.L1 + LD A,(RAMPAGES.RIGHTPANEL) +.L1 + SETPORT WINSP.CPU1,,0 + LD HL,WorkBuffer + LD B,0x18 + LD A,0x80 + PUSH HL +.L2 LD (HL),A + INC L + DJNZ .L2 + POP DE + LD HL,0x4000 + LD C,(IY+PANEL.FFL) + LD B,(IY+PANEL.FFH) + LD A,B + OR C + JR Z,.PrDIRb2 +.PrDIRb1 PUSH BC + LD A,(HL) + AND 0x7F + LD E,A + LD A,(HL) + LD (DE),A + LD BC,0x0010 + ADD HL,BC + POP BC + DEC BC + LD A,B + OR C + JR NZ,.PrDIRb1 +.PrDIRb2 LD DE,WorkBuffer+0x100 + LD BC,0x12*0x10 + CALL MoveBytes + POP AF + SETPORT WINSP.CPU1,,0 + LD B,COLORP.PANEL + COLORI.FILES + LD C,COLORP.PANEL + COLORI.SELECTFILES + CALL InsPrnColor + GETPORT WINSP.Y_PORT ; ࠭塞 Y + LD C,A + GETPORT WINSP.CPU1 + LD B,A + PUSH BC + SETPORT WINSP.CPU1,0x50 + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + LD HL,WorkBuffer+0x100 + LD DE,10 + JR Z,.L3 + LD DE,330 +.L3 LD BC,0x123F +.PrnDIRt PUSH HL + PUSH DE + PUSH BC + LD DE,WorkBuffer+0x300 + CALL MakeTreeLine + POP BC + POP DE + POP HL + PUSH DE + PUSH BC + PUSH HL + LD HL,WorkBuffer+0x300 + LD B,0x24 + PUSH IY + CALL PrintName + POP IY + POP HL + LD BC,0x000F + ADD HL,BC + POP BC + LD A,C + ADD A,0x08 + LD C,A + POP DE + LD A,(HL) + INC HL + INC A + JR Z,.PrnDIRt2 + DEC B + JP NZ,.PrnDIRt + JR .PrnDIRtE + +.PrnDIRt2 DEC B + JR Z,.PrnDIRtE + LD HL,EmptyFile2 + PUSH IY +.PrnDIRt3 PUSH HL + PUSH DE + PUSH BC + LD B,0x24 + CALL PrintName + POP BC + LD A,C + ADD A,0x08 + LD C,A + POP DE + POP HL + DJNZ .PrnDIRt3 + POP IY +.PrnDIRtE POP BC + LD A,B + SETPORT WINSP.CPU1,,0 + LD A,C + SETPORT WINSP.Y_PORT,,0 + RET + +MakeTreeLine SUB A + LD (DE),A + INC E + LD C,(HL) + INC HL + LD A,(HL) + INC HL + LD IXL,A + LD A,' ' + LD (DE),A + INC E + INC C + DEC C ; r.C=0 "\" + JR Z,.MTreeL2 + PUSH HL + LD A,C + AND 0x7F + LD B,A + LD HL,WorkBuffer + PUSH HL + LD L,A + LD (HL),C + POP HL + DEC B + JR Z,.MTreeL1 +.MTreeL0 INC HL + BIT 7,(HL) + LD A,0xB3 + JR Z,.L1 + LD A,' ' +.L1 LD (DE),A + INC E + BIT VIEWFLAG.B_SHORTTREE,(IY+PANEL.VIEWFLAG) + JR NZ,.L2 + LD A,' ' + LD (DE),A + INC E +.L2 DJNZ .MTreeL0 +.MTreeL1 BIT 7,C + LD A,0xC3 + JR Z,.L3 + LD A,0xC0 +.L3 LD (DE),A + INC E + BIT VIEWFLAG.B_SHORTTREE,(IY+PANEL.VIEWFLAG) + JR NZ,.L4 + LD A,0xC4 + LD (DE),A + INC E +.L4 POP HL +.MTreeL2 LD A,IXL + BIT 1,A + JR Z,.MTreeL3 + BIT VIEWFLAG.B_SHORTTREE,(IY+PANEL.VIEWFLAG) + JR NZ,.L5 + DEC E +.L5 LD A,0xDD + LD (DE),A + INC E + LD A,IXL +.MTreeL3 BIT 0,A + LD A,0x02 + JR NZ,.L6 + INC A +.L6 LD (DE),A + INC E + SUB A +.L7 LDI + CP (HL) + JR NZ,.L7 + LD A,0x03 + LD (DE),A + INC E + LD A,IXL + BIT 1,A + JR Z,.MTreeL5 + LD A,0xDE + LD (DE),A + INC E +.MTreeL5 LD A,0x28 + SUB E + JR Z,.MTreeL6 + JR C,.MTreeL6 + LD B,A + LD A,0x20 +.L8 LD (DE),A + INC E + DJNZ .L8 +.MTreeL6 LD A,IXL + BIT 0,A + RET Z + LD E,0x26 + LD A,0x02 + LD (DE),A + INC E + LD A,0x11 + LD (DE),A + RET + +EmptyFile2 DEFB 0x00 + DB 0x24 DUP ' ' + +InsPrnColor LD HL,PrnINKd1 ; INK + LD DE,PrnPAPd1 ; PAPER + PUSH BC + LD A,B + PUSH AF + AND 0x0F ; INK + LD C,A + RLCA + RLCA + RLCA + RLCA + OR C + CPL + LD B,0x08 +.L1 LD (HL),A + INC HL + DJNZ .L1 + LD B,A + POP AF + AND 0xF0 ; PAPER + LD C,A + RRCA + RRCA + RRCA + RRCA + OR C + XOR B ; XOR INK + LD B,0x08 +.L2 LD (DE),A + INC DE + DJNZ .L2 + POP BC + LD HL,PrnINKd2 ; INK + LD DE,PrnPAPd2 ; PAPER + LD A,C + PUSH AF + AND 0x0F ; INK + LD C,A + RLCA + RLCA + RLCA + RLCA + OR C + CPL + LD B,0x08 +.L3 LD (HL),A + INC HL + DJNZ .L3 + LD B,A + POP AF + AND 0xF0 ; PAPER + LD C,A + RRCA + RRCA + RRCA + RRCA + OR C + XOR B ; XOR INK + LD B,0x08 +.L4 LD (DE),A + INC DE + DJNZ .L4 + RET + +PrnINKd1 DB 8 DUP 0 +PrnPAPd1 DB 8 DUP 0 +PrnINKd2 DB 8 DUP 0 +PrnPAPd2 DB 8 DUP 0 + +PrintName LD IYL,C ; Y न + LD A,(HL) + INC HL + PUSH DE + EXX + LD HL,PrnPAPd1 ; INK + LD DE,PrnINKd1 ; PAPER + OR A + JR Z,.L1 + LD HL,PrnPAPd2 ; INK + LD DE,PrnINKd2 ; PAPER +.L1 POP BC + SRL B + RR C + SET 6,B + EXX + DI + GETPORT WINSP.CPU0 + PUSH AF + LD A,(RAMPAGES.FNFONT) + SETPORT WINSP.CPU0,,0 + LD A,B + LD C,L ; ப + LD B,H + ACCEL ACCELCMD.SET_BUFFER + LD H,0x08 + ACCEL ACCELCMD.OFF +.L2 EX AF,AF' + LD A,(BC) + INC BC + CP 0x03 + JR NZ,.L3 + EXX + LD HL,PrnPAPd1 ; INK + LD DE,PrnINKd1 ; PAPER + EXX + JR .L5 + +.L3 CP 0x02 + JR NZ,.L4 + EXX + LD HL,PrnPAPd2 ; INK + LD DE,PrnINKd2 ; PAPER + EXX +.L5 LD A,(BC) + INC BC +.L4 PUSH BC + CP 0x01 + LD B,0x04 + JR NZ,.L6 + LD B,0x02 + LD A,0x20 +.L6 LD L,A + LD H,HIGH (IFFFONT_RAW)-0xC0 + LD E,(HL) + INC H + LD A,(HL) + ADD A,HIGH (IFFFONT_RAW)-0xC0 + LD D,A + LD HL,0x0008 + EX DE,HL +.L7 + ACCEL ACCELCMD.COPY + LD A,(HL) + ACCEL ACCELCMD.OFF + EXX + LD A,IYL + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.COPY + OR (HL) + EX DE,HL + XOR (HL) + ACCEL ACCELCMD.COPY_VERT + LD (BC),A + ACCEL ACCELCMD.OFF + EX DE,HL + INC BC + EXX + ADD HL,DE + DJNZ .L7 + POP BC + EX AF,AF' + DEC A + JR NZ,.L2 + POP AF + SETPORT WINSP.CPU0,,0 + EI + RET + +PositTABLeft +.COUNT := 63 + REPT 17 + DW 10 + DB .COUNT +.COUNT := .COUNT + 8 + ENDM +.COUNT := 63 + REPT 17 + DW 114 + DB .COUNT +.COUNT := .COUNT + 8 + ENDM +.COUNT := 63 + REPT 17 + DW 218 + DB .COUNT +.COUNT := .COUNT + 8 + ENDM + +PositTABRight +.COUNT := 63 + REPT 17 + DW 330 + DB .COUNT +.COUNT := .COUNT + 8 + ENDM +.COUNT := 63 + REPT 17 + DW 434 + DB .COUNT +.COUNT := .COUNT + 8 + ENDM +.COUNT := 63 + REPT 17 + DW 538 + DB .COUNT +.COUNT := .COUNT + 8 + ENDM + +;[]----------------------------------------------------------[] +SetInvert BIT PANELFLAG.B_PRNDOSPATH,(IY+PANEL.PANELFLAG) + RET Z + LD HL,(COLORP.PANEL + COLORI.FILES) << 8 | (COLORP.PANEL + COLORI.SELECTFILES) + LD BC,(COLORP.INVERTPAPER + COLORI.INVERTINK) << 8 | (COLORP.INVERTPAPER + COLORI.INVSELFILES) + JR PrnInvert + +ResInvert BIT PANELFLAG.B_PRNDOSPATH,(IY + PANEL.PANELFLAG) + RET Z + LD HL,(COLORP.INVERTPAPER + COLORI.INVERTINK) << 8 | (COLORP.INVERTPAPER + COLORI.INVSELFILES) + LD BC,(COLORP.PANEL + COLORI.FILES) << 8 | (COLORP.PANEL + COLORI.SELECTFILES) +PrnInvert LD A,(IY + PANEL.EFL) + OR (IY + PANEL.EFH) + RET Z + BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) + JP NZ,PrnTreeInv + PUSH HL + GETPORT WINSP.CPU1 + PUSH AF + BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + LD A,(RAMPAGES.LEFTPANEL) + JR Z,.L1 + LD A,(RAMPAGES.RIGHTPANEL) +.L1 + SETPORT WINSP.CPU1,,0 + LD L,(IY + PANEL.FFL) + LD H,(IY + PANEL.FFH) + LD E,(IY + PANEL.CFL) + LD D,(IY + PANEL.CFH) + ADD HL,DE + ADD HL,HL ; *2 + ADD HL,HL ; *4 + ADD HL,HL ; *8 + LD E,L + LD D,H + ADD HL,HL ; *10 + ADD HL,DE ; *18 + SET 6,H ; | 0xC000 + LD E,(HL) + POP AF + SETPORT WINSP.CPU1,,0 + POP HL + LD A,E + OR A + LD E,B + LD D,H + JR Z,.L2 + LD E,C + LD D,L +.L2 BIT VIEWFLAG.B_FULL,(IY + PANEL.VIEWFLAG) + JR NZ,PrnInvertP + LD L,(IY + PANEL.CFL) + LD H,(IY + PANEL.CFH) + LD C,L + LD B,H + ADD HL,HL + ADD HL,BC + BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + LD BC,PositTABLeft + JR Z,.L3 + LD BC,PositTABRight +.L3 ADD HL,BC + PUSH DE + LD E,(HL) + INC HL + LD D,(HL) + INC HL + LD C,(HL) + LD B,0x00 + EX DE,HL + POP DE + LD IX,8 << 8 + 48 + DEC HL + DEC HL + JP InvertRectan + +PrnInvertP LD L,(IY + PANEL.CFL) + LD H,(IY + PANEL.CFH) + ADD HL,HL + ADD HL,HL + ADD HL,HL + LD BC,0x003F + ADD HL,BC + LD C,L + LD B,0x00 + BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + LD HL,6 + JR Z,.L1 + LD HL,326 +.L1 LD IX,8 << 8 + 146 + JP InvertRectan + +PrnTreeInv PUSH HL + GETPORT WINSP.CPU1 + PUSH AF + BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + LD A,(RAMPAGES.LEFTPANEL) + JR Z,.L1 + LD A,(RAMPAGES.RIGHTPANEL) +.L1 + SETPORT WINSP.CPU1,,0 + LD L,(IY + PANEL.FFL) + LD H,(IY + PANEL.FFH) + LD E,(IY + PANEL.CFL) + LD D,(IY + PANEL.CFH) + ADD HL,DE + ADD HL,HL ; *2 + ADD HL,HL ; *4 + ADD HL,HL ; *8 + ADD HL,HL ; *10 + SET 6,H ; | 0x4000 + LD A,(HL) + EX AF,AF' + INC HL + LD A,(HL) + LD IXH,A + LD IXL,0xFF +.L2 INC IXL + INC HL + LD A,(HL) + OR A + JR NZ,.L2 + LD A,IXL + ADD A,A + ADD A,A + LD IXL,A + POP AF + SETPORT WINSP.CPU1,,0 + POP HL + LD A,IXH + OR A + LD E,B + LD D,H + JR Z,.L3 + LD E,C + LD D,L +.L3 LD L,(IY+PANEL.CFL) + LD H,(IY+PANEL.CFH) + ADD HL,HL + ADD HL,HL + ADD HL,HL + LD BC,0x003F + ADD HL,BC + LD C,L + LD B,0x00 + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + LD HL,0x0012 + JR Z,.L4 + LD HL,0x0152 +.L4 BIT VIEWFLAG.B_SHORTTREE,(IY+PANEL.VIEWFLAG) + JR Z,.PrTreeI + EX AF,AF' + OR A + JR Z,.PrTreeI1 + EX AF,AF' + LD A,IXH + OR A + JR Z,.PrTreeI + PUSH BC + LD C,0x08 + ADD HL,BC + POP BC +.PrTreeI EX AF,AF' +.PrTreeI1 PUSH BC + AND 0x7F + LD C,A + SLA C + RL B + SLA C + RL B + SLA C + RL B + ADD HL,BC + BIT VIEWFLAG.B_SHORTTREE,(IY+PANEL.VIEWFLAG) + JR NZ,.L5 + ADD HL,BC +.L5 POP BC + LD IXH,0x08 + JP InvertRectan diff --git a/fnprint.a80 b/fnprint.a80 new file mode 100644 index 0000000..ddd5c7f --- /dev/null +++ b/fnprint.a80 @@ -0,0 +1,620 @@ + +; LAST UPDATE: 20.02.2025 savelij + +;[]----------------------------------------------------------[] +; 楤 뢮 ⥪⮢ ப ᪨ ࠭ 640x256 +; १ ⥪ +; 室: +; IX - - ᥫ 뢮 ப +; HL - ⥪⮢ ப +; DE - 뢮 X +; BC - 뢮 Y +; A - 梥 (7-4 PAPER, 3-0 INK) +; ( ப - 0) +PrnRangPathL PUSH DE + PUSH BC + PUSH AF + DI + GETPORT WINSP.CPU0 + PUSH AF + LD A,(RAMPAGES.FNFONT) + SETPORT WINSP.CPU0,,0 + LD BC,0x0000 + LD D,HIGH (FONT_RAW)-0xC0 + PUSH HL + LD A,(HL) +PrRangL INC HL + LD E,A + LD A,(DE) + ADD A,A + ADD A,C + LD C,A + LD A,B + ADC A,0x00 + LD B,A + LD A,(HL) + OR A + JR NZ,PrRangL + PUSH IX + POP HL + SBC HL,BC + LD C,L + LD B,H + POP HL + JR NC,PrRngLE + LD A,C + SUB 0x1A + LD IXL,A + LD A,B + SBC A,0x00 + LD IXH,A + LD A,(HL) + EX AF,AF' + INC HL + INC HL +PrRngL0 LD BC,0x0000 + INC HL + LD A,(HL) +PrRngL1 INC HL + LD E,A + LD A,(DE) + ADD A,A + ADD A,C + LD C,A + LD A,B + ADC A,0x00 + LD B,A + LD A,(HL) + CP 0x5C + JR NZ,PrRngL1 + ADD IX,BC + JR NC,PrRngL0 + DEC HL + LD (HL),'.' + DEC HL + LD (HL),'.' + DEC HL + LD (HL),'\\' + DEC HL + LD (HL),':' + DEC HL + EX AF,AF' + LD (HL),A +PrRngLE POP AF + SETPORT WINSP.CPU0,,0 + EI + POP AF + POP BC + POP DE + JP PrnTxtLnIFF + +;[]----------------------------------------------------------[] +; 楤 뢮 ⥪⮢ ப ᪨ ࠭ 640x256 +; १ ⥪ +; 室: +; IX - - ᥫ 뢮 ப +; HL - ⥪⮢ ப +; DE - 뢮 X +; BC - 뢮 Y +; A - 梥 (7-4 PAPER, 3-0 INK) +; ( ப - 0) +PrnRangPathR PUSH AF + PUSH BC + PUSH DE + DI + GETPORT WINSP.CPU0 + PUSH AF + LD A,(RAMPAGES.FNFONT) + SETPORT WINSP.CPU0,,0 + LD BC,0x0000 + LD D,HIGH (FONT_RAW)-0xC0 + PUSH HL + LD A,(HL) +PrRangR INC HL + LD E,A + LD A,(DE) + ADD A,A + ADD A,C + LD C,A + LD A,B + ADC A,0x00 + LD B,A + LD A,(HL) + OR A + JR NZ,PrRangR + PUSH IX + POP HL + SBC HL,BC + EX DE,HL + POP HL + JR NC,PrRngRE + LD A,E + SUB 0x1A + LD IXL,A + LD A,D + SBC A,0x00 + LD IXH,A + LD D,HIGH (FONT_RAW)-0xC0 + LD A,(HL) + EX AF,AF' + INC HL + INC HL +PrRngR0 LD BC,0x0000 + INC HL + LD A,(HL) +PrRngR1 INC HL + LD E,A + LD A,(DE) + ADD A,A + ADD A,C + LD C,A + LD A,B + ADC A,0x00 + LD B,A + LD A,(HL) + CP 0x5C + JR NZ,PrRngR1 + ADD IX,BC + JR NC,PrRngR0 + DEC HL + LD (HL),'.' + DEC HL + LD (HL),'.' + DEC HL + LD (HL),'\\' + DEC HL + LD (HL),':' + DEC HL + EX AF,AF' + LD (HL),A + LD BC,0x0000 + PUSH HL + LD A,(HL) +PrRngR2 INC HL + LD E,A + LD A,(DE) + ADD A,A + ADD A,C + LD C,A + LD A,B + ADC A,0x00 + LD B,A + LD A,(HL) + OR A + JR NZ,PrRngR2 + POP HL +PrRngRE POP AF + SETPORT WINSP.CPU0,,0 + EI + POP DE + EX DE,HL + OR A + SBC HL,BC + EX DE,HL + POP BC + POP AF + JP PrnTxtLnIFF + +;[]----------------------------------------------------------[] +; 楤 뢮 ⥪⮢ ப ᪨ ࠭ 640x256 +; १ ⥪ +; 室: +; IX - - ᥫ 뢮 ப +; HL - ⥪⮢ ப +; DE - 業 뢮 X +; BC - 뢮 Y +; A - 梥 (7-4 PAPER, 3-0 INK) +; ( ப - 0) +PrnRangPathC PUSH BC + PUSH AF + PUSH DE + DI + GETPORT WINSP.CPU0 + PUSH AF + LD A,(RAMPAGES.FNFONT) + SETPORT WINSP.CPU0,,0 +PrnRangC LD BC,0x0000 + LD D,HIGH (FONT_RAW)-0xC0 + PUSH HL + LD A,(HL) +PrRangC INC HL + LD E,A + LD A,(DE) + ADD A,A + ADD A,C + LD C,A + LD A,B + ADC A,0x00 + LD B,A + LD A,(HL) + OR A + JR NZ,PrRangC + PUSH IX + POP HL + SBC HL,BC + EX DE,HL + POP HL + JR NC,PrRngCE + PUSH IX + LD A,E + SUB 0x1A + LD IXL,A + LD A,D + SBC A,0x00 + LD IXH,A + LD A,(HL) + EX AF,AF' + INC HL + INC HL + LD D,HIGH (FONT_RAW)-0xC0 +PrRngC0 LD BC,0x0000 + INC HL + LD A,(HL) +PrRngC1 INC HL + LD E,A + LD A,(DE) + ADD A,A + ADD A,C + LD C,A + LD A,B + ADC A,0x00 + LD B,A + LD A,(HL) + CP 0x5C + JR NZ,PrRngC1 + ADD IX,BC + JR NC,PrRngC0 + DEC HL + LD (HL),'.' + DEC HL + LD (HL),'.' + DEC HL + LD (HL),'\\' + DEC HL + LD (HL),':' + DEC HL + EX AF,AF' + LD (HL),A + POP IX + JR PrnRangC +PrRngCE POP AF + SETPORT WINSP.CPU0,,0 + EI + POP DE + EX DE,HL + SRL B + RR C + OR A + SBC HL,BC + EX DE,HL + POP AF + POP BC + JP PrnTxtLnIFF + +;[]----------------------------------------------------------[] +; 楤 뢮 ⥪⮢ ப ᪨ ࠭ 640x256; +; ० IFF +; 室: +; HL - ⥪⮢ ப +; DE - 뢮 X +; BC - 뢮 Y +; A - 梥 (7-4 PAPER, 3-0 INK) +; ( ப - 0) +PrnTxtLnIFF PUSH IY + LD IYL,C ; Y न + LD B,A + GETPORT WINSP.Y_PORT ; ࠭塞 Y + PUSH AF + GETPORT WINSP.CPU1 + LD IYH,A + DI + EXX + SPMOUSE MOUSEF.REFRESH + EXX + CALL InsPrintColor + PUSH DE ; X न + EXX + POP BC + SRL B + RR C + SET 6,B + LD HL,PrnPAPp ; PAPER + LD DE,PrnINKp ; INK + EXX + LD C,L ; ப + LD B,H +; ⠪: +; BC - A ப +; 'HL - PAPER +; 'DE - INK +; 'BC - X न +; LY - Y न + GETPORT WINSP.CPU0 + PUSH AF + LD A,(RAMPAGES.FNFONT) + SETPORT WINSP.CPU0,,0 + ACCEL ACCELCMD.SET_BUFFER + LD A,0x08 + ACCEL ACCELCMD.OFF + LD A,(BC) + INC BC + OR A + JR Z,PrnIFFe +PrnIFFloop LD L,A + LD H,HIGH (FONT_RAW)-0xC0 + PUSH BC + LD B,(HL) ; ᨬ + INC H + LD E,(HL) + INC H + LD D,(HL) + LD HL,0x0008 + EX DE,HL + SETPORT WINSP.CPU1,0x50 +PrnIFFlp1 + ACCEL ACCELCMD.COPY + LD A,(HL) + ACCEL ACCELCMD.OFF + EXX + LD A,IYL + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.COPY + OR (HL) + EX DE,HL + XOR (HL) + ACCEL ACCELCMD.COPY_VERT + LD (BC),A + ACCEL ACCELCMD.OFF + EX DE,HL + INC BC + EXX + ADD HL,DE + DJNZ PrnIFFlp1 + POP BC + LD A,IYH + SETPORT WINSP.CPU1,,0 + LD A,(BC) + INC BC + OR A + JR NZ,PrnIFFloop +PrnIFFe LD L,C ; ப + LD H,B + POP AF + SETPORT WINSP.CPU0,,0 + EI + POP AF + SETPORT WINSP.Y_PORT,,0 + POP IY + RET + +;[]----------------------------------------------------------[] +; 楤 뢮 ⥪⮢ ப ᪨ ࠭ 640x256; +; 室: +; HL - ⥪⮢ ப +; DE - 뢮 X +; BC - 뢮 Y +; A - 梥 (7-4 PAPER, 3-0 INK) +; ( ப - 0) +PrnTxtLnNorm PUSH IY + LD IYL,C ; Y न + LD B,A + GETPORT WINSP.Y_PORT ; ࠭塞 Y + PUSH AF + GETPORT WINSP.CPU1 + LD IYH,A + DI + EXX + SPMOUSE MOUSEF.REFRESH + EXX + CALL InsPrintColor + PUSH DE ; X न + EXX + POP BC + SRL B + RR C + SET 6,B + LD HL,PrnPAPp ; PAPER + LD DE,PrnINKp ; INK + EXX + LD C,L ; ப + LD B,H +; ⠪: +; BC - A ப +; 'HL - PAPER +; 'DE - INK +; 'BC - X न +; LY - Y न + GETPORT WINSP.CPU0 + PUSH AF + LD A,(RAMPAGES.FNFONT) + SETPORT WINSP.CPU0,,0 + ACCEL ACCELCMD.SET_BUFFER + LD A,0x08 + ACCEL ACCELCMD.OFF + LD A,(BC) + INC BC + OR A + JR Z,PrnNORe +PrnNORloop LD L,A + LD H,HIGH (IFFFONT_RAW)-0xC0 + PUSH BC + LD E,(HL) + INC H + LD A,(HL) + ADD A,HIGH (IFFFONT_RAW)-0xC0 + LD D,A + LD HL,0x0008 + EX DE,HL + SETPORT WINSP.CPU1,0x50 + LD B,0x04 +PrnNORlp1 + ACCEL ACCELCMD.COPY + LD A,(HL) + ACCEL ACCELCMD.OFF + EXX + LD A,IYL + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.COPY + OR (HL) + EX DE,HL + XOR (HL) + ACCEL ACCELCMD.COPY_VERT + LD (BC),A + ACCEL ACCELCMD.OFF + EX DE,HL + INC BC + EXX + ADD HL,DE + DJNZ PrnNORlp1 + POP BC + LD A,IYH + SETPORT WINSP.CPU1,,0 + LD A,(BC) + INC BC + OR A + JR NZ,PrnNORloop +PrnNORe LD L,C ; ப + LD H,B + POP AF + SETPORT WINSP.CPU0,,0 + EI + POP AF + SETPORT WINSP.Y_PORT,,0 + POP IY + RET + +;[]----------------------------------------------------------[] +; 楤 뢮 ⥪⮢ ப ᪨ ࠭ 640x256; +; 室: +; HL - ⥪⮢ ப +; DE - 뢮 X +; C - 뢮 Y +; B - - ⠥ ᨬ +; A - 梥 (7-4 PAPER, 3-0 INK) +; ( ப - 0) +PrnTxtLnNormC PUSH IY + LD IYL,C ; Y न + LD IYH,B ; - ᨬ + LD B,A + GETPORT WINSP.Y_PORT ; ࠭塞 Y + PUSH AF + GETPORT WINSP.CPU1 + PUSH AF + SETPORT WINSP.CPU1,0x50 + DI + EXX + SPMOUSE MOUSEF.REFRESH + EXX + CALL InsPrintColor + PUSH DE ; X न + EXX + POP BC + SRL B + RR C + SET 6,B + LD HL,PrnPAPp ; PAPER + LD DE,PrnINKp ; INK + EXX + LD C,L ; ப + LD B,H +; ⠪: +; BC - A ப +; 'HL - PAPER +; 'DE - INK +; 'BC - X न +; LY - Y न +; IN A,(PAGE0) + GETPORT WINSP.CPU0 + PUSH AF + LD A,(RAMPAGES.FNFONT) + SETPORT WINSP.CPU0,,0 + ACCEL ACCELCMD.SET_BUFFER + LD A,0x08 + ACCEL ACCELCMD.OFF +PrnNORloopC LD A,(BC) + INC BC + LD L,A + LD H,HIGH (IFFFONT_RAW)-0xC0 + PUSH BC + LD E,(HL) + INC H + LD A,(HL) + ADD A,HIGH (IFFFONT_RAW)-0xC0 + LD D,A + LD HL,0x0008 + EX DE,HL + LD B,0x04 +PrnNORlp1c + ACCEL ACCELCMD.COPY + LD A,(HL) + ACCEL ACCELCMD.OFF + EXX + LD A,IYL + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.COPY + OR (HL) + EX DE,HL + XOR (HL) + ACCEL ACCELCMD.COPY_VERT + LD (BC),A + ACCEL ACCELCMD.OFF + EX DE,HL + INC BC + EXX + ADD HL,DE + DJNZ PrnNORlp1c + POP BC + DEC IYH + JR NZ,PrnNORloopC + POP AF + SETPORT WINSP.CPU0,,0 + EI + POP AF + SETPORT WINSP.CPU1,,0 + POP AF + SETPORT WINSP.Y_PORT,,0 + POP IY + RET + +InsPrintColor LD A,B + CP 0x00 +.PrvCOLp EQU $-1 + RET Z + LD (.PrvCOLp),A + AND 0x0F ; INK + LD C,A + RLCA + RLCA + RLCA + RLCA + OR C + EXX + LD HL,PrnINKp ; INK + CPL + REPT 7 + LD (HL),A + INC HL + ENDM + LD (HL),A + EXX + LD A,B + AND 0xF0 ; PAPER + LD B,A + RRCA + RRCA + RRCA + RRCA + OR B + EXX + LD DE,PrnPAPp ; PAPER + XOR (HL) ; XOR INK + REPT 7 + LD (DE),A + INC DE + ENDM + LD (DE),A + EXX + RET + +PrnINKp DB 8 DUP 0 +PrnPAPp DB 8 DUP 0 diff --git a/fnsort.a80 b/fnsort.a80 new file mode 100644 index 0000000..aca2d73 --- /dev/null +++ b/fnsort.a80 @@ -0,0 +1,690 @@ + +; LAST UPDATE: 28.05.2025 savelij + +;[]----------------------------------------------------------[] +ReadDIR BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + IF TREE_REZID + JP NZ,RESIDENT.ReadTree + ELSE + JP NZ,ReadTreeR + ENDIF + 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 + PUSH IY + POP HL + LD BC,PANEL.EFL + ADD HL,BC + LD B,PANEL.FILEMASK - PANEL.EFL +.L5 LD (HL),0 + INC HL + DJNZ .L5 + BIT SORTFLAG.B_FILTER,(IY + PANEL.SORTFLAG) + JR NZ,.L2 + LD HL,NORMmask +.L2 LD DE,FILEmask + LD C,MASK_SIZE + LDIR + LD IX,0x0000 + LD HL,CPU3 + LD (AdrNxtFile),HL + LD B,0x08 + SUB A +.L3 LD (HL),A + INC HL + DJNZ .L3 + CALL FindFILES + LD E,IXL + LD D,IXH + LD HL,(AdrNxtFile) + LD B,0x08 + SUB A +.L4 LD (HL),A + INC HL + DJNZ .L4 + POP AF + SETPORT WINSP.CPU3,,0 + LD (IY + PANEL.EFL),E ;EQUIP FIL + LD (IY + PANEL.EFH),D + LD A,(IY + PANEL.SORTFLAG) + AND SORTFLAG.MASK + JP NZ,SortDIR + RET + +AdrNxtFile DEFW 0x0000 +FileAtribut DB DIR.M_Archive + \ + DIR.M_Dir + \ + DIR.M_System + \ + DIR.M_Hidden + \ + DIR.M_ReadOnly +NORMmask DEFB "*.*" + DB MASK_SIZE - STRLEN("*.*") DUP 0 +FILEmask DB MASK_SIZE DUP 0 + +FindFILES BIT SORTFLAG.B_FILTER,(IY + PANEL.SORTFLAG) + JR NZ,FindFILESm + LD HL,FILEmask + LD DE,WorkBuffer + LD A,(FileAtribut) + PUSH IY + PUSH IX + PUSH DE + SPDSS DSSF.F_FIRST,0 + POP HL + POP IX + POP IY + RET C +FndFILE CALL InsFileInfo + RET C + LD DE,WorkBuffer + PUSH IY + PUSH IX + PUSH DE + SPDSS DSSF.F_NEXT + POP HL + POP IX + POP IY + JR NC,FndFILE + RET + +FindFILESm LD HL,NORMmask + LD DE,WorkBuffer + LD A,(FileAtribut) + AND DIR.M_Archive + \ + DIR.M_Dir + \ + DIR.M_System + \ + DIR.M_Hidden + \ + DIR.M_ReadOnly + PUSH IY + PUSH IX + PUSH DE + SPDSS DSSF.F_FIRST,0 + POP HL + POP IX + POP IY + RET C +FFILEm1 LD A,(WorkBuffer + FFIRST.Attr);+0x20) + AND DIR.M_Dir;0x10 + CALL NZ,InsFileInfo + RET C + LD DE,WorkBuffer + PUSH IY + PUSH IX + PUSH DE + SPDSS DSSF.F_NEXT + POP HL + POP IX + POP IY + JR NC,FFILEm1 + LD HL,FILEmask + LD DE,WorkBuffer + LD A,(FileAtribut) + AND DIR.M_Archive + \ + DIR.M_System + \ + DIR.M_Hidden + \ + DIR.M_ReadOnly + PUSH IY + PUSH IX + PUSH DE + SPDSS DSSF.F_FIRST,0 + POP HL + POP IX + POP IY + RET C +FFILEm2 CALL InsFileInfo + RET C + LD DE,WorkBuffer + PUSH IY + PUSH IX + PUSH DE + SPDSS DSSF.F_NEXT + POP HL + POP IX + POP IY + JR NC,FFILEm2 + RET + +InsFileInfo EX DE,HL + LD HL,(AdrNxtFile) + LD BC,FileHDR.SIZE + ADD HL,BC + SBC HL,BC + EX DE,HL + RET C + SUB A + LD (DE),A + INC DE + PUSH HL + LD BC,FFIRST.Attr;0x20 + ADD HL,BC + LD B,(HL) ; FFIRST.Attr + INC HL + LD A,B + EX AF,AF' + LD A,(HL) ; FFIRST.Name + INC HL + LD C,(HL) ; FFIRST.Name + 1 + DEC HL +; ஢ઠ ४ + CP '.' + JR NZ,InsF1 + LD A,' ' + SUB C + JR NZ,InsF1 +; ய ᫨ "." +InsFext POP HL + OR A + RET + +InsF1 BIT DIR.B_Dir,B ; ४ 䠩? + JR NZ,InsF2 +; 䠩 + OR A + BIT SORTFLAG.B_EXEC,(IY + PANEL.SORTFLAG) + CALL NZ,TestExe + JR C,InsFext + LD B,FileHDR.Name_Size +.L1 LD A,(HL) + CALL CorrBigChar + LD (DE),A + INC HL + INC DE + DJNZ .L1 + LD A,0x01 + LD (DE),A + INC DE + LD B,FileHDR.Ext_Size +.L2 LD A,(HL) + CALL CorrBigChar + LD (DE),A + INC HL + INC DE + DJNZ .L2 + JR InsF3 + +; +InsF2 LD BC,DIR.Name_Size + LDIR + LD A,0x01 + LD (DE),A + INC DE + LD C,DIR.Ext_Size + LDIR +InsF3 SUB A + LD (DE),A + INC DE + EX AF,AF' + LD (DE),A ; DIR.Attr + INC DE + POP HL + PUSH HL + LD BC,DIR.FileSize + ADD HL,BC + LD C,DIR.FileSize_Size + LDIR + POP HL + PUSH HL + LD C,DIR.WrtDate + ADD HL,BC + LD A,(HL) + AND 0x1F ; ᫮ + LD (DE),A + INC DE + LD C,(HL) + INC HL + LD B,(HL) + LD H,B + LD L,C + ADD HL,HL + ADD HL,HL + ADD HL,HL + LD A,H + AND 0x0F ; + LD (DE),A + INC DE + LD A,B + SRL A + ADD A,80 +.L1 SUB 100 + JR NC,.L1 + ADD A,100 ; + LD (DE),A + INC DE + POP HL + LD BC,DIR.WrtTime + ADD HL,BC + LD C,(HL) + INC HL + LD B,(HL) + LD A,B + AND 0xF8 + RRA + RRA + RRA + LD (DE),A ; + INC DE + LD H,B + LD L,C + ADD HL,HL + ADD HL,HL + ADD HL,HL + LD A,H + AND 0x3F + LD (DE),A ; + INC DE + LD (AdrNxtFile),DE + INC IX + RET + +TestExe PUSH HL + LD A,L + ADD A,8 + LD L,A + JR NC,.L1 + INC H +.L1 LD A,(HL) + INC HL + CP 'E' + JR NZ,TestExe1 + LD A,(HL) + INC HL + CP 'X' + JR NZ,TestExe1 + LD A,(HL) + CP 'E' + JR NZ,TestExe1 + POP HL + OR A + RET + +TestExe1 POP HL + PUSH HL + LD A,L + ADD A,8 + LD L,A + JR NC,.L1 + INC H +.L1 LD A,(HL) + INC HL + CP 'T' + JR NZ,TestExeC + LD A,(HL) + INC HL + CP 'R' + JR NZ,TestExeC + LD A,(HL) + CP 'D' + JR NZ,TestExeC + POP HL + OR A + RET + +TestExeC POP HL + SCF + RET + +; 楤 ४樨 㪢 쪮 㪢 +CorrBigChar CP 'A' + RET C + CP 'Z' + 1 + JR NC,CorrCh1 + SET 5,A + RET + +CorrCh1 CP 0x80 + RET C + CP 0xA0 + RET NC + ADD A,0x20 + CP 0xB0 + RET C + ADD A,0x30 + RET + +; 楤 ४樨 㪢 让 㪢 +CorrSmallChar CP 'a' + RET C + CP 'z' + 1 + JR NC,.CorrCh2 + RES 5,A + RET + +.CorrCh2 CP 0xA0 + RET C + CP 0xB0 + JR NC,.CorrCh3 + SUB 0x20 + RET + +.CorrCh3 CP 0xE0 + RET C + SUB 0x50 + RET + +;[]----------------------------------------------------------[] +SortDIR + GETPORT WINSP.CPU1 + LD C,A + GETPORT WINSP.CPU3 + LD B,A + PUSH BC + BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + LD A,(RAMPAGES.LEFTPANEL) + JR Z,.L1 + LD A,(RAMPAGES.RIGHTPANEL) +.L1 + SETPORT WINSP.CPU1,,0 + LD A,(RAMPAGES.BuffPg3) + SETPORT WINSP.CPU3,,0 + LD HL,CPU3 + LD (EndSort),HL + SUB A + LD (HL),A + INC HL + LD (HL),A + LD (BegSort),HL + LD A,(IY + PANEL.SORTFLAG) + RRA + LD HL,SortABC ; ஢ Name CTRL+F3 + JR C,.SortBeg + RRA + LD HL,SortExt ; ஢ Extension CTRL+F4 + JR C,.SortBeg + RRA + LD HL,SortData ; ஢ Date CTRL+F5 + JR C,.SortBeg + LD HL,SortSize ; ஢ Size CTRL+F6 +.SortBeg LD (.Scall1),HL + LD (.Scall2),HL + LD (.Scall3),HL + LD IX,CPU1 + 1 + LD HL,CPU1 + 1 +; ஢ઠ ४ਨ + BIT DIR.B_Dir,(IX + FileHDR.Attr - 1) + JR Z,.SortStart +; ᫨ ४ ஢ઠ ".." + LD A,(HL) + CP '.' + JR NZ,.SortStart + INC HL + LD A,(HL) + DEC HL + CP '.' + JR NZ,.SortStart +; ᨬ ".." + PUSH HL + CALL 0 +.Scall3 EQU $-2 + LD BC,FileHDR.SIZE + LD HL,CPU3 + ADD HL,BC + LD (EndSort),HL + LD (HL),0 + INC HL + LD (HL),0 + LD (BegSort),HL + POP HL + ADD IX,BC + ADD HL,BC +; 砫 ஢ ᥣ ⠫쭮 +.SortStart PUSH IX + PUSH HL +.SortDIRlp1 LD A,(HL) + OR A + JR Z,.SortDIRnxt + BIT DIR.B_Dir,(IX + FileHDR.Attr - 1) + PUSH HL + CALL NZ,0x0000 ; ஢ઠ DIR +.Scall1 EQU $-2 + POP HL + LD BC,FileHDR.SIZE + ADD IX,BC + ADD HL,BC + JR .SortDIRlp1 + +.SortDIRnxt LD HL,(EndSort) + SUB A + LD (HL),A + INC HL + LD (HL),A + LD (BegSort),HL + POP HL + POP IX +.SortDIRlp2 LD A,(HL) + OR A + JR Z,.SortDIRext + BIT DIR.B_Dir,(IX + FileHDR.Attr - 1) + PUSH HL + CALL Z,0x0000 ; ஢ઠ 䠩 +.Scall2 EQU $-2 + POP HL + LD BC,FileHDR.SIZE + ADD IX,BC + ADD HL,BC + JR .SortDIRlp2 + +.SortDIRext LD HL,(EndSort) + LD B,0x08 + SUB A +.L3 LD (HL),A + INC HL + DJNZ .L3 + GETPORT WINSP.CPU1 + LD (RAMPAGES.BuffPg3),A + GETPORT WINSP.CPU3 + BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + LD HL,RAMPAGES.LEFTPANEL + JR Z,.L2 + LD HL,RAMPAGES.RIGHTPANEL +.L2 LD (HL),A + POP BC + LD A,B + SETPORT WINSP.CPU3,,0 + LD A,C + SETPORT WINSP.CPU1,,0 + RET + +BegSort DEFW 0x0000 +EndSort DEFW 0x0000 + +; ஢ Name CTRL+F3 +SortABC EX DE,HL + LD HL,(BegSort) +.Sabc1 LD A,(HL) + OR A + JP Z,SortDIRins + PUSH DE + PUSH HL + LD B,12 +.Sabc2 LD A,(DE) ;(DE) < (HL) "C" + CP (HL) ;(DE) >= (HL) "NC" + JR NZ,.Sabc3 + INC DE + INC HL + DJNZ .Sabc2 +.Sabc3 POP HL + POP DE + JP C,SortDIRins + LD BC,FileHDR.SIZE + ADD HL,BC + JR .Sabc1 + +; ஢ Extension CTRL+F4 +SortExt EX DE,HL + LD HL,(BegSort) +.Sext1 LD A,(HL) + OR A + JP Z,SortDIRins + PUSH DE + PUSH HL + LD BC,0x0009 + ADD HL,BC + EX DE,HL + ADD HL,BC + EX DE,HL + LD B,03 +.Sext2 LD A,(DE) ;(DE) < (HL) "C" + CP (HL) ;(DE) >= (HL) "NC" + JR NZ,.Sext4 + INC DE + INC HL + DJNZ .Sext2 + POP HL + POP DE + PUSH DE + PUSH HL + LD B,8 +.Sext3 LD A,(DE) ;(DE) < (HL) "C" + CP (HL) ;(DE) >= (HL) "NC" + JR NZ,.Sext4 + INC DE + INC HL + DJNZ .Sext3 +.Sext4 POP HL + POP DE + JP C,SortDIRins + LD BC,FileHDR.SIZE + ADD HL,BC + JR .Sext1 + +; ஢ Date CTRL+F5 +SortData EX DE,HL + LD HL,(BegSort) +.Sdata1 LD A,(HL) + OR A + JP Z,SortDIRins + PUSH DE + PUSH HL + LD BC,0x0014 + ADD HL,BC + EX DE,HL + ADD HL,BC + EX DE,HL + LD A,(DE) ;(DE) < (HL) "C" + CP (HL) ;(DE) >= (HL) "NC" + JR NZ,.SdataE + DEC DE + DEC HL + LD A,(DE) ;(DE) < (HL) "C" + CP (HL) ;(DE) >= (HL) "NC" + JR NZ,.SdataE + DEC DE + DEC HL + LD A,(DE) ;(DE) < (HL) "C" + CP (HL) ;(DE) >= (HL) "NC" + JR NZ,.SdataE + INC HL + INC HL + INC HL + INC DE + INC DE + INC DE + LD A,(DE) ;(DE) < (HL) "C" + CP (HL) ;(DE) >= (HL) "NC" + JR NZ,.SdataE + INC DE + INC HL + LD A,(DE) ;(DE) < (HL) "C" + CP (HL) ;(DE) >= (HL) "NC" + JR NZ,.SdataE + POP HL + POP DE + PUSH DE + PUSH HL + LD B,12 +.Sdata2 LD A,(DE) ;(DE) < (HL) "C" + CP (HL) ;(DE) >= (HL) "NC" + JR NZ,.SdataE + INC DE + INC HL + DJNZ .Sdata2 +.SdataE POP HL + POP DE + JR C,SortDIRins + LD BC,FileHDR.SIZE + ADD HL,BC + JR .Sdata1 + +; ஢ Size CTRL+F6 +SortSize EX DE,HL + LD HL,(BegSort) +.Ssize1 LD A,(HL) + OR A + JR Z,SortDIRins + PUSH DE + PUSH HL + LD BC,0x0011 + ADD HL,BC + EX DE,HL + ADD HL,BC + EX DE,HL + LD A,(DE) ;(DE) < (HL) "C" + CP (HL) ;(DE) >= (HL) "NC" + JR NZ,.SsizeE + DEC DE + DEC HL + LD A,(DE) ;(DE) < (HL) "C" + CP (HL) ;(DE) >= (HL) "NC" + JR NZ,.SsizeE + DEC DE + DEC HL + LD A,(DE) ;(DE) < (HL) "C" + CP (HL) ;(DE) >= (HL) "NC" + JR NZ,.SsizeE + DEC DE + DEC HL + LD A,(DE) ;(DE) < (HL) "C" + CP (HL) ;(DE) >= (HL) "NC" + JR NZ,.SsizeE + POP HL + POP DE + PUSH DE + PUSH HL + LD B,12 +.Ssize2 LD A,(DE) ;(DE) < (HL) "C" + CP (HL) ;(DE) >= (HL) "NC" + JR NZ,.SsizeE + INC DE + INC HL + DJNZ .Ssize2 +.SsizeE POP HL + POP DE + JR C,SortDIRins + LD BC,FileHDR.SIZE + ADD HL,BC + JR .Ssize1 + +SortDIRins DEC HL + DEC DE + PUSH DE + PUSH HL + EX DE,HL + LD HL,(EndSort) + PUSH HL + OR A + SBC HL,DE + LD B,H + LD C,L + POP DE + LD HL,FileHDR.SIZE + ADD HL,DE + LD (EndSort),HL + SUB A + LD (HL),A + INC HL + LD (HL),A + DEC HL + EX DE,HL + LD A,B + OR C + CALL NZ,MoveBytesUp + POP DE + POP HL + LD BC,FileHDR.SIZE + LDIR + RET diff --git a/fnsys.a80 b/fnsys.a80 new file mode 100644 index 0000000..1391926 --- /dev/null +++ b/fnsys.a80 @@ -0,0 +1,948 @@ + +; LAST UPDATE: 08.03.2025 savelij + +;[]-----------------------------------------------------------[] +;楤 㬭 (8*8bit) +; 室: E*C +; 室:HL-१ +Mult8 SUB A + LD L,A + LD H,A + LD D,A + CP C + RET Z + CP E + RET Z + LD H,C + LD B,0x08 +.L1 ADD HL,HL + JR NC,.L2 + ADD HL,DE +.L2 DJNZ .L1 + RET + +;楤 㬭 (16*8bit) +; 室: DE*C +; 室:A+HL-१ +Mult16X8 SUB A + LD L,A + LD H,A + CP C + RET Z + OR D + OR E + RET Z + LD A,C + LD BC,8 << 8 +.L1 ADD HL,HL + RLA + JR NC,.L2 + ADD HL,DE + ADC A,C +.L2 DJNZ .L1 + RET + +;楤 㬭 (16*16bit) +; 室: DE*BC +; 室:HL-१ +Mult16 LD HL,0x0000 + LD A,0x10 +.L1 RR B + RR C + JR NC,.L2 + ADD HL,DE +.L2 RL E + RL D + DEC A + JR NZ,.L1 + RET + +;楤 㬭 (32bit) +; 室: DE*BC +; 室:HL+DE-१ +Mult16X16 PUSH IX + EX DE,HL + LD E,0x00 + LD D,E + LD IXL,E + LD IXH,D + LD A,0x20 +.L1 ADD IX,IX + ADC HL,HL + RL E + RL D + JR NC,.L2 + ADD IX,BC + JR NC,.L2 + INC HL +.L2 DEC A + JR NZ,.L1 + LD E,IXL + LD D,IXH + POP IX + RET + +;楤 㬭 (32bit) +; 室: HL+DE*BC +; 室:HL+DE-१ +Mult32 PUSH IX + LD IX,0x0000 + LD A,0x20 + EX DE,HL +.L1 ADD IX,IX + ADC HL,HL + RL E + RL D + JR NC,.L2 + ADD IX,BC + JR NC,.L2 + INC HL +.L2 DEC A + JR NZ,.L1 + LD E,IXL + LD D,IXH + POP IX + RET + +;楤 (16bit) +; 室: BC/DE +; 室:BC-१ +; HL-⮪ +Divis16X16 LD A,D + OR E + RET Z + LD HL,0x0000 + LD A,B + LD B,0x10 +.L1 RL C + RLA + ADC HL,HL + SBC HL,DE + CCF + JR NC,.L4 +.L2 DJNZ .L1 + RL C + RLA + LD B,A + RET +.L3 RL C + RLA + ADC HL,HL + ADD HL,DE + JR C,.L2 +.L4 DJNZ .L3 + RL C + RLA + ADD HL,DE + LD B,A + RET + +;楤 (24x16bit) +; 室: H+L+C/DE +; 室:A -१ +; HL-⮪ +Divis24X16 LD A,D + CPL + LD D,A + LD A,E + CPL + LD E,A + INC DE + LD A,C + LD B,0x08 +.L1 ADD HL,HL + JR C,.L2 + ADD A,A + JR NC,.L4 + INC HL +.L4 PUSH HL + ADD HL,DE + JR NC,.L5 + EX (SP),HL + INC A +.L5 POP HL + DJNZ .L1 + RET +.L2 ADC A,A + JR NC,.L3 + INC HL +.L3 ADD HL,DE + DJNZ .L1 + RET + +;楤 32/16bit=16bit +; 室: HL+DE/BC +; 室:DE-१ +; HL-⮪ +Divis32X16 LD A,0x10 +.L2 EX DE,HL + ADD HL,HL + EX DE,HL + ADC HL,HL + SBC HL,BC + JR NC,.L1 + ADD HL,BC + DEC A + JR NZ,.L2 + RET +.L1 INC DE + DEC A + JR NZ,.L2 + RET + +;楤 32/16bit=32bit +; 室: HL+DE/BC +; 室:HL+DE-१ +; BC-⮪ +Divis32 PUSH IX + LD IXL,E + LD IXH,D + EX DE,HL + LD HL,0x0000 + LD A,0x20 +.L1 ADD IX,IX + RL E + RL D + ADC HL,HL + SBC HL,BC + JR NC,.L2 + DEC IX + ADD HL,BC +.L2 INC IX + DEC A + JR NZ,.L1 + LD C,L + LD B,H + EX DE,HL + LD E,IXL + LD D,IXH + POP IX + RET + +;[]===================================================================[] +; 室: +; A:BC:HL - ᫮ 40 +; DE - +ConvNumTxt40: PUSH IX + LD IX,ConvertFlg + RES 7,(IX+0x00) + PUSH BC + EXX + LD HL,ConNumbExit + LD (ChooseStringFormat.address),HL + POP HL + LD E,0x17 + LD BC,0x4876 + EXX + ld bc,0xE800 + ; 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 + CALL ConNumb40 + exx + ld e,0x00 + ld bc,0x3B9A + exx + ld bc,0xCA00 + ; E':BC':BC = 1,000,000,000 + CALL ConNumb40 + ; E':BC':BC = 100,000,000 + CALL ConvNumTxt32_Shared.skip_1 + POP IX + RET + +;[]-----------------------------------------------------------[] +; ᫠ 32 ⥪ +; 室: +; BC+HL - ᫮ 32 +; DE - +ConvNumTxt32 PUSH IX + LD IX,ConvertFlg + RES 7,(IX+0x00) + PUSH BC + EXX + LD HL,ConNumbExit + LD (ChooseStringFormat.address),HL + POP HL + EXX + call ConvNumTxt32_Shared + POP IX + RET + +ConvNumTxt32_Shared: + LD BC,0xCA00 + EXX + LD BC,0x3B9A ;1'000'000'000 + EXX + CALL ConNumb32 +.skip_1: LD BC,0xE100 + EXX + LD BC,0x05F5 ;100'000'000 + EXX + CALL ConNumb32 + LD BC,0x9680 + EXX + LD BC,0x0098 ;10'000'000 + EXX + CALL ConNumb32 + LD BC,0x4240 + EXX + LD BC,0x000F ;1'000'000 + EXX + CALL ConNumb32 + LD BC,0x86A0 + EXX + LD BC,0x0001 ;100'000 + EXX + CALL ConNumb32 + LD BC,10000 ;10'000 + EXX + LD BC,0x0000 + EXX + CALL ConNumb32 + LD BC,1000 ;1'000 + CALL ConNumb16 + LD BC,100 ;100 + CALL ConNumb16 + LD BC,10 ;10 + CALL ConNumb16 + LD A,L + ADD A,'0' + LD (DE),A + INC DE + RET + +; ᫠ 16 ⥪ +; 室: +; HL - ᫮ 16 +; DE - +ConvNumTxt16 PUSH IX + PUSH BC + LD IX,ConNumbExit + ld (ChooseStringFormat.address),IX + LD IX,ConvertFlg + RES 7,(IX+0x00) + LD BC,10000 ;10'000 + CALL ConNumb16 + LD BC,1000 ;1'000 + CALL ConNumb16 + LD BC,100 ;100 + CALL ConNumb16 + LD BC,10 ;10 + CALL ConNumb16 + LD A,L + ADD A,'0' + LD (DE),A + INC DE + POP BC + POP IX + RET + +; ᫠ 8 ⥪ +; 室: +; A - ᫮ 8 +; DE - +ConvNumTxt8 PUSH IX + PUSH BC + LD IX,ConNumbExit + ld (ChooseStringFormat.address),IX + LD IX,ConvertFlg + RES 7,(IX+0x00) + LD C,100 + CALL ConNumb8 + LD C,10 + CALL ConNumb8 + ADD A,'0' + LD (DE),A + INC DE + POP BC + POP IX + RET + +;----------------------------------------------------------------------; +ConNumb40: exx + ld d,'0'-1 + exx + and a +.loop: sbc hl,bc + exx + sbc hl,bc + sbc a,e + inc d + exx + jp nc,.loop + add hl,bc + exx + adc hl,bc + adc a,e + ex af,af' + ld a,d + exx + JR ConNumb8.exit + +ConNumb32: LD A,'0' - 1 + OR A +.loop: INC A + SBC HL,BC + EXX + SBC HL,BC + EXX + JR NC,.loop + ADD HL,BC + EXX + ADC HL,BC + EXX + JR ChooseStringFormat + +ConNumb16: LD A,'0' - 1 + OR A +.loop: INC A + SBC HL,BC + JR NC,.loop + ADD HL,BC + JR ChooseStringFormat + +ConNumb8: LD B,'0' - 1 +.loop: INC B + SUB C + JR NC,.loop + ADD A,C + EX AF,AF' + LD A,B +.exit: CALL ChooseStringFormat + EX AF,AF' + RET + +ConvertFlg DEFB 0x00 + +ChooseStringFormat: + JP 0x0000 +.address: equ $-2 + +ConNumbExit: CP "0" + JR Z,.skip + SET 7,(IX+0x00) +.skip: BIT 7,(IX+0x00) + RET Z + LD (DE),A + INC DE + RET + +;[]-----------------------------------------------------------[] +; ⥪ ᫮ 32 +; 室: +; DE - ⥪ +; 室: +; HL+IX - ᫮ +; CY - 訡 +ConvTxtNum32 LD IX,0x0000 + LD HL,0x0000 +ConvTN1 LD A,(DE) + CP 0x21 + CCF + RET NC + SUB 0x30 + RET C + CP 0x0A + CCF + RET C + INC DE + ADD IX,IX + ADC HL,HL + RET C + PUSH HL + PUSH IX + ADD IX,IX + ADC HL,HL + RET C + ADD IX,IX + ADC HL,HL + RET C + POP BC + ADD IX,BC + POP BC + ADC HL,BC + RET C + LD C,A + LD B,0x00 + ADD IX,BC + LD C,B + ADC HL,BC + RET C + JR ConvTN1 + +; ⥪ ᫮ 16 +; 室: +; DE - ⥪ +; 室: +; HL - ᫮ +; CY - 訡 +ConvTxtNum16 LD HL,0x0000 +ConvTN2 LD A,(DE) + CP 0x21 + CCF + RET NC + SUB 0x30 + RET C + CP 0x0A + CCF + RET C + INC DE + ADD HL,HL + RET C + PUSH HL + ADD HL,HL + RET C + ADD HL,HL + RET C + POP BC + ADD HL,BC + RET C + LD C,A + LD B,0x00 + ADD HL,BC + RET C + JR ConvTN2 + +;[]-----------------------------------------------------------[] +MoveBytes LD A,B + OR A + JR Z,MvByte1 + DI + ACCEL ACCELCMD.SET_BUFFER + LD A,0x00 +MvByte0 + ACCEL ACCELCMD.COPY + LD A,(HL) + LD (DE),A + ACCEL ACCELCMD.OFF + INC H + INC D + DEC B + JR NZ,MvByte0 + EI +MvByte1 LD A,C + OR A + RET Z + LD (Mvlen1),A + DI + ACCEL ACCELCMD.SET_BUFFER + LD A,0x00 +Mvlen1 EQU $-1 + ACCEL ACCELCMD.COPY + LD A,(HL) + LD (DE),A + ACCEL ACCELCMD.OFF + EI + LD A,C + ADD A,E + LD E,A + JR NC,.L1 + INC D +.L1 LD A,C + ADD A,L + LD L,A + RET NC + INC H + RET + +MoveBytesUp LD A,B + OR A + JR Z,MovUp1 + DI + ACCEL ACCELCMD.SET_BUFFER + LD A,0x00 +MovUp0 DEC H + DEC D + ACCEL ACCELCMD.COPY + LD A,(HL) + LD (DE),A + ACCEL ACCELCMD.OFF + DEC B + JR NZ,MovUp0 + EI +MovUp1 LD A,C + OR A + RET Z + LD (LenUp+1),A + SBC HL,BC + EX DE,HL + SBC HL,BC + EX DE,HL + DI + ACCEL ACCELCMD.SET_BUFFER +LenUp LD A,0x00 + ACCEL ACCELCMD.COPY + LD A,(HL) + LD (DE),A + ACCEL ACCELCMD.OFF + EI + RET + +;[]----------------------------------------------------------[] +Resident LD (ResCall),DE + IN B,(C) + PUSH BC + OUT (C),A + CALL 0x0000 +ResCall EQU $-2 + POP BC + OUT (C),B + RET + +;[]----------------------------------------------------------[] +; ⥭ ப. ப hl ப de. ⮦. +; (hl) -> (de) +ConcatString: ex hl,de +.loop: ld a,(hl) + or a + jr z,.end + inc hl + jr .loop + +.end: ex hl,de ;!!! , +; CopyString, ⮬ ᫨ ⨬ / - - 맮 CopyString! +;[]----------------------------------------------------------[] +; ஢ ப . ⮦. +; (hl) -> (de) +CopyString: ld a,(hl) + ldi + or a + jr nz,CopyString + dec de + ret + +;[]----------------------------------------------------------[] +; ஢ ப ஡. . +; (hl) -> (de) +;!FIXIT ᫨ 㤥 0 ஡ - +CopyWord: ld bc, 0x20FF +.loop: ld a,(hl) + ldi + or a + ret z + cp b + jr nz,.loop + dec de + xor a + ld (de),a + ret + +;[]----------------------------------------------------------[] +; ࠢ ப ⮬ ॣ. +; (ࠧ 稢 㫥) +; 室: de - string1 +; hl - string2 (ࠧ) +; 室: "z" - string1 = string2 +; "c" - string1 < string2 +; - string1 > string2 +;[]----------------------------------------------------------[] +CompareStrings: ld a,(de) + cp (hl) + ret nz + inc hl + inc de + ld a,(hl) + or a + jr nz,CompareStrings ; ࠧ 祭 + ld a,(de) + cp (hl) + ret + +; ᫮ ப +;> hl - ப +;< hl - ப +SkipWord: ld b,0x20 +.loop: ld a,(hl) + inc hl + cp b + jr z,.skipSpace + and a + jr nz,.loop +.end: dec hl + ret + +.skipSpace: ld a,(hl) + cp b + ret nz + inc hl + jr .skipSpace + +;[]----------------------------------------------------------[] +SetCMOSPrint: EX AF,AF' + LD (CMOSposXT),HL + LD (CMOSposYT),DE + LD A,B + LD (CMOSColorT),A + SUB A + LD L,A + LD H,A + LD (CMOSPrint),A + LD (CMOSTime),HL + LD (CMOSTime+2),A + LD (CMOSData),HL + LD (CMOSData+2),A + LD HL,CMOSTimeT + LD DE,CMOSDataT + LD A,'0' + LD B,0x03 +.L1 LD (HL),A + INC HL + LD (HL),A + INC HL + INC HL + LD (DE),A + INC DE + LD (DE),A + INC DE + INC DE + DJNZ .L1 + EX AF,AF' + LD (CMOSOut),A + OR A + JR Z,TestCMOS + EXX + LD (CMOSposXD),HL + LD (CMOSposYD),DE + LD A,B + LD (CMOSColorD),A + EXX + JR TestCMOS + +ResCMOSPrint: LD A,0x01 + LD (CMOSPrint),A + RET + +TestCMOS: LD A,(CMOSFlag) + OR A + RET Z + LD A,(CMOSPrint) + OR A + RET NZ + PUSH IX + HALT + ;!TEST + ;DI + SPDSS DSSF.GETTIME + ;!TEST + ;EI + PUSH DE + PUSH IX + EX DE,HL + LD HL,(CMOSTime) + OR A + SBC HL,DE + JR NZ,PrnCMOSTime + LD A,(CMOSTime+2) + CP B + JR Z,TCMOS1 +PrnCMOSTime: EX DE,HL + LD (CMOSTime),HL + LD A,B + LD (CMOSTime+2),A + LD DE,CMOSTimeT + LD A,H + CALL GetCMOS + INC DE + LD A,L + CALL GetCMOS + INC DE + LD A,(CMOSTime+2) + CALL GetCMOS + LD HL,CMOSTimeT + LD DE,(CMOSposXT) + LD BC,(CMOSposYT) + LD A,(CMOSColorT) + CALL PrnTxtLnIFF +TCMOS1 POP IX + POP DE + LD A,(CMOSOut) + OR A + JP Z,TCMOSex + PUSH IX + POP HL + LD BC,1900 + OR A + SBC HL,BC + LD B,L + LD HL,(CMOSData) + OR A + SBC HL,DE + JR NZ,PrnCMOSData + LD A,(CMOSData+2) + CP B + JP Z,TCMOSex +PrnCMOSData EX DE,HL + LD (CMOSData),HL + LD A,B + LD (CMOSData+2),A + LD DE,CMOSDataT + LD A,H + CALL GetCMOS + INC DE + LD A,L + CALL GetCMOS + INC DE + LD A,(CMOSData+2) + CALL GetCMOS + LD A,(CMOSOut) + DEC A + JR NZ,TCMOS2 + LD HL,CMOSDataT + LD DE,(CMOSposXD) + LD BC,(CMOSposYD) + LD A,(CMOSColorD) + CALL PrnTxtLnIFF + JR TCMOSex + +TCMOS2 LD DE,CMOSDataT1 + LD A,H + CALL ConvNumTxt8 + LD A,' ' + LD (DE),A + INC DE + 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 + JR NC,.L1 + INC H +.L1 LD A,' ' +.L2 LDI + CP (HL) + JR NZ,.L2 + LD (DE),A + INC DE + PUSH IX + POP HL + CALL ConvNumTxt16 + SUB A + LD (DE),A + LD HL,(CMOSposXD) + LD (CMOSclX),HL + LD HL,(CMOSposYD) + LD (CMOSclY),HL + LD A,(CMOSColorD) + AND 0xF0 + RRCA + RRCA + RRCA + RRCA + LD (CMOScol),A + MAKEWINDOW WINSUBOBJ.WOBIND + W_FILL 0,0,76,8,COLORI.BLACK + W_END +CMOSclX EQU $ - 10 +CMOSclY EQU $ - 8 +CMOScol EQU $ - 2 + LD HL,CMOSDataT1 + LD DE,(CMOSposXD) + LD BC,(CMOSposYD) + LD A,(CMOSColorD) + CALL PrnTxtLnIFF +TCMOSex POP IX + RET + +;CMOSPrint: DB 0x01 +CMOSOut: DB 0 +CMOSposXT: DW 0 +CMOSposYT: DW 0 +CMOSColorT: DB 0 +CMOSTime: DB 3 DUP 0 +CMOSTimeT: DB "00:00:00",0 +CMOSposXD: DW 0 +CMOSposYD: DW 0 +CMOSColorD: DB 0 +CMOSData: DB 3 DUP 0 +CMOSDataT: DB "00/00/00",0 +CMOSDataT1: DB 14 DUP ' ' + +GetCMOS: EX DE,HL + LD BC,(('0' - 1) << 8) | 10;0x2F0A +.L1 INC B + SUB C + JR NC,.L1 + ADD A,C + LD (HL),B + INC HL + ADD A,'0' + LD (HL),A + INC HL + EX DE,HL + RET + +Month: DB "Jan " + DB "Febr " + DB "March " + DB "Apr " + DB "May " + DB "June " + DB "July " + DB "Aug " + DB "Sept " + DB "Oct " + DB "Nov " + DB "Dec " + +;[]----------------------------------------------------------[] +SetClock: LD A,(MouseFlag) + OR A + RET Z + PUSH IY + PUSH IX + PUSH HL + PUSH DE + PUSH BC + GETPORT WINSP.CPU3 + PUSH AF + LD A,(RAMPAGES.FNFONT) + SETPORT WINSP.CPU3,,0 + LD IX,CLOCK_BMP;ClockBMP + LD HL,14 << 8 + 9 + LD DE,7 << 8 | 4 + SPMOUSE MOUSEF.LOAD_IMAGE + POP AF + SETPORT WINSP.CPU3,,0 + POP BC + POP DE + POP HL + POP IX + POP IY + HALT + RET + +SetMouse LD A,(MouseFlag) + OR A + RET Z + PUSH IY + PUSH IX + PUSH HL + PUSH DE + PUSH BC + GETPORT WINSP.CPU3 + PUSH AF + LD A,(RAMPAGES.FNFONT) + SETPORT WINSP.CPU3,,0 + LD IX,MOUSE_BMP;MouseBMP + LD HL,13 << 8 + 9 + LD DE,0 + SPMOUSE MOUSEF.LOAD_IMAGE + POP AF + SETPORT WINSP.CPU3,,0 + POP BC + POP DE + POP HL + POP IX + POP IY + HALT + RET diff --git a/fntab.a80 b/fntab.a80 new file mode 100644 index 0000000..2d04d11 --- /dev/null +++ b/fntab.a80 @@ -0,0 +1,369 @@ + +; LAST UPDATE: 02.05.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 ࠡ稪 ⮬ (ࠢ) +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 + DW 174,222, 15, 26,%0000000000000000,0,MenuConfig,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 + 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 + DW 254,634,229,239,%0000000000000000,0,DOSloop,0 + DW 0, 80,242,256,%0000000000000001,0,Help,0 + DW 80,160,242,256,%0000000000000001,0,ViewFile,0 + DW 160,240,242,256,%0000000000000001,0,EditFile,0 + DW 240,320,242,256,%0000000000000001,0,RESIDENT.CopyFiles,0 + DW 320,400,242,256,%0000000000000001,0,RESIDENT.ReName,0 + DW 400,480,242,256,%0000000000000001,0,RESIDENT.MakeDIR,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 + 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 + DW 62, 90, 30, 42,%0000000000000001,0,ChangeDriveL,0 ; C + DW 382,410, 30, 42,%0000000000000001,0,ChangeDriveR,0 + DW 90,118, 30, 42,%0000000000000001,0,ChangeDriveL,0 ; D + DW 410,438, 30, 42,%0000000000000001,0,ChangeDriveR,0 + DW 118,146, 30, 42,%0000000000000001,0,ChangeDriveL,0 ; E + DW 438,466, 30, 42,%0000000000000001,0,ChangeDriveR,0 + DW 146,174, 30, 42,%0000000000000001,0,ChangeDriveL,0 ; F + DW 466,494, 30, 42,%0000000000000001,0,ChangeDriveR,0 + DW 174,202, 30, 42,%0000000000000001,0,ChangeDriveL,0 ; G + DW 494,522, 30, 42,%0000000000000001,0,ChangeDriveR,0 + DW 202,230, 30, 42,%0000000000000001,0,ChangeDriveL,0 ; H + DW 522,550, 30, 42,%0000000000000001,0,ChangeDriveR,0 + DW 230,258, 30, 42,%0000000000000001,0,ChangeDriveL,0 ; I + DW 550,578, 30, 42,%0000000000000001,0,ChangeDriveR,0 + DW 258,286, 30, 42,%0000000000000001,0,ChangeDriveL,0 ; J + DW 578,606, 30, 42,%0000000000000001,0,ChangeDriveR,0 + DW 286,314, 30, 42,%0000000000000001,0,ChangeDriveL,0 ; K + DW 606,634, 30, 42,%0000000000000001,0,ChangeDriveR,0 + DW 0x8000 + +;[]==========================================================[] +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 + DW 174,222, 15, 26,%0000000000000000,0,MenuConfig,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 + 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 + DW 254,634,229,239,%0000000000000000,0,DOSloop,0 + DW 0, 80,242,256,%0000000000000001,0,Help,0 + DW 80,160,242,256,%0000000000000001,0,ViewFile,0 + DW 160,240,242,256,%0000000000000001,0,EditFile,0 + DW 240,320,242,256,%0000000000000001,0,RESIDENT.CopyFiles,0 + DW 320,400,242,256,%0000000000000001,0,RESIDENT.ReName,0 + DW 400,480,242,256,%0000000000000001,0,RESIDENT.MakeDIR,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 + 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 + DW 62, 90, 30, 42,%0000000000000001,0,ChangeDriveL,0 ; C + DW 382,410, 30, 42,%0000000000000001,0,ChangeDriveR,0 + DW 90,118, 30, 42,%0000000000000001,0,ChangeDriveL,0 ; D + DW 410,438, 30, 42,%0000000000000001,0,ChangeDriveR,0;0x0800 + DW 118,146, 30, 42,%0000000000000001,0,ChangeDriveL,0 ; E + DW 438,466, 30, 42,%0000000000000001,0,ChangeDriveR,0 + DW 146,174, 30, 42,%0000000000000001,0,ChangeDriveL,0 ; F + DW 466,494, 30, 42,%0000000000000001,0,ChangeDriveR,0 + DW 174,202, 30, 42,%0000000000000001,0,ChangeDriveL,0 ; G + DW 494,522, 30, 42,%0000000000000001,0,ChangeDriveR,0 + DW 202,230, 30, 42,%0000000000000001,0,ChangeDriveL,0 ; H + DW 522,550, 30, 42,%0000000000000001,0,ChangeDriveR,0 + DW 230,258, 30, 42,%0000000000000001,0,ChangeDriveL,0 ; I + DW 550,578, 30, 42,%0000000000000001,0,ChangeDriveR,0 + DW 258,286, 30, 42,%0000000000000001,0,ChangeDriveL,0 ; J + DW 578,606, 30, 42,%0000000000000001,0,ChangeDriveR,0 + DW 286,314, 30, 42,%0000000000000001,0,ChangeDriveL,0 ; K + DW 606,634, 30, 42,%0000000000000001,0,ChangeDriveR,0 + DW 0x8000 + +;[]==========================================================[] +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 + DW 40, 84, 15, 26,%0000000010010000,MenuSelect.L2,0,0 + DW 84,138, 15, 26,%0000000010010000,MenuOption.L2,0,0 + DW 138,174, 15, 26,%0000000010010000,MenuView.L8,0,0 + DW 174,222, 15, 26,%0000000010010000,MenuConfig.L2,0,0 + DW 222,262, 15, 26,%0000000010010000,MenuAbout.L2,0,0 + DW 0,640, 0, 26,%0000000100100000,0,MenuExit,0 + DW 0,640, 80,256,%0000000100100000,0,MenuExit,0 + DW 0, 4, 0,256,%0000000100100000,0,MenuExit,0 + DW 164,640, 0,256,%0000000100100000,0,MenuExit,0 + DW 0x8000 + +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 + DW 44,196, 85, 99,%0000000100100100,0,RESIDENT.InvertSelectN,0 + DW 6, 40, 15, 26,%0000000010010000,MenuFile.L2,0,0 + DW 40, 84, 15, 26,%0000000100101000,0,MenuExit,0 + DW 84,138, 15, 26,%0000000010010000,MenuOption.L2,0,0 + DW 138,174, 15, 26,%0000000010010000,MenuView.L8,0,0 + DW 174,222, 15, 26,%0000000010010000,MenuConfig.L2,0,0 + DW 222,262, 15, 26,%0000000010010000,MenuAbout.L2,0,0 + DW 0,640, 0, 26,%0000000100100000,0,MenuExit,0 + DW 0,640,102,256,%0000000100100000,0,MenuExit,0 + DW 0, 40, 0,256,%0000000100100000,0,MenuExit,0 + DW 200,640, 0,256,%0000000100100000,0,MenuExit,0 + DW 0x8000 + +; "Options" +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 + DW 88,288, 77, 91,%0000000100100100,0,GetPlugins,0 ; Options->Plugins + ENDIF + DW 6, 40, 15, 26,%0000000010010000,MenuFile.L2,0,0 ; File + DW 40, 84, 15, 26,%0000000010010000,MenuSelect.L2,0,0 ; Select + DW 84,138, 15, 26,%0000000100101000,0,MenuExit,0 ; + DW 138,174, 15, 26,%0000000010010000,MenuView.L8,0,0 ; View + DW 174,222, 15, 26,%0000000010010000,MenuConfig.L2,0,0 ; Config + DW 222,262, 15, 26,%0000000010010000,MenuAbout.L2,0,0 ; About + DW 0,640, 0, 26,%0000000100100000,0,MenuExit,0 + DW 0,640, 80,256,%0000000100100000,0,MenuExit,0 + DW 0, 84, 0,256,%0000000100100000,0,MenuExit,0 + DW 292,640, 0,256,%0000000100100000,0,MenuExit,0 + DW 0x8000 + +; "View" +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 + DW 142,324, 91,105,%0000000100100100,0,ChFilt2,0 + DW 142,324,105,119,%0000000100100100,0,ChFilt3,0 + DW 142,324,119,133,%0000000100100100,0,NewFilter.L1,0 + DW 142,324,139,153,%0000000100100100,0,ChSort1,0 + DW 142,324,153,167,%0000000100100100,0,ChSort2,0 + DW 142,324,167,181,%0000000100100100,0,ChSort3,0 + DW 142,324,181,195,%0000000100100100,0,ChSort4,0 + DW 142,324,195,209,%0000000100100100,0,ChSort5,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 + DW 138,174, 15, 26,%0000000100101000,0,MenuExit,0 + DW 174,222, 15, 26,%0000000010010000,MenuConfig.L2,0,0 + DW 222,262, 15, 26,%0000000010010000,MenuAbout.L2,0,0 + DW 0,640, 0, 26,%0000000101100000,0,MenuExit,0 + DW 0,640,184,256,%0000000101100000,0,MenuExit,0 + DW 0,138, 0,256,%0000000101100000,0,MenuExit,0 + DW 330,640, 0,256,%0000000101100000,0,MenuExit,0 + DW 0x8000 + +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 + DW 138,174, 15, 26,%0000000010010000,MenuView.L8,0,0 + DW 174,222, 15, 26,%0000000100101000,0,MenuExit,0 + DW 222,262, 15, 26,%0000000010010000,MenuAbout.L2,0,0 + DW 0,640, 0, 26,%0000000100100000,0,MenuExit,0 + DW 0,640, 46,256,%0000000100100000,0,MenuExit,0 + DW 0,174, 0,256,%0000000100100000,0,MenuExit,0 + DW 270,640, 0,256,%0000000100100000,0,MenuExit,0 + DW 0x8000 + +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 + DW 138,174, 15, 26,%0000000010010000,MenuView.L8,0,0 + DW 174,222, 15, 26,%0000000010010000,MenuConfig.L2,0,0 + DW 222,262, 15, 26,%0000000100101000,0,MenuExit,0 + DW 0,640, 0, 26,%0000000100100000,0,MenuExit,0 + DW 0,640, 46,256,%0000000100100000,0,MenuExit,0 + DW 0,222, 0,256,%0000000100100000,0,MenuExit,0 + DW 334,640, 0,256,%0000000100100000,0,MenuExit,0 + DW 0x8000 + +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 + DW 174,222, 15, 26,%0000000000100000,0,MConfig,0 + DW 222,262, 15, 26,%0000000000100000,0,MAbout,0 + DW 0,640, 0, 15,%0000000000100000,0,PullExit.L1,0 + DW 0,640, 26,256,%0000000000100000,0,PullExit.L1,0 + DW 0, 6, 0,256,%0000000000100000,0,PullExit.L1,0 + DW 222,640, 0,256,%0000000000100000,0,PullExit.L1,0 + DW 0x8000 + +;[]==========================================================[] +FilterTab DW 240,312,123,137,%0000000000000001,0,InputLine.InpLnExtN,0 + DW 328,400,123,137,%0000000000000001,0,InputLine.InpLnExtC,0 + DW 0,208, 0,256,%0000000000000000,0,InputLine.InpLnExtC,0 + DW 432,640, 0,256,%0000000000000000,0,InputLine.InpLnExtC,0 + DW 0,640, 0, 81,%0000000000000000,0,InputLine.InpLnExtC,0 + DW 0,640,143,256,%0000000000000000,0,InputLine.InpLnExtC,0 + DW 0x8000 + +SMaskTab DW 240,312,123,137,%0000000000000001,0,InputLine.InpLnExtN,0 + DW 328,400,123,137,%0000000000000001,0,InputLine.InpLnExtC,0 + DW 0,208, 0,256,%0000000000000000,0,InputLine.InpLnExtC,0 + DW 432,640, 0,256,%0000000000000000,0,InputLine.InpLnExtC,0 + DW 0,640, 0, 81,%0000000000000000,0,InputLine.InpLnExtC,0 + DW 0,640,143,256,%0000000000000000,0,InputLine.InpLnExtC,0 + DW 0x8000 + +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.InpLnExtN,0 + DW 328,400,123,137,%0000000000000001,0,InputLine.InpLnExtC,0 + DW 0,200, 0,256,%0000000000000000,0,InputLine.InpLnExtC,0 + DW 440,640, 0,256,%0000000000000000,0,InputLine.InpLnExtC,0 + DW 0,640, 0, 81,%0000000000000000,0,InputLine.InpLnExtC,0 + DW 0,640,143,256,%0000000000000000,0,InputLine.InpLnExtC,0 + DW 0x8000 + +;[]==========================================================[] +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 + 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 + 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 + DW 0, 0,110,121,%0000000000100000,0,DriveMouse,0 + DW 0, 0,110,121,%0000000000100000,0,DriveMouse,0 + DW 0x8000 + + IF PLUGS_ENABLE +; 롮 +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 + DW 4, 53,100, 10,%0000000000000000,0,SelectPlugin.NUM04,0 + DW 4, 63,100, 10,%0000000000000000,0,SelectPlugin.NUM05,0 + DW 4, 73,100, 10,%0000000000000000,0,SelectPlugin.NUM06,0 + DW 4, 83,100, 10,%0000000000000000,0,SelectPlugin.NUM07,0 + DW 4, 93,100, 10,%0000000000000000,0,SelectPlugin.NUM08,0 + DW 4,103,100, 10,%0000000000000000,0,SelectPlugin.NUM09,0 + DW 4,113,100, 10,%0000000000000000,0,SelectPlugin.NUM10,0 + DW 30,176, 72, 14,%0000000000000000,0,SelectPlugin.CANCEL,0 + DW 0x8000 + ENDIF + +;[]==========================================================[] +;ଠ ⠡ +; +00 2 ASCII + SCANCOD +; +02 2 Execute program +HOTKEYS +.ASCIIKeys DW SC.TAB << 8 | 0x09, ChPanel + DW SC.X8 << 8, CursUp + DW SC.X2 << 8, CursDown + DW SC.X4 << 8, CursLeft + DW SC.X6 << 8, CursRight + DW SC.X9 << 8, PageUp + DW SC.X3 << 8, PageDown + DW SC.X7 << 8, Home + DW SC.X1 << 8, End + DW SC.F9 << 8, PullDown + DW SC.XDOTZAP << 8 | '+', RESIDENT.MarkGroup + DW SC.XMINUS << 8 | '-', RESIDENT.UnMarkGroup + DW SC.XMUL << 8 | '*', RESIDENT.InvertSelect + DW SC.X0 << 8, RESIDENT.MarkFile + DW SC.F1 << 8, Help + DW SC.F3 << 8, ViewFile + DW SC.F4 << 8, EditFile + DW SC.F5 << 8, RESIDENT.CopyFiles + DW SC.F6 << 8, RESIDENT.ReName + DW SC.F7 << 8, RESIDENT.MakeDIR + DW SC.F8 << 8, RESIDENT.DeleteFiles + DW SC.F10 << 8, RESIDENT.Quit + DB 0xFF + +.SHIFTKeys DW SC.F3 << 8, ViewFileSH + DW SC.F4 << 8, EditFileSH + DB 0xFF + +.CTRLKeys DW SC.F9 << 8, RESIDENT.PrintFile + DW SC.XDOTZAP << 8, RESIDENT.SelectAll + DW SC.XMINUS << 8, RESIDENT.UnSelectAll + DW SC.L << 8, RESIDENT.DiskInfo + DW SC.F1 << 8, Brief + DW SC.F2 << 8, Full + DW SC.F8 << 8, Tree + DW SC.F10 << 8, AllFiles + DW SC.F11 << 8, ExeFiles + DW SC.F12 << 8, NewFilter + DW SC.F3 << 8, NameS + DW SC.F4 << 8, Extention + DW SC.F5 << 8, Data + DW SC.F6 << 8, Size + DW SC.F7 << 8, UnSort + DW SC.U << 8, ReplacePanels + DW SC.O << 8, ShowDOSscreen + DW SC.BSLASH << 8, BegDIRECTORY + DB 0xFF + +.ALTKeys DW SC.ESC << 8, MouseOnOff + DW SC.ENTER << 8, RESIDENT.FileInfo + DW SC.F1 << 8, LeftDrive + DW SC.F2 << 8, RightDrive + DW SC.F3 << 8, StViewFile + DW SC.F4 << 8, StEditFile + DW SC.F10 << 8, RefreshTree + DB 0xFF diff --git a/fntree.a80 b/fntree.a80 new file mode 100644 index 0000000..0928f61 --- /dev/null +++ b/fntree.a80 @@ -0,0 +1,734 @@ + +; LAST UPDATE: 28.05.2025 savelij + +MAX_LEVEL_DIR EQU 21 + +;[]----------------------------------------------------------[] +ReadTreeR PUSH IY + POP HL + LD BC,PANEL.EFL + ADD HL,BC + LD B,PANEL.FILEMASK - PANEL.EFL +.LL1 LD (HL),0 + INC HL + DJNZ .LL1 + LD HL,BegDIR + PUSH IY + SPDSS DSSF.CHDIR + POP IY + LD HL,TreeName + PUSH IY + SPDSS DSSF.OPEN,,0 + POP IY + JP NC,LoadTreeR +; 䠩 ॢ ⠫ , ᪠㥬 ᮧ +.ScanTree + GETPORT WINSP.CPU1 + LD C,A + GETPORT WINSP.CPU3 + LD B,A + PUSH BC + LD A,(RAMPAGES.BuffPg3) + SETPORT WINSP.CPU1,,0 + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + LD A,(RAMPAGES.LEFTPANEL) + JR Z,.L1 + LD A,(RAMPAGES.RIGHTPANEL) +.L1 + SETPORT WINSP.CPU3,,0 + PUSH IY + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 240,96,160,40 + W_FILL 4,2,152,10,COLORI.BLACK + W_TEXT 44,3,COLORI.WHITE,"Scanning tree" + W_TEXT 32,20,COLORP.HIGHGRAY,"Directories:" + W_END + LD (.TreeSP1),SP + SUB A + LD (CurTree),A + LD SP,STACKTREE + LD HL,0 + PUSH HL + LD (LoadItemDIRR.CurTAdr),HL + LD HL,CPU3 + TreeHead_Size + LD (EndTree),HL + LD B,0x10 + SUB A +.L2 LD (HL),A + INC HL + DJNZ .L2 + LD HL,1 + LD (TreeDIRS),HL + CALL LoadItemDIRR + JR NC,.TreeExit ; NC - ४਩ +.TreeLoop PUSH HL + SPDSS DSSF.SCANKEY + LD A,E + SUB 0x1B + POP HL + JP Z,AbortTree + LD A,(CurTree) + INC A + CP MAX_LEVEL_DIR + JR Z,.DIRSend + LD (CurTree),A + LD DE,(TreeDIRS) + BIT 2,D ; DE >= 1024 + JR NZ,.TreeExit + PUSH HL + LD A,(HL) + OR A + JR Z,.DIRSend + LD (LoadItemDIRR.CurTAdr),HL + SPDSS DSSF.CHDIR + CALL LoadItemDIRR + JR C,.TreeLoop ; C - ४ਨ +.DIRSend + SPDSS DSSF.SCANKEY + LD A,E + SUB 0x1B + JP Z,AbortTree + POP HL + LD A,H + OR L + JR Z,.TreeExit + PUSH HL + LD HL,CurTree + DEC (HL) + LD HL,UpDIR + SPDSS DSSF.CHDIR + POP HL + LD DE,0x000F + ADD HL,DE + LD A,(HL) + INC HL + INC A + JR NZ,.TreeLoop + JR .DIRSend + +.TreeExit + SETPORT WINSP.Y_PORT,0xC0 + LD SP,STACKTREE + LD IX,0 + PUSH IX + LD HL,CPU1 + LD DE,TreeHead + LD BC,TreeHead_Size + EX DE,HL + LDIR ; ᫨ ॢ ⠫ FN + LD HL,(TreeDIRS) + DEC HL + LD A,H + OR L + JR Z,.TreeExit1 + LD HL,CPU3 + TreeHead_Size +.TreeEndLp INC IXL + PUSH HL + PUSH DE + LD A,IXL + CP IXH + JR C,.L3 + LD IXH,A +.L3 LD (DE),A + INC DE + SUB A + LD (DE),A + INC DE + LD BC,0x000C + LDIR + LD (DE),A + INC DE + LD (DE),A + INC DE + INC HL + LD C,(HL) + INC HL + LD B,(HL) + INC HL + LD A,(HL) + AND 0x80 + POP HL + OR (HL) + LD (HL),A + LD L,C + LD H,B + LD A,H + OR L + JR NZ,.TreeEndLp +.TreeEndLp1 DEC IXL + POP HL + LD A,H + OR L + JR Z,.TreeExit1 + LD BC,0x000F + ADD HL,BC + LD A,(HL) + INC HL + INC A + JR NZ,.TreeEndLp + JR .TreeEndLp1 + +.TreeExit1 LD (EndTree),DE + DEC DE + LD A,0xFF + LD (DE),A + LD SP,0 +.TreeSP1 EQU $-2 + POP IY + RES VIEWFLAG.B_SHORTTREE,(IY+PANEL.VIEWFLAG) + LD A,IXH + CP 0x0B + JR C,.L4 + SET VIEWFLAG.B_SHORTTREE,(IY+PANEL.VIEWFLAG) +.L4 + GETPORT WINSP.CPU3 + LD (RAMPAGES.BuffPg3),A + GETPORT WINSP.CPU1 + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + LD HL,RAMPAGES.LEFTPANEL + JR Z,.L5 + LD HL,RAMPAGES.RIGHTPANEL +.L5 LD (HL),A + WINDOWCLOSE + POP BC + LD A,B + SETPORT WINSP.CPU3,,0 + LD A,C + SETPORT WINSP.CPU1,,0 + LD HL,(TreeDIRS) + LD (IY+PANEL.EFL),L ; EQUIP FIL + LD (IY+PANEL.EFH),H + PUSH IY + GETPORT WINSP.CPU3 + PUSH AF + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + LD A,(RAMPAGES.LEFTPANEL) + JR Z,.L6 + LD A,(RAMPAGES.RIGHTPANEL) +.L6 + SETPORT WINSP.CPU3,,0 + LD HL,BegDIR + SPDSS DSSF.CHDIR + LD HL,TreeName + SPDSS DSSF.CREATE,,0 + JR C,.TreeErr + PUSH AF + LD HL,CPU3 + LD DE,(EndTree) + RES 6,D + SPDSS DSSF.WRITE + POP AF + SPDSS DSSF.CLOSE +.TreeErr LD A,1 + LD (CPU3 + 1),A + POP AF + SETPORT WINSP.CPU3,,0 + POP IY + JP LoadTreeR.TreeOkey + +; 㧪 ॢ ⠫ 䠩 +LoadTreeR EX AF,AF' + PUSH IY + 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 + EX AF,AF' + PUSH AF + LD HL,CPU3 + LD DE,0x4000 + SPDSS DSSF.READ + EX AF,AF' + LD HL,CPU3 + LD DE,WorkBuffer + LD BC,0x0010 + LDIR + POP AF + SPDSS DSSF.CLOSE + POP AF + SETPORT WINSP.CPU3,,0 + POP IY + EX AF,AF' + JP C,ReadTreeR.ScanTree ; Error + LD HL,WorkBuffer + 2 + LD DE,TreeHead + 2 + LD B,TreeHead_Size - 3 +.L2 LD A,(DE) + CP (HL) + JP NZ,ReadTreeR.ScanTree ; Error + INC HL + INC DE + DJNZ .L2 + GETPORT WINSP.CPU3 + PUSH AF + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + LD A,(RAMPAGES.LEFTPANEL) + JR Z,.L3 + LD A,(RAMPAGES.RIGHTPANEL) +.L3 + SETPORT WINSP.CPU3,,0 + LD HL,CPU3 + LD DE,0x000E + LD BC,0 + LD IXH,0 +.LoadTr1 LD A,(HL) + AND 0x7F + CP IXH + JR C,.L4 + LD IXH,A +.L4 INC HL + LD (HL),0 + INC BC + ADD HL,DE + LD A,(HL) + INC HL + INC A + JR NZ,.LoadTr1 + RES VIEWFLAG.B_SHORTTREE,(IY+PANEL.VIEWFLAG) + LD A,IXH + CP 0x0B + JR C,.L5 + SET VIEWFLAG.B_SHORTTREE,(IY+PANEL.VIEWFLAG) +.L5 LD (IY+PANEL.EFL),C ; EQUIP FILES + LD (IY+PANEL.EFH),B + BIT PANELFLAG.B_PRNDOSPATH,(IY+PANEL.PANELFLAG) + LD A,1 + JR NZ,.L6 + LD A,3 +.L6 LD (CPU3 + 1),A + POP AF + SETPORT WINSP.CPU3,,0 +.TreeOkey PUSH IY + POP HL + LD DE,PANEL.CURRPATH + ADD HL,DE + INC HL + INC HL + JP FindTreeDIRR + +AbortTree LD SP,(ReadTreeR.TreeSP1) + POP IY + POP BC + LD A,B + SETPORT WINSP.CPU3,,0 + LD A,C + SETPORT WINSP.CPU1,,0 + RES VIEWFLAG.B_SHORTTREE,(IY+PANEL.VIEWFLAG) + RES VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + WINDOWCLOSE + LD HL,InitPanels + EX (SP),HL + SUB A + RET + +TreeName DZ FILENAME.FNTREE_FLN +TreeHead DB 0,0,0x5C,0,0,0,0xAE,"FlexTree",0 +TreeHead_Size EQU $ - TreeHead +BegDIR DB 0x5C,0 +UpDIR DB "..",0 +CurTree DB 0 +TreeDIRS DW 0 ; ⢮ +EndTree DW 0 ; ⥪騩 ⠡ ४਩ + +; ⥭ ⥫ ४਩ +LoadItemDIRR: LD DE,(EndTree) + PUSH DE + LD IX,0 + LD HL,NORMmask + LD DE,WorkBuffer + LD A,(FileAtribut) + AND DIR.M_Archive + \ + DIR.M_Dir + \ + DIR.M_System + \ + DIR.M_Hidden + \ + DIR.M_ReadOnly + PUSH IX + PUSH DE + SPDSS DSSF.F_FIRST,1 + POP HL + POP IX + JR C,.FndFLtrE ; 祣 ? 室 +.FndFLtr LD A,(WorkBuffer + 0x20) + AND DIR.M_Dir ; ? + CALL NZ,.ADD_DIR ; ᫨ 塞 + JR C,.FndFLtrE ; 訡 ? 室 +; ⠥ ᫥騩 ⥫ + LD DE,WorkBuffer + PUSH IX + PUSH DE + SPDSS DSSF.F_NEXT + POP HL + POP IX + JR NC,.FndFLtr +; 襭 ᮧ ॢ +.FndFLtrE LD HL,(EndTree) + DEC HL + LD (HL),0xFF + LD C,IXL + LD B,IXH + LD HL,(TreeDIRS) + ADD HL,BC + LD (TreeDIRS),HL + POP HL + LD A,B + OR C + RET Z + PUSH HL + CALL .PRT_NUM_DIR ; 塞 ⢮ + POP HL + LD DE,0 +.CurTAdr EQU $-2 + LD A,D + OR E + SCF + RET Z + EX DE,HL + LD BC,0x000D + ADD HL,BC + LD (HL),E + INC HL + LD (HL),D + EX DE,HL + SCF + RET + +; ᥭ ⠡ ४ਨ +.ADD_DIR EX DE,HL + LD HL,(EndTree) + LD BC,0x0010 + ADD HL,BC + SBC HL,BC + EX DE,HL + RET C + LD BC,FFIRST.Name + ADD HL,BC + LD A,(HL) + CP '.' ; ᨬ 窠? + RET Z + LD C,0x10 ; ⠡ + SUB A +; ७ 0 +.L1 LDI + CP (HL) + JR NZ,.L1 + LD B,C +; ⮪ 塞 㫥 +.L2 LD (DE),A + INC DE + DJNZ .L2 + LD (EndTree),DE + INC IX + RET + +; ᫠ ⢠ ४਩ ॢ +.PRT_NUM_DIR LD HL,(TreeDIRS) + DEC HL + LD DE,.CurDNumb + PUSH DE + LD B,4 + LD A,' ' +.L3 LD (DE),A + INC DE + DJNZ .L3 + POP DE + EXX + LD C,0 + EXX + LD BC,1000 ; 1'000 + CALL .GetN16 + LD BC,100 ; 100 + CALL .GetN16 + LD BC,10 ; 10 + CALL .GetN16 + LD A,L + ADD A,'0' + LD (DE),A + LD HL,.CurDNumb + LD DE,336 ; X pos + LD BC,116 ; Y pos + LD A,COLORP.HIGHGRAY + JP PrnTxtLnIFF + +.GetN16 LD A,'0' - 1 + OR A +.L4 INC A + SBC HL,BC + JR NC,.L4 + ADD HL,BC + CP '0' + JR Z,.L5 + EXX + SET 0,C + EXX +.L5 EXX + BIT 0,C + EXX + RET Z + LD (DE),A + INC DE + RET + +.CurDNumb DEFB " ",0 + +;[]=========================================================[] +TestTreeR BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + RET Z + LD B,0x28 +.TstTree PUSH BC + SPMOUSE MOUSEF.READ_STATE + POP BC + OR A + RET NZ + PUSH BC + SPDSS DSSF.TESTKEY + POP BC + RET NZ + HALT + DJNZ .TstTree + IFNDEF TREE_DIR_ENTER + LD A,E + CP 0x0D ; ᬥ ४ਨ ॢ ⮫쪮 ENTER + RET NZ + ENDIF +.TestTreeBeg + GETPORT WINSP.CPU1 + PUSH AF + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + LD A,(RAMPAGES.LEFTPANEL) + JR Z,.L14 + LD A,(RAMPAGES.RIGHTPANEL) +.L14 + SETPORT WINSP.CPU1,,0 + SETPORT WINSP.Y_PORT,0xC0 + LD L,(IY+PANEL.FFL) + LD H,(IY+PANEL.FFH) + LD E,(IY+PANEL.CFL) + LD D,(IY+PANEL.CFH) + ADD HL,DE + ADD HL,HL + ADD HL,HL + ADD HL,HL + ADD HL,HL + SET 6,H + INC HL + BIT 0,(HL) + JR NZ,.L2 + EX DE,HL + LD HL,CPU1 + LD BC,0x000E +.L1 INC HL + RES 0,(HL) + ADD HL,BC + LD A,(HL) + INC HL + INC A + JR NZ,.L1 + EX DE,HL + SET 0,(HL) + CALL PrintDIR + CALL SetInvert + CALL MakeTreePathR + PUSH IY + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + LD IY,RightPanel + JR Z,.L3 + LD IY,LeftPanel +.L3 CALL NewDIRECTORY + POP IY +.L2 POP AF + SETPORT WINSP.CPU1,,0 + RET + +;[]==========================================================[] +MakeTreePathR + GETPORT WINSP.CPU1 + PUSH AF + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + LD A,(RAMPAGES.LEFTPANEL) + JR Z,.L5 + LD A,(RAMPAGES.RIGHTPANEL) +.L5 + SETPORT WINSP.CPU1,,0 + LD L,(IY+PANEL.FFL) + LD H,(IY+PANEL.FFH) + LD E,(IY+PANEL.CFL) + LD D,(IY+PANEL.CFH) + ADD HL,DE + ADD HL,HL + ADD HL,HL + ADD HL,HL + ADD HL,HL + SET 6,H + LD DE,WorkBuffer+0xFF + LD BC,0x0010 + SUB A + LD (DE),A + DEC DE + LD A,(HL) + OR A + JR Z,.L4 + AND 0x7F + INC A + LD IXL,A + ADD HL,BC + INC DE +.L3 SBC HL,BC + PUSH HL + LD A,(HL) + INC HL + AND 0x7F + CP IXL + JR NC,.L2 + LD IXL,A + LD B,0xFF + SUB A +.L6 INC B + INC HL + CP (HL) + JR NZ,.L6 +.L1 DEC HL + DEC DE + LD A,(HL) + LD (DE),A + DJNZ .L1 + DEC DE + LD A,'\\' + LD (DE),A +.L2 POP HL + LD A,(HL) + AND 0x7F + CP 2 + JR NC,.L3 +.L4 EX DE,HL + LD (HL),'\\' + POP AF + SETPORT WINSP.CPU1,,0 + RET + +;[]==========================================================[] +FindTreeDIRR + GETPORT WINSP.CPU1 + PUSH AF + SETPORT WINSP.Y_PORT,0xC0 + LD IX,LeftPanel + BIT VIEWFLAG.B_TREE,(IX+PANEL.VIEWFLAG) + LD A,(RAMPAGES.LEFTPANEL) + JR NZ,.L14 + LD A,(RAMPAGES.RIGHTPANEL) +.L14 + SETPORT WINSP.CPU1,,0 + LD DE,CPU1 + LD BC,0 +.L1 LD A,(DE) + AND 0x7F + LD IXL,A +.L2 PUSH HL + PUSH DE + LD A,(DE) + AND 0x7F + CP IXL + JR NZ,.L4 + INC DE + INC DE +.L3 LD A,(DE) + CP (HL) + JR NZ,.L4 + INC HL + INC DE + LD A,(DE) + OR A + JR Z,.L6 + LD A,(HL) + CP '\\' + JR NZ,.L3 +.L4 POP HL + LD DE,0x000F + ADD HL,DE + EX DE,HL + POP HL + INC BC + LD A,(DE) + INC DE + INC A + JR NZ,.L2 +.L5 POP AF + SETPORT WINSP.CPU1,,0 + SCF + RET + +.L6 LD A,IXL + OR A + JR Z,.L7 + LD A,(HL) + INC HL + CP '\\' + JR Z,.L7 + DEC HL + OR A + JR NZ,.L4 +.L7 POP DE + INC SP + INC SP + LD A,E + ADD A,0x0F + LD E,A + JR NC,.L15 + INC D +.L15 INC BC + LD A,(HL) + OR A + JR Z,.L8 + LD A,(DE) + INC DE + INC A + JR Z,.L5 + JR .L1 + +.L8 DEC BC + PUSH BC + LD HL,CPU1 + LD BC,0x000E +.L9 INC HL + LD (HL),B + ADD HL,BC + LD A,(HL) + INC HL + INC A + JR NZ,.L9 + POP HL + LD A,E + SUB 0x0E + LD E,A + JR NC,.L10 + DEC D +.L10 LD IX,LeftPanel + BIT VIEWFLAG.B_TREE,(IX+PANEL.VIEWFLAG) + JR NZ,.L11 + LD IX,RightPanel +.L11 BIT PANELFLAG.B_PRNDOSPATH,(IX+PANEL.PANELFLAG) + LD A,1 + JR NZ,.L12 + LD A,3 +.L12 LD (DE),A + POP AF + SETPORT WINSP.CPU1,,0 + LD E,L + LD D,H + LD BC,4 + OR A + SBC HL,BC + JR NC,.L13 + LD HL,0 +.L13 LD (IX+PANEL.FFL),L + LD (IX+PANEL.FFH),H + EX DE,HL + OR A + SBC HL,DE + LD (IX+PANEL.CFL),L + LD (IX+PANEL.CFH),H + OR A + RET diff --git a/fnwin.a80 b/fnwin.a80 new file mode 100644 index 0000000..d98877f --- /dev/null +++ b/fnwin.a80 @@ -0,0 +1,1124 @@ + +; LAST UPDATE: 30.03.2025 savelij + +;[]----------------------------------------------------------[] +;楤 ᪨ 0 ࠭ +; 室: A - 梥 ⪨ (00-0Fh) +ClearScreen AND 0x0F + LD E,A + RLCA + RLCA + RLCA + RLCA + OR E + LD E,A + GETPORT WINSP.Y_PORT + LD C,A + GETPORT WINSP.CPU1 + LD B,A + PUSH BC + SETPORT WINSP.CPU1,0x50 + LD HL,0x4000 + LD BC,320 + DI + EXX + SPMOUSE MOUSEF.REFRESH + EXX + ACCEL ACCELCMD.SET_BUFFER + LD A,0x00 +InScrLp + ACCEL ACCELCMD.FILL_VERT + LD (HL),E + ACCEL ACCELCMD.OFF + INC HL + DEC BC + LD A,B + OR C + JR NZ,InScrLp + EI + POP BC + LD A,B + SETPORT WINSP.CPU1,,0 + LD A,C + SETPORT WINSP.Y_PORT,,0 + RET + +;[]----------------------------------------------------------[] +; 楤 뢮 ᪨ ࠭ 640x256x16 ; +;[]----------------------------------------------------------[] +MakeWindow: EX (SP),IY + PUSH IX + PUSH HL + PUSH DE + PUSH BC + PUSH AF + GETPORT WINSP.Y_PORT ; ࠭塞 Y + PUSH AF + LD A,(IY+0x00) + LD (MakeWindow.Type),A + BIT 7,A + JR Z,.L4 + INC IY + LD HL,0x0000 + LD (MakeWindow.PositX),HL + LD (MakeWindow.PositY),HL + LD (MakeWindow.LenX),HL + LD (MakeWindow.LenY),HL + JR .L2 + +.L4 CP 0x7F + JR Z,.L2 + LD L,(IY+0x01) ; न X + LD H,(IY+0x02) + SRL H + RR L + LD (MakeWindow.PositX),HL + LD L,(IY+0x03) ; न Y + LD H,(IY+0x04) + LD (MakeWindow.PositY),HL + LD L,(IY+0x05) ; H X + LD H,(IY+0x06) + SRL H + RR L + LD (MakeWindow.LenX),HL + LD L,(IY+0x07) ; V Y + LD H,(IY+0x08) + LD (MakeWindow.LenY),HL + LD A,(MakeWindow.Type) + DEC A + JR NZ,.L3 + LD HL,MakeWindow.Buffer + LD A,(MakeWindow.Open) + ADD A,A + LD C,A + ADD A,A + ADD A,A + ADD A,C + ADD A,L + LD L,A + JR NC,.L1 + INC H +.L1 LD DE,(MakeWindow.PositX) + LD (HL),E + INC HL + LD (HL),D + INC HL + LD DE,(MakeWindow.PositY) + LD (HL),E + INC HL + LD (HL),D + INC HL + LD DE,(MakeWindow.LenX) + LD (HL),E + INC HL + LD (HL),D + INC HL + LD DE,(MakeWindow.LenY) + LD (HL),E + INC HL + LD (HL),D + INC HL + LD DE,(MakeWindow.Free) + LD (HL),E + INC HL + LD (HL),D +.L3 LD DE,0x0009 + ADD IY,DE ; ⥫ 砫 '⮢ + LD A,(MakeWindow.Type) + OR A + CALL NZ,StoreWindow + CALL PutRectan ; ⨬ אַ㣮쭨 +.L2 LD HL,.L2 + PUSH HL + LD A,(IY+0x00) ; ⥪騩 ' + INC IY + CP WINSUBOBJ.TEXT;0x01 ; ⥪⮢ ப + JP Z,PutTxtLine + CP WINSUBOBJ.FILL;0x02 ; + JP Z,PutHeadPlc + CP WINSUBOBJ.BORDER;0x03 ; 㣫㡫 + JP Z,PutDRectan + CP WINSUBOBJ.BUTTON;0x04 ; + JP Z,PutURectan + CP WINSUBOBJ.BUTTONTEXT;0x05 ; ⥪⮬ + JP Z,PutButton + CP WINSUBOBJ.HORIZLINE;0x06 ; ਧ⠫쭠 + JP Z,PutHorizLine + CP WINSUBOBJ.VERTICLINE;0x07 ; ⨪쭠 + JP Z,PutVertLine + CP WINSUBOBJ.ICONLEFTARROW;0x08 ; "५ " + JP Z,PutSBleft + CP WINSUBOBJ.ICONRIGHTARROW;0x09 ; "५ ࠢ" + JP Z,PutSBright + CP WINSUBOBJ.ICONUPARROW;0x0A ; "५ " + JP Z,PutSBup + CP WINSUBOBJ.ICONDOWNARROW;0x0B ; "५ " + JP Z,PutSBdown + CP WINSUBOBJ.RESTOREWIN;0x7F ; ⠭ ࠭ + JP Z,RestoreWindow + CP WINSUBOBJ.ADRTEXT + JP Z,PutAdrTxtLine + POP HL + POP AF + SETPORT WINSP.Y_PORT,,0 ; . Y port + POP AF + POP BC + POP DE + POP HL + POP IX + EX (SP),IY + RET + +;-------------------------------------------------------------- +; +.PositX DEFW 0x0000 ; X न +.PositY DEFW 0x0000 ; Y न +.LenX DEFW 0x0000 ; X/2 +.LenY DEFW 0x0000 ; Y +.Free DEFW 0x0000 +.Open DEFB 0x00 ; - +.Type DEFB 0x00 +.Buffer DUPL 0x40,0 + +;-------------------------------------------------------------- +; 楤 ࠭ אַ㣮쭮 ᪮ +StoreWindow DI + PUSH IY + SPMOUSE MOUSEF.REFRESH + POP IY + GETPORT WINSP.CPU3 + PUSH AF + GETPORT WINSP.CPU1 + PUSH AF + SETPORT WINSP.CPU1,0x50 + LD HL,(MakeWindow.Free) + LD A,H + AND 0xC0 + RLCA + RLCA + EXX + LD HL,RAMPAGES.BuffPg1 + ADD A,L + LD L,A + JR NC,.L1 + INC H +.L1 LD A,(HL) + SETPORT WINSP.CPU3,,0 + EXX + LD A,H + OR 0xC0 + LD H,A + LD DE,(MakeWindow.PositX) + SET 6,D + LD A,(MakeWindow.PositY) + LD IXH,A + LD A,(MakeWindow.LenY) + LD IXL,A + LD (.SavLen1),A + ACCEL ACCELCMD.SET_BUFFER + LD A,0x00 +.SavLen1 EQU $-1 + ACCEL ACCELCMD.OFF + LD BC,(MakeWindow.LenX) +.SavRect PUSH BC + LD B,0x00 + LD C,IXL + PUSH HL + ADC HL,BC + POP HL + JR Z,.L2 + JR NC,.SavRec1 +.L2 LD HL,0xC000 + EXX + INC HL + LD A,(HL) + SETPORT WINSP.CPU3,,0 + EXX +.SavRec1 LD A,IXH + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.COPY_VERT + LD A,(DE) + ACCEL ACCELCMD.COPY + LD (HL),A + ACCEL ACCELCMD.OFF + ADD HL,BC + POP BC + INC DE + DEC BC + LD A,B + OR C + JR NZ,.SavRect + EI + POP AF + SETPORT WINSP.CPU1,,0 + POP AF + SETPORT WINSP.CPU3,,0 + LD A,H + AND 0x3F + LD H,A + EXX + LD A,L + SUB LOW (RAMPAGES.BuffPg1) + EXX + RRCA + RRCA + OR H + LD H,A + LD (MakeWindow.Free),HL + LD HL,MakeWindow.Open + INC (HL) + RET + +;[]----------------------------------------------------------[] +; 楤 ⠭ אַ㣮쭮 ᪮ +RestoreWindow LD HL,MakeWindow.Open + LD A,(HL) + OR A + RET Z + DEC (HL) + HALT + DI + PUSH IY + SPMOUSE MOUSEF.REFRESH + POP IY + GETPORT WINSP.CPU3 + PUSH AF + GETPORT WINSP.CPU1 + PUSH AF + SETPORT WINSP.CPU1,0x50 + LD HL,MakeWindow.Buffer + LD A,(MakeWindow.Open) + ADD A,A + LD C,A + ADD A,A + ADD A,A + ADD A,C + ADD A,L + LD L,A + JR NC,.L1 + INC H +.L1 LD E,(HL) + INC HL + LD D,(HL) + INC HL + SET 6,D + LD A,(HL) + INC HL + INC HL + LD IXH,A + LD C,(HL) + INC HL + LD B,(HL) + INC HL + LD A,(HL) + INC HL + INC HL + LD (.RstLen1),A + LD IXL,A + LD A,(HL) + INC HL + LD H,(HL) + LD L,A + LD (MakeWindow.Free),HL + LD A,H + AND 0xC0 + RLCA + RLCA + EXX + LD HL,RAMPAGES.BuffPg1 + ADD A,L + LD L,A + JR NC,.L2 + INC H +.L2 LD A,(HL) + SETPORT WINSP.CPU3,,0 + EXX + LD A,H + OR 0xC0 + LD H,A + ACCEL ACCELCMD.SET_BUFFER + LD A,0x00 +.RstLen1 EQU $-1 + ACCEL ACCELCMD.OFF +.RstRect PUSH BC + LD B,0x00 + LD C,IXL + PUSH HL + ADC HL,BC + POP HL + JR Z,.L3 + JR NC,.RstRec1 +.L3 LD HL,0xC000 + EXX + INC HL + LD A,(HL) + SETPORT WINSP.CPU3,,0 + EXX +.RstRec1 + ACCEL ACCELCMD.COPY + LD A,(HL) + ACCEL ACCELCMD.OFF + LD A,IXH + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.COPY_VERT + LD (DE),A + ACCEL ACCELCMD.OFF + ADD HL,BC + POP BC + INC DE + DEC BC + LD A,B + OR C + JR NZ,.RstRect + EI + POP AF + SETPORT WINSP.CPU1,,0 + POP AF + SETPORT WINSP.CPU3,,0 + RET + +;[]==========================================================[] +; 楤 祭 אַ㣮쭮 頤 +PutRectan HALT + DI + PUSH IY + SPMOUSE MOUSEF.REFRESH + POP IY + GETPORT WINSP.CPU1 + PUSH AF + SETPORT WINSP.CPU1,0x50 + LD HL,(MakeWindow.PositX) ; . + SET 6,H + LD A,(MakeWindow.LenY) ; -(ᢥ⪠+⥭) + SUB 0x02 + LD (.TmpLen1),A + LD A,(MakeWindow.PositY) + LD D,A + SETPORT WINSP.Y_PORT,,0 + LD E,COLORP.WHITE + COLORI.WHITE;0xFF + LD (HL),E + INC A + SETPORT WINSP.Y_PORT,,0 + LD BC,(MakeWindow.LenX) + DEC BC + DEC BC + ACCEL ACCELCMD.SET_BUFFER + LD A,0x00 +.TmpLen1 EQU $-1 + ACCEL ACCELCMD.FILL_VERT + LD (HL),E + ACCEL ACCELCMD.OFF + LD (HL),COLORP.WHITE + COLORI.BLACKGRAY;0xF7 + INC HL + LD E,COLORP.HIGHGRAY + COLORI.HIGHGRAY;0x88 +.PtRect1 LD A,D + SETPORT WINSP.Y_PORT,,0 + LD (HL),COLORP.WHITE + COLORI.WHITE;0xFF + INC A + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.FILL_VERT + LD (HL),E + ACCEL ACCELCMD.OFF + LD (HL),COLORP.BLACKGRAY + COLORI.BLACKGRAY;0x77 + INC HL + DEC BC + LD A,B + OR C + JR NZ,.PtRect1 + LD A,D + SETPORT WINSP.Y_PORT,,0 + LD (HL),COLORP.WHITE + COLORI.BLACKGRAY;0xF7 + INC A + SETPORT WINSP.Y_PORT,,0 + LD E,COLORP.BLACKGRAY + COLORI.BLACKGRAY;0x77 + ACCEL ACCELCMD.FILL_VERT + LD (HL),E + ACCEL ACCELCMD.OFF + LD (HL),E + EI + POP AF + SETPORT WINSP.CPU1,,0 + RET + +; ⥪⮢ ப 㪠 +PutAdrTxtLine LD HL,(MakeWindow.PositX) + SLA L + RL H + LD E,(IY+0x00) ; Xpos + INC IY + LD D,(IY+0x00) + INC IY + ADD HL,DE + EX DE,HL + LD HL,(MakeWindow.PositY) + LD C,(IY+0x00) ; Ypos + INC IY + LD B,(IY+0x00) + INC IY + ADD HL,BC + LD C,L + LD B,H + LD A,(IY+0x00) ; Color + INC IY + LD L,(IY+0) + INC IY + LD H,(IY+0) ; ⥪ + INC IY + PUSH IY + LD A,H + OR L + CALL NZ,PrnTxtLnIFF ; ᫨ 0 + POP IY + RET + +;[]===========================================================[] +PutTxtLine LD HL,(MakeWindow.PositX) + SLA L + RL H + LD E,(IY+0x00) ; Xpos + INC IY + LD D,(IY+0x00) + INC IY + ADD HL,DE + EX DE,HL + LD HL,(MakeWindow.PositY) + LD C,(IY+0x00) ; Ypos + INC IY + LD B,(IY+0x00) + INC IY + ADD HL,BC + LD C,L + LD B,H + LD A,(IY+0x00) ; Color + INC IY + PUSH IY + POP HL + CALL PrnTxtLnIFF + PUSH HL + POP IY + RET + +;[]===========================================================[] +PutHeadPlc DI + PUSH IY + SPMOUSE MOUSEF.REFRESH + POP IY + LD HL,(MakeWindow.PositX) + SET 6,H + LD C,(IY+0x00) + INC IY + LD B,(IY+0x00) + INC IY + SRL B + RR C + ADD HL,BC + LD C,(IY+0x00) + INC IY + INC IY + LD A,(MakeWindow.PositY) + ADD A,C + LD IXL,A + LD C,(IY+0x00) + INC IY + LD B,(IY+0x00) + INC IY + SRL B + RR C + LD A,(IY+0x00) + INC IY + INC IY + LD (.TmpLen2),A + LD A,(IY+0x00) + AND 0x0F + RLCA + RLCA + RLCA + RLCA + OR (IY+0x00) + LD D,A + INC IY + GETPORT WINSP.CPU1 + PUSH AF + SETPORT WINSP.CPU1,0x50 + ACCEL ACCELCMD.SET_BUFFER + LD A,0x00 +.TmpLen2 EQU $-1 + ACCEL ACCELCMD.OFF +.PtHead1 LD A,IXL + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.FILL_VERT + LD (HL),D + ACCEL ACCELCMD.OFF + INC HL + DEC BC + LD A,B + OR C + JR NZ,.PtHead1 + EI + POP AF + SETPORT WINSP.CPU1,,0 + RET + +;[]===========================================================[] +PutDRectan LD HL,(MakeWindow.PositX) + SET 6,H + LD C,(IY+0x00) + INC IY + LD B,(IY+0x00) + INC IY + SRL B + RR C + ADD HL,BC + LD C,(IY+0x00) + INC IY + INC IY + LD A,(MakeWindow.PositY) + ADD A,C + LD IXL,A + LD C,(IY+0x00) + INC IY + LD B,(IY+0x00) + INC IY + SRL B + RR C + DEC BC + LD A,C + DEC A + LD (.TmpLen4),A + LD A,(IY+0x00) + INC IY + INC IY + SUB 0x02 + LD (.TmpLen3),A + ADD A,IXL + INC A + LD IXH,A + GETPORT WINSP.CPU1 + PUSH AF + SETPORT WINSP.CPU1,0x50 + DI + ACCEL ACCELCMD.SET_BUFFER + LD A,0x00 +.TmpLen3 EQU $-1 + ACCEL ACCELCMD.OFF + LD A,IXL + SETPORT WINSP.Y_PORT,,0 + LD E,COLORP.BLACKGRAY + COLORI.BLACKGRAY;0x77 + LD (HL),E + INC A + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.FILL_VERT + LD (HL),E + ACCEL ACCELCMD.OFF + LD (HL),COLORP.BLACKGRAY + COLORI.WHITE;0x7F + PUSH HL + ADD HL,BC + LD A,IXL + SETPORT WINSP.Y_PORT,,0 + LD E,COLORP.WHITE + COLORI.WHITE;0xFF + LD (HL),E + INC A + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.FILL_VERT + LD (HL),E + ACCEL ACCELCMD.OFF + LD (HL),E + POP HL + INC HL + LD A,IXL + SETPORT WINSP.Y_PORT,,0 + LD E,COLORP.BLACKGRAY + COLORI.BLACKGRAY;0x77 + ACCEL ACCELCMD.SET_BUFFER + LD A,0x00 +.TmpLen4 EQU $-1 + ACCEL ACCELCMD.FILL + LD (HL),E + ACCEL ACCELCMD.OFF + LD A,IXH + SETPORT WINSP.Y_PORT,,0 + LD E,COLORP.WHITE + COLORI.WHITE;0xFF + ACCEL ACCELCMD.FILL + LD (HL),E + ACCEL ACCELCMD.OFF + EI + POP AF + SETPORT WINSP.CPU1,,0 + RET + +;[]===========================================================[] +PutURectan LD HL,(MakeWindow.PositX) + SET 6,H ; | 0x4000 + LD C,(IY+0x00) ; 00 + INC IY ; 0->1 + LD B,(IY+0x00) ; 01 + INC IY ; 1->2 + SRL B + RR C + ADD HL,BC + LD C,(IY+0x00) ; 02 + INC IY ; 2->3 + INC IY ; 3->4 + LD A,(MakeWindow.PositY) + ADD A,C + LD IXL,A + LD C,(IY+0x00) ; 04 + INC IY ; 4->5 + LD B,(IY+0x00) ; 05 + INC IY ; 5->6 + SRL B + RR C + DEC BC + LD A,C + DEC A + LD (.TmpLen6),A + LD A,(IY+0x00) ; 06 + INC IY ; 6->7 + INC IY ; 7->8 + SUB 0x02 + LD (.TmpLen5),A + ADD A,IXL + INC A + LD IXH,A + GETPORT WINSP.CPU1 + PUSH AF + SETPORT WINSP.CPU1,0x50 + DI + ACCEL ACCELCMD.SET_BUFFER + LD A,0x00 +.TmpLen5 EQU $-1 + ACCEL ACCELCMD.OFF + LD A,IXL + SETPORT WINSP.Y_PORT,,0 + LD E,COLORP.WHITE + COLORI.WHITE;0xFF + LD (HL),E + INC A + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.FILL_VERT + LD (HL),E + ACCEL ACCELCMD.OFF + LD (HL),COLORP.WHITE + COLORI.BLACKGRAY;0xF7 + PUSH HL + ADD HL,BC + LD A,IXL + SETPORT WINSP.Y_PORT,,0 + LD E,COLORP.BLACKGRAY + COLORI.BLACKGRAY;0x77 + LD (HL),E + INC A + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.FILL_VERT + LD (HL),E + ACCEL ACCELCMD.OFF + LD (HL),E + POP HL + INC HL + LD A,IXL + SETPORT WINSP.Y_PORT,,0 + LD E,COLORP.WHITE + COLORI.WHITE;0xFF + ACCEL ACCELCMD.SET_BUFFER + LD A,0x00 +.TmpLen6 EQU $-1 + ACCEL ACCELCMD.FILL + LD (HL),E + ACCEL ACCELCMD.OFF + LD A,IXH + SETPORT WINSP.Y_PORT,,0 + LD E,COLORP.BLACKGRAY + COLORI.BLACKGRAY;0x77 + ACCEL ACCELCMD.FILL + LD (HL),E + ACCEL ACCELCMD.OFF + EI + POP AF + SETPORT WINSP.CPU1,,0 + RET + +;[]===========================================================[] +PutButton LD HL,(MakeWindow.PositX) + SLA L + RL H + LD E,(IY+0x00) ; Xpos + LD D,(IY+0x01) + ADD HL,DE + INC HL + INC HL + INC HL + INC HL + EX DE,HL + LD HL,(MakeWindow.PositY) + LD C,(IY+0x02) ; Ypos + LD B,(IY+0x03) + ADD HL,BC + INC HL + LD C,L + LD B,H + PUSH DE + PUSH BC + CALL PutURectan + POP BC + POP DE + LD A,(IY+0x00) ; Color + INC IY + PUSH IY + POP HL + CALL PrnTxtLnIFF + PUSH HL + POP IY + RET + +;[]===========================================================[] +PutHorizLine LD HL,(MakeWindow.PositX) + SET 6,H + LD C,(IY+0x00) + INC IY + LD B,(IY+0x00) + INC IY + SRL B + RR C + ADD HL,BC + LD C,(IY+0x00) + INC IY + INC IY + LD A,(MakeWindow.PositY) + ADD A,C + LD IXL,A + LD C,(IY+0x00) + INC IY + LD B,(IY+0x00) + INC IY + SRL B + RR C + LD E,COLORP.BLACKGRAY + COLORI.BLACKGRAY;0x77 + PUSH HL + CALL .HorizLn + POP HL + INC IXL + LD E,COLORP.WHITE + COLORI.WHITE;0xFF +.HorizLn DI + GETPORT WINSP.CPU1 + PUSH AF + SETPORT WINSP.CPU1,0x50 + LD A,IXL + SETPORT WINSP.Y_PORT,,0 + LD A,B + OR A + JR Z,.HorLn1 + ACCEL ACCELCMD.SET_BUFFER + LD A,0x00 + ACCEL ACCELCMD.FILL + LD (HL),E + ACCEL ACCELCMD.OFF + INC H +.HorLn1 LD A,C + LD (.TmpLen8),A + ACCEL ACCELCMD.SET_BUFFER + LD A,0x00 +.TmpLen8 EQU $-1 + ACCEL ACCELCMD.FILL + LD (HL),E + ACCEL ACCELCMD.OFF + EI + POP AF + SETPORT WINSP.CPU1,,0 + RET + +;[]===========================================================[] +PutVertLine LD HL,(MakeWindow.PositX) + SET 6,H + LD C,(IY+0x00) + INC IY + LD B,(IY+0x00) + INC IY + SRL B + RR C + ADD HL,BC + LD C,(IY+0x00) + INC IY + INC IY + LD A,(MakeWindow.PositY) + ADD A,C + LD IXL,A + LD A,(IY+0x00) + INC IY + INC IY + LD (.TmpLen9),A + GETPORT WINSP.CPU1 + PUSH AF + SETPORT WINSP.CPU1,0x50 + DI + LD DE,(COLORP.BLACKGRAY + COLORI.BLACKGRAY) << 8 + COLORP.WHITE + COLORI.WHITE;0x77FF + LD A,IXL + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.SET_BUFFER + LD A,0x00 +.TmpLen9 EQU $-1 + ACCEL ACCELCMD.FILL_VERT + LD (HL),D + ACCEL ACCELCMD.OFF + INC HL + LD A,IXL + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.FILL_VERT + LD (HL),E + ACCEL ACCELCMD.OFF + EI + POP AF + SETPORT WINSP.CPU1,,0 + RET + +;[]===========================================================[] +PutSBleft LD HL,SBleft + JR PutSButton + +PutSBright LD HL,SBright + JR PutSButton + +PutSBup LD HL,SBup + JR PutSButton + +PutSBdown LD HL,SBdown +PutSButton EX DE,HL + LD HL,(MakeWindow.PositX) + SET 6,H + LD C,(IY+0x00) + INC IY + LD B,(IY+0x00) + INC IY + SRL B + RR C + ADD HL,BC + EX DE,HL + LD C,(IY+0x00) + INC IY + INC IY + LD A,(MakeWindow.PositY) + ADD A,C + LD C,A + GETPORT WINSP.CPU1 + PUSH AF + SETPORT WINSP.CPU1,0x50 + DI + ACCEL ACCELCMD.SET_BUFFER + LD A,0x08 + ACCEL ACCELCMD.OFF + LD B,0x08 +PutSBlp PUSH BC + LD A,C + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.COPY + LD A,(HL) + LD (DE),A + ACCEL ACCELCMD.OFF + LD BC,0x0008 + ADD HL,BC + POP BC + INC C + DJNZ PutSBlp + EI + POP AF + SETPORT WINSP.CPU1,,0 + RET + +; ࠩ⨪ ஫ "५ " +SBleft +; DEFB 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x77 +; DEFB 0xFF,0x88,0x88,0x88,0x80,0x00,0x88,0x77 +; DEFB 0xFF,0x88,0x88,0x80,0x00,0x00,0x88,0x77 +; DEFB 0xFF,0x88,0x80,0x00,0x00,0x08,0x88,0x77 +; DEFB 0xFF,0x88,0x80,0x00,0x00,0x08,0x88,0x77 +; DEFB 0xFF,0x88,0x88,0x00,0x88,0x88,0x88,0x77 +; DEFB 0xFF,0x88,0x88,0x80,0x88,0x88,0x88,0x77 +; DEFB 0xFF,0x77,0x77,0x77,0x77,0x77,0x77,0x77 + DB 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x77 ; 0 + DB 0xFF,0x88,0x88,0x88,0x80,0x00,0x88,0x77 ; 1 + DB 0xFF,0x88,0x88,0x80,0x00,0x08,0x88,0x77 ; 2 + DB 0xFF,0x88,0x80,0x00,0x00,0x88,0x88,0x77 ; 3 + DB 0xFF,0x88,0x80,0x00,0x00,0x88,0x88,0x77 ; 4 + DB 0xFF,0x88,0x88,0x80,0x00,0x08,0x88,0x77 ; 5 + DB 0xFF,0x88,0x88,0x88,0x80,0x00,0x88,0x77 ; 6 + DB 0xFF,0x77,0x77,0x77,0x77,0x77,0x77,0x77 ; 7 + +; ࠩ⨪ ஫ "५ ࠢ" +SBright +; DEFB 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x77 +; DEFB 0xFF,0x88,0x88,0x08,0x88,0x88,0x88,0x77 +; DEFB 0xFF,0x88,0x88,0x00,0x88,0x88,0x88,0x77 +; DEFB 0xFF,0x88,0x88,0x00,0x08,0x88,0x88,0x77 +; DEFB 0xFF,0x88,0x88,0x00,0x08,0x88,0x88,0x77 +; DEFB 0xFF,0x88,0x88,0x00,0x88,0x88,0x88,0x77 +; DEFB 0xFF,0x88,0x88,0x08,0x88,0x88,0x88,0x77 +; DEFB 0xFF,0x77,0x77,0x77,0x77,0x77,0x77,0x77 + DB 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF ; 0 + DB 0xFF,0x88,0x00,0x08,0x88,0x88,0x88,0x77 ; 1 + DB 0xFF,0x88,0x80,0x00,0x08,0x88,0x88,0x77 ; 2 + DB 0xFF,0x88,0x88,0x00,0x00,0x08,0x88,0x77 ; 3 + DB 0xFF,0x88,0x88,0x00,0x00,0x08,0x88,0x77 ; 4 + DB 0xFF,0x88,0x80,0x00,0x08,0x88,0x88,0x77 ; 5 + DB 0xFF,0x88,0x00,0x08,0x88,0x88,0x88,0x77 ; 6 + DB 0xFF,0x77,0x77,0x77,0x77,0x77,0x77,0x77 ; 7 + +; ࠩ⨪ ஫ "५ " +SBup +; DEFB 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x77 +; DEFB 0xFF,0x88,0x88,0x88,0x88,0x88,0x88,0x77 +; DEFB 0xFF,0x88,0x88,0x80,0x08,0x88,0x88,0x77 +; DEFB 0xFF,0x88,0x88,0x00,0x00,0x88,0x88,0x77 +; DEFB 0xFF,0x88,0x00,0x00,0x00,0x00,0x88,0x77 +; DEFB 0xFF,0x88,0x88,0x88,0x88,0x88,0x88,0x77 +; DEFB 0xFF,0x88,0x88,0x88,0x88,0x88,0x88,0x77 +; DEFB 0xFF,0x77,0x77,0x77,0x77,0x77,0x77,0x77 + DB 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF ; 0 + DB 0xFF,0x88,0x88,0x88,0x88,0x88,0x88,0x77 ; 1 + DB 0xFF,0x88,0x88,0x80,0x08,0x88,0x88,0x77 ; 2 + DB 0xFF,0x88,0x88,0x00,0x00,0x88,0x88,0x77 ; 3 + DB 0xFF,0x88,0x80,0x00,0x00,0x08,0x88,0x77 ; 4 + DB 0xFF,0x88,0x00,0x08,0x80,0x00,0x88,0x77 ; 5 + DB 0xFF,0x88,0x00,0x88,0x88,0x00,0x88,0x77 ; 6 + DB 0xFF,0x77,0x77,0x77,0x77,0x77,0x77,0x77 ; 7 + +; ࠩ⨪ ஫ "५ " +SBdown +; DEFB 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x77 +; DEFB 0xFF,0x88,0x88,0x88,0x88,0x88,0x88,0x77 +; DEFB 0xFF,0x88,0x88,0x88,0x88,0x88,0x88,0x77 +; DEFB 0xFF,0x88,0x00,0x00,0x00,0x00,0x88,0x77 +; DEFB 0xFF,0x88,0x88,0x00,0x00,0x88,0x88,0x77 +; DEFB 0xFF,0x88,0x88,0x80,0x08,0x88,0x88,0x77 +; DEFB 0xFF,0x88,0x88,0x88,0x88,0x88,0x88,0x77 +; DEFB 0xFF,0x77,0x77,0x77,0x77,0x77,0x77,0x77 + DB 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF ; 0 + DB 0xFF,0x88,0x88,0x88,0x88,0x88,0x88,0x77 ; 1 + DB 0xFF,0x88,0x00,0x88,0x88,0x00,0x88,0x77 ; 2 + DB 0xFF,0x88,0x00,0x08,0x80,0x00,0x88,0x77 ; 3 + DB 0xFF,0x88,0x80,0x00,0x00,0x08,0x88,0x77 ; 4 + DB 0xFF,0x88,0x88,0x00,0x00,0x88,0x88,0x77 ; 5 + DB 0xFF,0x88,0x88,0x80,0x08,0x88,0x88,0x77 ; 6 + DB 0xFF,0x77,0x77,0x77,0x77,0x77,0x77,0x77 ; 7 + +;[]----------------------------------------------------------[] +; 楤 ஢ אַ㣮쭮 ᪮ +; 室: +; HL - X न +; BC - Y न +; HX - Y +; LX - X +; D - ⥪騩 梥 +; E - 㦭 梥 +InvertRectan PUSH IY + GETPORT WINSP.Y_PORT ; ࠭塞 Y + PUSH AF + GETPORT WINSP.CPU1 + PUSH AF + SETPORT WINSP.CPU1,0x50 + LD IYL,C + LD C,IXH + LD B,IXL + SRL H + RR L + SET 6,H + LD IXL,E + LD IXH,D + LD A,D + AND 0xF0 + LD IYH,A + RRCA + RRCA + RRCA + RRCA + OR IYH + LD D,A + AND 0x0F + LD IYH,A + LD E,IXH + LD A,E + AND 0x0F + RLCA + RLCA + RLCA + RLCA + OR IYH + LD IXH,A + EXX + LD A,IXL + AND 0xF0 + LD IYH,A + RRCA + RRCA + RRCA + RRCA + OR IYH + LD D,A + AND 0x0F + LD IYH,A + LD E,IXL + LD A,E + AND 0x0F + RLCA + RLCA + RLCA + RLCA + OR IYH + LD B,A + AND 0xF0 + LD IYH,A + RRCA + RRCA + RRCA + RRCA + OR IYH + LD C,A + EXX +.PrnInvLp LD A,IYL + SETPORT WINSP.Y_PORT,,0 + PUSH HL + EXX + POP HL + EXX + PUSH HL + PUSH BC + CALL InvLnLp + POP BC + POP HL + INC IYL + DEC C + JR NZ,.PrnInvLp + POP AF + SETPORT WINSP.CPU1,,0 + POP AF + SETPORT WINSP.Y_PORT,,0 + POP IY + RET + +InvLnLp LD A,(HL) + INC HL + CP D + JR NZ,CmpInv2 + EXX + LD (HL),D + INC HL + EXX + DJNZ InvLnLp + RET + +CmpInv2 CP E + JR NZ,CmpInv3 + EXX + LD (HL),E + INC HL + EXX + DJNZ InvLnLp + RET + +CmpInv3 CP IXH + JR NZ,SetInv4 + EXX + LD (HL),B + INC HL + EXX + DJNZ InvLnLp + RET + +SetInv4 EXX + LD (HL),C + INC HL + EXX + DJNZ InvLnLp + RET diff --git a/fnwork.a80 b/fnwork.a80 new file mode 100644 index 0000000..b6a9b34 --- /dev/null +++ b/fnwork.a80 @@ -0,0 +1,2077 @@ + +; LAST UPDATE: 27.04.2025 savelij + +;[]===========================================================[] +CursUp LD A,(IY + PANEL.EFL) + OR (IY + PANEL.EFH) + RET Z + LD L,(IY + PANEL.CFL) + LD H,(IY + PANEL.CFH) + LD A,H + OR L + JR NZ,CursUp1 + LD A,(IY + PANEL.FFL) + OR (IY + PANEL.FFH) + RET Z + JR ScrlDn1 + +CursUp1 DEC HL + PUSH HL + CALL ResInvert + POP HL + LD (IY + PANEL.CFL),L + LD (IY + PANEL.CFH),H + CALL SetInvert + JP PrnFileInfo + +ScrollDown: LD A,(IY + PANEL.EFL) + OR (IY + PANEL.EFH) + RET Z + LD A,(IY + PANEL.FFL) + OR (IY + PANEL.FFH) + RET Z +ScrlDn1 BIT VIEWFLAG.B_FULL,(IY + PANEL.VIEWFLAG) + JP NZ,ScrlDnP + BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) + JP NZ,ScrlDnT + GETPORT WINSP.CPU1 + PUSH AF + BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + LD A,(RAMPAGES.LEFTPANEL) + JR Z,.L1 + LD A,(RAMPAGES.RIGHTPANEL) +.L1 + SETPORT WINSP.CPU1,,0 + LD L,(IY + PANEL.EFL) + LD H,(IY + PANEL.EFH) + ADD HL,HL ; *2 + ADD HL,HL ; *4 + ADD HL,HL ; *8 + LD E,L + LD D,H + ADD HL,HL ; *10 + ADD HL,DE ; *18 + SET 6,H ; | 0x4000 - 砫 ࠭ + PUSH HL + POP IX + LD L,(IY + PANEL.FFL) + LD H,(IY + PANEL.FFH) + DEC HL + ADD HL,HL ; *2 + ADD HL,HL ; *4 + ADD HL,HL ; *8 + LD E,L + LD D,H + ADD HL,HL ; *10 + ADD HL,DE ; *18 + SET 6,H ; | 0x4000 - 砫 ࠭ + LD DE,WorkBuffer + LD BC,FileHDR.Attr + PUSH HL + LDIR + POP HL + LD DE,0x18*0x11 + ADD HL,DE + LD E,IXL + LD D,IXH + OR A + SBC HL,DE + ADD HL,DE + JR C,.L2 + EX DE,HL +.L2 LD DE,WorkBuffer+0x10 + LD C,0x0E + PUSH HL + LDIR + POP HL + LD DE,0x18*0x11 + ADD HL,DE + LD E,IXL + LD D,IXH + OR A + SBC HL,DE + ADD HL,DE + JR C,.L3 + EX DE,HL +.L3 LD DE,WorkBuffer+0x20 + LD C,0x0E + LDIR + POP AF + SETPORT WINSP.CPU1,,0 + LD B,COLORP.PANEL + COLORI.FILES + LD C,COLORP.PANEL + COLORI.SELECTFILES + CALL InsPrnColor + CALL ResInvert + PUSH IY + GETPORT WINSP.Y_PORT ; ࠭塞 Y + LD C,A + GETPORT WINSP.CPU1 + LD B,A + PUSH BC + SETPORT WINSP.CPU1,0x50 + LD L,(IY + PANEL.XL) + LD H,(IY + PANEL.XH) + LD DE,6 + ADD HL,DE + LD DE,63 << 8 | 71 + LD BC,128 << 8 | 46 + PUSH HL + CALL ScrollDIRDownUp + POP DE + LD HL,WorkBuffer+0x01 + LD BC,12 << 8 | 63 + LD A,(HL) + DEC HL + OR A + PUSH DE + CALL NZ,PrintName + POP HL + LD DE,104 + ADD HL,DE + LD DE,63 << 8 | 71 + LD BC,128 << 8 | 46 + PUSH HL + CALL ScrollDIRDownUp + POP DE + LD HL,WorkBuffer+0x11 + LD BC,12 << 8 | 63 + LD A,(HL) + DEC HL + OR A + PUSH DE + CALL NZ,PrintName + POP HL + LD DE,0x0068 + ADD HL,DE + LD DE,63 << 8 | 71 + LD BC,128 << 8 | 46 + PUSH HL + CALL ScrollDIRDownUp + POP DE + LD HL,WorkBuffer+0x21 + LD BC,12 << 8 | 63 + LD A,(HL) + DEC HL + OR A + CALL NZ,PrintName + POP BC + LD A,B + SETPORT WINSP.CPU1,,0 + LD A,C + SETPORT WINSP.Y_PORT,,0 + POP IY + LD L,(IY + PANEL.FFL) + LD H,(IY + PANEL.FFH) + DEC HL + LD (IY + PANEL.FFL),L + LD (IY + PANEL.FFH),H + CALL SetInvert + CALL PrnFileInfo + PUSH IY + POP IX + LD DE,PANEL.BARXL + ADD IX,DE + JP PrnHScrBar + +ScrlDnP + GETPORT WINSP.CPU1 + PUSH AF + BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + LD A,(RAMPAGES.LEFTPANEL) + JR Z,.L1 + LD A,(RAMPAGES.RIGHTPANEL) +.L1 + SETPORT WINSP.CPU1,,0 + LD L,(IY + PANEL.FFL) + LD H,(IY + PANEL.FFH) + DEC HL + ADD HL,HL ; *2 + ADD HL,HL ; *4 + ADD HL,HL ; *8 + LD E,L + LD D,H + ADD HL,HL ; *10 + ADD HL,DE ; *18 + SET 6,H ; | 0x4000 + LD DE,WorkBuffer + LD BC,FileHDR.SIZE + LDIR + POP AF + SETPORT WINSP.CPU1,,0 + LD IX,WorkBuffer + LD HL,WorkBuffer + LD DE,WorkBuffer+0x200 + LD BC,0x000D + LDIR + LD A,0x01 + LD (DE),A + INC DE + BIT DIR.B_Dir,(IX + FileHDR.Attr) + CALL NZ,PutDIRTxt + CALL Z,GetFileLen + LD A,0x01 + LD (DE),A + INC DE + CALL GetData + LD A,0x01 + LD (DE),A + INC DE + CALL GetTime + LD B,COLORP.PANEL + COLORI.FILES + LD C,COLORP.PANEL + COLORI.SELECTFILES + CALL InsPrnColor + CALL ResInvert + PUSH IY + GETPORT WINSP.Y_PORT ; ࠭塞 Y + LD C,A + GETPORT WINSP.CPU1 + LD B,A + PUSH BC + SETPORT WINSP.CPU1,0x50 + LD L,(IY+PANEL.XL) + LD H,(IY+PANEL.XH) + LD DE,4 + ADD HL,DE + LD DE,63 << 8 | 71 + LD BC,136 << 8 + 144 + PUSH HL + CALL ScrollDIRDownUp + POP DE + LD HL,WorkBuffer+0x200 + LD BC,38 << 8 + 63 + CALL PrintName + POP BC + LD A,B + SETPORT WINSP.CPU1,,0 + LD A,C + SETPORT WINSP.Y_PORT,,0 + POP IY + LD L,(IY+PANEL.FFL) + LD H,(IY+PANEL.FFH) + DEC HL + LD (IY+PANEL.FFL),L + LD (IY+PANEL.FFH),H + CALL SetInvert + CALL PrnFileInfo + PUSH IY + POP IX + LD DE,PANEL.BARXL + ADD IX,DE + JP PrnVScrBar + +ScrlDnT + GETPORT WINSP.CPU1 + PUSH AF + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + LD A,(RAMPAGES.LEFTPANEL) + JR Z,.L1 + LD A,(RAMPAGES.RIGHTPANEL) +.L1 + SETPORT WINSP.CPU1,,0 + LD HL,WorkBuffer + LD B,0x18 + LD A,0x80 + PUSH HL +.L2 LD (HL),A + INC L + DJNZ .L2 + POP DE + LD HL,0x4000 + LD C,(IY+PANEL.FFL) + LD B,(IY+PANEL.FFH) + DEC BC + LD A,B + OR C + JR Z,ScrDdn2 +ScrDdn1 PUSH BC + LD A,(HL) + AND 0x7F + LD E,A + LD A,(HL) + LD (DE),A + LD BC,0x0010 + ADD HL,BC + POP BC + DEC BC + LD A,B + OR C + JR NZ,ScrDdn1 +ScrDdn2 LD DE,WorkBuffer+0x100 + LD BC,0x0010 + LDIR + POP AF + SETPORT WINSP.CPU1,,0 + LD HL,WorkBuffer+0x100 + LD DE,WorkBuffer+0x200 + CALL MakeTreeLine + LD B,COLORP.PANEL + COLORI.FILES + LD C,COLORP.PANEL + COLORI.SELECTFILES + CALL InsPrnColor + CALL ResInvert + PUSH IY + GETPORT WINSP.Y_PORT ; ࠭塞 Y + LD C,A + GETPORT WINSP.CPU1 + LD B,A + PUSH BC + SETPORT WINSP.CPU1,0x50 + LD L,(IY+PANEL.XL) + LD H,(IY+PANEL.XH) + LD DE,6 + ADD HL,DE + LD DE,63 << 8 | 71 + LD BC,136 << 8 | 144 + PUSH HL + CALL ScrollDIRDownUp + POP DE + LD HL,WorkBuffer+0x200 + LD BC,36 << 8 | 63 + CALL PrintName + POP BC + LD A,B + SETPORT WINSP.CPU1,,0 + LD A,C + SETPORT WINSP.Y_PORT,,0 + POP IY + LD L,(IY+PANEL.FFL) + LD H,(IY+PANEL.FFH) + DEC HL + LD (IY+PANEL.FFL),L + LD (IY+PANEL.FFH),H + CALL SetInvert + CALL PrnFileInfo + PUSH IY + POP IX + LD DE,PANEL.BARXL + ADD IX,DE + JP PrnVScrBar + +;[]===========================================================[] +CursDown LD C,(IY+PANEL.EFL) + LD B,(IY+PANEL.EFH) + LD A,B + OR C + RET Z + LD L,(IY+PANEL.CFL) + LD H,(IY+PANEL.CFH) + INC HL + PUSH HL + LD E,(IY+PANEL.FFL) + LD D,(IY+PANEL.FFH) + ADD HL,DE + OR A + SBC HL,BC + POP HL + RET NC + LD E,(IY+PANEL.FPL) + LD D,(IY+PANEL.FPH) + OR A + SBC HL,DE + JR NC,ScrlUp1 + ADD HL,DE + PUSH HL + CALL ResInvert + POP HL + LD (IY+PANEL.CFL),L + LD (IY+PANEL.CFH),H + CALL SetInvert + JP PrnFileInfo + +ScrollUp: LD A,(IY+PANEL.EFL) + OR (IY+PANEL.EFH) + RET Z + LD L,(IY+PANEL.FFL) + LD H,(IY+PANEL.FFH) + LD E,(IY+PANEL.FPL) + LD D,(IY+PANEL.FPH) + ADD HL,DE + LD E,(IY+PANEL.EFL) + LD D,(IY+PANEL.EFH) + OR A + SBC HL,DE + RET NC +ScrlUp1 BIT VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG) + JP NZ,ScrlUpP + BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + JP NZ,ScrlUpT + GETPORT WINSP.CPU1 + PUSH AF + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + LD A,(RAMPAGES.LEFTPANEL) + JR Z,.L1 + LD A,(RAMPAGES.RIGHTPANEL) +.L1 + SETPORT WINSP.CPU1,,0 + LD L,(IY+PANEL.FFL) + LD H,(IY+PANEL.FFH) + LD DE,0x0011 + ADD HL,DE + ADD HL,HL + ADD HL,HL + ADD HL,HL + LD E,L + LD D,H + ADD HL,HL + ADD HL,DE + SET 6,H + LD DE,WorkBuffer + LD BC,0x000E + PUSH HL + LDIR + POP HL + LD DE,0x18*0x11 + ADD HL,DE + LD DE,WorkBuffer+0x10 + LD C,0x0E + PUSH HL + LDIR + POP HL + LD DE,0x18*0x11 + ADD HL,DE + LD DE,WorkBuffer+0x20 + LD C,0x0E + LDIR + POP AF + SETPORT WINSP.CPU1,,0 + LD B,COLORP.PANEL + COLORI.FILES + LD C,COLORP.PANEL + COLORI.SELECTFILES + CALL InsPrnColor + CALL ResInvert + PUSH IY + GETPORT WINSP.Y_PORT ; ࠭塞 Y + LD C,A + GETPORT WINSP.CPU1 + LD B,A + PUSH BC + SETPORT WINSP.CPU1,0x50 + LD L,(IY+PANEL.XL) + LD H,(IY+PANEL.XH) + LD DE,6 + ADD HL,DE + LD DE,71 << 8 | 63 + LD BC,128 << 8 | 46 + PUSH HL + CALL ScrollDIRDownUp + POP DE + LD HL,WorkBuffer+0x01 + LD BC,12 << 8 | 191 + LD A,(HL) + DEC HL + OR A + PUSH DE + CALL NZ,PrintName + POP HL + LD DE,0x0068 + ADD HL,DE + LD D,0x3F+0x08 + LD E,0x3F + LD BC,0x802E + PUSH HL + CALL ScrollDIRDownUp + POP DE + LD HL,WorkBuffer+0x11 + LD BC,12 << 8 | 191 + LD A,(HL) + DEC HL + OR A + PUSH DE + CALL NZ,PrintName + POP HL + LD DE,104 + ADD HL,DE + LD DE,71 << 8 | 63 + LD BC,128 << 8 | 46 + PUSH HL + CALL ScrollDIRDownUp + POP DE + LD HL,WorkBuffer+0x21 + LD BC,12 << 8 | 191 + LD A,(HL) + DEC HL + OR A + CALL NZ,PrintName + POP BC + LD A,B + SETPORT WINSP.CPU1,,0 + LD A,C + SETPORT WINSP.Y_PORT,,0 + POP IY + LD L,(IY+PANEL.FFL) + LD H,(IY+PANEL.FFH) + INC HL + LD (IY+PANEL.FFL),L + LD (IY+PANEL.FFH),H + CALL SetInvert + CALL PrnFileInfo + PUSH IY + POP IX + LD DE,PANEL.BARXL + ADD IX,DE + JP PrnHScrBar + +ScrlUpP + GETPORT WINSP.CPU1 + PUSH AF + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + LD A,(RAMPAGES.LEFTPANEL) + JR Z,.L1 + LD A,(RAMPAGES.RIGHTPANEL) +.L1 + SETPORT WINSP.CPU1,,0 + LD L,(IY+PANEL.FFL) + LD H,(IY+PANEL.FFH) + LD DE,0x0012 + ADD HL,DE + ADD HL,HL + ADD HL,HL + ADD HL,HL + LD E,L + LD D,H + ADD HL,HL + ADD HL,DE + SET 6,H + LD DE,WorkBuffer + LD BC,0x0018 + LDIR + POP AF + SETPORT WINSP.CPU1,,0 + LD IX,WorkBuffer + LD HL,WorkBuffer + LD DE,WorkBuffer+0x200 + LD BC,0x000D + LDIR + LD A,0x01 + LD (DE),A + INC DE + BIT DIR.B_Dir,(IX + FileHDR.Attr) + CALL NZ,PutDIRTxt + CALL Z,GetFileLen + LD A,0x01 + LD (DE),A + INC DE + CALL GetData + LD A,0x01 + LD (DE),A + INC DE + CALL GetTime + LD B,COLORP.PANEL + COLORI.FILES + LD C,COLORP.PANEL + COLORI.SELECTFILES + CALL InsPrnColor + CALL ResInvert + PUSH IY + GETPORT WINSP.Y_PORT ; ࠭塞 Y + LD C,A + GETPORT WINSP.CPU1 + LD B,A + PUSH BC + SETPORT WINSP.CPU1,0x50 + LD L,(IY+PANEL.XL) + LD H,(IY+PANEL.XH) + LD DE,4 + ADD HL,DE + LD DE,71 << 8 | 63 + LD BC,136 << 8 | 144 + PUSH HL + CALL ScrollDIRDownUp + POP DE + LD HL,WorkBuffer+0x200 + LD BC,38 << 8 | 199 + CALL PrintName + POP BC + LD A,B + SETPORT WINSP.CPU1,,0 + LD A,C + SETPORT WINSP.Y_PORT,,0 + POP IY + LD L,(IY+PANEL.FFL) + LD H,(IY+PANEL.FFH) + INC HL + LD (IY+PANEL.FFL),L + LD (IY+PANEL.FFH),H + CALL SetInvert + CALL PrnFileInfo + PUSH IY + POP IX + LD DE,PANEL.BARXL + ADD IX,DE + JP PrnVScrBar + +ScrlUpT + GETPORT WINSP.CPU1 + PUSH AF + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + LD A,(RAMPAGES.LEFTPANEL) + JR Z,.L1 + LD A,(RAMPAGES.RIGHTPANEL) +.L1 + SETPORT WINSP.CPU1,,0 + LD HL,WorkBuffer + LD B,0x18 + LD A,0x80 + PUSH HL +.L2 LD (HL),A + INC L + DJNZ .L2 + POP DE + LD L,(IY+PANEL.FFL) + LD H,(IY+PANEL.FFH) + LD BC,0x0012 + ADD HL,BC + LD C,L + LD B,H + LD HL,0x4000 +ScrDup1 PUSH BC + LD A,(HL) + AND 0x7F + LD E,A + LD A,(HL) + LD (DE),A + LD BC,0x0010 + ADD HL,BC + POP BC + DEC BC + LD A,B + OR C + JR NZ,ScrDup1 + LD DE,WorkBuffer+0x100 + LD BC,0x0010 + LDIR + POP AF + SETPORT WINSP.CPU1,,0 + LD HL,WorkBuffer+0x100 + LD DE,WorkBuffer+0x200 + CALL MakeTreeLine + LD B,COLORP.PANEL + COLORI.FILES + LD C,COLORP.PANEL + COLORI.SELECTFILES + CALL InsPrnColor + CALL ResInvert + PUSH IY + GETPORT WINSP.Y_PORT ; ࠭塞 Y + LD C,A + GETPORT WINSP.CPU1 + LD B,A + PUSH BC + SETPORT WINSP.CPU1,0x50 + LD L,(IY+PANEL.XL) + LD H,(IY+PANEL.XH) + LD DE,6 + ADD HL,DE + LD DE,71 << 8 | 63 + LD BC,136 << 8 | 144 + PUSH HL + CALL ScrollDIRDownUp + POP DE + LD HL,WorkBuffer+0x200 + LD BC,36 << 8 | 199 + CALL PrintName + POP BC + LD A,B + SETPORT WINSP.CPU1,,0 + LD A,C + SETPORT WINSP.Y_PORT,,0 + POP IY + LD L,(IY+PANEL.FFL) + LD H,(IY+PANEL.FFH) + INC HL + LD (IY+PANEL.FFL),L + LD (IY+PANEL.FFH),H + CALL SetInvert + CALL PrnFileInfo + PUSH IY + POP IX + LD DE,PANEL.BARXL + ADD IX,DE + JP PrnVScrBar + +; 室: +; HL - X +; D - Y 㤠 +; - Y 㤠 +; B - +; C - ਭ +ScrollDIRDownUp: + SRL H + RR L + SET 6,H + LD A,B + LD (.ScrlLen),A + DI + LD B,C + ACCEL ACCELCMD.SET_BUFFER + LD A,0x00 +.ScrlLen EQU $-1 + ACCEL ACCELCMD.OFF +.ScRect1 LD A,D + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.COPY_VERT + LD A,(HL) + ACCEL ACCELCMD.OFF + LD A,E + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.COPY_VERT + LD (HL),A + ACCEL ACCELCMD.OFF + INC HL + DJNZ .ScRect1 + EI + RET + +;[]===========================================================[] +CursLeft BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + RET NZ + LD A,(IY+PANEL.EFL) + OR (IY+PANEL.EFH) + RET Z + LD L,(IY+PANEL.CFL) + LD H,(IY+PANEL.CFH) + LD A,H + OR L + JP Z,PageUp + LD DE,0x0011 + SBC HL,DE + JR NC,CursLRex + LD HL,0x0000 + JR CursLRex + +CursRight BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + RET NZ + LD A,(IY+PANEL.EFL) + OR (IY+PANEL.EFH) + RET Z + LD L,(IY+PANEL.CFL) + LD H,(IY+PANEL.CFH) + LD E,(IY+PANEL.FPL) + LD D,(IY+PANEL.FPH) + DEC DE + OR A + PUSH HL + SBC HL,DE + POP HL + JP Z,PageDown + LD DE,0x0011 + ADD HL,DE + BIT VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG) + JR NZ,.L1 + LD DE,0x0032 +.L1 EX DE,HL + SBC HL,DE + JR NC,CursRg1 + LD E,(IY+PANEL.FPL) + LD D,(IY+PANEL.FPH) + DEC DE +CursRg1 EX DE,HL + PUSH HL + LD E,(IY+PANEL.FFL) + LD D,(IY+PANEL.FFH) + ADD HL,DE + LD C,(IY+PANEL.EFL) + LD B,(IY+PANEL.EFH) + OR A + SBC HL,BC + POP HL + JR C,CursLRex + LD L,C + LD H,B + OR A + SBC HL,DE + DEC HL + PUSH HL + LD E,(IY+PANEL.CFL) + LD D,(IY+PANEL.CFH) + OR A + SBC HL,DE + POP HL + RET Z +CursLRex PUSH HL + CALL ResInvert + POP HL + LD (IY+PANEL.CFL),L + LD (IY+PANEL.CFH),H + CALL SetInvert + JP PrnFileInfo + +;[]===========================================================[] +PageUp LD A,(IY+PANEL.EFL) + OR (IY+PANEL.EFH) + RET Z + LD L,(IY+PANEL.FFL) + LD H,(IY+PANEL.FFH) + LD A,H + OR L + JP Z,Home + PUSH HL + CALL ResInvert + POP HL + LD E,(IY+PANEL.FPL) + LD D,(IY+PANEL.FPH) + OR A + SBC HL,DE + JR NC,.L1 + LD HL,0x0000 +.L1 LD (IY+PANEL.FFL),L + LD (IY+PANEL.FFH),H + JR PageUDex + +PageDown LD C,(IY+PANEL.EFL) + LD B,(IY+PANEL.EFH) + LD A,B + OR C + RET Z + LD L,(IY+PANEL.FFL) + LD H,(IY+PANEL.FFH) + LD E,(IY+PANEL.FPL) + LD D,(IY+PANEL.FPH) + ADD HL,DE + OR A + SBC HL,BC + JP NC,End + PUSH HL + PUSH BC + CALL ResInvert + POP BC + POP HL + ADD HL,BC + LD (IY+PANEL.FFL),L + LD (IY+PANEL.FFH),H + LD E,(IY+PANEL.CFL) + LD D,(IY+PANEL.CFH) + ADD HL,DE + OR A + SBC HL,BC + JR C,PageUDex + LD L,C + LD H,B + LD E,(IY+PANEL.FFL) + LD D,(IY+PANEL.FFH) + OR A + SBC HL,DE + DEC HL + LD (IY+PANEL.CFL),L + LD (IY+PANEL.CFH),H +PageUDex CALL PrintDIR + CALL SetInvert + CALL PrnFileInfo + PUSH IY + POP IX + LD DE,PANEL.BARXL + ADD IX,DE + LD A,(IY+PANEL.VIEWFLAG) + AND VIEWFLAG.MASK + PUSH AF + CALL Z,PrnHScrBar + POP AF + CALL NZ,PrnVScrBar + LD B,0x07 +PgUDext PUSH BC + SPMOUSE MOUSEF.READ_STATE + POP BC + BIT 0,A + RET Z + HALT + DJNZ PgUDext + RET + +;[]===========================================================[] +Home LD A,(IY+PANEL.EFL) + OR (IY+PANEL.EFH) + RET Z + LD A,(IY+PANEL.FFL) + OR (IY+PANEL.FFH) + JR NZ,Home1 + LD A,(IY+PANEL.CFL) + OR (IY+PANEL.CFH) + RET Z + CALL ResInvert + SUB A + LD (IY+PANEL.CFL),A + LD (IY+PANEL.CFH),A + CALL SetInvert + JP PrnFileInfo + +Home1 CALL ResInvert + SUB A + LD (IY+PANEL.FFL),A + LD (IY+PANEL.FFH),A + LD (IY+PANEL.CFL),A + LD (IY+PANEL.CFH),A + JR PageUDex + +End LD C,(IY+PANEL.EFL) + LD B,(IY+PANEL.EFH) + LD A,B + OR C + RET Z + LD L,(IY+PANEL.FFL) + LD H,(IY+PANEL.FFH) + LD E,(IY+PANEL.CFL) + LD D,(IY+PANEL.CFH) + ADD HL,DE + INC HL + OR A + SBC HL,BC + RET Z + PUSH BC + CALL ResInvert + POP BC + LD L,(IY+PANEL.FFL) + LD H,(IY+PANEL.FFH) + BIT VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG) + LD E,(IY+PANEL.FPL) + LD D,(IY+PANEL.FPH) + ADD HL,DE + INC HL + OR A + SBC HL,BC + JR Z,End1 + JR C,End1 + LD L,(IY+PANEL.EFL) + LD H,(IY+PANEL.EFH) + LD E,(IY+PANEL.FFL) + LD D,(IY+PANEL.FFH) + OR A + SBC HL,DE + DEC HL + LD (IY+PANEL.CFL),L + LD (IY+PANEL.CFH),H + CALL SetInvert + CALL PrnFileInfo + RET +End1 LD L,C + LD H,B + OR A + SBC HL,DE + LD (IY+PANEL.FFL),L + LD (IY+PANEL.FFH),H + BIT VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG) + LD L,(IY+PANEL.FPL) + LD H,(IY+PANEL.FPH) + DEC HL + LD (IY+PANEL.CFL),L + LD (IY+PANEL.CFH),H + JP PageUDex + +;[]==========================================================[] +NewFile LD A,(IY+PANEL.EFL) + OR (IY+PANEL.EFH) + RET Z + LD A,(IY+PANEL.VIEWFLAG) + AND VIEWFLAG.MASK + LD A,0x00 + JR NZ,NewFile1 + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + LD BC,0x0068 + JR Z,.L1 + LD BC,0x01A8 +.L1 OR A + SBC HL,BC + JR C,NewFile1 + ADD HL,BC + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + LD BC,0x0070 + JR Z,.L2 + LD BC,0x01B0 +.L2 SBC HL,BC + RET C + ADD HL,BC + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + LD BC,0x00D0 + JR Z,.L3 + LD BC,0x0210 +.L3 SBC HL,BC + LD A,0x11 + JR C,NewFile1 + ADD HL,BC + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + LD BC,0x00D8 + JR Z,.L4 + LD BC,0x0218 +.L4 SBC HL,BC + RET C + ADD HL,BC + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + LD BC,0x0138 + JR Z,.L5 + LD BC,0x0278 +.L5 SBC HL,BC + RET NC + LD A,0x22 +NewFile1 LD HL,0x003F + OR A + EX DE,HL + SBC HL,DE + SRL H + RR L + SRL H + RR L + SRL H + RR L + LD C,A + LD B,0x00 + ADD HL,BC + LD C,(IY+PANEL.CFL) + LD B,(IY+PANEL.CFH) + OR A + SBC HL,BC + JP Z,OpenFile + ADD HL,BC + LD E,(IY+PANEL.FFL) + LD D,(IY+PANEL.FFH) + ADD HL,DE + LD C,(IY+PANEL.EFL) + LD B,(IY+PANEL.EFH) + OR A + SBC HL,BC + RET NC + ADD HL,BC + OR A + SBC HL,DE + PUSH HL + CALL ResInvert + POP HL + LD (IY+PANEL.CFL),L + LD (IY+PANEL.CFH),H + CALL SetInvert + CALL PrnFileInfo + JP ResFire + +;[]==========================================================[] +OpenFile BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + IF TREE_REZID + JP NZ,RESIDENT.TestTreeBeg + ELSE + JP NZ,TestTreeR.TestTreeBeg + ENDIF + LD A,(IY+PANEL.EFL) + OR (IY+PANEL.EFH) + RET Z + GETPORT WINSP.CPU1 + PUSH AF + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + LD A,(RAMPAGES.LEFTPANEL) + JR Z,.L1 + LD A,(RAMPAGES.RIGHTPANEL) +.L1 + SETPORT WINSP.CPU1,,0 + LD L,(IY+PANEL.FFL) + LD H,(IY+PANEL.FFH) + LD E,(IY+PANEL.CFL) + LD D,(IY+PANEL.CFH) + ADD HL,DE + ADD HL,HL ; *2 + ADD HL,HL ; *4 + ADD HL,HL ; *8 + LD E,L + LD D,H + ADD HL,HL ; *10 + ADD HL,DE ; *18 + SET 6,H ; | 0x4000 + LD DE,WorkBuffer + LD BC,FileHDR.Attr + PUSH HL + ADD HL,BC + LDI + POP HL + INC HL + CALL MakeDOSname + POP AF + SETPORT WINSP.CPU1,,0 + LD HL,WorkBuffer + BIT 4,(HL) + INC HL + JP Z,RunEXEfile + LD A,(HL) + CP '.' + JR NZ,OpenF2 + PUSH HL + PUSH IY + POP HL + LD DE,PANEL.CURRPATH + ADD HL,DE + SUB A +.L2 INC HL + CP (HL) + JR NZ,.L2 + LD A,0x5C + DEC HL + CP (HL) + JR Z,OpenF1 +.L3 DEC HL + CP (HL) + JR NZ,.L3 + INC HL + SUB A + LD DE,PrevDIR +.L4 LDI + CP (HL) + JR NZ,.L4 + LD (DE),A + LD A,'.' +OpenF1 POP HL +OpenF2 PUSH AF + PUSH HL + CALL ResInvert + POP HL + CALL SetClock + PUSH IY + SPDSS DSSF.CHDIR + POP IY + CALL C,DOSError + CALL ReadDIR + PUSH IY + PUSH IY + SPDSS DSSF.CURDISK + POP HL + LD DE,PANEL.CURRPATH + ADD HL,DE + ADD A,'A' + LD (HL),A + INC HL + LD (HL),':' + INC HL + SPDSS DSSF.CURDIR + POP IY + CALL PrintPath + BIT PANELFLAG.B_PRNDOSPATH,(IY+PANEL.PANELFLAG) + CALL NZ,PrintDOSPath + POP AF + CP '.' + CALL Z,FindPrevDIR + CALL PrintDIR + CALL SetInvert + CALL PrnFileInfo + PUSH IY + POP IX + LD DE,PANEL.BARXL + ADD IX,DE + CALL InitScrollBar + LD A,(IY+PANEL.VIEWFLAG) + AND VIEWFLAG.MASK + PUSH AF + CALL Z,PrnHScrBar + POP AF + CALL NZ,PrnVScrBar + CALL SetMouse + LD A,(TreeFlag) + OR A + JP Z,ResFire + PUSH IY + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + LD IY,LeftPanel + LD HL,RightPanel + JR NZ,.L5 + LD IY,RightPanel + LD HL,LeftPanel +.L5 LD DE,PANEL.CURRPATH + ADD HL,DE + INC HL + INC HL + IF TREE_REZID + CALL RESIDENT.FindTreeDIR + ELSE + CALL FindTreeDIRR + ENDIF + CALL PrintDIR + CALL PrnFileInfo + PUSH IY + POP IX + LD DE,PANEL.BARXL + ADD IX,DE + CALL PrnVScrBar + POP IY + RET + +;[]==========================================================[] +ChPanel CALL ResInvert + LD A,(LeftPanel) + XOR 0x80 + LD (LeftPanel),A + LD A,(RightPanel) + XOR 0x80 + LD (RightPanel),A + CALL PrintPath + BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + JR Z,ChPan1 + GETPORT WINSP.CPU1 + PUSH AF + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + LD A,(RAMPAGES.LEFTPANEL) + JR Z,.L1 + LD A,(RAMPAGES.RIGHTPANEL) +.L1 + SETPORT WINSP.CPU1,,0 + SETPORT WINSP.Y_PORT,0xC0 + LD L,(IY+PANEL.FFL) + LD H,(IY+PANEL.FFH) + LD E,(IY+PANEL.CFL) + LD D,(IY+PANEL.CFH) + ADD HL,DE + ADD HL,HL + ADD HL,HL + ADD HL,HL + ADD HL,HL + SET 6,H + INC HL + SET 1,(HL) + POP AF + SETPORT WINSP.CPU1,,0 + CALL PrintDIR +ChPan1 LD IY,LeftPanel + BIT PANELFLAG.B_PRNDOSPATH,(IY+PANEL.PANELFLAG) + JR NZ,.L1 + LD IY,RightPanel +.L1 CALL PrintPath + CALL PrintDOSPath + BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + JR Z,ChPan2 + GETPORT WINSP.CPU1 + PUSH AF + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + LD A,(RAMPAGES.LEFTPANEL) + JR Z,.L2 + LD A,(RAMPAGES.RIGHTPANEL) +.L2 + SETPORT WINSP.CPU1,,0 + SETPORT WINSP.Y_PORT,0xC0 + LD L,(IY+PANEL.FFL) + LD H,(IY+PANEL.FFH) + LD E,(IY+PANEL.CFL) + LD D,(IY+PANEL.CFH) + ADD HL,DE + ADD HL,HL + ADD HL,HL + ADD HL,HL + ADD HL,HL + SET 6,H + INC HL + RES 1,(HL) + POP AF + SETPORT WINSP.CPU1,,0 + CALL PrintDIR +ChPan2 CALL SetInvert + PUSH IY + POP HL + LD DE,PANEL.CURRPATH + ADD HL,DE + PUSH IY + SPDSS DSSF.CHDIR + POP IY + RET NC + CALL DOSError + JP BegDIRECTORY + +;[]==========================================================[] +ChangeDriveL LD IX,LeftPanel + JR ChangeDrive + +ChangeDriveR LD IX,RightPanel +ChangeDrive PUSH IY + PUSH IX + POP IY + LD C,(IY+PANEL.XL) + LD B,(IY+PANEL.XH) + INC BC + INC BC + OR A + SBC HL,BC + LD BC,0x001C + LD A,0xFF +.L1 INC A + SBC HL,BC + JR NC,.L1 + ADD A,'A' + PUSH IY + POP HL + LD DE,PANEL.CURRPATH + ADD HL,DE + LD (HL),D + LD HL,NewDrive + LD (HL),A + CALL NewDIRECTORY + LD A,(AutoActivatePanel) + AND A + JR NZ,loc_C82E + BIT PANELFLAG.B_PRNDOSPATH,(IY+PANEL.PANELFLAG) + POP IY + JP Z,ChPanel ; RET NZ + RET + +loc_C82E BIT PANELFLAG.B_PRNDOSPATH,(IY+PANEL.PANELFLAG) + POP IY + RET NZ + PUSH IY + POP HL + LD DE,PANEL.CURRPATH + ADD HL,DE + PUSH IY + SPDSS DSSF.CHDIR + POP IY + RET NC + CALL DOSError + JP BegDIRECTORY + +NewDrive DZ " :\\" + +;[]==========================================================[] +ReplacePanels LD IX,LeftPanel + SET PANELFLAG.B_SIDE,(IX+PANEL.PANELFLAG) + LD L,(IX+PANEL.XL) + LD H,(IX+PANEL.XH) + LD IX,RightPanel + RES PANELFLAG.B_SIDE,(IX+PANEL.PANELFLAG) + LD E,(IX+PANEL.XL) + LD D,(IX+PANEL.XH) + LD (IX+PANEL.XL),L + LD (IX+PANEL.XH),H + LD IX,LeftPanel + LD (IX+PANEL.XL),E + LD (IX+PANEL.XH),D + LD HL,RAMPAGES.LEFTPANEL + LD DE,RAMPAGES.RIGHTPANEL + LD A,(DE) + LDI + DEC HL + LD (HL),A + LD HL,LeftPanel + LD DE,RightPanel + LD BC,PANEL.CURRPATH + 0x100 +ReplPan LD A,(DE) + LDI + DEC HL + LD (HL),A + INC HL + JP PE,ReplPan + LD A,0x01 + JP InitPanels + +;[]==========================================================[] +ShowDOSscreen CALL ResVideoMode +ShowDSlp + SPDSS DSSF.SCANKEY + JR NZ,ShowDSexit + SPMOUSE MOUSEF.READ_STATE + OR A + JR Z,ShowDSlp +ShowDSexit + SPDSS DSSF.SETVMOD,0,SETVMOD.GRF640X256 + JP ResFire + +;[]==========================================================[] +RunEXEfile: LD IX,fn_ext + LD DE,PrevFile + PUSH DE + SUB A +.L1 LDI + CP (HL) + JR NZ,.L1 + LD (DE),A + POP DE + LD L,E + LD H,D + LD A,'.' +.L2 INC HL + CP (HL) + JR NZ,.L2 + INC HL + LD A,(HL) + INC HL + RES 5,A + cp 'B' + jp z,RunBATfile + CP 'F' + JP Z,RunFLXfile + CP 'E' + JP NZ,TestEXT + LD A,(HL) + INC HL + RES 5,A + CP 'X' + JP NZ,TestEXT + LD A,(HL) + RES 5,A + CP 'E' + JP NZ,TestEXT +RunFile: PUSH DE + CALL ResDrivers + SUB A + CALL ClearScreen + CALL ResVideoMode + POP HL + SPDSS DSSF.EXEC,0 + PUSH AF + SETPORT BORDER,0 + ;!FIXIT ஢ SAFE_PORTY + SETPORT WINSP.Y_PORT,0xC0 + CALL InitVideoMode + CALL InitDrivers + CALL InitScreen + CALL ClearDOSline + LD A,0x02 + CALL InitPanels + POP AF + JP C,DOSError + RET + +;[]----------------------------------------------------------[] +RunBATfile: LD A,(HL) + INC HL + RES 5,A + CP 'A' + JP NZ,TestEXT + LD A,(HL) + RES 5,A + CP 'T' + JP NZ,TestEXT + PUSH DE + ld hl,ShellFile + ld de,WorkBuffer + call CopyString + bit PANELFLAG.B_SIDE,(iy+PANEL.PANELFLAG) + ld hl,RightPanel + PANEL.CURRPATH + jr nz,.next + ld hl,LeftPanel + PANEL.CURRPATH +.next: call ConcatString + dec de + ex hl,de + ld a,'\\' + cp (hl) + jr z,.skipSlash + inc hl + ld (hl),a +.skipSlash: inc hl + ex hl,de + pop hl + call CopyString + ld de,WorkBuffer + jr RunFile + +;[]----------------------------------------------------------[] +; FLX ENTER +RunFLXfile LD A,(HL) + INC HL + RES 5,A + CP 'L' + JP NZ,TestEXT + LD A,(HL) + RES 5,A + CP 'X' + JP NZ,TestEXT + EX DE,HL + LD DE,WorkBuffer + SUB A +.L1 LDI + CP (HL) + JR NZ,.L1 + LD (DE),A + CALL RunFLX + JP C,DOSError + RET + +;[]-----------------------------------------------------------[] +TestEXT: PUSH IX + LD IXL,E + LD IXH,D + EX DE,HL + LD A,'.' +.L1 INC HL + CP (HL) + JR NZ,.L1 + INC HL + EX DE,HL + POP HL + GETPORT WINSP.CPU1 + PUSH AF + LD A,(RAMPAGES.FNHELP) + SETPORT WINSP.CPU1,,0 +TestEXT1: LD C,(HL) + INC HL + LD B,(HL) + INC HL + LD A,B + OR C + JR Z,TestEND + PUSH DE + EX DE,HL + LD A,(DE) + INC DE + CP '?' + JR Z,.L1 + CP (HL) + JR NZ,TestEXTn +.L1 INC HL + LD A,(DE) + INC DE + CP '?' + JR Z,.L2 + CP (HL) + JR NZ,TestEXTn +.L2 INC HL + LD A,(DE) + INC DE + CP '?' + JR Z,TestEXTn + CP (HL) +TestEXTn: EX DE,HL + POP DE + JR Z,TestEXTok + LD L,C + LD H,B + JR TestEXT1 + +TestEND: POP AF + SETPORT WINSP.CPU1,,0 + SCF + RET + +TestEXTok: LD DE,WorkBuffer + LD C,0x00 +TstEXT0: LD A,C + LDI + LD C,A + LD A,(HL) + OR A + JR Z,TstEXT2 + CP ' ' + JR Z,TstEXT1 + CP '.' + JR NZ,TstEXT0 + LD (DE),A + INC HL + INC DE + LD A,(HL) + LD (DE),A + INC HL + INC DE + CP ' ' + JR Z,TstEXT1 + RES 5,A + CP 'F' + JR NZ,.L1 + SET 0,C +.L1 LD A,(HL) + LD (DE),A + INC HL + INC DE + CP ' ' + JR Z,TstEXT1 + RES 5,A + CP 'L' + JR NZ,.L2 + SET 1,C +.L2 LD A,(HL) + LD (DE),A + INC HL + INC DE + CP ' ' + JR Z,TstEXT1 + RES 5,A + CP 'X' + JR NZ,TstEXT1 + SET 2,C +TstEXT1: LD A,(HL) + CP '!' + JR NZ,TstEX11 + INC HL + LD A,(HL) + CP '.' + JP Z,EName + CP ':' + JP Z,EDrive + CP '\\' + JP Z,EPath + DEC HL +TstEX11: LD (DE),A + INC HL + INC DE + OR A + JR NZ,TstEXT1 +TstEXT2: LD (DE),A + POP AF + SETPORT WINSP.CPU1,,0 + LD HL,WorkBuffer + LD A,C + CP 0x07 + JP Z,RunFLX + LD DE,WorkBuffer+0x100 + PUSH IY + SPDSS DSSF.F_FIRST,1,0x37 + POP IY + JP C,RestoreDIR + CALL ResDrivers + SUB A + CALL ClearScreen + CALL ResVideoMode + LD HL,WorkBuffer + SPDSS DSSF.EXEC,0 + PUSH AF + SETPORT BORDER,0 + ; !FIXIT ஢ SAFE_PORTY + SETPORT WINSP.Y_PORT,0xC0 + CALL InitVideoMode + CALL InitDrivers + CALL InitScreen + CALL ClearDOSline + LD A,0x02 + CALL InitPanels + POP AF + CALL C,DOSError + OR A + RET + +RestoreDIR: PUSH AF + PUSH IY + POP HL + LD BC,PANEL.CURRPATH + ADD HL,BC + PUSH IY + SPDSS DSSF.CHDIR + POP IY + POP AF + RET + +EName: INC HL + LD A,(HL) + DEC HL + CP '!' + JR NZ,TstEX11 + INC HL + PUSH HL + PUSH BC + LD HL,PrevFile + SUB A +.L1 LDI + CP (HL) + JR NZ,.L1 + POP BC + POP HL + INC HL + JP TstEXT1 +EDrive: LD A,(IY+PANEL.CURRPATH) + LD (DE),A + INC DE + LD A,':' + LD (DE),A + INC DE + INC HL + JP TstEXT1 + +EPath: PUSH HL + PUSH BC + PUSH IY + POP HL + LD BC,PANEL.CURRPATH + ADD HL,BC + SUB A +.L1 LDI + CP (HL) + JR NZ,.L1 + DEC HL + LD A,'\\' + CP (HL) + JR Z,.L2 + LD (DE),A + INC DE +.L2 POP BC + POP HL + INC HL + JP TstEXT1 + +; FLX 䠩 +RunFLX: LD HL,RestoreDIR + PUSH HL + LD HL,WorkBuffer + LD A,0x21 +.L1 INC HL + CP (HL) + JR C,.L1 + SUB A + LD (HL),A + INC HL + PUSH HL + LD HL,WorkBuffer + PUSH IY + SPDSS DSSF.OPEN,,1 + POP IY + POP HL + RET C + LD (.FLXHandle),A + PUSH HL + LD IX,0x0000 + LD HL,0x0000 + PUSH IY + SPDSS DSSF.MOVE_FP,2 + POP IY + LD A,IXH + AND 0xC0 + OR H + OR L + POP HL + SCF + LD A,0x1E + RET NZ + PUSH IY + PUSH HL + ; !FIXIT ஢ ⮣ SAFE_PORTY + SETPORT WINSP.Y_PORT,0xC0 + LD IX,0x0000 + LD HL,0x0000 + LD A,(.FLXHandle) + SPDSS DSSF.MOVE_FP,0 + GETPORT WINSP.CPU1 + PUSH AF + LD A,(RAMPAGES.FLX) + SETPORT WINSP.CPU1,,0 + LD HL,WorkBuffer + 0x0100 + LD DE,0x0010 + LD A,(.FLXHandle) + PUSH HL + SPDSS DSSF.READ + POP HL + JR C,.L2 + LD A,(HL) + INC HL + CP 'F' + SCF + LD A,0x10 + JR NZ,.L2 + LD A,(HL) + INC HL + CP 'L' + SCF + LD A,0x10 + JR NZ,.L2 + LD A,(HL) + INC HL + CP 'X' + SCF + LD A,0x10 + JR NZ,.L2 + LD L,0x08 + LD E,(HL) + INC HL + LD D,(HL) + INC HL + LD C,(HL) + INC HL + LD B,(HL) + INC HL + LD (.FLXexec),BC + LD A,(HL) + INC HL + LD (.FLXmode),A + RES 7,D + SET 6,D + LD HL,0x8000 + OR A + SBC HL,DE + EX DE,HL + LD A,(.FLXHandle) + SPDSS DSSF.READ +.L2: EX AF,AF' + POP AF + SETPORT WINSP.CPU1,,0 + EX AF,AF' + PUSH AF + LD A,(.FLXHandle) + SPDSS DSSF.CLOSE + POP AF + POP HL + POP IY + RET C + LD DE,0x0000 +.FLXexec EQU $-2 + SET 7,D + SET 6,D + LD A,(RAMPAGES.FLX) + LD C,WINSP.CPU3 + PUSH IY + CALL Resident + POP IY + CCF + RET NC + LD A,0x00 +.FLXmode: EQU $-1 + OR A + RET Z + INC SP + INC SP + SETPORT BORDER,0 + ; !FIXIT ஢ SAFE_PORTY + SETPORT WINSP.Y_PORT,0xC0 + CALL InitScreen + CALL ClearDOSline + LD A,0x02 + CALL InitPanels + OR A + RET + +.FLXHandle: DEFB 0x00 + +;[]===========================================================[] +Help: LD DE,HelpR + LD A,(RAMPAGES.FNHELP) + LD C,WINSP.CPU1 + JP Resident + +;[]----------------------------------------------------------[] +ViewFileSH: BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + RET NZ + LD A,(IY+PANEL.EFL) + OR (IY+PANEL.EFH) + RET Z + CALL ResInvert + LD HL,SetInvert + PUSH HL + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 200,81,240,62 + W_FILL 4,2,232,10,COLORI.BLACK + W_TEXT 108,3,COLORI.WHITE,"View" + W_BUTTON 40,42,72,14 + W_TEXT 68,45,COLORP.HIGHGRAY,"Ok" + W_BUTTON 128,42,72,14 + W_TEXT 148,45,COLORP.HIGHGRAY,"Cancel" + W_TEXT 12,25,COLORP.HIGHGRAY,"View the file:" + W_BORDER 86,22,134,12 + W_FILL 88,23,130,10,COLORI.WHITE + W_END + LD IX,ViewStr + LD HL,ViewEditTab + CALL InputLine + WINDOWCLOSE + RET C + LD A,(ViewLen) + OR A + RET Z + LD HL,ViewName + LD DE,PrevFile + LD B,A +ViewSH1: LD A,(HL) + CALL CorrBigChar + LD (HL),A + LD (DE),A + INC HL + INC DE + DJNZ ViewSH1 + SUB A + LD (DE),A + POP HL + CALL SetInvert + JP View + +ViewStr: DEFB 0x0C,0x00,0x00,0x00 +ViewLen: DEFB 0x00 + DEFW 0x0122,0x006A + DEFW 0x0068 + DEFB 0xF0 +ViewName: DB 0x0D DUP 0x00 + +;------------------------------------------- +ViewFile: SUB A + JR StViewFile.L1 + +;------------------------------------------- +StViewFile: LD A,0x01 +.L1 LD (VFlag+1),A + BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + RET NZ + LD A,(IY+PANEL.EFL) + OR (IY+PANEL.EFH) + RET Z + GETPORT WINSP.CPU1 + PUSH AF + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + LD A,(RAMPAGES.LEFTPANEL) + JR Z,.L2 ;!FIXIT + LD A,(RAMPAGES.RIGHTPANEL) +.L2 + SETPORT WINSP.CPU1,,0 + LD L,(IY+PANEL.FFL) + LD H,(IY+PANEL.FFH) + LD E,(IY+PANEL.CFL) + LD D,(IY+PANEL.CFH) + ADD HL,DE + ADD HL,HL ; *2 + ADD HL,HL ; *4 + ADD HL,HL ; *8 + LD E,L + LD D,H + ADD HL,HL ; *10 + ADD HL,DE ; *18 + SET 6,H ; | 0x4000 + LD DE,WorkBuffer + LD BC,FileHDR.Attr + PUSH HL + ADD HL,BC + LDI + POP HL + INC HL + CALL MakeDOSname + POP AF + SETPORT WINSP.CPU1,,0 + LD HL,WorkBuffer + BIT 4,(HL) + RET NZ + INC HL + LD DE,PrevFile + SUB A +.L3 LDI + CP (HL) + JR NZ,.L3 + LD (DE),A +VFlag: LD A,0x00 + OR A + JR NZ,View1 +View: LD IX,fnview_ext + LD DE,PrevFile + CALL TestEXT + RET NC +View1: CALL ResInvert + LD HL,SetInvert + PUSH HL + PUSH IY + LD HL,PrevFile + LD DE,0xC000 + LD A,(RAMPAGES.FNVIEW) + LD C,WINSP.CPU3 + CALL Resident + POP IY + RET C + SETPORT BORDER,0 + ; !FIXIT ஢ SAFE_PORTY + SETPORT WINSP.Y_PORT,0xC0 + CALL InitScreen + CALL ClearDOSline + LD A,0x02 + CALL InitPanels + POP HL + RET + +;[]----------------------------------------------------------[] +EditFileSH: BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + RET NZ + CALL ResInvert + LD HL,SetInvert + PUSH HL + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 200,81,240,62 + W_FILL 4,2,232,10,COLORI.BLACK + W_TEXT 110,3,COLORI.WHITE,"Edit" + W_BUTTON 40,42,72,14 + W_TEXT 68,45,COLORP.HIGHGRAY,"Ok" + W_BUTTON 128,42,72,14 + W_TEXT 148,45,COLORP.HIGHGRAY,"Cancel" + W_TEXT 12,25,COLORP.HIGHGRAY,"Edit the file:" + W_BORDER 86,22,134,12 + W_FILL 88,23,130,10,COLORI.WHITE + W_END + LD IX,EditStr + LD HL,ViewEditTab + CALL InputLine + WINDOWCLOSE + RET C + LD A,(EditLen) + OR A + RET Z + LD HL,EditName + LD DE,PrevFile + LD B,A +EditSH1: LD A,(HL) + CALL CorrBigChar + LD (HL),A + LD (DE),A + INC HL + INC DE + DJNZ EditSH1 + SUB A + LD (DE),A + POP HL + CALL SetInvert + JP Edit + +EditStr: DEFB 0x0C,0x00,0x00,0x00 +EditLen: DEFB 0x00 + DEFW 0x0122,0x006A + DEFW 0x0068 + DEFB 0xF0 +EditName: DB 0x0D DUP 0x00 + +;------------------------------------------- +EditFile: SUB A + JR StEditFile.L1 + +;------------------------------------------- +StEditFile: LD A,0x01 +.L1 LD (EFlag),A + BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + RET NZ + LD A,(IY+PANEL.EFL) + OR (IY+PANEL.EFH) + RET Z + GETPORT WINSP.CPU1 + PUSH AF + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + LD A,(RAMPAGES.LEFTPANEL) + JR Z,.L2 ;!FIXIT + LD A,(RAMPAGES.RIGHTPANEL) +.L2 + SETPORT WINSP.CPU1,,0 + LD L,(IY+PANEL.FFL) + LD H,(IY+PANEL.FFH) + LD E,(IY+PANEL.CFL) + LD D,(IY+PANEL.CFH) + ADD HL,DE + ADD HL,HL ; *2 + ADD HL,HL ; *4 + ADD HL,HL ; *8 + LD E,L + LD D,H + ADD HL,HL ; *10 + ADD HL,DE ; *18 + SET 6,H ; | 0x4000 + LD DE,WorkBuffer + LD BC,FileHDR.Attr + PUSH HL + ADD HL,BC + LDI + POP HL + INC HL + CALL MakeDOSname + POP AF + SETPORT WINSP.CPU1,,0 + LD HL,WorkBuffer + BIT 4,(HL) + RET NZ + INC HL + LD DE,PrevFile + SUB A +.L3 LDI + CP (HL) + JR NZ,.L3 + LD (DE),A + LD A,0x00 +EFlag: EQU $-1 + OR A + JR NZ,Edit1 +Edit: LD IX,fnedit_ext + LD DE,PrevFile + CALL TestEXT + RET NC +Edit1: CALL ResInvert + LD HL,SetInvert + PUSH HL + PUSH IY + LD HL,PrevFile + LD DE,CPU3 + LD A,(RAMPAGES.FNEDIT) + LD C,WINSP.CPU3 + CALL Resident + POP IY + RET C + SETPORT BORDER,0 + ; !FIXIT ஢ SAFE_PORTY + SETPORT WINSP.Y_PORT,0xC0 + CALL InitScreen + CALL ClearDOSline + LD A,0x02 + CALL InitPanels + POP HL + RET diff --git a/font.raw b/font.raw new file mode 100644 index 0000000..97d579a Binary files /dev/null and b/font.raw differ diff --git a/iff_font.raw b/iff_font.raw new file mode 100644 index 0000000..4660708 Binary files /dev/null and b/iff_font.raw differ diff --git a/plugins/build_all.bat b/plugins/build_all.bat new file mode 100644 index 0000000..854715d --- /dev/null +++ b/plugins/build_all.bat @@ -0,0 +1,20 @@ + +@echo off + +cls + +cd cdplayer +call build +cd ..\date +call build +cd ..\test +call build +cd ..\calc +call build +cd ..\fneditor +call build +cd ..\fnviewer +call build +cd ..\help +call build +cd.. diff --git a/plugins/calc/build.bat b/plugins/calc/build.bat new file mode 100644 index 0000000..635d559 --- /dev/null +++ b/plugins/calc/build.bat @@ -0,0 +1,21 @@ + +@echo off + +if not exist tmp md tmp +set path=d:\yad\svn\pentevo\tools\asl\bin\;d:\yad\svn\pentevo\tools\mhmt\;d:\yad\sprinter_src\tools\ +set includes=d:\yad\svn\pentevo\rom;d:\yad\sprinter_src\;d:\yad\sprinter_src\flexnav\src\ + +asl -U -L -C -x -olist tmp\calc.lst -i %includes% calc.a80 || goto error +p2bin calc.p ..\calc.flx -r $-$ -k + +echo ######################## +echo # -= End Compile Ok =- # +echo ######################## +goto exit + +:error +echo ####################### +echo # -= Error Compile =- # +echo ####################### + +:exit diff --git a/plugins/calc/calc.a80 b/plugins/calc/calc.a80 new file mode 100644 index 0000000..91eb8f9 --- /dev/null +++ b/plugins/calc/calc.a80 @@ -0,0 +1,348 @@ + +; LAST UPDATE: 20.03.2025 savelij + + include macros.a80 + include fn_const.a80 + include fn_macros.a80 + include ports_sp.a80 + include define_sp.a80 + include macros_sp.a80 + include dss_sp.a80 + + org PluginOrg ; #C000 - Header lenght +; Flex Navigator plugin header +PluginStart: db "FLX-PLUG" ; Id + dw 0x0000 ; LoadOffset + dw PluginEntry ; EntryOffset + db 0x00 ; PluginMode + db 0x00,0x00,0x00 ; Reserved + +PluginEntry: + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 242,80,155,97 + W_FILL 4,2,147,10,COLORI.BLACK + W_TEXT 6,3,COLORI.WHITE,"Calculator" + W_HORIZLINE 1,13,154 + W_BORDER 8,19,139,11 + W_BUTTON 8,34,26,13 + W_BUTTON 36,34,26,13 + W_BUTTON 64,34,26,13 + W_BUTTON 92,34,26,13 + W_BUTTON 120,34,26,13 + W_BUTTON 8,49,26,13 + W_BUTTON 36,49,26,13 + W_BUTTON 64,49,26,13 + W_BUTTON 92,49,26,13 + W_BUTTON 120,49,26,13 + W_BUTTON 8,64,26,13 + W_BUTTON 36,64,26,13 + W_BUTTON 64,64,26,13 + W_BUTTON 92,64,26,13 + W_BUTTON 120,64,26,28 + W_BUTTON 8,79,26,13 + W_BUTTON 36,79,26,13 + W_BUTTON 64,79,26,13 + W_BUTTON 92,79,26,13 + W_END + ld ix, 16h + ld hl, asc_C36E ; "7" + ld de, 107h + ld bc, 75h + ld a, 80h + call JUMPS.PrnRangPathC + ld hl, asc_C370 ; "8" + ld de, 123h + ld bc, 75h + ld a, 80h + call JUMPS.PrnRangPathC +sub_C103: ld hl, asc_C372 ; "9" + ld de, 140h + ld bc, 75h + ld a, 80h + call JUMPS.PrnRangPathC + ld hl, asc_C37F ; "/" + ld de, 15Bh + ld bc, 75h + ld a, 80h + call JUMPS.PrnRangPathC + ld hl, asc_C374 ; "C" + ld de, 177h + ld bc, 75h + ld a, 80h + call JUMPS.PrnRangPathC + ld hl, asc_C368 ; "4" + ld de, 107h + ld bc, 84h + ld a, 80h + call JUMPS.PrnRangPathC + ld hl, asc_C36A ; "5" + ld de, 123h + ld bc, 84h + ld a, 80h + call JUMPS.PrnRangPathC + ld hl, asc_C36C ; "6" + ld de, 140h + ld bc, 84h + ld a, 80h + call JUMPS.PrnRangPathC + ld hl, asc_C37D ; "*" + ld de, 15Bh + ld bc, 84h + ld a, 80h + call JUMPS.PrnRangPathC + ld hl, asc_C376 ; "CE" + ld de, 178h + ld bc, 84h + ld a, 80h + call JUMPS.PrnRangPathC + ld hl, asc_C362 ; "1" + ld de, 107h + ld bc, 93h + ld a, 80h + call JUMPS.PrnRangPathC + ld hl, asc_C364 ; "2" + ld de, 123h + ld bc, 93h + ld a, 80h + call JUMPS.PrnRangPathC + ld hl, asc_C366 ; "3" + ld de, 140h + ld bc, 93h + ld a, 80h + call JUMPS.PrnRangPathC + ld hl, asc_C37B ; "-" + ld de, 15Bh + ld bc, 93h + ld a, 80h + call JUMPS.PrnRangPathC + ld hl, asc_C387 ; "=" + ld de, 178h + ld bc, 9Ah + ld a, 80h + call JUMPS.PrnRangPathC + ld hl, asc_C360 ; "0" + ld de, 107h + ld bc, 0A2h + ld a, 80h + call JUMPS.PrnRangPathC + ld hl, asc_C381 ; "+/-" + ld de, 123h + ld bc, 0A2h + ld a, 80h + call JUMPS.PrnRangPathC + ld hl, asc_C385 ; "." + ld de, 13Fh + ld bc, 0A2h + ld a, 80h + call JUMPS.PrnRangPathC + ld hl, asc_C379 ; "+" + ld de, 15Bh + ld bc, 0A2h + ld a, 80h + call JUMPS.PrnRangPathC + call JUMPS.ResFire +loc_C1F4: call sub_C324 +loc_C1F7: ld ix, PluginMouseTab + call JUMPS.TestCoords + SPDSS DSSF.SCANKEY + jp z, loc_C1F7 + ld a, b + or a + jp nz, loc_C1F7 + ld a, e + cp '0' + jp z, loc_C2CD + cp '1' + jp z, loc_C2CD + cp '2' + jp z, loc_C2CD + cp '3' + jp z, loc_C2CD + cp '4' + jp z, loc_C2CD + cp '5' + jp z, loc_C2CD + cp '6' + jp z, loc_C2CD + cp '7' + jp z, loc_C2CD + cp '8' + jp z, loc_C2CD + cp '9' + jp z, loc_C2CD + cp '.' + jp z, loc_C2CD + cp 'S' + jp z, loc_C283 + cp 's' + jp z, loc_C283 + cp 'R' + jp z, loc_C266 + cp 'r' + jp z, loc_C266 + cp 8 + jp z, loc_C304 + cp 1Bh + jp nz, loc_C1F4 + WINDOWCLOSE + or a + ret + +loc_C266: ld a, 20h ; ' ' + ld (byte_C33F), a + ld a, 30h ; '0' + ld (byte_C340), a + xor a + ld (byte_C33E), a + ld (byte_C33D), a + ld b, 0Ah + ld hl, byte_C341 +loc_C27C: ld (hl), a + inc hl + djnz loc_C27C + jp loc_C1F4 + +loc_C283: ld hl, byte_C340 + ld a, (hl) + cp 30h ; '0' + jp z, loc_C1F7 + ld hl, byte_C33F + ld a, (hl) + xor 0Dh + ld (hl), a + jp loc_C1F4 + +loc_C296: ld a, '0' + jp loc_C2CD + +loc_C29B: ld a, '1' + jp loc_C2CD + +loc_C2A0: ld a, '2' + jp loc_C2CD + +loc_C2A5: ld a, '3' + jp loc_C2CD + +loc_C2AA: ld a, '4' + jp loc_C2CD + +loc_C2AF: ld a, '5' + jp loc_C2CD + +loc_C2B4: ld a, '6' + jp loc_C2CD + +loc_C2B9: ld a, '7' + jp loc_C2CD + +loc_C2BE: ld a, '8' + jp loc_C2CD + +loc_C2C3: ld a, '9' + jp loc_C2CD + +loc_C2C8: ld a, '.' + jp loc_C2CD + +loc_C2CD: ld c, a + ld a, (byte_C33E) + cp 0Bh + jp z, loc_C1F4 + ld e, a + ld d, 0 + ld hl, byte_C340 + ld a, (hl) + cp '0' + jr nz, loc_C2E7 + ld a, c + cp '0' + jp z, loc_C1F4 +loc_C2E7: ld a, c + cp '.' + jr nz, loc_C2F8 + ld a, (byte_C33D) + or a + jp nz, loc_C1F4 + ld a, 0FFh + ld (byte_C33D), a +loc_C2F8: add hl, de + ld (hl), c + ld a, (byte_C33E) + inc a + ld (byte_C33E), a + jp loc_C1F4 + +loc_C304: ld a, (byte_C33E) + cp 1 + jp z, loc_C266 + dec a + ld (byte_C33E), a + ld e, a + ld d, 0 + ld hl, byte_C340 + add hl, de + ld a, (hl) + cp '.' + jr nz, loc_C320 + ld a, d + ld (byte_C33D), a +loc_C320: ld (hl), d + jp loc_C1F4 + +sub_C324: ld hl, asc_C34D + call sub_C32D + ld hl, byte_C33F +sub_C32D: ld ix, 48h + ld de, 183h + ld bc, 65h + ld a, 80h + call JUMPS.PrnRangPathR + ret + +byte_C33D: db 0 +byte_C33E: db 0 +byte_C33F: db 20h +byte_C340: db 30h +byte_C341: db 0Ch DUP 0 +asc_C34D: DB " ",0 +asc_C360: DB "0",0 +asc_C362: DB "1",0 +asc_C364: DB "2",0 +asc_C366: DB "3",0 +asc_C368: DB "4",0 +asc_C36A: DB "5",0 +asc_C36C: DB "6",0 +asc_C36E: DB "7",0 +asc_C370: DB "8",0 +asc_C372: DB "9",0 +asc_C374: DB "C",0 +asc_C376: DB "CE",0 +asc_C379: DB "+",0 +asc_C37B: DB "-",0 +asc_C37D: DB "*",0 +asc_C37F: DB "/",0 +asc_C381: DB "+/-",0 +asc_C385: DB ".",0 +asc_C387: DB "=",0 + +PluginMouseTab: dw 0x00FA,0x0114,0x0072,0x007F,0x0021,0x0000,loc_C2B9,0x0000 + dw 0x0116,0x0130,0x0072,0x007F,0x0021,0x0000,loc_C2BE,0x0000 + dw 0x0132,0x014C,0x0072,0x007F,0x0021,0x0000,loc_C2C3,0x0000 + dw 0x014E,0x0168,0x0072,0x007F,0x0021,0x0000,loc_C266,0x0000 + dw 0x016A,0x0184,0x0072,0x007F,0x0021,0x0000,loc_C266,0x0000 + dw 0x00FA,0x0114,0x0081,0x008E,0x0021,0x0000,loc_C2AA,0x0000 + dw 0x0116,0x0130,0x0081,0x008E,0x0021,0x0000,loc_C2AF,0x0000 + dw 0x0132,0x014C,0x0081,0x008E,0x0021,0x0000,loc_C2B4,0x0000 + dw 0x014E,0x0168,0x0081,0x008E,0x0021,0x0000,loc_C266,0x0000 + dw 0x016A,0x0184,0x0081,0x008E,0x0021,0x0000,loc_C304,0x0000 + dw 0x00FA,0x0114,0x0090,0x009D,0x0021,0x0000,loc_C29B,0x0000 + dw 0x0116,0x0130,0x0090,0x009D,0x0021,0x0000,loc_C2A0,0x0000 + dw 0x0132,0x014C,0x0090,0x009D,0x0021,0x0000,loc_C2A5,0x0000 + dw 0x014E,0x0168,0x0090,0x009D,0x0021,0x0000,loc_C266,0x0000 + dw 0x016A,0x0184,0x0090,0x00AC,0x0021,0x0000,loc_C266,0x0000 + dw 0x00FA,0x0114,0x009F,0x00AC,0x0021,0x0000,loc_C296,0x0000 + dw 0x0116,0x0130,0x009F,0x00AC,0x0021,0x0000,loc_C283,0x0000 + dw 0x0132,0x014C,0x009F,0x00AC,0x0021,0x0000,loc_C2C8,0x0000 + dw 0x014E,0x0168,0x009F,0x00AC,0x0021,0x0000,loc_C266,0x0000 + dw 8000h diff --git a/plugins/cdplayer/INFO b/plugins/cdplayer/INFO new file mode 100644 index 0000000..199f658 --- /dev/null +++ b/plugins/cdplayer/INFO @@ -0,0 +1,21 @@ +INFO FILE CDPLAYER.FLX + +MakeWindow 01 +x0=78 y0=79 +dx=484 dy=96 +02|FILL (82,81) 464x10 44 +01|STR (86,83) 4F 'SHAOS CD-Player v1.0 beta1' +05|BUTTON (546,81) 12x10 80 'x' [546,558,81,91] +03|BUTT0 (86,94) 268x38 [86,354,94,132] +02|FILL (88,95) 264x36 00 +04|BUTTON (360,94) 116x18 [360,476,94,112] +04|BUTTON (480,94) 36x18 [480,516,94,112] +04|BUTTON (520,94) 36x18 [520,556,94,112] +04|BUTTON (360,114) 36x18 [360,396,114,132] +04|BUTTON (400,114) 36x18 [400,436,114,132] +04|BUTTON (440,114) 36x18 [440,476,114,132] +04|BUTTON (480,114) 36x18 [480,516,114,132] +04|BUTTON (520,114) 36x18 [520,556,114,132] +00|END + +MakeWindow 7F diff --git a/plugins/cdplayer/build.bat b/plugins/cdplayer/build.bat new file mode 100644 index 0000000..7a25202 --- /dev/null +++ b/plugins/cdplayer/build.bat @@ -0,0 +1,21 @@ + +@echo off + +if not exist tmp md tmp +set path=d:\yad\svn\pentevo\tools\asl\bin\;d:\yad\svn\pentevo\tools\mhmt\;d:\yad\sprinter_src\tools\ +set includes=d:\yad\svn\pentevo\rom;d:\yad\sprinter_src\;d:\yad\sprinter_src\flexnav\src\ + +asl -U -L -C -x -olist tmp\flx-date.lst -i %includes% cdplayer.a80 || goto error +p2bin cdplayer.p ..\cdplayer.flx -r $-$ -k + +echo ######################## +echo # -= End Compile Ok =- # +echo ######################## +goto exit + +:error +echo ####################### +echo # -= Error Compile =- # +echo ####################### + +:exit diff --git a/plugins/cdplayer/cd.a80 b/plugins/cdplayer/cd.a80 new file mode 100644 index 0000000..470de2b --- /dev/null +++ b/plugins/cdplayer/cd.a80 @@ -0,0 +1,138 @@ + +; LAST UPDATE: 03.02.2025 savelij + +cd_play: db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x00,0x77,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x00,0x00,0x00,0x77,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x00,0x00,0x00,0x00,0x00,0x77,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x77,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x77,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x77,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x00,0x00,0x00,0x00,0x00,0x77,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x00,0x00,0x00,0x77,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x00,0x77,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + +cd_paus: db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x00,0x00,0x00,0x88,0x88,0x00,0x00,0x00,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x00,0x00,0x00,0x88,0x88,0x00,0x00,0x00,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x00,0x00,0x00,0x88,0x88,0x00,0x00,0x00,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x00,0x00,0x00,0x88,0x88,0x00,0x00,0x00,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x00,0x00,0x00,0x88,0x88,0x00,0x00,0x00,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x00,0x00,0x00,0x88,0x88,0x00,0x00,0x00,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x00,0x00,0x00,0x88,0x88,0x00,0x00,0x00,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x00,0x00,0x00,0x88,0x88,0x00,0x00,0x00,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x00,0x00,0x00,0x88,0x88,0x00,0x00,0x00,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + +cd_stop: db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + +cd_ll: db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x00,0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x00,0x00,0x88,0x88,0x88,0x88,0x70,0x88,0x88,0x88,0x88,0x70,0x88,0x88 + db 0x88,0x88,0x00,0x00,0x88,0x88,0x88,0x70,0x00,0x88,0x88,0x88,0x70,0x00,0x88,0x88 + db 0x88,0x88,0x00,0x00,0x88,0x88,0x70,0x00,0x00,0x88,0x88,0x70,0x00,0x00,0x88,0x88 + db 0x88,0x88,0x00,0x00,0x88,0x70,0x00,0x00,0x00,0x88,0x70,0x00,0x00,0x00,0x88,0x88 + db 0x88,0x88,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x88,0x88 + db 0x88,0x88,0x00,0x00,0x88,0x70,0x00,0x00,0x00,0x88,0x70,0x00,0x00,0x00,0x88,0x88 + db 0x88,0x88,0x00,0x00,0x88,0x88,0x70,0x00,0x00,0x88,0x88,0x70,0x00,0x00,0x88,0x88 + db 0x88,0x88,0x00,0x00,0x88,0x88,0x88,0x70,0x00,0x88,0x88,0x88,0x70,0x00,0x88,0x88 + db 0x88,0x88,0x00,0x00,0x88,0x88,0x88,0x88,0x70,0x88,0x88,0x88,0x88,0x70,0x88,0x88 + db 0x88,0x88,0x00,0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + +cd_l: db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x88,0x88,0x88,0x88,0x70,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x88,0x88,0x88,0x70,0x00,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00,0x88,0x88,0x70,0x00,0x00,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x70,0x00,0x00,0x00,0x88,0x70,0x00,0x00,0x00,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x70,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x70,0x00,0x00,0x00,0x88,0x70,0x00,0x00,0x00,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00,0x88,0x88,0x70,0x00,0x00,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x88,0x88,0x88,0x70,0x00,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x88,0x88,0x88,0x88,0x70,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + +cd_r: db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x07,0x88,0x88,0x88,0x88,0x07,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x00,0x07,0x88,0x88,0x88,0x00,0x07,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x00,0x00,0x07,0x88,0x88,0x00,0x00,0x07,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x00,0x00,0x00,0x07,0x88,0x00,0x00,0x00,0x07,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x07,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x00,0x00,0x00,0x07,0x88,0x00,0x00,0x00,0x07,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x00,0x00,0x07,0x88,0x88,0x00,0x00,0x07,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x00,0x07,0x88,0x88,0x88,0x00,0x07,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x07,0x88,0x88,0x88,0x88,0x07,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + +cd_rr: db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x00,0x00,0x88,0x88 + db 0x88,0x88,0x07,0x88,0x88,0x88,0x88,0x07,0x88,0x88,0x88,0x88,0x00,0x00,0x88,0x88 + db 0x88,0x88,0x00,0x07,0x88,0x88,0x88,0x00,0x07,0x88,0x88,0x88,0x00,0x00,0x88,0x88 + db 0x88,0x88,0x00,0x00,0x07,0x88,0x88,0x00,0x00,0x07,0x88,0x88,0x00,0x00,0x88,0x88 + db 0x88,0x88,0x00,0x00,0x00,0x07,0x88,0x00,0x00,0x00,0x07,0x88,0x00,0x00,0x88,0x88 + db 0x88,0x88,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x88,0x88 + db 0x88,0x88,0x00,0x00,0x00,0x07,0x88,0x00,0x00,0x00,0x07,0x88,0x00,0x00,0x88,0x88 + db 0x88,0x88,0x00,0x00,0x07,0x88,0x88,0x00,0x00,0x07,0x88,0x88,0x00,0x00,0x88,0x88 + db 0x88,0x88,0x00,0x07,0x88,0x88,0x88,0x00,0x07,0x88,0x88,0x88,0x00,0x00,0x88,0x88 + db 0x88,0x88,0x07,0x88,0x88,0x88,0x88,0x07,0x88,0x88,0x88,0x88,0x00,0x00,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x00,0x00,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + +cd_ejec: db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x77,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x07,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00,0x00,0x07,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x70,0x00,0x00,0x00,0x00,0x00,0x07,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 + db 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88 diff --git a/plugins/cdplayer/cdplayer.a80 b/plugins/cdplayer/cdplayer.a80 new file mode 100644 index 0000000..ee4b509 --- /dev/null +++ b/plugins/cdplayer/cdplayer.a80 @@ -0,0 +1,253 @@ + +; LAST UPDATE: 20.03.2025 savelij + +;// DEVICE ZXSPECTRUM128 +;// include '../FPLUGIN.INC' + include macros.a80 + include fn_const.a80 + include fn_macros.a80 + include accel_sp.a80 + include ports_sp.a80 + include define_sp.a80 + include macros_sp.a80 + include dss_sp.a80 + + org PluginOrg ; #C000 - Header lenght +; Flex Navigator plugin header +PluginStart: db "FLX-PLUG" ; Id + dw 0x0000 ; LoadOffset + dw 0x0000 ; EntryOffset + db 0x00 ; PluginMode + db 0x00,0x00,0x00 ; Reserved + +;// include 'dos_equ.inc' + +PluginEntry: + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 78,79,484,72 + W_FILL 4,2,464,10,COLORI.BLUE + COLORP.BLUE + W_TEXT 8,4,COLORI.WHITE + COLORP.BLUE,"SHAOS CD-Player v1.0 beta1" + W_BUTTONTEXT 468,2,12,10,COLORP.HIGHGRAY,"x" + W_BORDER 8,15,268,38 + W_FILL 10,16,264,36,COLORI.BLACK + W_BUTTON 282,15,116,18 + W_BUTTON 402,15,36,18 + W_BUTTON 442,15,36,18 + W_BUTTON 282,35,36,18 + W_BUTTON 322,35,36,18 + W_BUTTON 362,35,36,18 + W_BUTTON 402,35,36,18 + W_BUTTON 442,35,36,18 + W_HORIZLINE 2,56,480 + W_END + call JUMPS.ResFire + call shows + ld hl,cd_play + ld ix,201 + ld iy,95 + call show + ld hl,cd_paus + ld ix,241 + ld iy,95 + call show + ld hl,cd_stop + ld ix,261 + ld iy,95 + call show + ld hl,cd_ll + ld ix,181 + ld iy,115 + call show + ld hl,cd_l + ld ix,201 + ld iy,115 + call show + ld hl,cd_r + ld ix,221 + ld iy,115 + call show + ld hl,cd_rr + ld ix,241 + ld iy,115 + call show + ld hl,cd_ejec + ld ix,261 + ld iy,115 + call show + call shaos + call CDinit +plugin_loop: ld ix, PluginMouseTab + call JUMPS.TestCoords +; ld c, 0x31 +; rst 0x10 + SPDSS DSSF.SCANKEY + jr z, plugin_loop + ld a, b + or a + jr nz, plugin_loop + ld a, e + cp 0x1B + jr z, PluginExit + cp 0x0D + jr nz, plugin_loop +PluginExit: + WINDOWCLOSE + or a ; cf = 0 + ret + +Ok: ld HL,String + ld DE,0x00CA + ld BC,0x00A0 + ld A,0x80 + call JUMPS.PrnTxtLnIFF + ret + +; hl - bitmap 32x16 for 16-color mode +; ix,iy - coords (320x256) +show: +; in a,(82h) + GETPORT WINSP.CPU0 + ld (shwin),a +; ld a,50h +; out (82h),a + SETPORT WINSP.CPU0,0x50 + push ix + pop de + push iy + pop bc + ld b,16 +show1: ld a,c +; out (89h),a + SETPORT WINSP.Y_PORT,,0 + push de + di +; ACC_SetBlockSize + ACCEL ACCELCMD.SET_BUFFER + ld a,16 +; ACC_CopyBlock + ACCEL ACCELCMD.COPY + ld a,(hl) + ld (de),a +; ACC_Off + ACCEL ACCELCMD.OFF + ei + ld de,16 + add hl,de + pop de + inc c + dec b + jp nz,show1 +; ld a,0xFF +; out (89h),a + SETPORT WINSP.Y_PORT,0xFF + ld a,(shwin) +; out (82h),a + SETPORT WINSP.CPU0,,0 + ret + +shwin db 0 + +; a - digit +; ix,iy - coords (320x256) +showd: rlca + ld e,0 + ld d,a + ld hl,digit0 + add hl,de + call show + ld de,16 + add iy,de + call show + ret + +; Show Digit string +shows: ld ix,46 + ld iy,97 + ld c,8 + ld hl,Digits +shows1: push bc + push hl + push iy + ld a,(hl) + call showd + ld bc,16 + add ix,bc + pop iy + pop hl + pop bc + inc hl + dec c + jp nz,shows1 + ret + + include cdrom.a80 + +CDinit: call CD_INI + jr nc,noCD +yesCD: call SAVE_BUF + ld hl,CD_BUF + ld bc,54 + add hl,bc + ld de,msg_ +yesCD1: ld a,(hl) + ld (de),a + or a + jr z,yesCD0 + inc hl + inc de + jr yesCD1 + +yesCD0: ld hl,msgY + ld a,0x80 + jr CDprn + +noCD: ld hl,msgN + ld a,0x81 +CDprn: ld de,84 + ld bc,140 + call JUMPS.PrnTxtLnIFF + ret + +msgY db "CD-ROM is present " +msg_ DB 100 DUP 0 +msgN db "CD-ROM is absent",0 + +CDplay: ld hl,AP_PLA + call ATAPI + ret + +CDejec: ld hl,AP_CD2 + call ATAPI + ret + + +Digits db 0x00,0x00,0x0B,0x00,0x00,0x0A,0x00,0x00 + + +PluginMouseTab: dw 546,558,81,91,0x21,0,PluginExit,PluginExit + dw 360,476, 94,112,0x01,0,CDplay,0 + dw 480,516, 94,112,0x01,0,0,0 + dw 520,556, 94,112,0x01,0,0,0 + dw 360,396,114,132,0x01,0,0,0 + dw 400,436,114,132,0x01,0,0,0 + dw 440,476,114,132,0x01,0,0,0 + dw 480,516,114,132,0x01,0,0,0 + dw 520,556,114,132,0x01,0,CDejec,0 + +PluginMT2: dw 252,324,138,156,0x01,0,Ok,0 + dw 0x8000 + +StringBuf: db 16,1 + db 0,0,0 + dw 0x00CC,0x0057,0x00E8 + db 0xF0 + +String: DB 16 DUP 0 + DB 13 DUP 0 + + include shaos.a80 + include cd.a80 + include digits.a80 + +PluginEnd: +;// savebin 'Build/FN/Plugins/cdplayer.flx',PluginStart,PluginEnd-PluginStart diff --git a/plugins/cdplayer/cdrom.a80 b/plugins/cdplayer/cdrom.a80 new file mode 100644 index 0000000..b8925f1 --- /dev/null +++ b/plugins/cdplayer/cdrom.a80 @@ -0,0 +1,253 @@ + +; LAST UPDATE: 11.03.2025 savelij + +; CDROM.A - Alexander Shabarshin 13.10.2002 + +IDE_DAW equ 0x0150 +IDE_DAR equ 0x0050 +IDE_HDW equ 0x4152 +IDE_HDR equ 0x4052 +IDE_COM equ 0x4153 +IDE_STA equ 0x4053 +IDE_CIL equ 0x0154 +IDE_CIH equ 0x0155 + +; Based on Vlad Sotnikov source files + +; Wait when device will free +NO_BSY: ld bc,IDE_STA + in a,(c) + rlca + ret nc + jr NO_BSY + +; Wait ready data transfer +WAIT_DRQ: ld bc,IDE_STA + in a,(c) + bit 3,a + ret nz + jr WAIT_DRQ + +; Error test +; --- +; fc - error +IS_ERROR: ld bc,IDE_STA + in a,(c) + rrca + ret + +; Set Slave device +SEL_SLAVE: ld a,0xB0 + jr SEL_DEV + +; Set Master device +SEL_MASTER: ld a,0xA0 + jr SEL_DEV + +; Set device (Slave or Master) +; A - 0xA0 or 0xB0 +; --- +; fc - 1 ??? + +SEL_DEV: ld bc,IDE_HDW + out (c),a + ld bc,IDE_HDR + in a,(c) + rlca + ret + +; Save HL to cilinder register +HL_TO_LEN: ld bc,IDE_CIL + out (c),l + ld bc,IDE_CIH + out (c),h + ret + +; Load HL from cilinder register +LEN_TO_HL: ld bc,IDE_CIL + in l,(c) + ld bc,IDE_CIH + in h,(c) + ret + +; Read from CD-ROM sector 2048 bytes +CD_READ: call NO_BSY + call WAIT_DRQ + ld hl,CD_BUF + ld bc,IDE_DAR + ld d,0 +CD_LOOP: ini + ini + ini + ini + ini + ini + ini + ini + dec d + jr nz,CD_LOOP + ld hl,CD_BUF + ld bc,1024 +CD_TRANS: ld d,(hl) + inc hl + ld e,(hl) + dec hl + ld (hl),e + inc hl + ld (hl),d + inc hl + dec bc + ld a,b + or c + jr nz,CD_TRANS + ret + +; Send ATAPI command +; HL - address of 12-bytes command +SEND_ATAPI: ld de,CD_BUF + di +; ACC_SetBlockSize + ACCEL ACCELCMD.SET_BUFFER + ld a,12 +; ACC_CopyBlock + ACCEL ACCELCMD.COPY + ld a,(hl) + ld (de),a +; ACC_Off + ACCEL ACCELCMD.OFF + ei +SA0: call NO_BSY +; call IS_ERROR +; jr c,SA0 +SA1: call SEL_SLAVE + call NO_BSY +SA2: ld bc,IDE_STA + in a,(c) + and 0x40 + jr z,SA2 + ld a,0xA0 + ld bc,IDE_COM + out (c),a +SA3: call NO_BSY + call IS_ERROR + jp c,SA0 + call WAIT_DRQ + ld hl,CD_BUF + ld bc,IDE_DAW + outi + outi + outi + outi + outi + outi + outi + outi + outi + outi + outi + outi + ret + +; Initialisation slave CD-ROM +; --- +; fc - CD-ROM exists +CD_INI: ld de,0xFFFF + call SEL_SLAVE + ld bc,IDE_STA + in a,(c) + rlca + call c,NO_CDROM + ld hl,0 + call HL_TO_LEN + ld a,0xEC + ld bc,IDE_COM + out (c),a + call NO_BSY + call LEN_TO_HL +; call whl +; call nln + push hl + pop de + ld bc,0xEB14 + or a + sbc hl,bc +; call nz,NO_CDROM + ld a,0xA1 + ld bc,IDE_COM + out (c),a + call CD_READ + ld hl,CD_BUF +; inc hl + ld a,(hl) + and 0x1F + cp 5 + jr nz,NO_CDROM + scf + ret + +NO_CDROM: pop hl + xor a + ret + +SAVE_BUF: push hl + ld hl,FNAME +; ld c,Dss.Create +; ld a,0 +; rst ToDSS + SPDSS DSSF.CREATE,,0 + ld (FHAND),a +; ld c,Dss.Write + ld a,(FHAND) + ld de,2048 + ld hl,CD_BUF +; rst ToDSS + SPDSS DSSF.WRITE +; !FIXIT WRITE ERROR +; ld c,0x12 + ld a,(FHAND) +; rst ToDSS + SPDSS DSSF.CLOSE + pop hl + ret + +FNAME db "cd_buf.dat",0 +FHAND db 0 + +AP_NOP: ld hl,AP_00 + call SEND_ATAPI + ret + +; ATAPI command +; HL - address of ATAPI command (AP_*) +ATAPI: +AP_COM: call SEND_ATAPI + ret + +AP_00 db 0x00 + DB 11 DUP 0 +AP_TR0 db 0x01 + DB 11 DUP 0 +AP_CD1 db 0x1B + DB 3 DUP 0 + db 1 + DB 7 DUP 0 +AP_CD2 db 0x1B + DB 3 DUP 0 + db 2 + DB 7 DUP 0 +AP_CD3 db 0x1B + DB 3 DUP 0 + db 3 + DB 7 DUP 0 +AP_PL0 db 0x4B + DB 11 DUP 0 +AP_PL1 db 0x4B + DB 7 DUP 0 + db 1 + DB 3 DUP 0 +AP_PLA db 0x47 + DB 2 DUP 0 + db 0,2,0 + db 80,0,74 + DB 3 DUP 0 +CD_BUF DB 2048 DUP 0 diff --git a/plugins/cdplayer/digits.a80 b/plugins/cdplayer/digits.a80 new file mode 100644 index 0000000..f3a80fa --- /dev/null +++ b/plugins/cdplayer/digits.a80 @@ -0,0 +1,384 @@ +digit0 db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 +digit1 db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 +digit2 db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 +digit3 db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 +digit4 db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 +digit5 db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 +digit6 db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 +digit7 db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x22,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x22,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 +digit8 db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 +digit9 db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x22,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 +digi_sp db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 +digi_ss db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 diff --git a/plugins/cdplayer/shaos.a80 b/plugins/cdplayer/shaos.a80 new file mode 100644 index 0000000..f538623 --- /dev/null +++ b/plugins/cdplayer/shaos.a80 @@ -0,0 +1,81 @@ + +; LAST UPDATE: 03.02.2025 savelij + +; Shaos face +shaos: ld hl,shaosraw + ld de,44 + ld c,95 + ld b,36 +; in a,(82h) + GETPORT WINSP.CPU0 + ld (shaowin),a +; ld a,50h +; out (82h),a + SETPORT WINSP.CPU0,0x50 +shaos1: ld a,c +; out (89h),a + SETPORT WINSP.CPU0,,0 + push de + di +; ACC_SetBlockSize + ACCEL ACCELCMD.SET_BUFFER + ld a,32 +; ACC_CopyBlock + ACCEL ACCELCMD.COPY + ld a,(hl) + ld (de),a +; ACC_Off + ACCEL ACCELCMD.OFF + ei + ld de,32 + add hl,de + pop de + inc c + dec b + jp nz,shaos1 +; ld a,0xFF +; out (89h),a + SETPORT WINSP.Y_PORT,0xFF + ld a,(shaowin) +; out (82h),a + SETPORT WINSP.CPU0,,0 + ret + +shaowin db 0 + +shaosraw: db 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x88,0x70,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x07,0x07,0x88,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF + db 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x88,0x77,0x00,0x00,0x70,0x77,0x07,0x00,0x70,0x70,0x70,0x07,0x00,0x70,0x07,0x77,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF + db 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x77,0x00,0x00,0x70,0x70,0x70,0x07,0x07,0x07,0x07,0x00,0x07,0x00,0x70,0x07,0x00,0x07,0x08,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF + db 0xFF,0xFF,0xFF,0xFF,0xFF,0x87,0x00,0x00,0x70,0x70,0x00,0x70,0x70,0x70,0x70,0x70,0x70,0x07,0x00,0x70,0x70,0x70,0x77,0x07,0x07,0x08,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF + db 0xFF,0xFF,0xFF,0xFF,0x87,0x00,0x70,0x70,0x70,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x07,0x07,0x07,0x00,0x07,0x07,0x07,0x07,0x07,0x07,0x78,0xFF,0xFF,0xFF,0xFF,0xFF + db 0xFF,0xFF,0xFF,0xF7,0x00,0x70,0x70,0x70,0x70,0x07,0x07,0x00,0x07,0x00,0x77,0x07,0x00,0x70,0x00,0x70,0x70,0x77,0x70,0x70,0x70,0x70,0x07,0xFF,0xFF,0xFF,0xFF,0xFF + db 0xFF,0xFF,0xF8,0x00,0x70,0x70,0x00,0x00,0x07,0x00,0x70,0x77,0x77,0x88,0x77,0x77,0x77,0x00,0x70,0x07,0x07,0x00,0x70,0x70,0x70,0x70,0x70,0x78,0xFF,0xFF,0xFF,0xFF + db 0xFF,0xFF,0xF8,0x00,0x70,0x07,0x07,0x07,0x70,0x77,0x78,0x88,0x8F,0x88,0x88,0x88,0x88,0x77,0x77,0x07,0x07,0x07,0x00,0x70,0x70,0x70,0x00,0x77,0xFF,0xFF,0xFF,0xFF + db 0xFF,0xFF,0xF7,0x77,0x70,0x70,0x70,0x77,0x78,0x88,0x88,0xF8,0xF8,0x88,0x88,0x78,0x78,0x88,0x77,0x70,0x70,0x77,0x70,0x70,0x07,0x07,0x70,0x07,0x8F,0xFF,0xFF,0xFF + db 0xFF,0xFF,0xF8,0x7F,0x77,0x77,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x78,0x87,0x87,0x87,0x88,0x77,0x77,0x77,0x70,0x70,0x77,0x07,0x07,0x00,0x07,0x8F,0xFF,0xFF,0xFF + db 0xFF,0xFF,0xF8,0x87,0x88,0x87,0x88,0x88,0x87,0x87,0x87,0x88,0x88,0x88,0x87,0x87,0x88,0x88,0x87,0x77,0x70,0x77,0x07,0x07,0x70,0x70,0x77,0x07,0x7F,0xFF,0xFF,0xFF + db 0xFF,0xFF,0xFF,0x77,0x88,0x87,0x87,0x78,0x78,0x77,0x77,0x87,0x87,0x78,0x78,0x78,0x77,0x77,0x88,0x87,0x78,0x77,0x77,0x70,0x70,0x77,0x70,0x00,0x8F,0xFF,0xFF,0xFF + db 0xFF,0xFF,0xF8,0x77,0x78,0x78,0x77,0x78,0x87,0x87,0x87,0x87,0x78,0x78,0x78,0x78,0x78,0x88,0x78,0x78,0x87,0x77,0x77,0x77,0x07,0x70,0x77,0x07,0x8F,0xFF,0xFF,0xFF + db 0xFF,0xFF,0xF8,0x07,0x88,0x87,0x87,0x87,0x88,0x88,0x88,0x78,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x77,0x88,0x87,0x70,0x77,0x77,0x78,0x88,0x87,0x8F,0xFF,0xFF,0xFF + db 0xFF,0xFF,0xFF,0x78,0x77,0x88,0x78,0x78,0x78,0x88,0x88,0x88,0xF8,0xF8,0x88,0x88,0x77,0x78,0x78,0x87,0x78,0x87,0x77,0x07,0x77,0x88,0x77,0x77,0x07,0xFF,0xFF,0xFF + db 0xFF,0xFF,0xFF,0x77,0x87,0x87,0x87,0x87,0x87,0x78,0x88,0x77,0x77,0x77,0x88,0x77,0x87,0x78,0x77,0x88,0x88,0x88,0x77,0x77,0x78,0x87,0x77,0x88,0x77,0xFF,0xFF,0xFF + db 0xFF,0xFF,0xF7,0x77,0x77,0x87,0x77,0x77,0x07,0x00,0x70,0x07,0x07,0x07,0x70,0x77,0x77,0x77,0x77,0x77,0x87,0x88,0x88,0x78,0x87,0x77,0x07,0x77,0x78,0xFF,0xFF,0xFF + db 0xFF,0xFF,0x87,0x00,0x70,0x77,0x77,0x77,0x07,0x07,0x07,0x00,0x70,0x70,0x70,0x07,0x07,0x77,0x77,0x87,0x78,0x78,0x88,0x78,0x88,0x70,0x70,0x77,0x7F,0xFF,0xFF,0xFF + db 0xFF,0xFF,0xFF,0x80,0x07,0x00,0x07,0x77,0x77,0x70,0x00,0x70,0x77,0x07,0x07,0x70,0x77,0x77,0x78,0x77,0x77,0x87,0x87,0x88,0x88,0x87,0x77,0x70,0x8F,0xFF,0xFF,0xFF + db 0xFF,0xFF,0xFF,0xF8,0x07,0x00,0x00,0x78,0x87,0x77,0x77,0x07,0x07,0x77,0x77,0x77,0x77,0x88,0x87,0x87,0x87,0x78,0x78,0x88,0x88,0x77,0x78,0x87,0x8F,0xFF,0xFF,0xFF + db 0xFF,0xFF,0xFF,0xFF,0x07,0x77,0x07,0x88,0x87,0x77,0x77,0x70,0x77,0x07,0x77,0x78,0x88,0x88,0x88,0x78,0x78,0x78,0x88,0x78,0x88,0x78,0xF8,0x87,0xFF,0xFF,0xFF,0xFF + db 0xFF,0xFF,0xFF,0xFF,0x70,0x77,0x77,0xF8,0x88,0x87,0x88,0x87,0x77,0x77,0x77,0x87,0x88,0x78,0x77,0x87,0x87,0x87,0x87,0x87,0x88,0x88,0x88,0x77,0x8F,0xFF,0xFF,0xFF + db 0xFF,0xFF,0xFF,0xF8,0x77,0x77,0x78,0xFF,0x87,0x78,0x77,0x78,0x88,0x88,0x88,0x78,0x87,0x87,0x77,0x77,0x87,0x78,0x77,0x87,0x88,0x77,0x77,0x77,0x8F,0xFF,0xFF,0xFF + db 0xFF,0xFF,0xFF,0xFF,0x77,0x78,0x8F,0xF8,0x88,0x88,0x77,0x70,0x78,0x87,0x87,0x88,0x78,0x77,0x77,0x78,0x78,0x78,0x87,0x87,0x88,0x80,0x77,0x78,0x8F,0xFF,0xFF,0xFF + db 0xFF,0xFF,0xFF,0xFF,0x77,0x77,0x87,0x88,0x87,0x88,0x87,0x77,0x07,0x77,0x77,0x77,0x77,0x87,0x78,0x77,0x87,0x87,0x87,0x87,0x88,0x88,0x78,0xF7,0x77,0xFF,0xFF,0xFF + db 0xFF,0xFF,0xFF,0xFF,0x77,0x07,0x77,0x07,0x07,0x07,0x07,0x07,0x77,0x70,0x77,0x78,0x77,0x77,0x77,0x78,0x77,0x87,0x87,0x77,0x88,0x78,0xF8,0x70,0x00,0x07,0x77,0x7F + db 0xFF,0xFF,0xFF,0xFF,0xF7,0x70,0x77,0x70,0x70,0x77,0x77,0x77,0x88,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x78,0x78,0x78,0x78,0x77,0x8F,0x70,0x00,0x70,0x70,0x00,0x70 + db 0xFF,0xFF,0xFF,0xFF,0xF8,0x77,0x77,0x77,0x77,0x77,0x77,0x87,0x87,0x77,0x77,0x77,0x77,0x77,0x77,0x87,0x77,0x77,0x77,0x77,0x88,0x77,0x00,0x70,0x70,0x70,0x70,0x70 + db 0xFF,0xFF,0xFF,0xFF,0xFF,0xF7,0x77,0x77,0x07,0x07,0x07,0x07,0x00,0x70,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x87,0x77,0x00,0x70,0x70,0x07,0x07,0x07,0x07 + db 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x87,0x07,0x77,0x77,0x77,0x77,0x77,0x77,0x70,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x70,0x00,0x07,0x00,0x07,0x07,0x07,0x07,0x00 + db 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x87,0x87,0x77,0x77,0x77,0x78,0x87,0x77,0x70,0x77,0x77,0x77,0x77,0x77,0x77,0x70,0x00,0x70,0x00,0x77,0x07,0x07,0x07,0x07,0x70 + db 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x77,0x77,0x77,0x77,0x77,0x88,0x77,0x77,0x77,0x77,0x77,0x70,0x70,0x00,0x00,0x07,0x07,0x07,0x00,0x70,0x70,0x70,0x70,0x00 + db 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x88,0x77,0x77,0x88,0x88,0x77,0x77,0x77,0x77,0x77,0x70,0x70,0x70,0x00,0x07,0x00,0x00,0x70,0x77,0x07,0x00,0x00,0x07,0x70 + db 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x88,0x88,0x78,0x78,0x77,0x77,0x77,0x70,0x70,0x00,0x00,0x00,0x70,0x00,0x70,0x70,0x70,0x00,0x00,0x70,0x77,0x07,0x07 + db 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x87,0x77,0x77,0x70,0x70,0x70,0x70,0x07,0x07,0x00,0x70,0x00,0x07,0x00,0x70,0x70,0x07,0x07,0x00,0x70,0x07,0x07,0x70 + db 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x87,0x70,0x70,0x77,0x70,0x07,0x00,0x00,0x00,0x00,0x07,0x00,0x70,0x07,0x00,0x70,0x00,0x70,0x70,0x77,0x70,0x77 diff --git a/plugins/date/build.bat b/plugins/date/build.bat new file mode 100644 index 0000000..fefb75f --- /dev/null +++ b/plugins/date/build.bat @@ -0,0 +1,21 @@ + +@echo off + +if not exist tmp md tmp +set path=d:\yad\svn\pentevo\tools\asl\bin\;d:\yad\svn\pentevo\tools\mhmt\;d:\yad\sprinter_src\tools\ +set includes=d:\yad\svn\pentevo\rom;d:\yad\sprinter_src\;d:\yad\sprinter_src\flexnav\src\ + +asl -U -L -C -x -olist tmp\date.lst -i %includes% date.a80 || goto error +p2bin date.p ..\date.flx -r $-$ -k + +echo ######################## +echo # -= End Compile Ok =- # +echo ######################## +goto exit + +:error +echo ####################### +echo # -= Error Compile =- # +echo ####################### + +:exit diff --git a/plugins/date/date.a80 b/plugins/date/date.a80 new file mode 100644 index 0000000..860261b --- /dev/null +++ b/plugins/date/date.a80 @@ -0,0 +1,426 @@ + +; LAST UPDATE: 31.03.2025 savelij + + include macros.a80 + include fn_const.a80 + include fn_macros.a80 + include macros_sp.a80 + include dss_sp.a80 + + org PluginOrg +PluginStart: db "FLX-PLUG" + dw 0 + dw PluginEntry + db 0 + db 0,0,0 + + db "Date preferences plug-in for Flex Navigator",0 + db "2003 (c) Mac Buster",0 + db "$VER: 1.0 15-Jul-2003",0 + +PluginEntry: +.L1 + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 152,96,336,66 + W_FILL 4,2,328,10,COLORI.BLACK + W_TEXT 6,3,COLORI.WHITE," Date preferences v1.0" + W_HORIZLINE 1,13,336 + W_HORIZLINE 17,28,304 + W_HORIZLINE 17,46,304 + W_TEXT 18,34,COLORP.HIGHGRAY,"Day" +aDay: EQU $ - STRLEN("Day") - 2 + W_BORDER 38,33,56,10 + W_ICONDOWNARROW 60,34 + W_ICONUPARROW 76,34 + W_TEXT 100,34,COLORP.HIGHGRAY,"Month" +aMonth: EQU $ - STRLEN("Month") - 2 + W_BORDER 133,33,92,10 + W_ICONDOWNARROW 191,34 + W_ICONUPARROW 207,34 + W_TEXT 230,34,COLORP.HIGHGRAY,"Year" +aYear: EQU $ - STRLEN("Year") - 2 + W_BORDER 254,33,64,10 + W_ICONDOWNARROW 285,34 + W_ICONUPARROW 301,34 + W_BUTTONTEXT 18,51,64,11,COLORP.HIGHGRAY," " + W_BUTTONTEXT 86,51,64,11,COLORP.HIGHGRAY," " + W_BUTTONTEXT 254,51,64,11,COLORP.HIGHGRAY," " +; W_TEXT 202,149,COLORP.HIGHGRAY,"Set" +; W_TEXT 270,149,COLORP.HIGHGRAY,"Reset" +; W_TEXT 438,149,COLORP.HIGHGRAY,"Quit" +; W_TEXT 320,114,COLORP.HIGHGRAY,"Today:" + W_END + ld ix,64 + ld hl,aSet ; "Set" + ld de,202 + ld bc,149 + ld a,COLORP.HIGHGRAY;80h + call JUMPS.PrnRangPathC + ld hl,aReset ; "Reset" + ld de,270 + ld bc,149 + ld a,COLORP.HIGHGRAY;80h + call JUMPS.PrnRangPathC + ld hl,aQuit ; "Quit" + ld de,438 + ld bc,149 + ld a,COLORP.HIGHGRAY;80h + call JUMPS.PrnRangPathC + call GetSysTime + call InitDate + ld ix,320 + ld hl,aToday ; "Today:" + ld de,320 + ld bc,114 + ld a,COLORP.HIGHGRAY;80h + call JUMPS.PrnRangPathC + call sub_C2B7 + call PrintMonth + call PrintYear + call JUMPS.ResFire +_plugin_loop: ld ix,PluginMouseTab + call JUMPS.TestCoords + halt + SPDSS DSSF.SCANKEY + jr z,_plugin_loop + ld a,b + or a + jr nz,_plugin_loop + ld a,e + cp 1Bh + jr nz,_plugin_loop +PluginExit: + WINDOWCLOSE + and a + ret + +IncDay: ld a,(max_date) + ld b,a + ld a,(Day) + cp b + jr nz,loc_C198 + ld a,0 +loc_C198: inc a + ld (Day),a +PrintDay: ld a,(Day) + ld l,a + ld h,0 + add hl,hl + add hl,hl + ld de,Days0 + add hl,de + ld ix,14h + ld de,0C3h + ld bc,82h + ld a,80h + call JUMPS.PrnRangPathL + ret + +DecDay: ld a,(max_date) + ld b,a + ld a,(Day) + cp 1 + jr nz,loc_C1C5 + ld a,b + inc a +loc_C1C5: dec a + ld (Day),a + jr PrintDay + +IncMonth: ld a,(Month) + or a + ret z + dec a + ld (Month),a + call sub_C268 + call sub_C2B7 +PrintMonth: ld hl,asc_C374 + call sub_C1F3 + ld a,(Month) + ld c,a + ld b,0FFh + ld hl, asc_C374+0Dh ; "" +loc_C1E9: ld a,(hl) + inc hl + or a + jr nz,loc_C1E9 + inc b + ld a,c + cp b + jr nz,loc_C1E9 +sub_C1F3: ld ix,40h ; '@' + ld de,13Ah + ld bc,82h + ld a,80h + call JUMPS.PrnRangPathC + ret + +DecMonth: ld a,(Month) + cp 0Bh + ret z + inc a + ld (Month),a + call sub_C268 + call sub_C2B7 + jr PrintMonth + +IncYear: ld hl, a0+4 ; " " + ld c,'0' + ld a,'9' + cp (hl) + jr nz,loc_C230 + ld (hl),c + dec hl + cp (hl) + jr nz,loc_C230 + ld (hl),c + dec hl + cp (hl) + jr nz,loc_C230 + ld (hl),c + dec hl + cp (hl) + jr nz,loc_C230 + ld (hl),c + dec (hl) +loc_C230: inc (hl) +PrintYear: ld ix,1Ah + ld hl, a0+1 ; " " + ld de,1A7h + ld bc,82h + ld a,80h + call JUMPS.PrnRangPathC + call sub_C268 + call sub_C2B7 + ret + +DecYear: ld hl, a0+4 ; " " + ld c,'9' + ld a,'0' + cp (hl) + jr nz,loc_C265 + ld (hl),c + dec hl + cp (hl) + jr nz,loc_C265 + ld (hl),c + dec hl + cp (hl) + jr nz,loc_C265 + ld (hl),c + dec hl + cp (hl) + jr nz,loc_C265 + ld (hl),c + inc (hl) +loc_C265: dec (hl) + jr PrintYear + +sub_C268: ld a,(Month) + cp 1 + jr z,loc_C285 + cp 3 + jr z,loc_C27F + cp 5 + jr z,loc_C27F + cp 0Ah + jr z,loc_C27F + ld a,1Fh + jr loc_C281 + +loc_C27F: ld a,1Eh +loc_C281: ld (max_date),a + ret + +loc_C285: ld de, a0+1 ; " " + call JUMPS.ConvTxtNum16 + push hl + pop bc + ld de,190h + push bc + call JUMPS.Divis16X16 + pop bc + ld a,h + or l + jr z,loc_C2AF + ld de,4 + push bc + call JUMPS.Divis16X16 + pop bc + ld a,h + or l + jr nz,loc_C2B3 + ld de,64h ; 'd' + call JUMPS.Divis16X16 + ld a,h + or l + jr z,loc_C2B3 +loc_C2AF: ld a,1Dh + jr loc_C281 + +loc_C2B3: ld a,1Ch + jr loc_C281 + +sub_C2B7: ld a,(Day) + ld b,a + ld a,(max_date) + cp b + jr nc,loc_C2C4 + ld (Day),a +loc_C2C4: call PrintDay + ret + +SetDate: ld de, a0+1 ; " " + call JUMPS.ConvTxtNum16 + push hl + SPDSS DSSF.GETTIME,0 + ld a,(Day) + ld d,a + ld a,(Month) + inc a + ld e,a + pop ix + SPDSS DSSF.SETTIME + call InitDate + jr loc_C2E9 + +ReadDate: call GetSysTime +loc_C2E9: call PrintDay + call PrintMonth + call PrintYear + ret + +GetSysTime: + SPDSS DSSF.GETTIME,0 + ld a,d + ld (Day),a + ld a,e + dec a + ld (Month),a + push ix + ld hl,a0 ; "0 " + ld b,5 +loc_C307: ld (hl),30h ; '0' + inc hl + djnz loc_C307 + pop hl + ld de, a0+1 ; " " + call JUMPS.ConvNumTxt16 +InitDate: ld hl, aToday+6 ; "" + ld b,' ' +loc_C318: ld (hl),0 + inc hl + djnz loc_C318 + ld a,(Day) + ld l,a + ld h,0 + add hl,hl + add hl,hl + ld de,Days0 + add hl,de + ld de, aToday+6 ; "" + ldi + ldi + ldi + ex de,hl + ld (hl),' ' + inc hl + push hl + ld a,(Month) + ld c,a + ld b,0FFh + ld hl, asc_C374+0Dh ; "" +loc_C340: ld a,(hl) + inc hl + or a + jr nz,loc_C340 + inc b + ld a,c + cp b + jr nz,loc_C340 + pop de +loc_C34B: ld a,(hl) + or a + jr z,loc_C354 + ld (de),a + inc hl + inc de + jr loc_C34B + +loc_C354: ex de,hl + ld (hl),20h ; ' ' + inc hl + ex de,hl + ld hl, a0+1 ; " " + ldi + ldi + ldi + ldi + ret + +aSet: db "Set",0 +aReset: db "Reset",0 +aQuit: db "Quit",0 +asc_C374: db " ",0 +aJanuary: db "January",0 +aFebruary: db "February",0 +aMarch: db "March",0 +aApril: db "April",0 +aMay: db "May",0 +aJune: db "June",0 +aJuly: db "July",0 +aAugust: db "August",0 +aSeptember: db "September",0 +aOctober: db "October",0 +aNovember: db "November",0 +aDecember: db "December",0 +aToday: db "Today:",0 + DB 31 DUP 0 +Day: db 12h +Month: db 5 +max_date: db 1Eh +a0: db "0 ",0 +Days0: DB 4 DUP 0 ; 譨 4 ,⮡ ⭨ 1 +Days: db " 01",0 + db " 02",0 + db " 03",0 + db " 04",0 + db " 05",0 + db " 06",0 + db " 07",0 + db " 08",0 + db " 09",0 + db " 10",0 + db " 11",0 + db " 12",0 + db " 13",0 + db " 14",0 + db " 15",0 + db " 16",0 + db " 17",0 + db " 18",0 + db " 19",0 + db " 20",0 + db " 21",0 + db " 22",0 + db " 23",0 + db " 24",0 + db " 25",0 + db " 26",0 + db " 27",0 + db " 28",0 + db " 29",0 + db " 30",0 + db " 31",0 + +PluginMouseTab: dw 212,228,130,138,1,0,DecDay,0 + dw 228,244,130,138,1,0,IncDay,0 + dw 342,358,130,138,1,0,DecMonth,0 + dw 358,374,130,138,1,0,IncMonth,0 + dw 437,453,130,138,1,0,DecYear,0 + dw 453,469,130,138,1,0,IncYear,0 + dw 238,302,147,158,1,0,ReadDate,0 + dw 170,234,147,158,1,0,SetDate,0 + dw 406,470,147,158,33,0,PluginExit,0 + dw 0x8000 +PluginEnd: diff --git a/plugins/fneditor/build.bat b/plugins/fneditor/build.bat new file mode 100644 index 0000000..ceee35c --- /dev/null +++ b/plugins/fneditor/build.bat @@ -0,0 +1,21 @@ + +@echo off + +if not exist tmp md tmp +set path=d:\yad\svn\pentevo\tools\asl\bin\;d:\yad\svn\pentevo\tools\mhmt\;d:\yad\sprinter_src\tools\ +set includes=d:\yad\svn\pentevo\rom;d:\yad\sprinter_src\;d:\yad\sprinter_src\flexnav\src\ + +asl -U -L -C -x -olist tmp\fneditor.lst -i %includes% femain.a80 || goto error +p2bin femain.p ..\fneditor.flx -r $-$ -k + +echo ######################## +echo # -= End Compile Ok =- # +echo ######################## +goto exit + +:error +echo ####################### +echo # -= Error Compile =- # +echo ####################### + +:exit diff --git a/plugins/fneditor/feditor.a80 b/plugins/fneditor/feditor.a80 new file mode 100644 index 0000000..bf667bb --- /dev/null +++ b/plugins/fneditor/feditor.a80 @@ -0,0 +1,849 @@ + +; LAST UPDATE: 11.03.2025 savelij + + INIT_VAR + SETVAR CursorX ;EQU 0x00 + SETVAR StringX ;EQU 0x01 + SETVAR CursAddX ;EQU 0x02 + SETVAR CursorY ;EQU 0x03 + SETVAR LenString ;EQU 0x04 + SETVAR PrvLenStr ;EQU 0x05 + SETVAR ReadyStr ;EQU 0x06 + SETVAR ReadyFile ;EQU 0x07 + +LineBuffer := WorkBuffer+0x200 +TempBuffer := WorkBuffer+0x300 + +;[]==========================================================[] + JP FileEditor + + DZ FLEX_VERS.EDITOR + +FileEditor CALL FELoadFile + RET C + call ReadEditorIni + LD IY,EditData + SUB A + LD (EditMode),A + LD (HEXmode),A + LD (IY+CursorX),A + LD (IY+StringX),A + LD (IY+CursAddX),A + LD (IY+CursorY),A + LD (IY+ReadyStr),A + LD (IY+ReadyFile),A + INC A + LD (FECrTimer),A + LD HL,0x0000 + LD (CurLine),HL + LD (LineShift),HL + LD (FEPageShift),HL + CALL FEInitScreen +EditorBegin CALL InitStatus + CALL InitFile + CALL PrintPage +EditorLoop CALL FEChCursor + LD A,(EditMode) + OR A + JP NZ,HEditLoop +TEditLoop LD IX,FEASCIItab + CALL JUMPS.TestCoords + SPDSS DSSF.SCANKEY ; + JR Z,EditorLoop + LD A,D + CP 0x44 + JP Z,EditorExit + LD A,E ;-ASCII + CP 0x1B ;Esc + JP Z,EditorExit + LD HL,EditorLoop + PUSH HL + OR A + JP NZ,TInsertSymbol + LD A,D + CP 0x3B + JP Z,FEAbout + CP 0x3C + JP Z,SaveFile + CP 0x3E + JP Z,ChEditor ;ᬮ HEX + CP 0x41 + JP Z,FEPrintFile + CP 0x43 + JP Z,EditorSetup + CP 0x4F + JP Z,TDeleteSymbol + CP 0x54 + JP Z,TCursorLeft + CP 0x56 + JP Z,TCursorRight + CP 0x58 + JP Z,TCursorUp + CP 0x52 + JP Z,TCursorDown + CP 0x57 ;Home + JP Z,THomeString + CP 0x51 ;End + JP Z,TEndString + CP 0x59 ;PageUp + JP Z,FETPageUp + CP 0x53 ;PageDown + JP Z,TPageDown + LD A,B + AND 0x30 + CP 0x30 + RET Z + bit 4,b ; ⮬ Alt + jr z,.ctrl + ld a,d + and 0x7f + CP 0x54 ;Alt+< + JP Z,THomeString + CP 0x56 ;Alt+> + JP Z,TEndString + ret + +.ctrl: BIT 5,B ; ⮬ Ctrl + RET Z + LD A,D + AND 0x7F + CP 0x0E + JP Z,TDeleteWord + CP 0x15 ;Ctrl+Y - Delete String + JP Z,TDeleteString + CP 0x1E ;Ctrl+S + JP Z,SaveFile + CP 0x1F ;Ctrl+D + JP Z,TDoubleString + CP 0x19 ;Ctrl+P + JP Z,FEPrintFile + cp 0x2a ;Ctrl+Z + jp z,Undo + CP 0x54 + JP Z,TWordLeft + CP 0x56 + JP Z,TWordRight + CP 0x58 + JP Z,TScrollUp + CP 0x52 + JP Z,TScrollDown + CP 0x57 ;Ctrl+Home + JP Z,FETBegFile ; 砫 䠩 + CP 0x51 ;Ctrl+PageEnd + JP Z,FETEndFile ; 䠩 + RET + +HEditLoop LD IX,FEHEXtab + CALL JUMPS.TestCoords + SPDSS DSSF.SCANKEY ; + JP Z,EditorLoop + LD A,D ; + CP 0x44 ;F10 + JP Z,EditorExit + LD A,E ;-ASCII + CP 0x1B ;Esc + JP Z,EditorExit + LD HL,EditorLoop + PUSH HL + OR A + JP NZ,HPutSymbol + LD A,D + CP 0x3B + JP Z,FEAbout + CP 0x3C + JP Z,SaveFile + CP 0x9E ;Ctrl+S + JP Z,SaveFile + CP 0x3E ;F4 + JP Z,ChEditor ;ᬮ ⥪ + CP 0x3F ;F5 + JP Z,FEHGoTo ;室 짮⥫ + CP 0x41 + JP Z,FEPrintFile + CP 0x43 + JP Z,EditorSetup + CP 0x54 + JP Z,HCursorLeft + CP 0x56 + JP Z,HCursorRight + CP 0x57 ;Home + JP Z,HHomeString + CP 0x51 ;End + JP Z,HEndString + CP 0x58 ;५ + JP Z,HCursorUp + CP 0x52 ;५ + JP Z,HCursorDown + CP 0x59 ;PageUp + JP Z,FEHPageUp + CP 0x53 ;PageDown + JP Z,FEHPageDown + LD A,B + AND 0x30 + CP 0x30 + RET Z + BIT 5,B + RET Z + LD A,D + AND 0x7F + CP 0x58 + JP Z,HScrollUp + CP 0x52 + JP Z,HScrollDown + CP 0x57 ;Ctrl+PageUp + JP Z,FEHBegFile ; 砫 䠩 + CP 0x51 ;Ctrl+PageDown + JP Z,FEHEndFile ; 䠩 + CP 0x19 ;Ctrl+P + JP Z,FEPrintFile + RET + +;[]==========================================================[] +EditingFile DUPL 0x30,0 +EditMode DEFB 0x00 +HEXmode DEFB 0x00 +EditData DEFB 0x00 ;Cursor X + DEFB 0x00 ;String X + DEFB 0x00 ;Cursor add X + DEFB 0x00 ;Cursor Y + DEFB 0x00 ;Len String + DEFB 0x00 ;Previos Len String + DEFB 0x00 ;Ready String + DEFB 0x00 ;Ready File +CurLine DEFW 0x0000 +EquipLines DEFW 0x0000 +LineShift DEFW 0x0000 +FEPageShift DEFW 0x0000 +FETempShift DEFW 0x0000 +FEFileLenght DEFW 0x0000 ; 䠩 (16) +FEEmptyLines DEFB 0x00 +FEMemIndef DEFB 0x00 +FEFHandle DEFB 0x00 +FEReadLen +SaveLen DEFW 0x0000 + +;[]==========================================================[] +ChEditor LD HL,EditorBegin + EX (SP),HL + LD A,(EditMode) + XOR 0x01 + LD (EditMode),A + JR NZ,HEXEdit +ASCIIEdit LD HL,(LineShift) + LD E,(IY+CursorX) + SRL E + LD D,0x00 + ADD HL,DE + PUSH HL + INC HL + CALL FESearchUp + LD (LineShift),HL + LD (FEPageShift),HL + SUB A + LD (IY+StringX),A + LD (IY+CursorY),A + PUSH HL + CALL GetString + POP DE + POP HL + OR A + SBC HL,DE + LD A,L + CP (IY+LenString) + JR C,.L1 + LD A,(IY+LenString) +.L1 DEC A + LD (IY+StringX),A + JP TCursorRight + +HEXEdit CALL PutString + LD HL,(LineShift) + LD A,(IY+StringX) + CP (IY+LenString) + JR C,.L1 + LD A,(IY+LenString) +.L1 LD E,A + LD D,0x00 + ADD HL,DE + LD A,L + AND 0x0F + ADD A,A + LD (IY+CursorX),A + LD A,L + AND 0xF0 + LD L,A + LD (LineShift),HL + LD (FEPageShift),HL + SUB A + LD (IY+CursorY),A + RET + +;[]==========================================================[] +EditorExit CALL PutString + CALL FEResCursor + LD A,(IY+ReadyFile) + OR A + JP Z,QuitAsk;EditorE + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 208,80,224,60 + W_FILL 4,2,216,10,COLORI.BLACK + W_TEXT 88,3,COLORI.WHITE,"Information" + W_TEXT 64,19,COLORP.HIGHGRAY,"File has been modified." + W_TEXT 96,29,COLORP.HIGHGRAY,"Save ?" + W_BUTTON 32,42,72,14 + W_TEXT 58,45,COLORP.HIGHGRAY,"Yes" + W_BUTTON 120,42,72,14 + W_TEXT 150,45,COLORP.HIGHGRAY,"No" + W_END +SureLoop LD IX,SureTab + CALL JUMPS.TestCoords + SPDSS DSSF.SCANKEY + JR Z,SureLoop + LD A,B + OR A + JR NZ,SureLoop + LD A,E + CP 0x1B + SCF + JR Z,SureExit + CP 0x0D + JR Z,SureExit + RES 5,A + CP 'N' + JR Z,SureExit + CP 'Y' + JR NZ,SureLoop +SureOkey CALL SaveFile + OR A +SureExit + WINDOWCLOSE + JP C,EditorLoop +EditorE LD A,(FEMemIndef) + SPDSS DSSF.FREEMEM + OR A + RET + +;[]==========================================================[] +QuitAsk: ld a,0 +.param EQU $-1 + and a + jr z,EditorE + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 208,88,224,50 + W_FILL 4,2,216,10,COLORI.BLACK + W_TEXT 104,3,COLORI.WHITE,"Quit" + W_TEXT 28,19,COLORP.HIGHGRAY,"Do you want to close the editor?" + W_BUTTON 32,32,72,14 + W_TEXT 58,35,COLORP.HIGHGRAY,"Yes" + W_BUTTON 120,32,72,14 + W_TEXT 150,35,COLORP.HIGHGRAY,"No" + W_END +FEQuitLoop: LD IX,FEQuitTab + CALL JUMPS.TestCoords + SPDSS DSSF.SCANKEY + JR Z,FEQuitLoop + LD A,B + OR A + JR NZ,FEQuitLoop + LD A,E + CP 0x1B + scf + JP Z,SureExit + CP 0x0D + JP Z,SureExit + RES 5,A + CP 'Y' + JP Z,SureExit + CP 'N' + JR NZ,FEQuitLoop +FEQuitAbort: SCF + JP SureExit + +;[]==========================================================[] +FEInitScreen + MAKEWINDOW WINSUBOBJ.NOSTORE + W_MAIN 0,0,640,256 + W_FILL 4,2,632,10,COLORI.BLACK + W_TEXT 16,3,COLORI.WHITE,"FN File Editor v\{FLEX_VERS.EDITOR}" + W_HORIZLINE 0,13,640 + W_TEXT 8,17,COLORP.HIGHGRAY,"Editing:" + W_VERTICLINE 366,16,10 + W_TEXT 400,17,COLORP.HIGHGRAY,"Line:" + W_TEXT 480,17,COLORP.HIGHGRAY,"Col:" + W_TEXT 552,17,COLORP.HIGHGRAY,"Free:" + W_HORIZLINE 0,27,640 + W_HORIZLINE 0,227,640 + W_ICONUPARROW 624,28 + W_FILL 624,36,16,184,COLORI.HIGHGRAY + W_ICONDOWNARROW 624,220 + W_END + SPDSS DSSF.CURDISK + LD HL,WorkBuffer + ADD A,'A' + LD (HL),A + INC HL + LD (HL),':' + INC HL + PUSH HL + SPDSS DSSF.CURDIR + POP HL + SUB A +.L1 INC HL + CP (HL) + JR NZ,.L1 + DEC HL + LD A,0x5C + CP (HL) + INC HL + JR Z,.L2 + LD (HL),A + INC HL +.L2 EX DE,HL + LD HL,EditingFile+33 + SUB A +.L3 LDI + CP (HL) + JR NZ,.L3 + LD (DE),A + LD IX,0x0130 + LD HL,WorkBuffer + LD DE,0x0030 + LD BC,0x0011 + LD A,0x80 + CALL JUMPS.PrnRangPathL + LD HL,0x01FC + LD DE,0x0003 + LD B,0x08 + EXX + LD HL,0x022E + LD DE,0x0003 + LD B,0x08 + EXX + LD A,0x02 + CALL JUMPS.SetCMOSPrint + RET + +;[]==========================================================[] +InitStatus LD A,(EditMode) + OR A + JP NZ,InitHEXStatus + MAKEWINDOW WINSUBOBJ.WOBIND + W_HORIZLINE 0,235,626 + W_VERTICLINE 622,228,8 + W_ICONLEFTARROW 0,228 + W_FILL 16,228,592,8,COLORI.HIGHGRAY + W_ICONRIGHTARROW 608,228 + W_HORIZLINE 0,241,640 + W_FILL 2,243,636,12,COLORI.HIGHGRAY + W_HORIZLINE 2,255,637 + W_BUTTON 0,242,80,14 + W_TEXT 18,245,COLORP.HIGHGRAY,"F1 About" + W_BUTTON 80,242,80,14 + W_TEXT 100,245,COLORP.HIGHGRAY,"F2 Save" + W_BUTTON 160,242,80,14 + W_TEXT 184,245,COLORP.HIGHGRAY,"F4 Hex" + W_BUTTON 400,242,80,14 + W_TEXT 422,245,COLORP.HIGHGRAY,"F7 Print" + W_BUTTON 480,242,80,14 + W_TEXT 492,245,COLORP.HIGHGRAY,"F9 Settings" + W_BUTTON 560,242,80,14 + W_TEXT 580,245,COLORP.HIGHGRAY,"F10 Quit" + W_END + RET + +InitHEXStatus + MAKEWINDOW WINSUBOBJ.WOBIND + W_HORIZLINE 0,227,640 + W_FILL 2,229,636,10,COLORI.HIGHGRAY + W_HORIZLINE 2,241,640 + W_FILL 2,243,636,12,COLORI.HIGHGRAY + W_HORIZLINE 2,255,638 + W_BUTTON 0,242,80,14 + W_TEXT 18,245,COLORP.HIGHGRAY,"F1 About" + W_BUTTON 80,242,80,14 + W_TEXT 100,245,COLORP.HIGHGRAY,"F2 Save" + W_BUTTON 160,242,80,14 + W_TEXT 182,245,COLORP.HIGHGRAY,"F4 ASCII" + W_BUTTON 240,242,80,14 + W_TEXT 258,245,COLORP.HIGHGRAY,"F5 Go to" + W_BUTTON 400,242,80,14 + W_TEXT 422,245,COLORP.HIGHGRAY,"F7 Print" + W_BUTTON 480,242,80,14 + W_TEXT 492,245,COLORP.HIGHGRAY,"F9 Settings" + W_BUTTON 560,242,80,14 + W_TEXT 580,245,COLORP.HIGHGRAY,"F10 Quit" + W_END + RET + +;[]==========================================================[] +InitFile LD A,(EditMode) + OR A + JR NZ,InitFileHex + CALL JUMPS.SetClock + LD HL,0x0000 + LD E,L + LD D,H +InitAlp PUSH HL + LD BC,(LineShift) + OR A + SBC HL,BC + POP HL + JR NZ,.L1 + LD (CurLine),DE +.L1 PUSH DE + CALL FESearchDown + POP DE + INC DE + JR NC,InitAlp + DEC DE + LD (EquipLines),DE + LD (ELines),DE + LD HL,TBarU + LD (BarPgU),HL + LD HL,TBarD + LD (BarPgD),HL + LD IX,EditVBar + CALL JUMPS.InitScrBar + LD HL,0x00F0 + LD (CScrnX),HL + LD IX,EditHBar + CALL JUMPS.InitScrBar + LD HL,0xFFFF + LD (CLine),HL + LD H,0x00 + LD (CAddX),HL + CALL JUMPS.SetMouse + RET + +InitFileHex LD HL,(FEFileLenght) + LD A,L + SRL H + RR L + SRL H + RR L + SRL H + RR L + SRL H + RR L + AND 0x0F + JR Z,.L1 + INC HL +.L1 LD (EquipLines),HL + LD (ELines),HL + LD HL,(LineShift) + SRL H + RR L + SRL H + RR L + SRL H + RR L + SRL H + RR L + LD (CurLine),HL + LD HL,HBarU + LD (BarPgU),HL + LD HL,HBarD + LD (BarPgD),HL + LD IX,EditVBar + CALL JUMPS.InitScrBar + LD HL,0xFFFF + LD (CLine),HL + RET + +EditVBar DEFW 0x0270 ;X ஫ + DEFW 0x0024 ;Y ஫ + DEFW 0x00B8 ;Max ஫ + DEFW 0x0000 ;⥪. ஫ +BarPgU DEFW 0x0000 ; 祩 BarLeft +BarPgD DEFW 0x0000 ; 祩 BarRight + DEFW 0x0019 ;- ப ࠭ +ELines DEFW 0x0000 ;饥 - ப +CLine DEFW 0x0000 ;ࢠ ப ࠭ +EditHBar DEFW 0x0010 ;X ஫ + DEFW 0x00E4 ;Y ஫ + DEFW 0x0250 ;Max ஫ + DEFW 0x0000 ;⥪. ஫ + DEFW TBarL ; 祩 BarLeft + DEFW TBarR ; 祩 BarRight + DEFW 0x004E ;- ப ࠭ +CScrnX DEFW 0x0000 ;饥 - ப +CAddX DEFW 0x0000 ;ࢠ ப ࠭ + +;[]==========================================================[] +PrintPage LD A,(EditMode) + OR A + JP Z,FEPrnASCIIpage + JP FEPrnHEXpage + +PrnEDITinfo LD A,(EditMode) + OR A + JP Z,PrnASCIIinfo + JP PrnHEXinfo + +;[]==========================================================[] +FEChCursor HALT + LD HL,FECrTimer + DEC (HL) + RET NZ + LD (HL),CursTimer + LD A,(FECurCursor) + XOR 0x01 + LD (FECurCursor),A + JR Z,ResCurs + JR SetCurs + +FESetCursor LD (CursorPos),DE + LD A,0x01 + LD (FECurCursor),A + LD A,CursTimer + LD (FECrTimer),A +SetCurs + GETPORT WINSP.CPU1 + PUSH AF + GETPORT WINSP.Y_PORT + PUSH AF + SETPORT WINSP.CPU1,0x50 + LD DE,(CursorPos) + LD L,E + LD H,0x00 + ADD HL,HL + ADD HL,HL + SET 6,H + LD A,D + ADD A,A + ADD A,A + ADD A,A + ADD A,0x22 + LD C,A + LD B,COLORP.FILES + COLORI.FILES + DI + LD DE,FECursBuffer + LD A,C + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.SET_BUFFER + LD A,0x04 + ACCEL ACCELCMD.COPY + LD A,(HL) + LD (DE),A + ACCEL ACCELCMD.FILL + LD (HL),B + ACCEL ACCELCMD.OFF + INC C + LD DE,FECursBuffer+4 + LD A,C + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.COPY + LD A,(HL) + LD (DE),A + ACCEL ACCELCMD.FILL + LD (HL),B + ACCEL ACCELCMD.OFF + EI + POP AF + SETPORT WINSP.Y_PORT,,0 + POP AF + SETPORT WINSP.CPU1,,0 + RET + +FEResCursor SUB A + LD (FECurCursor),A + INC A + LD (FECrTimer),A +ResCurs + GETPORT WINSP.CPU1 + PUSH AF + GETPORT WINSP.Y_PORT + PUSH AF + SETPORT WINSP.CPU1,0x50 + LD DE,(CursorPos) + LD L,E + LD H,0x00 + ADD HL,HL + ADD HL,HL + SET 6,H + LD A,D + ADD A,A + ADD A,A + ADD A,A + ADD A,0x22 + LD C,A + DI + LD DE,FECursBuffer + LD A,C + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.SET_BUFFER + LD A,0x04 + ACCEL ACCELCMD.COPY + LD A,(DE) + LD (HL),A + ACCEL ACCELCMD.OFF + INC C + LD DE,FECursBuffer+4 + LD A,C + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.COPY + LD A,(DE) + LD (HL),A + ACCEL ACCELCMD.OFF + EI + POP AF + SETPORT WINSP.Y_PORT,,0 + POP AF + SETPORT WINSP.CPU1,,0 + RET + +FECrTimer DEFB 0x01 +FECurCursor DEFB 0x00 +CursorPos DEFW 0x0000 +FECursBuffer DUPL 8,0 + +;[]==========================================================[] +FEAbout CALL FEResCursor + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 160,72,320,85 + W_FILL 4,2,312,10,COLORI.BLACK + W_TEXT 144,3,COLORI.WHITE,"About" + W_TEXT 96,18,COLORP.HIGHGRAY,"Flex Navigator File Editor" + W_TEXT 144,28,COLORP.HIGHGRAY,"v\{FLEX_VERS.EDITOR}" + W_TEXT 18,40,COLORP.HIGHGRAY,"Programming: (C)2000 Enin Anton" + W_TEXT 92,50,COLORP.HIGHGRAY,"(C)2021 Mikhaltchenkov Dmitry" + W_BUTTON 124,66,72,14 + W_TEXT 154,69,COLORP.HIGHGRAY,"Ok" + W_END +FEAboutLoop LD IX,FEAboutTab + CALL JUMPS.TestCoords + SPDSS DSSF.SCANKEY + JR Z,FEAboutLoop + LD A,B + OR A + JR NZ,FEAboutLoop + LD A,E + CP 0x1B + JR Z,FEAboutExt + CP 0x0D + JR Z,FEAboutExt + RES 5,A + CP 'O' + JR NZ,FEAboutLoop +FEAboutExt + WINDOWCLOSE + RET + +;[]==========================================================[] +FEScrollSCRup LD DE,0x241C + JR FEScrlSCRDnUp + +FEScrollSCRdown LD DE,0x1C24 +; 室: +; D - Y 㤠 +; - Y 㤠 +FEScrlSCRDnUp DI + PUSH DE + SPMOUSE MOUSEF.REFRESH + POP DE + GETPORT WINSP.CPU1 + PUSH AF + SETPORT WINSP.CPU1,0x50 + LD HL,0x4000 + LD BC,312 + ACCEL ACCELCMD.SET_BUFFER + LD A,0xC0 + ACCEL ACCELCMD.OFF +.ScSCRN1 LD A,D + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.COPY_VERT + LD A,(HL) + ACCEL ACCELCMD.OFF + LD A,E + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.COPY_VERT + LD (HL),A + ACCEL ACCELCMD.OFF + CPI + JP PE,.ScSCRN1 + POP AF + SETPORT WINSP.CPU1,,0 + EI + RET + +;[]==========================================================[] + include fedos.a80 + include fetext.a80 + include fehex.a80 + include feprn.a80 + include fesetup.a80 + +;[]==========================================================[] +FEASCIItab: DW 0x0000,0x0270,0x001C,0x00E4,0x00,0x0000, TNewCrPos, 0x0000 + DW 0x0000,0x0050,0x00F2,0x0100,0x01,0x0000, FEAbout, 0x0000 + DW 0x0050,0x00A0,0x00F2,0x0100,0x01,0x0000, SaveFile, 0x0000 + DW 0x00A0,0x00F0,0x00F2,0x0100,0x01,0x0000, ChEditor, 0x0000 + DW 0x0190,0x01E0,0x00F2,0x0100,0x01,0x0000, EditorSetup, 0x0000 + DW 0x01E0,0x0230,0x00F2,0x0100,0x01,0x0000, FEPrintFile, 0x0000 + DW 0x0230,0x0280,0x00F2,0x0100,0x21,0x0000, EditorExit, 0x0000 + DW 0x0270,0x0280,0x001C,0x0024,0x03,0x0000, TCursorUp, 0x0000 + DW 0x0270,0x0280,0x00DC,0x00E4,0x03,0x0000, TCursorDown, 0x0000 +TBarU EQU $+6 + DW 0x0270,0x0280,0x001C,0x0000,0x00,0x0000, FETPageUp, 0x0000 +TBarD EQU $+4 + DW 0x0270,0x0280,0x0000,0x00E4,0x00,0x0000, TPageDown, 0x0000 + DW 0x0000,0x0010,0x00E4,0x00EC,0x03,0x0000, TCursorLeft, 0x0000 + DW 0x0260,0x0270,0x00E4,0x00EC,0x03,0x0000, TCursorRight, 0x0000 +TBarL EQU $+2 + DW 0x0010,0x0000,0x00E4,0x00EC,0x00,0x0000, TCursorLeft, 0x0000 +TBarR: DW 0x0000,0x0260,0x00E4,0x00EC,0x00,0x0000, TCursorRight, 0x0000 + DEFW 0x8000 + +FEHEXtab: DW 0x0000,0x0050,0x00F2,0x0100,0x01,0x0000, FEAbout, 0x0000 + DW 0x0050,0x00A0,0x00F2,0x0100,0x01,0x0000, SaveFile, 0x0000 + DW 0x00A0,0x00F0,0x00F2,0x0100,0x01,0x0000, ChEditor, 0x0000 + DW 0x00F0,0x0140,0x00F2,0x0100,0x01,0x0000, FEHGoTo, 0x0000 + DW 0x0190,0x01E0,0x00F2,0x0100,0x01,0x0000, EditorSetup, 0x0000 + DW 0x01E0,0x0230,0x00F2,0x0100,0x01,0x0000, FEPrintFile, 0x0000 + DW 0x0230,0x0280,0x00F2,0x0100,0x21,0x0000, EditorExit, 0x0000 + + DW 0x0270,0x0280,0x001C,0x0024,0x03,0x0000, HCursorUp, 0x0000 + DW 0x0270,0x0280,0x00DC,0x00E4,0x03,0x0000, HCursorDown, 0x0000 + DW 0x0048,0x01D8,0x001C,0x00E4,0x00,0x0000, HNewHEXPos, 0x0000 + DW 0x01E8,0x0268,0x001C,0x00E4,0x00,0x0000, HNewASCPos, 0x0000 +HBarU EQU $+6 + DW 0x0270,0x0280,0x001C,0x0000,0x00,0x0000, FEHPageUp, 0x0000 +HBarD EQU $+4 + DW 0x0270,0x0280,0x0000,0x00E4,0x00,0x0000, FEHPageDown, 0x0000 + DEFW 0x8000 + +FEAboutTab: DEFW 0x011C,0x0164,0x008A,0x0098,0x21,0x0000, FEAboutExt, 0x0000 + DEFW 0x0000,0x00A0,0x0000,0x0100,0x20,0x0000, FEAboutExt, 0x0000 + DEFW 0x01E0,0x0280,0x0000,0x0100,0x20,0x0000, FEAboutExt, 0x0000 + DEFW 0x0000,0x0280,0x0000,0x0048,0x20,0x0000, FEAboutExt, 0x0000 + DEFW 0x0000,0x0280,0x009D,0x0100,0x20,0x0000, FEAboutExt, 0x0000 + DEFW 0x8000 + +SureTab: DEFW 0x00F0,0x0138,0x007A,0x0088,0x021,0x0000, SureOkey, 0x0000 + DEFW 0x0148,0x0190,0x007A,0x0088,0x021,0x0000, SureExit, 0x0000 + DEFW 0x0000,0x00D0,0x0000,0x0100,0x120,0x0000, EditorLoop, 0x0000 + DEFW 0x01B0,0x0280,0x0000,0x0100,0x120,0x0000, EditorLoop, 0x0000 + DEFW 0x0000,0x0280,0x0000,0x0050,0x120,0x0000, EditorLoop, 0x0000 + DEFW 0x0000,0x0280,0x008C,0x0100,0x120,0x0000, EditorLoop, 0x0000 + DEFW 0x8000 + +NewFileTab: DEFW 0x00F0,0x0138,0x0082,0x0090,0x021,0x0000, NewFExitO, 0x0000 + DEFW 0x0148,0x0190,0x0082,0x0090,0x021,0x0000, NewFExitC, 0x0000 + DEFW 0x0000,0x00C0,0x0000,0x0100,0x020,0x0000, NewFExitC, 0x0000 + DEFW 0x01C0,0x0280,0x0000,0x0100,0x020,0x0000, NewFExitC, 0x0000 + DEFW 0x0000,0x0280,0x0000,0x0058,0x020,0x0000, NewFExitC, 0x0000 + DEFW 0x0000,0x0280,0x0094,0x0100,0x020,0x0000, NewFExitC, 0x0000 + DEFW 0x8000 + +FEQuitTab: DW 0x00F0,0x0138,0x0078,0x0086,0x21,0x0000, SureExit, 0x0000 + DW 0x0148,0x0190,0x0078,0x0086,0x21,0x0000, FEQuitAbort, 0x0000 + DW 0x0000,0x00D0,0x0000,0x0100,0x20,0x0000, FEQuitAbort, 0x0000 + DW 0x01B0,0x0280,0x0000,0x0100,0x20,0x0000, FEQuitAbort, 0x0000 + DW 0x0000,0x0280,0x0000,0x0058,0x20,0x0000, FEQuitAbort, 0x0000 + DW 0x0000,0x0280,0x008A,0x0100,0x20,0x0000, FEQuitAbort, 0x0000 + DW 0x8000 + +SettingsFileName: + DZ FILENAME.FNEDIT_INI + +;[]==========================================================[] diff --git a/plugins/fneditor/fedos.a80 b/plugins/fneditor/fedos.a80 new file mode 100644 index 0000000..ae65e91 --- /dev/null +++ b/plugins/fneditor/fedos.a80 @@ -0,0 +1,494 @@ + +; LAST UPDATE: 27.05.2025 savelij + +;[]==========================================================[] +FELoadFile CALL JUMPS.SetClock + LD DE,EditingFile + PUSH HL + SPDSS DSSF.F_FIRST,1,0x37 + POP HL + JP C,FENewFile +; LD HL,EditingFile+33 +; LD A,(HL) +;.LoadFl0 CALL FECorrBigChar +; LD (HL),A +; INC HL +; LD A,(HL) +; OR A +; JR NZ,.LoadFl0 + LD IX,EditingFile + LD L,(IX+28) + LD H,(IX+29) + LD A,H + AND 0xC0 + CP 0xC0 + LD A,0x1E + PUSH AF + CALL Z,JUMPS.DOSError ;!!!!!!!!!!!! + POP AF + SCF + JP Z,FELoadExit + LD (FEFileLenght),HL + LD A,(IX+30) + OR (IX+31) + LD A,0x1E + PUSH AF + CALL NZ,JUMPS.DOSError ;!!!!!!!!!!!! + POP AF + SCF + JP NZ,FELoadExit + SPDSS DSSF.GETMEM,3 + PUSH AF + CALL C,JUMPS.DOSError ;!!!!!!!!!!!! + POP AF + JP C,FELoadExit + LD (FEMemIndef),A + LD HL,PagesList + SPBIOS BIOSF.GETMEMBLKPAGES + LD IX,ProcessEdit + LD HL,(FEFileLenght) + LD A,H + AND 0xC0 + RLCA + RLCA + LD (IX+PROC.MAXL1),A + SUB A + LD (IX+PROC.MAXH1),A + LD (IX+PROC.MAXL2),A + LD (IX+PROC.MAXH2),A + CALL JUMPS.InitProcess + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 160,88,320,48 + W_FILL 4,2,312,10,COLORI.BLACK + W_TEXT 112,3,COLORI.WHITE,"FN File Editor v\{FLEX_VERS.EDITOR}" + W_TEXT 8,16,COLORP.HIGHGRAY,"Reading:" + W_BORDER 16,28,288,12 + W_FILL 18,29,284,10,COLORI.WHITE + W_END + SPDSS DSSF.CURDISK + LD HL,WorkBuffer + ADD A,'A' + LD (HL),A + INC HL + LD (HL),':' + INC HL + PUSH HL + SPDSS DSSF.CURDIR + POP HL + SUB A +.L1 INC HL + CP (HL) + JR NZ,.L1 + DEC HL + LD A,0x5C + CP (HL) + INC HL + JR Z,.L2 + LD (HL),A + INC HL +.L2 EX DE,HL + LD HL,EditingFile+33 + SUB A +.L3 LDI + CP (HL) + JR NZ,.L3 + LD (DE),A + LD IX,0x0100 + LD HL,WorkBuffer + LD DE,0x00D8 + LD BC,0x0068 + LD A,0x80 + CALL JUMPS.PrnRangPathL + LD HL,EditingFile+33 + SPDSS DSSF.OPEN,,1 + PUSH AF + CALL C,JUMPS.DOSError + POP AF + JP C,FENoRead + LD (FEFHandle),A + LD IX,EditingFile + LD L,(IX+28) + LD H,(IX+29) + LD (FEReadLen),HL + SETPORT WINSP.Y_PORT,0xC0 + GETPORT WINSP.CPU1 + PUSH AF + LD HL,PagesList + LD A,(HL) +.ReadLp1 INC HL + PUSH HL + SETPORT WINSP.CPU1,,0 + SPDSS DSSF.SCANKEY + LD HL,0x011B + OR A + SBC HL,DE + JP Z,FEReadAbort + LD HL,(FEReadLen) + LD BC,0x4000 + OR A + SBC HL,BC + JR C,.ReadEnd + LD (FEReadLen),HL + LD HL,0x4000 + LD DE,0x4000 + LD A,(FEFHandle) + SPDSS DSSF.READ + JP C,FEReadAbort + CALL FENextProcess + POP HL + LD A,(HL) + CP 0xFF + JR NZ,.ReadLp1 + POP AF + SETPORT WINSP.CPU1,,0 + JR .ReadExit + +.ReadEnd LD HL,0x4000 + LD DE,(FEReadLen) + LD A,D + OR E + JR Z,.ReadEn1 + LD A,(FEFHandle) + SPDSS DSSF.READ + JP C,FEReadAbort + CALL FENextProcess +.ReadEn1 POP HL + POP AF + SETPORT WINSP.CPU1,,0 +.ReadExit LD A,(FEFHandle) + SPDSS DSSF.CLOSE + OR A +FELoadExit HALT + HALT + WINDOWCLOSE + PUSH AF + CALL JUMPS.SetMouse + POP AF + RET + +FEReadAbort POP HL + POP AF + SETPORT WINSP.CPU1,,0 +FENoRead LD A,(FEMemIndef) + SPDSS DSSF.FREEMEM + SCF + JR FELoadExit + +;[]==========================================================[] +FENewFile PUSH AF + CALL JUMPS.SetMouse + POP AF + CP 0x03 + JR Z,.NewFile1 + CP 0x06 + JP NZ,EError +.NewFile1 + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 192,88,256,60 + W_FILL 4,2,248,10,COLORI.BLACK + W_TEXT 118,3,COLORI.WHITE,"Edit" + W_TEXT 84,18,COLORP.HIGHGRAY,"Can`t find the file:" + W_BUTTON 48,42,72,14 + W_TEXT 64,45,COLORP.HIGHGRAY,"New file" + W_BUTTON 136,42,72,14 + W_TEXT 154,45,COLORP.HIGHGRAY,"Cancel" + W_END + PUSH HL + LD DE,WorkBuffer + SUB A +.L1 LDI + CP (HL) + JR NZ,.L1 + LD (DE),A + LD IX,0x00E0 + LD HL,WorkBuffer + LD DE,0x0140 + LD BC,0x0076 + LD A,0x80 + CALL JUMPS.PrnRangPathC +NewFLoop LD IX,NewFileTab + CALL JUMPS.TestCoords + SPDSS DSSF.SCANKEY + JR Z,NewFLoop + LD A,B + OR A + JR NZ,NewFLoop + LD A,E + CP 0x1B + JR Z,NewFExitC + CP 0x0D + JR Z,NewFExitO + RES 5,A + CP 'N' + JR Z,NewFExitO + CP 'C' + JR NZ,NewFLoop +NewFExitC SCF +NewFExitO + WINDOWCLOSE + POP HL + RET C + LD E,L + LD D,H + LD C,0x00 + LD A,0x21 + DEC HL + DEC C +.L1 INC HL + INC C + CP (HL) + JR C,.L1 + LD A,C + OR A + LD A,0x10 + JP Z,EError + LD B,C + LD A,0x5C +.L2 DEC HL + CP (HL) + JR Z,ChangeDIR + DJNZ .L2 + EX DE,HL + JR NewFileE + +ChangeDIR INC HL + PUSH HL + EX DE,HL + LD DE,WorkBuffer + LD C,B + LD B,0x00 + LDIR + SUB A + LD (DE),A + LD HL,WorkBuffer + SPDSS DSSF.CHDIR + POP DE + JP C,EError +NewFileE LD HL,EditingFile+33 + EX DE,HL + LD A,0x20 + LD C,0x00 +NewFE0 CP (HL) + JR NC,NewFE1 + LDI + JR NewFE0 + +NewFE1 SUB A + LD (DE),A + LD A,C + OR A + LD A,0x10 + JP Z,EError + LD IX,EditingFile + SUB A + LD (IX+28),A + LD (IX+29),A + LD (IX+30),A + LD (IX+31),A + LD (IX+32),A + LD HL,0x0000 + LD (FEFileLenght),HL + SPDSS DSSF.GETMEM,3 + PUSH AF + CALL C,JUMPS.DOSError ;!!!!!!!!!!!! + POP AF + JP C,FELoadExit + LD (FEMemIndef),A + LD HL,PagesList + SPBIOS BIOSF.GETMEMBLKPAGES + OR A + RET + +EError PUSH AF + CALL JUMPS.DOSError + POP AF + SCF + RET + +;[]==========================================================[] +SaveFile CALL PutString + CALL JUMPS.SetClock + LD IX,ProcessEdit + LD HL,(FEFileLenght) + LD A,H + AND 0xC0 + RLCA + RLCA + LD B,A + LD A,H + AND 0x3F + OR L + JR Z,.L1 + INC B +.L1 LD (IX+PROC.MAXL1),B + SUB A + LD (IX+PROC.MAXH1),A + LD (IX+PROC.MAXL2),A + LD (IX+PROC.MAXH2),A + CALL JUMPS.InitProcess + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 160,88,320,48 + W_FILL 4,2,312,10,COLORI.BLACK + W_TEXT 112,3,COLORI.WHITE,"FN File Editor v\{FLEX_VERS.EDITOR}" + W_TEXT 8,16,COLORP.HIGHGRAY,"Saving:" + W_BORDER 16,28,288,12 + W_FILL 18,29,284,10,COLORI.WHITE + W_END + PUSH IY + SPDSS DSSF.CURDISK + POP IY + LD HL,WorkBuffer + ADD A,'A' + LD (HL),A + INC HL + LD (HL),':' + INC HL + PUSH IY + PUSH HL + SPDSS DSSF.CURDIR + POP HL + POP IY + SUB A +.L2 INC HL + CP (HL) + JR NZ,.L2 + DEC HL + LD A,0x5C + CP (HL) + INC HL + JR Z,.L3 + LD (HL),A + INC HL +.L3 EX DE,HL + LD HL,EditingFile+33 + SUB A +.L4 LDI + CP (HL) + JR NZ,.L4 + LD (DE),A + LD IX,0x0100 + LD HL,WorkBuffer + LD DE,0x00D0 + LD BC,0x0068 + LD A,0x80 + CALL JUMPS.PrnRangPathL + LD HL,EditingFile+33 + LD A,(EditingFile+32) + PUSH IY + SPDSS DSSF.CREATE + POP IY + PUSH AF + CALL C,JUMPS.DOSError + POP AF + JP C,SaveExit1 + LD (FEFHandle),A + LD HL,(FEFileLenght) + LD (SaveLen),HL + SETPORT WINSP.Y_PORT,0xC0 + GETPORT WINSP.CPU1 + PUSH AF + LD HL,PagesList + LD A,(HL) +SaveLp1 INC HL + PUSH HL + SETPORT WINSP.CPU1,,0 + LD HL,(SaveLen) + LD BC,0x4000 + OR A + SBC HL,BC + JR C,SaveEnd + LD (SaveLen),HL + LD HL,0x4000 + LD DE,0x4000 + LD A,(FEFHandle) + PUSH IY + SPDSS DSSF.WRITE + POP IY + JP C,SaveAbort + CALL FENextProcess + POP HL + LD A,(HL) + CP 0xFF + JR NZ,SaveLp1 + POP AF + SETPORT WINSP.CPU1,,0 + JP SaveExit + +SaveEnd LD HL,0x4000 + LD DE,(SaveLen) + LD A,D + OR E + JR Z,SaveEn1 + LD A,(FEFHandle) + PUSH IY + SPDSS DSSF.WRITE + POP IY + JP C,SaveAbort + CALL FENextProcess +SaveEn1 POP HL + POP AF + SETPORT WINSP.CPU1,,0 +SaveExit SUB A + LD (IY+ReadyFile),A + CALL PrnEDITinfo + LD A,(FEFHandle) + PUSH IY + SPDSS DSSF.CLOSE + POP IY +SaveExit1 HALT + HALT + WINDOWCLOSE + CALL JUMPS.SetMouse + RET + +SaveAbort POP HL + POP AF + SETPORT WINSP.CPU1,,0 + JR SaveExit1 + +;[]----------------------------------------------------------[] +FENextProcess LD IX,ProcessEdit + LD L,(IX+PROC.CURL1) + LD H,(IX+PROC.CURH1) + INC HL + LD (IX+PROC.CURL1),L + LD (IX+PROC.CURH1),H + LD A,H + OR L + JR NZ,.NextPr1 + LD L,(IX+PROC.CURL2) + LD H,(IX+PROC.CURH2) + INC HL + LD (IX+PROC.CURL2),L + LD (IX+PROC.CURH2),H +.NextPr1 CALL JUMPS.PrnProcess + RET + +ProcessEdit DEFW 0x00B2 + DEFW 0x0075 + DEFW 0x011C + DEFW 0x0000 + DEFW 0x0000 + DEFW 0x0000 + DEFW 0x0000 + DEFW 0x0000 + DEFW 0x0000 + DEFB 0x4F + +;FECorrBigChar CP 0x41 +; RET C +; CP 0x5B +; JR NC,.CorrCh1 +; SET 5,A +; RET + +;.CorrCh1 CP 0x80 +; RET C +; CP 0xA0 +; RET NC +; SET 5,A +; CP 0x90 +; RET C +; SET 6,A +; RES 4,A +; RET diff --git a/plugins/fneditor/fehex.a80 b/plugins/fneditor/fehex.a80 new file mode 100644 index 0000000..9614b07 --- /dev/null +++ b/plugins/fneditor/fehex.a80 @@ -0,0 +1,1228 @@ + +; LAST UPDATE: 20.03.2025 savelij + +;[]==========================================================[] +;楤 ࠭ ⥪.ᬥ. 砫 䠩 +; 室: +; None +; 室: +; None +FEPrnHEXpage LD HL,PrnHEXinfo + PUSH HL + LD HL,(FEPageShift) + LD (FETempShift),HL ; ⥪.ᬥ饭 + LD HL,LineBuffer + LD BC,0x4E20 +.L1 LD (HL),C + INC L + DJNZ .L1 + LD B,0x1C ;. +FEPrnHEXl PUSH BC + CALL FEPutHLine ;뢮 ப ࠭ + POP BC + JR C,FEFillDwnHex ;CY-稫 + LD HL,(FETempShift) + LD DE,0x0010 ; +16 + ADD HL,DE + LD (FETempShift),HL + LD A,B + ADD A,0x08 + LD B,A + CP 0xE4 + JR NZ,FEPrnHEXl +PrHEXCr LD HL,CursorTab1 + LD A,(HEXmode) + OR A + JR Z,.L1 + LD HL,CursorTab2 +.L1 LD A,(IY+CursorX) + ADD A,L + LD L,A + LD A,H + ADC A,0x00 + LD H,A + LD E,(HL) + LD D,(IY+CursorY) + CALL FESetCursor + RET + +;楤 ⪨ ࠭ +FEFillDwnHex LD A,B + CP 0xE4 + JR Z,PrHEXCr ;Z- ⪨ + LD (FEFPosHex),A + LD A,0xE4 + SUB B + LD (FEFLenHex),A + MAKEWINDOW WINSUBOBJ.WOBIND + W_FILL 0,0,624,0,COLORI.PANEL +FEFPosHex EQU $ - 7 +FEFLenHex EQU $ - 3 + W_END + JR PrHEXCr + +;楤 ⥪.ப ࠭ +FEPutHLine LD IXL,0x00 + LD IXH,B + LD HL,(FEFileLenght) + LD BC,(FETempShift) + OR A + SBC HL,BC + RET C + LD B,0x10 + LD A,H + OR A + JR NZ,.PutHLn + LD A,L + CP B + JR NC,.PutHLn + LD B,L +.PutHLn + GETPORT WINSP.CPU1 + PUSH AF + LD DE,(FETempShift) + LD A,D ;뤥塞 ࠭ + AND 0xC0 + RLCA + RLCA + EXX + LD E,A ;DE - ࠭ ᯨ᪥ + LD D,HIGH (PagesList) + LD A,(DE) ;.࠭ + SETPORT WINSP.CPU1,,0 + EXX + RES 7,D ;. 0x4000 + SET 6,D + LD HL,LineBuffer+1 ; ப + EXX + LD HL,LineBuffer+0x3D ; ASCII + EXX + LD (HL),'0' + INC L + LD A,(FETempShift+1) + CALL FEPutHexNumb + LD A,(FETempShift) + CALL FEPutHexNumb + LD (HL),':' + INC L + INC L + INC L + LD A,B + OR A + JR Z,PutHLp2 +FEPutHLoop BIT 7,D + JR Z,PutHLp1 + RES 7,D + SET 6,D + EXX + INC E ;DE - ࠭ ᯨ᪥ + LD A,(DE) ;.࠭ + SETPORT WINSP.CPU1,,0 + EXX +PutHLp1 LD A,(DE) + INC DE + EXX + LD (HL),A + INC L + EXX + CALL FEPutHexNumb ;楤 + INC L + INC IXL ;.- ⮢ + LD A,IXL + AND 0x03 + JR NZ,.L1 + INC L +.L1 DJNZ FEPutHLoop +PutHLp2 POP AF + SETPORT WINSP.CPU1,,0 +;楤 ⪨ 稢 ⮢ +FEFillHex LD A,0x10 ;.⮢ + SUB IXL ;.- ⮢ + JR Z,.FillE2 + LD B,A + LD C,0x20 +.FillE1 LD (HL),C + INC L + LD (HL),C + INC L + INC L + EXX + LD (HL),0x20 + INC L + EXX + INC IXL + LD A,IXL ; 業 2 ஡ + AND 0x03 + JR NZ,.L1 + INC L +.L1 DJNZ .FillE1 +.FillE2 LD HL,LineBuffer + LD DE,0x0000 + LD B,0x4E + LD C,IXH + LD A,COLORP.PANEL + COLORI.FILES + CALL JUMPS.PrnTxtLnNormC + OR A + RET ;CY-뫠 ᫥ ப + +;楤 ८ࠧ 8⮢ ᥫ ⭠. ⥪ +; 室: +; HL - +; - +; 室: +; ⥪.᫮ +FEPutHexNumb PUSH AF + RRCA + RRCA + RRCA + RRCA + AND 0x0F + ADD A,0x90 + DAA + ADC A,0x40 + DAA + LD (HL),A + INC L + POP AF + AND 0x0F + ADD A,0x90 + DAA + ADC A,0x40 + DAA + LD (HL),A + INC L + RET + +CursorTab1 DEFB 9,10,12,13,15,16,18,19 + DEFB 22,23,25,26,28,29,31,32 + DEFB 35,36,38,39,41,42,44,45 + DEFB 48,49,51,52,54,55,57,58 + +CursorTab2 DEFB 61,61,62,62,63,63,64,64 + DEFB 65,65,66,66,67,67,68,68 + DEFB 69,69,70,70,71,71,72,72 + DEFB 73,73,74,74,75,75,76,76 + +;[]==========================================================[] +PrnHEXinfo LD HL,LineH + LD DE,ColH + LD BC,FreeH + LD A,0x01 + REPT 0x04 + LD (HL),A + INC HL + LD (DE),A + INC DE + LD (BC),A + INC BC + ENDM + LD (HL),A + LD (DE),A + LD (BC),A + LD HL,(CurLine) + LD DE,LineH + INC HL + CALL JUMPS.ConvNumTxt16 + LD DE,ColH + LD A,(IY+CursorX) + SRL A + INC A + CALL JUMPS.ConvNumTxt8 + LD HL,0xC000 + LD DE,FreeH + LD BC,(FEFileLenght) + OR A + SBC HL,BC + CALL JUMPS.ConvNumTxt16 + LD HL,ReadyNo + LD A,(IY+ReadyFile) + OR A + JR Z,.L1 + LD HL,ReadyYes +.L1 LD DE,0x017E + LD BC,0x0011 + LD A,0x80 + CALL JUMPS.PrnTxtLnIFF + LD HL,LineH + LD DE,0x01AE + LD BC,0x0011 + LD A,0x80 + CALL JUMPS.PrnTxtLnIFF + LD HL,ColH + LD DE,0x01F8 + LD BC,0x0011 + LD A,0x80 + CALL JUMPS.PrnTxtLnIFF + LD HL,FreeH + LD DE,0x0248 + LD BC,0x0011 + LD A,0x80 + CALL JUMPS.PrnTxtLnIFF + LD IX,EditVBar + LD HL,(ELines) + LD DE,(EquipLines) + OR A + SBC HL,DE + JR Z,TstLinH + LD (ELines),DE + CALL JUMPS.InitScrBar + LD HL,(CurLine) + LD (CLine),HL + CALL JUMPS.PrnVScrBar + RET + +TstLinH LD HL,(CLine) + LD DE,(CurLine) + OR A + SBC HL,DE + RET Z + LD (CLine),DE + CALL JUMPS.PrnVScrBar + RET + +LineH DUPL 6,0 +ColH DUPL 6,0 +FreeH DUPL 6,0 + +;[]==========================================================[] +HPutSymbol CP 0x08 + JP Z,HDeleteByte + CP 0x09 + JP Z,ChHEXmode + LD C,A + LD HL,(LineShift) + LD E,(IY+CursorX) + SRL E + LD D,0x00 + ADD HL,DE + LD A,H + CP 0xC0 + RET NC + LD A,(HEXmode) + OR A + JR NZ,HPutSymbA + LD A,C + CP 'a' + JR C,.L1 + RES 5,A +.L1 CP '0' + RET C + CP 'F'+1 + RET NC + SUB '0' + CP 0x0A + JR C,HPutSH1 + SUB 0x07 + CP 0x0A + RET C +HPutSH1 LD C,A + BIT 0,(IY+CursorX) + LD B,0xF0 + JR NZ,HPutSH2 + LD B,0x0F + RLC C + RLC C + RLC C + RLC C +HPutSH2 EX DE,HL + LD HL,(FEFileLenght) + OR A + SBC HL,DE + EX DE,HL + LD A,0x00 + JR Z,.L2 + LD A,0x01 +.L2 EX AF,AF' + GETPORT WINSP.CPU1 + PUSH AF + LD A,H ;뤥塞 ࠭ + AND 0xC0 + RLCA + RLCA + LD E,A ;DE - ࠭ ᯨ᪥ + LD D,HIGH (PagesList) + LD A,(DE) ;.࠭ + SETPORT WINSP.CPU1,,0 + RES 7,H ;. 0x4000 + SET 6,H + EX AF,AF' + OR A + JR NZ,.L3 + LD (HL),A +.L3 EX AF,AF' + LD A,(HL) + AND B + OR C + LD (HL),A + POP AF + SETPORT WINSP.CPU1,,0 + JR HPrnSymbol + +HPutSymbA EX DE,HL + LD HL,(FEFileLenght) + OR A + SBC HL,DE + EX DE,HL + LD A,0x00 + JR Z,.L1 + LD A,0x01 +.L1 EX AF,AF' + GETPORT WINSP.CPU1 + PUSH AF + LD A,H ;뤥塞 ࠭ + AND 0xC0 + RLCA + RLCA + LD E,A ;DE - ࠭ ᯨ᪥ + LD D,HIGH (PagesList) + LD A,(DE) ;.࠭ + SETPORT WINSP.CPU1,,0 + RES 7,H ;. 0x4000 + SET 6,H + LD (HL),C + POP AF + SETPORT WINSP.CPU1,,0 +HPrnSymbol EX AF,AF' + OR A + JR NZ,HPrnS1 + LD HL,(FEFileLenght) + INC HL + LD (FEFileLenght),HL +HPrnS1 CALL HPrnS2 + LD (IY+ReadyFile),0x01 + CALL HCursorRight + LD HL,(LineShift) + LD E,(IY+CursorX) + SRL E + LD D,0x00 + ADD HL,DE + EX DE,HL + LD HL,(FEFileLenght) + OR A + SBC HL,DE + RET NZ + LD A,(IY+CursorX) + OR A + RET NZ +HPrnS2 CALL FEResCursor + LD HL,(LineShift) + LD (FETempShift),HL + LD A,(IY+CursorY) + ADD A,A + ADD A,A + ADD A,A + ADD A,0x1C + LD B,A + CALL FEPutHLine + CALL PrHEXCr + RET + +;[]----------------------------------------------------------[] +HDeleteByte LD HL,(LineShift) + LD E,(IY+CursorX) + SRL E + LD D,0x00 + ADD HL,DE + EX DE,HL + LD HL,(FEFileLenght) + OR A + PUSH HL + SBC HL,DE + POP HL + JP NZ,HCursorLeft + LD A,H + OR L + RET Z + DEC HL + LD (FEFileLenght),HL + LD A,E + AND 0x0F + JR NZ,HDelS1 + LD HL,EmptyAddr + LD DE,0x0008 + LD A,(IY+CursorY) + ADD A,A + ADD A,A + ADD A,A + ADD A,0x1C + LD C,A + LD B,0x06 + LD A,COLORP.PANEL + COLORI.FILES + CALL JUMPS.PrnTxtLnNormC +HDelS1 LD (IY+ReadyFile),0x01 + RES 0,(IY+CursorX) + LD A,0x01 + CALL HCursorLeft+3 + CALL FEResCursor + LD HL,(LineShift) + LD (FETempShift),HL + LD A,(IY+CursorY) + ADD A,A + ADD A,A + ADD A,A + ADD A,0x1C + LD B,A + CALL FEPutHLine + CALL PrHEXCr + RET + +EmptyAddr DEFB " " + +;[]----------------------------------------------------------[] +ChHEXmode CALL FEResCursor + RES 0,(IY+CursorX) + LD A,(HEXmode) + XOR 0x01 + LD (HEXmode),A + CALL PrHEXCr + RET + +;[]----------------------------------------------------------[] +; +HCursorLeft LD A,(HEXmode) + LD C,A + LD A,(IY+CursorX) + DEC A + AND 0x1F + CP 0x1F + JR NZ,HCurLf1 + LD B,A + LD HL,(LineShift) + LD A,H + OR L + RET Z + LD A,B + SUB C + LD (IY+CursorX),A + JP HCursorUp + +HCurLf1 SUB C + LD (IY+CursorX),A + CALL FEResCursor + CALL PrHEXCr + CALL PrnHEXinfo + RET + +;[]----------------------------------------------------------[] +; ࠢ +HCursorRight LD HL,(LineShift) + LD DE,(FEFileLenght) + LD C,(IY+CursorX) + SRL C + LD B,0x00 + ADD HL,BC + SBC HL,DE + RET Z + LD A,(HEXmode) + LD C,A + LD A,(IY+CursorX) + INC A + ADD A,C + AND 0x1F + JR NZ,HCurRg1 + LD B,A + LD HL,(LineShift) + LD DE,0x0010 + ADD HL,DE + EX DE,HL + LD HL,(FEFileLenght) + SBC HL,DE + RET C + LD A,B + LD (IY+CursorX),A + JP HCursorDown + +HCurRg1 LD (IY+CursorX),A + CALL FEResCursor + CALL PrHEXCr + CALL PrnHEXinfo + RET + +;[]----------------------------------------------------------[] +HHomeString LD A,(IY+CursorX) + CP 0x02 + RET C + LD (IY+CursorX),0x00 + CALL FEResCursor + CALL PrHEXCr + CALL PrnHEXinfo + RET + +;[]----------------------------------------------------------[] +HEndString LD A,(IY+CursorX) + CP 0x1E + RET NC + LD (IY+CursorX),0x1E + CALL FEResCursor + CALL PrHEXCr + CALL PrnHEXinfo + RET + +;[]----------------------------------------------------------[] +HCursorUp LD HL,(LineShift) + LD A,H + OR L + RET Z + LD A,(IY+CursorY) + OR A + JP Z,HScrollUp + LD DE,0x0010 + SBC HL,DE + LD (LineShift),HL + DEC (IY+CursorY) + CALL FEResCursor + CALL PrHEXCr + JP HCursorExit + +HCursorDown LD HL,(FEFileLenght) + LD DE,(LineShift) + LD A,(IY+CursorX) + SRL A + ADD A,0x10 + LD C,A + LD B,0x00 + EX DE,HL + ADD HL,BC + EX DE,HL + SBC HL,DE + JP C,FEHEndFile + LD A,(IY+CursorY) + CP 0x18 + JP Z,HScrollDown + LD A,E + AND 0xF0 + LD E,A + LD (LineShift),DE + INC (IY+CursorY) + CALL FEResCursor + CALL PrHEXCr + JP HCursorExit + +HScrollUp LD HL,(FEPageShift) + LD A,H + OR L + JP Z,HCursorUp + LD DE,0x0010 + SBC HL,DE + LD (FEPageShift),HL + LD (FETempShift),HL + LD HL,(LineShift) + SBC HL,DE + LD (LineShift),HL + CALL FEResCursor + CALL FEScrollSCRdown + LD B,0x1C + CALL FEPutHLine + CALL PrHEXCr + JP HCursorExit + +HScrollDown LD HL,(FEPageShift) + LD DE,0x0190 + ADD HL,DE + EX DE,HL + LD HL,(FEFileLenght) + OR A + SBC HL,DE ;஢塞 䠩 + JP C,HCursorDown + LD (FETempShift),DE ; ⥪.ᬥ饭 + LD HL,(FEPageShift) + LD DE,0x0010 + ADD HL,DE + LD (FEPageShift),HL + LD HL,(LineShift) + ADD HL,DE + LD (LineShift),HL + CALL FEResCursor + CALL FEScrollSCRup + LD B,0xDC + CALL FEPutHLine + CALL PrHEXCr +HCursorExit LD HL,(LineShift) + SRL H + RR L + SRL H + RR L + SRL H + RR L + SRL H + RR L + LD (CurLine),HL + CALL PrnHEXinfo + RET + +;[]----------------------------------------------------------[] +FEHPageUp LD HL,(FEPageShift) + LD A,H + OR L + JP Z,FEHBegFile + LD DE,0x0190 + OR A + SBC HL,DE + JR NC,.L1 + LD HL,0x0000 +.L1 LD (FEPageShift),HL + LD HL,(LineShift) + OR A + SBC HL,DE + JR NC,.L2 + LD HL,0x0000 +.L2 LD (LineShift),HL + JR HPageExit + +;[]----------------------------------------------------------[] +FEHPageDown LD HL,(FEPageShift) + LD BC,0x0190 + ADD HL,BC + EX DE,HL + LD HL,(FEFileLenght) + OR A + SBC HL,DE ;஢塞 䠩 + JP C,FEHEndFile + LD (FEPageShift),DE + LD HL,(LineShift) + ADD HL,BC + EX DE,HL + LD HL,(FEFileLenght) + OR A + SBC HL,DE ;஢塞 䠩 + JP C,FEHEndFile + LD (LineShift),DE +HPageExit LD HL,(LineShift) + SRL H + RR L + SRL H + RR L + SRL H + RR L + SRL H + RR L + LD (CurLine),HL + CALL FEPrnHEXpage ;⠥ ࠭ + RET + +;[]----------------------------------------------------------[] +; 砫 䠩 +FEHBegFile LD HL,(LineShift) + LD A,(IY+CursorX) + OR H + OR L + RET Z + SUB A + LD (IY+CursorX),A + LD (IY+CursorY),A + LD HL,0x0000 ;饭 = 0000 + LD (LineShift),HL + LD (FEPageShift),HL + LD (CurLine),HL + CALL FEPrnHEXpage ;⠥ ࠭ + RET + +;[]----------------------------------------------------------[] +; 䠩 +FEHEndFile LD HL,(LineShift) + LD E,(IY+CursorX) + SRL E + LD D,0x00 + ADD HL,DE + EX DE,HL + LD HL,(FEFileLenght) + OR A + PUSH HL + SBC HL,DE ;஢塞 䠩 + POP HL + RET Z + LD HL,(FEPageShift) + LD BC,0x0190 + ADD HL,BC + EX DE,HL + LD HL,(FEFileLenght) + OR A + SBC HL,DE ;஢塞 䠩 + ADD HL,DE + JR C,.HEnd1 + SBC HL,BC + LD A,L + AND 0xF0 + LD L,A + LD DE,0x0010 + ADD HL,DE + LD (FEPageShift),HL +.HEnd1 LD HL,(FEFileLenght) + LD DE,(FEPageShift) + OR A + SBC HL,DE + PUSH HL + SRL H + RR L + SRL H + RR L + SRL H + RR L + SRL H + RR L + LD (IY+CursorY),L + POP DE + LD A,E + AND 0xF0 + LD E,A + LD HL,(FEPageShift) + ADD HL,DE + LD (LineShift),HL + SRL H + RR L + SRL H + RR L + SRL H + RR L + SRL H + RR L + LD (CurLine),HL + LD A,(FEFileLenght) + AND 0x0F + ADD A,A + LD (IY+CursorX),A + CALL FEPrnHEXpage ;⠥ ࠭ + RET + +;[]----------------------------------------------------------[] +HNewHEXPos EX DE,HL + LD BC,0x001C + OR A + SBC HL,BC + LD A,L + AND 0xF8 + LD L,A + SLA L + RL H + PUSH HL + SRL H + RR L + SRL H + RR L + SRL H + RR L + SRL H + RR L + LD A,L + EX AF,AF' + EX DE,HL + LD BC,0x0048 + OR A + SBC HL,BC + SRL H + RR L + SRL H + RR L + SRL H + RR L + LD A,L + LD HL,HNewPosTb + ADD A,A + ADD A,L + LD L,A + JR NC,.L1 + INC H +.L1 LD A,(HL) + INC HL + LD L,(HL) + LD H,A + POP DE + OR A + RET M + PUSH HL + LD HL,(FEPageShift) + ADD HL,DE + EX DE,HL + PUSH DE + ADD A,E + LD E,A + JR NC,.L2 + INC D +.L2 LD HL,(FEFileLenght) + OR A + SBC HL,DE + POP DE + POP HL + RET C + LD A,H + ADD A,A + ADD A,L + LD (IY+CursorX),A + EX AF,AF' + LD (IY+CursorY),A + LD (LineShift),DE + SRL D + RR E + SRL D + RR E + SRL D + RR E + SRL D + RR E + LD (CurLine),DE + CALL FEResCursor + SUB A + LD (HEXmode),A + CALL PrHEXCr + CALL PrnHEXinfo + RET + +HNewPosTb DEFB 0,0,0,1,-1,-1 + DEFB 1,0,1,1,-1,-1 + DEFB 2,0,2,1,-1,-1 + DEFB 3,0,3,1,-1,-1,-1,-1 + DEFB 4,0,4,1,-1,-1 + DEFB 5,0,5,1,-1,-1 + DEFB 6,0,6,1,-1,-1 + DEFB 7,0,7,1,-1,-1,-1,-1 + DEFB 8,0,8,1,-1,-1 + DEFB 9,0,9,1,-1,-1 + DEFB 10,0,10,1,-1,-1 + DEFB 11,0,11,1,-1,-1,-1,-1 + DEFB 12,0,12,1,-1,-1 + DEFB 13,0,13,1,-1,-1 + DEFB 14,0,14,1,-1,-1 + DEFB 15,0,15,1,-1,-1,-1,-1 + +HNewASCPos EX DE,HL + LD BC,0x001C + OR A + SBC HL,BC + LD A,L + AND 0xF8 + LD L,A + SLA L + RL H + PUSH HL + SRL H + RR L + SRL H + RR L + SRL H + RR L + SRL H + RR L + LD A,L + EX AF,AF' + EX DE,HL + LD BC,0x01E8 + OR A + SBC HL,BC + SRL H + RR L + SRL H + RR L + SRL H + RR L + POP DE + LD A,L + PUSH HL + LD HL,(FEPageShift) + ADD HL,DE + EX DE,HL + PUSH DE + ADD A,E + LD E,A + JR NC,.L1 + INC D +.L1 LD HL,(FEFileLenght) + OR A + SBC HL,DE + POP DE + POP HL + RET C + LD A,L + ADD A,A + LD (IY+CursorX),A + EX AF,AF' + LD (IY+CursorY),A + LD (LineShift),DE + SRL D + RR E + SRL D + RR E + SRL D + RR E + SRL D + RR E + LD (CurLine),DE + CALL FEResCursor + LD A,0x01 + LD (HEXmode),A + CALL PrHEXCr + CALL PrnHEXinfo + RET + +;[]----------------------------------------------------------[] +;楤 㪠⥫ ᬥ饭 䠩 +FEHGoTo LD HL,(FEFileLenght) + LD A,H ;஢塞, + OR A ;䠩 16 + JR NZ,.HGoToOk + LD A,L + CP 0x11 + RET C ; 16 +.HGoToOk CALL FEResCursor + LD HL,FENewShift ; 㪠. + SUB A + LD (FECursPos),A ; + INC A + LD (FEBuffFlg),A + LD (HL),'0' + INC HL + LD A,(FEPageShift+1) + CALL FEPutHexNumb ;ᨬ ⥪饥 ᬥ. + LD A,(FEPageShift) ; ⥪⮢ + CALL FEPutHexNumb +;뢮 ࠭ +FEHGoToRet CALL FEPrintHGT ;⠥ +FEHGoToLp HALT ; 뢠 + CALL FEChangeCurs ;஢ ᬥ + SPMOUSE MOUSEF.READ_STATE + BIT 0,A + JP NZ,FEHGTescape + SPDSS DSSF.SCANKEY ; + JR Z,FEHGoToLp ;Z - + LD A,B + AND 0x3F + JR NZ,FEHGoToLp + LD A,E + OR A + JR Z,FEHGoToSys ;A=0 . + CP 0x0D + JP Z,FEHGTenter ; Enter + CP 0x08 + JR Z,FEHGTdelete ; BackSpace + CP 0x1B + JP Z,FEHGTescape ; Esc + CP 0x20 + JR C,FEHGoToLp ;<0x20 室 + LD C,A ;. ASCII + LD A,0x00 +FEBuffFlg EQU $-1 + OR A + CALL NZ,FEClearBuff + LD A,0x00 ;⥪. +FECursPos EQU $-1 + LD B,A ;.⥪.. + LD HL,FENewShift ;. 砫 + ADD A,L + LD L,A + JR NC,.L1 + INC H +.L1 LD (HL),C ;ᨬ + LD A,B ;⥪.. + CP 0x04 ; (7-᫥) + JR Z,FEHGoToRet ;⠥ ப + INC A ;᫥. + LD (FECursPos),A + JR FEHGoToRet ;⠥ ப + +FEClearBuff LD HL,FENewShift + LD B,0x05 + LD A,0x20 +.L2 LD (HL),A + INC HL + DJNZ .L2 + SUB A + LD (FEBuffFlg),A + RET + +; +FEHGTdelete SUB A + LD (FEBuffFlg),A + LD A,(FECursPos) ;. + OR A + JR Z,FEHGoToLp ;0 - 室 + DEC A + LD (FECursPos),A ;।. + LD HL,FENewShift + ADD A,L ;ᬥ. + LD L,A + JR NC,.L1 + INC H +.L1 LD (HL),' ' ; ஡ + JR FEHGoToRet + +;⥬ +FEHGoToSys LD A,D + CP 0x54 ;<- + JR Z,.HGTleft + CP 0x56 ;-> + JR Z,.HGTright + JR FEHGoToLp + +; +.HGTleft SUB A + LD (FEBuffFlg),A + LD A,(FECursPos) ;. + OR A + JP Z,FEHGoToLp ;0 - 室 + DEC A + LD (FECursPos),A ;.. + JP FEHGoToRet + +.HGTright SUB A + LD (FEBuffFlg),A + LD A,(FECursPos) ;. + CP 0x04 + JP Z,FEHGoToLp ;7 - ᫥ + INC A + LD (FECursPos),A ;.. + JP FEHGoToRet + +;楤 뢮 ப +FEPrintHGT LD HL,FENewShift + LD DE,0x0008 + LD BC,0x051C + LD A,COLORP.PANEL + COLORI.FILES + CALL JUMPS.PrnTxtLnNormC + LD A,(FECursPos) ; 뢮 + INC A + LD L,A + LD H,0x00 + ADD HL,HL + ADD HL,HL + ADD HL,HL + EX DE,HL + LD HL,FETCursor + LD (HL),0xAB;'<' + LD BC,0x011C + LD A,COLORP.PANEL + COLORI.FILES + CALL JUMPS.PrnTxtLnNormC + LD A,0x01 ; 뢥 + LD (FECurCurs),A + LD A,0x06 ; ᬥ + LD (FECurWait),A + RET + +;楤 ᬥ +FEChangeCurs LD A,0x00 ;প ᬥ +FECurWait EQU $-1 + DEC A + LD (FECurWait),A + RET NZ ; ६ + LD A,(FECursPos) + INC A + LD L,A + LD H,0x00 ;. + ADD HL,HL + ADD HL,HL + ADD HL,HL + EX DE,HL + LD HL,FENewShift ;. + LD A,(FECursPos) + ADD A,L + LD L,A + JR NC,.L1 + INC H +.L1 LD A,0x00 ; ⥪饣 +FECurCurs EQU $-1 + XOR 0x01 ;塞 + LD (FECurCurs),A + LD A,(HL) + JR Z,.L2 ;⠥ + LD A,0xBB;'<' +.L2 LD HL,FETCursor + LD (HL),A + LD BC,0x011C + LD A,COLORP.PANEL + COLORI.FILES + CALL JUMPS.PrnTxtLnNormC + LD A,0x0C ; ᬥ + LD (FECurWait),A + RET + +FETCursor DEFB ' ' + +; ENTER +FEHGTenter SUB A ; 訡 ୥ ஬ + LD (FECursPos),A ; 㫥 樨 + LD BC,FENewShift ; ப + CALL GetHexNum16 ;ॢ ⥪ 32 ᫮ + JP C,FEHGoToRet ;CY - ᨭ⠪.訡 + LD C,E + LD B,D + LD A,L ; 16 + AND 0xF0 + LD L,A + EX DE,HL ;. BC+DE + LD HL,(FEFileLenght) ;஢塞, ᬥ饭 + OR A ;। 䠩 + SBC HL,DE + EX DE,HL + JR NC,.HGTent1 ;NZ- । + LD HL,(FEFileLenght) + LD A,L + AND 0xF0 + LD L,A +.HGTent1 LD (FEPageShift),HL + LD (LineShift),HL + SRL H + RR L + SRL H + RR L + SRL H + RR L + SRL H + RR L + LD (CurLine),HL + SUB A + LD (IY+CursorX),A + LD (IY+CursorY),A + CALL FEPrnHEXpage ;⠥ ࠭ + RET + +; Escape +FEHGTescape LD HL,FENewShift ; ப + PUSH HL + LD (HL),'0' + INC HL + LD A,(FEPageShift+1) ;ᨬ ⥪.ᬥ饭 + CALL FEPutHexNumb + LD A,(FEPageShift) + CALL FEPutHexNumb + POP HL + LD DE,0x0008 + LD BC,0x051C + LD A,COLORP.PANEL + COLORI.FILES + CALL JUMPS.PrnTxtLnNormC + CALL PrHEXCr + CALL JUMPS.ResFire + RET ;室 + +FENewShift DEFB " ",0 + +;楤 ஢ 32⮢ .⥪⮢ ᫠ +; 室: +; BC - ⥪⮬ (0- ) +; 室: +; DE+HL - ᫮ 32 +; CY - ᨭ⠪᪠ 訡 +GetHexNum16 LD HL,0x0000 +FEGetHNlp LD A,(BC) + INC BC + OR A + RET Z + CP ' ' + JR Z,FEGetHNlp + CP 0x61 + JR C,.L1 + SUB 0x20 +.L1 CP 0x30 + RET C + CP 0x47 + CCF + RET C + SUB 0x30 + CP 0x0A + JR C,FEGetHNum + SUB 0x07 + CP 0x0A + RET C +FEGetHNum ADD HL,HL + ADD HL,HL + ADD HL,HL + ADD HL,HL + OR L + LD L,A + JR FEGetHNlp diff --git a/plugins/fneditor/femain.a80 b/plugins/fneditor/femain.a80 new file mode 100644 index 0000000..2412d30 --- /dev/null +++ b/plugins/fneditor/femain.a80 @@ -0,0 +1,24 @@ + +; LAST UPDATE: 20.03.2025 savelij + + include macros.a80 + include fn_const.a80 + include fn_macros.a80 + include fn_version.a80 + include accel_sp.a80 + include ports_sp.a80 + include define_sp.a80 + include macros_sp.a80 + include dss_sp.a80 + include bios_sp.a80 + include mouse_sp.a80 + + org PluginOrg ; #C000 - Header lenght +; Flex Navigator plugin header +PluginStart: db "FLX-PLUG" ; Id + dw 0x0000 ; LoadOffset + dw 0x0000 ; EntryOffset + db 0x00 ; PluginMode + db 0x00,0x00,0x00 ; Reserved + +PluginEntry: include feditor.a80 diff --git a/plugins/fneditor/feprn.a80 b/plugins/fneditor/feprn.a80 new file mode 100644 index 0000000..e38224d --- /dev/null +++ b/plugins/fneditor/feprn.a80 @@ -0,0 +1,340 @@ + +; LAST UPDATE: 20.03.2025 savelij + +;[]==========================================================[] +FEPrintFile CALL FEResCursor + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 168,96,304,50 + W_FILL 4,2,296,10,COLORI.BLACK + W_TEXT 132,3,COLORI.WHITE,"Print file" + W_BORDER 16,16,272,12 + W_FILL 18,17,268,10,COLORI.WHITE + W_BUTTON 116,32,72,14 + W_TEXT 140,35,COLORP.HIGHGRAY,"Stop" + W_END + LD IX,FEPrintTab + CALL JUMPS.TestCoords + LD IX,FEProcessPrn + LD HL,(FEFileLenght) + LD A,L + LD L,H + LD H,0x00 + OR A + JR Z,.InitPrn + INC HL +.InitPrn LD (IX+PROC.MAXL1),L + LD (IX+PROC.MAXH1),H + LD (IX+PROC.MAXL2),0X00 + LD (IX+PROC.MAXH2),0x00 + CALL JUMPS.InitProcess + LD A,(EditMode) + OR A + JP NZ,FEPrintHEX +FEPrintASCII LD HL,0x0000 + LD (FETempShift),HL + LD HL,(FEFileLenght) + GETPORT WINSP.CPU1 + PUSH AF + LD DE,(FETempShift) + LD A,D ;뤥塞 ࠭ + AND 0xC0 + RLCA + RLCA + EXX + LD E,A ;DE - ࠭ ᯨ᪥ + LD D,HIGH (PagesList) + LD A,(DE) ;.࠭ + SETPORT WINSP.CPU1,,0 + EXX + RES 7,D ;. 0x4000 + SET 6,D +FEPrnASCII BIT 7,D + JR Z,PrnASC + RES 7,D + SET 6,D + EXX + INC E ;DE - ࠭ ᯨ᪥ + LD A,(DE) ;.࠭ + SETPORT WINSP.CPU1,,0 + EXX +PrnASC LD A,(DE) + INC DE + CALL FEPrintCHAR + JR C,FEPrnASCIIext + CALL FENxtPrnProc + DEC HL + LD A,H + OR L + JR NZ,FEPrnASCII + CALL FEEndJob + jr c,FEPrnASCIIext + LD DE,0x0000 + CALL FENxtPrnProc + HALT + HALT +FEPrnASCIIext POP AF + SETPORT WINSP.CPU1,,0 + WINDOWCLOSE + RET + +FEPrintHEX LD HL,0x0000 + LD (FETempShift),HL + LD HL,LineBuffer + LD BC,0x4E20 +.L1 LD (HL),C + INC L + DJNZ .L1 +FEPrintHEXlp CALL FEPrnHEXline + JR C,FEPrintHEXext + LD HL,(FETempShift) + LD DE,0x0010 ; +16 + ADD HL,DE + LD (FETempShift),HL + JR FEPrintHEXlp + +FEPrintHEXext CALL FEEndJob + OR A + JR NZ,.PrnHEXe + LD DE,0x0000 + CALL FENxtPrnProc + HALT + HALT +.PrnHEXe + WINDOWCLOSE + RET + +FEPrnHEXline LD IXL,0x00 + LD IXH,B + LD HL,(FEFileLenght) + LD BC,(FETempShift) + OR A + SBC HL,BC + LD A,0x00 + RET C + LD B,0x10 + LD A,H + OR A + JR NZ,.PrnHLn + LD A,L + CP B + JR NC,.PrnHLn + LD B,L +.PrnHLn + GETPORT WINSP.CPU1 + PUSH AF + LD DE,(FETempShift) + LD A,D ;뤥塞 ࠭ + AND 0xC0 + RLCA + RLCA + EXX + LD E,A ;DE - ࠭ ᯨ᪥ + LD D,HIGH (PagesList) + LD A,(DE) ;.࠭ + SETPORT WINSP.CPU1,,0 + EXX + RES 7,D ;. 0x4000 + SET 6,D + LD HL,LineBuffer+1 ; ப + EXX + LD HL,LineBuffer+0x3D ; ASCII + EXX + LD (HL),'0' + INC L + LD A,(FETempShift+1) + CALL FEPutHexNumb + LD A,(FETempShift) + CALL FEPutHexNumb + LD (HL),':' + INC L + INC L + INC L + LD A,B + OR A + JR Z,PrnHLp2 +FEPrnHLoop BIT 7,D + JR Z,PrnHLp1 + RES 7,D + SET 6,D + EXX + INC E ;DE - ࠭ ᯨ᪥ + LD A,(DE) ;.࠭ + SETPORT WINSP.CPU1,,0 + EXX +PrnHLp1 LD A,(DE) + INC DE + EXX + CP 0x20 + JR NC,.L1 + LD A,'.' +.L1 LD (HL),A + INC L + EXX + CALL FEPutHexNumb ;楤 + INC L + INC IXL ;.- ⮢ + LD A,IXL + AND 0x03 + JR NZ,.L2 + INC L +.L2 DJNZ FEPrnHLoop +PrnHLp2 POP AF + SETPORT WINSP.CPU1,,0 +;楤 ⪨ 稢 ⮢ +FillHeP LD A,0x10 ;.⮢ + SUB IXL ;.- ⮢ + JR Z,FEFillP2 + LD B,A + LD C,0x20 +FEFillP1 LD (HL),C + INC L + LD (HL),C + INC L + INC L + EXX + LD (HL),0x20 + INC L + EXX + INC IXL + LD A,IXL ; 業 2 ஡ + AND 0x03 + JR NZ,.L1 + INC L +.L1 DJNZ FEFillP1 +FEFillP2 LD HL,LineBuffer + LD B,0x4E +FEPrnHEX LD A,(HL) + INC HL + CALL FEPrintCHAR + LD A,0x01 + RET C + DJNZ FEPrnHEX + LD A,0x0D + CALL FEPrintCHAR + RET C + LD A,0x0A + CALL FEPrintCHAR + RET + +FEPrintCHAR LD IXL,A + PUSH IX + PUSH HL + PUSH DE + PUSH BC + EXX + PUSH DE + SPMOUSE MOUSEF.READ_STATE + BIT 0,A + JR Z,.PrnCH1 + LD IX,FEPrintTab + CALL JUMPS.TestCoords + JR C,.PrnCH2 +.PrnCH1 + SPDSS DSSF.SCANKEY + LD A,E +.PrnCH2 POP DE + EXX + POP BC + POP DE + POP HL + POP IX + RET C + JR Z,FEPrnCHAR + CP 0x1B + SCF + RET Z + RES 5,A + CP 'S' + JR NZ,FEPrnCHAR +FEStopPrint SCF + RET + +FEPrnCHAR PUSH HL + PUSH DE + PUSH BC + EXX + PUSH DE + LD A,IXL + SPDSS DSSF.PRINT + POP DE + LD A,B + EXX + POP BC + POP DE + POP HL + RET NC + HALT + JR FEPrintCHAR + +FEPrintTab DEFW 0x011C,0x0164,0x0080,0x008E,0x01,0x0000,FEStopPrint,0x0000 + DEFW 0x8000 + +FENxtPrnProc LD A,E + OR A + RET NZ + PUSH HL + PUSH DE + PUSH BC + EXX + PUSH DE + LD IX,FEProcessPrn + LD L,(IX+PROC.CURL1) + LD H,(IX+PROC.CURH1) + INC HL + LD (IX+PROC.CURL1),L + LD (IX+PROC.CURH1),H + LD A,H + OR L + JR NZ,.NxtProc + LD L,(IX+PROC.CURL2) + LD H,(IX+PROC.CURH2) + INC HL + LD (IX+PROC.CURL2),L + LD (IX+PROC.CURH2),H +.NxtProc CALL JUMPS.PrnProcess + POP DE + EXX + POP BC + POP DE + POP HL + RET + +FEEndJob: PUSH AF + PUSH HL + PUSH BC + EXX + PUSH DE + ld a,0x0C + CALL FEPrintCHAR + jr c,.print_cancel + ld a,0x1B + CALL FEPrintCHAR + jr c,.print_cancel + ld a,0x40 + CALL FEPrintCHAR + jr c,.print_cancel + POP DE + EXX + POP BC + POP HL + POP AF + ret + +.print_cancel: POP DE + EXX + POP BC + POP HL + POP AF + SCF + RET + +FEProcessPrn DEFW 0x00BA + DEFW 0x0071 + DEFW 0x010C + DEFW 0x0000 + DEFW 0x0000 + DEFW 0x0000 + DEFW 0x0000 + DEFW 0x0000 + DEFW 0x0000 + DEFB 0x4F diff --git a/plugins/fneditor/fesetup.a80 b/plugins/fneditor/fesetup.a80 new file mode 100644 index 0000000..7096e45 --- /dev/null +++ b/plugins/fneditor/fesetup.a80 @@ -0,0 +1,314 @@ + +; LAST UPDATE: 24.03.2025 savelij + +FECSign: DB "FEC" +HomeKeyFlag: DB 0 +IndentFlag: DB 0 +BracketsFlag: DB 0 +ExitDlgFlag: DB 0 + +;[]==========================================================[] +ReadEditorIni: ld a,0 +.iniReaded EQU $-1 + and a + ret nz + inc a + ld (.iniReaded),a + PUSH IY + SPDSS DSSF.CURDISK + POP IY + LD HL,WorkBuffer + ADD A,'A' + LD (HL),A + INC HL + LD (HL),':' + INC HL + PUSH IY + SPDSS DSSF.CURDIR + POP IY + GETPORT WINSP.CPU1 + PUSH AF + LD A,(JUMPS.FNFUNCT) + SETPORT WINSP.CPU1,,0 + LD HL,ADDR.FlexDIRECTORY + PUSH IY + SPDSS DSSF.CHDIR + POP IY + EX AF,AF' + POP AF + SETPORT WINSP.CPU1,,0 + EX AF,AF' + JP C,.exit + LD HL,SettingsFileName + PUSH IY + SPDSS DSSF.OPEN,,1 + pop iy + jr c,.exit + ld (.file),a + ld hl,LineBuffer + push hl + ld de,LineBuffer+1 + ld (hl),0 + ld bc,7 + ldir + pop hl + ld de,7 + PUSH IY + SPDSS DSSF.READ + pop iy + jr c,.close + ld hl,(LineBuffer) + ld de,'EF' + and a + sbc hl,de + jr nz,.close + ld hl,LineBuffer+2 + ld a,(hl) + cp 'C' + jr nz,.close + inc hl + ld a,(hl) + ld (THomeString.param),a + inc hl + ld a,(hl) + ld (CalcStartTabs.param),a + inc hl + ld a,(hl) + ld (AutoBrackets),a + inc hl + ld a,(hl) + ld (QuitAsk.param),a +.close: ld a,0 +.file EQU $-1 + PUSH IY + SPDSS DSSF.CLOSE + pop IY +.exit: LD HL,WorkBuffer + PUSH IY + SPDSS DSSF.CHDIR + POP IY + ret + +;[]==========================================================[] +EditorSetup: CALL PutString + CALL FEResCursor + LD A,(QuitAsk.param) + ld (ExitDlgFlag),a + CALL ParamToSymbol + LD (ExitDlgFlg),A + LD A,(THomeString.param) + ld (HomeKeyFlag),a + CALL ParamToSymbol + LD (HomeKeyFlg),A + LD A,(CalcStartTabs.param) + ld (IndentFlag),a + CALL ParamToSymbol + LD (IndentFlg),A + LD A,(AutoBrackets) + ld (BracketsFlag),a + CALL ParamToSymbol + LD (BracketsFlg),A + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 200,80,240,110 + W_FILL 4,2,232,10,COLORI.BLACK + W_TEXT 84,3,COLORI.WHITE,"Editor settings" + W_BORDER 16,19,20,11 + W_FILL 18,20,16,9,COLORI.WHITE + W_TEXT 20,21,COLORP.WHITE,"\xFF" +ExitDlgFlg: EQU $ - 2 + W_TEXT 40,22,COLORP.HIGHGRAY,"Confirmation of closing the editor" + W_BORDER 16,35,20,11 + W_FILL 18,36,16,9,COLORI.WHITE + W_TEXT 20,37,COLORP.WHITE,"\xFF" +HomeKeyFlg: EQU $-2 + W_TEXT 40,38,COLORP.HIGHGRAY,"find first symbol on Home key" + W_BORDER 16,51,20,11 + W_FILL 18,52,16,9,COLORI.WHITE + W_TEXT 20,53,COLORP.WHITE,"\xFF" +IndentFlg: EQU $-2 + W_TEXT 40,54,COLORP.HIGHGRAY,"auto Indent" + W_BORDER 16,67,20,11 + W_FILL 18,68,16,9,COLORI.WHITE + W_TEXT 20,69,COLORP.WHITE,"\xFF" +BracketsFlg: EQU $-2 + W_TEXT 40,70,COLORP.HIGHGRAY,"auto Brackets" + W_HORIZLINE 4,84,232 + W_BUTTON 77,90,72,14 + W_TEXT 96,93,COLORP.HIGHGRAY,"Cancel" + W_BUTTON 160,90,64,14 + W_TEXT 188,93,COLORP.HIGHGRAY,"Ok" + W_END + +FESetupLoop: LD IX,FESetupTab + CALL JUMPS.TestCoords + SPDSS DSSF.SCANKEY + JR Z,FESetupLoop + LD A,E + RES 5,A + CP 0x1B + JP Z,FESetupCancel + CP 0x0D + JP Z,FESetupOkey + CP 'O' + JP Z,FESetupOkey + ld hl,FESetupLoop + push hl + CP 'B' + JP Z,SetupAutoBracketsInvert + CP 'C' + JP Z,SetupConfirmDlgInvert + CP 'H' + JP Z,SetupHomeKeyInvert + CP 'I' + JP Z,SetupAutoIndentInvert + ret + +;A - parameter +;Out - A = A == 0 ? " " : "v" +ParamToSymbol: OR A + LD A,0xFE + RET Z + INC A + RET + +CheckTxt: DEFB 0x00,0x00 + +SetupConfirmDlgInvert: + LD HL,CheckTxt + LD A,(ExitDlgFlag) + XOR 0x01 + LD (ExitDlgFlag),A + call ParamToSymbol + LD (HL),A + LD DE,0x00DC + LD BC,0x0065 + LD A,0xF0 + CALL JUMPS.PrnTxtLnIFF + JP JUMPS.ResFire + +SetupHomeKeyInvert: + LD HL,CheckTxt + LD A,(HomeKeyFlag) + XOR 0x01 + LD (HomeKeyFlag),A + call ParamToSymbol + LD (HL),A + LD DE,0x00DC + LD BC,0x0075 + LD A,0xF0 + CALL JUMPS.PrnTxtLnIFF + JP JUMPS.ResFire + +SetupAutoIndentInvert: + LD HL,CheckTxt + LD A,(IndentFlag) + XOR 0x01 + LD (IndentFlag),A + call ParamToSymbol + LD (HL),A + LD DE,0x00DC + LD BC,0x0085 + LD A,0xF0 + CALL JUMPS.PrnTxtLnIFF + JP JUMPS.ResFire + +SetupAutoBracketsInvert: + LD HL,CheckTxt + LD A,(BracketsFlag) + XOR 0x01 + LD (BracketsFlag),A + call ParamToSymbol + LD (HL),A + LD DE,0x00DC + LD BC,0x0095 + LD A,0xF0 + CALL JUMPS.PrnTxtLnIFF + JP JUMPS.ResFire + +FESetupOkey: ld a,(ExitDlgFlag) + LD (QuitAsk.param),a + LD A,(HomeKeyFlag) + LD (THomeString.param),A + ld A,(IndentFlag) + LD (CalcStartTabs.param),A + ld a,(BracketsFlag) + LD (AutoBrackets),a + PUSH IY + SPDSS DSSF.CURDISK ;Write ini-file + LD HL,WorkBuffer + ADD A,'A' + LD (HL),A + INC HL + LD (HL),':' + INC HL + SPDSS DSSF.CURDIR + GETPORT WINSP.CPU1 + PUSH AF + LD A,(JUMPS.FNFUNCT) + SETPORT WINSP.CPU1,,0 + LD HL,ADDR.FlexDIRECTORY + SPDSS DSSF.CHDIR + EX AF,AF' + POP AF + SETPORT WINSP.CPU1,,0 + EX AF,AF' + JP C,.exit + LD HL,SettingsFileName + SPDSS DSSF.CREATE,,0x20 + jr c,.exit + ld (.file),a + jr c,.close + ld hl,FECSign + ld de,7 + SPDSS DSSF.WRITE +.close: ld a,0 +.file EQU $-1 + SPDSS DSSF.CLOSE +.exit: LD HL,WorkBuffer + SPDSS DSSF.CHDIR + POP IY +FESetupCancel: + WINDOWCLOSE + RET + +;[]==========================================================[] +;ଠ ⠡ +; +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 ࠡ稪 ⮬ (ࠢ) + +;[]==========================================================[] +FESetupTab: DEFW 0x0114,0x015C,0x00AA,0x00B8,0x0021,0x0000,FESetupCancel,0x0000 + DEFW 0x0168,0x01A8,0x00AA,0x00B8,0x0021,0x0000,FESetupOkey,0x0000 + DEFW 0x00D8,0x0192,0x0063,0x006D,0x0000,0x0000,SetupConfirmDlgInvert,0x0000 + DEFW 0x00D8,0x0186,0x0073,0x007D,0x0000,0x0000,SetupHomeKeyInvert,0x0000 + DEFW 0x00D8,0x0129,0x0083,0x008D,0x0000,0x0000,SetupAutoIndentInvert,0x0000 + DEFW 0x00D8,0x0132,0x0093,0x009D,0x0000,0x0000,SetupAutoBracketsInvert,0x0000 + DEFW 0x0000,0x00C8,0x0000,0x0100,0x0020,0x0000,FESetupCancel,0x0000 + DEFW 0x01B8,0x0280,0x0000,0x0100,0x0020,0x0000,FESetupCancel,0x0000 + DEFW 0x0000,0x0280,0x0000,0x0050,0x0020,0x0000,FESetupCancel,0x0000 + DEFW 0x0000,0x0280,0x00BC,0x0100,0x0020,0x0000,FESetupCancel,0x0000 + DEFW 0x8000 diff --git a/plugins/fneditor/fetext.a80 b/plugins/fneditor/fetext.a80 new file mode 100644 index 0000000..4d30f77 --- /dev/null +++ b/plugins/fneditor/fetext.a80 @@ -0,0 +1,1946 @@ + +; LAST UPDATE: 20.03.2025 savelij + +;[]==========================================================[] +FEPrnASCIIpage LD HL,PrnASCIIinfo + PUSH HL + LD HL,(FEPageShift) + LD (FETempShift),HL + LD B,0x1C +FEPrnASCIIlp PUSH BC + CALL PrnASCIIline ;뢮 ப ࠭ + POP BC + JR C,FillASCII ;CY-稫 + LD A,B + ADD A,0x08 + LD B,A + CP 0xE4 + JR NZ,FEPrnASCIIlp + SUB A + LD (FEEmptyLines),A + LD E,(IY+CursorX) + LD D,(IY+CursorY) + CALL FESetCursor + CALL GetString + RET + +;楤 ⪨ ࠭ +FillASCII LD A,0xE4 + SUB B + LD (FEFLenASC),A + JR Z,FEFASCIIe ;Z- ⪨ + LD A,B + LD (FEFPosASC),A + MAKEWINDOW WINSUBOBJ.WOBIND + W_FILL 0,0,624,0,COLORI.PANEL +FEFPosASC EQU $ - 7 +FEFLenASC EQU $ - 3 + W_END + +FEFASCIIe LD A,(FEFLenASC) + SRL A + SRL A + SRL A + LD (FEEmptyLines),A + LD E,(IY+CursorX) + LD D,(IY+CursorY) + CALL FESetCursor + CALL GetString + RET + +;[]----------------------------------------------------------[] +RefrASCIIpage LD HL,PrnASCIIinfo + PUSH HL + CALL FEResCursor + LD HL,(FEPageShift) + LD (FETempShift),HL + LD B,0x1C + LD C,(IY+CursorY) +.RefrASCIIlp PUSH BC + LD A,C + OR A + JR NZ,.RfASCII + CALL PrnASCIIstring + LD HL,(FETempShift) + CALL FESearchDown + LD (FETempShift),HL + JR .L1 + +.RfASCII CALL PrnASCIIline ;뢮 ப ࠭ +.L1 POP BC + RET C ;CY-稫 + DEC C + LD A,B + ADD A,0x08 + LD B,A + CP 0xE4 + JR NZ,.RefrASCIIlp + RET + +;[]----------------------------------------------------------[] +;楤 ⥪.ப ࠭ +PrnASCIIline LD IXH,B + LD C,0xF0 + LD HL,(FEFileLenght) + LD DE,(FETempShift) + OR A + SBC HL,DE + RET C + LD B,0xF0 + LD A,H + OR A + JR NZ,PutASCIIln + OR L + SCF + RET Z + LD B,L +PutASCIIln LD HL,TempBuffer + GETPORT WINSP.CPU1 + PUSH AF + LD DE,(FETempShift) + LD A,D ;뤥塞 ࠭ + AND 0xC0 + RLCA + RLCA + EXX + LD E,A ;DE - ࠭ ᯨ᪥ + LD D,HIGH (PagesList) + LD A,(DE) ;.࠭ + SETPORT WINSP.CPU1,,0 + EXX + RES 7,D ;. 0x4000 + SET 6,D +PutASCIIlnLp BIT 7,D + JR Z,PutLnA1 + RES 7,D + SET 6,D + EXX + INC E ;DE - ࠭ ᯨ᪥ + LD A,(DE) ;.࠭ + SETPORT WINSP.CPU1,,0 + EXX +PutLnA1 LD A,(DE) + INC DE + CP 0x0D + JR NZ,PutLineA1 + BIT 7,D + JR Z,PutLnA2 + RES 7,D + SET 6,D + EXX + INC E ;DE - ࠭ ᯨ᪥ + LD A,(DE) ;.࠭ + SETPORT WINSP.CPU1,,0 + EXX +PutLnA2 LD A,(DE) + CP 0x0A + JR NZ,PutLnExitA + INC DE + JR PutLnExitA + +PutLineA1 CP 0x0A + JR Z,PutLnExitA + CP 0x09 + JR NZ,PutLineA2 +PutTabA LD (HL),0x20 + INC L + LD A,L + CP C + JR Z,PutLnEA1 + AND 0x07 + JR NZ,PutTabA + JR PutLineA3-2 + +PutLnEA0 BIT 7,D + JR Z,PutLEA1 + RES 7,D + SET 6,D + EXX + INC E ;DE - ࠭ ᯨ᪥ + LD A,(DE) ;.࠭ + SETPORT WINSP.CPU1,,0 + EXX +PutLEA1 LD A,(DE) + CP 0x0D + JR Z,PutLineA3 + INC DE + CP 0x0A + JR Z,PutLnExitA +PutLnEA1 DJNZ PutLnEA0 + JR PutLineA3 + +PutLineA2 LD (HL),A + INC L + LD A,L + CP C + JR Z,PutLineA3 + DJNZ PutASCIIlnLp +PutLineA3 BIT 7,D + JR Z,PutLnA3 + RES 7,D + SET 6,D + EXX + INC E ;DE - ࠭ ᯨ᪥ + LD A,(DE) ;.࠭ + SETPORT WINSP.CPU1,,0 + EXX +PutLnA3 LD A,(DE) + CP 0x0D + JR NZ,PutLnExitA + INC DE + BIT 7,D + JR Z,PutLnA4 + RES 7,D + SET 6,D + EXX + INC E ;DE - ࠭ ᯨ᪥ + LD A,(DE) ;.࠭ + SETPORT WINSP.CPU1,,0 + EXX +PutLnA4 LD A,(DE) + CP 0x0A + JR NZ,PutLnExitA + INC DE +PutLnExitA RES 6,D + EXX + LD A,E + EXX + BIT 7,D + RES 7,D + JR Z,.L1 + INC A +.L1 RRCA + RRCA + OR D + LD D,A + LD (FETempShift),DE + POP AF + SETPORT WINSP.CPU1,,0 + LD A,(IY+CursAddX) + ADD A,0x4E + SUB L + JR Z,PutLnExA + JR C,PutLnExA + LD B,A + LD A,0x20 +.L2 LD (HL),A + INC L + DJNZ .L2 +PutLnExA LD L,(IY+CursAddX) + LD H,HIGH (TempBuffer) + LD DE,0x0000 + LD B,0x4E + LD C,IXH + LD A,COLORP.PANEL + COLORI.FILES + CALL JUMPS.PrnTxtLnNormC + OR A + RET + +;[]==========================================================[] +PrnASCIIstring LD HL,TempBuffer + LD DE,LineBuffer + LD A,(IY+LenString) + OR A + JR Z,PrASCIIexit + LD B,A + LD C,0xF0 +PrASCIIstr1 LD A,(DE) + INC E + CP 0x09 + JR NZ,PrASCIIstr2 +PutTabS LD (HL),0x20 + INC L + LD A,L + CP C + JR Z,PrASCIIexit + AND 0x07 + JR NZ,PutTabS + JR PrASCIIstr3 + +PrASCIIstr2 LD (HL),A + INC L +PrASCIIstr3 DJNZ PrASCIIstr1 +PrASCIIexit LD A,(IY+CursAddX) + ADD A,0x4E + SUB L + JR Z,PrASCIIex1 + JR C,PrASCIIex1 + LD B,A + LD A,0x20 +.L1 LD (HL),A + INC L + DJNZ .L1 +PrASCIIex1 CALL FEResCursor + LD L,(IY+CursAddX) + LD H,HIGH (TempBuffer) + LD DE,0x0000 + LD B,0x4E + LD A,(IY+CursorY) + ADD A,A + ADD A,A + ADD A,A + ADD A,0x1C + LD C,A + LD A,COLORP.PANEL + COLORI.FILES + CALL JUMPS.PrnTxtLnNormC + LD E,(IY+CursorX) + LD D,(IY+CursorY) + CALL FESetCursor + RET + +;[]==========================================================[] +FESearchUp LD B,0xF0 + LD A,H + OR A + JR NZ,.SearchUpBeg + OR L + SCF + RET Z + LD B,L +.SearchUpBeg PUSH HL + GETPORT WINSP.CPU1 + PUSH AF + LD A,H ;뤥塞 ࠭ + AND 0xC0 + RLCA + RLCA + LD E,A + LD D,HIGH (PagesList) + LD A,(DE) ;.࠭ + SETPORT WINSP.CPU1,,0 + RES 7,H + SET 6,H + LD C,0x00 + LD IXL,C + INC C + DEC B + DEC HL + BIT 6,H + JR NZ,.SrchUp0 + DEC E + LD A,(DE) + SETPORT WINSP.CPU1,,0 + SET 6,H +.SrchUp0 LD A,(HL) + CP 0x0A + JR NZ,FESrchUp1+1 + LD A,B + OR A + JR Z,FESrchUpEx + INC C + DEC B + DEC HL + BIT 6,H + JR NZ,FESrchUp1 + DEC E + LD A,(DE) + SETPORT WINSP.CPU1,,0 + SET 6,H +FESrchUp1 LD A,(HL) + CP 0x0D + JR Z,FESearchUpLp + DEC C + INC B + INC HL + BIT 7,H + JR Z,FESearchUpLp1 + INC E + LD A,(DE) + SETPORT WINSP.CPU1,,0 + RES 7,H + SET 6,H + JR FESearchUpLp1 + +FESearchUpLp LD A,B + OR A + JR Z,FESrchUpEx +FESearchUpLp1 DEC HL + BIT 6,H + JR NZ,.SrchUp2 + DEC E + LD A,(DE) + SETPORT WINSP.CPU1,,0 + SET 6,H +.SrchUp2 LD A,(HL) + CP 0x0A + JR Z,FESrchUpEx + CP 0x0D + JR Z,FESrchUpEx + INC IXL + INC C + DJNZ FESearchUpLp1 +FESrchUpEx POP AF + SETPORT WINSP.CPU1,,0 + POP HL + LD B,0x00 + OR A + SBC HL,BC + RET + +;[]----------------------------------------------------------[] +FESearchDown LD B,0xF0 + EX DE,HL + LD HL,(FEFileLenght) + OR A + SBC HL,DE + EX DE,HL + RET C + LD A,D + OR A + JR NZ,.SearchDnBeg + OR E + SCF + RET Z + LD B,E +.SearchDnBeg PUSH HL + GETPORT WINSP.CPU1 + PUSH AF + LD A,H ;뤥塞 ࠭ + AND 0xC0 + RLCA + RLCA + LD E,A + LD D,HIGH (PagesList) + LD A,(DE) ;.࠭ + SETPORT WINSP.CPU1,,0 + RES 7,H + SET 6,H + LD C,0x00 + DEC HL +FESearchDnLp INC C + INC HL + BIT 7,H + JR Z,.SrchDn0 + INC E + LD A,(DE) + SETPORT WINSP.CPU1,,0 + RES 7,H + SET 6,H +.SrchDn0 LD A,(HL) + CP 0x0D + JR NZ,.SrchE1 + INC HL + BIT 7,H + JR Z,.SrchDn1 + INC E + LD A,(DE) + SETPORT WINSP.CPU1,,0 + RES 7,H + SET 6,H +.SrchDn1 LD A,(HL) + CP 0x0A + JR NZ,.SrchEEx + INC C + JR .SrchEEx + +.SrchE1 CP 0x0A + JR Z,.SrchEEx + DJNZ FESearchDnLp + INC HL + BIT 7,H + JR Z,.SrchDnE + INC E + LD A,(DE) + SETPORT WINSP.CPU1,,0 + RES 7,H + SET 6,H +.SrchDnE LD A,(HL) + CP 0x0D + JR NZ,.SrchEEx + INC C + INC HL + BIT 7,H + JR Z,.SrchDE1 + INC E + LD A,(DE) + SETPORT WINSP.CPU1,,0 + RES 7,H + SET 6,H +.SrchDE1 LD A,(HL) + CP 0x0A + JR NZ,.SrchEEx + INC C +.SrchEEx POP AF + SETPORT WINSP.CPU1,,0 + POP HL + LD B,0x00 + ADD HL,BC + RET + +;[]==========================================================[] +GetString LD HL,(FEFileLenght) + LD DE,(LineShift) + OR A + SBC HL,DE + RET C + LD B,0xF0 + LD C,B + LD A,H + OR A + JR NZ,GetLine + LD B,L +GetLine LD HL,LineBuffer + LD A,B + OR A + JR Z,GetLnE1 + GETPORT WINSP.CPU1 + PUSH AF + LD A,D ;뤥塞 ࠭ + AND 0xC0 + RLCA + RLCA + EXX + LD E,A ;DE - ࠭ ᯨ᪥ + LD D,HIGH (PagesList) + LD A,(DE) ;.࠭ + SETPORT WINSP.CPU1,,0 + EXX + RES 7,D ;. 0x4000 + SET 6,D +GetLnLoop BIT 7,D + JR Z,GetLn1 + RES 7,D + SET 6,D + EXX + INC E ;DE - ࠭ ᯨ᪥ + LD A,(DE) ;.࠭ + SETPORT WINSP.CPU1,,0 + EXX +GetLn1 LD A,(DE) + INC DE + CP 0x0D + JR Z,GetLnExit + CP 0x0A + JR Z,GetLnExit + LD (HL),A + INC L + DJNZ GetLnLoop +GetLnExit POP AF + SETPORT WINSP.CPU1,,0 +GetLnE1 SUB A + LD (IY+ReadyStr),A + LD A,L + LD (IY+LenString),A + LD (IY+PrvLenStr),A + push af + neg + ld b,a + LD A,0x20 +.L1 LD (HL),A + INC L + DJNZ .L1 + pop af + SUB (IY+StringX) + RET NC + LD A,(IY+StringX) + LD (IY+LenString),A + RET + +;[]----------------------------------------------------------[] +PutString LD A,(IY+ReadyStr) + OR A + RET Z + LD A,(IY+LenString) + OR A + JR Z,PutStr2 + LD L,A + LD H,HIGH (LineBuffer) +PutStr1 DEC L + LD A,0x20 + CP (HL) + JR NZ,PutStr2 + DEC (IY+LenString) + LD A,L + OR A + JR NZ,PutStr1 +PutStr2 + SETPORT WINSP.Y_PORT,0xC0 + LD A,(IY+PrvLenStr) + SUB (IY+LenString) + CALL NZ,CorrectFile +PutStrN SUB A + LD (IY+ReadyStr),A + LD HL,LineBuffer + LD A,(IY+LenString) + LD (IY+PrvLenStr),A + OR A + RET Z + LD B,A + GETPORT WINSP.CPU1 + PUSH AF + LD DE,(LineShift) + LD A,D ;뤥塞 ࠭ + AND 0xC0 + RLCA + RLCA + EXX + LD E,A ;DE - ࠭ ᯨ᪥ + LD D,HIGH (PagesList) + LD A,(DE) ;.࠭ + SETPORT WINSP.CPU1,,0 + EXX + RES 7,D ;. 0x4000 + SET 6,D +PutStringLp BIT 7,D + JR Z,PutStr3 + RES 7,D + SET 6,D + EXX + INC E ;DE - ࠭ ᯨ᪥ + LD A,(DE) ;.࠭ + SETPORT WINSP.CPU1,,0 + EXX +PutStr3 LD A,(HL) + LD (DE),A + INC DE + INC L + DJNZ PutStringLp + POP AF + SETPORT WINSP.CPU1,,0 + RET + +CorrectFile JR NC,MinusBytes +PlusBytes NEG + LD C,A + LD B,0x00 + LD HL,(FEFileLenght) + LD E,L + LD D,H + ADD HL,BC + LD A,H + CP 0xC0 + JP NC,NoMemSpace + LD (FEFileLenght),HL + EX DE,HL + PUSH HL + LD BC,(LineShift) + OR A + SBC HL,BC + LD C,L + LD B,H + POP HL + DI + EXX + GETPORT WINSP.CPU0 + LD L,A + GETPORT WINSP.CPU1 + LD E,A + GETPORT WINSP.CPU2 + LD C,A + EXX + LD A,(PagesList) + SETPORT WINSP.CPU0,,0 + LD A,(PagesList+1) + SETPORT WINSP.CPU1,,0 + LD A,(PagesList+2) + SETPORT WINSP.CPU2,,0 + LD A,B + OR A + JR Z,.MovUp1 + ACCEL ACCELCMD.SET_BUFFER + LD A,0x00 +.MovUp0 DEC H + DEC D + ACCEL ACCELCMD.COPY + LD A,(HL) + LD (DE),A + ACCEL ACCELCMD.OFF + DEC B + JR NZ,.MovUp0 +.MovUp1 LD A,C + OR A + JR Z,MoveUpE + LD (.LenUp),A + SBC HL,BC + EX DE,HL + SBC HL,BC + EX DE,HL + ACCEL ACCELCMD.SET_BUFFER + LD A,0x00 +.LenUp EQU $-1 + ACCEL ACCELCMD.COPY + LD A,(HL) + LD (DE),A + ACCEL ACCELCMD.OFF +MoveUpE EXX + LD A,C + SETPORT WINSP.CPU2,,0 + LD A,E + SETPORT WINSP.CPU1,,0 + LD A,L + SETPORT WINSP.CPU0,,0 + EXX + EI + RET + +MinusBytes LD C,A + LD B,0x00 + LD HL,(LineShift) + PUSH HL + ADD HL,BC + PUSH HL + EX DE,HL + LD HL,(FEFileLenght) + OR A + SBC HL,BC + LD (FEFileLenght),HL + LD BC,(LineShift) + OR A + SBC HL,BC + LD C,L + LD B,H + POP HL + POP DE + DI + EXX + GETPORT WINSP.CPU0 + LD L,A + GETPORT WINSP.CPU1 + LD E,A + GETPORT WINSP.CPU2 + LD C,A + EXX + LD A,(PagesList) + SETPORT WINSP.CPU0,,0 + LD A,(PagesList+1) + SETPORT WINSP.CPU1,,0 + LD A,(PagesList+2) + SETPORT WINSP.CPU2,,0 + LD A,B + OR A + JR Z,MovFl1 + ACCEL ACCELCMD.SET_BUFFER + LD A,0x00 +MovFl0 + ACCEL ACCELCMD.COPY + LD A,(HL) + LD (DE),A + ACCEL ACCELCMD.OFF + INC H + INC D + DEC B + JR NZ,MovFl0 +MovFl1 LD A,C + OR A + JR Z,MoveFlE + LD (.LenFl),A + ACCEL ACCELCMD.SET_BUFFER + LD A,0x00 +.LenFl EQU $-1 + ACCEL ACCELCMD.COPY + LD A,(HL) + LD (DE),A + ACCEL ACCELCMD.OFF +MoveFlE EXX + LD A,C + SETPORT WINSP.CPU2,,0 + LD A,E + SETPORT WINSP.CPU1,,0 + LD A,L + SETPORT WINSP.CPU0,,0 + EXX + EI + RET + +NoMemSpace CALL GetString + CALL PrnASCIIstring + CALL PrnASCIIinfo + INC SP + INC SP + RET + +;[]==========================================================[] +PrnASCIIinfo LD HL,LineT + LD DE,ColT + LD BC,FreeT + LD A,0x01 + REPT 0x04 + LD (HL),A + INC HL + LD (DE),A + INC DE + LD (BC),A + INC BC + ENDM + LD (HL),A + LD (DE),A + LD (BC),A + LD HL,(CurLine) + LD DE,LineT + INC HL + CALL JUMPS.ConvNumTxt16 + LD DE,ColT + LD A,(IY+CursorX) + ADD A,(IY+CursAddX) + INC A + CALL JUMPS.ConvNumTxt8 + LD HL,0xC000 + LD DE,FreeT + LD BC,(FEFileLenght) + OR A + SBC HL,BC + CALL JUMPS.ConvNumTxt16 + LD HL,ReadyNo + LD A,(IY+ReadyFile) + OR A + JR Z,.L1 + LD HL,ReadyYes +.L1 LD DE,0x017E + LD BC,0x0011 + LD A,0x80 + CALL JUMPS.PrnTxtLnIFF + LD HL,LineT + LD DE,0x01AE + LD BC,0x0011 + LD A,0x80 + CALL JUMPS.PrnTxtLnIFF + LD HL,ColT + LD DE,0x01F8 + LD BC,0x0011 + LD A,0x80 + CALL JUMPS.PrnTxtLnIFF + LD HL,FreeT + LD DE,0x0248 + LD BC,0x0011 + LD A,0x80 + CALL JUMPS.PrnTxtLnIFF + LD IX,EditVBar + LD HL,(ELines) + LD DE,(EquipLines) + OR A + SBC HL,DE + JR Z,TstLine + LD (ELines),DE + CALL JUMPS.InitScrBar + LD HL,(CurLine) + LD (CLine),HL + CALL JUMPS.PrnVScrBar + JR TstAddX + +TstLine LD HL,(CLine) + LD DE,(CurLine) + OR A + SBC HL,DE + JR Z,TstAddX + LD (CLine),DE + CALL JUMPS.PrnVScrBar +TstAddX LD A,(CAddX) + SUB (IY+CursorX) + CP (IY+CursAddX) + RET Z + LD A,(IY+CursorX) + ADD A,(IY+CursAddX) + LD (CAddX),A + LD IX,EditHBar + CALL JUMPS.PrnHScrBar + RET + +ReadyNo DEFB 0x01,0 +ReadyYes DEFB "*",0 +LineT DUPL 6,0 +ColT DUPL 6,0 +FreeT DUPL 6,0 + +;[]==========================================================[] +TInsertSymbol CP 0x20 + JR NC,InsSymbol + CP 0x08 + JP Z,BackSpace + CP 0x0D + JP Z,Enter + CP 0x09 + RET NZ +InsSymbol: push af + call Insert + call TCursorRight + pop bc + call AutoBracket + LD A,0x01 + LD (IY+ReadyStr),A + LD (IY+ReadyFile),A + jp PrnASCIIstring + +AutoBracket: ld a,1 +AutoBrackets EQU $-1 + and a + ret z + call CanInsertBrackets + ret c + ld a,b + call Subst + db 4 + db "(){}[]<>" + cp b + jr nz,Insert + cp '\"' ; #22 + ret nz + jp Insert + +CanInsertBrackets: + LD A,(IY+LenString) ;InpytSymb + CP 240 ;Max len + RET Z + LD H,HIGH (LineBuffer) + LD L,(IY+StringX) + ld a,(hl) + and a + ret z + cp 32 + ret z + cp 9 + ret z + scf + ret + +Insert EX AF,AF' + LD A,(IY+LenString) ;InpytSymb + CP 240 ;Max len + RET Z + SUB (IY+StringX) + JR C,.NotInsert + JR Z,.NotInsert +; । ⥪ + LD C,A + LD B,0x00 + LD L,(IY+LenString) + LD H,HIGH (LineBuffer) + LD E,L + LD D,H + DEC HL + LDDR +.NotInsert LD H,HIGH (LineBuffer) + LD L,(IY+StringX) + EX AF,AF' + LD (HL),A + ld a,(IY+LenString) + inc a + cp l + jr nc,.set + ld a,l + inc a +.set: ld (IY+LenString),a + ret + +;[]----------------------------------------------------------[] +;⠭ a ᯨ call. +; ᯨ᪠ ᮤন ᫮ +;᫥ ࠧ-⥫. +;室: a. 室: a +; BXO: A,List +; BXO: A +Subst: ex (sp),hl + push bc + ld b,(hl) + inc hl + ld c,a +Subst1: cp (hl) + inc hl + jr nz,Subst2 + ld c,(hl) +Subst2: inc hl + djnz Subst1 + ld a,c + pop bc + ex (sp),hl + ret + +;[]----------------------------------------------------------[] +;DoubleString +TDoubleString: ld l,(iy+LenString) + ld a,l + and a + adc a,a ;㤥 ॢ襭 256 ᨬ + ret c + adc a,2 + ret c + ld h,0x00 + push hl + push hl + pop bc + ld de,LineBuffer + add hl,de + ld (hl),0x0D + inc hl + ld (hl),0x0A + inc hl + ex hl,de + ld a,c + or a + jr z,.skip + ldir +.skip: pop hl + add hl,hl + inc hl + inc hl + ld (iy+LenString),l + ld a,0x01 + ld (iy+ReadyStr),a + ld (iy+ReadyFile),a + call PutString + ld hl,(EquipLines) + inc hl + ld (EquipLines),hl + call FEPrnASCIIpage + jp TCursorDown + +;[]----------------------------------------------------------[] +;Enter +Enter LD A,(IY+LenString) + SUB (IY+StringX) + jr nc,.less + xor a +.less: LD C,A + call CalcStartTabs + ld a,l + ld (.tabs),a + push af + inc a + LD L,(IY+LenString) + add a,l + ld e,a + ld d,h + xor a + cp c + jr z,.endLine + LD B,0x00 + LD H,HIGH (LineBuffer) + dec l + LDDR +.endLine: pop af + and a + jr z,.skip + ld c,a + ld b,0x00 + ld h,HIGH (LineBuffer) + ld l,a + dec l + lddr +.skip: ex hl,de + ld (hl),0x0A + dec hl + ld (hl),0x0D + add a,(IY+LenString) + add a,2 + ld (IY+LenString),a + LD A,0x01 + LD (IY+ReadyStr),A + LD (IY+ReadyFile),A + CALL PutString + LD HL,(EquipLines) + INC HL + LD (EquipLines),HL + CALL FEPrnASCIIpage + ld a,0 +.tabs EQU $-1 + LD (IY+StringX),A + and a + call nz,StringXToCursorX + LD (IY+CursorX),a + JP TCursorDown + +StringXToCursorX: + ld b,a + ld c,0x00 + ld hl,LineBuffer +.loop: ld A,(HL) + INC HL + CP 0x09 + JR NZ,.skip + LD A,C + AND 0xF8 + ADD A,0x08 + LD C,A + DEC C +.skip: INC C + DJNZ .loop + ld a,c + ret + +CalcStartTabs: ld hl,LineBuffer + ld a,1 +.param EQU $-1 + and a + ret z + ld b,(iy+StringX) +.loop: ld a,(hl) + cp 0x20 + jr z,.next + cp 0x09 + ret nz +.next: inc l + djnz .loop + ret + +;[]----------------------------------------------------------[] +Undo: xor a + LD (IY+ReadyStr),A + LD (IY+ReadyFile),A + call GetString + CALL PrnASCIIstring + jp PrnASCIIinfo + +;[]----------------------------------------------------------[] +;BackSpace +BackSpace LD A,(IY+StringX) + OR A + RET Z + LD L,A + LD H,HIGH (LineBuffer) + LD E,L + LD D,H + DEC DE + LD A,(IY+LenString) + SUB (IY+StringX) + JR Z,BackSp1 + LD C,A + LD B,0x00 + LDIR + SUB A +BackSp1 LD (DE),A + INC A + LD (IY+ReadyStr),A + LD (IY+ReadyFile),A + DEC (IY+LenString) + CALL PrnASCIIstring + JP TCursorLeft + +;[]----------------------------------------------------------[] +TDeleteString: sub a + ld (IY+LenString),a + ld (IY+StringX),a + ld l,a + ld h,HIGH (LineBuffer) + ld (hl),a + inc a + ld (IY+ReadyStr),A + ld (IY+ReadyFile),A + call PutString + jr AddString + +;[]----------------------------------------------------------[] +TDeleteSymbol LD A,(IY+LenString) + SUB (IY+StringX) + JR Z,AddString + LD C,A + LD B,0x00 + LD L,(IY+StringX) + LD H,HIGH (LineBuffer) + INC HL + LD E,L + LD D,H + DEC DE + LDIR + SUB A + LD (DE),A + INC A + LD (IY+ReadyStr),A + LD (IY+ReadyFile),A + DEC (IY+LenString) + CALL PrnASCIIstring + CALL PrnASCIIinfo + RET + +AddString CALL PutStr2 + LD A,(IY+StringX) + CP 0xF0 + RET Z + LD HL,(LineShift) + CALL FESearchDown + LD DE,(FEFileLenght) + OR A + SBC HL,DE + RET Z + ADD HL,DE + GETPORT WINSP.CPU1 + PUSH AF + LD A,H ;뤥塞 ࠭ + AND 0xC0 + RLCA + RLCA + LD E,A + LD D,HIGH (PagesList) + LD A,(DE) ;.࠭ + SETPORT WINSP.CPU1,,0 + RES 7,H + SET 6,H + DEC HL + BIT 6,H + JR NZ,AddStr0 + DEC E + LD A,(DE) + SETPORT WINSP.CPU1,,0 + SET 6,H +AddStr0 LD A,(HL) + CP 0x0D + LD B,0x01 + JR Z,AddStr2 + CP 0x0A + LD B,0x00 + JR NZ,AddStr2 + DEC HL + BIT 6,H + JR NZ,AddStr1 + DEC E + LD A,(DE) + SETPORT WINSP.CPU1,,0 + SET 6,H +AddStr1 LD A,(HL) + CP 0x0D + LD B,0x01 + JR NZ,AddStr2 + LD B,0x02 +AddStr2 POP AF + SETPORT WINSP.CPU1,,0 + LD A,B + OR A + RET Z + CALL MinusBytes + CALL PutStrN + LD HL,(EquipLines) + DEC HL + LD (EquipLines),HL + CALL FEPrnASCIIpage + RET + +;[]----------------------------------------------------------[] +;Delete word +TDeleteWord LD A,(IY+StringX) + OR A + RET Z + LD C,A + LD B,A + LD L,A + LD H,HIGH (LineBuffer) + LD A,(IY+LenString) + SUB C + LD E,A + PUSH HL + DEC L + DEC C + LD A,(HL) + CP 0x09 + JR Z,.next + CP 0x20 + JR Z,.next + CP ',' + JR Z,.next + CP '.' + JR Z,.next + DEC B + JR Z,.skip +.DWord0 DEC L + DEC C + LD A,(HL) + CP 0x09 + JR Z,.DWord2 + CP 0x20 + JR Z,.DWord2 + CP ',' + JR Z,.DWord2 + CP '.' + JR Z,.DWord2 + DJNZ .DWord0 + JR .skip + +.DWord1 LD A,(HL) + CP 0x09 + JR Z,.next + CP 0x20 + JR Z,.next + CP ',' + JR Z,.next + CP '.' + JR NZ,.DWord2 +.next DEC L + DEC C + DJNZ .DWord1 +.DWord2 INC L + INC C +.skip LD A,(IY+StringX) + LD (IY+StringX),C + SUB C + LD C,A + EX AF,AF' + LD A,(IY+LenString) + SUB C + LD (IY+LenString),A + LD C,E + LD B,0x00 + EX DE,HL + POP HL + LD A,C + OR A + JR Z,.L1 + LDIR +.L1 EX DE,HL + EX AF,AF' + LD B,A + SUB A +.L2 LD (HL),A + INC L + DJNZ .L2 + INC A + LD (IY+ReadyStr),A + LD (IY+ReadyFile),A + CALL PrnASCIIstring + INC (IY+StringX) + JP TCursorLeft + +;[]----------------------------------------------------------[] +; +TCursorLeft LD A,(IY+StringX) + OR A + RET Z + DEC A + LD (IY+StringX),A + LD C,0x00 + JR Z,CursLf3 + LD HL,LineBuffer + LD B,A +CursLf1 LD A,(HL) + INC HL + CP 0x09 + JR NZ,CursLf2 + LD A,C + AND 0xF8 + ADD A,0x08 + LD C,A + DEC C +CursLf2 INC C + DJNZ CursLf1 +CursLf3 LD B,(IY+CursAddX) +CursLf4 LD A,C + SUB (IY+CursAddX) + JR NC,CursLf5 + LD A,(IY+CursAddX) + SUB Step + LD (IY+CursAddX),A + JR CursLf4 + +CursLf5 LD (IY+CursorX),A + LD A,B + CP (IY+CursAddX) + CALL NZ,RefrASCIIpage + CALL FEResCursor + LD E,(IY+CursorX) + LD D,(IY+CursorY) + CALL FESetCursor + CALL PrnASCIIinfo + LD A,(IY+LenString) + SUB (IY+StringX) + RET Z + LD B,A + LD L,(IY+LenString) + LD H,HIGH (LineBuffer) + LD D,0x00 + LD A,0x20 +CursLf6 DEC HL + CP (HL) + RET NZ + LD (HL),D + DEC (IY+LenString) + DJNZ CursLf6 + RET +;[]----------------------------------------------------------[] +; ࠢ +TCursorRight LD A,(IY+CursorX) + ADD A,(IY+CursAddX) + CP 240 + RET Z + LD A,(IY+StringX) + CP 240 + RET Z + INC A + LD (IY+StringX),A + LD C,0x00 + LD HL,LineBuffer + OR A + JR Z,.CursRg3 + LD B,A +.CursRg1 LD A,(HL) + INC HL + CP 0x09 + JR NZ,.CursRg2 + LD A,C + AND 0xF8 + ADD A,0x08 + LD C,A + DEC C +.CursRg2 INC C + DJNZ .CursRg1 +.CursRg3 LD B,(IY+CursAddX) +.CursRg4 LD A,C + SUB (IY+CursAddX) + CP 0x4E + JR C,CursRg5 + LD A,(IY+CursAddX) + ADD A,Step + LD (IY+CursAddX),A + JR .CursRg4 + +CursRg5 LD (IY+CursorX),A + LD A,B + CP (IY+CursAddX) + CALL NZ,RefrASCIIpage + LD A,(IY+LenString) + SUB (IY+StringX) + JR NC,CursRg6 + LD L,(IY+LenString) + LD H,HIGH (LineBuffer) + LD (HL),0x20 + INC (IY+LenString) +CursRg6 CALL FEResCursor + LD E,(IY+CursorX) + LD D,(IY+CursorY) + CALL FESetCursor + CALL PrnASCIIinfo + RET + +;[]----------------------------------------------------------[] +;Word left +TWordLeft LD A,(IY+StringX) + OR A + RET Z + LD C,A + LD B,A + LD L,A + LD H,HIGH (LineBuffer) +.WordLf0 DEC L + DEC C + LD A,(HL) + CP 0x09 + JR Z,.next + CP 0x20 + JR Z,.next + CP ',' + JR Z,.next + CP '.' + JR Z,.next + DJNZ .WordLf0 + JR .skip + +.WordLf1 LD A,(HL) + CP 0x09 + JR Z,.next + CP 0x20 + JR Z,.next + CP ',' + JR Z,.next + CP '.' + JR NZ,.WordLf2 +.next DEC L + DEC C + DJNZ .WordLf1 +.WordLf2 INC C +.skip LD (IY+StringX),C + INC (IY+StringX) + JP TCursorLeft +;[]----------------------------------------------------------[] +;Word right +TWordRight LD A,(IY+LenString) + SUB (IY+StringX) + RET Z + LD B,A + LD L,(IY+StringX) + LD H,HIGH (LineBuffer) + LD C,L +.WordRg0 LD A,(HL) + CP 0x09 + JR Z,.next + CP 0x20 + JR Z,.next + CP ',' + JR Z,.next + CP '.' + JR Z,.next + INC L + INC C + DJNZ .WordRg0 + JR .WordRg2 + +.WordRg1 LD A,(HL) + CP 0x09 + JR Z,.next + CP 0x20 + JR Z,.next + CP ',' + JR Z,.next + CP '.' + JR NZ,.WordRg2 +.next INC L + INC C + DJNZ .WordRg1 +.WordRg2 LD (IY+StringX),C + LD A,C + OR A + JP Z,THomeString + DEC (IY+StringX) + JP TCursorRight + +;[]----------------------------------------------------------[] +THomeString ld a,1 +.param EQU $-1 + and a + jr z,.toZero + LD A,(IY+StringX) + ld e,a + ld l,0 + ld d,l + ld c,0x09 + ld b,(iy+LenString) + ld h,HIGH (LineBuffer) +;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.loop: ld a,(hl) + or a + jr z,.toFirst + cp 0x20 + jr z,.next + cp c + jr nz,.firstSym + ld a,7 + add a,d + ld d,a +.next: inc l + inc d + djnz .loop + jr .toZero +;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.firstSym: ld a,l + cp e + jr c,.skipTabs + jr nz,.skipTabs +.toFirst: and a + jr z,.skipTabs +.toZero: sub a + ld l,a + ld d,a +.skipTabs: LD B,(IY+CursAddX) + ld a,l + LD (IY+StringX),A + LD (IY+CursorX),d + and a + jr nz,.notZero + LD (IY+CursAddX),A + jr .skip + +.notZero: cp b + jr nc,.skip + SUB A + LD (IY+CursAddX),A +.skip: LD A,B + CP (IY+CursAddX) + CALL NZ,RefrASCIIpage + CALL FEResCursor + LD E,(IY+CursorX) + LD D,(IY+CursorY) + CALL FESetCursor + CALL PrnASCIIinfo + LD A,(IY+LenString) + SUB (IY+StringX) + RET Z + LD B,A + LD L,(IY+LenString) + LD H,HIGH (LineBuffer) + LD D,0x00 + LD A,0x20 +HomeStr DEC HL + CP (HL) + RET NZ + LD (HL),D + DEC (IY+LenString) + DJNZ HomeStr + RET + +;[]----------------------------------------------------------[] +TEndString LD A,(IY+LenString) + OR A + RET Z + LD B,A + LD L,A + LD H,HIGH (LineBuffer) + LD D,0x00 + LD A,0x20 +EndStr1 LD (HL),D + DEC HL + CP (HL) + JR NZ,EndStr2 + DJNZ EndStr1 +EndStr2 LD (IY+LenString),B + LD A,B + CP (IY+StringX) + RET Z + OR A + JP Z,THomeString.toZero + DEC A + LD (IY+StringX),A + JP TCursorRight + +;[]----------------------------------------------------------[] +TCursorUp CALL PutString + LD HL,(LineShift) + LD A,H + OR L + RET Z + LD A,(IY+CursorY) + OR A + JP Z,TScrollUp + CALL FESearchUp + LD (LineShift),HL + DEC (IY+CursorY) + LD HL,(CurLine) + DEC HL + LD (CurLine),HL + JP CursorExit + +TCursorDown CALL PutString + LD HL,(LineShift) + LD DE,(FEFileLenght) + OR A + SBC HL,DE + RET Z + ADD HL,DE + CALL FESearchDown + LD A,(IY+CursorY) + CP 0x18 + JP Z,TScrollDown + LD (LineShift),HL + INC (IY+CursorY) + LD HL,(CurLine) + INC HL + LD (CurLine),HL + JP CursorExit + +TScrollUp CALL PutString + LD HL,(FEPageShift) + LD A,H + OR L + JP Z,TCursorUp + CALL FESearchUp + LD (FEPageShift),HL + LD (FETempShift),HL + LD HL,(LineShift) + CALL FESearchUp + LD (LineShift),HL + LD HL,(CurLine) + DEC HL + LD (CurLine),HL + CALL FEResCursor + CALL FEScrollSCRdown + LD B,0x1C + CALL PrnASCIIline + LD E,(IY+CursorX) + LD D,(IY+CursorY) + CALL FESetCursor + JP CursorExit + +TScrollDown CALL PutString + LD HL,(FEPageShift) + LD B,0x19 +.ScrlDn1 PUSH BC + CALL FESearchDown + POP BC + JP C,TCursorDown + DJNZ .ScrlDn1 + LD (FETempShift),HL + LD HL,(FEPageShift) + CALL FESearchDown + LD (FEPageShift),HL + LD HL,(LineShift) + CALL FESearchDown + LD (LineShift),HL + LD HL,(CurLine) + INC HL + LD (CurLine),HL + CALL FEResCursor + CALL FEScrollSCRup + LD B,0xDC + CALL PrnASCIIline + LD E,(IY+CursorX) + LD D,(IY+CursorY) + CALL FESetCursor +CursorExit CALL GetString + LD HL,LineBuffer + LD C,0x00 + LD A,(IY+CursorX) + add a,(iy+CursAddX) + OR A + JR Z,CursEx3 + LD B,A +CursEx1 LD A,(HL) + INC HL + CP 0x09 + JR NZ,CursEx2 + LD A,C + AND 0xF8 + ADD A,0x08 + LD C,A + DEC C +CursEx2 INC C + LD a,c + cp b + jr nc,CursEx3 + jr CursEx1 + +CursEx3: ld (iy+StringX),l + LD B,(IY+CursAddX) + LD (IY+CursAddX),0x00 +CursEx4: LD A,C + SUB (IY+CursAddX) + CP 0x4E + JR C,CursEx5 + LD A,(IY+CursAddX) + ADD A,Step + LD (IY+CursAddX),A + JR CursEx4 + +CursEx5 LD (IY+CursorX),A + LD A,B + CP (IY+CursAddX) + CALL NZ,RefrASCIIpage + CALL FEResCursor + LD E,(IY+CursorX) + LD D,(IY+CursorY) + CALL FESetCursor + CALL PrnASCIIinfo + RET + +;[]----------------------------------------------------------[] +FETPageUp CALL PutString + LD HL,(FEPageShift) + LD A,H + OR L + JP Z,FETBegFile + LD DE,(CurLine) + LD B,0x19 +PageUp1 PUSH DE + PUSH BC + CALL FESearchUp + POP BC + POP DE + JR C,.L1 + DEC DE + DJNZ PageUp1 +.L1 LD (FEPageShift),HL + LD (CurLine),DE + JR PageExit + +TPageDown CALL PutString + LD HL,(FEPageShift) + LD DE,(CurLine) + LD B,0x19 +PageDn1 PUSH DE + PUSH BC + CALL FESearchDown + POP BC + POP DE + JP C,FETEndFile + INC DE + DJNZ PageDn1 + LD BC,(FEFileLenght) + OR A + SBC HL,BC + JP Z,FETEndFile + ADD HL,BC + LD (FEPageShift),HL + LD (CurLine),DE +PageExit LD A,(IY+CursorY) + OR A + JR Z,PageEx3 + LD B,A +PageEx1 PUSH HL + PUSH BC + CALL FESearchDown + POP BC + POP DE + JR C,PageEx2 + LD E,L + LD D,H + DJNZ PageEx1 + DEC B +PageEx2 INC B + LD A,(IY+CursorY) + SUB B + LD (IY+CursorY),A + LD HL,(CurLine) + LD A,L + SUB B + LD L,A + LD A,H + SBC A,0x00 + LD H,A + LD (CurLine),HL + EX DE,HL +PageEx3 LD (LineShift),HL +NewPage CALL GetString + LD HL,LineBuffer + LD C,0x00 + LD A,(IY+StringX) + OR A + JR Z,PagePr3 + LD B,A +PagePr1 LD A,(HL) + INC HL + CP 0x09 + JR NZ,PagePr2 + LD A,C + AND 0xF8 + ADD A,0x08 + LD C,A + DEC C +PagePr2 INC C + DJNZ PagePr1 +PagePr3 LD (IY+CursAddX),0x00 +PagePr4 LD A,C + SUB (IY+CursAddX) + CP 0x4E + JR C,PagePr5 + LD A,(IY+CursAddX) + ADD A,Step + LD (IY+CursAddX),A + JR PagePr4 + +PagePr5 LD (IY+CursorX),A + CALL FEPrnASCIIpage + RET +;[]----------------------------------------------------------[] +FETBegFile CALL PutString + LD HL,(LineShift) + LD A,H + OR L + RET Z + LD HL,0x0000 + LD (FEPageShift),HL + LD (LineShift),HL + LD (CurLine),HL + LD (IY+CursorY),L + JP NewPage + +FETEndFile CALL PutString + LD HL,(FEPageShift) + LD B,0x19 +EndFl1 PUSH BC + CALL FESearchDown + POP BC + JR C,EndFile1 + DJNZ EndFl1 + LD HL,(FEFileLenght) + LD B,0x19 +EndFl2 PUSH BC + CALL FESearchUp + POP BC + DJNZ EndFl2 + LD (FEPageShift),HL + LD (IY+CursorY),0x18 +EndFlEx LD HL,(FEFileLenght) + CALL FESearchUp + LD (LineShift),HL + LD HL,(EquipLines) + DEC HL + LD (CurLine),HL + JP NewPage + +EndFile1 LD A,0x18 + SUB B + CP (IY+CursorY) + RET Z + LD (IY+CursorY),A + LD HL,(FEFileLenght) + CALL FESearchUp + LD (LineShift),HL + LD HL,(EquipLines) + DEC HL + LD (CurLine),HL + JP NewPage + +;[]----------------------------------------------------------[] +TNewCrPos PUSH HL + PUSH DE + CALL PutString + POP DE + POP HL + SRL H + RR L + SRL H + RR L + SRL H + RR L + LD A,E + SUB 0x1C + SRL A + SRL A + SRL A + LD D,A + LD E,L + LD HL,(FEPageShift) + OR A + JR Z,NewPos2 + LD B,A +NewPos1 PUSH DE + PUSH BC + CALL FESearchDown + POP BC + POP DE + JP C,FETEndFile + DJNZ NewPos1 +NewPos2 LD (LineShift),HL + LD HL,(CurLine) + LD A,D + SUB (IY+CursorY) + LD (IY+CursorY),D + LD C,A + LD B,0x00 + JR NC,.L1 + DEC B +.L1 ADD HL,BC + LD (CurLine),HL + SUB A + LD (IY+StringX),A + PUSH DE + CALL GetString + POP DE + LD C,0x00 + LD A,E + ADD A,(IY+CursAddX) + JR Z,NewPos6 + LD E,A + LD A,(IY+LenString) + OR A + JR Z,NewPos6 + LD B,A + LD HL,LineBuffer +NewPos3 LD A,(HL) + INC L + CP 0x09 + JR NZ,NewPos4 + LD A,C + AND 0xF8 + ADD A,0x08 + LD C,A + DEC C +NewPos4 INC C + LD A,C + CP E + JR NC,NewPos5 + DJNZ NewPos3 +NewPos5 LD (IY+StringX),L + LD A,(IY+LenString) + SUB L + JR NC,NewPos6 + NEG + LD B,A + LD A,0x20 +.L2 LD (HL),A + INC L + DJNZ .L2 + LD (IY+LenString),L +NewPos6 LD A,C + SUB (IY+CursAddX) + LD (IY+CursorX),A + CALL FEResCursor + LD E,(IY+CursorX) + LD D,(IY+CursorY) + CALL FESetCursor + CALL PrnASCIIinfo + CALL JUMPS.ResFire + RET diff --git a/plugins/fnviewer/build.bat b/plugins/fnviewer/build.bat new file mode 100644 index 0000000..2e8035e --- /dev/null +++ b/plugins/fnviewer/build.bat @@ -0,0 +1,21 @@ + +@echo off + +if not exist tmp md tmp +set path=d:\yad\svn\pentevo\tools\asl\bin\;d:\yad\svn\pentevo\tools\mhmt\;d:\yad\sprinter_src\tools\ +set includes=d:\yad\svn\pentevo\rom;d:\yad\sprinter_src\;d:\yad\sprinter_src\flexnav\src\ + +asl -U -L -C -x -olist tmp\fviewer.lst -i %includes% fvmain.a80 || goto error +p2bin fvmain.p ..\fnviewer.flx -r $-$ -k + +echo ######################## +echo # -= End Compile Ok =- # +echo ######################## +goto exit + +:error +echo ####################### +echo # -= Error Compile =- # +echo ####################### + +:exit diff --git a/plugins/fnviewer/fvhex.a80 b/plugins/fnviewer/fvhex.a80 new file mode 100644 index 0000000..f6ed6a8 --- /dev/null +++ b/plugins/fnviewer/fvhex.a80 @@ -0,0 +1,724 @@ + +; LAST UPDATE: 20.03.2025 savelij + +;-------------------------------------------------------------- +;楤 ࠭ ⥪.ᬥ. 砫 䠩 +; 室: +; None +; 室: +; None +PrnHEXpage LD HL,PrintVProc + PUSH HL + LD HL,(FileShift) + LD A,L + AND 0xF0 + LD L,A + LD (FileShift),HL + LD (TempShift),HL ; ⥪.ᬥ饭 + LD HL,(FileShift+2) + LD (TempShift+2),HL + LD HL,LineBuffer + LD BC,0x5020 +.L1 LD (HL),C + INC L + DJNZ .L1 + LD B,0x1C ;. +PrnHEXl PUSH BC + CALL PutHLine ;뢮 ப ࠭ + POP BC + JR C,FillDwnHex ;CY-稫 + LD HL,(TempShift) + LD DE,0x0010 ; +16 + ADD HL,DE + LD (TempShift),HL + LD HL,(TempShift+2) + LD E,D + ADC HL,DE + LD (TempShift+2),HL + LD A,B + ADD A,0x08 + LD B,A + CP 0xE4 + JR NZ,PrnHEXl + RET + +;楤 ⪨ ࠭ +FillDwnHex LD A,B + CP 0xE4 + RET Z ;Z- ⪨ + LD (FPosHex),A + LD A,0xE4 + SUB B + LD (FLenHex),A + MAKEWINDOW WINSUBOBJ.WOBIND + W_FILL 0,0,640,0,COLORI.PANEL +FPosHex EQU $ - 7 +FLenHex EQU $ - 3 + W_END + RET + +;楤 ⥪.ப ࠭ +PutHLine LD IXL,0x00 + LD IXH,B + LD HL,(FileLenght) + LD BC,(TempShift) + OR A + SBC HL,BC + EX DE,HL + LD HL,(FileLenght+2) + LD BC,(TempShift+2) + SBC HL,BC + RET C + LD B,0x10 + JR NZ,PutHLn + LD A,D + OR A + JR NZ,PutHLn + OR E + SCF + RET Z + LD A,E + CP B + JR NC,PutHLn + LD B,E +PutHLn + GETPORT WINSP.CPU1 + PUSH AF + CALL InitFPages + LD HL,LineBuffer+1 ; ப + EXX + LD HL,LineBuffer+0x3F ; ASCII + EXX + LD A,(TempShift+3) ; ᬥ饭 + CALL PutHexNumb ; 砫 䠨 + LD A,(TempShift+2) + CALL PutHexNumb + LD A,(TempShift+1) + CALL PutHexNumb + LD A,(TempShift) + CALL PutHexNumb + LD (HL),":" + INC L + INC L +PutHLoop CALL TestFPages + LD A,(DE) + INC DE + EXX + LD (HL),A + INC L + EXX + CALL PutHexNumb ;楤 + INC L + INC IXL ;.- ⮢ + LD A,IXL + CP 0x04 + JR Z,.PtHNx1 + CP 0x08 + JR Z,.PtHNx1 + CP 0x0C + JR NZ,.L1 +.PtHNx1 INC L +.L1 DJNZ PutHLoop + POP AF + SETPORT WINSP.CPU1,,0 +;楤 ⪨ 稢 ⮢ +FillHex LD A,0x10 ;.⮢ + SUB IXL ;.- ⮢ + JR Z,.FillE2 + LD B,A + LD C,0x20 +.FillE1 LD (HL),C + INC L + LD (HL),C + INC L + INC L + EXX + LD (HL),0x20 + INC L + EXX + INC IXL + LD A,IXL ; 業 2 ஡ + CP 0x04 + JR Z,.FlHNx1 + CP 0x08 + JR Z,.FlHNx1 + CP 0x0C + JR NZ,.L2 +.FlHNx1 INC L +.L2 DJNZ .FillE1 +.FillE2 LD HL,LineBuffer + LD DE,0x0000 + LD B,0x50 + LD C,IXH + LD A,COLORP.PANEL + COLORI.FILES + CALL JUMPS.PrnTxtLnNormC + OR A + RET ;CY-뫠 ᫥ ப + +;楤 ८ࠧ 8⮢ ᥫ ⭠. ⥪ +; 室: +; HL - +; - +; 室: +; ⥪.᫮ +PutHexNumb PUSH AF + RRCA + RRCA + RRCA + RRCA + AND 0x0F + ADD A,0x90 + DAA + ADC A,0x40 + DAA + LD (HL),A + INC L + POP AF + AND 0x0F + ADD A,0x90 + DAA + ADC A,0x40 + DAA + LD (HL),A + INC L + RET + +;-------------------------------------------------------------- +;楤 ࠡ⪨ View +; ப +HLineUpMs CALL FVHLineUp + RET C + LD B,0x0A +HUpMs1 PUSH BC + SPMOUSE MOUSEF.READ_STATE + POP BC + BIT 0,A + RET Z + HALT + DJNZ HUpMs1 +HUpMs2 CALL FVHLineUp + RET C + SPMOUSE MOUSEF.READ_STATE + BIT 0,A + RET Z + JR HUpMs2 + +FVHLineUp LD HL,(FileShift) + LD DE,(FileShift+2) + LD A,H ;஢塞 砫 䠩 + OR D + OR L + OR E + SCF + RET Z ;Z-砫 䠩 + LD BC,0x0010 + OR A + SBC HL,BC + LD (FileShift),HL ;FileShift-16(।.ப) + LD (TempShift),HL ; ⥪.ᬥ饭 + LD C,B + EX DE,HL + SBC HL,BC + LD (FileShift+2),HL + LD (TempShift+2),HL + CALL ScrollSCRdown + LD B,0x1C + CALL PutHLine ; ⠥ ப + CALL PrintVProc + OR A + RET + +; ப +HLineDwnMs CALL HLineDwn + RET C + LD B,0x0A +HDnMs1 PUSH BC + SPMOUSE MOUSEF.READ_STATE + POP BC + BIT 0,A + RET Z + HALT + DJNZ HDnMs1 +HDnMs2 CALL HLineDwn + RET C + SPMOUSE MOUSEF.READ_STATE + BIT 0,A + RET Z + JR HDnMs2 + +HLineDwn LD HL,(FileShift) + LD BC,(FileShift+2) + LD DE,0x0190 + ADD HL,DE + LD (TempShift),HL ; ⥪.ᬥ饭 + JR NC,.L1 ;ਡ塞 ᬥ饭 ࠭ + INC BC ;⮢ (480) +.L1 LD (TempShift+2),BC + EX DE,HL + LD HL,(FileLenght) + OR A + SBC HL,DE ;஢塞 䠩 + EX DE,HL + LD HL,(FileLenght+2) + SBC HL,BC + RET C + JR NZ,.L2 + LD A,D + OR E + SCF + RET Z ;Z - +.L2 LD HL,(FileShift) + LD DE,(FileShift+2) + LD BC,0x0010 + ADD HL,BC + JR NC,.L3 + INC DE +.L3 LD (FileShift),HL + LD (FileShift+2),DE + CALL ScrollSCRup + LD B,0xDC + CALL PutHLine ; ⠥ ப + CALL PrintVProc + OR A + RET + +; ࠭ +HPageUpMs CALL FVHPageUp + RET C + LD B,0x0A +HUpMs1p PUSH BC + SPMOUSE MOUSEF.READ_STATE + POP BC + BIT 0,A + RET Z + HALT + DJNZ HUpMs1p +HUpMs2p CALL FVHPageUp + RET C + SPMOUSE MOUSEF.READ_STATE + BIT 0,A + RET Z + JR HUpMs2p + +FVHPageUp LD HL,(FileShift) + LD BC,(FileShift+2) + LD A,H ;஢塞 砫 䠩 + OR B + OR L + OR C + SCF + RET Z + LD DE,0x0190 ;⭨ ⥪.ᬥ. ࠭ ⮢ + OR A + SBC HL,DE + JR NC,.HPgUp1 + LD A,B + OR C + DEC BC ;஢塞, 뢠 + JR NZ,.HPgUp1 ;砫 䠩 Z - 뢠 + INC BC + LD L,C ; ᬥ饭 = 0 + LD H,B +.HPgUp1 LD (FileShift),HL + LD (FileShift+2),BC + CALL PrnHEXpage ;⠥ ࠭ + OR A + RET + +; ࠭ +HPageDwnMs CALL HPageDwn + RET C + LD B,0x0A +HDnMs1p PUSH BC + SPMOUSE MOUSEF.READ_STATE + POP BC + BIT 0,A + RET Z + HALT + DJNZ HDnMs1p +HDnMs2p CALL HPageDwn + RET C + SPMOUSE MOUSEF.READ_STATE + BIT 0,A + RET Z + JR HDnMs2p + +HPageDwn LD HL,(FileShift) + LD BC,(FileShift+2) + LD DE,0x0190 ;㥬 ⥪.ᬥ. + ADD HL,DE ;࠭ ⮢ + PUSH HL + JR NC,.L1 + INC BC +.L1 PUSH BC + EX DE,HL + LD HL,(FileLenght) ;஢塞, ࠭ + OR A ;᫥ + SBC HL,DE + EX DE,HL + LD HL,(FileLenght+2) + SBC HL,BC + POP BC + POP HL + RET C ; - + JR NZ,.L2 + LD A,D + OR E + SCF + RET Z ;Z - +.L2 LD (FileShift),HL + LD (FileShift+2),BC + CALL PrnHEXpage ;⠥ ࠭ + OR A + RET + +; 砫 䠩 +HBegFile LD HL,JUMPS.ResFire + PUSH HL + LD HL,(FileShift) + LD BC,(FileShift+2) + LD A,H ;஢塞 砫 䠩 + OR B + OR L + OR C + RET Z ;Z - 砫 + LD HL,0x0000 ;饭 = 0000 + LD (FileShift),HL + LD (FileShift+2),HL + CALL PrnHEXpage ;⠥ ࠭ + RET + +; 䠩 +HEndFile LD HL,JUMPS.ResFire + PUSH HL + LD HL,(FileShift) + LD BC,(FileShift+2) + LD DE,0x0190 + ADD HL,DE + JR NC,.L1 + INC BC +.L1 EX DE,HL + LD HL,(FileLenght) ;஢塞, ᫥ + PUSH HL ;࠭ + OR A + SBC HL,DE + EX DE,HL + LD HL,(FileLenght+2) + PUSH HL + SBC HL,BC + POP BC + POP HL + RET C ; - + JR NZ,.L2 + LD A,D + OR E + RET Z ;Z - +.L2 LD DE,0x0190 + OR A + SBC HL,DE ;뢠 ᬥ饭 ᫥ ࠭ + JR NC,.L3 + DEC BC +.L3 LD A,L ;饭 ⭮ 16 + AND 0x0F + JR Z,.HEnd1 + LD A,L + AND 0xF0 + LD L,A + LD DE,0x0010 + ADD HL,DE + JR NC,.HEnd1 + INC BC +.HEnd1 LD (FileShift),HL + LD (FileShift+2),BC + CALL PrnHEXpage ;⠥ ࠭ + RET + +;-------------------------------------------------------------- +;楤 㪠⥫ ᬥ饭 䠩 +HGoTo LD HL,(FileLenght) + LD DE,(FileLenght+2) + LD A,H ;஢塞, + OR D ;䠩 16 + OR E + JR NZ,HGoToOk + LD A,L + CP 0x11 + RET C ; 16 +HGoToOk LD HL,NewShift ; 㪠. + SUB A + LD (CursPos+1),A ; + INC A + LD (BuffFlg),A + LD A,(FileShift+3) + CALL PutHexNumb ;ᨬ ⥪饥 ᬥ. + LD A,(FileShift+2) ; ⥪⮢ + CALL PutHexNumb + LD A,(FileShift+1) + CALL PutHexNumb + LD A,(FileShift) + CALL PutHexNumb +;뢮 ࠭ +HGoToRet CALL PrintHGT ;⠥ +HGoToLp HALT ; 뢠 + CALL ChangeCurs ;஢ ᬥ + SPMOUSE MOUSEF.READ_STATE + BIT 0,A + JP NZ,HGTescape + SPDSS DSSF.SCANKEY ; + JR Z,HGoToLp ;Z - + LD A,B + AND 0x3F + JR NZ,HGoToLp + LD A,E + OR A + JR Z,HGoToSys ;A=0 . + CP 0x0D + JP Z,HGTenter ; Enter + CP 0x08 + JR Z,HGTdelete ; BackSpace + CP 0x1B + JP Z,HGTescape ; Esc + CP 0x20 + JR C,HGoToLp ;<0x20 室 + LD C,A ;. ASCII + LD A,0x00 +BuffFlg EQU $-1 + OR A + CALL NZ,ClearBuff +CursPos LD A,0x00 ;⥪. + LD B,A ;.⥪.. + LD HL,NewShift ;. 砫 + ADD A,L + LD L,A + JR NC,.L1 + INC H +.L1 LD (HL),C ;ᨬ + LD A,B ;⥪.. + CP 0x07 ; (7-᫥) + JR Z,HGoToRet ;⠥ ப + INC A ;᫥. + LD (CursPos+1),A + JR HGoToRet ;⠥ ப + +ClearBuff LD HL,NewShift + LD B,0x08 + LD A,0x20 +.L1 LD (HL),A + INC HL + DJNZ .L1 + SUB A + LD (BuffFlg),A + RET + +; +HGTdelete SUB A + LD (BuffFlg),A + LD A,(CursPos+1) ;. + OR A + JR Z,HGoToLp ;0 - 室 + DEC A + LD (CursPos+1),A ;।. + LD HL,NewShift + ADD A,L ;ᬥ. + LD L,A + JR NC,.L1 + INC H +.L1 LD (HL)," " ; ஡ + JR HGoToRet + +;⥬ +HGoToSys LD A,D + CP 0x54 ;<- + JR Z,HGTleft + CP 0x56 ;-> + JR Z,HGTright + JR HGoToLp + +; +HGTleft SUB A + LD (BuffFlg),A + LD A,(CursPos+1) ;. + OR A + JP Z,HGoToLp ;0 - 室 + DEC A + LD (CursPos+1),A ;.. + JP HGoToRet + +HGTright SUB A + LD (BuffFlg),A + LD A,(CursPos+1) ;. + CP 0x07 + JP Z,HGoToLp ;7 - ᫥ + INC A + LD (CursPos+1),A ;.. + JP HGoToRet + +;楤 뢮 ப +PrintHGT LD HL,NewShift + LD DE,0x0008 + LD BC,0x081C + LD A,COLORP.PANEL + COLORI.FILES + CALL JUMPS.PrnTxtLnNormC + LD A,(CursPos+1) ; 뢮 + INC A + LD L,A + LD H,0x00 + ADD HL,HL + ADD HL,HL + ADD HL,HL + EX DE,HL + LD HL,TCursor + LD (HL),0xAB;"<" + LD BC,0x011C + LD A,COLORP.PANEL + COLORI.FILES + CALL JUMPS.PrnTxtLnNormC + LD A,0x01 ; 뢥 + LD (CurCurs),A + LD A,0x06 ; ᬥ + LD (CurWait),A + RET + +;楤 ᬥ +ChangeCurs LD A,0x00 ;প ᬥ +CurWait EQU $-1 + DEC A + LD (CurWait),A + RET NZ ; ६ + LD A,(CursPos+1) + INC A + LD L,A + LD H,0x00 ;. + ADD HL,HL + ADD HL,HL + ADD HL,HL + EX DE,HL + LD HL,NewShift ;. + LD A,(CursPos+1) + ADD A,L + LD L,A + JR NC,.L2 + INC H +.L2 LD A,0x00 ; ⥪饣 +CurCurs EQU $-1 + XOR 0x01 ;塞 + LD (CurCurs),A + LD A,(HL) + JR Z,.L1 ;⠥ + LD A,0xAB;"<" +.L1 LD HL,TCursor + LD (HL),A + LD BC,0x011C + LD A,COLORP.PANEL + COLORI.FILES + CALL JUMPS.PrnTxtLnNormC + LD A,0x0C ; ᬥ + LD (CurWait),A + RET + +TCursor DEFB " " + +; ENTER +HGTenter SUB A ; 訡 ୥ ஬ + LD (CursPos+1),A ; 㫥 樨 + LD BC,NewShift ; ப + CALL GetHexNum32 ;ॢ ⥪ 32 ᫮ + JP C,HGoToRet ;CY - ᨭ⠪.訡 + LD C,E + LD B,D + LD A,L ; 16 + AND 0xF0 + LD L,A + EX DE,HL ;. BC+DE + LD HL,(FileLenght) ;஢塞, ᬥ饭 + OR A ;। 䠩 + SBC HL,DE + LD HL,(FileLenght+2) + SBC HL,BC + JR C,HGTent ;CY- । + JR NZ,HGTent1 ;NZ- । + LD A,D + OR E + JR NZ,HGTent1 ;NZ- । +HGTent LD HL,(FileLenght) + LD BC,0x0010 + OR A + SBC HL,BC ;ᬥ.=᫥ ப 䠩 16 + EX DE,HL + LD HL,(FileLenght+2) + JR NC,.L1 + DEC HL +.L1 LD C,L + LD B,H +HGTent1 LD (FileShift),DE + LD (FileShift+2),BC + CALL PrnHEXpage ;⠥ ࠭ + RET + +; Escape +HGTescape LD HL,NewShift ; ப + PUSH HL + LD A,(FileShift+3) ;ᨬ ⥪.ᬥ饭 + CALL PutHexNumb + LD A,(FileShift+2) + CALL PutHexNumb + LD A,(FileShift+1) + CALL PutHexNumb + LD A,(FileShift) + CALL PutHexNumb + POP HL + LD DE,0x0008 + LD BC,0x081C + LD A,COLORP.PANEL + COLORI.FILES + CALL JUMPS.PrnTxtLnNormC + CALL JUMPS.ResFire + RET ;室 + +NewShift DEFB " ",0 + +;楤 ஢ 32⮢ .⥪⮢ ᫠ +; 室: +; BC - ⥪⮬ (0- ) +; 室: +; DE+HL - ᫮ 32 +; CY - ᨭ⠪᪠ 訡 +GetHexNum32 LD HL,0x0000 + LD E,L + LD D,H +GetHNlp LD A,(BC) + INC BC + OR A + RET Z + CP " " + JR Z,GetHNlp + CP 0x61 + JR C,.L1 + SUB 0x20 +.L1 CP 0x30 + RET C + CP 0x47 + CCF + RET C + SUB 0x30 + CP 0x0A + JR C,GetHNum + SUB 0x07 + CP 0x0A + RET C +GetHNum ADD HL,HL + EX DE,HL + ADC HL,HL + EX DE,HL + ADD HL,HL + EX DE,HL + ADC HL,HL + EX DE,HL + ADD HL,HL + EX DE,HL + ADC HL,HL + EX DE,HL + ADD HL,HL + EX DE,HL + ADC HL,HL + EX DE,HL + OR L + LD L,A + JR GetHNlp diff --git a/plugins/fnviewer/fviewer.a80 b/plugins/fnviewer/fviewer.a80 new file mode 100644 index 0000000..5697bb8 --- /dev/null +++ b/plugins/fnviewer/fviewer.a80 @@ -0,0 +1,1081 @@ + +; LAST UPDATE: 27.05.2025 savelij + +LineBuffer := WorkBuffer+0x300 + +;[]==========================================================[] + JP FileViewer + + DZ FLEX_VERS.VIEWER + +FileViewer CALL LoadFile + RET C + LD IX,ViewingFile + SUB A + LD (ViewMode),A + LD (ASCIIaddX),A + LD HL,0x0000 + LD (FileShift),HL + LD (FileShift+2),HL + LD L,(IX+28) + LD H,(IX+29) + LD (FileLenght),HL + LD L,(IX+30) + LD H,(IX+31) + LD (FileLenght+2),HL + CALL InitViewScr +ViewerBegin CALL InitStatusLine + CALL InitVProc + CALL PrintVPage +ViewerLoop LD A,(ViewMode) + OR A + JR NZ,HViewLoop +TViewLoop LD IX,ASCIItab + CALL JUMPS.TestCoords + SPDSS DSSF.SCANKEY ; + JR Z,TViewLoop + LD A,E ;-ASCII + CP 0x1B ;Esc + JP Z,ViewerExit + OR A + JR NZ,TViewLoop ; 㭪樮. + LD A,D + CP 0x44 + JP Z,ViewerExit + LD HL,TViewLoop + PUSH HL + CP 0x3B + JP Z,About + CP 0x3C + JP Z,ChASCIImode + CP 0x3E + JP Z,ChViewer ;ᬮ HEX + CP 0x42 + JP Z,ChCodePage ; ࠭ WIN/DOS/KOI + CP 0x41 + JP Z,FVPrintFile + CP 0x54 + JP Z,ScrollLeft + CP 0x56 + JP Z,ScrollRght + CP 87 ;Home + JP Z,THome + CP 81 ;End + JP Z,TEnd + CP 88 ;५ + JP Z,TLineUp + CP 82 ;५ + JP Z,TLineDwn + CP 89 ;PageUp + JP Z,TPageUp + CP 83 ;PageDown + JP Z,TPageDwn + LD A,B + AND 0x30 + CP 0x30 + RET Z + BIT 5,B + RET Z + LD A,D + AND 0x7F + CP 0x57 ;Ctrl+PageUp + JP Z,TBegFile ; 砫 䠩 + CP 0x51 ;Ctrl+PageDown + JP Z,TEndFile ; 䠩 + CP 0x19 ;Ctrl+P + JP Z,FVPrintFile + RET + +;-------------------------------------------------------------- +HViewLoop LD IX,HEXtab + CALL JUMPS.TestCoords + SPDSS DSSF.SCANKEY ; + JR Z,HViewLoop + LD A,E ;-ASCII + CP 0x1B ;Esc + JP Z,ViewerExit + OR A + JR NZ,HViewLoop ; 㭪樮. + LD A,D ; + CP 0x44 ;F10 + JP Z,ViewerExit + LD HL,HViewLoop + PUSH HL + CP 0x3B + JP Z,About + CP 0x3E ;F4 + JP Z,ChViewer ;ᬮ ⥪ + CP 0x3F ;F5 + JP Z,HGoTo ;室 짮⥫ + CP 0x41 + JP Z,FVPrintFile + CP 88 ;५ + JP Z,FVHLineUp + CP 82 ;५ + JP Z,HLineDwn + CP 89 ;PageUp + JP Z,FVHPageUp + CP 83 ;PageDown + JP Z,HPageDwn + LD A,B + AND 0x30 + CP 0x30 + RET Z + BIT 5,B + RET Z + LD A,D + AND 0x7F + CP 0x57 ;Ctrl+PageUp + JP Z,HBegFile ; 砫 䠩 + CP 0x51 ;Ctrl+PageDown + JP Z,HEndFile ; 䠩 + CP 0x19 ;Ctrl+P + JP Z,FVPrintFile + RET + +;[]----------------------------------------------------------[] +ChViewer LD HL,ViewerBegin + EX (SP),HL + SUB A + LD (ASCIIaddX),A + LD A,(ViewMode) + XOR 0x01 + LD (ViewMode),A + RET NZ + LD HL,(FileShift) + LD DE,(FileShift+2) + INC HL + LD A,H + OR L + JR NZ,.L1 + INC DE +.L1 CALL SearchUp + LD (FileShift),HL + LD (FileShift+2),DE + RET + +;[]==========================================================[] +PrintVPage LD A,(ViewMode) + OR A + JP NZ,PrnHEXpage + JP PrnASCIIpage + +;[]==========================================================[] +ViewingFile DUPL 0x30,0 +ViewMode DEFB 0x00 +ASCIImode DEFB 0x01 +ASCIIaddX DEFB 0x00 +EmptyLines DEFB 0x00 +FileLenght DUPL 4,0 ; 䠩 (32) +FileShift DUPL 4,0 ; 饭 砫 䠩 (32) +TempShift DUPL 4,0 ; ६ 祩 ᬥ饭 (32) +FVNextShift DUPL 4,0 ; ࠭ ASCII (32) +FVMemIndef DEFB 0x00 +FHandle DEFB 0x00 +FVReadLen DUPL 4,0 + +;[]==========================================================[] +ViewerExit LD A,(FVMemIndef) + SPDSS DSSF.FREEMEM + OR A + RET + +;[]==========================================================[] +LoadFile CALL JUMPS.SetClock + LD DE,ViewingFile +; SPDSS DSSF.F_FIRST,1,0x37 + SPDSS DSSF.F_FIRST,1, DIR.M_Archive + \ + DIR.M_Dir + \ + DIR.M_System + \ + DIR.M_Hidden + \ + DIR.M_ReadOnly + PUSH AF + CALL C,JUMPS.DOSError + POP AF + JP C,LoadExit +; LD HL,ViewingFile+33 +; LD A,(HL) +;LoadFl0 CALL FVCorrBigChar +; LD (HL),A +; INC HL +; LD A,(HL) +; OR A +; JR NZ,LoadFl0 + LD IX,ViewingFile + LD H,(IX+28) + LD A,(IX+29) + LD E,(IX+30) + LD D,(IX+31) + LD L,0x00 + SLA A + RL E + RL D + RL L + SLA A + RL E + RL D + RL L + OR H + LD H,0x00 + EX DE,HL + JR Z,.L1 + INC HL +.L1 LD A,H + OR L + JR NZ,LoadFl1 + INC HL +LoadFl1 LD A,D + OR E + LD A,0x1E + PUSH AF + CALL NZ,JUMPS.DOSError ;!!!!!!!!!!!! + POP AF + SCF + JP NZ,LoadExit + PUSH HL + SPDSS DSSF.INFOMEM + POP DE + LD L,C + LD H,B + OR A + SBC HL,DE + LD A,0x1E + PUSH DE + PUSH AF + CALL C,JUMPS.DOSError ;!!!!!!!!!!!! + POP AF + POP DE + JP C,LoadExit + LD IX,ProcessView + LD (IX+PROC.MAXL1),E + LD (IX+PROC.MAXH1),D + SUB A + LD (IX+PROC.MAXL2),A + LD (IX+PROC.MAXH2),A + PUSH DE + CALL JUMPS.InitProcess + POP DE + LD B,E + SPDSS DSSF.GETMEM + LD (FVMemIndef),A + LD HL,PagesList + SPBIOS BIOSF.GETMEMBLKPAGES + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 160,88,320,48 + W_FILL 4,2,312,10,COLORI.BLACK + W_TEXT 112,3,COLORI.WHITE,"FN File Viewer v\{FLEX_VERS.VIEWER}" + W_TEXT 8,16,COLORP.HIGHGRAY,"Reading:" + W_BORDER 16,28,288,12 + W_FILL 18,29,284,10,COLORI.WHITE + W_END + SPDSS DSSF.CURDISK + LD HL,WorkBuffer + ADD A,"A" + LD (HL),A + INC HL + LD (HL),":" + INC HL + PUSH HL + SPDSS DSSF.CURDIR + POP HL + SUB A +.L2 INC HL + CP (HL) + JR NZ,.L2 + DEC HL + LD A,0x5C + CP (HL) + INC HL + JR Z,.L3 + LD (HL),A + INC HL +.L3 EX DE,HL + LD HL,ViewingFile+33 + SUB A +.L4 LDI + CP (HL) + JR NZ,.L4 + LD (DE),A + LD IX,0x0100 + LD HL,WorkBuffer + LD DE,0x00D8 + LD BC,0x0068 + LD A,0x80 + CALL JUMPS.PrnRangPathL + LD HL,ViewingFile+33 + SPDSS DSSF.OPEN,,1 + PUSH AF + CALL C,JUMPS.DOSError + POP AF + JP C,NoRead + LD (FHandle),A + LD IX,ViewingFile + LD L,(IX+28) + LD H,(IX+29) + LD (FVReadLen),HL + LD L,(IX+30) + LD H,(IX+31) + LD (FVReadLen+2),HL + SETPORT WINSP.Y_PORT,0xC0 + GETPORT WINSP.CPU1 + PUSH AF + LD HL,PagesList + LD A,(HL) +.ReadLp1 INC HL + PUSH HL + SETPORT WINSP.CPU1,,0 + SPDSS DSSF.SCANKEY + LD HL,0x011B + OR A + SBC HL,DE + JP Z,ReadAbort + LD HL,(FVReadLen) + LD DE,(FVReadLen+2) + LD BC,0x4000 + OR A + SBC HL,BC + LD B,0x00 + EX DE,HL + SBC HL,BC + EX DE,HL + JR C,.ReadEnd + LD (FVReadLen),HL + LD (FVReadLen+2),DE + LD HL,0x4000 + LD DE,0x4000 + LD A,(FHandle) + SPDSS DSSF.READ + CALL FVNextProcess + POP HL + LD A,(HL) + CP 0xFF + JR NZ,.ReadLp1 + POP AF + SETPORT WINSP.CPU1,,0 + JR ReadExit + +.ReadEnd LD HL,0x4000 + LD DE,(FVReadLen) + LD A,D + OR E + JR Z,ReadEn1 + LD A,(FHandle) + SPDSS DSSF.READ + CALL FVNextProcess +ReadEn1 POP HL + POP AF + SETPORT WINSP.CPU1,,0 +ReadExit LD A,(FHandle) + SPDSS DSSF.CLOSE + OR A +LoadExit HALT + HALT + WINDOWCLOSE + PUSH AF + CALL JUMPS.SetMouse + POP AF + RET + +ReadAbort POP HL + POP AF + SETPORT WINSP.CPU1,,0 +NoRead LD A,(FVMemIndef) + SPDSS DSSF.FREEMEM + SCF + JR LoadExit + +FVNextProcess LD IX,ProcessView + LD L,(IX+PROC.CURL1) + LD H,(IX+PROC.CURH1) + INC HL + LD (IX+PROC.CURL1),L + LD (IX+PROC.CURH1),H + LD A,H + OR L + JR NZ,.NextPr1 + LD L,(IX+PROC.CURL2) + LD H,(IX+PROC.CURH2) + INC HL + LD (IX+PROC.CURL2),L + LD (IX+PROC.CURH2),H +.NextPr1 CALL JUMPS.PrnProcess + RET + +;[]----------------------------------------------------------[] +ProcessView DEFW 0x00B2 + DEFW 0x0075 + DEFW 0x011C + DEFW 0x0000 + DEFW 0x0000 + DEFW 0x0000 + DEFW 0x0000 + DEFW 0x0000 + DEFW 0x0000 + DEFB 0x4F + +;FVCorrBigChar CP 0x41 +; RET C +; CP 0x5B +; JR NC,.CorrCh1 +; SET 5,A +; RET + +;.CorrCh1 CP 0x80 +; RET C +; CP 0xA0 +; RET NC +; SET 5,A +; CP 0x90 +; RET C +; SET 6,A +; RES 4,A +; RET + +;[]==========================================================[] +InitViewScr LD HL,FVFLen + LD B,0x10 + LD A,0x20 +.L1 LD (HL),A + INC HL + DJNZ .L1 + LD HL,FVFClast + LD B,0x05 +.L2 LD (HL),A + INC HL + DJNZ .L2 + LD DE,FVFLen + LD IX,ViewingFile + LD L,(IX+28) + LD H,(IX+29) + LD C,(IX+30) + LD B,(IX+31) + CALL JUMPS.ConvNumTxt32 + LD A,0x20 + LD (DE),A + INC DE + LD HL,FVBytes + LD BC,0x0005 + LDIR + LD DE,FVFData + CALL FVGetData + LD DE,FVFTime + CALL FVGetTime + LD L,(IX+26) + LD H,(IX+27) + LD DE,FVFClast + CALL JUMPS.ConvNumTxt16 + LD HL,FVFAtributs + LD DE,FVFAttrib + LD C,(IX+32) + LD B,0x08 +InitVS0 RL C + LD A,"-" + JR NC,.L3 + LD A,(HL) +.L3 LD (DE),A + INC HL + INC DE + DJNZ InitVS0 + MAKEWINDOW WINSUBOBJ.NOSTORE + W_MAIN 0,0,640,256 + W_FILL 4,2,632,10,COLORI.BLACK + W_TEXT 8,3,COLORI.WHITE," FN File Viewer v\{FLEX_VERS.VIEWER}" + W_HORIZLINE 0,13,640 + W_TEXT 8,17,COLORP.HIGHGRAY,"Viewing:" + W_VERTICLINE 574,16,10 + W_HORIZLINE 0,27,640 + W_HORIZLINE 0,227,640 + W_FILL 0,28,640,200,COLORI.PANEL + W_TEXT 8,231,COLORP.HIGHGRAY,"Len: " +FVFLen EQU $ - STRLEN(" ") - 1 + W_VERTICLINE 160,230,10 + W_TEXT 172,231,COLORP.HIGHGRAY,"Create data: " +FVFData EQU $ - STRLEN(" ") - 1 +FVFTime EQU $ - STRLEN(" ") - 1 + W_VERTICLINE 336,230,10 + W_TEXT 348,231,COLORP.HIGHGRAY,"First claster: " +FVFClast EQU $ - STRLEN(" ") - 1 + W_VERTICLINE 480,230,10 + W_TEXT 492,231,COLORP.HIGHGRAY,"File attribut: " +FVFAttrib EQU $ - STRLEN(" ") - 1 + W_END + SPDSS DSSF.CURDISK + LD HL,WorkBuffer + ADD A,"A" + LD (HL),A + INC HL + LD (HL),":" + INC HL + PUSH HL + SPDSS DSSF.CURDIR + POP HL + SUB A +.L4 INC HL + CP (HL) + JR NZ,.L4 + DEC HL + LD A,0x5C + CP (HL) + INC HL + JR Z,.L5 + LD (HL),A + INC HL +.L5 EX DE,HL + LD HL,ViewingFile+33 + SUB A +.L6 LDI + CP (HL) + JR NZ,.L6 + LD (DE),A + LD IX,0x0200 + LD HL,WorkBuffer + LD DE,0x0034 + LD BC,0x0011 + LD A,0x80 + CALL JUMPS.PrnRangPathL + LD HL,0x01FC + LD DE,0x0003 + LD B,0x08 + EXX + LD HL,0x022E + LD DE,0x0003 + LD B,0x08 + EXX + LD A,0x02 + CALL JUMPS.SetCMOSPrint + RET + +FVFAtributs DEFB "--ad-shr" + +; +FVGetData EX DE,HL + LD A,(IX+24) + AND 0x1F + CALL FVGet8Bit + LD (HL),"." + INC HL + LD A,(IX+24) + LD C,(IX+25) + LD B,5 +.L1 SRL C + RRA + DJNZ .L1 + AND 0x0F + CALL FVGet8Bit + LD (HL),"." + INC HL + LD A,(IX+25) ; + SRL A + ADD A,80 +.L2 SUB 100 + JR NC,.L2 + ADD A,100 ; + CALL FVGet8Bit + EX DE,HL + RET + +;६ +FVGetTime EX DE,HL + LD A,(IX+23) ; + AND 0xF8 + RRA + RRA + RRA + CALL FVGet8Bit + LD (HL),":" + INC HL + LD A,(IX+22) + LD C,(IX+23) + LD B,5 +.L1 SRL C + RRA + DJNZ .L1 + AND 0x3F + CALL FVGet8Bit + EX DE,HL + RET + +FVGet8Bit LD B,0x2F +.L1 INC B + SUB 10 + JR NC,.L1 + ADD A,10 + LD (HL),B + INC HL + ADD A,"0" + LD (HL),A + INC HL + RET + +FVBytes DEFB "bytes" + +;[]==========================================================[] +InitStatusLine LD A,(ViewMode) + OR A + JP NZ,HEXstatus +ASCIIstatus LD HL,UnWrapT + LD DE,0x005E + LD A,(ASCIImode) + OR A + JR Z,.L1 + LD HL,WrapT + LD DE,0x0064 +.L1 LD (ASCIIx),DE + LD DE,ASCIIm + LD BC,0x0009 + LDIR + CALL InitCodePage + MAKEWINDOW WINSUBOBJ.WOBIND + W_HORIZLINE 0,241,640 + W_FILL 2,243,636,12,COLORI.HIGHGRAY + W_HORIZLINE 2,255,638 + W_BUTTON 0,242,80,14 + W_TEXT 18,245,COLORP.HIGHGRAY,"F1 About" + W_BUTTON 80,242,80,14 + W_TEXT 94,245,COLORP.HIGHGRAY,"F2 UnWrap" +ASCIIx: EQU $ - STRLEN("F2 UnWrap") - 6 +ASCIIm: EQU $ - STRLEN("F2 UnWrap") - 1 + W_BUTTON 160,242,80,14 + W_TEXT 184,245,COLORP.HIGHGRAY,"F4 Hex" + W_BUTTON 400,242,80,14 + W_TEXT 422,245,COLORP.HIGHGRAY,"F7 Print" + W_BUTTON 480,242,80,14 + W_TEXT 504,245,COLORP.HIGHGRAY,"F8 DOS" +ASCIIenc: EQU $ - STRLEN("DOS") - 1 + W_BUTTON 560,242,80,14 + W_TEXT 580,245,COLORP.HIGHGRAY,"F10 Quit" + W_END + RET + +UnWrapT DEFB "F2 UnWrap" +WrapT DEFB "F2 Wrap " +EncDos: DEFB "DOS" +EncWin: DEFB "WIN" +EncKoi: DEFB "KOI" + +HEXstatus + MAKEWINDOW WINSUBOBJ.WOBIND + W_HORIZLINE 0,241,640 + W_FILL 2,243,636,12,COLORI.HIGHGRAY + W_HORIZLINE 2,255,638 + W_BUTTON 0,242,80,14 + W_TEXT 18,245,COLORP.HIGHGRAY,"F1 About" + W_BUTTON 160,242,80,14 + W_TEXT 182,245,COLORP.HIGHGRAY,"F4 ASCII" + W_BUTTON 240,242,80,14 + W_TEXT 258,245,COLORP.HIGHGRAY,"F5 Go to" + W_BUTTON 400,242,80,14 + W_TEXT 422,245,COLORP.HIGHGRAY,"F7 Print" + W_BUTTON 560,242,80,14 + W_TEXT 580,245,COLORP.HIGHGRAY,"F10 Quit" + W_END + RET + +;[]==========================================================[] +About + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 160,72,320,85 + W_FILL 4,2,312,10,COLORP.BLACK + W_TEXT 144,3,COLORI.WHITE,"About" + W_TEXT 96,18,COLORP.HIGHGRAY,"Flex Navigator File Viewer" + W_TEXT 144,28,COLORP.HIGHGRAY,"v\{FLEX_VERS.VIEWER}" + W_TEXT 18,40,COLORP.HIGHGRAY,"Programming: (C)2000 Enin Anton" + W_TEXT 92,50,COLORP.HIGHGRAY,"(C)2021 Mikhaltchenkov Dmitry" + W_BUTTON 124,66,72,14 + W_TEXT 154,69,COLORP.HIGHGRAY,"Ok" + W_END +AboutLoop LD IX,FVAboutTab + CALL JUMPS.TestCoords + SPDSS DSSF.SCANKEY + JR Z,AboutLoop + LD A,B + OR A + JR NZ,AboutLoop + LD A,E + CP 0x1B + JR Z,AboutExt + CP 0x0D + JR Z,AboutExt + RES 5,A + CP "O" + JR NZ,AboutLoop +AboutExt + WINDOWCLOSE + RET + +;[]==========================================================[] +ScrollSCRup LD DE,0x241C + JR ScrlSCRDnUp + +ScrollSCRdown LD DE,0x1C24 +; 室: +; D - Y 㤠 +; - Y 㤠 +ScrlSCRDnUp DI + PUSH DE + SPMOUSE MOUSEF.REFRESH + POP DE + GETPORT WINSP.CPU1 + PUSH AF + SETPORT WINSP.CPU1,0x50 + LD HL,0x4000 + LD BC,320 + ACCEL ACCELCMD.SET_BUFFER + LD A,0xC0 + ACCEL ACCELCMD.OFF +ScSCRN1 LD A,D + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.COPY_VERT + LD A,(HL) + ACCEL ACCELCMD.OFF + LD A,E + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.COPY_VERT + LD (HL),A + ACCEL ACCELCMD.OFF + INC HL + DEC BC + LD A,B + OR C + JR NZ,ScSCRN1 + POP AF + SETPORT WINSP.CPU1,,0 + EI + RET + +;[]==========================================================[] +InitFPages PUSH HL + LD DE,(TempShift) + LD HL,(TempShift+2) + LD A,D ;뤥塞 ࠭ + RLA + RL L + RLA + RL L + LD A,L + EXX + LD E,A ;DE - ࠭ ᯨ᪥ + LD D,HIGH (PagesList) + LD A,(DE) ;.࠭ + SETPORT WINSP.CPU1,,0 + EXX + RES 7,D ;. 0x4000 + SET 6,D + POP HL + RET + +TestFPages BIT 7,D + RET Z + RES 7,D + SET 6,D + EXX + INC E ;DE - ࠭ ᯨ᪥ + LD A,(DE) ;.࠭ + SETPORT WINSP.CPU1,,0 + EXX + RET + +GetFPages PUSH HL + RES 6,D + EXX + LD A,E + EXX + BIT 7,D + RES 7,D + JR Z,.L1 + INC A +.L1 LD L,A + SUB A + LD H,A + SRL L + RRA + SRL L + RRA + OR D + LD D,A + LD (TempShift),DE + LD (TempShift+2),HL + POP HL + RET + +;[]==========================================================[] +;楤 樠 ⠡ 業⮢ +InitVProc LD A,0x01 + LD (ProcFlag),A ; 뢮 業⮢ + LD A,(ViewMode) + OR A + JR NZ,InProcHex +;業 TextWrap +InProcASCII LD HL,(FileLenght) + LD DE,(FileLenght+2) + LD B,0x19 +InProcA PUSH BC + CALL SearchUp + POP BC + RET C + DJNZ InProcA + JR InitProc + +;業 Hex +InProcHex LD HL,(FileLenght) + LD DE,(FileLenght+2) + LD BC,0x0190 + OR A + SBC HL,BC + LD BC,0x0000 + EX DE,HL + SBC HL,BC + EX DE,HL + RET C + LD A,H + OR L + OR D + OR E + RET Z +;楤 樠樨 ⠡ 業⮢ +; 室: +; DE+HL - 䠩-1࠭ +InitProc PUSH HL + PUSH DE + EX DE,HL + LD BC,100 ; 䠩/100 (%) + CALL JUMPS.Divis32 + LD (Coeff1+1),DE ;砥 - + LD (Coeff2+1),HL ; 業 + LD IX,ProcentTab + LD HL,0x0000 + LD E,L + LD D,H + LD BC,0x6300 ;ਬ ⠡ + LD (IX+0x00),L + INC IX + LD (IX+0x00),H + INC IX + LD (IX+0x00),E + INC IX + LD (IX+0x00),D + INC IX + LD (IX+0x00),C + INC IX + INC C +; 業 +CoeffLoop PUSH BC +Coeff1 LD BC,0x0000 + ADD HL,BC + LD (IX+0x00),L + INC IX + LD (IX+0x00),H + INC IX + EX DE,HL +Coeff2 LD BC,0x0000 + ADC HL,BC + EX DE,HL + POP BC + LD (IX+0x00),E + INC IX + LD (IX+0x00),D + INC IX + LD (IX+0x00),C + INC IX + INC C + DJNZ CoeffLoop + POP DE + POP HL + LD (IX+0x00),L ;.業 + INC IX + LD (IX+0x00),H + INC IX + LD (IX+0x00),E + INC IX + LD (IX+0x00),D + INC IX + LD (IX+0x00),C + SUB A + LD (ProcFlag),A + RET + +;[]----------------------------------------------------------[] +;楤 業 +PrintVProc LD HL,PutProcent + PUSH HL ;室 + LD A,(ProcFlag) + OR A + LD A,100 + RET NZ ; 100% + LD IX,ProcentTab+250 ;ਤ ⠡ .50% + LD HL,(FileShift) ;饥 ᬥ饭 + LD DE,(FileShift+2) + CALL TestProcent ; 室.? + JR C,LowTest ;<50% + LD A,(IX+0x04) + RET Z ;=50% + LD IX,ProcentTab+375 ; 75% + CALL TestProcent ; 室.? + JR C,Test2 ;50%% + OR A + RET Z + LD BC,-0x0005 ;饬 ⠡ + ADD IX,BC ;㦭 業 + CALL TestProcent + JR Test2 + +;X<50% +LowTest LD IX,ProcentTab+125 ; 25% + CALL TestProcent ; 室.? + JR C,Test2 ;01%業 +TestProcent PUSH HL + PUSH DE + PUSH BC + LD C,(IX+0x00) + LD B,(IX+0x01) + OR A + SBC HL,BC + EX DE,HL + LD C,(IX+0x02) + LD B,(IX+0x03) + SBC HL,BC + JR NZ,.L1 + LD A,D + OR E +.L1 POP BC + POP DE + POP HL + RET + +;楤 뢮 業⮢ +PutProcent LD HL,ProcText + PUSH HL + LD BC,0x2F00 +.L1 INC B + SUB 100 + JR NC,.L1 + ADD A,100 + EX AF,AF' + LD A,B + CP "0" + JR Z,.L2 + SET 0,C +.L2 BIT 0,C + JR NZ,.L3 + LD A,0x20 +.L3 LD (HL),A + INC HL + EX AF,AF' + LD B,0x2F +.L4 INC B + SUB 10 + JR NC,.L4 + ADD A,10 + EX AF,AF' + LD A,B + CP "0" + JR Z,.L5 + SET 0,C +.L5 BIT 0,C + JR NZ,.L6 + LD A,0x20 +.L6 LD (HL),A + INC HL + EX AF,AF' + ADD A,"0" + LD (HL),A + POP HL + LD DE,0x0250 + LD BC,0x0011 + LD A,0x80 + CALL JUMPS.PrnTxtLnNorm + RET + +InitCodePage: LD A,0 +CodePage EQU $-1 + LD L,A + LD H,0 + ADD HL,HL + ADD A,L + LD L,A + LD DE,EncDos + ADD HL,DE + LD DE,ASCIIenc + LD BC,3 + LDIR + LD A, (CodePage) + AND A + JR NZ,.next + LD HL,0 +.call: LD (PutLine2),A + LD (PutLine2 + 1),HL + RET + +.next: DEC A + LD HL,Table866 + JR Z,.next1 + LD HL,TableKoi +.next1: LD (DecodeSymbol.table),HL + LD HL,DecodeSymbol + LD A, 0xCD + JR .call + +ProcText DEFB " %",0 +ProcFlag DEFB 0x00 +ProcentTab DUPL 505,0 + +;[]==========================================================[] + include fvtext.a80 + include fvhex.a80 + include fvprn.a80 + +;[]==========================================================[] +ASCIItab: DEFW 0x0050,0x0230,0x001C,0x007F,0x00,0x0000,TLineUpMs,TBegFile + DEFW 0x0050,0x0230,0x0080,0x00E4,0x00,0x0000,TLineDwnMs,TEndFile + DEFW 0x0000,0x0050,0x001C,0x00E4,0x00,0x0000,TPageUpMs,ScrollLeft + DEFW 0x0230,0x0280,0x001C,0x00E4,0x00,0x0000,TPageDwnMs,ScrollRght + DEFW 0x0000,0x0050,0x00F2,0x0100,0x01,0x0000,About,0x0000 + DEFW 0x0050,0x00A0,0x00F2,0x0100,0x01,0x0000,ChASCIImode,0x0000 + DEFW 0x00A0,0x00F0,0x00F2,0x0100,0x01,0x0000,ChViewer,0x0000 + DEFW 0x0190,0x01E0,0x00F2,0x0100,0x01,0x0000,ChCodePage,0x0000 + DEFW 0x01E0,0x0230,0x00F2,0x0100,0x01,0x0000,FVPrintFile,0x0000 + DEFW 0x0230,0x0280,0x00F2,0x0100,0x21,0x0000,ViewerExit,0x0000 + DEFW 0x8000 + +HEXtab: DEFW 0x0050,0x0230,0x001C,0x007F,0x00,0x0000,HLineUpMs,HBegFile + DEFW 0x0050,0x0230,0x0080,0x00E4,0x00,0x0000,HLineDwnMs,HEndFile + DEFW 0x0000,0x0050,0x001C,0x00E4,0x00,0x0000,HPageUpMs,0x0000 + DEFW 0x0230,0x0280,0x001C,0x00E4,0x00,0x0000,HPageDwnMs,0x0000 + DEFW 0x0000,0x0050,0x00F2,0x0100,0x01,0x0000,About,0x0000 + DEFW 0x00A0,0x00F0,0x00F2,0x0100,0x01,0x0000,ChViewer,0x0000 + DEFW 0x00F0,0x0140,0x00F2,0x0100,0x01,0x0000,HGoTo,0x0000 + DEFW 0x01E0,0x0230,0x00F2,0x0100,0x01,0x0000,FVPrintFile,0x0000 + DEFW 0x0230,0x0280,0x00F2,0x0100,0x21,0x0000,ViewerExit,0x0000 + DEFW 0x8000 + +FVAboutTab: DEFW 0x011C,0x0164,0x008A,0x0098,0x21,0x0000,AboutExt,0x0000 + DEFW 0x0000,0x00A0,0x0000,0x0100,0x20,0x0000,AboutExt,0x0000 + DEFW 0x01E0,0x0280,0x0000,0x0100,0x20,0x0000,AboutExt,0x0000 + DEFW 0x0000,0x0280,0x0000,0x0048,0x20,0x0000,AboutExt,0x0000 + DEFW 0x0000,0x0280,0x009D,0x0100,0x20,0x0000,AboutExt,0x0000 + DEFW 0x8000 +;[]==========================================================[] diff --git a/plugins/fnviewer/fvmain.a80 b/plugins/fnviewer/fvmain.a80 new file mode 100644 index 0000000..5a6f260 --- /dev/null +++ b/plugins/fnviewer/fvmain.a80 @@ -0,0 +1,24 @@ + +; LAST UPDATE: 20.03.2025 savelij + + include macros.a80 + include fn_const.a80 + include fn_macros.a80 + include fn_version.a80 + include accel_sp.a80 + include ports_sp.a80 + include define_sp.a80 + include macros_sp.a80 + include dss_sp.a80 + include bios_sp.a80 + include mouse_sp.a80 + + org PluginOrg ; #C000 - Header lenght +; Flex Navigator plugin header +PluginStart: db "FLX-PLUG" ; Id + dw 0x0000 ; LoadOffset + dw 0x0000 ; EntryOffset + db 0x00 ; PluginMode + db 0x00,0x00,0x00 ; Reserved + +PluginEntry: include fviewer.a80 diff --git a/plugins/fnviewer/fvprn.a80 b/plugins/fnviewer/fvprn.a80 new file mode 100644 index 0000000..f3c397a --- /dev/null +++ b/plugins/fnviewer/fvprn.a80 @@ -0,0 +1,334 @@ + +; LAST UPDATE: 24.03.2025 savelij + +;[]==========================================================[] +FVPrintFile + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 168,96,304,50 + W_FILL 4,2,296,10,COLORI.BLACK + W_TEXT 132,3,COLORI.WHITE,"Print file" + W_BORDER 16,16,272,12 + W_FILL 18,17,268,10,COLORI.WHITE + W_BUTTON 116,32,72,14 + W_TEXT 140,35,COLORP.HIGHGRAY,"Stop" + W_END + LD IX,PrintTab + CALL JUMPS.TestCoords + LD IX,ProcessPrn + LD HL,(FileLenght) + LD DE,(FileLenght+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+PROC.MAXL1),L + LD (IX+PROC.MAXH1),H + LD (IX+PROC.MAXL2),E + LD (IX+PROC.MAXH2),0x00 + CALL JUMPS.InitProcess + LD A,(ViewMode) + OR A + JP NZ,PrintHEX +PrintASCII LD HL,0x0000 + LD (TempShift),HL + LD (TempShift+2),HL + LD HL,(FileLenght) + LD BC,(FileLenght+2) + GETPORT WINSP.CPU1 + PUSH AF + CALL InitFPages +PrnASCII CALL TestFPages + LD A,(DE) + INC DE + CALL FVPrintCHAR + JR C,PrnASCIIext + CALL FVNxtPrnProc + LD A,H + OR L + JR NZ,.L1 + DEC BC +.L1 DEC HL + LD A,H + OR L + OR B + OR C + JR NZ,PrnASCII + CALL EndJob + jr c,PrnASCIIext + LD DE,0x0000 + CALL FVNxtPrnProc + HALT + HALT +PrnASCIIext POP AF + SETPORT WINSP.CPU1,,0 + WINDOWCLOSE + RET + +PrintHEX LD HL,0x0000 + LD (TempShift),HL + LD (TempShift+2),HL + LD HL,LineBuffer + LD BC,0x5020 +.L1 LD (HL),C + INC L + DJNZ .L1 +PrintHEXlp CALL PrnHEXline + JR C,PrintHEXext + LD HL,(TempShift) + LD DE,0x0010 ; +16 + ADD HL,DE + LD (TempShift),HL + LD HL,(TempShift+2) + LD E,D + ADC HL,DE + LD (TempShift+2),HL + JR PrintHEXlp + +PrintHEXext CALL EndJob + OR A + JR NZ,PrnHEXe + LD DE,0x0000 + CALL FVNxtPrnProc + HALT + HALT +PrnHEXe + WINDOWCLOSE + RET + +PrnHEXline LD IXL,0x00 + LD HL,(FileLenght) + LD BC,(TempShift) + OR A + SBC HL,BC + EX DE,HL + LD HL,(FileLenght+2) + LD BC,(TempShift+2) + SBC HL,BC + LD A,0x00 + RET C + LD B,0x10 + JR NZ,PrnHLn + LD A,D + OR A + JR NZ,PrnHLn + OR E + LD A,0x00 + SCF + RET Z + LD A,E + CP B + JR NC,PrnHLn + LD B,E +PrnHLn + GETPORT WINSP.CPU1 + PUSH AF + CALL InitFPages + LD HL,LineBuffer+1 ; ப + EXX + LD HL,LineBuffer+0x3F ; ASCII + EXX + LD A,(TempShift+3) ; ᬥ饭 + CALL PutHexNumb ; 砫 䠨 + LD A,(TempShift+2) + CALL PutHexNumb + LD A,(TempShift+1) + CALL PutHexNumb + LD A,(TempShift) + CALL PutHexNumb + LD (HL),":" + INC L + INC L +PrnHLoop CALL TestFPages + LD A,(DE) + INC DE + PUSH AF + CALL PutHexNumb + POP AF + INC L + EXX + CP 0x20 + JR NC,.L1 + LD A,"." +.L1 LD (HL),A + INC L + EXX + INC IXL + LD A,IXL + CP 0x04 + JR Z,.PrHNx1 + CP 0x08 + JR Z,.PrHNx1 + CP 0x0C + JR NZ,.L2 +.PrHNx1 INC L +.L2 DJNZ PrnHLoop + POP AF + SETPORT WINSP.CPU1,,0 + LD A,0x10 + SUB IXL + JR Z,.FillP2 + LD B,A + LD C,0x20 +.FillP1 LD (HL),C + INC L + LD (HL),C + INC L + INC L + EXX + LD (HL),0x20 + INC L + EXX + INC IXL + LD A,IXL ; 業 2 ஡ + CP 0x04 + JR Z,.FlPNx1 + CP 0x08 + JR Z,.FlPNx1 + CP 0x0C + JR NZ,.L3 +.FlPNx1 INC L +.L3 DJNZ .FillP1 +.FillP2 LD HL,LineBuffer + LD B,0x50 +PrnHEX LD A,(HL) + INC HL + CALL FVPrintCHAR + LD A,0x01 + RET C + DJNZ PrnHEX + LD A,0x0D + CALL FVPrintCHAR + RET C + LD A,0x0A + CALL FVPrintCHAR + RET + +FVPrintCHAR LD IXL,A + PUSH IX + PUSH HL + PUSH DE + PUSH BC + EXX + PUSH DE + SPMOUSE MOUSEF.READ_STATE + BIT 0,A + JR Z,.PrnCH1 + LD IX,PrintTab + CALL JUMPS.TestCoords + JR C,.PrnCH2 +.PrnCH1 + SPDSS DSSF.SCANKEY + LD A,E +.PrnCH2 POP DE + EXX + POP BC + POP DE + POP HL + POP IX + RET C + JR Z,FVPrnCHAR + CP 0x1B + SCF + RET Z + RES 5,A + CP "S" + JR NZ,FVPrnCHAR +FVStopPrint SCF + RET + +FVPrnCHAR PUSH HL + PUSH DE + PUSH BC + EXX + PUSH DE + LD A,IXL + SPDSS DSSF.PRINT + POP DE + LD A,B + EXX + POP BC + POP DE + POP HL + RET NC + HALT + JR FVPrintCHAR + +PrintTab DEFW 0x011C,0x0164,0x0080,0x008E,0x01,0x0000,FVStopPrint,0x0000 + DEFW 0x8000 + +FVNxtPrnProc LD A,E + OR A + RET NZ + PUSH HL + PUSH DE + PUSH BC + EXX + PUSH DE + LD IX,ProcessPrn + LD L,(IX+PROC.CURL1) + LD H,(IX+PROC.CURH1) + INC HL + LD (IX+PROC.CURL1),L + LD (IX+PROC.CURH1),H + LD A,H + OR L + JR NZ,.NxtProc + LD L,(IX+PROC.CURL2) + LD H,(IX+PROC.CURH2) + INC HL + LD (IX+PROC.CURL2),L + LD (IX+PROC.CURH2),H +.NxtProc CALL JUMPS.PrnProcess + POP DE + EXX + POP BC + POP DE + POP HL + RET + +EndJob: PUSH AF + PUSH HL + PUSH BC + EXX + PUSH DE + ld a,0x0C + CALL FVPrintCHAR + jr c,.print_cancel + ld a,0x1B + CALL FVPrintCHAR + jr c,.print_cancel + ld a,0x40 + CALL FVPrintCHAR + jr c,.print_cancel + POP DE + EXX + POP BC + POP HL + POP AF + ret + +.print_cancel: POP DE + EXX + POP BC + POP HL + POP AF + SCF + RET + +ProcessPrn DEFW 0x00BA + DEFW 0x0071 + DEFW 0x010C + DEFW 0x0000 + DEFW 0x0000 + DEFW 0x0000 + DEFW 0x0000 + DEFW 0x0000 + DEFW 0x0000 + DEFB 0x4F diff --git a/plugins/fnviewer/fvtext.a80 b/plugins/fnviewer/fvtext.a80 new file mode 100644 index 0000000..154c095 --- /dev/null +++ b/plugins/fnviewer/fvtext.a80 @@ -0,0 +1,780 @@ + +; LAST UPDATE: 25.03.2025 savelij + +;[]---------------------------------------------------------[] +PrnASCIIpage LD HL,PrintVProc + PUSH HL + LD HL,(FileShift) + LD (TempShift),HL + LD HL,(FileShift+2) + LD (TempShift+2),HL + LD B,0x1C +PrnASCIIlp PUSH BC + CALL PutASCIIline ;뢮 ப ࠭ + POP BC + JR C,FillASCIIdn ;CY-稫 + LD A,B + ADD A,0x08 + LD B,A + CP 0xE4 + JR NZ,PrnASCIIlp + LD HL,(TempShift) + LD (FVNextShift),HL + LD HL,(TempShift+2) + LD (FVNextShift+2),HL + SUB A + LD (EmptyLines),A + RET + +;楤 ⪨ ࠭ +FillASCIIdn LD A,0xE4 + SUB B + LD (FLenASC),A + JR Z,FASCIIe ;Z- ⪨ + LD A,B + LD (FPosASC),A + MAKEWINDOW WINSUBOBJ.WOBIND + W_FILL 0,0,640,0,COLORI.PANEL + W_END +FLenASC EQU $-4 +FPosASC EQU $-8 + +FASCIIe LD HL,(TempShift) + LD (FVNextShift),HL + LD HL,(TempShift+2) + LD (FVNextShift+2),HL + LD A,(FLenASC) + SRL A + SRL A + SRL A + LD (EmptyLines),A + RET + +;楤 ⥪.ப ࠭ +PutASCIIline LD IXH,B + LD A,(ASCIImode) + OR A + LD C,0x50 + JR Z,.L1 + LD C,0xF0 +.L1 PUSH BC + LD HL,(FileLenght) + LD BC,(TempShift) + SBC HL,BC + EX DE,HL + LD HL,(FileLenght+2) + LD BC,(TempShift+2) + SBC HL,BC + POP BC + RET C + LD B,0xF0 + JR NZ,PutLine + LD A,D + OR A + JR NZ,PutLine + OR E + SCF + RET Z + LD B,E +PutLine LD HL,LineBuffer + GETPORT WINSP.CPU1 + PUSH AF + CALL InitFPages +PutLnLoop CALL TestFPages + LD A,(DE) + INC DE + CP 0x0D + JR NZ,PutLine1 + CALL TestFPages + LD A,(DE) + CP 0x0A + JR NZ,PutLnExit + INC DE + JR PutLnExit + +PutLine1 CP 0x0A + JR Z,PutLnExit + CP 0x09 + JR NZ,PutLine2 +PutTab LD (HL),0x20 + INC L + LD A,L + CP C + JR Z,PutLineWrap;PutLine3 + AND 0x07 + JR NZ,PutTab + JR PutLine3 + +PutLine2 CALL DecodeSymbol ; NOP, ᫨ 㦭 ४஢ + LD (HL),A + LD A,L + CP C + JR Z,PutLineWrap;PutLine3 + INC L +PutLine3 DJNZ PutLnLoop + INC DE +PutLineWrap: dec de + CALL TestFPages + LD A,(DE) + CP 0x0D + JR NZ,PutLnExit + INC DE + CALL TestFPages + LD A,(DE) + CP 0x0A + JR NZ,PutLnExit + INC DE +PutLnExit POP AF + SETPORT WINSP.CPU1,,0 + CALL GetFPages + LD A,(ASCIImode) + OR A + JR NZ,PutLineUWR + LD A,0x50 + SUB L + JR Z,PutLine4 + LD B,A + LD A,0x20 +.L1 LD (HL),A + INC L + DJNZ .L1 +PutLine4 LD HL,LineBuffer + LD DE,0x0000 + LD B,0x50 + LD C,IXH + LD A,COLORP.PANEL + COLORI.FILES + CALL JUMPS.PrnTxtLnNormC + OR A + RET + +DecodeSymbol: CP 0x80 + RET C + PUSH HL + SUB 0x80 + LD HL,Table866 +.table EQU $-2 + ADD A,L + LD L,A + JR NC,.L1 + INC H +.L1 LD A,(HL) + POP HL + RET + +PutLineUWR LD C,IXH + LD A,L + LD (SaveUW),A + LD A,(ASCIIaddX) + ADD A,0x50 + SUB L + JR Z,PutLnUW1 + JR C,PutLnUW1 + LD B,A + LD A,0x20 +.L1 LD (HL),A + INC L + DJNZ .L1 +PutLnUW1 LD E,0x00 + LD B,0x50 + LD H,HIGH (LineBuffer) + LD A,(ASCIIaddX) + LD L,A ;ᬥ饭 砫 ப + OR A + JR Z,PutLnUW2 + PUSH HL + PUSH BC + LD HL,SpaceLeft + LD D,0x00 + LD B,0x01 + LD A,COLORP.PANEL + COLORI.YELLOW ;(Yellow) + CALL JUMPS.PrnTxtLnNormC + POP BC + POP HL + INC L + DEC B + LD A,(ASCIIaddX) + LD E,0x08 +PutLnUW2 LD D,A + LD A,0x00 +SaveUW EQU $-1 + SUB D + JR C,PutLnUW3 + CP 0x51 + JR C,PutLnUW3 + PUSH HL + PUSH DE + PUSH BC + LD HL,SpaceRight + LD DE,0x0278 + LD B,0x01 + LD A,COLORP.PANEL + COLORI.YELLOW ;(Yellow) + CALL JUMPS.PrnTxtLnNormC + POP BC + POP DE + POP HL + DEC B +PutLnUW3 LD D,0x00 + LD A,COLORP.PANEL + COLORI.FILES ;(Yellow) + CALL JUMPS.PrnTxtLnNormC + OR A + RET + +SpaceLeft DEFB 0x1B +SpaceRight DEFB 0x1A + +;[]==========================================================[] +ChCodePage: LD HL,ViewerBegin + EX (SP),HL + LD A,(CodePage) + INC A + CP 3 + JR C,.L1 + XOR A +.L1 LD (CodePage), A + RET + +;[]==========================================================[] +ChASCIImode LD HL,ViewerBegin + EX (SP),HL + LD A,(ASCIImode) + XOR 0x01 + LD (ASCIImode),A + RET Z + SUB A + LD (ASCIIaddX),A + RET + +;[]----------------------------------------------------------[] +ScrollLeft LD A,(ASCIImode) + OR A + RET Z + LD A,(ASCIIaddX) + OR A + RET Z + DEC A + LD (ASCIIaddX),A + CALL PrnASCIIpage + RET + +;[]----------------------------------------------------------[] +ScrollRght LD A,(ASCIImode) + OR A + RET Z + LD A,(ASCIIaddX) + CP 0xA0 + RET Z + INC A + LD (ASCIIaddX),A + CALL PrnASCIIpage + RET + +;[]----------------------------------------------------------[] +THome LD A,(ASCIImode) + OR A + RET Z + LD A,(ASCIIaddX) + OR A + RET Z + SUB A + LD (ASCIIaddX),A + CALL PrnASCIIpage + RET + +;[]----------------------------------------------------------[] +TEnd LD A,(ASCIImode) + OR A + RET Z + LD A,(ASCIIaddX) + CP 0xA0 + RET Z + LD A,0xA0 + LD (ASCIIaddX),A + CALL PrnASCIIpage + RET + +;[]----------------------------------------------------------[] +TLineUpMs CALL TLineUp + RET C + LD B,0x0A +TUpMs1 PUSH BC + SPMOUSE MOUSEF.READ_STATE + POP BC + BIT 0,A + RET Z + HALT + DJNZ TUpMs1 +TUpMs2 CALL TLineUp + RET C + SPMOUSE MOUSEF.READ_STATE + BIT 0,A + RET Z + JR TUpMs2 +TLineUp LD HL,(FileShift) + LD DE,(FileShift+2) + LD A,H + OR L + OR D + OR E + SCF + RET Z + CALL SearchUp + LD (FileShift),HL + LD (FileShift+2),DE + LD (TempShift),HL + LD (TempShift+2),DE + LD HL,EmptyLines + LD A,(HL) + DEC (HL) + OR A + JR NZ,TLineU1 + INC (HL) + LD HL,(FVNextShift) + LD DE,(FVNextShift+2) + CALL SearchUp + LD (FVNextShift),HL + LD (FVNextShift+2),DE +TLineU1 CALL ScrollSCRdown + LD B,0x1C + CALL PutASCIIline ; ⠥ ப + CALL PrintVProc + OR A + RET + +;[]----------------------------------------------------------[] +TLineDwnMs CALL TLineDwn + RET C + LD B,0x0A +TDnMs1 PUSH BC + SPMOUSE MOUSEF.READ_STATE + POP BC + BIT 0,A + RET Z + HALT + DJNZ TDnMs1 +TDnMs2 CALL TLineDwn + RET C + SPMOUSE MOUSEF.READ_STATE + BIT 0,A + RET Z + JR TDnMs2 + +TLineDwn LD HL,(FVNextShift) + LD DE,(FVNextShift+2) + LD BC,(FileLenght) + OR A + SBC HL,BC + LD BC,(FileLenght+2) + EX DE,HL + SBC HL,BC + CCF + RET C + LD HL,(FileShift) + LD DE,(FileShift+2) + CALL SearchDown + LD (FileShift),HL + LD (FileShift+2),DE + LD HL,(FVNextShift) + LD DE,(FVNextShift+2) + LD (TempShift),HL + LD (TempShift+2),DE + CALL ScrollSCRup + LD B,0xDC + CALL PutASCIIline ; ⠥ ப + LD HL,(TempShift) + LD DE,(TempShift+2) + LD (FVNextShift),HL + LD (FVNextShift+2),DE + CALL PrintVProc + OR A + RET + +;[]----------------------------------------------------------[] +TPageUpMs CALL TPageUp + RET C + LD B,0x0A +TUpMs1p PUSH BC + SPMOUSE MOUSEF.READ_STATE + POP BC + BIT 0,A + RET Z + HALT + DJNZ TUpMs1p +TUpMs2p CALL TPageUp + RET C + SPMOUSE MOUSEF.READ_STATE + BIT 0,A + RET Z + JR TUpMs2p + +TPageUp LD HL,(FileShift) + LD DE,(FileShift+2) + LD A,H + OR L + OR D + OR E + SCF + RET Z + LD B,0x19 +TPageU1 PUSH BC + CALL SearchUp + POP BC + JR C,TPageU2 + DJNZ TPageU1 +TPageU2 LD (FileShift),HL + LD (FileShift+2),DE + CALL PrnASCIIpage + OR A + RET + +;[]----------------------------------------------------------[] +TPageDwnMs CALL TPageDwn + RET C + LD B,0x0A +TDnMs1p PUSH BC + SPMOUSE MOUSEF.READ_STATE + POP BC + BIT 0,A + RET Z + HALT + DJNZ TDnMs1p +TDnMs2p CALL TPageDwn + RET C + SPMOUSE MOUSEF.READ_STATE + BIT 0,A + RET Z + JR TDnMs2p + +TPageDwn LD HL,(FVNextShift) + LD DE,(FVNextShift+2) + LD BC,(FileLenght) + OR A + SBC HL,BC + LD BC,(FileLenght+2) + EX DE,HL + SBC HL,BC + CCF + RET C + LD HL,(FVNextShift) + LD (FileShift),HL + LD HL,(FVNextShift+2) + LD (FileShift+2),HL + CALL PrnASCIIpage + OR A + RET + +;[]----------------------------------------------------------[] +TBegFile LD HL,JUMPS.ResFire + PUSH HL + LD HL,(FileShift) + LD DE,(FileShift+2) + LD A,H + OR D + OR L + OR E + RET Z + LD HL,0x0000 + LD (FileShift),HL + LD (FileShift+2),HL + CALL PrnASCIIpage + RET + +;[]----------------------------------------------------------[] +TEndFile LD HL,JUMPS.ResFire + PUSH HL + LD HL,(FVNextShift) + LD DE,(FVNextShift+2) + LD BC,(FileLenght) + OR A + SBC HL,BC + LD BC,(FileLenght+2) + EX DE,HL + SBC HL,BC + RET NC + LD HL,(FileLenght) + LD DE,(FileLenght+2) + LD B,0x19 +TEndFl1 PUSH BC + CALL SearchUp + POP BC + RET C + DJNZ TEndFl1 + LD (FileShift),HL + LD (FileShift+2),DE + CALL PrnASCIIpage + RET + +;[]==========================================================[] +SearchUp LD B,0xF0 + LD A,D + OR E + JR NZ,.SearchUpBeg + LD A,H + OR A + JR NZ,.SearchUpBeg + OR L + SCF + RET Z + LD B,L +.SearchUpBeg + GETPORT WINSP.CPU1 + PUSH AF + PUSH HL + PUSH DE + LD A,H ;뤥塞 ࠭ + RLA + RL E + RLA + RL E + LD D,HIGH (PagesList) + LD A,(DE) ;.࠭ + SETPORT WINSP.CPU1,,0 + RES 7,H + SET 6,H + LD C,0x00 + LD IXL,C + INC C + DEC B + DEC HL + BIT 6,H + JR NZ,.SrchUp0 + DEC E + LD A,(DE) + SETPORT WINSP.CPU1,,0 + SET 6,H +.SrchUp0 LD A,(HL) + CP 0x0A + JR NZ,.L3 + LD A,B + OR A + JR Z,.SrchUpEx + INC C + DEC B + DEC HL + BIT 6,H + JR NZ,.SrchUp1 + DEC E + LD A,(DE) + SETPORT WINSP.CPU1,,0 + SET 6,H +.SrchUp1 LD A,(HL) +.L3 CP 0x0D + JR Z,.SearchUpLp + DEC C + INC B + INC HL + BIT 7,H + JR Z,.SearchUpLp1 + INC E + LD A,(DE) + SETPORT WINSP.CPU1,,0 + RES 7,H + SET 6,H + JR .SearchUpLp1 + +.SearchUpLp LD A,B + OR A + JR Z,.SrchUpEx +.SearchUpLp1 DEC HL + BIT 6,H + JR NZ,.SrchUp2 + DEC E + LD A,(DE) + SETPORT WINSP.CPU1,,0 + SET 6,H +.SrchUp2 LD A,(HL) + CP 0x0A + JR Z,.SrchUpEx + CP 0x0D + JR Z,.SrchUpEx + CP 0x09 + JR NZ,.L1 + ld a,7 + add a,c + ld c,a + ld a,7 + add a,IXL + ld IXL,a + ld a,b + sub 7 + jr z,.SrchUpEx + jr c,.SrchUpEx +.L1 INC IXL + INC C + DJNZ .SearchUpLp1 +.SrchUpEx POP DE + POP HL + LD B,0x00 + OR A + SBC HL,BC + LD C,B + EX DE,HL + SBC HL,BC + EX DE,HL + POP AF + SETPORT WINSP.CPU1,,0 + LD A,(ASCIImode) + OR A + RET NZ + LD A,IXL + CP 0x51 + CCF + RET NC + LD C,0x50 +.SrchUpEx0 ADD HL,BC + JR NC,.L2 + INC DE +.L2 SUB 0x50 + CP 0x51 + JR NC,.SrchUpEx0 + OR A + RET + +;[]----------------------------------------------------------[] +SearchDown LD (SrchHL),HL + LD (SrchDE),DE + LD A,(ASCIImode) + OR A + LD B,0x50 + JR Z,.L1 + LD B,0xF0 +.L1 PUSH BC + LD C,L + LD B,H + LD HL,(FileLenght) + OR A + SBC HL,BC + LD C,E + LD B,D + EX DE,HL + LD HL,(FileLenght+2) + SBC HL,BC + POP BC + RET C + JR NZ,.SearchDnBeg + LD A,D + OR A + JR NZ,.SearchDnBeg + OR E + SCF + RET Z + LD B,E +.SearchDnBeg + LD HL,0x0000 +SrchHL EQU $-2 + LD DE,0x0000 +SrchDE EQU $-2 + GETPORT WINSP.CPU1 + PUSH AF + PUSH HL + PUSH DE + LD A,H ;뤥塞 ࠭ + RLA + RL E + RLA + RL E + LD D,HIGH (PagesList) + LD A,(DE) ;.࠭ + SETPORT WINSP.CPU1,,0 + RES 7,H + SET 6,H + LD C,0x00 + DEC HL +SearchDnLp INC C + INC HL + BIT 7,H + JR Z,SrchDn0 + INC E + LD A,(DE) + SETPORT WINSP.CPU1,,0 + RES 7,H + SET 6,H +SrchDn0 LD A,(HL) + CP 0x0D + JR NZ,SrchE1 + INC HL + BIT 7,H + JR Z,SrchDn1 + INC E + LD A,(DE) + SETPORT WINSP.CPU1,,0 + RES 7,H + SET 6,H +SrchDn1 LD A,(HL) + CP 0x0A + JR NZ,SrchEEx + INC C + JR SrchEEx + +SrchE1 CP 0x0A + JR Z,SrchEEx + DJNZ SearchDnLp + INC HL + BIT 7,H + JR Z,SrchDnE + INC E + LD A,(DE) + SETPORT WINSP.CPU1,,0 + RES 7,H + SET 6,H +SrchDnE LD A,(HL) + CP 0x0D + JR NZ,SrchEEx + INC C + INC HL + BIT 7,H + JR Z,SrchDE1 + INC E + LD A,(DE) + SETPORT WINSP.CPU1,,0 + RES 7,H + SET 6,H +SrchDE1 LD A,(HL) + CP 0x0A + JR NZ,SrchEEx + INC C +SrchEEx POP DE + POP HL + LD B,0x00 + ADD HL,BC + LD C,B + EX DE,HL + ADC HL,BC + EX DE,HL + POP AF + SETPORT WINSP.CPU1,,0 + OR A + RET + +Table866: db 0x3F,0x3F,0x27,0x3F,0x22,0x3A,0xC5,0xD8 + db 0x3F,0x25,0x3F,0x3C,0x3F,0x3F,0x3F,0x3F + db 0x3F,0x27,0x27,0x22,0x22,0x07,0x2D,0x2D + db 0x3F,0x54,0x3F,0x3E,0x3F,0x3F,0x3F,0x3F + db 0xFF,0xF6,0xF7,0x3F,0xFD,0x3F,0xB3,0x15 + db 0xF0,0x63,0xF2,0x3C,0xBF,0x2D,0x52,0xF4 + db 0xF8,0x2B,0x49,0x69,0x3F,0xE7,0x14,0xFA + db 0xF1,0xFC,0xF3,0x3E,0x3F,0x3F,0x3F,0xF5 + db 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87 + db 0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F + db 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97 + db 0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F + db 0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7 + db 0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF + db 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7 + db 0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF +; koi8-r +TableKoi: db 0xC4,0xB3,0xDA,0xBF,0xC0,0xD9,0xC3,0xB4 + db 0xC2,0xC1,0xC5,0xDF,0xDC,0xDB,0xDD,0xDE + db 0xB0,0xB1,0xB2,0xF4,0xFE,0xF9,0xFB,0xF7 + db 0xF3,0xF2,0xFF,0xF5,0xF8,0xFD,0xFA,0xF6 + db 0xCD,0xBA,0xD5,0xF1,0xD6,0xC9,0xB8,0xB7 + db 0xBB,0xD4,0xD3,0xC8,0xBE,0xBD,0xBC,0xC6 + db 0xC7,0xCC,0xB5,0xF0,0xB6,0xB9,0xD1,0xD2 + db 0xCB,0xCF,0xD0,0xCA,0xD8,0xD7,0xCE,0xFC + db 0xEE,0xA0,0xA1,0xE6,0xA4,0xA5,0xE4,0xA3 + db 0xE5,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE + db 0xAF,0xEF,0xE0,0xE1,0xE2,0xE3,0xA6,0xA2 + db 0xEC,0xEB,0xA7,0xE8,0xED,0xE9,0xE7,0xEA + db 0x9E,0x80,0x81,0x96,0x84,0x85,0x94,0x83 + db 0x95,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E + db 0x8F,0x9F,0x90,0x91,0x92,0x93,0x86,0x82 + db 0x9C,0x9B,0x87,0x98,0x9D,0x99,0x97,0x9A diff --git a/plugins/help/build.bat b/plugins/help/build.bat new file mode 100644 index 0000000..7d0c35c --- /dev/null +++ b/plugins/help/build.bat @@ -0,0 +1,21 @@ + +@echo off + +if not exist tmp md tmp +set path=d:\yad\svn\pentevo\tools\asl\bin\;d:\yad\svn\pentevo\tools\mhmt\;d:\yad\sprinter_src\tools\ +set includes=d:\yad\svn\pentevo\rom;d:\yad\sprinter_src\;d:\yad\sprinter_src\flexnav\src\ + +asl -U -L -C -x -olist tmp\header.lst -i %includes% header.a80 || goto error +p2bin header.p ..\help.flx -r $-$ -k + +echo ######################## +echo # -= End Compile Ok =- # +echo ######################## +goto exit + +:error +echo ####################### +echo # -= Error Compile =- # +echo ####################### + +:exit diff --git a/plugins/help/header.a80 b/plugins/help/header.a80 new file mode 100644 index 0000000..929ab4b --- /dev/null +++ b/plugins/help/header.a80 @@ -0,0 +1,30 @@ + +; LAST UPDATE: 26.03.2025 savelij + + include macros.a80 + include fn_const.a80 + include fn_macros.a80 + include fn_version.a80 + include accel_sp.a80 + include ports_sp.a80 + include define_sp.a80 + include macros_sp.a80 + include dss_sp.a80 + include bios_sp.a80 + include mouse_sp.a80 + +WINSP_CPU EQU WINSP.CPU1 +WINSP_ADR EQU 0x4000 + + org PluginOrg ; #C000 - Header lenght +; Flex Navigator plugin header +PluginStart: db "FLX-PLUG" ; Id + dw 0x0000 ; LoadOffset + dw 0x0000 ; EntryOffset + db 0x00 ; PluginMode + db 0x00,0x00,0x00 ; Reserved + +PluginEntry: include help.a80 + +HelpText: include help_t.a80 +HelpTextEnd: diff --git a/plugins/help/help.a80 b/plugins/help/help.a80 new file mode 100644 index 0000000..a4f39af --- /dev/null +++ b/plugins/help/help.a80 @@ -0,0 +1,401 @@ + +; LAST UPDATE: 23.04.2025 savelij + +;[]==========================================================[] +HelpR LD A,0x01 + LD (JUMPS.CMOSPrint),A + SETPORT WINSP.Y_PORT,0xC0 + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 64,16,512,224 + W_FILL 4,2,504,10,COLORI.BLACK + W_TEXT 248,3,COLORI.WHITE,"Help" + W_BUTTON 220,206,72,14 + W_TEXT 250,209,COLORP.HIGHGRAY,"Ok" + W_BORDER 8,16,496,187 + W_FILL 10,17,476,185,COLORI.WHITE + W_ICONUPARROW 486,17 + W_ICONDOWNARROW 486,194 + W_END + CALL InitHelpTxt + CALL PrnHelpPg + CALL JUMPS.ResFire +HelpLoop LD IX,HelpTab + CALL JUMPS.TestCoords + SPDSS DSSF.SCANKEY + JR Z,HelpLoop + LD A,B + OR A + JR NZ,HelpLoop + LD A,E ; -ASCII + CP 0x1B ; Esc + JP Z,HelpExit + CP 0x0D ; Enter + JP Z,HelpExit + RES 5,A + CP 'O' + JP Z,HelpExit + OR A + JR NZ,HelpLoop ; 㭪樮. + LD HL,HelpLoop + PUSH HL + LD A,D + CP SC.X8 ; ५ + JP Z,HLineUp + CP SC.X2 ; ५ + JP Z,HLineDown + CP SC.X9 ; PageUp + JP Z,HPageUp + CP SC.X3 ; PageDown + JP Z,HPageDown + CP SC.X7 ; Home + JP Z,HHome + CP SC.X1 ; End + JP Z,HEnd + RET + +HelpExit + WINDOWCLOSE + SUB A + LD (JUMPS.CMOSPrint),A + RET + +;[]----------------------------------------------------------[] +InitHelpTxt LD HL,HelpText + LD (PageShift),HL + LD HL,0x0000 + LD (CHLine),HL + LD HL,HelpText + LD DE,0x0000 +InHelp1 LD BC,0x1000 + SUB A + CPIR + INC DE + LD A,(HL) + INC A + JR NZ,InHelp1 + DEC DE + LD (EHLines),DE + LD IX,HelpVBar + JP JUMPS.InitScrollBar + +PageShift DW 0 +NextShift DW 0 +HelpVBar DW 550 ; X ஫ + DW 41 ; Y ஫ + DW 169 ; Max ஫ + DW 0 ; ⥪. ஫ + DW HBarUp ; 祩 BarLeft + DW HBarDn ; 祩 BarRight + DW 23 ; - ப ࠭ +EHLines DW 0 ; 饥 - ப +CHLine DW 0 ; ࢠ ப ࠭ + +;[]----------------------------------------------------------[] +PrnHelpPg LD HL,(PageShift) + LD B,34 +PrnHPg1 PUSH BC + CALL ClearHRect + LD DE,80 + LD C,B + LD B,D + LD A,(HL) + INC A + LD A,240 + CALL NZ,JUMPS.PrnTxtLnIFF + POP BC + LD A,B + ADD A,8 + LD B,A + CP 218 + JR NZ,PrnHPg1 + LD (NextShift),HL + LD IX,HelpVBar + JP JUMPS.PrnVScrBar + +ClearHRect PUSH HL + PUSH BC + GETPORT WINSP_CPU + PUSH AF + DI + SETPORT WINSP_CPU,0x50 + LD HL,WINSP_ADR + 40 + LD IXL,B + LD D,COLORP.WHITE + COLORI.WHITE + ACCEL ACCELCMD.SET_BUFFER + LD A,0xE8 + ACCEL ACCELCMD.OFF + LD B,0x08 +ClHRect LD A,IXL + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.FILL + LD (HL),D + ACCEL ACCELCMD.OFF + INC IXL + DJNZ ClHRect + POP AF + SETPORT WINSP_CPU,,0 + SETPORT WINSP.Y_PORT,0xC0 + EI + POP BC + POP HL + RET + +;[]----------------------------------------------------------[] +HHome LD HL,(PageShift) + LD DE,HelpText + OR A + SBC HL,DE + RET Z + LD (PageShift),DE + LD HL,0x0000 + LD (CHLine),HL + JP PrnHelpPg + +HEnd LD HL,(NextShift) + LD A,(HL) + INC A + RET Z + LD HL,HelpTextEnd + DEC HL + DEC HL + PUSH HL + LD DE,HelpText + OR A + SBC HL,DE + LD C,L + LD B,H + POP HL + LD DE,(EHLines) + DEC HL + LD A,0x17 +.L1 EX AF,AF' + SUB A + DEC DE + CPDR + JP PO,.L2 + EX AF,AF' + DEC A + JR NZ,.L1 + INC HL +.L2 INC HL + LD (PageShift),HL + INC DE + LD (CHLine),DE + JP PrnHelpPg + +HLineUp LD HL,(PageShift) + LD DE,HelpText + OR A + SBC HL,DE + RET Z + LD C,L + LD B,H + ADD HL,DE + DEC HL + SUB A + CPD + JP PO,HLnUp0 + CPDR + INC HL +HLnUp0 INC HL + LD (PageShift),HL + LD DE,HelpTextEnd + DEC DE + EX DE,HL + OR A + SBC HL,DE + EX DE,HL + LD C,E + LD B,D + LD A,0x17 +HLnUp1 EX AF,AF' + SUB A + CPIR + JP PO,HLnUp2 + EX AF,AF' + DEC A + JR NZ,HLnUp1 +HLnUp2 LD (NextShift),HL + LD HL,(CHLine) + DEC HL + LD (CHLine),HL + LD DE,0x222A + CALL ScrHELPDnUp + LD B,34 + CALL ClearHRect + LD HL,(PageShift) + LD DE,80 + LD C,B + LD B,D + LD A,(HL) + INC A + LD A,240 + CALL NZ,JUMPS.PrnTxtLnIFF + LD IX,HelpVBar + JP JUMPS.PrnVScrBar + +HLineDown LD HL,(NextShift) + LD A,(HL) + INC A + RET Z + PUSH HL + LD DE,HelpTextEnd + EX DE,HL + OR A + SBC HL,DE + EX DE,HL + LD C,E + LD B,D + SUB A + CPIR + LD (NextShift),HL + LD HL,(PageShift) + LD DE,HelpTextEnd + EX DE,HL + OR A + SBC HL,DE + EX DE,HL + LD C,E + LD B,D + SUB A + CPIR + LD (PageShift),HL + LD HL,(CHLine) + INC HL + LD (CHLine),HL + LD DE,0x2A22 + CALL ScrHELPDnUp + POP HL + LD B,210 + CALL ClearHRect + LD DE,80 + LD C,B + LD B,D + LD A,(HL) + INC A + LD A,240 + CALL NZ,JUMPS.PrnTxtLnIFF + LD IX,HelpVBar + JP JUMPS.PrnVScrBar + +; 室: +; D - Y 㤠 +; - Y 㤠 +ScrHELPDnUp + GETPORT WINSP_CPU + PUSH AF + DI + SETPORT WINSP_CPU,0x50 + LD HL,WINSP_ADR + 40 + LD B,0xE8 + ACCEL ACCELCMD.SET_BUFFER + LD A,0xB0 + ACCEL ACCELCMD.OFF +ScHelp1 LD A,D + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.COPY_VERT + LD A,(HL) + ACCEL ACCELCMD.OFF + LD A,E + SETPORT WINSP.Y_PORT,,0 + ACCEL ACCELCMD.COPY_VERT + LD (HL),A + ACCEL ACCELCMD.OFF + INC HL + DJNZ ScHelp1 + POP AF + SETPORT WINSP_CPU,,0 + SETPORT WINSP.Y_PORT,0xC0 + EI + RET + +HPageUpM CALL HPageUp + RET C + LD B,0x0A +HUpM1 PUSH BC + SPMOUSE MOUSEF.READ_STATE + POP BC + BIT 0,A + RET Z + HALT + DJNZ HUpM1 +HUpM2 CALL HPageUp + RET C + SPMOUSE MOUSEF.READ_STATE + BIT 0,A + RET Z + JR HUpM2 + +HPageUp LD HL,(PageShift) + LD DE,HelpText + OR A + SBC HL,DE + SCF + RET Z + LD C,L + LD B,H + ADD HL,DE + LD DE,(CHLine) + DEC HL + LD A,0x18 +.L1 EX AF,AF' + SUB A + DEC DE + CPDR + JP PO,.L2 + EX AF,AF' + DEC A + JR NZ,.L1 + INC DE + INC HL +.L2 INC HL + LD (PageShift),HL + LD (CHLine),DE + CALL PrnHelpPg + OR A + RET + +HPageDownM CALL HPageDown + RET C + LD B,0x0A +HDnM1 PUSH BC + SPMOUSE MOUSEF.READ_STATE + POP BC + BIT 0,A + RET Z + HALT + DJNZ HDnM1 +HDnM2 CALL HPageDown + RET C + SPMOUSE MOUSEF.READ_STATE + BIT 0,A + RET Z + JR HDnM2 + +HPageDown LD HL,(NextShift) + LD A,(HL) + INC A + SCF + RET Z + LD (PageShift),HL + LD HL,(CHLine) + LD DE,0x0017 + ADD HL,DE + LD (CHLine),HL + CALL PrnHelpPg + OR A + RET + +;[]==========================================================[] +HelpTab DW 550,566, 33, 41,%0000000000000011,0,HLineUp,0 + DW 550,566,210,218,%0000000000000011,0,HLineDown,0 + DW 550,566, 41, 0,%0000000000000000,0,HPageUpM,0 +HBarUp EQU $ - 10 + DW 550,566, 0,210,%0000000000000000,0,HPageDownM,0 +HBarDn EQU $ - 12 + DW 284,356,222,236,%0000000000100001,0,HelpExit,0 + DW 0, 64, 0,256,%0000000000100000,0,HelpExit,0 + DW 576,640, 0,256,%0000000000100000,0,HelpExit,0 + DW 0,640, 0, 16,%0000000000100000,0,HelpExit,0 + DW 0,640,240,256,%0000000000100000,0,HelpExit,0 + DW 0x8000 diff --git a/plugins/help/help_t.a80 b/plugins/help/help_t.a80 new file mode 100644 index 0000000..cac53e7 --- /dev/null +++ b/plugins/help/help_t.a80 @@ -0,0 +1,137 @@ + +; LAST UPDATE: 26.03.2025 savelij + + DB 0,0 + DB " Flex Navigator",0,0 + DB " version \{FLEX_VERS.NAVIGATOR}",0,0,0 + DB " Copyright (C) 2000, Enin Anton, St.-Petersburg, Russia",0 + DB " Copyright (C) 2023, Sprinter Team",0 + DB 0 + DB " All right reserved.",0,0,0,0 + DB " 㪮⢮ 짮⥫.",0,0,0,0 + DB " ",0 + DB " ",0,0," ",9 + DB " ",0," ",9 + DB " ",0," ",9 + DB " ",0," ",9 + DB " DOS",0," ",9 + DB " -File-",0," ",9 + DB " -Select-",0," ",9 + DB " -Option-",0," ",9 + DB " -View-",0," ",9 + DB " -Config-",0," ",9 + DB " -About-",0," ",9 + DB " ",0,0 + DB " ",0,0,0," ",9 + DB " ",0,0 + DB " Flex Navigator - ணࠬ ᯥ祭, ஥ ",0 + DB " ࠡ 묨 ଠ MS-DOS.",0,0,0," ",9 + DB " ",0,0 + DB " Flex Navigator ।⠢ ᮡ ਢ 䠩 ⨯ Norton",0 + DB "Commander ( PC) Commander DOS ( Sprinter'), ⮫쪮 믮 ",0 + DB "᪮ 䥩. ࠪ᪨ 㭪樨 䠩",0 + DB "窨 ࠡ DOS.",0 + DB " ᫨ , ⮡ Flex Navigator 稭 ᢮ ࠡ ᫥ 祭",0 + DB ", 䠩 SYSTEM.BAT 室 ய ",0 + DB ".",0,0,0," ",9 + DB " ",0,0 + DB " ।⠢ ᮡ 㣫㡫 ᯨ᪮ 䠩 ⥪饩",0 + DB "४ਨ ᮩ ப⪨. 室 㣮 ⢫",0 + DB " Tab. ⠬ 襩 Ctrl+U.",0,0 + DB " - 䠩",0 + DB " PageUp - ࠭ 䠩 ",0 + DB " PageDown - ࠭ 䠩 ।",0 + DB " Home - 砫 ᯨ᪠ 䠩",0 + DB " End - ᯨ᪠ 䠩",0 + DB " Alt+F1 - ᬥ ⥫ ",0 + DB " Alt+F2 - ᬥ ⥫ ࠢ ",0 + DB " Alt+F3 - ᬮ 䠩 ஥ ᬮ騪 䠩",0 + DB " Alt+F4 - ।஢ 䠩 ஥ ।஬ 䠩",0 + DB " Shift+F3 - 䠩 ᬮ",0 + DB " Shift+F4 - 䠩 ।஢",0 + DB " Ctrl+\\ - ୥ ⠫",0 + DB " F1 - ",0 + DB " F3 - ᬮ 䠩",0 + DB " F4 - ।஢ 䠩",0 + DB " F5 - ஢ 䠩()",0 + DB " F6 - २ 䠩",0 + DB " F8 - 㤠 䠩()",0 + DB " F9 - ப ",0 + DB " F10 - 室 DOS",0 + DB " Alt+Enter - ଠ 䠩",0 + DB " Ctrl+F9 - ᯥ 䠩 ਭ",0 + DB " + - ન஢ 㯯 䠩",0 + DB " - - ६ન஢ 㯯 䠩",0 + DB " * - ન஢",0 + DB " Ctrl+ - ન஢ 䠩",0 + DB " Ctrl- - ६ન஢ 䠩",0 + DB " Alt+F10 - ॢ ⠫",0 + DB " Ctrl+L - ଠ ⥪饬 ⥫",0 + DB " Ctrl+F1 - ⪨ ᯨ᮪ 䠩",0 + DB " Ctrl+F2 - ᯨ᮪ 䠩",0 + DB " Ctrl+F3 - ஢ ",0 + DB " Ctrl+F4 - ஢ ७",0 + DB " Ctrl+F5 - ஢ ⠬",0 + DB " Ctrl+F6 - ஢ ࠧ",0 + DB " Ctrl+F7 - ஢",0 + DB " Ctrl+F8 - ॢ ⠫",0 + DB " Ctrl+F10 - ᯨ᮪ 䠩",0 + DB " Ctrl+F11 - ᯨ᮪ ᪠ 䠩",0 + DB " Ctrl+F12 - 䨫 ᯨ᪠ 䠩",0 + DB " Alt+A..Z - 䠩",0,0,0," ",9 + DB " DOS",0,0 + DB " ப DOS 㦨 ᭮ ᪠ 䠩 ࠬࠬ. ",0 + DB "⨢樨 ப 室 ஬ ",0 + DB " ⭮ 㭪樮.",0,0 + DB " Ctrl+E - । ப",0 + DB " Ctrl+Enter - ப ⥪饥 䠩",0 + DB " Ctrl+[ - ப ",0 + DB " Ctrl+] - ப ࠢ ",0,0,0," ",9 + DB " - File -",0,0 + DB " File info... - ଠ ⥪饬 䠩 (, , ᮧ,",0 + DB " ਡ, 䠩)",0 + DB " Print - ᯥ 䠩 ਭ",0 + DB " Exit - 室 DOS",0,0,0," ",9 + DB " - Select -",0,0 + DB " Mark group... - ન஢ 㯯 䠩",0 + DB " Unmark group... - ६ન஢ 㯯 䠩",0 + DB " Mark all - ન஢ 䠩",0 + DB " Unmark all - ६ન஢ 䠩",0 + DB " Invert selection - 뤥",0,0,0," ",9 + DB " - Option -",0,0 + DB " Refresh tree - ॢ ⠫",0 + DB " Disk info... - ଠ ⥪饬 ⥫",0 + DB " System information... - ଠ ⥬",0,0,0," ",9 + DB " - View -",0,0 + DB " Brief - ⪨ ᯨ᮪ 䠩",0 + DB " Full - ஡ ᯨ᮪ 䠩",0 + DB " Tree - ॢ ⠫",0 + DB " All files - ᯨ᮪ 䠩",0 + DB " Execute files - ᯨ᮪ ᪠ 䠩",0 + DB " *.* - ⠭ 䨫 ᯨ᪠ 䠩",0 + DB " Filtr... - 䨫 ᯨ᪠ 䠩",0 + DB " Name - ஢ ",0 + DB " Extention - ஢ ७",0 + DB " Data - ஢ ",0 + DB " Size - ஢ ࠧ",0 + DB " Unsorted - ஢",0,0,0," ",9 + DB " - Config -",0,0 + DB " Setup... - ⠭ Flex Navigator",0,0,0," ",9 + DB " - About -",0,0 + DB " Version... - ଠ ᨨ Flex Navigator",0,0,0," ",9 + DB " ",0,0 + DB " 祭 譨 ணࠬ ࠡ 䠩 䠩",0 + DB "७. Flex Navigator ᯮ 䠩 ७:",0,0 + DB " fn.ext - 䠩 ७",0 + DB " fnview.ext - 䠩 ७ ମ",0 + DB " fnedit.ext - 䠩 ७ ।",0,0 + DB " ଠ 䠩 ७:",0,0 + DB " ext: [drive]:\\[path]\\filename.ext parametr",0,0 + DB " : ext - ७ 䠩",0 + DB " [drive]:\\[path]\\filename.ext - 砥 ணࠬ",0 + DB " parametr - !.! ⥪饥 䠩",0 + DB " !: ⥪饥 ன⢮",0 + DB " !\\ ⥪騩 ",0,0,0 + DB " ",0 + DB " , . ஢, tolik.trek@gmail.com",0 + DB 0xFF diff --git a/plugins/test/Q_START.ENG b/plugins/test/Q_START.ENG new file mode 100644 index 0000000..e7237ab --- /dev/null +++ b/plugins/test/Q_START.ENG @@ -0,0 +1,2 @@ +1. Copy TEST.FLX file to the Sprinter +2. Execute TEST.FLX in Flex Navigator. \ No newline at end of file diff --git a/plugins/test/build.bat b/plugins/test/build.bat new file mode 100644 index 0000000..e6e9708 --- /dev/null +++ b/plugins/test/build.bat @@ -0,0 +1,21 @@ + +@echo off + +if not exist tmp md tmp +set path=d:\yad\svn\pentevo\tools\asl\bin\;d:\yad\svn\pentevo\tools\mhmt\;d:\yad\sprinter_src\tools\ +set includes=d:\yad\svn\pentevo\rom;d:\yad\sprinter_src\;d:\yad\sprinter_src\flexnav\src\ + +asl -U -L -C -x -olist tmp\test.lst -i %includes% test.a80 || goto error +p2bin test.p ..\test.flx -r $-$ -k + +echo ######################## +echo # -= End Compile Ok =- # +echo ######################## +goto exit + +:error +echo ####################### +echo # -= Error Compile =- # +echo ####################### + +:exit diff --git a/plugins/test/test.a80 b/plugins/test/test.a80 new file mode 100644 index 0000000..e02a9d7 --- /dev/null +++ b/plugins/test/test.a80 @@ -0,0 +1,75 @@ + +; LAST UPDATE: 24.03.2025 savelij + +;// DEVICE ZXSPECTRUM128 +;[]=======================================================================[] +; +; test.z80 -- test plugin for Flex Navigator v1.xx +; +; Created by Anton Enin 08-June-2002 +; +; Last update 08-June-2002 +; +; Copyright (C) 2002 R-lab +; +; This program should be compiled using z80asm +; http://www.zxasm.narod.ru/ +; +;[]=======================================================================[] + +;// include '../fplugin.inc' + include macros.a80 + include fn_const.a80 + include fn_macros.a80 + include macros_sp.a80 + include dss_sp.a80 + + org PluginOrg ; #C000 - Header lenght +PluginStart: ; Flex Navigator plugin header + db "FLX-PLUG" ; Id + dw 0x0000 ; LoadOffset + dw PluginEntry ; EntryOffset + db 0x00 ; PluginMode + db 0x00, 0x00, 0x00 ; Reserved + +PluginEntry: + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 224,80,192,96 + W_FILL 4,2,184,10,COLORI.BLACK + W_TEXT 82,3,COLORI.WHITE,"Plugin" + W_TEXT 16,20,COLORI.BLUE + COLORP.HIGHGRAY,"Flex Navigator v1.xx Plugin Test" + W_TEXT 46,38,COLORP.HIGHGRAY,"Written by Enin Anton" + W_TEXT 64,48,COLORP.HIGHGRAY,"June, 8 2002" + W_TEXT 52,58,COLORP.HIGHGRAY,"Copyright (c) 2002" + W_BUTTON 60,74,72,14 + W_TEXT 88,77,COLORP.HIGHGRAY,"Ok" + W_END + call JUMPS.ResFire +.plugin_loop: + ld ix, PluginMouseTab + call JUMPS.TestCoords + SPDSS DSSF.SCANKEY + jr z, .plugin_loop + ld a, b + or a + jr nz, .plugin_loop + ld a, e + cp 0x1B + jr z, PluginExit + cp 0x0D + jr nz, .plugin_loop +PluginExit: + WINDOWCLOSE + or a ; cf = 0 + ret + +;[]=======================================================================[] +PluginMouseTab: + dw 0x011C, 0x0164, 0x009A, 0x00A8, 0x0021, 0x0000, PluginExit, 0x0000 + dw 0x0000, 0x00E0, 0x0000, 0x0100, 0x0020, 0x0000, PluginExit, 0x0000 + dw 0x01A0, 0x0280, 0x0000, 0x0100, 0x0020, 0x0000, PluginExit, 0x0000 + dw 0x0000, 0x0280, 0x0000, 0x0050, 0x0020, 0x0000, PluginExit, 0x0000 + dw 0x0000, 0x0280, 0x00B0, 0x0100, 0x0020, 0x0000, PluginExit, 0x0000 + dw 0x8000 +PluginEnd: +;// savebin 'Build/FN/Plugins/test.flx',PluginStart,PluginEnd-PluginStart diff --git a/rez2_fnconfig.a80 b/rez2_fnconfig.a80 new file mode 100644 index 0000000..26eb9e8 --- /dev/null +++ b/rez2_fnconfig.a80 @@ -0,0 +1,712 @@ + +; LAST UPDATE: 24.03.2025 savelij + +PALITRA.RESERV EQU PALETTE + 0x34 + +;[]==========================================================[] +SetupR + SETPORT WINSP.Y_PORT,0xC0 + LD HL,SetInvert + PUSH HL + LD HL,PALETTE + LD DE,TempPALETTE + LD BC,0x0040 + LDIR + LD A,(SavePanels) + LD (SaveSav+1),A + OR A + LD A,0xFE + JR Z,.L1 + INC A +.L1 LD (SaveFlg),A + SUB A + LD (SaveFlag),A + LD A,(AutoActivatePanel) + LD (AutoActivatePanelFlag),A + OR A + LD A,0xFF + JR Z,.L2 + DEC A +.L2: LD (ActivateFlg),A + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 96,64,448,142 +; W_MAIN 32,32,448,142 + W_FILL 4,2,440,10,COLORI.BLACK + W_TEXT 208,3,COLORI.WHITE,"Setup" + W_BORDER 8,18,144,53 + W_FILL 10,19,140,51,COLORI.WHITE + W_TEXT 14,21,COLORP.WHITE,"Panel" + W_TEXT 14,29,COLORP.WHITE,"Files" + W_TEXT 14,37,COLORP.WHITE,"Selected files" + W_TEXT 14,45,COLORP.WHITE,"Invert background" + W_TEXT 14,53,COLORP.WHITE,"Invert foreground" + W_TEXT 14,61,COLORP.WHITE,"Invert foreground (select)" + W_TEXT 164,24,COLORP.HIGHGRAY,"R:" + W_BORDER 176,22,164,10 + W_ICONLEFTARROW 178,23 + W_ICONRIGHTARROW 322,23 + W_TEXT 164,40,COLORP.HIGHGRAY,"G:" + W_BORDER 176,38,164,10 + W_ICONLEFTARROW 178,39 + W_ICONRIGHTARROW 322,39 + W_TEXT 164,56,COLORP.HIGHGRAY,"B:" + W_BORDER 176,54,164,10 + W_ICONLEFTARROW 178,55 + W_ICONRIGHTARROW 322,55 + W_BORDER 372,23,64,40 + W_HORIZLINE 4,75,440 + W_BORDER 16,81,20,11 + W_FILL 18,82,16,9,COLORI.WHITE + W_TEXT 20,83,COLORP.WHITE,"\0" +ActivateFlg EQU $-2 + W_TEXT 40,84,COLORP.HIGHGRAY,"activate panel in which changed drive" + W_BORDER 16,99,20,11 + W_FILL 18,100,16,9,COLORI.WHITE + W_TEXT 20,101,COLORP.WHITE,"\0" +SaveFlg EQU $-2 + W_TEXT 40,102,COLORP.HIGHGRAY,"save Information about panels" + W_BUTTON 360,98,72,14 + W_TEXT 384,101,COLORP.HIGHGRAY,"Save" + W_HORIZLINE 4,115,440 + W_BUTTON 272,120,72,14 + W_TEXT 292,123,COLORP.HIGHGRAY,"Cancel" + W_BUTTON 360,120,72,14 + W_TEXT 390,123,COLORP.HIGHGRAY,"Ok" + W_END + + SUB A + LD (CurElement),A + CALL SetSetupInv + LD IX,BarRed + CALL InitScrollBar + LD IX,BarGreen + CALL InitScrollBar + LD IX,BarBlue + CALL InitScrollBar + CALL InitElement +SetupLoop LD IX,SetupTab + CALL TestCoords + SPDSS DSSF.SCANKEY + JR Z,SetupLoop + LD A,B + AND 0x3F + JR Z,SetupLoop0 + BIT 4,B + JR NZ,SetupLoop + BIT 5,B + JR Z,SetupLoop + LD HL,SetupLoop + PUSH HL + LD A,D + AND 0x7F + CP SC.R + JP Z,InputRED + CP SC.G + JP Z,InputGREEN + CP SC.B + JP Z,InputBLUE + RET + +SetupLoop0 LD A,B + AND 0xC0 + JR Z,SetupLoop1 + LD HL,SetupLoop + PUSH HL + LD A,E + AND 0x5F + CP 'R' + JP Z,DecRED + CP 'G' + JP Z,DecGREEN + CP 'B' + JP Z,DecBLUE + RET + +SetupLoop1 LD A,E + RES 5,A + CP 0x1B + JP Z,SetupCancel + CP 0x0D + JP Z,SetupOkey + CP 'C' + JP Z,SetupCancel + CP 'O' + JP Z,SetupOkey + LD HL,SetupLoop + PUSH HL + CP 'S' + JP Z,SaveSetup + CP 'R' + JP Z,IncRED + CP 'G' + JP Z,IncGREEN + CP 'B' + JP Z,IncBLUE + CP 'I' + JP Z,ChSavePan + CP 'A' + JP Z,ChActivatePan + OR A + RET NZ + LD A,D + CP SC.X8 + JP Z,BoxUp + CP SC.X2 + JP Z,BoxDown + CP SC.X7 + JP Z,BoxHome + CP SC.X1 + JP Z,BoxEnd + CP SC.X9 + JP Z,BoxHome + CP SC.X3 + JP Z,BoxEnd + RET + +;[]----------------------------------------------------------[] +SaveSetup CALL SetClock + PUSH IY + SPDSS DSSF.CURDISK + POP IY + LD HL,WorkBuffer + ADD A,'A' + LD (HL),A + INC HL + LD (HL),':' + INC HL + PUSH IY + SPDSS DSSF.CURDIR + POP IY + LD HL,FlexDIRECTORY + PUSH IY + SPDSS DSSF.CHDIR + POP IY + PUSH AF + CALL C,DOSError + POP AF + JP C,SetupSaveEx + LD HL,SetupName + PUSH IY + SPDSS DSSF.CREATE,,0 + POP IY + PUSH AF + CALL C,DOSError + POP AF + JR C,SetupSaveEx + EX AF,AF' + LD HL,SetupHead + LD DE,WorkBuffer+0x100 + LD BC,11 + LDIR + LD HL,TempPALETTE + LD BC,0x0040 + LDIR + LD A,(SavePanels) + LD (DE),A + INC DE + OR A + JR Z,SvSetup + LD A,(MouseFlag) + LD (DE),A + INC DE + LD HL,LeftPanel + PUSH HL + LDI + LDI + LDI + POP HL + LD BC,PANEL.FILEMASK + ADD HL,BC + SUB A +.L1 LDI + CP (HL) + JR NZ,.L1 + LD (DE),A + INC DE + LD HL,RightPanel + PUSH HL + LDI + LDI + LDI + POP HL + LD BC,PANEL.FILEMASK + ADD HL,BC + SUB A +.L2 LDI + CP (HL) + JR NZ,.L2 + LD (DE),A + INC DE +SvSetup ld a,(AutoActivatePanelFlag) + ld (de),a + inc de + LD HL,WorkBuffer+0x100 + OR A + EX DE,HL + SBC HL,DE + EX DE,HL + EX AF,AF' + PUSH IY + PUSH AF + SPDSS DSSF.WRITE + POP AF + SPDSS DSSF.CLOSE + POP IY + LD A,0x01 + LD (SaveFlag),A +SetupSaveEx LD HL,WorkBuffer + PUSH IY + SPDSS DSSF.CHDIR + POP IY + JP SetMouse + +SetupHead DEFB 0xAE,"FlexSetup",0 +SetupName DZ FILENAME.FN_INI + +;-------------------------------------------------------------- +SetupCancel + WINDOWCLOSE +SaveSav LD A,0x00 + LD (SavePanels),A + JR SetupExit + +SetupOkey + WINDOWCLOSE + LD HL,TempPALETTE + LD DE,PALETTE + LD BC,0x0040 + PUSH DE + LDIR + POP HL + LD DE,0x1000 + SPBIOS BIOSF.PIC_GET_PAL,0xFF,0 + LD A,(AutoActivatePanelFlag) + LD (AutoActivatePanel),A +SetupExit LD A,(SaveFlag) + OR A + RET Z + LD IX,LeftPanel + LD HL,LeftPanel + PANEL.CURRPATH + LD DE,FlexDIRECTORY + LD A,(DE) +SetRef1 CP (HL) + JR NZ,SetRef2 + INC HL + INC DE + LD A,(DE) + OR A + JR NZ,SetRef1 + CP (HL) + CALL Z,RefreshSetup +SetRef2 LD IX,RightPanel + LD HL,RightPanel + PANEL.CURRPATH + LD DE,FlexDIRECTORY + LD A,(DE) +SetRef3 CP (HL) + JR NZ,SetRef4 + INC HL + INC DE + LD A,(DE) + OR A + JR NZ,SetRef3 + CP (HL) + CALL Z,RefreshSetup +SetRef4 PUSH IY + POP HL + LD DE,PANEL.CURRPATH + ADD HL,DE + PUSH IY + SPDSS DSSF.CHDIR + POP IY + RET + +RefreshSetup BIT VIEWFLAG.B_TREE,(IX+PANEL.VIEWFLAG) + RET NZ + PUSH IY + PUSH IX + POP IY + PUSH IY + POP HL + LD DE,PANEL.CURRPATH + ADD HL,DE + PUSH IY + SPDSS DSSF.CHDIR + POP IY + JR C,RefrErr + CALL ReadDIR + CALL PrintDIR + CALL PrnFileInfo + PUSH IY + POP IX + LD DE,PANEL.BARXL + ADD IX,DE + CALL InitScrollBar + LD A,(IY+PANEL.VIEWFLAG) + AND VIEWFLAG.MASK + PUSH AF + CALL Z,PrnHScrBar + POP AF + CALL NZ,PrnVScrBar +RefrErr POP IY + RET + +SaveFlag DEFB 0x00 + +;-------------------------------------------------------------- +BoxUp LD A,(CurElement) + DEC A + RET M + JR BoxKeyExt + +BoxDown LD A,(CurElement) + INC A + CP 0x06 + RET Z + JR BoxKeyExt + +BoxHome LD A,(CurElement) + OR A + RET Z + SUB A + JR BoxKeyExt + +BoxEnd LD A,(CurElement) + CP 0x05 + RET Z + LD A,0x05 + JR BoxKeyExt + +NewElement LD A,(CurElement) + LD C,A + LD A,E + SUB 0x55 + SRL A + SRL A + SRL A + CP C + RET Z +BoxKeyExt PUSH AF + CALL ResSetupInv + POP AF + LD (CurElement),A + CALL SetSetupInv + JP InitElement + +;-------------------------------------------------------------- +ChSavePan LD HL,SavePanTxt + LD A,(SavePanels) + XOR 0x01 + LD (SavePanels),A + XOR 0x01 + INC A + NEG + LD (HL),A + LD DE,0x0074 + LD BC,0x00A5 + LD A,0xF0 + CALL PrnTxtLnIFF + JP ResFire + +SavePanTxt DEFB 0x00,0x00 + +;-------------------------------------------------------------- +ChActivatePan: LD HL,SavePanTxt + LD A,0 +AutoActivatePanelFlag EQU $-1 + XOR 0x01 + LD (AutoActivatePanelFlag),A + INC A + NEG + LD (HL),A + LD DE,0x0074 + LD BC,0x0093 + LD A,0xF0 + CALL PrnTxtLnIFF + JP ResFire + +;-------------------------------------------------------------- +DecRED LD HL,PALITRA.RESERV + 2 + LD DE,PrintRED + JR DecCOLOR + +IncRED LD HL,PALITRA.RESERV + 2 + LD DE,PrintRED + JR IncCOLOR + +DecGREEN LD HL,PALITRA.RESERV + 1 + LD DE,PrintGREEN + JR DecCOLOR + +IncGREEN LD HL,PALITRA.RESERV + 1 + LD DE,PrintGREEN + JR IncCOLOR + +DecBLUE LD HL,PALITRA.RESERV + LD DE,PrintBLUE + JR DecCOLOR + +IncBLUE LD HL,PALITRA.RESERV + LD DE,PrintBLUE + JR IncCOLOR + +DecCOLOR LD A,(HL) + OR A + RET Z + DEC A + LD (HL),A + JR DecIncCOLOR + +IncCOLOR LD A,(HL) + INC A + RET Z + LD (HL),A +DecIncCOLOR LD HL,PrnPALETTE + PUSH HL + PUSH DE + LD HL,ElementColor + LD A,(CurElement) + ADD A,L + LD L,A + JR NC,.L1 + INC H +.L1 LD A,(HL) + ADD A,A + ADD A,A + LD DE,TempPALETTE + ADD A,E + LD E,A + JR NC,.L2 + INC D +.L2 LD HL,PALITRA.RESERV + LDI + LDI + LDI + RET + +;-------------------------------------------------------------- +InputRED LD HL,PALITRA.RESERV + 2 + LD DE,PrintRED + LD BC,0x0058 + JR InputColor + +InputGREEN LD HL,PALITRA.RESERV + 1 + LD DE,PrintGREEN + LD BC,0x0068 + JR InputColor + +InputBLUE LD HL,PALITRA.RESERV + LD DE,PrintBLUE + LD BC,0x0078 +InputColor LD (ColorY),BC + LD BC,DecIncCOLOR + PUSH BC + PUSH HL + PUSH DE + LD DE,ColText + LD A,(HL) + CALL ConvNumTxt8 + SUB A + LD (DE),A + LD A,E + SUB LOW (ColText) + LD (ColLen),A +InpAg LD IX,ColorStr + LD HL,EmptyTab + CALL InputLine + POP DE + POP HL + RET C + PUSH HL + PUSH DE + LD DE,ColText + CALL ConvTxtNum16 + JR C,InpAg + LD A,H + OR A + JR NZ,InpAg + LD A,L + POP DE + POP HL + LD (HL),A + RET + +ColorStr DEFB 0x03,0x00,0x00,0x00 +ColLen DEFB 0x00 + DEFW 0x01B8 +ColorY DEFW 0x0000 + DEFW 0x001A + DEFB 0x80 +ColText DUPL 0x04,0x00 + +;-------------------------------------------------------------- +CurElement DEFB 0x00 +SavePanels DEFB 0x01 +ElementColor DB COLORI.PANEL,COLORI.FILES,COLORI.SELECTFILES + DB COLORI.INVERTPAPER,COLORI.INVERTINK,COLORI.INVSELFILES + +BarRed DEFW 0x0122 ; X ஫ + DEFW 0x0057 ; Y ஫ + DEFW 0x0080 ; Max ஫ + DEFW 0x0000 ; ⥪. ஫ + DEFW 0x0000 ; 祩 BarLeft + DEFW 0x0000 ; 祩 BarRight + DEFW 0x0198 ; - 䠩 ࠭ + DEFW 0x0FF0 ; 饥 - 䠩 +CRed DEFW 0x0000 ; 䠩 ࠭ + +BarGreen DEFW 0x0122 ; X ஫ + DEFW 0x0067 ; Y ஫ + DEFW 0x0080 ; Max ஫ + DEFW 0x0000 ; ⥪. ஫ + DEFW 0x0000 ; 祩 BarLeft + DEFW 0x0000 ; 祩 BarRight + DEFW 0x0198 ; - 䠩 ࠭ + DEFW 0x0FF0 ; 饥 - 䠩 +CGreen DEFW 0x0000 ; 䠩 ࠭ + +BarBlue DEFW 0x0122 ; X ஫ + DEFW 0x0077 ; Y ஫ + DEFW 0x0080 ; Max ஫ + DEFW 0x0000 ; ⥪. ஫ + DEFW 0x0000 ; 祩 BarLeft + DEFW 0x0000 ; 祩 BarRight + DEFW 0x0198 ; - 䠩 ࠭ + DEFW 0x0FF0 ; 饥 - 䠩 +CBlue DEFW 0x0000 ; 䠩 ࠭ + +TempPALETTE DUPL 0x40,0 + +;-------------------------------------------------------------- +ResSetupInv LD DE,(COLORP.BLUE + COLORI.WHITE) << 8 | (COLORP.WHITE + COLORI.BLACK) ;0x4FF0 + JR SetupInvert + +SetSetupInv LD DE,(COLORP.WHITE + COLORI.BLACK) << 8 | (COLORP.BLUE + COLORI.WHITE) ;0xF04F +SetupInvert LD HL,85 ; Y 室 +; TODO 뢠 , ᤥ ਢ離 + LD A,(CurElement) + OR A + JR Z,SetupI1 + LD B,A + PUSH DE + LD DE,8 +.L1 ADD HL,DE + DJNZ .L1 + POP DE +SetupI1 LD IX,8 << 8 | 70 ; HIGH -> , LOW -> ਭ + LD C,L + LD B,H ; Y + LD HL,106 ; X +; TODO 뢠 , ᤥ ਢ離 + JP InvertRectan + +InitElement LD HL,ElementColor + LD A,(CurElement) + ADD A,L + LD L,A + JR NC,.L1 + INC H +.L1 LD A,(HL) + ADD A,A + ADD A,A + LD HL,PALETTE + ADD A,L + LD L,A + JR NC,.L2 + INC H +.L2 LD DE,PALITRA.RESERV + LDI + LDI + LDI + CALL PrintRED + CALL PrintGREEN + CALL PrintBLUE + JP PrnPALETTE + +PrintRED LD DE,WorkBuffer + LD A,(PALITRA.RESERV + 2) + LD L,A + LD H,0x00 + ADD HL,HL + ADD HL,HL + ADD HL,HL + ADD HL,HL + LD (CRed),HL + CALL ConvNumTxt8 + LD A,0x04 + SUB E + LD B,A + LD A,0x20 +.L1 LD (DE),A + INC E + DJNZ .L1 + SUB A +InitEl1 LD (DE),A + LD HL,WorkBuffer + LD DE,0x01B8 + LD BC,0x0058 + LD A,0x80 + CALL PrnTxtLnIFF + LD IX,BarRed + JP PrnHScrBar + +PrintGREEN LD DE,WorkBuffer + LD A,(PALITRA.RESERV + 1) + LD L,A + LD H,0x00 + ADD HL,HL + ADD HL,HL + ADD HL,HL + ADD HL,HL + LD (CGreen),HL + CALL ConvNumTxt8 + LD A,0x04 + SUB E + LD B,A + LD A,0x20 +.L1 LD (DE),A + INC E + DJNZ .L1 + SUB A +InitEl2 LD (DE),A + LD HL,WorkBuffer + LD DE,0x01B8 + LD BC,0x0068 + LD A,0x80 + CALL PrnTxtLnIFF + LD IX,BarGreen + JP PrnHScrBar + +PrintBLUE LD DE,WorkBuffer + LD A,(PALITRA.RESERV) + LD L,A + LD H,0x00 + ADD HL,HL + ADD HL,HL + ADD HL,HL + ADD HL,HL + LD (CBlue),HL + CALL ConvNumTxt8 + LD A,0x04 + SUB E + LD B,A + LD A,0x20 +.L1 LD (DE),A + INC E + DJNZ .L1 + SUB A +InitEl3 LD (DE),A + LD HL,WorkBuffer + LD DE,0x01B8 + LD BC,0x0078 + LD A,0x80 + CALL PrnTxtLnIFF + LD IX,BarBlue + JP PrnHScrBar + +PrnPALETTE LD HL,PALETTE + LD DE,0x1000 + SPBIOS BIOSF.PIC_GET_PAL,0xFF,0 + MAKEWINDOW WINSUBOBJ.WOBIND + W_FILL 470,88,60,38,COLORI.RESERVED + W_END + RET diff --git a/rez2_fnerror.a80 b/rez2_fnerror.a80 new file mode 100644 index 0000000..4c0d37e --- /dev/null +++ b/rez2_fnerror.a80 @@ -0,0 +1,346 @@ + +; LAST UPDATE: 25.03.2025 savelij + +; !FIXIT । ࠧ ⥪⮬ 訡 ⮬ 楤 +;[]===========================================================[] +DOSErrorR ;[x] 30/07/23 -bug 뫥 । ⠡ 訡 + CP (.error - .ErrorWins)/2 + JR C,.calc_addr + LD HL,.error + JR .goto_addr + +.calc_addr: LD HL,.ErrorWins + ADD A,A + ADD A,L + LD L,A + JR NC,.goto_addr + INC H +.goto_addr: LD A,(HL) + INC HL + LD H,(HL) + LD L,A + LD A,H + OR L + RET Z + CALL SetMouse + JP (HL) + +.ErrorWins DEFW 0x0000 ; 00 + DEFW 0x0000 ; 01 + DEFW InvDrive ; 02 + DEFW FileNFound ; 03 + DEFW InvPath ; 04 + DEFW 0x0000 ; 05 + DEFW FileNFound ; 06 + DEFW FILEexists ; 07 + DEFW 0x0000 ; 08 + DEFW ROOToverflow ; 09 + DEFW NoDiskSpace ; 0A + DEFW DIRnotEmpty ; 0B + DEFW 0x0000 ; 0C + DEFW InvMedia ; 0D + DEFW 0x0000 ; 0E + DEFW DIRexists ; 0F + DEFW InvName ; 10 + DEFW InvEXEfile ; 11 + DEFW InvEXEver ; 12 + DEFW 0x0000 ; 13 + DEFW NotReady ; 14 + DEFW 0x0000 ; 15 + DEFW 0x0000 ; 16 + DEFW 0x0000 ; 17 + DEFW WriteProtect ; 18 ; [ ] 26/06/2024 + DEFW 0x0000 ; 19 + DEFW 0x0000 ; 1A + DEFW 0x0000 ; 1B + DEFW NotReady ; 1C + DEFW 0x0000 ; 1D + DEFW NoMemory ; 1E + DEFW 0x0000 ; 1F + DEFW 0x0000 ; 20 + DEFW 0x0000 ; 21 + DEFW 0x0000 ; 22 + DEFW ToManyFilesInDir ; 23 +; always last in the table: +.error: DW UnknownError ; if no ERROR in this table then will show this message + +;-------------------------------------------------------------- +WriteProtect: + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 224,88,192,48 + W_FILL 4,2,184,10,COLORI.RED + W_TEXT 86,3,COLORI.WHITE + COLORP.RED,"Error" + W_TEXT 37,18,COLORP.HIGHGRAY,"Drive is write protected" + W_BUTTON 60,30,72,14 + W_TEXT 88,33,COLORP.HIGHGRAY,"Ok" + W_END + JP ErrorLp + +InvDrive + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 224,88,192,48 + W_FILL 4,2,184,10,COLORI.RED + W_TEXT 86,3,COLORI.WHITE + COLORP.RED,"Error" + W_TEXT 24,18,COLORP.HIGHGRAY,"Invalid drive letter:" + W_BUTTON 60,30,72,14 + W_TEXT 88,33,COLORP.HIGHGRAY,"Ok" + W_BORDER 120,15,16,12 + W_FILL 122,16,12,10,COLORI.WHITE + W_END + JP InputDrive + +InvMedia + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 224,88,192,48 + W_FILL 4,2,184,10,COLORI.RED + W_TEXT 86,3,COLORI.WHITE + COLORP.RED,"Error" + W_TEXT 46,18,COLORP.HIGHGRAY,"Invalid media:" + W_BUTTON 60,30,72,14 + W_TEXT 88,33,COLORP.HIGHGRAY,"Ok" + W_BORDER 120,15,16,12 + W_FILL 122,16,12,10,COLORI.WHITE + W_END + JR InputDrive + +NotReady + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 224,88,192,48 + W_FILL 4,2,184,10,COLORI.RED + W_TEXT 86,3,COLORI.WHITE + COLORP.RED,"Error" + W_TEXT 36,18,COLORP.HIGHGRAY,"Drive not ready:" + W_BUTTON 60,30,72,14 + W_TEXT 88,33,COLORP.HIGHGRAY,"Ok" + W_BORDER 120,15,16,12 + W_FILL 122,16,12,10,COLORI.WHITE + W_END +InputDrive PUSH IY + SPDSS DSSF.CURDISK + POP IY + ADD A,"A" + LD (CurDrv),A + LD IX,DriveStr + LD HL,ErrorTab1 + CALL InputLine + WINDOWCLOSE + CALL SetClock + LD A,(CurDrv) + RES 5,A + SUB "A" + PUSH IY + SPDSS DSSF.CHDISK + POP IY + JP C,DOSErrorR + LD HL,BegDIR + PUSH IY + SPDSS DSSF.CHDIR + POP IY + JP C,DOSErrorR + CALL SetMouse + LD A,0x01 + RET + +ErrorTab1 DEFW 0x011C,0x0164,0x0076,0x0084,0x01,0x0000,InputLine.InpLnExtN,0x0000 + DEFW 0x8000 + +DriveStr DEFB 0x01,0x00,0x00,0x00 + DEFB 0x01 + DEFW 0x015C,0x006A + DEFW 0x000A + DEFB 0xF0 +CurDrv DUPL 0x02,0x00 + +;-------------------------------------------------------------- +InvPath + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 224,88,192,48 + W_FILL 4,2,184,10,COLORI.RED + W_TEXT 86,3,COLORI.WHITE + COLORP.RED,"Error" + W_TEXT 70,18,COLORP.HIGHGRAY,"Invalid path" + W_BUTTON 60,30,72,14 + W_TEXT 88,33,COLORP.HIGHGRAY,"Ok" + W_END +ErrorLp0 LD IX,ErrorTab2 + CALL TestCoords + SPDSS DSSF.SCANKEY + JR Z,ErrorLp0 + LD A,B + OR A + JR NZ,ErrorLp0 + LD A,E + CP 0x1B + JR Z,ErrorExt0 + CP 0x0D + JR Z,ErrorExt0 + RES 5,A + CP "O" + JR NZ,ErrorLp0 +ErrorExt0 + WINDOWCLOSE + CALL SetClock + LD HL,BegDIR + PUSH IY + SPDSS DSSF.CHDIR + POP IY + JP C,DOSErrorR + CALL SetMouse + LD A,0x01 + RET + +ErrorTab2 DEFW 0x011C,0x0164,0x0076,0x0084,0x21,0x0000,ErrorExt0,0x0000 + DEFW 0x8000 + +;-------------------------------------------------------------- +FileNFound + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 224,88,192,48 + W_FILL 4,2,184,10,COLORI.RED + W_TEXT 86,3,COLORI.WHITE + COLORP.RED,"Error" + W_TEXT 60,18,COLORP.HIGHGRAY,"File not found" + W_BUTTON 60,30,72,14 + W_TEXT 88,33,COLORP.HIGHGRAY,"Ok" + W_END + JP ErrorLp + +ROOToverflow + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 224,88,192,48 + W_FILL 4,2,184,10,COLORI.RED + W_TEXT 86,3,COLORI.WHITE + COLORP.RED,"Error" + W_TEXT 64,18,COLORP.HIGHGRAY,"ROOT overflow" + W_BUTTON 60,30,72,14 + W_TEXT 88,33,COLORP.HIGHGRAY,"Ok" + W_END + JP ErrorLp + +NoDiskSpace + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 224,88,192,48 + W_FILL 4,2,184,10,COLORI.RED + W_TEXT 86,3,COLORI.WHITE + COLORP.RED,"Error" + W_TEXT 62,18,COLORP.HIGHGRAY,"No disk space" + W_BUTTON 60,30,72,14 + W_TEXT 88,33,COLORP.HIGHGRAY,"Ok" + W_END + JP ErrorLp + +DIRnotEmpty + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 224,88,192,48 + W_FILL 4,2,184,10,COLORI.RED + W_TEXT 86,3,COLORI.WHITE + COLORP.RED,"Error" + W_TEXT 40,18,COLORP.HIGHGRAY,"Directory is not empty" + W_BUTTON 60,30,72,14 + W_TEXT 88,33,COLORP.HIGHGRAY,"Ok" + W_END + JP ErrorLp + +FILEexists + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 224,88,192,48 + W_FILL 4,2,184,10,COLORI.RED + W_TEXT 86,3,COLORI.WHITE + COLORP.RED,"Error" + W_TEXT 72,18,COLORP.HIGHGRAY,"File exists" + W_BUTTON 60,30,72,14 + W_TEXT 88,33,COLORP.HIGHGRAY,"Ok" + W_END + JP ErrorLp + +DIRexists + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 224,88,192,48 + W_FILL 4,2,184,10,COLORI.RED + W_TEXT 86,3,COLORI.WHITE + COLORP.RED,"Error" + W_TEXT 56,18,COLORP.HIGHGRAY,"Directory exists" + W_BUTTON 60,30,72,14 + W_TEXT 88,33,COLORP.HIGHGRAY,"Ok" + W_END + JP ErrorLp + +InvName + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 224,88,192,48 + W_FILL 4,2,184,10,COLORI.RED + W_TEXT 86,3,COLORI.WHITE + COLORP.RED,"Error" + W_TEXT 66,18,COLORP.HIGHGRAY,"Invalid name" + W_BUTTON 60,30,72,14 + W_TEXT 88,33,COLORP.HIGHGRAY,"Ok" + W_END + JP ErrorLp + +InvEXEfile + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 224,88,192,48 + W_FILL 4,2,184,10,COLORI.RED + W_TEXT 86,3,COLORI.WHITE + COLORP.RED,"Error" + W_TEXT 60,18,COLORP.HIGHGRAY,"Invalid EXE file" + W_BUTTON 60,30,72,14 + W_TEXT 88,33,COLORP.HIGHGRAY,"Ok" + W_END + JP ErrorLp + +InvEXEver + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 224,88,192,48 + W_FILL 4,2,184,10,COLORI.RED + W_TEXT 86,3,COLORI.WHITE + COLORP.RED,"Error" + W_TEXT 40,18,COLORP.HIGHGRAY,"Unsupport EXE version" + W_BUTTON 60,30,72,14 + W_TEXT 88,33,COLORP.HIGHGRAY,"Ok" + W_END + JP ErrorLp + +NoMemory + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 224,88,192,48 + W_FILL 4,2,184,10,COLORI.RED + W_TEXT 86,3,COLORI.WHITE + COLORP.RED,"Error" + W_TEXT 52,18,COLORP.HIGHGRAY,"No memory space" + W_BUTTON 60,30,72,14 + W_TEXT 88,33,COLORP.HIGHGRAY,"Ok" + W_END + JP ErrorLp + +ToManyFilesInDir: + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 224,88,192,48 + W_FILL 4,2,184,10,COLORI.RED + W_TEXT 86,3,COLORI.WHITE + COLORP.RED,"Error" + W_TEXT 30,18,COLORP.HIGHGRAY,"Too many directory entries" + W_BUTTON 60,30,72,14 + W_TEXT 88,33,COLORP.HIGHGRAY,"Ok" + W_END + JP ErrorLp + +UnknownError: ;[x] 30/07/23 -bug 뫥 । ⠡ 訡 + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 224,88,192,48 + W_FILL 4,2,184,10,COLORI.RED + W_TEXT 86,3,COLORI.WHITE + COLORP.RED,"Error" + W_TEXT 60,18,COLORP.HIGHGRAY,"Unknown Error" + W_BUTTON 60,30,72,14 + W_TEXT 88,33,COLORP.HIGHGRAY,"Ok" + W_END + ;JP ErrorLp + +ErrorLp LD IX,ErrorTab3 + CALL TestCoords + SPDSS DSSF.SCANKEY + JR Z,ErrorLp + LD A,B + OR A + JR NZ,ErrorLp + LD A,E + CP 0x1B + JR Z,ErrorExt + CP 0x0D + JR Z,ErrorExt + RES 5,A + CP 'O' + JR NZ,ErrorLp +ErrorExt + WINDOWCLOSE + SUB A + RET + +ErrorTab3 DEFW 0x011C,0x0164,0x0076,0x0084,0x21,0x0000,ErrorExt,0x0000 + DEFW 0x8000 diff --git a/rez2_fnfunct.a80 b/rez2_fnfunct.a80 new file mode 100644 index 0000000..322d5d2 --- /dev/null +++ b/rez2_fnfunct.a80 @@ -0,0 +1,2418 @@ + +; LAST UPDATE: 16.05.2025 savelij + +;[]==========================================================[] +CopyFilesR LD A,(IY + PANEL.EFL) + OR (IY + PANEL.EFH) + RET Z + BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) + RET NZ + SETPORT WINSP.Y_PORT,0xC0 + LD A,(IY + PANEL.MFL) + OR (IY + PANEL.MFH) + JR NZ,CopyMark +; ஢ 䠩/ ஬ + 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 IX,WorkBuffer + LD L,(IY + PANEL.FFL) + LD H,(IY + PANEL.FFH) + LD E,(IY + PANEL.CFL) + LD D,(IY + PANEL.CFH) + ADD HL,DE + ADD HL,HL ; *2 + ADD HL,HL ; *4 + ADD HL,HL ; *8 + LD E,L + LD D,H + ADD HL,HL ; *10 + ADD HL,DE ; *18 + SET 6,H + SET 7,H ; | 0xC000 + LD (AdrCopyFile),HL + LD DE,WorkBuffer + LD BC,FileHDR.SIZE + LDIR + POP AF + SETPORT WINSP.CPU3,,0 + BIT DIR.B_Dir,(IX + FileHDR.Attr) + IF MARK_DIR + JP NZ,COPY_DIR + ELSE + RET NZ + ENDIF + LD HL,0 + LD (ECopyFiles),HL + LD L,(IX + FileHDR.SizeBytes) + LD H,(IX + FileHDR.SizeBytes + 1) + LD (ECopyBytes),HL + LD E,(IX + FileHDR.SizeBytes + 2) + LD D,(IX + FileHDR.SizeBytes + 3) + LD (ECopyBytes + 2),DE + CALL ConvLenToBank + JP CopyNxt + + IF MARK_DIR +; ஢ ᥬ ᮤন +COPY_DIR PUSH IX + PUSH IY + CALL RESIDENT.GetDirSize ; ஬塞 ࠧ + LD HL,FileHDR.SizeBytes + CALL SET_DWORD ; ᫨ ࠧ ⥫ + LD HL,0 + LD (ECopyFiles),HL + EX DE,HL + LD D,B + LD E,C + CALL ConvLenToBank + + POP IY + POP IX + RET + ENDIF + +; ஢ 祭 䠩 +CopyMark LD L,(IY + PANEL.MFL) + LD H,(IY + PANEL.MFH) + LD (ECopyFiles),HL + LD L,(IY + PANEL.MBL1) + LD H,(IY + PANEL.MBH1) + LD (ECopyBytes),HL + LD L,(IY + PANEL.MBL2) + LD H,(IY + PANEL.MBH2) + LD (ECopyBytes + 2),HL + ; [ ] fat32 + LD A,(IY + PANEL.MBL3) + LD (ECopyBytes + 4),A + 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 HL,CPU3 - FileHDR.SIZE + LD BC,FileHDR.SIZE +.L2 ADD HL,BC + BIT FileHDR.B_MARK,(HL) + JR Z,.L2 + LD (AdrCopyFile),HL + PUSH HL + POP IX + SUB A + LD L,A + LD H,A + LD E,L + LD D,H +CopyLp0 BIT FileHDR.B_MARK,(IX + FileHDR.Flag) + JR Z,CopyNx2 + PUSH BC + PUSH DE + PUSH HL + LD L,(IX + FileHDR.SizeBytes) + LD H,(IX + FileHDR.SizeBytes + 1) + LD E,(IX + FileHDR.SizeBytes + 2) + LD D,(IX + FileHDR.SizeBytes + 3) + CALL ConvLenToBank + LD C,L + LD B,H + POP HL + ADD HL,BC + LD C,E + LD B,D + POP DE + EX DE,HL + ADC HL,BC + EX DE,HL + POP BC +CopyNx2 ADD IX,BC + LD A,(IX + FileHDR.Name) + OR A + JR NZ,CopyLp0 + POP AF + SETPORT WINSP.CPU3,,0 +CopyNxt LD IX,ProcessAll + ADD HL,HL + EX DE,HL + ADC HL,HL + EX DE,HL + LD (IX + PROC.MAXL1),L + LD (IX + PROC.MAXH1),H + LD (IX + PROC.MAXL2),E + LD (IX + PROC.MAXH2),D + CALL InitProcess + CALL ResInvert + LD HL,SetInvert + PUSH HL +; ஢ + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 96,81,448,62 + W_FILL 4,2,440,10,COLORI.BLACK + W_TEXT 210,3,COLORI.WHITE,"Copy" + W_BUTTON 144,42,72,14 + W_TEXT 172,45,COLORP.HIGHGRAY,"Ok" + W_BUTTON 232,42,72,14 + W_TEXT 252,45,COLORP.HIGHGRAY,"Cancel" + W_TEXT 22,25,COLORP.HIGHGRAY,"Copy to:" + W_BORDER 70,22,332,12 + W_FILL 72,23,328,10,COLORI.WHITE + W_END + BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + LD HL,LeftPanel + JR NZ,.L1 + LD HL,RightPanel +.L1 LD DE,PANEL.CURRPATH + ADD HL,DE + LD DE,CurPath + SUB A + LD C,A +.L2 LDI + CP (HL) + JR NZ,.L2 + LD (DE),A + SUB A + SUB C + LD (PathLen),A + LD IX,PathStr + LD HL,PathTab + CALL InputLine + WINDOWCLOSE + RET C + LD A,(PathLen) + OR A + RET Z + PUSH IY + SPDSS DSSF.INFOMEM + POP IY + LD (FreeBanks),BC + LD A,B + OR C + LD A,ERR_DSS.NOT_ENOUGH_MEMORY + JP Z,DOSError ;!!!!!!!!!!!! +; ஢ + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 160,81,320,78 + W_FILL 4,2,312,10,COLORI.BLACK + W_TEXT 148,3,COLORI.WHITE,"Copy" + W_TEXT 8,16,COLORP.HIGHGRAY,"From:" + W_TEXT 22,26,COLORP.HIGHGRAY,"to:" + W_BORDER 16,38,288,12 + W_FILL 18,39,284,10,COLORI.WHITE + W_BORDER 16,56,288,12 + W_FILL 18,57,284,10,COLORI.WHITE + W_END + SUB A + LD (OverWriteFlg),A + LD HL,LeftPanel + BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + JR Z,.L4 + LD HL,RightPanel +.L4 LD BC,PANEL.CURRPATH + ADD HL,BC + LD (CopyFrom),HL + LD HL,CurPath + LD (CopyTo),HL + CALL SetClock + PUSH IY + GETPORT WINSP.CPU3 + PUSH AF + BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + LD A,(RAMPAGES.LEFTPANEL) + JR Z,.L3 + LD A,(RAMPAGES.RIGHTPANEL) +.L3 + SETPORT WINSP.CPU3,,0 +CopyNextFile CALL PrnFromTo + LD IX,(AdrCopyFile) + LD L,(IX + FileHDR.SizeBytes) + LD H,(IX + FileHDR.SizeBytes + 1) + LD E,(IX + FileHDR.SizeBytes + 2) + LD D,(IX + FileHDR.SizeBytes + 3) + LD (ReadLen),HL + LD (ReadLen + 2),DE + LD (WriteLen),HL + LD (WriteLen + 2),DE + CALL ConvLenToBank + LD (.FileBnL),HL + LD (.FileBnH),DE + LD IX,ProcessOne + ADD HL,HL + EX DE,HL + ADC HL,HL + EX DE,HL + LD (IX + PROC.MAXL1),L + LD (IX + PROC.MAXH1),H + LD (IX + PROC.MAXL2),E + LD (IX + PROC.MAXH2),D + CALL InitProcess + CALL PrnProcess + LD HL,(FreeBanks) + LD DE,0x0000 +.FileBnH EQU $-2 + LD A,D + OR E + JR NZ,.CopyLp1 + LD DE,0x0000 +.FileBnL EQU $-2 + OR A + SBC HL,DE + JR NC,.L1 + ADD HL,DE +.CopyLp1 EX DE,HL +.L1 LD B,E + SPDSS DSSF.GETMEM + LD (MemIndef),A + LD HL,PagesList + SPBIOS BIOSF.GETMEMBLKPAGES + LD HL,(CopyFrom) ;뢠 䠩 筨 + SPDSS DSSF.CHDIR + JP C,CopyError1 + LD HL,(AdrCopyFile) + INC HL + LD DE,WorkBuffer + PUSH DE + CALL MakeDOSname + POP HL + SPDSS DSSF.OPEN,,1 + JP C,CopyError1 + LD (FHandle1),A + LD HL,(CopyTo) ;뢠 䠩 ਥ + SPDSS DSSF.CHDIR + JP C,CopyError2 + LD IX,(AdrCopyFile) + LD HL,(AdrCopyFile) + INC HL + LD DE,WorkBuffer + PUSH DE + CALL MakeDOSname + POP HL + LD A,(OverWriteFlg) + OR A + LD C,DSSF.CREAT_N ;0x0B + JR Z,.L2 + LD C,DSSF.CREATE ;0x0A +.L2 LD A,(IX + FileHDR.Attr) + SPDSS + JR NC,CopyLp2 + CP 0x07 + JP NZ,CopyError2 + CALL OverWrite +CopyLp2 LD (FHandle2),A + LD HL,(ReadLen) + LD A,H + OR L + LD HL,(ReadLen+2) + OR H + OR L + JP Z,CloseFiles +ReadFile + GETPORT WINSP.CPU3 + PUSH AF + LD HL,PagesList + LD A,(HL) +ReadLp1 INC HL + PUSH HL + SETPORT WINSP.CPU3,,0 + SPDSS DSSF.SCANKEY + LD HL,SC.ESC << 8 | 0x1B + OR A + SBC HL,DE + JP Z,CopyBreak + LD HL,(ReadLen) + LD DE,(ReadLen + 2) + LD BC,0x4000 + OR A + SBC HL,BC + LD B,0x00 + EX DE,HL + SBC HL,BC + EX DE,HL + JR C,ReadEnd + LD (ReadLen),HL + LD (ReadLen + 2),DE + LD HL,0xC000 + LD DE,0x4000 + LD A,(FHandle1) + SPDSS DSSF.READ + CALL NextProcess + POP HL + LD A,(HL) + CP 0xFF + JR NZ,ReadLp1 + POP AF + SETPORT WINSP.CPU3,,0 + JR WriteFile + +; !FIXIT ᤥ ⠪: +ReadEnd: LD HL,0xC000 + LD DE,(ReadLen) + LD A,D + OR E + JR Z,.L1 + LD A,(FHandle1) + SPDSS DSSF.READ + CALL NextProcess +.L1 POP HL + POP AF + SETPORT WINSP.CPU3,,0 +WriteFile + GETPORT WINSP.CPU3 + PUSH AF + LD HL,PagesList + LD A,(HL) +WriteL1 INC HL + PUSH HL + SETPORT WINSP.CPU3,,0 + SPDSS DSSF.SCANKEY + LD HL,SC.ESC << 8 | 0x1B + OR A + SBC HL,DE + JP Z,CopyBreak + LD HL,(WriteLen) + LD DE,(WriteLen + 2) + LD BC,0x4000 + OR A + SBC HL,BC + LD B,0x00 + EX DE,HL + SBC HL,BC + EX DE,HL + JR C,WriteEnd + LD (WriteLen),HL + LD (WriteLen + 2),DE + LD HL,0xC000 + LD DE,0x4000 + LD A,(FHandle2) + SPDSS DSSF.WRITE + JP C,CopyError3 + CALL NextProcess + POP HL + LD A,(HL) + CP 0xFF + JR NZ,WriteL1 + POP AF + SETPORT WINSP.CPU3,,0 + LD HL,(ReadLen) + LD A,H + OR L + LD HL,(ReadLen + 2) + OR H + OR L + JR Z,CloseFiles + JP ReadFile + +; !FIXIT ᤥ ⠪: +WriteEnd: LD HL,0xC000 + LD DE,(WriteLen) + LD A,D + OR E + JR Z,.L1 + LD A,(FHandle2) + SPDSS DSSF.WRITE + JP C,CopyError3 + CALL NextProcess +.L1 POP HL + POP AF + SETPORT WINSP.CPU3,,0 +CloseFiles LD A,(FHandle1) + SPDSS DSSF.GET_D_T + LD A,(FHandle2) + SPDSS DSSF.PUT_D_T + LD A,(FHandle2) + SPDSS DSSF.CLOSE +CloseFile1 LD A,(FHandle1) + SPDSS DSSF.CLOSE + LD A,(MemIndef) + SPDSS DSSF.FREEMEM + LD IX,(AdrCopyFile) + RES FileHDR.B_MARK,(IX + FileHDR.Flag) + LD HL,(ECopyBytes) + LD E,(IX + FileHDR.SizeBytes) + LD D,(IX + FileHDR.SizeBytes + 1) + OR A + SBC HL,DE + LD (ECopyBytes),HL + LD HL,(ECopyBytes+2) + LD E,(IX + FileHDR.SizeBytes + 2) + LD D,(IX + FileHDR.SizeBytes + 3) + SBC HL,DE + LD (ECopyBytes+2),HL + LD HL,(ECopyFiles) + LD A,H + OR L + JR Z,CopyEnd + DEC HL + LD (ECopyFiles),HL + LD A,H + OR L + JR Z,CopyEnd + LD HL,(AdrCopyFile) + LD DE,FileHDR.SIZE +.L1 ADD HL,DE + BIT FileHDR.B_MARK,(HL) + JR Z,.L1 + LD (AdrCopyFile),HL + JP CopyNextFile + +CopyEnd POP AF + SETPORT WINSP.CPU3,,0 + POP IY + WINDOWCLOSE + LD HL,(ECopyFiles) + LD (IY + PANEL.MFL),L + LD (IY + PANEL.MFH),H + LD HL,(ECopyBytes) + LD (IY + PANEL.MBL1),L + LD (IY + PANEL.MBH1),H + LD HL,(ECopyBytes+2) + LD (IY + PANEL.MBL2),L + LD (IY + PANEL.MBH2),H + ; [ ] fat32 + LD A,(ECopyBytes+4) + LD (IY + PANEL.MBL3),A + PUSH IY + BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + LD IY,RightPanel + JR Z,.L1 + LD IY,LeftPanel +.L1 PUSH IY + POP HL + LD DE,PANEL.CURRPATH + ADD HL,DE + PUSH IY + SPDSS DSSF.CHDIR + POP IY + PUSH AF + CALL C,DOSError + POP AF + CALL NC,RefreshDIR + POP IY + PUSH IY + POP HL + LD DE,PANEL.CURRPATH + ADD HL,DE + PUSH IY + SPDSS DSSF.CHDIR + POP IY + JP C,BegDIRECTORY + CALL PrintDIR + CALL PrnFileInfo + JP SetMouse + +CopyError3: ; ᫨ ᪥ ஢ ;!FIXIT ⨬஢ + POP HL ; ᭨ 譥 + POP DE ; AF + PUSH AF + LD A,D + SETPORT WINSP.CPU3,,0 + LD A,(FHandle2) + SPDSS DSSF.CLOSE + CALL CopyErrorFileDelete + POP AF +CopyError2 PUSH AF + LD A,(FHandle1) + SPDSS DSSF.CLOSE + POP AF +CopyError1 PUSH AF + LD A,(MemIndef) + SPDSS DSSF.FREEMEM + POP AF + CALL DOSError + JP CopyEnd + +CopyBreak POP HL + POP AF + SETPORT WINSP.CPU3,,0 + LD A,(FHandle2) + SPDSS DSSF.CLOSE + LD A,(FHandle1) + SPDSS DSSF.CLOSE + LD A,(MemIndef) + SPDSS DSSF.FREEMEM + CALL CopyErrorFileDelete + JP CopyEnd + +CopyErrorFileDelete: + LD IX,(AdrCopyFile) + LD HL,(AdrCopyFile) + INC HL + LD DE,WorkBuffer + PUSH DE + CALL MakeDOSname + POP HL + LD A,(IX + FileHDR.Attr) + PUSH IY + SPDSS DSSF.DELETE + POP IY + RET + +;-------------------------------------------------------------- +OverWrite CALL SetMouse + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 180,88,280,56 + W_FILL 4,2,272,10,COLORI.GREEN + W_TEXT 116,3,COLORI.WHITE + COLORP.GREEN,"Message" + W_TEXT 80,16,COLORP.HIGHGRAY,"The following file EXISTS:" + W_BUTTON 16,38,56,14 + W_TEXT 22,41,COLORP.HIGHGRAY,"OverWrite" + W_BUTTON 80,38,56,14 + W_TEXT 102,41,COLORP.HIGHGRAY,"All" + W_BUTTON 144,38,56,14 + W_TEXT 162,41,COLORP.HIGHGRAY,"Skip" + W_BUTTON 208,38,56,14 + W_TEXT 220,41,COLORP.HIGHGRAY,"Cancel" + W_END + LD HL,(CopyTo) + LD DE,WorkBuffer + SUB A +.L1 LDI + CP (HL) + JR NZ,.L1 + DEC HL + LD A,'\\' + CP (HL) + JR Z,.L2 + LD (DE),A + INC DE +.L2 LD HL,(AdrCopyFile) + INC HL + CALL MakeDOSname + LD IX,0x00F8 + LD HL,WorkBuffer + LD DE,320 + LD BC,114 + LD A,COLORP.HIGHGRAY + COLORI.BLACK + CALL PrnRangPathC +OvWrtLp LD IX,OverWrtTab + CALL TestCoords + SPDSS DSSF.SCANKEY + JR Z,OvWrtLp + LD A,B + OR A + JR NZ,OvWrtLp + LD A,E + CP 0x1B + LD HL,OverExit + JR Z,OvrJump + CP 0x0D + LD HL,OverWrtFile + JR Z,OvrJump + RES 5,A + CP 'O' + LD HL,OverWrtFile + JR Z,OvrJump + CP 'A' + LD HL,OverWrtAll + JR Z,OvrJump + CP 'S' + LD HL,OverSkip + JR Z,OvrJump + CP 'C' + JR NZ,OvWrtLp + LD HL,OverExit +OvrJump + WINDOWCLOSE + JP (HL) + +OverWrtAll LD A,0x01 + LD (OverWriteFlg),A +OverWrtFile CALL SetClock + LD IX,(AdrCopyFile) + LD HL,(AdrCopyFile) + INC HL + LD DE,WorkBuffer + PUSH DE + CALL MakeDOSname + POP HL + LD A,(IX + FileHDR.Attr) + SPDSS DSSF.CREATE + RET + +OverSkip CALL SetClock + LD IX,(AdrCopyFile) + LD L,(IX + FileHDR.SizeBytes) + LD H,(IX + FileHDR.SizeBytes + 1) + LD E,(IX + FileHDR.SizeBytes + 2) + LD D,(IX + FileHDR.SizeBytes + 3) + CALL ConvLenToBank + ADD HL,HL + EX DE,HL + ADC HL,HL + EX DE,HL + LD IX,ProcessAll + LD C,(IX + PROC.CURL1) + LD B,(IX + PROC.CURH1) + ADD HL,BC + LD (IX + PROC.CURL1),L + LD (IX + PROC.CURH1),H + LD C,(IX + PROC.CURL2) + LD B,(IX + PROC.CURH2) + EX DE,HL + ADC HL,BC + LD (IX + PROC.CURL2),L + LD (IX + PROC.CURH2),H + CALL PrnProcess + LD HL,CloseFile1 + EX (SP),HL + RET + +OverExit INC SP + INC SP + LD IX,(AdrCopyFile) + BIT 0,(IX + 0x00) + JP Z,CloseFile1 + LD A,(FHandle1) + SPDSS DSSF.CLOSE + LD A,(MemIndef) + SPDSS DSSF.FREEMEM + POP IY + JP CopyEnd + +;-------------------------------------------------------------- +AdrCopyFile DW 0x0000 ; ⥫ ⥪饣 䠩 +CopyFrom DW 0x0000 ; 㤠 +CopyTo DW 0x0000 ; 㤠 +ECopyFiles DW 0x0000 ; - 㥬 䠩 +ECopyBytes DB 5 DUP 0 ; - 㥬 ⮢ +OverWriteFlg DB 0x00 ; १ 䠩 +FreeBanks DW 0x0000 ; - ᢮ +ReadLen DD 0 ; ⠥ 䠩 +WriteLen DD 0 ; 뢠 䠩 +FHandle1 DB 0x00 ; 筨 +FHandle2 DB 0x00 ; ਥ +MemIndef DB 0x00 ; 䨪. ஢ +;-------------------------------------------------------------- + +; DEHL - ⢮ +; 1028975 FB36F +; 231 E7 1 +; 59232 E760 4 +; 21 15 1 +; 14119 3727 1 +; 916055 DFA57 38 +; 12652 316C 1 +; 14119 3727 1 +; 12546 3102 1 +ConvLenToBank LD A,H + LD H,L + LD L,0x00 + SLA A + RL E + RL D + RL L ; LDEA * 2 + SLA A + RL E + RL D + RL L ; LDEA * 2 + OR H + LD H,0x00 + EX DE,HL + JR Z,.L1 + INC HL +.L1 LD A,H + OR L + RET NZ + INC DE + RET + +PrnFromTo LD HL,(CopyFrom) + LD DE,WorkBuffer + SUB A +.L1 LDI + CP (HL) + JR NZ,.L1 + DEC HL + LD A,'\\' + CP (HL) + JR Z,.L2 + LD (DE),A + INC DE +.L2 LD HL,(AdrCopyFile) + INC HL + CALL MakeDOSname + LD HL,(CopyTo) + LD DE,WorkBuffer+0x100 + SUB A +.L3 LDI + CP (HL) + JR NZ,.L3 + DEC HL + LD A,'\\' + CP (HL) + JR Z,.L4 + LD (DE),A + INC DE +.L4 LD HL,(AdrCopyFile) + INC HL + CALL MakeDOSname + MAKEWINDOW WINSUBOBJ.WOBIND + W_FILL 204,97,256,18,COLORI.HIGHGRAY + W_END + LD IX,0x0100 + LD HL,WorkBuffer + LD DE,204 + LD BC,97 + LD A,COLORP.HIGHGRAY + COLORI.BLACK + CALL PrnRangPathL + LD IX,0x0100 + LD HL,WorkBuffer+0x100 + LD DE,204 + LD BC,107 + LD A,COLORP.HIGHGRAY + COLORI.BLACK + JP PrnRangPathL + +NextProcess LD IX,ProcessAll + LD L,(IX + PROC.CURL1) + LD H,(IX + PROC.CURH1) + INC HL + LD (IX + PROC.CURL1),L + LD (IX + PROC.CURH1),H + LD A,H + OR L + JR NZ,.L1 + LD L,(IX + PROC.CURL2) + LD H,(IX + PROC.CURH2) + INC HL + LD (IX + PROC.CURL2),L + LD (IX + PROC.CURH2),H +.L1 CALL PrnProcess + LD IX,ProcessOne + LD L,(IX + PROC.CURL1) + LD H,(IX + PROC.CURH1) + INC HL + LD (IX + PROC.CURL1),L + LD (IX + PROC.CURH1),H + LD A,H + OR L + JR NZ,.L2 + LD L,(IX + PROC.CURL2) + LD H,(IX + PROC.CURH2) + INC HL + LD (IX + PROC.CURL2),L + LD (IX + PROC.CURH2),H +.L2 JP PrnProcess + +ProcessAll DW 178 ; X + DW 138 ; Y + DW 284 ; X + DW 0 ; 樥 + DW 0 ; ४ 樥 + DW 0 ; ᨬ + DW 0 + DW 0 ; 饥 + DW 0 + DB COLORP.BLUE + COLORI.WHITE; 0x4F + +ProcessOne DW 178 ; X + DW 120 ; Y + DW 284 ; X + DW 0 ; 樥 + DW 0 ; ४ 樥 + DW 0 ; ᨬ + DW 0 + DW 0 ; 饥 + DW 0 + DB COLORP.BLUE + COLORI.WHITE + +PathStr DB 0x80,0x00,0x00,0x00 +PathLen DB 0x00 + DW 170,106,324 + DB 0xF0 +CurPath DB 0x81 DUP 0 + +;[]==========================================================[] +ReNameR LD A,(IY + PANEL.EFL) + OR (IY + PANEL.EFH) + RET Z + 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.FFL) + LD H,(IY + PANEL.FFH) + LD E,(IY + PANEL.CFL) + LD D,(IY + PANEL.CFH) + ADD HL,DE + BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) + JR Z,ReNameNr + ADD HL,HL + ADD HL,HL + ADD HL,HL + ADD HL,HL +; LD A,H +; OR 0xC0 +; LD H,A + SET 6,H + SET 7,H + INC HL + INC HL + LD DE,CurName + LD BC,0x000D + LDIR + LD A,DIR.M_Dir;0x10 + LD (CurAttrib),A + JR ReNameN + +ReNameNr ADD HL,HL ; *2 + ADD HL,HL ; *4 + ADD HL,HL ; *8 + LD E,L + LD D,H + ADD HL,HL ; *10 + ADD HL,DE ; *18 +; LD A,H +; OR 0xC0 +; LD H,A + SET 6,H + SET 7,H ; | 0xC000 + PUSH HL + INC HL + LD DE,CurName + CALL MakeDOSname + POP HL + LD BC,FileHDR.Attr;0x000E + ADD HL,BC + LD A,(HL) + LD (CurAttrib),A +ReNameN POP AF + SETPORT WINSP.CPU3,,0 + LD HL,CurName + LD A,(HL) + CP '.' + RET Z + CP '\\' + RET Z + LD DE,Name + LD C,0 + LD A,' ' +.L1 LDI + CP (HL) + JR C,.L1 + LD A,C + NEG + LD (NameLen),A + CALL ResInvert + LD HL,SetInvert + PUSH HL + LD HL,CurName + LD DE,RNfile + LD C,0x0C + SUB A +.L2 LDI + CP (HL) + JR NZ,.L2 + OR C + JR Z,RNnxt + LD B,C + LD A,' ' +.L3 LD (DE),A + INC DE + DJNZ .L3 +RNnxt + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 208,81,224,62 + W_FILL 4,2,216,10,COLORI.BLACK + W_TEXT 94,3,COLORI.WHITE,"Rename" + W_BUTTON 32,42,72,14 + W_TEXT 60,45,COLORP.HIGHGRAY,"Ok" + W_BUTTON 120,42,72,14 + W_TEXT 140,45,COLORP.HIGHGRAY,"Cancel" + W_TEXT 14,17,COLORP.HIGHGRAY,"Rename: " +RNfile EQU $ - STRLEN(" ") - 2 + W_TEXT 40,29,COLORP.HIGHGRAY,"To:" + W_BORDER 60,26,134,12 + W_FILL 62,27,130,10,COLORI.WHITE + W_END + LD IX,NameStr + LD HL,ReNameTab + CALL InputLine + WINDOWCLOSE + RET C + LD A,(NameLen) + OR A + RET Z + ;[ ] - २ 䠩 Name 䠩 ᥣ 뢠騩 0 . ILDel1 + LD HL,Name + LD E,A + LD D,0 + ADC HL,DE + LD (HL),0 + CALL SetClock + LD HL,SetMouse + EX (SP),HL + PUSH HL + BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) + JR Z,ReName0 + PUSH IY + POP HL + LD DE,PANEL.CURRPATH + ADD HL,DE + LD DE,WorkBuffer + PUSH DE + SUB A +.L1 LDI + CP (HL) + JR NZ,.L1 + EX DE,HL + LD A,'\\' +.L2 DEC HL + CP (HL) + JR NZ,.L2 + INC HL + LD (HL),0x00 + POP HL + PUSH IY + SPDSS DSSF.CHDIR + POP IY + PUSH AF + CALL C,DOSError + POP AF + RET C +ReName0 LD HL,CurName + LD DE,Name + PUSH IY + SPDSS DSSF.RENAME + POP IY + PUSH AF + CALL C,DOSError + POP AF + RET C + LD A,(CurAttrib) + BIT DIR.B_Dir,A + JP NZ,ReNameDIR + LD HL,Name + LD DE,PrevFile + LD A,(NameLen) + LD B,A +.L1 LD A,(HL) + CALL CorrBigChar + LD (DE),A + INC HL + INC DE + DJNZ .L1 + SUB A + LD (DE),A + BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) + JR NZ,ReName1 + CALL ReadDIR + CALL FindPrevFile + CALL PrintDIR + CALL PrnFileInfo + PUSH IY + POP IX + LD DE,PANEL.BARXL + ADD IX,DE + CALL InitScrollBar + LD A,(IY + PANEL.VIEWFLAG) + AND VIEWFLAG.MASK + PUSH AF + CALL Z,PrnHScrBar + POP AF + CALL NZ,PrnVScrBar +ReName1 LD HL,LeftPanel + PANEL.CURRPATH + LD DE,RightPanel + PANEL.CURRPATH +ReName2 LD A,(DE) + CP (HL) + RET NZ + INC HL + INC DE + LD A,(HL) + OR A + JR NZ,ReName2 + LD A,(DE) + OR A + RET NZ + PUSH IY + BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + LD IY,RightPanel + JR Z,.L1 + LD IY,LeftPanel +.L1 BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) + JR NZ,ReNameE + CALL ReadDIR + CALL PrintDIR + CALL PrnFileInfo + PUSH IY + POP IX + LD DE,PANEL.BARXL + ADD IX,DE + CALL InitScrollBar + LD A,(IY + PANEL.VIEWFLAG) + AND VIEWFLAG.MASK + PUSH AF + CALL Z,PrnHScrBar + POP AF + CALL NZ,PrnVScrBar +ReNameE POP IY + RET + +ReNameDIR LD HL,Name + LD DE,PrevDIR + LD A,(NameLen) + LD B,A +.L1 LD A,(HL) + CALL CorrSmallChar + LD (HL),A + LD (DE),A + INC HL + INC DE + DJNZ .L1 + SUB A + LD (DE),A + LD A,(TreeFlag) + OR A + JP Z,ReNameExit + BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) + EX AF,AF' + PUSH IY + GETPORT WINSP.CPU3 + PUSH AF + LD IY,LeftPanel + BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) + JR NZ,.L2 + LD IY,RightPanel +.L2 BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + LD A,(RAMPAGES.LEFTPANEL) + JR Z,.L3 + LD A,(RAMPAGES.RIGHTPANEL) +.L3 + SETPORT WINSP.CPU3,,0 + EX AF,AF' + JR Z,ReNameTree + LD L,(IY + PANEL.FFL) + LD H,(IY + PANEL.FFH) + LD E,(IY + PANEL.CFL) + LD D,(IY + PANEL.CFH) + ADD HL,DE + ADD HL,HL ; *2 + ADD HL,HL ; *4 + ADD HL,HL ; *8 + ADD HL,HL ; *10 +; LD A,H +; OR 0xC0 +; LD H,A + SET 6,H + SET 7,H + EX DE,HL + JR ReNameEx + +ReNameTree BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + LD HL,LeftPanel + JR NZ,.L1 + LD HL,RightPanel +.L1 LD DE,PANEL.CURRPATH + ADD HL,DE + INC HL + INC HL + IF TREE_REZID + CALL FindTreeDIRR + ELSE + CALL FindTreeDIRR + ENDIF + JP C,ReNameT + LD HL,0xC001 - 0x10 + LD BC,0x0010 +.L2 ADD HL,BC + BIT 0,(HL) + JR Z,.L2 + ADD HL,BC + DEC HL +FRName1 PUSH HL + LD DE,CurName + INC HL + INC HL +FRName2 LD A,(DE) + OR A + JR Z,FRName4 + CP (HL) + JR NZ,FRName3 + INC HL + INC DE + JR FRName2 + +FRName3 POP HL + BIT 7,(HL) + JR NZ,ReNameT + ADD HL,BC + JR FRName1 + +FRName4 LD A,(HL) + OR A + JR NZ,FRName3 + POP DE +ReNameEx LD HL,Name + INC DE + INC DE + LD C,0x0D + SUB A +.L1 LDI + CP (HL) + JR NZ,.L1 + LD B,C +.L2 LD (DE),A + INC DE + DJNZ .L2 + LD HL,WorkBuffer + PUSH IY + SPDSS DSSF.CURDIR + POP IY + LD HL,BegDIR + PUSH IY + SPDSS DSSF.CHDIR + POP IY + JR C,ReNameC + LD HL,TreeName + LD DE,WorkBuffer + 0x100 + LD A,(FileAtribut) + PUSH IY + SPDSS DSSF.F_FIRST,0 + POP IY + JR C,ReNameC + LD HL,TreeName + PUSH IY + SPDSS DSSF.CREATE,,0 + POP IY + JR C,ReNameC + LD L,(IY + PANEL.EFL) + LD H,(IY + PANEL.EFH) + ADD HL,HL + ADD HL,HL + ADD HL,HL + ADD HL,HL + EX DE,HL + LD HL,0xC000 + PUSH AF + SPDSS DSSF.WRITE + POP AF + SPDSS DSSF.CLOSE +ReNameC LD HL,WorkBuffer + SPDSS DSSF.CHDIR +ReNameT POP AF + SETPORT WINSP.CPU3,,0 + POP IY + BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) + JR NZ,ReNameExt1 + CALL ReadDIR + CALL FindPrevDIR + CALL PrintDIR + CALL PrnFileInfo + PUSH IY + POP IX + LD DE,PANEL.BARXL + ADD IX,DE + CALL InitScrollBar + LD A,(IY + PANEL.VIEWFLAG) + AND VIEWFLAG.MASK + PUSH AF + CALL Z,PrnHScrBar + POP AF + CALL NZ,PrnVScrBar + PUSH IY + BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + LD IY,RightPanel + JR Z,.L1 + LD IY,LeftPanel +.L1 CALL PrintDIR + CALL PrnFileInfo + PUSH IY + POP IX + LD DE,PANEL.BARXL + ADD IX,DE + CALL PrnVScrBar + POP IY + RET + +ReNameExt1 INC SP + INC SP + CALL PrintDIR + CALL PrnFileInfo + CALL SetInvert + PUSH IY + POP IX + LD DE,PANEL.BARXL + ADD IX,DE + CALL PrnVScrBar + IF TREE_REZID + CALL TestTreeR.TestTreeBeg + ELSE + CALL TestTreeR.TestTreeBeg + ENDIF + PUSH IY + IF TREE_REZID + CALL MakeTreePathR + ELSE + CALL MakeTreePathR + ENDIF + EX DE,HL + BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + LD IY,RightPanel + JR Z,.L1 + LD IY,LeftPanel +.L1 PUSH IY + POP HL + LD BC,PANEL.CURRPATH + ADD HL,BC + INC HL + INC HL + EX DE,HL + SUB A +.L2 LDI + CP (HL) + JR NZ,.L2 + LD (DE),A + CALL PrintPath + POP IY + RET + +ReNameExit CALL ReadDIR + CALL FindPrevDIR + CALL PrintDIR + CALL PrnFileInfo + PUSH IY + POP IX + LD DE,PANEL.BARXL + ADD IX,DE + CALL InitScrollBar + LD A,(IY + PANEL.VIEWFLAG) + AND VIEWFLAG.MASK + PUSH AF + CALL Z,PrnHScrBar + POP AF + CALL NZ,PrnVScrBar + LD HL,LeftPanel + PANEL.CURRPATH + LD DE,RightPanel + PANEL.CURRPATH +RNameE1 LD A,(DE) + CP (HL) + RET NZ + INC HL + INC DE + LD A,(HL) + OR A + JR NZ,RNameE1 + LD A,(DE) + OR A + RET NZ + PUSH IY + BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + LD IY,RightPanel + JR Z,.L1 + LD IY,LeftPanel +.L1 BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) + JR NZ,RNameE2 + CALL ReadDIR + CALL PrintDIR + CALL PrnFileInfo + PUSH IY + POP IX + LD DE,PANEL.BARXL + ADD IX,DE + CALL InitScrollBar + LD A,(IY + PANEL.VIEWFLAG) + AND VIEWFLAG.MASK + PUSH AF + CALL Z,PrnHScrBar + POP AF + CALL NZ,PrnVScrBar +RNameE2 POP IY + RET + +CurAttrib DB 0x00 +CurName DB 0x0D DUP 0x00 +NameStr DB 0x0C,0x00,0x00,0x00 +NameLen DB 0x00 + DW 272,110,104 + DB COLORP.WHITE + COLORI.BLACK +Name DB 0x0D DUP 0x00 + +;[]==========================================================[] +MakeDIRR CALL ResInvert + LD HL,SetInvert + PUSH HL + SETPORT WINSP.Y_PORT,0xC0 + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 200,81,240,62 + W_FILL 4,2,232,10,COLORI.BLACK + W_TEXT 84,3,COLORI.WHITE,"Make directory" + W_BUTTON 40,42,72,14 + W_TEXT 68,45,COLORP.HIGHGRAY,"Ok" + W_BUTTON 128,42,72,14 + W_TEXT 148,45,COLORP.HIGHGRAY,"Cancel" + W_TEXT 12,25,COLORP.HIGHGRAY,"New directory:" + W_BORDER 86,22,134,12 + W_FILL 88,23,130,10,COLORI.WHITE + W_END + LD IX,MakeDIRStr + LD HL,MakeDIRTab + CALL InputLine + WINDOWCLOSE + RET C + LD A,(MDIRLen) + OR A + RET Z + LD HL,NewDIR + LD B,A +MkDIRlp LD A,(HL) + INC HL + CP ':' + RET Z + CP '\\' + RET Z + DJNZ MkDIRlp + CALL SetClock + LD HL,SetMouse + PUSH HL + BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + JR Z,MkDIR0 + PUSH IY + POP HL + LD DE,PANEL.CURRPATH + ADD HL,DE + PUSH IY + SPDSS DSSF.CHDIR + POP IY + PUSH AF + CALL C,DOSError + POP AF + RET C +MkDIR0 LD HL,NewDIR + PUSH IY + SPDSS DSSF.MKDIR + POP IY + PUSH AF + CALL C,DOSError + POP AF + RET C + LD HL,NewDIR + LD DE,PrevDIR + LD A,(MDIRLen) + LD B,A +.L1 LD A,(HL) + CALL CorrSmallChar + LD (HL),A + LD (DE),A + INC HL + INC DE + DJNZ .L1 + SUB A + LD (DE),A + LD A,(TreeFlag) + OR A + JP Z,MkDIRnxt1 + BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) + EX AF,AF' + PUSH IY + LD IY,LeftPanel + BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) + JR NZ,.L2 + LD IY,RightPanel +.L2 LD A,(IY + PANEL.EFH) + BIT 2,A + JP NZ,MkDIRn0 + GETPORT WINSP.CPU3 + PUSH AF + BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + LD A,(RAMPAGES.LEFTPANEL) + JR Z,.L3 + LD A,(RAMPAGES.RIGHTPANEL) +.L3 + SETPORT WINSP.CPU3,,0 + EX AF,AF' + JR NZ,FnTree1 + BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + LD HL,LeftPanel + JR NZ,.L4 + LD HL,RightPanel +.L4 LD DE,PANEL.CURRPATH + ADD HL,DE + INC HL + INC HL + IF TREE_REZID + CALL FindTreeDIRR + ELSE + CALL FindTreeDIRR + ENDIF + JP C,MkDIRn + LD HL,0xC001 - 0x10 + LD BC,0x0010 +.L5 ADD HL,BC + BIT 0,(HL) + JR Z,.L5 + DEC HL + JR FnTree2 +FnTree1 LD L,(IY + PANEL.FFL) + LD H,(IY + PANEL.FFH) + LD E,(IY + PANEL.CFL) + LD D,(IY + PANEL.CFH) + ADD HL,DE + ADD HL,HL + ADD HL,HL + ADD HL,HL + ADD HL,HL +; LD A,H +; OR 0xC0 +; LD H,A + SET 6,H + SET 7,H +FnTree2 LD E,(HL) + LD BC,0x000F + ADD HL,BC + LD D,(HL) + LD (HL),B + INC HL + INC E + LD A,D + INC A + JR Z,MkDIRend + LD A,E + AND 0x7F + LD IXL,A + LD A,(HL) + AND 0x7F + CP IXL + JR NZ,MkDIRend +MkDIR10 LD A,(HL) + AND 0x7F + CP IXL + JR Z,MkDIR11 + ADD HL,BC + INC HL + JR MkDIR10 + +MkDIR11 LD A,(HL) + RES 7,(HL) + ADD HL,BC + LD D,(HL) + LD (HL),B + INC HL + BIT 7,A + JR Z,MkDIR10 +MkDIR12 LD A,(HL) + AND 0x7F + CP IXL + JR C,MkDIRend + ADD HL,BC + LD D,(HL) + LD (HL),B + INC HL + LD A,D + INC A + JR NZ,MkDIR12 +MkDIRend PUSH HL + PUSH DE + LD C,L + LD B,H + LD L,(IY + PANEL.EFL) + LD H,(IY + PANEL.EFH) + ADD HL,HL + ADD HL,HL + ADD HL,HL + ADD HL,HL +; LD A,H +; OR 0xC0 +; LD H,A + SET 6,H + SET 7,H + PUSH HL + OR A + SBC HL,BC + LD C,L + LD B,H + POP HL + LD A,L + LD D,H + ADD A,0x10 + LD E,A + JR NC,.L1 + INC D +.L1 LD A,B + OR C + JR Z,.L2 + DEC HL + DEC DE + LDDR +.L2 POP BC + POP DE + LD A,B + EX AF,AF' + LD A,C + SET 7,A + LD (DE),A + INC DE + SUB A + LD (DE),A + INC DE + LD HL,NewDIR + LD C,0x0D +.L3 LDI + CP (HL) + JR NZ,.L3 + LD B,C +.L4 LD (DE),A + INC DE + DJNZ .L4 + EX AF,AF' + LD (DE),A + LD L,(IY + PANEL.EFL) + LD H,(IY + PANEL.EFH) + INC HL + LD (IY + PANEL.EFL),L + LD (IY + PANEL.EFH),H + LD HL,WorkBuffer + PUSH IY + SPDSS DSSF.CURDIR + POP IY + LD HL,BegDIR + PUSH IY + SPDSS DSSF.CHDIR + POP IY + JR C,MkDIR2 + LD HL,TreeName + LD DE,WorkBuffer+0x100 + LD A,(FileAtribut) + PUSH IY + SPDSS DSSF.F_FIRST,0 + POP IY + JR C,MkDIR2 + LD HL,TreeName + PUSH IY + SPDSS DSSF.CREATE,,0 + POP IY + JR C,MkDIR2 + LD L,(IY + PANEL.EFL) + LD H,(IY + PANEL.EFH) + ADD HL,HL + ADD HL,HL + ADD HL,HL + ADD HL,HL + EX DE,HL + LD HL,0xC000 + PUSH AF + SPDSS DSSF.WRITE + POP AF + SPDSS DSSF.CLOSE +MkDIR2 LD HL,WorkBuffer + SPDSS DSSF.CHDIR +MkDIRn POP AF + SETPORT WINSP.CPU3,,0 +MkDIRn0 POP IY + BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) + JR NZ,MkDIRn1 +MkDIRnxt1 CALL ReadDIR + CALL FindPrevDIR +MkDIRn1 CALL PrintDIR + CALL PrnFileInfo + PUSH IY + POP IX + LD DE,PANEL.BARXL + ADD IX,DE + CALL InitScrollBar + LD A,(IY + PANEL.VIEWFLAG) + AND VIEWFLAG.MASK + PUSH AF + CALL Z,PrnHScrBar + POP AF + CALL NZ,PrnVScrBar + PUSH IY + BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + LD IY,RightPanel + JR Z,.L1 + LD IY,LeftPanel +.L1 BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) + JR NZ,MkDIRn2 + LD HL,LeftPanel + PANEL.CURRPATH + LD DE,RightPanel + PANEL.CURRPATH +MkDIRrf LD A,(DE) + CP (HL) + JR NZ,MkDIRex + INC HL + INC DE + LD A,(HL) + OR A + JR NZ,MkDIRrf + LD A,(DE) + OR A + JR NZ,MkDIRex + CALL ReadDIR +MkDIRn2 CALL PrintDIR + CALL PrnFileInfo + PUSH IY + POP IX + LD DE,PANEL.BARXL + ADD IX,DE + CALL InitScrollBar + LD A,(IY + PANEL.VIEWFLAG) + AND VIEWFLAG.MASK + PUSH AF + CALL Z,PrnHScrBar + POP AF + CALL NZ,PrnVScrBar +MkDIRex POP IY + RET + +MakeDIRStr DB 0x0C,0x00,0x00,0x00 +MDIRLen DB 0x00 + DW 290,106,104 + DB COLORP.WHITE + COLORI.BLACK +NewDIR DB 0x0D DUP 0x00 + +;[]==========================================================[] +DeleteFilesR LD A,(IY + PANEL.EFL) + OR (IY + PANEL.EFH) + RET Z + SETPORT WINSP.Y_PORT,0xC0 + LD A,(IY + PANEL.MFL) + OR (IY + PANEL.MFH) + JR NZ,DeleteMark + 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.FFL) + LD H,(IY + PANEL.FFH) + LD E,(IY + PANEL.CFL) + LD D,(IY + PANEL.CFH) + ADD HL,DE + BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) + JR Z,DelFile + ADD HL,HL + ADD HL,HL + ADD HL,HL + ADD HL,HL +; LD A,H +; OR 0xC0 +; LD H,A + SET 6,H + SET 7,H + LD (AdrDelFile),HL + INC HL + JR DelFil1 + +DelFile 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 + SET 6,H + SET 7,H + LD (AdrDelFile),HL +DelFil1 INC HL + LD E,(HL) + POP AF + SETPORT WINSP.CPU3,,0 + LD A,E + CP '.' + RET Z + CP '\\' + RET Z + JR DelNext + +DeleteMark + 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 HL,0xC000 - FileHDR.SIZE + LD BC,FileHDR.SIZE +.L2 ADD HL,BC + BIT FileHDR.B_MARK,(HL) + JR Z,.L2 + LD (AdrDelFile),HL + POP AF + SETPORT WINSP.CPU3,,0 +DelNext CALL ResInvert + LD HL,SetInvert + PUSH HL + 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 + SUB A + LD (DeleteFlag),A +DeleteMain + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 180,80,280,56 + W_FILL 4,2,272,10,COLORI.BLACK + W_TEXT 116,3,COLORI.WHITE,"Delete file" + W_TEXT 56,16,COLORP.HIGHGRAY,"The following file will be DELETED:" + W_BUTTON 16,38,56,14 + W_TEXT 28,41,COLORP.HIGHGRAY,"Delete" + W_BUTTON 80,38,56,14 + W_TEXT 102,41,COLORP.HIGHGRAY,"All" + W_BUTTON 144,38,56,14 + W_TEXT 162,41,COLORP.HIGHGRAY,"Skip" + W_BUTTON 208,38,56,14 + W_TEXT 220,41,COLORP.HIGHGRAY,"Cancel" + W_END + PUSH IY + POP HL + LD DE,PANEL.CURRPATH + ADD HL,DE + LD DE,WorkBuffer + SUB A +.L1 LDI + CP (HL) + JR NZ,.L1 + LD (DE),A + BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) + JR NZ,DelLp0 + DEC HL + LD A,'\\' + CP (HL) + JR Z,.L2 + LD (DE),A + INC DE +.L2 CALL MakeDELname +DelLp0 LD IX,0x00F8 + LD HL,WorkBuffer + LD DE,320 + LD BC,106 + LD A,COLORP.HIGHGRAY + COLORI.BLACK + CALL PrnRangPathC +DelLoop LD IX,DeleteTab + CALL TestCoords + SPDSS DSSF.SCANKEY + JR Z,DelLoop + LD A,B + OR A + JR NZ,DelLoop + LD A,E + CP 0x1B + LD HL,DelExit + JR Z,DelJump + CP 0x0D + LD HL,DelDelete + JR Z,DelJump + RES 5,A + CP 'D' + LD HL,DelDelete + JR Z,DelJump + CP 'A' + LD HL,DelAll + JR Z,DelJump + CP 'S' + LD HL,DelSkip + JR Z,DelJump + CP 'C' + JR NZ,DelLoop + LD HL,DelExit +DelJump + WINDOWCLOSE + JP (HL) + +AdrDelFile DEFW 0x0000 +DeleteFlag DEFB 0x00 + +MakeDELname LD HL,(AdrDelFile) + INC HL + BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) +; JR NZ,MakeDELn1 + JP Z,MakeDOSname +;MakeDELn1 + INC HL + SUB A +.L1 LDI + CP (HL) + JR NZ,.L1 + LD (DE),A + RET + +;-------------------------------------------------------------- +DelSkip LD C,(IY + PANEL.MFL) + LD B,(IY + PANEL.MFH) + LD A,B + OR C + JP Z,DelExit + LD IX,(AdrDelFile) + RES 0,(IX + 0x00) + LD L,(IY + PANEL.MBL1) + LD H,(IY + PANEL.MBH1) + LD E,(IX + FileHDR.SizeBytes) + LD D,(IX + FileHDR.SizeBytes + 1) + OR A + SBC HL,DE + LD (IY + PANEL.MBL1),L + LD (IY + PANEL.MBH1),H + LD L,(IY + PANEL.MBL2) + LD H,(IY + PANEL.MBH2) + ; [ ] FAT32 + LD A,(IY + PANEL.MBL3) + LD E,(IX + FileHDR.SizeBytes + 2) + LD D,(IX + FileHDR.SizeBytes + 3) + SBC HL,DE + ; [ ] fat32 + SBC A,0 + LD (IY + PANEL.MBL3),A + LD (IY + PANEL.MBL2),L + LD (IY + PANEL.MBH2),H + DEC BC + LD (IY + PANEL.MFL),C + LD (IY + PANEL.MFH),B + LD A,B + OR C + JP Z,DelExit + LD HL,(AdrDelFile) + LD DE,FileHDR.SIZE +.L1 ADD HL,DE + BIT FileHDR.B_MARK,(HL) + JR Z,.L1 + LD (AdrDelFile),HL + CALL PrintDIR + JP DeleteMain + +DelDelete CALL SetClock + BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) + JR Z,DelDel0 + PUSH IY + POP HL + LD DE,PANEL.CURRPATH + ADD HL,DE + LD DE,WorkBuffer + PUSH DE + SUB A +.L1 LDI + CP (HL) + JR NZ,.L1 + EX DE,HL + LD A,'\\' +.L2 DEC HL + CP (HL) + JR NZ,.L2 + INC HL + LD (HL),0x00 + POP HL + PUSH IY + SPDSS DSSF.CHDIR + POP IY + PUSH AF + CALL C,DOSError + POP AF + JP C,DelExit +DelDel0 LD IX,(AdrDelFile) + LD DE,WorkBuffer + PUSH DE + CALL MakeDELname + POP HL + LD C,DSSF.RMDIR ;0x1C ;RMDIR + BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + JR NZ,DelDel1 + LD A,(IX + FileHDR.Attr) + BIT DIR.B_Dir,A + JR NZ,DelDel1 + LD C,DSSF.DELETE ;0x0E ;DELETE +DelDel1 PUSH IY + SPDSS + POP IY + JR NC,DelDel2 + CALL DOSError + OR A + CALL NZ,BegDIRECTORY + JP DelExit +DelDel2 LD A,0x01 + LD (DeleteFlag),A + CALL SetMouse + JP DelSkip + +DelAll BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + JR NZ,DelDelete + LD A,0x01 + LD (DeleteFlag),A + CALL SetClock + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 160,88,320,48 + W_FILL 4,2,312,10,COLORI.BLACK + W_TEXT 132,3,COLORI.WHITE,"Delete files" + W_TEXT 8,16,COLORP.HIGHGRAY,"Delete:" + W_BORDER 16,28,288,12 + W_FILL 18,29,284,10,COLORI.WHITE + W_END + PUSH IY + POP HL + LD DE,PANEL.CURRPATH + ADD HL,DE + LD (DelFrom),HL + LD IX,ProcessDel + LD L,(IY + PANEL.MFL) + LD H,(IY + PANEL.MFH) + LD A,H + OR L + JR NZ,.L1 + INC HL +.L1 LD (IX + PROC.MAXL1),L + LD (IX + PROC.MAXH1),H + SUB A + LD (IX + PROC.MAXL2),A + LD (IX + PROC.MAXH2),A + CALL InitProcess +DeleteAllLp LD HL,0x0000 +DelFrom EQU $-2 + LD DE,WorkBuffer + SUB A +.L1 LDI + CP (HL) + JR NZ,.L1 + DEC HL + LD A,'\\' + CP (HL) + JR Z,.L2 + LD (DE),A + INC DE +.L2 CALL MakeDELname + MAKEWINDOW WINSUBOBJ.WOBIND + W_FILL 208,104,256,8,COLORI.HIGHGRAY + W_END + LD IX,0x0100 + LD HL,WorkBuffer + LD DE,208 + LD BC,104 + LD A,COLORP.HIGHGRAY + COLORI.BLACK + CALL PrnRangPathL + SPDSS DSSF.SCANKEY + LD HL,SC.ESC << 8 | 0x1B + OR A + SBC HL,DE + JP Z,DelAllExit + LD IX,(AdrDelFile) + LD DE,WorkBuffer + PUSH DE + CALL MakeDELname + POP HL + LD A,(IX + FileHDR.Attr) + BIT DIR.B_Dir,A + LD C,DSSF.DELETE ;0x0E ;DELETE + JR Z,.L3 + LD C,DSSF.RMDIR ;0x1C ;RMDIR +.L3 PUSH IY + SPDSS + POP IY + JR NC,DelA1 + CALL DOSError + OR A + CALL NZ,BegDIRECTORY + JP DelAllExit + +DelA1 LD IX,ProcessDel + LD L,(IX + PROC.CURL1) + LD H,(IX + PROC.CURH1) + INC HL + LD (IX + PROC.CURL1),L + LD (IX + PROC.CURH1),H + CALL PrnProcess + LD C,(IY + PANEL.MFL) + LD B,(IY + PANEL.MFH) + LD A,B + OR C + JP Z,DelAllExit + LD IX,(AdrDelFile) + RES FileHDR.B_MARK,(IX + FileHDR.Flag) + LD L,(IY + PANEL.MBL1) + LD H,(IY + PANEL.MBH1) + LD E,(IX + FileHDR.SizeBytes) + LD D,(IX + FileHDR.SizeBytes + 1) + OR A + SBC HL,DE + LD (IY + PANEL.MBL1),L + LD (IY + PANEL.MBH1),H + LD L,(IY + PANEL.MBL2) + LD H,(IY + PANEL.MBH2) + ; [ ] FAT32 + LD A,(IY + PANEL.MBL3) + LD E,(IX + FileHDR.SizeBytes + 2) + LD D,(IX + FileHDR.SizeBytes + 3) + SBC HL,DE + ; [ ] fat32 + SBC A,0 + LD (IY + PANEL.MBL3),A + LD (IY + PANEL.MBL2),L + LD (IY + PANEL.MBH2),H + DEC BC + LD (IY + PANEL.MFL),C + LD (IY + PANEL.MFH),B + LD A,B + OR C + JP Z,DelAllExit + LD HL,(AdrDelFile) + LD DE,FileHDR.SIZE +.L1 ADD HL,DE + BIT FileHDR.B_MARK,(HL) + JR Z,.L1 + LD (AdrDelFile),HL + JP DeleteAllLp + +ProcessDel DW 178 + DW 117 + DW 284 + DW 0 + DW 0 + DW 0 + DW 0 + DW 0 + DW 0 + DB COLORP.BLUE + COLORI.WHITE + +DelAllExit HALT + WINDOWCLOSE +DelExit BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) + JR NZ,DelTreeDIR1 + LD IX,(AdrDelFile) + BIT DIR.B_Dir,(IX + FileHDR.Attr) + JR NZ,DelTreeDIR +DelExt1 POP AF + SETPORT WINSP.CPU3,,0 + LD HL,SetMouse + PUSH HL + LD A,(DeleteFlag) + OR A + JP NZ,RefreshDIR + CALL PrintDIR + JP PrnFileInfo + +DelTreeDIR LD A,(TreeFlag) + OR A + JR Z,DelExt1 +DelTreeDIR1 LD A,(DeleteFlag) + OR A + JR Z,DelExt1 + LD DE,DelName + CALL MakeDELname + POP AF + SETPORT WINSP.CPU3,,0 + CALL SetClock + LD HL,SetMouse + EX (SP),HL + PUSH HL + BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) + EX AF,AF' + PUSH IY + GETPORT WINSP.CPU3 + PUSH AF + LD IY,LeftPanel + BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) + JR NZ,.L1 + LD IY,RightPanel +.L1 BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + LD A,(RAMPAGES.LEFTPANEL) + JR Z,.L2 + LD A,(RAMPAGES.RIGHTPANEL) +.L2 + SETPORT WINSP.CPU3,,0 + EX AF,AF' + JR NZ,DelTree1 + BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + LD HL,LeftPanel + JR NZ,.L3 + LD HL,RightPanel +.L3 LD DE,PANEL.CURRPATH + ADD HL,DE + INC HL + INC HL + IF TREE_REZID + CALL FindTreeDIRR + ELSE + CALL FindTreeDIRR + ENDIF + JP C,DelDIRn + LD HL,0xC001-0x10 + LD BC,0x0010 +.L4 ADD HL,BC + BIT 0,(HL) + JR Z,.L4 + DEC HL + LD A,(HL) + AND 0x7F + INC A + LD IXL,A + ADD HL,BC +DlTree1 LD A,(HL) + AND 0x7F + CP IXL + JR NZ,DlTr31 + PUSH HL + LD DE,DelName + INC HL + INC HL +DlTree2 LD A,(DE) + OR A + JR Z,DlTree4 + CP (HL) + JR NZ,DlTree3 + INC HL + INC DE + JR DlTree2 +DlTree3 POP HL + BIT 7,(HL) + JP NZ,DelDIRn +DlTr31 ADD HL,BC + JR DlTree1 + +DlTree4 LD A,(HL) + OR A + JR NZ,DlTree3 + POP HL + JR DelTree2 + +DelTree1 LD L,(IY + PANEL.FFL) + LD H,(IY + PANEL.FFH) + LD E,(IY + PANEL.CFL) + LD D,(IY + PANEL.CFH) + ADD HL,DE + ADD HL,HL + ADD HL,HL + ADD HL,HL + ADD HL,HL +; LD A,H +; OR 0xC0 +; LD H,A + SET 6,H + SET 7,H +DelTree2 LD E,(HL) + INC HL + LD A,(HL) + LD BC,FileHDR.Attr;0x000E + ADD HL,BC + LD D,(HL) + INC HL + EX AF,AF' + PUSH DE + PUSH HL + LD C,L + LD B,H + LD L,(IY + PANEL.EFL) + LD H,(IY + PANEL.EFH) + ADD HL,HL + ADD HL,HL + ADD HL,HL + ADD HL,HL +; LD A,H +; OR 0xC0 +; LD H,A + SET 6,H + SET 7,H + OR A + SBC HL,BC + LD C,L + LD B,H + POP HL + LD D,H + LD A,L + SUB 0x10 + LD E,A + JR NC,.L1 + DEC D +.L1 PUSH DE + LD A,B + OR C + JR Z,.L2 + LDIR +.L2 POP HL + POP DE + DEC HL + LD (HL),D + LD A,L + SUB 0x0E + LD L,A + JR NC,.L3 + DEC H +.L3 EX AF,AF' + OR A + JR Z,.L4 + LD (HL),A +.L4 DEC HL + BIT 7,E + JR Z,DelTree3 + RES 7,E + LD BC,0x0010 + ADD HL,BC +DelTr1 SBC HL,BC + LD A,(HL) + AND 0x7F + CP E + JR C,DelTree3 + JR NZ,DelTr1 +.L1 SET 7,(HL) +DelTree3 LD L,(IY + PANEL.EFL) + LD H,(IY + PANEL.EFH) + DEC HL + LD (IY + PANEL.EFL),L + LD (IY + PANEL.EFH),H + LD L,(IY + PANEL.FFL) + LD H,(IY + PANEL.FFH) + LD E,(IY + PANEL.CFL) + LD D,(IY + PANEL.CFH) + LD A,H + OR L + JR Z,DelTree4 + DEC HL + LD (IY + PANEL.FFL),L + LD (IY + PANEL.FFH),H + ADD HL,DE + LD C,(IY + PANEL.EFL) + LD B,(IY + PANEL.EFH) + INC HL + SBC HL,BC + JR NC,DelTree4 + INC DE +DelTree4 LD (IY + PANEL.CFL),E + LD (IY + PANEL.CFH),D + LD HL,WorkBuffer + PUSH IY + SPDSS DSSF.CURDIR + POP IY + LD HL,BegDIR + PUSH IY + SPDSS DSSF.CHDIR + POP IY + JR C,DelDIR2 + LD HL,TreeName + LD DE,WorkBuffer + 0x100 + LD A,(FileAtribut) + PUSH IY + SPDSS DSSF.F_FIRST,0 + POP IY + JR C,DelDIR2 + LD HL,TreeName + PUSH IY + SPDSS DSSF.CREATE,,0 + POP IY + JR C,DelDIR2 + LD L,(IY + PANEL.EFL) + LD H,(IY + PANEL.EFH) + ADD HL,HL + ADD HL,HL + ADD HL,HL + ADD HL,HL + EX DE,HL + LD HL,0xC000 + PUSH AF + SPDSS DSSF.WRITE + POP AF + SPDSS DSSF.CLOSE +DelDIR2 LD HL,WorkBuffer + SPDSS DSSF.CHDIR +DelDIRn POP AF + SETPORT WINSP.CPU3,,0 + POP IY + BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) + JR NZ,DeleteExt1 + CALL ReadDIR + CALL PrintDIR + CALL PrnFileInfo + PUSH IY + POP IX + LD DE,PANEL.BARXL + ADD IX,DE + CALL InitScrollBar + LD A,(IY + PANEL.VIEWFLAG) + AND VIEWFLAG.MASK + PUSH AF + CALL Z,PrnHScrBar + POP AF + CALL NZ,PrnVScrBar + PUSH IY + BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + LD IY,RightPanel + JR Z,.L1 + LD IY,LeftPanel +.L1 CALL PrintDIR + CALL PrnFileInfo + PUSH IY + POP IX + LD DE,PANEL.BARXL + ADD IX,DE + CALL PrnVScrBar + POP IY + RET + +DeleteExt1 INC SP + INC SP + CALL PrintDIR + CALL PrnFileInfo + CALL SetInvert + PUSH IY + POP IX + LD DE,PANEL.BARXL + ADD IX,DE + CALL InitScrollBar + CALL PrnVScrBar + IF TREE_REZID + CALL MakeTreePathR + ELSE + CALL MakeTreePathR + ENDIF + PUSH IY + BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) + LD IY,RightPanel + JR Z,.L1 + LD IY,LeftPanel +.L1 CALL NewDIRECTORY + POP IY + RET + +DelName DB 13 DUP 0 + +;[]==========================================================[] +QuitConfirmWin + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 208,88,224,50 + W_FILL 4,2,216,10,COLORI.BLACK + W_TEXT 104,3,COLORI.WHITE,"Quit" + W_TEXT 28,19,COLORP.HIGHGRAY,"Do you want quit Flex Navigator ?" + W_BUTTON 32,32,72,14 + W_TEXT 58,35,COLORP.HIGHGRAY,"Yes" + W_BUTTON 120,32,72,14 + W_TEXT 150,35,COLORP.HIGHGRAY,"No" + W_END +.Loop LD IX,QuitTab + CALL TestCoords + SPDSS DSSF.SCANKEY + JR Z,.Loop + LD A,B + OR A + JR NZ,.Loop + LD A,E + CP 0x1B + JR Z,.Abort + CP 0x0D + JR Z,.OK + RES 5,A + CP 'Y' + JR Z,.OK + CP 'N' + JR NZ,.Loop +.Abort + WINDOWCLOSE + SCF + RET + +.OK + WINDOWCLOSE + OR A + RET diff --git a/rez2_fnmisc.a80 b/rez2_fnmisc.a80 new file mode 100644 index 0000000..ceeca1f --- /dev/null +++ b/rez2_fnmisc.a80 @@ -0,0 +1,965 @@ + +; LAST UPDATE: 28.05.2025 savelij + +;[]==========================================================[] +FileInfoR LD A,(IY+PANEL.EFL) + OR (IY+PANEL.EFH) + 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.FFL) + LD H,(IY+PANEL.FFH) + LD E,(IY+PANEL.CFL) + LD D,(IY+PANEL.CFH) + 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 + LD HL,WorkBuffer+1 + LD DE,WorkBuffer+0x20 + LD A,(HL) + CP '.' + RET Z + CALL SetClock + PUSH DE + CALL MakeDOSname + POP HL + LD DE,FName + LD C,12 + SUB A +.L2 LDI + CP (HL) + JR NZ,.L2 + LD A,C + OR A + JR Z,.L5 + LD B,A + LD A,0x20 +.L3 LD (DE),A + INC DE + DJNZ .L3 +.L5 LD HL,FAtributs + LD DE,FAttrib + LD C,(IX + FileHDR.Attr) + LD B,0x08 +.L6 RL C + LD A,'-' + JR NC,.L4 + LD A,(HL) +.L4 LD (DE),A + INC HL + INC DE + DJNZ .L6 + LD HL,FLen + LD B,0x10 + LD A,0x20 +.L10 LD (HL),A + INC HL + DJNZ .L10 + LD DE,FLen + BIT DIR.B_Dir,(IX + FileHDR.Attr) + JR Z,.L7 + LD HL,DirText + LD BC,0x000A + LDIR + JR .L8 + +.L7 LD L,(IX+0x0F) + LD H,(IX+0x10) + LD C,(IX+0x11) + LD B,(IX+0x12) + CALL ConvNumTxt32 + LD A,0x20 + LD (DE),A + INC DE + LD HL,Bytes + LD BC,0x0005 + LDIR +.L8 LD DE,FData + CALL GetData + LD DE,FTime + CALL GetTime + LD HL,WorkBuffer+0x20 + LD DE,WorkBuffer+0x30 + LD A,(FileAtribut) + PUSH IY + SPDSS DSSF.F_FIRST,0 + POP IY + JP C,SetMouse + LD HL,FClast + LD B,0x05 + LD A,0x20 +.L9 LD (HL),A + INC HL + DJNZ .L9 + LD HL,WorkBuffer+0x30+26 + LD E,(HL) + INC HL + LD D,(HL) + EX DE,HL + LD DE,FClast + CALL ConvNumTxt16 + 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 + W_TEXT 10,32,COLORP.HIGHGRAY,"Attributes: " +FAttrib EQU $ - STRLEN(" ") - 1 + W_TEXT 10,44,COLORP.HIGHGRAY,"Len: " +FLen EQU $ - STRLEN(" ") - 1 + W_TEXT 10,56,COLORP.HIGHGRAY,"Data: " +FData EQU $ - STRLEN(" ") - 1 +FTime EQU $ - STRLEN(" ") - 1 + W_TEXT 10,68,COLORP.HIGHGRAY,"First Claster: " +FClast EQU $ - STRLEN(" ") - 1 + W_BUTTON 44,80,72,14 + W_TEXT 72,83,COLORP.HIGHGRAY,"Ok" + W_END + CALL SetMouse +FileInfoLoop: LD IX,FileInfoTab + CALL TestCoords + SPDSS DSSF.SCANKEY + JR Z,FileInfoLoop + LD A,B + OR A + JR NZ,FileInfoLoop + LD A,E + CP 0x1B + JR Z,FileInfoExt + CP 0x0D + JR Z,FileInfoExt + RES 5,A + CP 'O' + JR NZ,FileInfoLoop +FileInfoExt: + WINDOWCLOSE + RET + +FAtributs: DEFB "--ad-shr" + +;[]==========================================================[] +PrintFileR LD A,(IY+PANEL.EFL) + OR (IY+PANEL.EFH) + 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.FFL) + LD H,(IY+PANEL.FFH) + LD E,(IY+PANEL.CFL) + LD D,(IY+PANEL.CFH) + 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.CURRPATH + 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,0x80 + CALL PrnRangPathL + LD IX,PrintFTab + CALL TestCoords + 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+PROC.MAXL1),L + LD (IX+PROC.MAXH1),H + LD (IX+PROC.MAXL2),E + LD (IX+PROC.MAXH2),0x00 + CALL InitProcess + 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 SetClock + LD HL,0xC000 + LD DE,0x4000 + LD A,(PrnFHandle) + SPDSS DSSF.READ + CALL SetMouse + 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 SetClock + LD A,(PrnFHandle) + PUSH DE + SPDSS DSSF.READ + POP BC + CALL SetMouse + 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 TestCoords + 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+PROC.CURL1) + LD H,(IX+PROC.CURH1) + INC HL + LD (IX+PROC.CURL1),L + LD (IX+PROC.CURH1),H + LD A,H + OR L + JR NZ,.L1 + LD L,(IX+PROC.CURL2) + LD H,(IX+PROC.CURH2) + INC HL + LD (IX+PROC.CURL2),L + LD (IX+PROC.CURH2),H +.L1 CALL PrnProcess + 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 ConvNumTxt8 + LD A,'.' + LD (DE),A + INC DE + LD A,L + CALL ConvNumTxt8 + 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,CMOS + 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 ConvNumTxt32 + 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 ConvNumTxt32 + 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: " +CMOS 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 TestCoords + 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" + +;[]==========================================================[] +DiskInfoR: LD HL,SetInvert + ;!FIXIT ஢ SAFE_PORTY + PUSH HL + SETPORT WINSP.Y_PORT,0xC0 + CALL SetClock + PUSH IY + SPDSS DSSF.CURDISK + POP IY + ADD A,'A' + LD (.CrDrive),A + ;!TEST + ;LD IX,0x0000 + ;LD HL,0x0000 + ;LD DE,WorkBuffer + ;LD BC,0x0105 + ;SUB 'A' + ;PUSH IY + ;RST ToDSS.DRV ;!FIXIT rst 0x18 + ;POP IY + ;JP C,SetMouse + LD B,0 + CALL .get_info + EX AF,AF' + LD A,D + AND E + EXX + AND D + AND E + INC A + EXX + JR Z,.no_full_info +; + PUSH DE ; ᢮ ஢, + PUSH HL ; 饥 - ஢, + PUSH BC ; ࠧ ᥪ + EXX + PUSH DE ; ᢮ ஢, + PUSH HL ; 饥 - ஢, + EX AF,AF' + PUSH AF ; ࠧ ᥪ + EX AF,AF' +.no_full_info: PUSH AF +; parsing + LD D,0 + LD HL,WorkBuffer +; HL " ⥬" + LD E,(HL) + ADD HL,DE + INC HL +; "਩ ᪠" + LD A,(HL) + PUSH HL + INC HL + LD (.serial_1),HL + INC HL + LD (.serial_2),HL + INC HL + LD (.serial_3),HL + INC HL + LD (.serial_4),HL + POP HL + LD E,A + ADD HL,DE + INC HL ; 㪠⥫ "⪠ ᪠" + INC HL +; ⪠ + LD (.buf_label),HL + LD DE,.NoLabel + LD B,11 +.loop1: SUB A + CP (HL) + JR Z,.DiskI2 + LD A,(DE) + CP (HL) + JR NZ,.DiskI1 + INC HL + INC DE + DJNZ .loop1 +.DiskI1: LD HL,WorkBuffer+0x2B +.buf_label EQU $-2 + JR NZ,.DiskI21F +.DiskI2: LD HL,.NoLabelT +.DiskI21F: LD DE,.Dlabel + LD BC,.Dlabel.Size + LDIR +; ਩ + LD DE,.SerialN + LD A,(WorkBuffer+0x2A) +.serial_4 EQU $-2 + CALL ConvHexTxt + LD A,(WorkBuffer+0x29) +.serial_3 EQU $-2 + CALL ConvHexTxt + INC DE + LD A,(WorkBuffer+0x28) +.serial_2 EQU $-2 + CALL ConvHexTxt + LD A,(WorkBuffer+0x27) +.serial_1 EQU $-2 + CALL ConvHexTxt + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 192,80,256,98 + W_FILL 4,2,248,10,COLORI.BLACK + W_TEXT 106,3,COLORI.WHITE,"Disk info" + W_TEXT 10,20,COLORP.HIGHGRAY,"Current drive: " +.CrDrive: EQU $ - 2 + W_TEXT 10,32,COLORP.HIGHGRAY,"Total disk space:" + W_TEXT 10,44,COLORP.HIGHGRAY,"Avaliable disk space:" + W_TEXT 10,56,COLORP.HIGHGRAY,"Disk label: " +.Dlabel: EQU $ - STRLEN(" ") - 1 +.Dlabel.Size EQU $ - .Dlabel - 1 + W_TEXT 10,68,COLORP.HIGHGRAY,"Serial volume number: - " +.SerialN: EQU $ - STRLEN(" - ") - 1 + W_BUTTON 92,80,72,14 + W_TEXT 120,83,COLORP.HIGHGRAY,"Ok" + W_END + POP AF + JR NZ,.calc_size + LD B,1 + CALL .get_info + PUSH DE ; ᢮ ஢, + PUSH HL ; 饥 - ஢, + PUSH BC ; ࠧ ᥪ + EXX + PUSH DE ; ᢮ ஢, + PUSH HL ; 饥 - ஢, + PUSH AF ; ࠧ ᥪ +.calc_size: POP AF ; ࠧ ᥪ + POP HL + POP DE + EXX + POP BC + POP HL + POP DE +; --> (HL':HL)*BC*A, (DE':DE)*BC*A = B':HL'HL, C':DE':DE + EXX + LD BC,0 + EXX + SRL B + RR C + RRCA + JR C,.loop_2 +.loop_1: SLA L + RL H + EXX + RL L + RL H + RL B + EXX + SLA E + RL D + EXX + RL E + RL D + RL C + EXX + RRCA + JP NC,.loop_1 +.loop_2: SLA L + RL H + EXX + RL L + RL H + RL B + EXX + SLA E + RL D + EXX + RL E + RL D + RL C + EXX + SRL B + RR C + JP NC,.loop_2 +; <-- B':HL'HL, C':DE':DE + EXX + LD A,C + LD (.freeSpace_h),A + LD (.freeSpace_m),DE + LD A,B + PUSH HL + EXX + LD (.freeSpace_l),DE + POP BC +; 塞 騩 ࠧ + ; A:BC:HL - ᫮ ॢ + LD DE,WorkBuffer + CALL ConvNumTxt40 + SUB A + LD (DE),A + LD HL,WorkBuffer + LD DE,WorkBuffer+0x100 + CALL CorrBigNum + LD A,' ' + LD (DE),A + INC DE + LD HL,Bytes + LD BC,5;Bytes.Size + LDIR + SUB A + LD (DE),A +; 塞 ᢮ + LD A,0 +.freeSpace_h EQU $-1 + LD BC,0 +.freeSpace_m EQU $-2 + LD HL,0 +.freeSpace_l EQU $-2 + LD DE,WorkBuffer+0x80 +; A:BC:HL - ᫮ ॢ + CALL ConvNumTxt40 + SUB A + LD (DE),A + LD HL,WorkBuffer+0x80 + LD DE,WorkBuffer+0x180 + CALL CorrBigNum + LD A,' ' + LD (DE),A + INC DE + LD HL,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 + CALL PrnTxtLnIFF + LD HL,WorkBuffer+0x180 + LD DE,0x0013A + LD BC,0x007C + LD A,0x80 + CALL PrnTxtLnIFF + CALL SetMouse +.DiskInfoLoop: LD IX,DiskInfoTab + CALL TestCoords + SPDSS DSSF.SCANKEY + JR Z,.DiskInfoLoop + LD A,B + OR A + JR NZ,.DiskInfoLoop + LD A,E + CP 0x1B + JR Z,.Ext + CP 0x0D + JR Z,.Ext + RES 5,A + CP 'O' + JR NZ,.DiskInfoLoop +.Ext: + WINDOWCLOSE + RET + +.get_info: LD A,(.CrDrive) + SUB 'A' + OR 0x80 + LD HL,WorkBuffer + PUSH IY + SPDSS DSSF.DSKINFO + POP IY + RET NC +; ᫨ 訡, 塞 ࠧ ᢮ ࠧ + XOR A + LD H,A + LD L,A + LD D,A + LD E,A + EXX + LD H,A + LD L,A + LD D,A + LD E,A + LD B,A + LD C,A + RET + +.NoLabel DEFB "NO NAME " +.NoLabelT DEFB "no label " + +ConvHexTxt PUSH AF + RRCA + RRCA + RRCA + RRCA + CALL ConvHexT1 + POP AF +ConvHexT1 AND 0x0F + ADD A,0x90 + DAA + ADC A,0x40 + DAA + LD (DE),A + INC DE + RET + +CorrBigNum PUSH HL + SUB A + LD C,A +.L1 INC C + INC HL + CP (HL) + JR NZ,.L1 + POP HL + LD A,C +.L2 SUB 0x03 + JR Z,.L5 + JR NC,.L2 + ADD A,0x03 + LD B,A +.L3 LD A,(HL) + LD (DE),A + INC HL + INC DE + DJNZ .L3 +.L4 LD A,(HL) + OR A + RET Z + LD A,' ' + LD (DE),A + INC DE +.L5 LDI + LDI + LDI + JR .L4 + +;[]==========================================================[] +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 50,86,COLORP.HIGHGRAY,"2000, Enin Anton" + W_TEXT 50,96,COLORP.HIGHGRAY,"2021, Mikhaltchenkov Dmitry" + W_TEXT 50,106,COLORP.HIGHGRAY,"2022, Belyanskiy Anatoliy" + W_TEXT 50,116,COLORP.HIGHGRAY,"(C) Sprinter Team. 13.12.2024" + W_BUTTON 92,133,72,14 + W_TEXT 120,136,COLORP.HIGHGRAY,"OK" + W_END + CALL ResFire +VersionLoop LD IX,VersionTab + CALL TestCoords + 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 diff --git a/rez2_fnsearch.a80 b/rez2_fnsearch.a80 new file mode 100644 index 0000000..1b13b23 --- /dev/null +++ b/rez2_fnsearch.a80 @@ -0,0 +1,368 @@ + +; LAST UPDATE: 27.03.2025 savelij + +;[]==========================================================[] +QSearchR LD A,(IY+PANEL.EFL) + OR (IY+PANEL.EFH) + RET Z + SETPORT WINSP.Y_PORT,0xC0 + LD HL,SearchN + LD B,0x0C + SUB A +.L1 LD (HL),A + INC HL + DJNZ .L1 + LD (SrchLen),A + LD L,(IY+PANEL.XL) + LD H,(IY+PANEL.XH) + LD DE,0x000A + ADD HL,DE + LD (.SrchX1),HL + LD DE,0x0034 + ADD HL,DE + LD (SrchX2),HL + LD HL,0x00E0 + BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + JR Z,.L2 + LD HL,0x00D0 +.L2 LD (.SrchY1),HL + LD DE,0x0007 + ADD HL,DE + LD (SrchY2),HL + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 0,0,166,20 +.SrchX1 EQU $ - 8 +.SrchY1 EQU $ -6 + W_TEXT 8,7,COLORP.HIGHGRAY,"Search:" + W_BORDER 48,4,108,12 + W_FILL 50,5,104,10,COLORI.WHITE + W_END + LD IX,SearchStr + LD (InpLnData),IX + SUB A + LD (IX+0x02),A + LD (IX+0x03),A + LD (IX+0x04),A + CALL InsInpLnCol + CALL PrintInpLn+3 +.SearchInpLp HALT + CALL ChCursor + CALL TestCMOS + SPMOUSE MOUSEF.READ_STATE + OR A + JP NZ,SearchExit + SPDSS DSSF.SCANKEY + JR Z,.SearchInpLp + RES 7,D + BIT KEYBSTAT.B_CTRL,B ;Ctrl + JR NZ,.SearchInpLp + LD IX,SearchTab + BIT KEYBSTAT.B_ALT,B ;Alt + JR Z,.Search1 + LD A,D + OR A + JR Z,.SearchInpLp + CP SC.LCTRL + JR NC,.SearchInpLp + LD HL,AltTable + DEC A + ADD A,L + LD L,A + JR NC,.L3 + INC H +.L3 LD A,(HL) + BIT 0,C + CALL NZ,CorrSmallChar + LD E,A +.Search1 LD A,(IX+0x00) + INC IX + CP 0xFF + JR Z,.SearchInpLp1 + LD L,A + LD H,(IX+0x00) + INC IX + LD C,(IX+0x00) + INC IX + LD B,(IX+0x00) + INC IX + OR A + SBC HL,DE + JR NZ,.Search1 + LD IX,(InpLnData) + LD HL,.SearchInpLp + PUSH HL + PUSH BC + RET + +.SearchInpLp1 LD IX,(InpLnData) + LD HL,.SearchInpLp + PUSH HL + LD A,E + JR InsSymbolSrch + +SearchTab DW SC.ESC << 8 | 0x1B, SrchExit + DW SC.ENTER << 8 | 0x0D, SrchExit + DW SC.BKSP << 8 | 0x08, QSdelet + DB 0xFF + +InsSymbolSrch CP 0x20 + RET C + EX AF,AF' + LD A,(IX+0x04) ;InpytSymb + SUB (IX+0x00) ;Max len + RET NC + LD A,(IX+0x04) + SUB (IX+0x02) + JR Z,NotInsSrch + LD C,A + LD B,0x00 + PUSH IX + POP HL + LD DE,LenInpData + ADD HL,DE + LD E,(IX+0x04) + ADD HL,DE + LD E,L + LD D,H + DEC HL + LDDR +NotInsSrch PUSH IX + POP HL + LD DE,LenInpData + ADD HL,DE + LD E,(IX+0x02) + ADD HL,DE + EX AF,AF' + LD (HL),A + INC (IX+0x04) + INC (IX+0x02) + CALL SearchFile + JP C,ILdelet +FoundSFile PUSH HL + CALL PrintInpLn + POP HL + EX DE,HL + LD L,(IY+PANEL.CFL) + LD H,(IY+PANEL.CFH) + LD C,(IY+PANEL.FFL) + LD B,(IY+PANEL.FFH) + ADD HL,BC + SBC HL,DE + EX DE,HL + RET Z + PUSH HL + CALL ResInvert + POP HL + LD C,(IY+PANEL.FPL) + LD B,(IY+PANEL.FPH) + LD DE,0x0000 + EX DE,HL + OR A + SBC HL,BC + EX DE,HL +.L1 EX DE,HL + ADD HL,BC + EX DE,HL + OR A + SBC HL,BC + JR NC,.L1 + ADD HL,BC + LD (IY+PANEL.CFL),L + LD (IY+PANEL.CFH),H + LD C,(IY+PANEL.FFL) + LD B,(IY+PANEL.FFH) + LD (IY+PANEL.FFL),E + LD (IY+PANEL.FFH),D + EX DE,HL + OR A + SBC HL,BC + CALL NZ,PrintDIR + CALL SetInvert + CALL PrnFileInfo + PUSH IY + POP IX + LD DE,PANEL.BARXL + ADD IX,DE + LD A,(IY+PANEL.VIEWFLAG) + AND VIEWFLAG.MASK + PUSH AF + CALL Z,PrnHScrBar + POP AF + JP NZ,PrnVScrBar + RET + +QSdelet LD A,(IX+0x02) + OR A + RET Z + PUSH IX + POP HL + LD DE,LenInpData + ADD HL,DE + LD E,(IX+0x02) + ADD HL,DE + LD E,L + LD D,H + DEC DE + LD A,(IX+0x04) + SUB (IX+0x02) + JR Z,QSDel1 + LD C,A + LD B,0x00 + LDIR + SUB A +QSDel1 LD (DE),A + DEC (IX+0x02) + DEC (IX+0x04) + CALL SearchFile + JP NC,FoundSFile + JP PrintInpLn + +SearchStr DEFB 0x0C,0x00,0x00,0x00 +SrchLen DEFB 0x03 +SrchX2 DEFW 0x0000 +SrchY2 DEFW 0x0000 + DEFW 0x0064 + DEFB 0xF0 +SearchN DUPL 13,0 + +AltTable DEFB 0x1B,"1234567890-=",0x08,0x09,"qwertyuiop[]" + DEFB 0x00,"asdfghjkl;'",0x0D,0x00,"zxcvbnm,./",0x00,0x5C + +SearchFile BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + JP NZ,SearchFileT ;Tree + PUSH IX + 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 IX,0x0000 + LD HL,0xC001 + LD BC,0x0018 +.SearchFlp LD DE,SearchN + LD A,(DE) + CALL CorrBigChar + CP (HL) + JR Z,.SrchF1 + CALL CorrSmallChar + CP (HL) + JR NZ,.SearchFnxt +.SrchF1 PUSH HL + PUSH DE + LD DE,WorkBuffer + PUSH DE + CALL MakeDOSname + POP HL + POP DE +.SrchF2 INC DE + LD A,(DE) + OR A + JR Z,.SearchFexit + INC HL + LD A,(HL) + OR A + JR Z,.SearchFnx0 + LD A,(DE) + CALL CorrBigChar + CP (HL) + JR Z,.SrchF2 + CALL CorrSmallChar + CP (HL) + JR Z,.SrchF2 +.SearchFnx0 POP HL + LD BC,0x0018 +.SearchFnxt ADD HL,BC + INC IX + LD A,(HL) + OR A + JR NZ,.SearchFlp + POP AF + SETPORT WINSP.CPU3,,0 + POP IX + SCF + RET + +.SearchFexit INC SP + INC SP + POP AF + SETPORT WINSP.CPU3,,0 + PUSH IX + POP HL + POP IX + OR A + RET + +SearchFileT PUSH IX + 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 IX,0x0000 + LD HL,0xC002 + LD BC,0x000D +.SearchTlp LD DE,SearchN + LD A,(DE) + CALL CorrBigChar + CP (HL) + JR Z,.SrchT1 + CALL CorrSmallChar + CP (HL) + JR NZ,.SearchTnxt +.SrchT1 PUSH HL +.SrchT2 INC DE + LD A,(DE) + OR A + JR Z,.SearchTexit + INC HL + LD A,(HL) + OR A + JR Z,.SearchTnx0 + LD A,(DE) + CALL CorrBigChar + CP (HL) + JR Z,.SrchT2 + CALL CorrSmallChar + CP (HL) + JR Z,.SrchT2 +.SearchTnx0 POP HL +.SearchTnxt ADD HL,BC + INC IX + LD A,(HL) + INC HL + INC HL + INC HL + INC A + JR NZ,.SearchTlp + POP AF + SETPORT WINSP.CPU3,,0 + POP IX + SCF + RET + +.SearchTexit INC SP + INC SP + POP AF + SETPORT WINSP.CPU3,,0 + PUSH IX + POP HL + POP IX + OR A + RET + +SrchExit POP HL +SearchExit + WINDOWCLOSE + BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + IF TREE_REZID + CALL NZ,TestTreeR.TestTreeBeg + ELSE + CALL NZ,TestTreeR.TestTreeBeg + ENDIF + RET diff --git a/rez2_fntab1.a80 b/rez2_fntab1.a80 new file mode 100644 index 0000000..511269e --- /dev/null +++ b/rez2_fntab1.a80 @@ -0,0 +1,151 @@ + +; LAST UPDATE: 16.04.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 ࠡ稪 ⮬ (ࠢ) + +;[]==========================================================[] +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 + DW 418,434, 87, 95,%0000000000000011,0,IncRED,0 + DW 440,464, 87, 95,%0000000000000000,0,InputRED,0 + DW 274,290,103,111,%0000000000000011,0,DecGREEN,0 + DW 418,434,103,111,%0000000000000011,0,IncGREEN,0 + DW 440,464,103,111,%0000000000000000,0,InputGREEN,0 + DW 274,290,119,127,%0000000000000011,0,DecBLUE,0 + DW 418,434,119,127,%0000000000000011,0,IncBLUE,0 + DW 440,464,119,127,%0000000000000000,0,InputBLUE,0 + DW 456,528,162,176,%0000000000000001,0,SaveSetup,0 + DW 368,440,184,198,%0000000000100001,0,SetupCancel,0 + DW 456,528,184,198,%0000000000100001,0,SetupOkey,0 + DW 0, 96, 0,256,%0000000000100000,0,SetupCancel,0 + DW 544,640, 0,256,%0000000000100000,0,SetupCancel,0 + DW 0,640, 0, 64,%0000000000100000,0,SetupCancel,0 + DW 0,640,184,256,%0000000000100000,0,SetupCancel,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.InpLnExtN,0 + DW 328,400,123,137,%0000000000000001,0,InputLine.InpLnExtC,0 + DW 0, 96, 0,256,%0000000000000000,0,InputLine.InpLnExtC,0 + DW 544,640, 0,256,%0000000000000000,0,InputLine.InpLnExtC,0 + DW 0,640, 0, 81,%0000000000000000,0,InputLine.InpLnExtC,0 + DW 0,640,143,256,%0000000000000000,0,InputLine.InpLnExtC,0 + DW 0x8000 + +;[]===============================================================[] +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 + DW 0,180, 0,256,%0000000100100000,0,OverExit,0 + DW 460,640, 0,256,%0000000100100000,0,OverExit,0 + DW 0,640, 0, 88,%0000000100100000,0,OverExit,0 + DW 0,640,144,256,%0000000100100000,0,OverExit,0 + DW 0x8001 + +;[]===============================================================[] +ReNameTab: DW 240,312,123,137,%0000000000000001,0,InputLine.InpLnExtN,0 + DW 328,400,123,137,%0000000000000001,0,InputLine.InpLnExtC,0 + DW 0,208, 0,256,%0000000000000000,0,InputLine.InpLnExtC,0 + DW 432,640, 0,256,%0000000000000000,0,InputLine.InpLnExtC,0 + DW 0,640, 0, 81,%0000000000000000,0,InputLine.InpLnExtC,0 + DW 0,640,143,256,%0000000000000000,0,InputLine.InpLnExtC,0 + DW 0x8000 + +;[]===============================================================[] +MakeDIRTab: DW 240,312,123,137,%0000000000000001,0,InputLine.InpLnExtN,0 + DW 328,400,123,137,%0000000000000001,0,InputLine.InpLnExtC,0 + DW 0,200, 0,256,%0000000000000000,0,InputLine.InpLnExtC,0 + DW 440,640, 0,256,%0000000000000000,0,InputLine.InpLnExtC,0 + DW 0,640, 0, 81,%0000000000000000,0,InputLine.InpLnExtC,0 + DW 0,640,143,256,%0000000000000000,0,InputLine.InpLnExtC,0 + DW 0x8000 + +;[]===============================================================[] +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 + DW 0,180, 0,256,%0000000100100000,0,DelExit,0 + DW 460,640, 0,256,%0000000100100000,0,DelExit,0 + DW 0,640, 0, 80,%0000000100100000,0,DelExit,0 + DW 0,640,136,256,%0000000100100000,0,DelExit,0 + DW 0x8000 + +;[]===============================================================[] +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 + DW 432,640, 0,256,%0000000000100000,0,QuitConfirmWin.Abort,0 + DW 0,640, 0, 88,%0000000000100000,0,QuitConfirmWin.Abort,0 + DW 0,640,138,256,%0000000000100000,0,QuitConfirmWin.Abort,0 + DW 0x8000 + +EmptyTab: DW 0,640, 0,256,%0000000000000000,0,InputLine.InpLnExtC,0 + DW 0x8000 diff --git a/rez3_fnmark.a80 b/rez3_fnmark.a80 new file mode 100644 index 0000000..f76350b --- /dev/null +++ b/rez3_fnmark.a80 @@ -0,0 +1,870 @@ + +; LAST UPDATE: 12.05.2025 savelij + +;[]==========================================================[] +MarkFileR LD A,(IY+PANEL.EFL) + OR (IY+PANEL.EFH) + RET Z + BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + RET NZ + 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.FFL) + LD H,(IY+PANEL.FFH) + LD E,(IY+PANEL.CFL) + LD D,(IY+PANEL.CFH) + ADD HL,DE + ADD HL,HL ; *2 + ADD HL,HL ; *4 + ADD HL,HL ; *8 + LD E,L + LD D,H + ADD HL,HL ; *16 + ADD HL,DE ; *18 + SET 6,H + SET 7,H ; | 0xC000 + LD E,(HL) ; FileHDR.Flag + POP AF + SETPORT WINSP.CPU3,,0 + BIT FileHDR.B_MARK,E + PUSH AF + CALL Z,SelectFile + POP AF + CALL NZ,UnSelectFile + CALL CursDown + CALL PrnFileInfo + LD B,0x07 +.L2 PUSH BC + SPMOUSE MOUSEF.READ_STATE + POP BC + BIT 1,A + RET Z + HALT + DJNZ .L2 + RET + +;[]==========================================================[] +SelectFile: LD IXL,0x01 + JR UnSelectFile.L1 + +UnSelectFile: LD IXL,0x00 +.L1 + GETPORT WINSP.CPU3 + PUSH AF + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + LD A,(RAMPAGES.LEFTPANEL) + JR Z,.L2 + LD A,(RAMPAGES.RIGHTPANEL) +.L2 + SETPORT WINSP.CPU3,,0 + SETPORT WINSP.Y_PORT,0xC0 + LD L,(IY+PANEL.FFL) + LD H,(IY+PANEL.FFH) + LD E,(IY+PANEL.CFL) + LD D,(IY+PANEL.CFH) + ADD HL,DE + ADD HL,HL ; *2 + ADD HL,HL ; *4 + ADD HL,HL ; *8 + LD E,L + LD D,H + ADD HL,HL ; *16 + ADD HL,DE ; *18 - FileHDR.SIZE + SET 6,H + SET 7,H ; | 0xC000 + PUSH HL + LD DE,FileHDR.Attr + ADD HL,DE + LD C,(HL) ; FileHDR.Attr (䫠 ⥫ FAT 䠩) + POP HL + BIT DIR.B_Dir,C ; ? + IF MARK_DIR + CALL NZ,COUNTING_DIR + ELSE + JR NZ,.MrFile1 + ENDIF +; 䠩 + LD B,(HL) ; ஥ ﭨ ⪨ 䠩 + LD A,IXL + LD (HL),A ; ﭨ ⪨ 䠩 + LD DE,WorkBuffer + PUSH BC + LD BC,FileHDR.SIZE + LDIR + IF MARK_DIR + LD HL,COUNTING_DIR.FILES_SIZE + LD DE,WorkBuffer + FileHDR.SizeBytes + LD BC,DWORD + LDIR + ENDIF + POP BC +.MrFile1 POP AF + SETPORT WINSP.CPU3,,0 + IF MARK_DIR = 0 + BIT DIR.B_Dir,C + RET NZ ; 室 ᫨ + ENDIF + LD A,B + CP IXL + RET Z ; 室 ᫨ ஥ ﭨ ⪨ ᮢ + BIT VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG) + JR NZ,.MarkFull +; ⪮ 䠩 + LD L,(IY+PANEL.CFL) + LD H,(IY+PANEL.CFH) + LD E,L + LD D,H + ADD HL,HL + ADD HL,DE + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + LD DE,PositTABLeft + JR Z,.L3 + LD DE,PositTABRight +.L3 ADD HL,DE + LD E,(HL) + INC HL + LD D,(HL) + INC HL + LD C,(HL) + LD B,0x00 + EX DE,HL + LD A,IXL + OR A + PUSH AF + LD DE,(COLORP.INVERTPAPER + COLORI.INVERTINK) << 8 | (COLORP.INVERTPAPER + COLORI.INVSELFILES) + JR NZ,.L4 + LD DE,(COLORP.INVERTPAPER + COLORI.INVSELFILES) << 8 | (COLORP.INVERTPAPER + COLORI.INVERTINK) +.L4 LD IX,8 << 8 + 48 + DEC HL + DEC HL + CALL InvertRectan + POP AF + JR NZ,.MarkExit1 + JR .MarkExit2 + +; 䠩 +.MarkFull LD L,(IY+PANEL.CFL) + LD H,(IY+PANEL.CFH) + ADD HL,HL + ADD HL,HL + ADD HL,HL + LD BC,0x003F + ADD HL,BC + LD C,L + BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) + LD HL,6 + JR Z,.L5 + LD HL,326 +.L5 LD A,IXL + OR A + PUSH AF + LD DE,(COLORP.INVERTPAPER + COLORI.INVERTINK) << 8 | (COLORP.INVERTPAPER + COLORI.INVSELFILES) + JR NZ,.L6 + LD DE,(COLORP.INVERTPAPER + COLORI.INVSELFILES) << 8 | (COLORP.INVERTPAPER + COLORI.INVERTINK) +.L6 LD IX,8 << 8 + 146 + CALL InvertRectan + POP AF + JR Z,.MarkExit2 +; ⠭ 롮 䠩 +.MarkExit1 LD IX,WorkBuffer + LD L,(IY + PANEL.MFL) + LD H,(IY + PANEL.MFH) + INC HL + LD (IY + PANEL.MFL),L + LD (IY + PANEL.MFH),H ; ⢠ 祭 䠩 + LD L,(IX + FileHDR.SizeBytes) + LD H,(IX + FileHDR.SizeBytes + 1) + LD E,(IY + PANEL.MBL1) + LD D,(IY + PANEL.MBH1) + XOR A ; [ ] fat32 + ADD HL,DE + LD (IY + PANEL.MBL1),L + LD (IY + PANEL.MBH1),H ; ࠧ 祭 䠩 15-0 + LD L,(IX + FileHDR.SizeBytes + 2) + LD H,(IX + FileHDR.SizeBytes + 3) + ; [ ] fat32 + LD E,(IY + PANEL.MBL2) + LD D,(IY + PANEL.MBH2) + ADC HL,DE + ; [ ] fat32 + ADC A,(IY + PANEL.MBL3) + LD (IY + PANEL.MBL3),A ; ࠧ 祭 䠩 32-39 + LD (IY + PANEL.MBL2),L + LD (IY + PANEL.MBH2),H ; ࠧ 祭 䠩 31-15 + RET + +; ⨥ 롮 䠩 +.MarkExit2 LD IX,WorkBuffer + LD L,(IY + PANEL.MFL) + LD H,(IY + PANEL.MFH) + DEC HL + LD (IY + PANEL.MFL),L + LD (IY + PANEL.MFH),H + LD L,(IY + PANEL.MBL1) + LD H,(IY + PANEL.MBH1) + LD E,(IX + FileHDR.SizeBytes) + LD D,(IX + FileHDR.SizeBytes + 1) + XOR A + SBC HL,DE + LD (IY + PANEL.MBL1),L + LD (IY + PANEL.MBH1),H + LD L,(IY + PANEL.MBL2) + LD H,(IY + PANEL.MBH2) + LD E,(IX + FileHDR.SizeBytes + 2) + LD D,(IX + FileHDR.SizeBytes + 3) + SBC HL,DE + ; [ ] fat32 + ADC A,(IY + PANEL.MBL3) + LD (IY + PANEL.MBL3),A + LD (IY + PANEL.MBL2),L + LD (IY + PANEL.MBH2),H + RET + +;[]==========================================================[] +UnMarkGroupR: CALL ResInvert +UnMarkGroupRN: LD HL,SetInvert + PUSH HL + SUB A + JR SelectGroup + +MarkGroupR: CALL ResInvert +MarkGroupRN: LD HL,SetInvert + PUSH HL + LD A,0x01 +SelectGroup: LD (SelMode),A + LD A,(IY+PANEL.EFL) + OR (IY+PANEL.EFH) + RET Z + BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + RET NZ + MAKEWINDOW WINSUBOBJ.STORE + W_MAIN 208,81,224,62 + W_FILL 4,2,216,10,COLORI.BLACK + W_TEXT 82,3,COLORI.WHITE,"Select mask" + W_BUTTON 32,42,72,14 + W_TEXT 60,45,COLORP.HIGHGRAY,"Ok" + W_BUTTON 120,42,72,14 + W_TEXT 140,45,COLORP.HIGHGRAY,"Cancel" + W_TEXT 10,25,COLORP.HIGHGRAY,"Mark mask:" + W_BORDER 70,22,134,12 + W_FILL 72,23,130,10,COLORI.WHITE + W_END + LD IX,SMaskStr + LD HL,SMaskTab + CALL InputLine + WINDOWCLOSE + RET C + LD A,(MaskLen) + OR A + RET Z + LD B,A + LD HL,CrSMask +CorMask LD A,(HL) + CALL CorrBigChar + LD (HL),A + INC HL + DJNZ CorMask + LD HL,CrSMask + LD DE,SelMask + CALL MakeMask + JR C,MarkGNext + LD HL,NORMmask + LD DE,CrSMask + LD BC,MASK_SIZE + LDIR + LD HL,CrSMask + LD DE,SelMask + JP MakeMask + +MarkGNext + 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 + ;!FIXIT ஢ SAFE_PORTY + SETPORT WINSP.Y_PORT,0xC0 + LD IX,CPU3 + LD HL,0xC000 + LD DE,SelMask + EX AF,AF' ; [ ] fat32 + EXX + LD L,(IY+PANEL.MBL1) + LD H,(IY+PANEL.MBH1) + LD E,(IY+PANEL.MBL2) + LD D,(IY+PANEL.MBH2) + LD A,(IY+PANEL.MBL3) ; [ ] FAT32 + LD C,(IY+PANEL.MFL) + LD B,(IY+PANEL.MFH) + EXX + EX AF,AF' ; [ ] fat32 + PUSH IY + LD IYL,0x00 +SelMode EQU $-1 + LD IYH,0x00 +Select1 PUSH DE + BIT DIR.B_Dir,(IX + FileHDR.Attr) + JR NZ,Select8 + LD A,IYL + CP (HL) + JR Z,Select8 + PUSH HL + INC HL + LD B,8 +Select2 LD A,(DE) + CP '?' + JR Z,Select3 + CP (HL) + JR NZ,Select6 +Select3 INC HL + INC DE + DJNZ Select2 + INC HL + LD B,03 +Select4 LD A,(DE) + CP '?' + JR Z,Select5 + CP (HL) + JR NZ,Select6 +Select5 INC HL + INC DE + DJNZ Select4 +Select6 POP HL + JR NZ,Select8 + LD IYH,0x01 + LD A,IYL + LD (HL),A + OR A + CALL Z,SUB_SIZE + CALL NZ,ADD_SIZE +Select8: LD DE,FileHDR.SIZE + ADD HL,DE + ADD IX,DE + POP DE + LD A,(IX + FileHDR.Name) + OR A + JR NZ,Select1 + LD A,IYH + EX AF,AF' + POP IY + EXX + LD (IY+PANEL.MBL1),L + LD (IY+PANEL.MBH1),H + LD (IY+PANEL.MBL2),E + LD (IY+PANEL.MBH2),D + LD (IY+PANEL.MBL3),A ; [ ] FAT32 + LD (IY+PANEL.MFL),C + LD (IY+PANEL.MFH),B + EXX + POP AF + SETPORT WINSP.CPU3,,0 + EX AF,AF' + OR A + RET Z + CALL PrintDIR + JP PrnFileInfo + +SMaskStr: DEFB 0x0C,0x00,0x00,0x00 +MaskLen: DEFB 0x03 + DEFW 282,106 + DEFW 104 + DEFB 0xF0 +CrSMask: DEFB "*.*" + DB 10 DUP 0 +SelMask: DEFB "???????????" + +MakeMask LD BC,0x0902 +SMaskLp LD A,(HL) + CP '!' + RET C + CP '\"' + RET Z + CP '*' + JR Z,SMask1 + CP '+' + RET Z + CP ',' + RET Z + CP '.' + JR Z,SMask2 + CP '/' + RET Z + CP ':' + RET Z + CP ';' + RET Z + CP '<' + RET Z + CP '=' + RET Z + CP '>' + RET Z + CP '[' + RET Z + CP '\\' + RET Z + CP ']' + RET Z + CP '|' + RET Z + CALL CorrBigChar + LD (DE),A + INC HL + INC DE + DJNZ SMaskLp + AND A + RET + +SMask1 LD A,'?' + INC HL + DJNZ SMask11 + AND A + RET + +SMask11 LD (DE),A + INC DE + DJNZ SMask11 + INC B + JR SMaskLp + +SMask2 LD A,' ' + INC HL + DJNZ SMask21 + LD B,0x04 + DEC C + JR NZ,SMaskLp + AND A + RET + +SMask21 LD (DE),A + INC DE + DJNZ SMask21 + LD B,0x04 + DEC C + JR NZ,SMaskLp + AND A + RET + +;[]==========================================================[] +SelectAllR: CALL ResInvert +SelectAllRN: LD HL,SetInvert + PUSH HL + LD A,(IY+PANEL.EFL) + OR (IY+PANEL.EFH) + RET Z + BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + RET NZ + 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 + SETPORT WINSP.Y_PORT,0xC0 + LD IX,CPU3 + LD BC,FileHDR.SIZE + EX AF,AF' ; [ ] fat32 + SUB A + LD L,A + LD H,L + LD E,L + LD D,H + EXX + LD L,A + LD H,L + EXX + EX AF,AF' ; [ ] fat32 +.loop: BIT DIR.B_Dir,(IX + FileHDR.Attr) ;!HARDCODE DIRECTORY + JR NZ,.SelAll1 + SET FileHDR.B_MARK,(IX + FileHDR.Flag) + LD C,(IX + FileHDR.SizeBytes) + LD B,(IX + FileHDR.SizeBytes + 1) + EX AF,AF' ; [ ] fat32 + ADD HL,BC + LD C,(IX + FileHDR.SizeBytes + 2) + LD B,(IX + FileHDR.SizeBytes + 3) + EX DE,HL + ADC HL,BC + EX DE,HL + ADC A,0 + EX AF,AF' ; [ ] fat32 + EXX + INC HL + EXX + LD BC,FileHDR.SIZE +.SelAll1: ADD IX,BC + LD A,(IX + FileHDR.Name) + OR A + JR NZ,.loop + POP AF + SETPORT WINSP.CPU3,,0 + EXX + LD E,(IY+PANEL.MFL) + LD D,(IY+PANEL.MFH) + OR A + SBC HL,DE + RET Z + ADD HL,DE + LD (IY+PANEL.MFL),L + LD (IY+PANEL.MFH),H + EXX + LD (IY+PANEL.MBL1),L + LD (IY+PANEL.MBH1),H + LD (IY+PANEL.MBL2),E + LD (IY+PANEL.MBH2),D + ; [ ] FAT32 + EX AF,AF' + LD (IY+PANEL.MBL3),A + CALL PrintDIR + JP PrnFileInfo + +;[]==========================================================[] +UnSelectAllR: CALL ResInvert +UnSelectAllRN: LD HL,SetInvert + PUSH HL + LD A,(IY+PANEL.EFL) + OR (IY+PANEL.EFH) + RET Z + BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + RET NZ + LD A,(IY+PANEL.MFL) + OR (IY+PANEL.MFH) + RET Z + PUSH IY + POP HL + LD BC,PANEL.MFL + ADD HL,BC + LD B,PANEL.FILEMASK - PANEL.MFL +.L2 LD (HL),0 + INC HL + DJNZ .L2 + 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 + SETPORT WINSP.Y_PORT,0xC0 + LD HL,CPU3 + LD BC,FileHDR.SIZE + 1 +UnSelA1: RES 0,(HL) + ADD HL,BC + LD A,(HL) + DEC HL + OR A + JR NZ,UnSelA1 + POP AF + SETPORT WINSP.CPU3,,0 + CALL PrintDIR + JP PrnFileInfo + +;[]==========================================================[] +InvertSelectR: CALL ResInvert +InvertSelectRN: LD HL,SetInvert + PUSH HL + LD A,(IY+PANEL.EFL) + OR (IY+PANEL.EFH) + RET Z + BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) + RET NZ + 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 + SETPORT WINSP.Y_PORT,0xC0 + LD IX,0xC000 + LD DE,FileHDR.SIZE + LD B,0x00 + EX AF,AF' ; [ ] fat32 + EXX + LD L,(IY + PANEL.MBL1) + LD H,(IY + PANEL.MBH1) + LD E,(IY + PANEL.MBL2) + LD D,(IY + PANEL.MBH2) + LD A,(IY + PANEL.MBL3) ; [ ] FAT32 + LD C,(IY + PANEL.MFL) + LD B,(IY + PANEL.MFH) + EXX + EX AF,AF' ; [ ] fat32 +.loop: BIT DIR.B_Dir,(IX + FileHDR.Attr) ;!HARDCODE Dir + JR NZ,.InvSel3 + LD B,FileHDR.M_MARK + LD A,(IX + FileHDR.Flag) + XOR B + LD (IX + FileHDR.Flag),A + CALL Z,SUB_SIZE + CALL NZ,ADD_SIZE +.InvSel3: ADD IX,DE + LD A,(IX + FileHDR.Name) + OR A + JR NZ,.loop + POP AF + SETPORT WINSP.CPU3,,0 + EX AF,AF' ; [ ] fat32 + EXX + LD (IY + PANEL.MBL1),L + LD (IY + PANEL.MBH1),H + LD (IY + PANEL.MBL2),E + LD (IY + PANEL.MBH2),D + LD (IY + PANEL.MBL3),A ; [ ] FAT32 + LD (IY + PANEL.MFL),C + LD (IY + PANEL.MFH),B + EXX + LD A,B + OR A + RET Z + CALL PrintDIR + JP PrnFileInfo + +ADD_SIZE: EX AF,AF' ; [ ] fat32 + EXX + PUSH BC + LD C,(IX + FileHDR.SizeBytes) + LD B,(IX + FileHDR.SizeBytes + 1) + ADD HL,BC + LD C,(IX + FileHDR.SizeBytes + 2) + LD B,(IX + FileHDR.SizeBytes + 3) + EX DE,HL + ADC HL,BC + EX DE,HL + ADC A,0 ; [ ] fat32 + POP BC + INC BC + EXX + EX AF,AF' ; [ ] fat32 + RET + +SUB_SIZE: EX AF,AF' ; [ ] fat32 + EXX + PUSH BC + LD C,(IX + FileHDR.SizeBytes) + LD B,(IX + FileHDR.SizeBytes + 1) + OR A + SBC HL,BC + LD C,(IX + FileHDR.SizeBytes + 2) + LD B,(IX + FileHDR.SizeBytes + 3) + EX DE,HL + SBC HL,BC + EX DE,HL + SBC A,0 ; [ ] fat32 + POP BC + DEC BC + EXX + EX AF,AF' + RET + + IF MARK_DIR +; ࠧ ⬥祭 ४ਨ +COUNTING_DIR PUSH IX + PUSH IY + PUSH HL + PUSH BC + GETPORT WINSP.CPU3 + PUSH AF + PUSH HL + XOR A + LD H,A + LD L,A + LD IXH,A ; 㫥 ஢ 宦 + LD (.FILES_SIZE),HL + LD (.FILES_SIZE + 2),HL ; 㫥 ࠧ + LD HL,CPU3 + LD (.CURR_DIRNAME),HL +; ࠭ ⥪饣 + SPDSS DSSF.CURDISK + LD HL,WorkBuffer + 0x300 ; ࠭ + ADD A,'A' + LD (HL),A + INC HL + LD (HL),':' + INC HL + SPDSS DSSF.CURDIR + POP DE + JR C,.END_COUNT +; 室 ४ + LD HL,FileHDR.Name + ADD HL,DE + LD DE,.DIR_NAME + PUSH DE + LD BC,FileHDR.Name_Size + LDIR ; ࠫ ७ + LD A,(RAMPAGES.FLX) + SETPORT WINSP.CPU3,,0 + CALL .ADD_2DOT ; । + POP HL + LD DE,(.CURR_DIRNAME) + LD BC,FileHDR.Name_Size + LDIR ; 室 + LD (.CURR_DIRNAME),DE + XOR A + LD (DE),A + CALL .SET_PATH ; ⠭ ⥪饣 + INC IXH +.CONTINUE CALL .ADD_2DOT + CALL .COUNT_FILES + LD A,IXL + AND A ; + JR Z,.PREV_DIR ; + CALL .SET_PATH ; 室 ᯨ᪠ + INC IXH + JR .CONTINUE + +; 室 । +.PREV_DIR CALL .OUT_DIR + LD A,IXH + AND A + JR Z,.END_COUNT + CALL .GET_NAME + CALL .GET_NAME + LD HL,(.CURR_DIRNAME) + LD DE,-FileHDR.Name_Size + ADD HL,DE + LD A,(HL) + CP '.' + JR Z,.PREV_DIR + CALL .SET_PATH + INC IXH + JR .CONTINUE + +; ⥪饣 +.END_COUNT POP AF + SETPORT WINSP.CPU3,,0 + LD HL,WorkBuffer + 0x300 ; ࠭ + SPDSS DSSF.CHDIR + POP BC + POP HL + POP IY + POP IX + RET + +.GET_NAME LD HL,(.CURR_DIRNAME) + LD (HL),0 + LD DE,-FileHDR.Name_Size + ADD HL,DE + LD (.CURR_DIRNAME),HL + RET + +.OUT_DIR DEC IXH + LD HL,.RET_DIR + JR .SP1 + +; 室 ᯨ᪠ +.SET_PATH LD HL,(.CURR_DIRNAME) + LD DE,-FileHDR.Name_Size + ADD HL,DE + LD DE,.DIR_NAME + PUSH DE + LD BC,FFIRST.Name_Size + LDIR + POP HL +.SP1 PUSH IX + SPDSS DSSF.CHDIR + SPDSS DSSF.CURDISK + LD HL,WorkBuffer + 0x200 + ADD A,'A' + LD (HL),A + INC HL + LD (HL),':' + INC HL + SPDSS DSSF.CURDIR + POP IX + RET + +; 室 । +.ADD_2DOT PUSH HL + LD HL,.RET_DIR + LD DE,(.CURR_DIRNAME) + LD BC,FFIRST.Name_Size + LDIR + LD (.CURR_DIRNAME),DE + POP HL + RET + +; 뢠 ࠧ 䠩 ⥪饩 ४ਨ +; ॡ ⠡ +.COUNT_FILES LD IXL,0 ; ⢮ ⥪饩 + CALL .F_FIRST ; 饬 ⥫ + RET C +.L2 LD DE,FFIRST.Attr + ADD HL,DE + LD A,(HL) + SBC HL,DE + BIT DIR.B_Dir,A + JR Z,.L4 +; 㥬 ⠡ + LD DE,FFIRST.Name + ADD HL,DE + LD A,(HL) + CP '.' ; . .. ய᪠ + JR Z,.L5 + LD DE,(.CURR_DIRNAME) + LD BC,FFIRST.Name_Size + LDIR + LD (.CURR_DIRNAME),DE + INC IXL + JR .L5 + +; 䠩 塞 +.L4 LD DE,FFIRST.FileSize + ADD HL,DE + CALL GET_DWORD ; ࠧ ⥫ + LD HL,.FILES_SIZE + PUSH HL + CALL BCDEHLP ; ⥪饬 ࠧ + POP HL + CALL SET_DWORD ; ⭮ +.L5 CALL .F_NEXT + JR NC,.L2 + RET + +; ࢮ ⥫ +.F_FIRST LD A, DIR.M_Archive + \ + DIR.M_System + \ + DIR.M_Hidden + \ + DIR.M_ReadOnly + \ + DIR.M_Dir +.FFF1 LD HL,.FILES_MASK + LD DE,WorkBuffer + 0x300 + PUSH DE + PUSH IX + SPDSS DSSF.F_FIRST,0 + POP IX + POP HL + RET + +; ᫥饣 ⥫ +.F_NEXT LD DE,WorkBuffer + 0x300 + PUSH DE + PUSH IX + SPDSS DSSF.F_NEXT + POP IX + POP HL + RET + +.FILES_SIZE DD 0 +.FILES_MASK DZ "*.*" +.RET_DIR DZ ".. " +.DIR_NAME DZ " " +.CURR_DIRNAME DW 0 + +GetDirSizeR CALL COUNTING_DIR + LD HL,COUNTING_DIR.FILES_SIZE + JP GET_DWORD + ENDIF diff --git a/rez3_fnnext.a80 b/rez3_fnnext.a80 new file mode 100644 index 0000000..3c4c0d0 --- /dev/null +++ b/rez3_fnnext.a80 @@ -0,0 +1,219 @@ + +; LAST UPDATE: 11.03.2025 savelij + +;[]==========================================================[] +InitExtention: ;[ ] 07/10/23 + ; LD (InitExt.path),HL + ; EX HL,DE + ; + LD HL,.ExtName1 + LD DE,fn_ext + CALL InitExt + LD HL,.ExtName2 + LD DE,fnview_ext + CALL InitExt + LD HL,.ExtName3 + LD DE,fnedit_ext + CALL InitExt + RET + +.ExtName1: DZ FILENAME.FN_EXT +.ExtName2: DZ FILENAME.FNVIEW_EXT +.ExtName3: DZ FILENAME.FNEDIT_EXT +.PathEnd: DW 0 ; not used + +;[]----------------------------------------------------------[] +InitExt: LD (.EXTdata),DE +;[ ] 07/10/23 +; .path+1: LD DE,0 +; CALL CopyString +; LD HL,FlexDIRECTORY + SPDSS DSSF.OPEN,,1 + RET C + LD (ExtHandle),A + LD HL,WorkBuffer + LD DE,WorkBuffer_Size + SPDSS DSSF.READ + RET C + OR A + RET P + LD A,(ExtHandle) + PUSH DE + SPDSS DSSF.CLOSE + POP BC + LD HL,WorkBuffer + LD DE,0x0000 +.EXTdata EQU $-2 + EXX + LD BC,0x03FE + EXX +.loop: CALL InitExtLine + JR NC,.loop + RET + +ExtHandle: DEFB 0x00 + +InitExtLine: LD (.InExtSv),DE + SUB A + LD (DE),A + INC DE + EXX + DEC BC + LD A,B + OR C + SCF + EXX + RET Z + SUB A + LD (DE),A + INC DE + EXX + DEC BC + LD A,B + OR C + SCF + EXX + RET Z + DEC HL + INC BC + LD IXL,0x04 +.L1: LD A,B + OR C + SCF + RET Z + EXX + LD A,B + OR C + SCF + EXX + RET Z + INC HL + DEC BC + LD A,(HL) + CP 0x20 + JR C,.L4 + CP '`' + JR Z,.L4 + CP ':' + JR Z,.L6 + CP '*' + JR NZ,.L3 +.L2: LD A,'?' + LD (DE),A + INC DE + DEC IXL + LD A,IXL + DEC A + JR Z,.L1 + EXX + DEC BC + LD A,B + OR C + SCF + EXX + RET Z + JR .L2 + +.L3: LD (DE),A + INC DE + EXX + DEC BC + EXX + DEC IXL + JR NZ,.L1 +.L4: LD DE,(.InExtSv) +.L5: LD A,B + OR C + SCF + RET Z + LD A,(HL) + INC HL + DEC BC + CP 0x0D + JR NZ,.L5 + LD A,B + OR C + SCF + RET Z + INC HL + DEC BC + LD A,B + OR C + RET NZ + SCF + RET + +.L6: DEC IXL + JR Z,.L8 +.L7: EXX + LD A,B + OR C + SCF + EXX + RET Z + INC DE + EXX + DEC BC + EXX + DEC IXL + JR NZ,.L7 +.L8: LD A,B + OR C + SCF + RET Z + EXX + LD A,B + OR C + SCF + EXX + RET Z + INC HL + DEC BC + LD A,(HL) + CP 0x0D + JR Z,.L4 + CP 0x09 + JR Z,.L8 + CP 0x20 + JR Z,.L8 + JR C,.L4 + LD (DE),A + INC DE + EXX + DEC BC + EXX +.L9: LD A,B + OR C + SCF + RET Z + EXX + LD A,B + OR C + SCF + EXX + RET Z + INC HL + DEC BC + LD A,(HL) + CP 0x0D + JR Z,.L10 + CP 0x20 + JR C,.L4 + LD (DE),A + INC DE + EXX + DEC BC + EXX + JR .L9 + +.L10: SUB A + LD (DE),A + INC DE + PUSH HL + LD HL,0x0000 +.InExtSv: EQU $-2 + LD (HL),E + INC HL + LD (HL),D + POP HL + JR .L5