CDplayer.flx 1.1:

- плагин доделан, описание/history в cdplayer.txt рядом с плагином.
FE 1.09
- исправлено: при выходе из редактора с несохраненным файлом и запросе на сохранение
  клавиша Enter теперь работает как подтверждение сохранения.
FN 1.16
- встроенный editor переехал в плагин откуда и запускается по F4, из FN удален.
- встроенный viewer переехал в плагин откуда и запускается по F3, из FN удален.
- встроенный help переехал в плагин откуда и запускается при нажатии F1, из FN удален.
- загрузка плагина отделена от запуска, теперь можно запускать плагины не
  только из панели FN.
- добавлен макрос формирования заголовка для плагинов.
- добавлена поддержка работы плагинов в адреса 0x4000-0x7FFF (окно 1) в дополнение
  к старым 0xC000-0xBFFF (окно 3), пока используется в плагине cdplayer.
- в окнах с ошибкой переделан на 2 типа окон вместо многих под каждую ошибку.
- исправлена потеря цвета при печати текста по указанному адресу.
- текстовым файлам вернул кодировку CP866, readme.md оставлен в кодировке UTF8.
This commit is contained in:
savelij13 2025-07-25 16:01:19 +03:00
parent 96a2777fa4
commit 881739653b
67 changed files with 4946 additions and 4150 deletions

View File

@ -24,7 +24,9 @@ rem cd ..
copy /Y /B tmp\fn.exe fn\fn.exe
copy /Y /B plugins\*.flx fn\flx
copy /Y /B docs\hist866.txt fn\history.txt
copy /Y /B plugins\*.txt fn\flx
copy /Y /B docs\history.txt fn\history.txt
rem copy /Y /B docs\*.ext fn
echo ########################
echo # -= End Compile Ok =- #

17
docs/FN.EXT Normal file
View File

@ -0,0 +1,17 @@
bat: C:\system.exe /c !\!.!
ima: C:\DSS\mountima.exe /m !\!.!
trd: C:\ZX\spectrum.exe sp.zx !\!.!
scl: C:\ZX\spectrum.exe sp.zx !\!.!
zx : C:\ZX\spectrum.exe !\!.!
fli: C:\BIN\flicplay.exe !\!.!
flc: C:\BIN\flicplay.exe !\!.!
bmp: C:\BIN\gfxview.exe !\!.!
pcx: C:\BIN\gfxview.exe !\!.!
scr: C:\BIN\zxview.exe !\!.!
ico: C:\BIN\gfxview.exe !\!.!
img: C:\BIN\zxview.exe !\!.!
gff: C:\BIN\gffview.exe !\!.!
wav: C:\BIN\wavplay.exe !\!.!
pt3: C:\BIN\pt3play.exe !\!.!
mod: C:\BIN\proplay.exe !\!.!
sgi: C:\BIN\sgiver.exe !\!.!

3
docs/FNEDIT.EXT Normal file
View File

@ -0,0 +1,3 @@
trd: C:\ZX\spectrum.exe sc256.zx !\!.!
scl: C:\ZX\spectrum.exe sc256.zx !\!.!

13
docs/FNVIEW.EXT Normal file
View File

@ -0,0 +1,13 @@
trd: C:\ZX\spectrum.exe p128.zx !\!.!
scl: C:\ZX\spectrum.exe p128.zx !\!.!
fli: C:\BIN\flicplay.exe !\!.!
flc: C:\BIN\flicplay.exe !\!.!
bmp: C:\BIN\gfxview.exe !\!.!
pcx: C:\BIN\gfxview.exe !\!.!
scr: C:\BIN\gfxview.exe !\!.!
ico: C:\BIN\gfxview.exe !\!.!
img: C:\BIN\zxview.exe !\!.!
gff: C:\BIN\gffview.exe !\!.!
wav: C:\BIN\wavplay.exe !\!.!
pt3: C:\BIN\pt3play.exe !\!.!
mod: C:\BIN\proplay.exe !\!.!

View File

@ -1,25 +0,0 @@
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

View File

@ -1,29 +0,0 @@
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 нет ошибки

35
docs/flx_header.eng Normal file
View File

@ -0,0 +1,35 @@
Version 2. The minimum version of Flex Navigator is 1.16.
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)
(according to the 0x3FFF mask, the 2 highest ones are not counted)
2 bytes EntryOffset - displacement in page of memory for executing (0 - 0x3FFF)
(according to the 0x3FFF mask, the 2 highest ones are not counted)
1 byte PluginMode - modes of work:
0 - repairing Flex Navigator screen after finish
1 - without repairing Flex Navigator screen after finish
bit 1 = 0 is the compilation and operation address in addresses 0xC000-0xFFFF
bit 1 = 1 - compilation and operation address in addresses 0x4000-0x7FFF
3 bytes Reserved
length = 16 bytes
ATTENTION!!!
1. Size of plugin code (without header) must be less 4000 bytes.
2. all plug-ins for Flex Navigator v1.xx must be compiled depending
on bit 1 in PluginMode from address 0x4000 or 0xC000 (i.e. org = 0x4000 or org= 0xC000).
3. When control will return to Flex Navigator, Carry Flag are specify error status:
CF = 1 an error at the initialization stage (nothing is restored after it)
CF = 0 no error
History:
14.07.2025: added the ability for plugins to work in window 1 (addresses 0x4000-0x7FFF).

38
docs/flx_header.rus Normal file
View File

@ -0,0 +1,38 @@
‚¥àá¨ï 2. Œ¨­¨¬ «ì­ ï ¢¥àá¨ï Flex Navigator 1.16.
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)
(¯® ¬ áª¥ 0x3FFF, 2 áâ àè¨å ­¥ ãç¨â뢠îâáï)
2 ¡ ©â  EntryOffset - ᬥ饭¨¥ ¢ áâà ­¨æ¥ ¯ ¬ï⨠¤«ï § ¯ã᪠ (0 - 0x3FFF)
(¯® ¬ áª¥ 0x3FFF, 2 áâ àè¨å ­¥ ãç¨â뢠îâáï)
1 ¡ ©â PluginMode - ०¨¬ à ¡®âë:
bit 0 = 0 - à ¡®â ¥â á ¢®ááâ ­®¢«¥­¨¥¬ à ¡®ç¥© ®¡« á⨠Flex Navigator
(â.¥. ¯®á«¥ à ¡®âë ¯« £¨­  ­¥ ­ã¦­® ¢®ááâ ­ ¢«¨¢ âì íªà ­)
bit 0 = 1 - à ¡®â ¥â ¡¥§ ¢®ááâ ­®¢«¥­¨ï à ¡®ç¥© ®¡« á⨠Flex Navigator
(â.¥. ¯®á«¥ à ¡®âë ¯« £¨­  ­ã¦­® ¢®ááâ ­ ¢«¨¢ âì íªà ­)
bit 1 = 0 -  ¤à¥á ª®¬¯¨«ï樨 ¨ à ¡®âë ¢  ¤à¥á å 0xC000-0xFFFF
bit 1 = 1 -  ¤à¥á ª®¬¯¨«ï樨 ¨ à ¡®âë ¢  ¤à¥á å 0x4000-0x7FFF
3 ¡ ©â  Reserved - § à¥§¥à¢¨à®¢ ­®
¤«¨­  = 16 ¡ ©â
!!! <>ˆŒ€<C592>ˆ
1. ¢á¥ ¯« £¨­ë ¤«ï Flex Navigator v1.xx ­¥ ¤®«¦­ë ¯à¥¢ëè âì ¢ à §¬¥à¥ ®á­®¢­®£® ª®¤ 
(â.¥. ¡¥§ § £®«®¢ª ) 0x4000 ¡ ©â .
2. ¢á¥ ¯« £¨­ë ¤«ï Flex Navigator v1.xx ¤®«¦­ë ¡ëâì ®âª®¬¯¨«¨à®¢ ­ë ¢ § ¢¨á¨¬®áâ¨
®â ¡¨â  1 ¢ PluginMode á  ¤à¥á  0x4000 ¨«¨ 0xC000 (â.¥. org = 0x4000 ¨«¨ org = 0xC000).
3. ¢®§¢à é ¥¬®¥ §­ ç¥­¨¥:
CF = 1 ®è¨¡ª  ­  áâ ¤¨¨ ¨­¨â¨ «¨§ æ¨¨ (¯®á«¥ ­¥ñ ­¨ç¥£® ­¥ ¢®ááâ ­ ¢«¨¢ ¥âáï)
CF = 0 ­¥â ®è¨¡ª¨
History:
14.07.2025: ¤®¡ ¢«¥­  ¢®§¬®¦­®áâì à ¡®âë ¯« £¨­®¢ ¢ ®ª­¥ 1 ( ¤à¥á  0x4000-0x7FFF).

View File

@ -1,7 +1,7 @@
[]========================================================================[]
* *
* Описание Flex Navigator API v1.xx для разработчиков Flx-Plugins *
* doc v0.2 от 07.07.2002 *
* ޝ¨á ­¨¥ Flex Navigator API v1.xx ¤«ï à §à ¡®â稪®¢ Flx-Plugins *
* doc v0.2 ®â 07.07.2002 *
* *
[]========================================================================[]
@ -11,554 +11,554 @@
[]------------------------------------------------------------------------[]
ClearScreen - процедура отчистки 0-го экана нужным цветом.
ClearScreen - ¯à®æ¥¤ãà  ®âç¨á⪨ 0-£® íª ­  ­ã¦­ë¬ 梥⮬.
на вход:
A - цвет отчистки (00-0Fh)
на выход:
­  ¢å®¤:
A - 梥⠮âç¨á⪨ (00-0Fh)
­  ¢ë室:
-
[]------------------------------------------------------------------------[]
MakeWindow - процедура создания графического окна
MakeWindow - ¯à®æ¥¤ãà  á®§¤ ­¨ï £à ä¨ç¥áª®£® ®ª­ 
на вход:
(SP) - описатель окна
на выход:
­  ¢å®¤:
(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) ä« £ ¢ë¢®¤  ®ª­ : 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 ... описатели обекта
¤ «¥¥ ¨¤ãâ ®¡'¥ªâë ®ª­  ¢ ä®à¬ â¥:
+00 (1) ⨯ ®¡¥ªâ 
+01 ... ®¯¨á â¥«¨ ®¡¥ªâ 
об'екты окна:
0. +00 (1) == 0 - конец списка об'ектов. после этого оконная
функция возвращает управление.
®¡'¥ªâë ®ª­ :
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
11. +00 (1) == 11 - ®âà¨á®¢ª  ­¨¦­¥© ª­®¯ª¨ áªà®«¡ à 
+01 (2) ᬥ饭¨¥ x ®â ­ ç «  ®ª­  (0 - 639)
+03 (2) ᬥ饭¨¥ y ®â ­ ç «  ®ª­  (0 - 255)
[]------------------------------------------------------------------------[]
InvertRectan - процедура замены цвета прямоугольной плоскости
InvertRectan - ¯à®æ¥¤ãà  § ¬¥­ë æ¢¥â  ¯àאַ㣮«ì­®© ¯«®áª®áâ¨
на вход:
HL - x координата
BC - y координата
HX - длина y
LX - длина x
D - текущий цвет
(d7-d4 цвет background, d3-d0 цвет foreground)
E - нужный цвет
(d7-d4 цвет background, d3-d0 цвет foreground)
на выход:
­  ¢å®¤:
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 - адрес байта, следующего за строкой
PrnTxtLnIFF - ¯à®æ¥¤ãà  ¢ë¢®¤  ⥪á⮢ëå áâப ­  £à ä¨ç¥áª¨© íªà ­
640x256 ¢ ०¨¬¥ à §¬¥à­®£® ¯® X èà¨äâ 
­  ¢å®¤:
HL -  ¤à¥á ⥪á⮢®© áâப¨ (ª®­¥æ áâப¨ - 0)
DE - ¯®§¨æ¨ï ¢ë¢®¤  ¯® X
BC - ¯®§¨æ¨ï ¢ë¢®¤  ¯® Y
A - 梥⠯¥ç â¨
(d7-d4 梥â background, d3-d0 梥â foreground)
­  ¢ë室:
HL -  ¤à¥á ¡ ©â , á«¥¤ãî饣® §  áâப®©
[]------------------------------------------------------------------------[]
PrnTxtLnNorm - процедура вывода текстовых строк на графический экран
PrnTxtLnNorm - ¯à®æ¥¤ãà  ¢ë¢®¤  ⥪á⮢ëå áâப ­  £à ä¨ç¥áª¨© íªà ­
640x256
на вход:
HL - адрес текстовой строки (конец строки - 0)
DE - позиция вывода по X
BC - позиция вывода по Y
A - цвет печати
(d7-d4 цвет background, d3-d0 цвет foreground)
на выход:
HL - адрес байта, следующего за строкой
­  ¢å®¤:
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 - адрес байта, следующего за последним символом
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)
на выход:
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)
на выход:
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)
на выход:
PrnRangPathC - ¯à®æ¥¤ãà  ¢ë¢®¤  ¤®á®¢áª¨å ¯ã⥩ ­  £à ä¨ç¥áª¨© íªà ­
640x256 ¢ ०¨¬¥ à §¬¥à­®£® ¯® X èà¨äâ , ®â業âà¨à®¢ ­­ëå
®â­®á¨â¥«ì­® ªà ñ¢ ( <-|-> )
­  ¢å®¤:
IX - ª®«-¢® ¯¨ªá¥«¥© ¯®¤ ¢ë¢®¤ áâப¨
HL -  ¤à¥á ⥪á⮢®© áâப¨ (ª®­¥æ áâப¨ - 0)
DE - ¯®§¨æ¨ï ¢ë¢®¤  ¯® X
BC - ¯®§¨æ¨ï ¢ë¢®¤  ¯® Y
A - 梥⠯¥ç â¨
(d7-d4 梥â background, d3-d0 梥â foreground)
­  ¢ë室:
-
процедура грамотно укорачивает досовский путь до нужного
размера путём замещения невлезающих директорий на ..\
¯à®æ¥¤ãà  £à ¬®â­® 㪮à ç¨¢ ¥â ¤®á®¢áª¨© ¯ãâì ¤® ­ã¦­®£®
à §¬¥à  ¯ãâñ¬ § ¬¥é¥­¨ï ­¥¢«¥§ îé¨å ¤¨à¥ªâ®à¨© ­  ..\
[]------------------------------------------------------------------------[]
InputLine - процедура редактирования строки на графическом экране
640x256 в режиме размерного по X шрифта
InputLine - ¯à®æ¥¤ãà  à¥¤ ªâ¨à®¢ ­¨ï áâப¨ ­  £à ä¨ç¥áª®¬ íªà ­¥
640x256 ¢ ०¨¬¥ à §¬¥à­®£® ¯® X èà¨äâ 
на вход:
IX - адрес описателя строки
HL - адрес описателя элементов экрана (для мышки)
на выход:
­  ¢å®¤:
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 ... сама строка
®¯¨á â¥«ì áâப¨:
+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
(восстанавливает изначальную строку)
¯à®æ¥¤ãàë ¤«ï â ¡«¨æë í«¥¬¥­â®¢ íªà ­ :
InpLnExtN - ¯à®æ¥¤ãà  ­®à¬ «ì­®£® ¢ë室  ¨§ । ªæ¨¨
InpLnExtC - ¯à®æ¥¤ãà  ¢ë室  ¨§ । ªæ¨¨ ¯® cancel
(¢®ááâ ­ ¢«¨¢ ¥â ¨§­ ç «ì­ãî áâபã)
[]------------------------------------------------------------------------[]
InitScrBar - процедура инициализации описателя скроллбара
InitScrBar - ¯à®æ¥¤ãà  ¨­¨æ¨ «¨§ æ¨¨ ®¯¨á â¥«ï áªà®««¡ à 
на вход:
IX - адрес описателя скроллбара
на выход:
­  ¢å®¤:
IX -  ¤à¥á ®¯¨á â¥«ï áªà®««¡ à 
­  ¢ë室:
-
[]------------------------------------------------------------------------[]
PrnHScrBar - процедура печати горизонтального скроллбара
PrnHScrBar - ¯à®æ¥¤ãà  ¯¥ç â¨ £®à¨§®­â «ì­®£® áªà®««¡ à 
на вход:
IX - адрес описателя скроллбара
на выход:
­  ¢å®¤:
IX -  ¤à¥á ®¯¨á â¥«ï áªà®««¡ à 
­  ¢ë室:
-
[]------------------------------------------------------------------------[]
PrnVScrBar - процедура печати вертикального скроллбара
PrnVScrBar - ¯à®æ¥¤ãà  ¯¥ç â¨ ¢¥à⨪ «ì­®£® áªà®««¡ à 
на вход:
IX - адрес описателя скроллбара
на выход:
­  ¢å®¤:
IX -  ¤à¥á ®¯¨á â¥«ï áªà®««¡ à 
­  ¢ë室:
-
[]------------------------------------------------------------------------[]
InitProcess - процедура инициализации описателя процессбара
InitProcess - ¯à®æ¥¤ãà  ¨­¨æ¨ «¨§ æ¨¨ ®¯¨á â¥«ï ¯à®æ¥áá¡ à 
на вход:
IX - адрес описателя процессбара
на выход:
­  ¢å®¤:
IX -  ¤à¥á ®¯¨á â¥«ï ¯à®æ¥áá¡ à 
­  ¢ë室:
-
[]------------------------------------------------------------------------[]
PrnProcess - процедура печати процессбара
PrnProcess - ¯à®æ¥¤ãà  ¯¥ç â¨ ¯à®æ¥áá¡ à 
на вход:
IX - адрес описателя процессбара
на выход:
­  ¢å®¤:
IX -  ¤à¥á ®¯¨á â¥«ï ¯à®æ¥áá¡ à 
­  ¢ë室:
-
[]------------------------------------------------------------------------[]
ResFire - процедура ожидания, пока все кнопки мыши не будут отпущены
ResFire - ¯à®æ¥¤ãà  ®¦¨¤ ­¨ï, ¯®ª  ¢á¥ ª­®¯ª¨ ¬ëè¨ ­¥ ¡ã¤ãâ ®â¯ã饭ë
на вход:
­  ¢å®¤:
-
на выход:
­  ¢ë室:
-
[]------------------------------------------------------------------------[]
TestCoords - процедура проверки координат мыши по таблице элементов
зкрана
TestCoords - ¯à®æ¥¤ãà  ¯à®¢¥àª¨ ª®®à¤¨­ â ¬ëè¨ ¯® â ¡«¨æ¥ í«¥¬¥­â®¢
§ªà ­ 
на вход:
IX - адрес таблицы элементов зкрана
на выход:
­  ¢å®¤:
IX -  ¤à¥á â ¡«¨æë í«¥¬¥­â®¢ §ªà ­ 
­  ¢ë室:
-
таблица элементов зкрана:
+00 (2) левая x координата элемента
+02 (2) правая x координата элемента
+04 (2) верхняя y координата элемента
+06 (2) нижняя y координата элемента
+08 (2) флаги элемента
+10 (2) адрес обработчика при не нажатом огне
+12 (2) адрес обработчика при нажатом огне (левая кнопка)
+14 (2) адрес обработчика при нажатом огне (правая кнопка)
â ¡«¨æ  í«¥¬¥­â®¢ §ªà ­ :
+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 - инверт при огне не убирать
ä« £¨ í«¥¬¥­â :
d00 - í«¥¬¥­â ª­®¯ª 
d01 - à ¡®ç ï ª­®¯ª 
d02 - ¨­¢¥àâ
d03 - áâ â¨ç­ë© ¨­¢¥àâ
d04 - ¯à®£à ¬¬  § ¯ã᪠¥âáï ¡¥§  ¤à¥á  ¢®§¢à â  ¡¥§ ®£­ï
d05 - ¯à®£à ¬¬  § ¯ã᪠¥âáï ¡¥§  ¤à¥á  ¢®§¢à â  ¯® «¥¢®© ª­®¯ª¥
®£­ï
d06 - ¯à®£à ¬¬  § ¯ã᪠¥âáï ¡¥§  ¤à¥á  ¢®§¢à â  ¯® ¯à ¢®© ª­®¯ª¥
®£­ï
d07 - ¢ë§¢ âì äã­ªæ¨î § ªàëâ¨ï ®ª­  ¯¥à¥¤ § ¯ã᪮¬ ¯à®£à ¬¬ë ¡¥§
®£­ï
d08 - ¢ë§¢ âì äã­ªæ¨î § ªàëâ¨ï ®ª­  ¯¥à¥¤ § ¯ã᪮¬ ¯à®£à ¬¬ë ¯®
«¥¢®© ª­®¯ª¥
d09 - ¢ë§¢ âì äã­ªæ¨î § ªàëâ¨ï ®ª­  ¯¥à¥¤ § ¯ã᪮¬ ¯à®£à ¬¬ë ¯®
¯à ¢®© ª­®¯ª¥
d15 - íâ® ä« £: 1 - ¨­¢¥à⠯ਠ®£­¥ ­¥ 㡨à âì
если +00 == 0x8000 это считается концом таблицы элементов зкрана
¥á«¨ +00 == 0x8000 íâ® áç¨â ¥âáï ª®­æ®¬ â ¡«¨æë í«¥¬¥­â®¢ §ªà ­ 
[]------------------------------------------------------------------------[]
SetCMOSPrint - процедура включения печати даты/время из CMOS
SetCMOSPrint - ¯à®æ¥¤ãà  ¢ª«î祭¨ï ¯¥ç â¨ ¤ âë/¢à¥¬ï ¨§ CMOS
на вход:
- будет описано позднее
на выход:
­  ¢å®¤:
- ¡ã¤¥â ®¯¨á ­® ¯®§¤­¥¥
­  ¢ë室:
-
[]------------------------------------------------------------------------[]
ResCMOSPrint - процедура выключения печати даты/время из CMOS
ResCMOSPrint - ¯à®æ¥¤ãà  ¢ëª«î祭¨ï ¯¥ç â¨ ¤ âë/¢à¥¬ï ¨§ CMOS
на вход:
- будет описано позднее
на выход:
­  ¢å®¤:
- ¡ã¤¥â ®¯¨á ­® ¯®§¤­¥¥
­  ¢ë室:
-
[]------------------------------------------------------------------------[]
SetClock - процедура установки курсора мыши в часы
SetClock - ¯à®æ¥¤ãà  ãáâ ­®¢ª¨ ªãàá®à  ¬ëè¨ ¢ ç áë
на вход:
­  ¢å®¤:
-
на выход:
­  ¢ë室:
-
[]------------------------------------------------------------------------[]
SetMouse - процедура установки курсора мыши в нормальный курсор
SetMouse - ¯à®æ¥¤ãà  ãáâ ­®¢ª¨ ªãàá®à  ¬ëè¨ ¢ ­®à¬ «ì­ë© ªãàá®à
на вход:
­  ¢å®¤:
-
на выход:
­  ¢ë室:
-
[]------------------------------------------------------------------------[]
MoveBytes - процедура быстрого копирования памяти с помощью
акселлератора с увеличением адресов
на вход:
HL - откуда
DE - куда
BC - сколько
на выход:
HL - (откуда + сколько)
DE - (куда + сколько)
MoveBytes - ¯à®æ¥¤ãà  ¡ëáâண® ª®¯¨à®¢ ­¨ï ¯ ¬ïâ¨ á ¯®¬®éìî
 ªá¥««¥à â®à  á 㢥«¨ç¥­¨¥¬  ¤à¥á®¢
­  ¢å®¤:
HL - ®âªã¤ 
DE - ªã¤ 
BC - ᪮«ìª®
­  ¢ë室:
HL - (®âªã¤  + ᪮«ìª®)
DE - (ªã¤  + ᪮«ìª®)
[]------------------------------------------------------------------------[]
MoveBytesUp - процедура быстрого копирования памяти с помощью
акселлератора с уменьшением адресов
на вход:
HL - откуда
DE - куда
BC - сколько
на выход:
HL - (откуда - сколько)
DE - (куда - сколько)
MoveBytesUp - ¯à®æ¥¤ãà  ¡ëáâண® ª®¯¨à®¢ ­¨ï ¯ ¬ïâ¨ á ¯®¬®éìî
 ªá¥««¥à â®à  á 㬥­ì襭¨¥¬  ¤à¥á®¢
­  ¢å®¤:
HL - ®âªã¤ 
DE - ªã¤ 
BC - ᪮«ìª®
­  ¢ë室:
HL - (®âªã¤  - ᪮«ìª®)
DE - (ªã¤  - ᪮«ìª®)
[]------------------------------------------------------------------------[]
Mult8 - процедура умножения 8 * 8 bit = 16 bit
Mult8 - ¯à®æ¥¤ãà  ã¬­®¦¥­¨ï 8 * 8 bit = 16 bit
на вход:
­  ¢å®¤:
E * C
на выход:
HL - результат
­  ¢ë室:
HL - १ã«ìâ â
[]------------------------------------------------------------------------[]
Mult16X8 - процедура умножения 16 * 8 bit = 24 bit
Mult16X8 - ¯à®æ¥¤ãà  ã¬­®¦¥­¨ï 16 * 8 bit = 24 bit
на вход:
­  ¢å®¤:
DE * C
на выход:
A, HL - результат
­  ¢ë室:
A, HL - १ã«ìâ â
[]------------------------------------------------------------------------[]
Mult16 - процедура умножения 16 * 16 bit = 16 bit
Mult16 - ¯à®æ¥¤ãà  ã¬­®¦¥­¨ï 16 * 16 bit = 16 bit
на вход:
­  ¢å®¤:
DE * BC
на выход:
HL - результат
­  ¢ë室:
HL - १ã«ìâ â
[]------------------------------------------------------------------------[]
Mult16X16 - процедура умножения 16 * 16 bit = 32 bit
Mult16X16 - ¯à®æ¥¤ãà  ã¬­®¦¥­¨ï 16 * 16 bit = 32 bit
на вход:
­  ¢å®¤:
DE * BC
на выход:
HL, DE - результат
­  ¢ë室:
HL, DE - १ã«ìâ â
[]------------------------------------------------------------------------[]
Mult32 - процедура умножения 32 * 16 bit = 32 bit
Mult32 - ¯à®æ¥¤ãà  ã¬­®¦¥­¨ï 32 * 16 bit = 32 bit
на вход:
­  ¢å®¤:
HL, DE * BC
на выход:
HL, DE - результат
­  ¢ë室:
HL, DE - १ã«ìâ â
[]------------------------------------------------------------------------[]
Divis16X16 - процедура деления 16 / 16 bit = 16.16 bit
Divis16X16 - ¯à®æ¥¤ãà  ¤¥«¥­¨ï 16 / 16 bit = 16.16 bit
на вход:
­  ¢å®¤:
BC / DE
на выход:
BC - результат
HL - остаток
­  ¢ë室:
BC - १ã«ìâ â
HL - ®áâ â®ª
[]------------------------------------------------------------------------[]
Divis24X16 - процедура деления 24 / 16 bit = 8.16 bit
Divis24X16 - ¯à®æ¥¤ãà  ¤¥«¥­¨ï 24 / 16 bit = 8.16 bit
на вход:
­  ¢å®¤:
HL, C / DE
на выход:
A - результат
HL - остаток
­  ¢ë室:
A - १ã«ìâ â
HL - ®áâ â®ª
[]------------------------------------------------------------------------[]
Divis32X16 - процедура деления 32 / 16 bit = 16.16 bit
Divis32X16 - ¯à®æ¥¤ãà  ¤¥«¥­¨ï 32 / 16 bit = 16.16 bit
на вход:
­  ¢å®¤:
HL, DE / BC
на выход:
DE - результат
HL - остаток
­  ¢ë室:
DE - १ã«ìâ â
HL - ®áâ â®ª
[]------------------------------------------------------------------------[]
Divis32 - процедура деления 32 / 16 bit = 32.16 bit
Divis32 - ¯à®æ¥¤ãà  ¤¥«¥­¨ï 32 / 16 bit = 32.16 bit
на вход:
­  ¢å®¤:
HL, DE / BC
на выход:
HL, DE - результат
BC - остаток
­  ¢ë室:
HL, DE - १ã«ìâ â
BC - ®áâ â®ª
[]------------------------------------------------------------------------[]
ConvNumTxt32 - процедура конвертации числа 32 bit в текст
ConvNumTxt32 - ¯à®æ¥¤ãà  ª®­¢¥àâ æ¨¨ ç¨á«  32 bit ¢ ⥪áâ
на вход:
BC, HL - число 32 bit
DE - адрес буфера
на выход:
DE - адрес следующего байта за числом
­  ¢å®¤:
BC, HL - ç¨á«® 32 bit
DE -  ¤à¥á ¡ãä¥à 
­  ¢ë室:
DE -  ¤à¥á á«¥¤ãî饣® ¡ ©â  §  ç¨á«®¬
[]------------------------------------------------------------------------[]
ConvNumTxt16 - процедура конвертации числа 16 bit в текст
ConvNumTxt16 - ¯à®æ¥¤ãà  ª®­¢¥àâ æ¨¨ ç¨á«  16 bit ¢ ⥪áâ
на вход:
HL - число 16 bit
DE - адрес буфера
на выход:
DE - адрес следующего байта за числом
­  ¢å®¤:
HL - ç¨á«® 16 bit
DE -  ¤à¥á ¡ãä¥à 
­  ¢ë室:
DE -  ¤à¥á á«¥¤ãî饣® ¡ ©â  §  ç¨á«®¬
[]------------------------------------------------------------------------[]
ConvNumTxt8 - процедура конвертации числа 8 bit в текст
ConvNumTxt8 - ¯à®æ¥¤ãà  ª®­¢¥àâ æ¨¨ ç¨á«  8 bit ¢ ⥪áâ
на вход:
A - число 8 bit
DE - адрес буфера
на выход:
DE - адрес следующего байта за числом
­  ¢å®¤:
A - ç¨á«® 8 bit
DE -  ¤à¥á ¡ãä¥à 
­  ¢ë室:
DE -  ¤à¥á á«¥¤ãî饣® ¡ ©â  §  ç¨á«®¬
[]------------------------------------------------------------------------[]
ConvTxtNum32 - процедура конвертации текста в число 32 bit
ConvTxtNum32 - ¯à®æ¥¤ãà  ª®­¢¥àâ æ¨¨ ⥪áâ  ¢ ç¨á«® 32 bit
на вход:
DE - адрес текста (конец строки - 0)
на выход:
HL, IX - число
C flag - ошибка
­  ¢å®¤:
DE -  ¤à¥á ⥪áâ  (ª®­¥æ áâப¨ - 0)
­  ¢ë室:
HL, IX - ç¨á«®
C flag - ®è¨¡ª 
[]------------------------------------------------------------------------[]
ConvTxtNum16 - процедура конвертации текста в число 16 bit
ConvTxtNum16 - ¯à®æ¥¤ãà  ª®­¢¥àâ æ¨¨ ⥪áâ  ¢ ç¨á«® 16 bit
на вход:
DE - адрес текста (конец строки - 0)
на выход:
HL - число
C flag - ошибка
­  ¢å®¤:
DE -  ¤à¥á ⥪áâ  (ª®­¥æ áâப¨ - 0)
­  ¢ë室:
HL - ç¨á«®
C flag - ®è¨¡ª 
[]------------------------------------------------------------------------[]
DOSError - процедура вывода окна ошибки (для дос ошибок)
DOSError - ¯à®æ¥¤ãà  ¢ë¢®¤  ®ª­  ®è¨¡ª¨ (¤«ï ¤®á ®è¨¡®ª)
на вход:
A - номер ошибки
на выход:
­  ¢å®¤:
A - ­®¬¥à ®è¨¡ª¨
­  ¢ë室:
-
[]------------------------------------------------------------------------[]
@ -569,4 +569,4 @@
07 july 2002
Anton Enin (C) Copyright 2002 R-lab
если есть вопросы e-mail: r-lab@mail.ru или на спринтер форуме.
¥á«¨ ¥áâì ¢®¯à®áë e-mail: r-lab@mail.ru ¨«¨ ­  á¯à¨­â¥à ä®à㬥.

View File

@ -1,7 +1,7 @@
[]========================================================================[]
* *
* Описание Flex Navigator API v1.xx для разработчиков Flx-Plugins *
* doc v0.3 от 10.07.2002 *
* ޝ¨á ­¨¥ Flex Navigator API v1.xx ¤«ï à §à ¡®â稪®¢ Flx-Plugins *
* doc v0.3 ®â 10.07.2002 *
* *
[]========================================================================[]
@ -10,579 +10,579 @@
[]------------------------------------------------------------------------[]
ClearScreen - процедура отчистки 0-го экана нужным цветом.
ClearScreen - ¯à®æ¥¤ãà  ®âç¨á⪨ 0-£® íª ­  ­ã¦­ë¬ 梥⮬.
на вход:
A - цвет отчистки (00-0Fh)
на выход:
­  ¢å®¤:
A - 梥⠮âç¨á⪨ (00-0Fh)
­  ¢ë室:
-
[]------------------------------------------------------------------------[]
MakeWindow - процедура создания графического окна
MakeWindow - ¯à®æ¥¤ãà  á®§¤ ­¨ï £à ä¨ç¥áª®£® ®ª­ 
на вход:
(SP) - описатель окна
на выход:
­  ¢å®¤:
(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) ä« £ ¢ë¢®¤  ®ª­ : 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 ... описатели обекта
¤ «¥¥ ¨¤ãâ ®¡'¥ªâë ®ª­  ¢ ä®à¬ â¥:
+00 (1) ⨯ ®¡¥ªâ 
+01 ... ®¯¨á â¥«¨ ®¡¥ªâ 
об'екты окна:
0. +00 (1) == 0 - конец списка об'ектов. после этого оконная
функция возвращает управление.
®¡'¥ªâë ®ª­ :
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
11. +00 (1) == 11 - ®âà¨á®¢ª  ­¨¦­¥© ª­®¯ª¨ áªà®«¡ à 
+01 (2) ᬥ饭¨¥ x ®â ­ ç «  ®ª­  (0 - 639)
+03 (2) ᬥ饭¨¥ y ®â ­ ç «  ®ª­  (0 - 255)
[]------------------------------------------------------------------------[]
InvertRectan - процедура замены цвета прямоугольной плоскости
InvertRectan - ¯à®æ¥¤ãà  § ¬¥­ë æ¢¥â  ¯àאַ㣮«ì­®© ¯«®áª®áâ¨
на вход:
HL - x координата
BC - y координата
HX - длина y
LX - длина x
D - текущий цвет
(d7-d4 цвет background, d3-d0 цвет foreground)
E - нужный цвет
(d7-d4 цвет background, d3-d0 цвет foreground)
на выход:
­  ¢å®¤:
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 - адрес байта, следующего за строкой
PrnTxtLnIFF - ¯à®æ¥¤ãà  ¢ë¢®¤  ⥪á⮢ëå áâப ­  £à ä¨ç¥áª¨© íªà ­
640x256 ¢ ०¨¬¥ à §¬¥à­®£® ¯® X èà¨äâ 
­  ¢å®¤:
HL -  ¤à¥á ⥪á⮢®© áâப¨ (ª®­¥æ áâப¨ - 0)
DE - ¯®§¨æ¨ï ¢ë¢®¤  ¯® X
BC - ¯®§¨æ¨ï ¢ë¢®¤  ¯® Y
A - 梥⠯¥ç â¨
(d7-d4 梥â background, d3-d0 梥â foreground)
­  ¢ë室:
HL -  ¤à¥á ¡ ©â , á«¥¤ãî饣® §  áâப®©
[]------------------------------------------------------------------------[]
PrnTxtLnNorm - процедура вывода текстовых строк на графический экран
PrnTxtLnNorm - ¯à®æ¥¤ãà  ¢ë¢®¤  ⥪á⮢ëå áâப ­  £à ä¨ç¥áª¨© íªà ­
640x256
на вход:
HL - адрес текстовой строки (конец строки - 0)
DE - позиция вывода по X
BC - позиция вывода по Y
A - цвет печати
(d7-d4 цвет background, d3-d0 цвет foreground)
на выход:
HL - адрес байта, следующего за строкой
­  ¢å®¤:
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 - адрес байта, следующего за последним символом
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)
на выход:
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)
на выход:
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)
на выход:
PrnRangPathC - ¯à®æ¥¤ãà  ¢ë¢®¤  ¤®á®¢áª¨å ¯ã⥩ ­  £à ä¨ç¥áª¨© íªà ­
640x256 ¢ ०¨¬¥ à §¬¥à­®£® ¯® X èà¨äâ , ®â業âà¨à®¢ ­­ëå
®â­®á¨â¥«ì­® ªà ñ¢ ( <-|-> )
­  ¢å®¤:
IX - ª®«-¢® ¯¨ªá¥«¥© ¯®¤ ¢ë¢®¤ áâப¨
HL -  ¤à¥á ⥪á⮢®© áâப¨ (ª®­¥æ áâப¨ - 0)
DE - ¯®§¨æ¨ï ¢ë¢®¤  ¯® X
BC - ¯®§¨æ¨ï ¢ë¢®¤  ¯® Y
A - 梥⠯¥ç â¨
(d7-d4 梥â background, d3-d0 梥â foreground)
­  ¢ë室:
-
процедура грамотно укорачивает досовский путь до нужного
размера путём замещения невлезающих директорий на ..\
¯à®æ¥¤ãà  £à ¬®â­® 㪮à ç¨¢ ¥â ¤®á®¢áª¨© ¯ãâì ¤® ­ã¦­®£®
à §¬¥à  ¯ãâñ¬ § ¬¥é¥­¨ï ­¥¢«¥§ îé¨å ¤¨à¥ªâ®à¨© ­  ..\
[]------------------------------------------------------------------------[]
InputLine - процедура редактирования строки на графическом экране
640x256 в режиме размерного по X шрифта
InputLine - ¯à®æ¥¤ãà  à¥¤ ªâ¨à®¢ ­¨ï áâப¨ ­  £à ä¨ç¥áª®¬ íªà ­¥
640x256 ¢ ०¨¬¥ à §¬¥à­®£® ¯® X èà¨äâ 
на вход:
IX - адрес описателя строки
HL - адрес описателя элементов экрана (для мышки)
на выход:
­  ¢å®¤:
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 ... сама строка
®¯¨á â¥«ì áâப¨:
+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
(восстанавливает изначальную строку)
¯à®æ¥¤ãàë ¤«ï â ¡«¨æë í«¥¬¥­â®¢ íªà ­ :
InpLnExtN - ¯à®æ¥¤ãà  ­®à¬ «ì­®£® ¢ë室  ¨§ । ªæ¨¨
InpLnExtC - ¯à®æ¥¤ãà  ¢ë室  ¨§ । ªæ¨¨ ¯® cancel
(¢®ááâ ­ ¢«¨¢ ¥â ¨§­ ç «ì­ãî áâபã)
[]------------------------------------------------------------------------[]
InitScrBar - процедура инициализации описателя скроллбара
InitScrBar - ¯à®æ¥¤ãà  ¨­¨æ¨ «¨§ æ¨¨ ®¯¨á â¥«ï áªà®««¡ à 
на вход:
IX - адрес описателя скроллбара
на выход:
­  ¢å®¤:
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) первая видимый элемент
®¯¨á â¥«ì áªà®««¡ à :
+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 - процедура печати горизонтального скроллбара
PrnHScrBar - ¯à®æ¥¤ãà  ¯¥ç â¨ £®à¨§®­â «ì­®£® áªà®««¡ à 
на вход:
IX - адрес описателя скроллбара (см. выше)
на выход:
­  ¢å®¤:
IX -  ¤à¥á ®¯¨á â¥«ï áªà®««¡ à  (á¬. ¢ëè¥)
­  ¢ë室:
-
[]------------------------------------------------------------------------[]
PrnVScrBar - процедура печати вертикального скроллбара
PrnVScrBar - ¯à®æ¥¤ãà  ¯¥ç â¨ ¢¥à⨪ «ì­®£® áªà®««¡ à 
на вход:
IX - адрес описателя скроллбара (см. выше)
на выход:
­  ¢å®¤:
IX -  ¤à¥á ®¯¨á â¥«ï áªà®««¡ à  (á¬. ¢ëè¥)
­  ¢ë室:
-
[]------------------------------------------------------------------------[]
InitProcess - процедура инициализации описателя процессбара
InitProcess - ¯à®æ¥¤ãà  ¨­¨æ¨ «¨§ æ¨¨ ®¯¨á â¥«ï ¯à®æ¥áá¡ à 
на вход:
IX - адрес описателя процессбара
на выход:
­  ¢å®¤:
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)
®¯¨á â¥«ï ¯à®æ¥áá¡ à :
+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 - процедура печати процессбара
PrnProcess - ¯à®æ¥¤ãà  ¯¥ç â¨ ¯à®æ¥áá¡ à 
на вход:
IX - адрес описателя процессбара (см. выше)
на выход:
­  ¢å®¤:
IX -  ¤à¥á ®¯¨á â¥«ï ¯à®æ¥áá¡ à  (á¬. ¢ëè¥)
­  ¢ë室:
-
[]------------------------------------------------------------------------[]
ResFire - процедура ожидания, пока все кнопки мыши не будут отпущены
ResFire - ¯à®æ¥¤ãà  ®¦¨¤ ­¨ï, ¯®ª  ¢á¥ ª­®¯ª¨ ¬ëè¨ ­¥ ¡ã¤ãâ ®â¯ã饭ë
на вход:
­  ¢å®¤:
-
на выход:
­  ¢ë室:
-
[]------------------------------------------------------------------------[]
TestCoords - процедура проверки координат мыши по таблице элементов
зкрана
TestCoords - ¯à®æ¥¤ãà  ¯à®¢¥àª¨ ª®®à¤¨­ â ¬ëè¨ ¯® â ¡«¨æ¥ í«¥¬¥­â®¢
§ªà ­ 
на вход:
IX - адрес таблицы элементов зкрана
на выход:
­  ¢å®¤:
IX -  ¤à¥á â ¡«¨æë í«¥¬¥­â®¢ §ªà ­ 
­  ¢ë室:
-
таблица элементов зкрана:
+00 (2) левая x координата элемента
+02 (2) правая x координата элемента
+04 (2) верхняя y координата элемента
+06 (2) нижняя y координата элемента
+08 (2) флаги элемента
+10 (2) адрес обработчика при не нажатом огне
+12 (2) адрес обработчика при нажатом огне (левая кнопка)
+14 (2) адрес обработчика при нажатом огне (правая кнопка)
â ¡«¨æ  í«¥¬¥­â®¢ §ªà ­ :
+00 (2) «¥¢ ï x ª®®à¤¨­ â  í«¥¬¥­â 
+02 (2) ¯à ¢ ï x ª®®à¤¨­ â  í«¥¬¥­â 
+04 (2) ¢¥àå­ïï y ª®®à¤¨­ â  í«¥¬¥­â 
+06 (2) ­¨¦­ïï y ª®®à¤¨­ â  í«¥¬¥­â 
+08 (2) ä« £¨ í«¥¬¥­â 
+10 (2)  ¤à¥á ®¡à ¡®â稪  ¯à¨ ­¥ ­ ¦ â®¬ ®£­¥
+12 (2)  ¤à¥á ®¡à ¡®â稪  ¯à¨ ­ ¦ â®¬ ®£­¥ («¥¢ ï ª­®¯ª )
+14 (2)  ¤à¥á ®¡à ¡®â稪  ¯à¨ ­ ¦ â®¬ ®£­¥ (¯à ¢ ï ª­®¯ª )
если +00 == 0x8000 это считается концом таблицы элементов зкрана
¥á«¨ +00 == 0x8000 íâ® áç¨â ¥âáï ª®­æ®¬ â ¡«¨æë í«¥¬¥­â®¢ §ªà ­ 
флаги элемента:
d00 - элемент кнопка
d01 - рабочая кнопка
d02 - инверт
d03 - статичный инверт
d04 - программа запускается без адреса возврата без огня
d05 - программа запускается без адреса возврата по левой кнопке
огня
d06 - программа запускается без адреса возврата по правой кнопке
огня
d07 - вызвать функцию закрытия окна перед запуском программы без
огня
d08 - вызвать функцию закрытия окна перед запуском программы по
левой кнопке
d09 - вызвать функцию закрытия окна перед запуском программы по
правой кнопке
d15 - это флаг: 1 - инверт при огне не убирать
ä« £¨ í«¥¬¥­â :
d00 - í«¥¬¥­â ª­®¯ª 
d01 - à ¡®ç ï ª­®¯ª 
d02 - ¨­¢¥àâ
d03 - áâ â¨ç­ë© ¨­¢¥àâ
d04 - ¯à®£à ¬¬  § ¯ã᪠¥âáï ¡¥§  ¤à¥á  ¢®§¢à â  ¡¥§ ®£­ï
d05 - ¯à®£à ¬¬  § ¯ã᪠¥âáï ¡¥§  ¤à¥á  ¢®§¢à â  ¯® «¥¢®© ª­®¯ª¥
®£­ï
d06 - ¯à®£à ¬¬  § ¯ã᪠¥âáï ¡¥§  ¤à¥á  ¢®§¢à â  ¯® ¯à ¢®© ª­®¯ª¥
®£­ï
d07 - ¢ë§¢ âì äã­ªæ¨î § ªàëâ¨ï ®ª­  ¯¥à¥¤ § ¯ã᪮¬ ¯à®£à ¬¬ë ¡¥§
®£­ï
d08 - ¢ë§¢ âì äã­ªæ¨î § ªàëâ¨ï ®ª­  ¯¥à¥¤ § ¯ã᪮¬ ¯à®£à ¬¬ë ¯®
«¥¢®© ª­®¯ª¥
d09 - ¢ë§¢ âì äã­ªæ¨î § ªàëâ¨ï ®ª­  ¯¥à¥¤ § ¯ã᪮¬ ¯à®£à ¬¬ë ¯®
¯à ¢®© ª­®¯ª¥
d15 - íâ® ä« £: 1 - ¨­¢¥à⠯ਠ®£­¥ ­¥ 㡨à âì
[]------------------------------------------------------------------------[]
SetCMOSPrint - процедура включения печати даты/время из CMOS
SetCMOSPrint - ¯à®æ¥¤ãà  ¢ª«î祭¨ï ¯¥ç â¨ ¤ âë/¢à¥¬ï ¨§ CMOS
на вход:
- будет описано позднее
на выход:
­  ¢å®¤:
- ¡ã¤¥â ®¯¨á ­® ¯®§¤­¥¥
­  ¢ë室:
-
[]------------------------------------------------------------------------[]
ResCMOSPrint - процедура выключения печати даты/время из CMOS
ResCMOSPrint - ¯à®æ¥¤ãà  ¢ëª«î祭¨ï ¯¥ç â¨ ¤ âë/¢à¥¬ï ¨§ CMOS
на вход:
- будет описано позднее
на выход:
­  ¢å®¤:
- ¡ã¤¥â ®¯¨á ­® ¯®§¤­¥¥
­  ¢ë室:
-
[]------------------------------------------------------------------------[]
SetClock - процедура установки курсора мыши в часы
SetClock - ¯à®æ¥¤ãà  ãáâ ­®¢ª¨ ªãàá®à  ¬ëè¨ ¢ ç áë
на вход:
­  ¢å®¤:
-
на выход:
­  ¢ë室:
-
[]------------------------------------------------------------------------[]
SetMouse - процедура установки курсора мыши в нормальный курсор
SetMouse - ¯à®æ¥¤ãà  ãáâ ­®¢ª¨ ªãàá®à  ¬ëè¨ ¢ ­®à¬ «ì­ë© ªãàá®à
на вход:
­  ¢å®¤:
-
на выход:
­  ¢ë室:
-
[]------------------------------------------------------------------------[]
MoveBytes - процедура быстрого копирования памяти с помощью
акселлератора с увеличением адресов
на вход:
HL - откуда
DE - куда
BC - сколько
на выход:
HL - (откуда + сколько)
DE - (куда + сколько)
MoveBytes - ¯à®æ¥¤ãà  ¡ëáâண® ª®¯¨à®¢ ­¨ï ¯ ¬ïâ¨ á ¯®¬®éìî
 ªá¥««¥à â®à  á 㢥«¨ç¥­¨¥¬  ¤à¥á®¢
­  ¢å®¤:
HL - ®âªã¤ 
DE - ªã¤ 
BC - ᪮«ìª®
­  ¢ë室:
HL - (®âªã¤  + ᪮«ìª®)
DE - (ªã¤  + ᪮«ìª®)
[]------------------------------------------------------------------------[]
MoveBytesUp - процедура быстрого копирования памяти с помощью
акселлератора с уменьшением адресов
на вход:
HL - откуда
DE - куда
BC - сколько
на выход:
HL - (откуда - сколько)
DE - (куда - сколько)
MoveBytesUp - ¯à®æ¥¤ãà  ¡ëáâண® ª®¯¨à®¢ ­¨ï ¯ ¬ïâ¨ á ¯®¬®éìî
 ªá¥««¥à â®à  á 㬥­ì襭¨¥¬  ¤à¥á®¢
­  ¢å®¤:
HL - ®âªã¤ 
DE - ªã¤ 
BC - ᪮«ìª®
­  ¢ë室:
HL - (®âªã¤  - ᪮«ìª®)
DE - (ªã¤  - ᪮«ìª®)
[]------------------------------------------------------------------------[]
Mult8 - процедура умножения 8 * 8 bit = 16 bit
Mult8 - ¯à®æ¥¤ãà  ã¬­®¦¥­¨ï 8 * 8 bit = 16 bit
на вход:
­  ¢å®¤:
E * C
на выход:
HL - результат
­  ¢ë室:
HL - १ã«ìâ â
[]------------------------------------------------------------------------[]
Mult16X8 - процедура умножения 16 * 8 bit = 24 bit
Mult16X8 - ¯à®æ¥¤ãà  ã¬­®¦¥­¨ï 16 * 8 bit = 24 bit
на вход:
­  ¢å®¤:
DE * C
на выход:
A, HL - результат
­  ¢ë室:
A, HL - १ã«ìâ â
[]------------------------------------------------------------------------[]
Mult16 - процедура умножения 16 * 16 bit = 16 bit
Mult16 - ¯à®æ¥¤ãà  ã¬­®¦¥­¨ï 16 * 16 bit = 16 bit
на вход:
­  ¢å®¤:
DE * BC
на выход:
HL - результат
­  ¢ë室:
HL - १ã«ìâ â
[]------------------------------------------------------------------------[]
Mult16X16 - процедура умножения 16 * 16 bit = 32 bit
Mult16X16 - ¯à®æ¥¤ãà  ã¬­®¦¥­¨ï 16 * 16 bit = 32 bit
на вход:
­  ¢å®¤:
DE * BC
на выход:
HL, DE - результат
­  ¢ë室:
HL, DE - १ã«ìâ â
[]------------------------------------------------------------------------[]
Mult32 - процедура умножения 32 * 16 bit = 32 bit
Mult32 - ¯à®æ¥¤ãà  ã¬­®¦¥­¨ï 32 * 16 bit = 32 bit
на вход:
­  ¢å®¤:
HL, DE * BC
на выход:
HL, DE - результат
­  ¢ë室:
HL, DE - १ã«ìâ â
[]------------------------------------------------------------------------[]
Divis16X16 - процедура деления 16 / 16 bit = 16.16 bit
Divis16X16 - ¯à®æ¥¤ãà  ¤¥«¥­¨ï 16 / 16 bit = 16.16 bit
на вход:
­  ¢å®¤:
BC / DE
на выход:
BC - результат
HL - остаток
­  ¢ë室:
BC - १ã«ìâ â
HL - ®áâ â®ª
[]------------------------------------------------------------------------[]
Divis24X16 - процедура деления 24 / 16 bit = 8.16 bit
Divis24X16 - ¯à®æ¥¤ãà  ¤¥«¥­¨ï 24 / 16 bit = 8.16 bit
на вход:
­  ¢å®¤:
HL, C / DE
на выход:
A - результат
HL - остаток
­  ¢ë室:
A - १ã«ìâ â
HL - ®áâ â®ª
[]------------------------------------------------------------------------[]
Divis32X16 - процедура деления 32 / 16 bit = 16.16 bit
Divis32X16 - ¯à®æ¥¤ãà  ¤¥«¥­¨ï 32 / 16 bit = 16.16 bit
на вход:
­  ¢å®¤:
HL, DE / BC
на выход:
DE - результат
HL - остаток
­  ¢ë室:
DE - १ã«ìâ â
HL - ®áâ â®ª
[]------------------------------------------------------------------------[]
Divis32 - процедура деления 32 / 16 bit = 32.16 bit
Divis32 - ¯à®æ¥¤ãà  ¤¥«¥­¨ï 32 / 16 bit = 32.16 bit
на вход:
­  ¢å®¤:
HL, DE / BC
на выход:
HL, DE - результат
BC - остаток
­  ¢ë室:
HL, DE - १ã«ìâ â
BC - ®áâ â®ª
[]------------------------------------------------------------------------[]
ConvNumTxt32 - процедура конвертации числа 32 bit в текст
ConvNumTxt32 - ¯à®æ¥¤ãà  ª®­¢¥àâ æ¨¨ ç¨á«  32 bit ¢ ⥪áâ
на вход:
BC, HL - число 32 bit
DE - адрес буфера
на выход:
DE - адрес следующего байта за числом
­  ¢å®¤:
BC, HL - ç¨á«® 32 bit
DE -  ¤à¥á ¡ãä¥à 
­  ¢ë室:
DE -  ¤à¥á á«¥¤ãî饣® ¡ ©â  §  ç¨á«®¬
[]------------------------------------------------------------------------[]
ConvNumTxt16 - процедура конвертации числа 16 bit в текст
ConvNumTxt16 - ¯à®æ¥¤ãà  ª®­¢¥àâ æ¨¨ ç¨á«  16 bit ¢ ⥪áâ
на вход:
HL - число 16 bit
DE - адрес буфера
на выход:
DE - адрес следующего байта за числом
­  ¢å®¤:
HL - ç¨á«® 16 bit
DE -  ¤à¥á ¡ãä¥à 
­  ¢ë室:
DE -  ¤à¥á á«¥¤ãî饣® ¡ ©â  §  ç¨á«®¬
[]------------------------------------------------------------------------[]
ConvNumTxt8 - процедура конвертации числа 8 bit в текст
ConvNumTxt8 - ¯à®æ¥¤ãà  ª®­¢¥àâ æ¨¨ ç¨á«  8 bit ¢ ⥪áâ
на вход:
A - число 8 bit
DE - адрес буфера
на выход:
DE - адрес следующего байта за числом
­  ¢å®¤:
A - ç¨á«® 8 bit
DE -  ¤à¥á ¡ãä¥à 
­  ¢ë室:
DE -  ¤à¥á á«¥¤ãî饣® ¡ ©â  §  ç¨á«®¬
[]------------------------------------------------------------------------[]
ConvTxtNum32 - процедура конвертации текста в число 32 bit
ConvTxtNum32 - ¯à®æ¥¤ãà  ª®­¢¥àâ æ¨¨ ⥪áâ  ¢ ç¨á«® 32 bit
на вход:
DE - адрес текста (конец строки - 0)
на выход:
HL, IX - число
C flag - ошибка
­  ¢å®¤:
DE -  ¤à¥á ⥪áâ  (ª®­¥æ áâப¨ - 0)
­  ¢ë室:
HL, IX - ç¨á«®
C flag - ®è¨¡ª 
[]------------------------------------------------------------------------[]
ConvTxtNum16 - процедура конвертации текста в число 16 bit
ConvTxtNum16 - ¯à®æ¥¤ãà  ª®­¢¥àâ æ¨¨ ⥪áâ  ¢ ç¨á«® 16 bit
на вход:
DE - адрес текста (конец строки - 0)
на выход:
HL - число
C flag - ошибка
­  ¢å®¤:
DE -  ¤à¥á ⥪áâ  (ª®­¥æ áâப¨ - 0)
­  ¢ë室:
HL - ç¨á«®
C flag - ®è¨¡ª 
[]------------------------------------------------------------------------[]
DOSError - процедура вывода окна ошибки (для дос ошибок)
DOSError - ¯à®æ¥¤ãà  ¢ë¢®¤  ®ª­  ®è¨¡ª¨ (¤«ï ¤®á ®è¨¡®ª)
на вход:
A - номер ошибки
на выход:
­  ¢å®¤:
A - ­®¬¥à ®è¨¡ª¨
­  ¢ë室:
-
[]------------------------------------------------------------------------[]
@ -593,4 +593,4 @@
10 july 2002
Anton Enin (C) Copyright 2002 R-lab
если есть вопросы e-mail: r-lab@mail.ru или на спринтер форуме.
¥á«¨ ¥áâì ¢®¯à®áë e-mail: r-lab@mail.ru ¨«¨ ­  á¯à¨­â¥à ä®à㬥.

View File

@ -1,7 +1,7 @@
[]========================================================================[]
* *
* Описание Flex Navigator API v1.xx для разработчиков Flx-Plugins *
* doc v0.4 от 13.07.2002 *
* ޝ¨á ­¨¥ Flex Navigator API v1.xx ¤«ï à §à ¡®â稪®¢ Flx-Plugins *
* doc v0.4 ®â 13.07.2002 *
* *
[]========================================================================[]
@ -10,594 +10,594 @@
[]------------------------------------------------------------------------[]
ClearScreen - процедура отчистки 0-го экана нужным цветом.
ClearScreen - ¯à®æ¥¤ãà  ®âç¨á⪨ 0-£® íª ­  ­ã¦­ë¬ 梥⮬.
на вход:
A - цвет отчистки (00-0Fh)
на выход:
­  ¢å®¤:
A - 梥⠮âç¨á⪨ (00-0Fh)
­  ¢ë室:
-
[]------------------------------------------------------------------------[]
MakeWindow - процедура создания графического окна
MakeWindow - ¯à®æ¥¤ãà  á®§¤ ­¨ï £à ä¨ç¥áª®£® ®ª­ 
на вход:
(SP) - описатель окна
на выход:
­  ¢å®¤:
(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) ä« £ ¢ë¢®¤  ®ª­ : 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 ... описатели обекта
¤ «¥¥ ¨¤ãâ ®¡'¥ªâë ®ª­  ¢ ä®à¬ â¥:
+00 (1) ⨯ ®¡¥ªâ 
+01 ... ®¯¨á â¥«¨ ®¡¥ªâ 
об'екты окна:
0. +00 (1) == 0 - конец списка об'ектов. после этого оконная
функция возвращает управление.
®¡'¥ªâë ®ª­ :
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
11. +00 (1) == 11 - ®âà¨á®¢ª  ­¨¦­¥© ª­®¯ª¨ áªà®«¡ à 
+01 (2) ᬥ饭¨¥ x ®â ­ ç «  ®ª­  (0 - 639)
+03 (2) ᬥ饭¨¥ y ®â ­ ç «  ®ª­  (0 - 255)
[]------------------------------------------------------------------------[]
InvertRectan - процедура замены цвета прямоугольной плоскости
InvertRectan - ¯à®æ¥¤ãà  § ¬¥­ë æ¢¥â  ¯àאַ㣮«ì­®© ¯«®áª®áâ¨
на вход:
HL - x координата
BC - y координата
HX - длина y
LX - длина x
D - текущий цвет
(d7-d4 цвет background, d3-d0 цвет foreground)
E - нужный цвет
(d7-d4 цвет background, d3-d0 цвет foreground)
на выход:
­  ¢å®¤:
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 - адрес байта, следующего за строкой
PrnTxtLnIFF - ¯à®æ¥¤ãà  ¢ë¢®¤  ⥪á⮢ëå áâப ­  £à ä¨ç¥áª¨© íªà ­
640x256 ¢ ०¨¬¥ à §¬¥à­®£® ¯® X èà¨äâ 
­  ¢å®¤:
HL -  ¤à¥á ⥪á⮢®© áâப¨ (ª®­¥æ áâப¨ - 0)
DE - ¯®§¨æ¨ï ¢ë¢®¤  ¯® X
BC - ¯®§¨æ¨ï ¢ë¢®¤  ¯® Y
A - 梥⠯¥ç â¨
(d7-d4 梥â background, d3-d0 梥â foreground)
­  ¢ë室:
HL -  ¤à¥á ¡ ©â , á«¥¤ãî饣® §  áâப®©
[]------------------------------------------------------------------------[]
PrnTxtLnNorm - процедура вывода текстовых строк на графический экран
PrnTxtLnNorm - ¯à®æ¥¤ãà  ¢ë¢®¤  ⥪á⮢ëå áâப ­  £à ä¨ç¥áª¨© íªà ­
640x256
на вход:
HL - адрес текстовой строки (конец строки - 0)
DE - позиция вывода по X
BC - позиция вывода по Y
A - цвет печати
(d7-d4 цвет background, d3-d0 цвет foreground)
на выход:
HL - адрес байта, следующего за строкой
­  ¢å®¤:
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 - адрес байта, следующего за последним символом
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)
на выход:
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)
на выход:
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)
на выход:
PrnRangPathC - ¯à®æ¥¤ãà  ¢ë¢®¤  ¤®á®¢áª¨å ¯ã⥩ ­  £à ä¨ç¥áª¨© íªà ­
640x256 ¢ ०¨¬¥ à §¬¥à­®£® ¯® X èà¨äâ , ®â業âà¨à®¢ ­­ëå
®â­®á¨â¥«ì­® ªà ñ¢ ( <-|-> )
­  ¢å®¤:
IX - ª®«-¢® ¯¨ªá¥«¥© ¯®¤ ¢ë¢®¤ áâப¨
HL -  ¤à¥á ⥪á⮢®© áâப¨ (ª®­¥æ áâப¨ - 0)
DE - ¯®§¨æ¨ï ¢ë¢®¤  ¯® X
BC - ¯®§¨æ¨ï ¢ë¢®¤  ¯® Y
A - 梥⠯¥ç â¨
(d7-d4 梥â background, d3-d0 梥â foreground)
­  ¢ë室:
-
процедура грамотно укорачивает досовский путь до нужного
размера путём замещения невлезающих директорий на ..\
¯à®æ¥¤ãà  £à ¬®â­® 㪮à ç¨¢ ¥â ¤®á®¢áª¨© ¯ãâì ¤® ­ã¦­®£®
à §¬¥à  ¯ãâñ¬ § ¬¥é¥­¨ï ­¥¢«¥§ îé¨å ¤¨à¥ªâ®à¨© ­  ..\
[]------------------------------------------------------------------------[]
InputLine - процедура редактирования строки на графическом экране
640x256 в режиме размерного по X шрифта
InputLine - ¯à®æ¥¤ãà  à¥¤ ªâ¨à®¢ ­¨ï áâப¨ ­  £à ä¨ç¥áª®¬ íªà ­¥
640x256 ¢ ०¨¬¥ à §¬¥à­®£® ¯® X èà¨äâ 
на вход:
IX - адрес описателя строки
HL - адрес описателя элементов экрана (для мышки)
на выход:
­  ¢å®¤:
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 ... сама строка
®¯¨á â¥«ì áâப¨:
+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
(восстанавливает изначальную строку)
¯à®æ¥¤ãàë ¤«ï â ¡«¨æë í«¥¬¥­â®¢ íªà ­ :
InpLnExtN - ¯à®æ¥¤ãà  ­®à¬ «ì­®£® ¢ë室  ¨§ । ªæ¨¨
InpLnExtC - ¯à®æ¥¤ãà  ¢ë室  ¨§ । ªæ¨¨ ¯® cancel
(¢®ááâ ­ ¢«¨¢ ¥â ¨§­ ç «ì­ãî áâபã)
[]------------------------------------------------------------------------[]
InitScrBar - процедура инициализации описателя скроллбара
InitScrBar - ¯à®æ¥¤ãà  ¨­¨æ¨ «¨§ æ¨¨ ®¯¨á â¥«ï áªà®««¡ à 
на вход:
IX - адрес описателя скроллбара
на выход:
­  ¢å®¤:
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) первая видимый элемент
®¯¨á â¥«ì áªà®««¡ à :
+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 - процедура печати горизонтального скроллбара
PrnHScrBar - ¯à®æ¥¤ãà  ¯¥ç â¨ £®à¨§®­â «ì­®£® áªà®««¡ à 
на вход:
IX - адрес описателя скроллбара (см. выше)
на выход:
­  ¢å®¤:
IX -  ¤à¥á ®¯¨á â¥«ï áªà®««¡ à  (á¬. ¢ëè¥)
­  ¢ë室:
-
[]------------------------------------------------------------------------[]
PrnVScrBar - процедура печати вертикального скроллбара
PrnVScrBar - ¯à®æ¥¤ãà  ¯¥ç â¨ ¢¥à⨪ «ì­®£® áªà®««¡ à 
на вход:
IX - адрес описателя скроллбара (см. выше)
на выход:
­  ¢å®¤:
IX -  ¤à¥á ®¯¨á â¥«ï áªà®««¡ à  (á¬. ¢ëè¥)
­  ¢ë室:
-
[]------------------------------------------------------------------------[]
InitProcess - процедура инициализации описателя процессбара
InitProcess - ¯à®æ¥¤ãà  ¨­¨æ¨ «¨§ æ¨¨ ®¯¨á â¥«ï ¯à®æ¥áá¡ à 
на вход:
IX - адрес описателя процессбара
на выход:
­  ¢å®¤:
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)
®¯¨á â¥«ï ¯à®æ¥áá¡ à :
+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 - процедура печати процессбара
PrnProcess - ¯à®æ¥¤ãà  ¯¥ç â¨ ¯à®æ¥áá¡ à 
на вход:
IX - адрес описателя процессбара (см. выше)
на выход:
­  ¢å®¤:
IX -  ¤à¥á ®¯¨á â¥«ï ¯à®æ¥áá¡ à  (á¬. ¢ëè¥)
­  ¢ë室:
-
[]------------------------------------------------------------------------[]
ResFire - процедура ожидания, пока все кнопки мыши не будут отпущены
ResFire - ¯à®æ¥¤ãà  ®¦¨¤ ­¨ï, ¯®ª  ¢á¥ ª­®¯ª¨ ¬ëè¨ ­¥ ¡ã¤ãâ ®â¯ã饭ë
на вход:
­  ¢å®¤:
-
на выход:
­  ¢ë室:
-
[]------------------------------------------------------------------------[]
TestCoords - процедура проверки координат мыши по таблице элементов
зкрана
TestCoords - ¯à®æ¥¤ãà  ¯à®¢¥àª¨ ª®®à¤¨­ â ¬ëè¨ ¯® â ¡«¨æ¥ í«¥¬¥­â®¢
§ªà ­ 
на вход:
IX - адрес таблицы элементов зкрана
на выход:
­  ¢å®¤:
IX -  ¤à¥á â ¡«¨æë í«¥¬¥­â®¢ §ªà ­ 
­  ¢ë室:
-
таблица элементов зкрана:
+00 (2) левая x координата элемента
+02 (2) правая x координата элемента
+04 (2) верхняя y координата элемента
+06 (2) нижняя y координата элемента
+08 (2) флаги элемента
+10 (2) адрес обработчика при не нажатом огне
+12 (2) адрес обработчика при нажатом огне (левая кнопка)
+14 (2) адрес обработчика при нажатом огне (правая кнопка)
â ¡«¨æ  í«¥¬¥­â®¢ §ªà ­ :
+00 (2) «¥¢ ï x ª®®à¤¨­ â  í«¥¬¥­â 
+02 (2) ¯à ¢ ï x ª®®à¤¨­ â  í«¥¬¥­â 
+04 (2) ¢¥àå­ïï y ª®®à¤¨­ â  í«¥¬¥­â 
+06 (2) ­¨¦­ïï y ª®®à¤¨­ â  í«¥¬¥­â 
+08 (2) ä« £¨ í«¥¬¥­â 
+10 (2)  ¤à¥á ®¡à ¡®â稪  ¯à¨ ­¥ ­ ¦ â®¬ ®£­¥
+12 (2)  ¤à¥á ®¡à ¡®â稪  ¯à¨ ­ ¦ â®¬ ®£­¥ («¥¢ ï ª­®¯ª )
+14 (2)  ¤à¥á ®¡à ¡®â稪  ¯à¨ ­ ¦ â®¬ ®£­¥ (¯à ¢ ï ª­®¯ª )
если +00 == 0x8000 это считается концом таблицы элементов зкрана
¥á«¨ +00 == 0x8000 íâ® áç¨â ¥âáï ª®­æ®¬ â ¡«¨æë í«¥¬¥­â®¢ §ªà ­ 
флаги элемента:
d00 - элемент кнопка
d01 - рабочая кнопка
d02 - инверт
d03 - статичный инверт
d04 - программа запускается без адреса возврата без огня
(т.е. при попадании курсора мыши в эту прямоугольную
область удаляется адрес возрата со стека и осуществляется
переход на адрес, который находиться в +10)
d05 - программа запускается без адреса возврата по левой кнопке
огня
(т.е. при нажатии левой кнопки мыши над прямоугольной
областью удаляется адрес возрата со стека и осуществляется
переход на адрес, который находиться в +12)
d06 - программа запускается без адреса возврата по правой кнопке
огня
(т.е. при нажатии правой кнопки мыши над прямоугольной
областью удаляется адрес возрата со стека и осуществляется
переход на адрес, который находиться в +14)
d07 - вызвать функцию закрытия окна перед запуском программы без
огня
(т.е. при попадании курсора мыши в эту прямоугольную
область удаляется последнее окно с экрана)
d08 - вызвать функцию закрытия окна перед запуском программы по
левой кнопке
(т.е. при нажатии левой кнопки мыши над прямоугольной
областью удаляется последнее окно с экрана)
d09 - вызвать функцию закрытия окна перед запуском программы по
правой кнопке
(т.е. при нажатии правой кнопки мыши над прямоугольной
областью удаляется последнее окно с экрана)
d15 - это флаг: 1 - инверт при огне не убирать
ä« £¨ í«¥¬¥­â :
d00 - í«¥¬¥­â ª­®¯ª 
d01 - à ¡®ç ï ª­®¯ª 
d02 - ¨­¢¥àâ
d03 - áâ â¨ç­ë© ¨­¢¥àâ
d04 - ¯à®£à ¬¬  § ¯ã᪠¥âáï ¡¥§  ¤à¥á  ¢®§¢à â  ¡¥§ ®£­ï
(â.¥. ¯à¨ ¯®¯ ¤ ­¨¨ ªãàá®à  ¬ëè¨ ¢ íâã ¯àאַ㣮«ì­ãî
®¡« áâì 㤠«ï¥âáï  ¤à¥á ¢®§à â  á® á⥪  ¨ ®áãé¥á⢫ï¥âáï
¯¥à¥å®¤ ­   ¤à¥á, ª®â®àë© ­ å®¤¨âìáï ¢ +10)
d05 - ¯à®£à ¬¬  § ¯ã᪠¥âáï ¡¥§  ¤à¥á  ¢®§¢à â  ¯® «¥¢®© ª­®¯ª¥
®£­ï
(â.¥. ¯à¨ ­ ¦ â¨¨ «¥¢®© ª­®¯ª¨ ¬ëè¨ ­ ¤ ¯àאַ㣮«ì­®©
®¡« áâìî 㤠«ï¥âáï  ¤à¥á ¢®§à â  á® á⥪  ¨ ®áãé¥á⢫ï¥âáï
¯¥à¥å®¤ ­   ¤à¥á, ª®â®àë© ­ å®¤¨âìáï ¢ +12)
d06 - ¯à®£à ¬¬  § ¯ã᪠¥âáï ¡¥§  ¤à¥á  ¢®§¢à â  ¯® ¯à ¢®© ª­®¯ª¥
®£­ï
(â.¥. ¯à¨ ­ ¦ â¨¨ ¯à ¢®© ª­®¯ª¨ ¬ëè¨ ­ ¤ ¯àאַ㣮«ì­®©
®¡« áâìî 㤠«ï¥âáï  ¤à¥á ¢®§à â  á® á⥪  ¨ ®áãé¥á⢫ï¥âáï
¯¥à¥å®¤ ­   ¤à¥á, ª®â®àë© ­ å®¤¨âìáï ¢ +14)
d07 - ¢ë§¢ âì äã­ªæ¨î § ªàëâ¨ï ®ª­  ¯¥à¥¤ § ¯ã᪮¬ ¯à®£à ¬¬ë ¡¥§
®£­ï
(â.¥. ¯à¨ ¯®¯ ¤ ­¨¨ ªãàá®à  ¬ëè¨ ¢ íâã ¯àאַ㣮«ì­ãî
®¡« áâì 㤠«ï¥âáï ¯®á«¥¤­¥¥ ®ª­® á íªà ­ )
d08 - ¢ë§¢ âì äã­ªæ¨î § ªàëâ¨ï ®ª­  ¯¥à¥¤ § ¯ã᪮¬ ¯à®£à ¬¬ë ¯®
«¥¢®© ª­®¯ª¥
(â.¥. ¯à¨ ­ ¦ â¨¨ «¥¢®© ª­®¯ª¨ ¬ëè¨ ­ ¤ ¯àאַ㣮«ì­®©
®¡« áâìî 㤠«ï¥âáï ¯®á«¥¤­¥¥ ®ª­® á íªà ­ )
d09 - ¢ë§¢ âì äã­ªæ¨î § ªàëâ¨ï ®ª­  ¯¥à¥¤ § ¯ã᪮¬ ¯à®£à ¬¬ë ¯®
¯à ¢®© ª­®¯ª¥
(â.¥. ¯à¨ ­ ¦ â¨¨ ¯à ¢®© ª­®¯ª¨ ¬ëè¨ ­ ¤ ¯àאַ㣮«ì­®©
®¡« áâìî 㤠«ï¥âáï ¯®á«¥¤­¥¥ ®ª­® á íªà ­ )
d15 - íâ® ä« £: 1 - ¨­¢¥à⠯ਠ®£­¥ ­¥ 㡨à âì
[]------------------------------------------------------------------------[]
SetCMOSPrint - процедура включения печати даты/время из CMOS
SetCMOSPrint - ¯à®æ¥¤ãà  ¢ª«î祭¨ï ¯¥ç â¨ ¤ âë/¢à¥¬ï ¨§ CMOS
на вход:
- будет описано позднее
на выход:
­  ¢å®¤:
- ¡ã¤¥â ®¯¨á ­® ¯®§¤­¥¥
­  ¢ë室:
-
[]------------------------------------------------------------------------[]
ResCMOSPrint - процедура выключения печати даты/время из CMOS
ResCMOSPrint - ¯à®æ¥¤ãà  ¢ëª«î祭¨ï ¯¥ç â¨ ¤ âë/¢à¥¬ï ¨§ CMOS
на вход:
- будет описано позднее
на выход:
­  ¢å®¤:
- ¡ã¤¥â ®¯¨á ­® ¯®§¤­¥¥
­  ¢ë室:
-
[]------------------------------------------------------------------------[]
SetClock - процедура установки курсора мыши в часы
SetClock - ¯à®æ¥¤ãà  ãáâ ­®¢ª¨ ªãàá®à  ¬ëè¨ ¢ ç áë
на вход:
­  ¢å®¤:
-
на выход:
­  ¢ë室:
-
[]------------------------------------------------------------------------[]
SetMouse - процедура установки курсора мыши в нормальный курсор
SetMouse - ¯à®æ¥¤ãà  ãáâ ­®¢ª¨ ªãàá®à  ¬ëè¨ ¢ ­®à¬ «ì­ë© ªãàá®à
на вход:
­  ¢å®¤:
-
на выход:
­  ¢ë室:
-
[]------------------------------------------------------------------------[]
MoveBytes - процедура быстрого копирования памяти с помощью
акселлератора с увеличением адресов
на вход:
HL - откуда
DE - куда
BC - сколько
на выход:
HL - (откуда + сколько)
DE - (куда + сколько)
MoveBytes - ¯à®æ¥¤ãà  ¡ëáâண® ª®¯¨à®¢ ­¨ï ¯ ¬ïâ¨ á ¯®¬®éìî
 ªá¥««¥à â®à  á 㢥«¨ç¥­¨¥¬  ¤à¥á®¢
­  ¢å®¤:
HL - ®âªã¤ 
DE - ªã¤ 
BC - ᪮«ìª®
­  ¢ë室:
HL - (®âªã¤  + ᪮«ìª®)
DE - (ªã¤  + ᪮«ìª®)
[]------------------------------------------------------------------------[]
MoveBytesUp - процедура быстрого копирования памяти с помощью
акселлератора с уменьшением адресов
на вход:
HL - откуда
DE - куда
BC - сколько
на выход:
HL - (откуда - сколько)
DE - (куда - сколько)
MoveBytesUp - ¯à®æ¥¤ãà  ¡ëáâண® ª®¯¨à®¢ ­¨ï ¯ ¬ïâ¨ á ¯®¬®éìî
 ªá¥««¥à â®à  á 㬥­ì襭¨¥¬  ¤à¥á®¢
­  ¢å®¤:
HL - ®âªã¤ 
DE - ªã¤ 
BC - ᪮«ìª®
­  ¢ë室:
HL - (®âªã¤  - ᪮«ìª®)
DE - (ªã¤  - ᪮«ìª®)
[]------------------------------------------------------------------------[]
Mult8 - процедура беззнакового умножения 8 * 8 bit = 16 bit
Mult8 - ¯à®æ¥¤ãà  ¡¥§§­ ª®¢®£® 㬭®¦¥­¨ï 8 * 8 bit = 16 bit
на вход:
­  ¢å®¤:
E * C
на выход:
HL - результат
­  ¢ë室:
HL - १ã«ìâ â
[]------------------------------------------------------------------------[]
Mult16X8 - процедура беззнакового умножения 16 * 8 bit = 24 bit
Mult16X8 - ¯à®æ¥¤ãà  ¡¥§§­ ª®¢®£® 㬭®¦¥­¨ï 16 * 8 bit = 24 bit
на вход:
­  ¢å®¤:
DE * C
на выход:
A, HL - результат
­  ¢ë室:
A, HL - १ã«ìâ â
[]------------------------------------------------------------------------[]
Mult16 - процедура беззнакового умножения 16 * 16 bit = 16 bit
Mult16 - ¯à®æ¥¤ãà  ¡¥§§­ ª®¢®£® 㬭®¦¥­¨ï 16 * 16 bit = 16 bit
на вход:
­  ¢å®¤:
DE * BC
на выход:
HL - результат
­  ¢ë室:
HL - १ã«ìâ â
[]------------------------------------------------------------------------[]
Mult16X16 - процедура беззнакового умножения 16 * 16 bit = 32 bit
Mult16X16 - ¯à®æ¥¤ãà  ¡¥§§­ ª®¢®£® 㬭®¦¥­¨ï 16 * 16 bit = 32 bit
на вход:
­  ¢å®¤:
DE * BC
на выход:
HL, DE - результат
­  ¢ë室:
HL, DE - १ã«ìâ â
[]------------------------------------------------------------------------[]
Mult32 - процедура беззнакового умножения 32 * 16 bit = 32 bit
Mult32 - ¯à®æ¥¤ãà  ¡¥§§­ ª®¢®£® 㬭®¦¥­¨ï 32 * 16 bit = 32 bit
на вход:
­  ¢å®¤:
HL, DE * BC
на выход:
HL, DE - результат
­  ¢ë室:
HL, DE - १ã«ìâ â
[]------------------------------------------------------------------------[]
Divis16X16 - процедура беззнакового деления 16 / 16 bit = 16.16 bit
Divis16X16 - ¯à®æ¥¤ãà  ¡¥§§­ ª®¢®£® ¤¥«¥­¨ï 16 / 16 bit = 16.16 bit
на вход:
­  ¢å®¤:
BC / DE
на выход:
BC - результат
HL - остаток
­  ¢ë室:
BC - १ã«ìâ â
HL - ®áâ â®ª
[]------------------------------------------------------------------------[]
Divis24X16 - процедура беззнакового деления 24 / 16 bit = 8.16 bit
Divis24X16 - ¯à®æ¥¤ãà  ¡¥§§­ ª®¢®£® ¤¥«¥­¨ï 24 / 16 bit = 8.16 bit
на вход:
­  ¢å®¤:
HL, C / DE
на выход:
A - результат
HL - остаток
­  ¢ë室:
A - १ã«ìâ â
HL - ®áâ â®ª
[]------------------------------------------------------------------------[]
Divis32X16 - процедура беззнакового деления 32 / 16 bit = 16.16 bit
Divis32X16 - ¯à®æ¥¤ãà  ¡¥§§­ ª®¢®£® ¤¥«¥­¨ï 32 / 16 bit = 16.16 bit
на вход:
­  ¢å®¤:
HL, DE / BC
на выход:
DE - результат
HL - остаток
­  ¢ë室:
DE - १ã«ìâ â
HL - ®áâ â®ª
[]------------------------------------------------------------------------[]
Divis32 - процедура беззнакового деления 32 / 16 bit = 32.16 bit
Divis32 - ¯à®æ¥¤ãà  ¡¥§§­ ª®¢®£® ¤¥«¥­¨ï 32 / 16 bit = 32.16 bit
на вход:
­  ¢å®¤:
HL, DE / BC
на выход:
HL, DE - результат
BC - остаток
­  ¢ë室:
HL, DE - १ã«ìâ â
BC - ®áâ â®ª
[]------------------------------------------------------------------------[]
ConvNumTxt32 - процедура конвертации беззнакового числа 32 bit в текст
ConvNumTxt32 - ¯à®æ¥¤ãà  ª®­¢¥àâ æ¨¨ ¡¥§§­ ª®¢®£® ç¨á«  32 bit ¢ ⥪áâ
на вход:
BC, HL - число 32 bit
DE - адрес буфера
на выход:
DE - адрес следующего байта за числом
­  ¢å®¤:
BC, HL - ç¨á«® 32 bit
DE -  ¤à¥á ¡ãä¥à 
­  ¢ë室:
DE -  ¤à¥á á«¥¤ãî饣® ¡ ©â  §  ç¨á«®¬
[]------------------------------------------------------------------------[]
ConvNumTxt16 - процедура конвертации беззнакового числа 16 bit в текст
ConvNumTxt16 - ¯à®æ¥¤ãà  ª®­¢¥àâ æ¨¨ ¡¥§§­ ª®¢®£® ç¨á«  16 bit ¢ ⥪áâ
на вход:
HL - число 16 bit
DE - адрес буфера
на выход:
DE - адрес следующего байта за числом
­  ¢å®¤:
HL - ç¨á«® 16 bit
DE -  ¤à¥á ¡ãä¥à 
­  ¢ë室:
DE -  ¤à¥á á«¥¤ãî饣® ¡ ©â  §  ç¨á«®¬
[]------------------------------------------------------------------------[]
ConvNumTxt8 - процедура конвертации беззнакового числа 8 bit в текст
ConvNumTxt8 - ¯à®æ¥¤ãà  ª®­¢¥àâ æ¨¨ ¡¥§§­ ª®¢®£® ç¨á«  8 bit ¢ ⥪áâ
на вход:
A - число 8 bit
DE - адрес буфера
на выход:
DE - адрес следующего байта за числом
­  ¢å®¤:
A - ç¨á«® 8 bit
DE -  ¤à¥á ¡ãä¥à 
­  ¢ë室:
DE -  ¤à¥á á«¥¤ãî饣® ¡ ©â  §  ç¨á«®¬
[]------------------------------------------------------------------------[]
ConvTxtNum32 - процедура конвертации текста в беззнаковое число 32 bit
ConvTxtNum32 - ¯à®æ¥¤ãà  ª®­¢¥àâ æ¨¨ ⥪áâ  ¢ ¡¥§§­ ª®¢®¥ ç¨á«® 32 bit
на вход:
DE - адрес текста (конец строки - 0)
на выход:
HL, IX - число
C flag - ошибка
­  ¢å®¤:
DE -  ¤à¥á ⥪áâ  (ª®­¥æ áâப¨ - 0)
­  ¢ë室:
HL, IX - ç¨á«®
C flag - ®è¨¡ª 
[]------------------------------------------------------------------------[]
ConvTxtNum16 - процедура конвертации текста в беззнаковое число 16 bit
ConvTxtNum16 - ¯à®æ¥¤ãà  ª®­¢¥àâ æ¨¨ ⥪áâ  ¢ ¡¥§§­ ª®¢®¥ ç¨á«® 16 bit
на вход:
DE - адрес текста (конец строки - 0)
на выход:
HL - число
C flag - ошибка
­  ¢å®¤:
DE -  ¤à¥á ⥪áâ  (ª®­¥æ áâப¨ - 0)
­  ¢ë室:
HL - ç¨á«®
C flag - ®è¨¡ª 
[]------------------------------------------------------------------------[]
DOSError - процедура вывода окна ошибки (для дос ошибок)
DOSError - ¯à®æ¥¤ãà  ¢ë¢®¤  ®ª­  ®è¨¡ª¨ (¤«ï ¤®á ®è¨¡®ª)
на вход:
A - номер ошибки
на выход:
­  ¢å®¤:
A - ­®¬¥à ®è¨¡ª¨
­  ¢ë室:
-
[]------------------------------------------------------------------------[]
@ -608,4 +608,4 @@
13 july 2002
Anton Enin (C) Copyright 2002 R-lab
если есть вопросы e-mail: r-lab@mail.ru или на спринтер форуме.
¥á«¨ ¥áâì ¢®¯à®áë e-mail: r-lab@mail.ru ¨«¨ ­  á¯à¨­â¥à ä®à㬥.

File diff suppressed because it is too large Load Diff

View File

@ -1,157 +0,0 @@
FN - FlexNavigator
FV - FileViewer
FE - FileEditor
25.06.2025
FN 1.15
- £®¤ ª®¯¨à ©â  ¢® ¢áâ஥­­®¬ help ¢áâ ¢«ï¥âáï ¯à¨ á¡®àª¥.
- ¢ ®ª­¥ "About" ⥯¥àì ¯®ª §ë¢ ¥â ¤ âã ᡮન.
- ¯®¯à ¢«¥­ ¢áâ஥­­ë© help.
- ¤®¡ ¢«¥­  ª®¯¨ï í⮣® å¨áâ®à¨ ¢ ª®¤¨à®¢ª¥ 866 á ª®¯¨à®¢ ­¨¥¬ ¢ ¯ ¯ªã fn.
- ¤®ª¨ ¯¥à¥¢¥¤¥­ë ­  UTF8 ª®¤¨à®¢ªã.
- ¯®¯à ¢«¥­  CorrBigChar.
- ­¥¡®«ì訥 ¯¥à¥¤¥«ª¨ ¢ bat ä ©« å.
- ¨á¯à ¢«¥­ "attribut" ­  "attribute".
- ¨á¯à ¢«¥­ ¢ 2å ¬¥áâ å "claster" ­  "cluster".
28.05.2025
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
<EFBFBD>®¤¤¥à¦ª  Current Dir, ¯à¨ áâ à⥠®â®¡à ¦ ¥âáï ⥪ãé ï ¤¨à¥ªâ®à¨ï ¤¨áª .
07/09/23
Œ­®¦¥á⢥­­ë¥ ¬¥«ª¨¥ ¯à ¢ª¨.
01/08/23
<EFBFBD>®¢¨á ¥â FN ¯®á«¥ ¯¥à¥§ £à㧪¨ ¡®«ì让  «ìâ¥àë (titd, ldconf).
“¡à ­  ¯à®¢¥àª  ­  Sp97.
‚¥àá¨ï ­®à¬ «ì­® ¯à®¯¨á ­ , «¨è­¨¥ ª®¯¨à ©âë ¯à¨ § ¯ã᪥ ã¡à ­ë.
29/07/23
’ ¡«¨æ  ®è¨¡®ª ®â § ¢¥à訢襣®áï ¯à¨«®¦¥­¨ï - 32 § ¯¨á¨.
DSS à ­ìè¥ ­¥ ¢®§¢à é « ä« £ CF ¯à¨ ¢ë室¥ á ®è¨¡ª®©, ­® FN ¢á¥£¤  ¯à®¢¥àï« ¯®á«¥ ¢®§¢à â  ¨§ ¯à¨«®¦¥­¨ï ä« £ CF.
DSS ⥯¥àì ¢¥à­ã«, FN ¯®«¥§ ®è¨¡ªã ¯à®¢¥àïâì,   â ¬ FF,   â ¡«¨æ  ­  32...
<EFBFBD> ©¤¥­® ­  disttest.exe, ®­ ¢ë室¨â § ç¥¬-â® ãáâ ­®¢¨¢ ª®¤ ®è¨¡ª¨ #FF,   â ª®£® ª®¤  ­¥â.
<EFBFBD>㦭® á ­ã«¥¬ ¢ë室¨âì ¡¥§ ®è¨¡®ª.
17/07/23
¡¨®á¥ 2.55 ¯®ï¢¨« áì äã­ªæ¨ï - ¯¥à¥¤ ¢ âì ã¯à ¢«¥­¨¥ ¨§ <20>‡“ ®¡à ¡®â稪㠯à¥à뢠­¨ï ¢ ­ã«¥¢®© ¡ ­ª¥ އ“.
C¤¥« ­  ¯à®¢¥àª  ­  ¢¥àá¨î ¡¨®á .
10/05/22
Viewer:
* <20>®¯à ¢«¥­ ª®á¬¥â¨ç¥áª¨© ¡ £ ¢ ­¨¦­¥© áâப¥ ¯à¨ ᬥ­¥ ä㭪樮­ «ì­ëå ª« ¢¨è.
* ˆá¯à ¢«¥­® § ¢¨á ­¨¥ ¯à¨­â¥à  ¤® â ©¬ ãâ  ¯à¨ ¯¥ç â¨.
* ƒ¥à®¨ç¥áª¨ áíª®­®¬«¥­® ­¥¬­®£® ⠪⮢ â ¬, £¤¥ ­¨ªâ® ­¥ § ¬¥â¨â))).
+ <20>¥ç âì ¯¥à¥­¥á¥­  ­  ª« ¢¨èã F7, ç⮡ ¢ë£­ âì ¢ á ¨§ §®­ë ª®¬ä®àâ ))).
+ „®¡ ¢«¥­® á®ç¥â ­¨¥ CTRL+P ¤«ï ¯¥ç â¨.
? <20>®ç⨠¨á¯à ¢«¥­ Wrap, ®áâ «áï ¡ £ á ¢¥àå­¥© áâப®©. ‹ãçè¥, 祬 ­¨ç¥£®.
Editor:
+ „®¡ ¢«¥­  ª­®¯ª  "F7 Print"
+ „®¡ ¢«¥­® á®ç¥â ­¨¥ CTRL+P ¤«ï ¯¥ç â¨ ¢ ०¨¬¥ HEX
* <20>®¯à ¢«¥­ ª®á¬¥â¨ç¥áª¨© ¡ £ ¢ ­¨¦­¥© áâப¥ ¯à¨ ᬥ­¥ ä㭪樮­ «ì­ëå ª« ¢¨è
* ˆá¯à ¢«¥­® § ¢¨á ­¨¥ ¯à¨­â¥à  ¤® â ©¬ ãâ  ¯à¨ ¯¥ç â¨
-------------------------------------------------------------------------------
FE v.1.06 05.08.2021 (Mikhaltchenkov Dmitry aka Hard/WCG)
+ <20>® ª­®¯ª¥ 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 ᨬ¢®«®¢)
+ <20>ਠ¯¥à¥­®á¥ áâப¨ ¢ ­ ç «¥ áâப¨ ¤¥« ¥âáï â ª®© ¦¥ ®âáâ㯠®â ­ ç « , ª ª ¨
­  ¯à¥¤ë¤ã饩 áâப¥
* <20>¥à¥à ¡®â ­ë ¯à®æ¥¤ãàë ¯®§¨æ¨®­¨à®¢ ­¨ï ªãàá®à 
FN v.1.12+ 07.04.2021 (Mikhaltchenkov Dmitry aka Hard/WCG)
+ <20> ­¥«ì, ¢ ª®â®à®© ¬¥­ï¥âáï ¤¨áª ¯® Alt+F1/F2 áâ ­®¢¨âáï  ªâ¨¢­®©
FE v.1.01 07.04.2021 (Mikhaltchenkov Dmitry aka Hard/WCG)
+ „®¡ ¢«¥­ ¤¨ «®£ á § ¯à®á®¬ ¯®¤â¢¥à¦¤¥­¨ï ¢ë室  ¨§ । ªâ®à 
+ <20>ਠ¨§¢«¥ç¥­¨¨ áâப¨ ¡ãä¥à áâப¨ ®ç¨é ¥âáï - à ­¥¥ ¬®¦­® ¡ë«® ­ ¡«î¤ âì
­¥ª®â®àë© ¬ãá®à ¢ ª®­æ¥ áâப¨ ¯à¨ ­ ¢¨£ æ¨¨ ¬¥¦¤ã áâப ¬¨
* „®à ¡®â ­  ¯à®æ¥¤ãà  ¯®§¨æ¨®­¨à®¢ ­¨ï ªãàá®à  ¯à¨ ­ ¢¨£ æ¨¨ ­  áâபã
(áâà ­¨æã) ¢ëè¥/­¨¦¥ - ¢ § ¢¨á¨¬®á⨠®â ­ «¨ç¨ï â ¡ã«ïâ®à®¢ ¢ áâப¥, ªãàá®à
¬®£ ®â᪠ª¨¢ âì ­  ­¥áª®«ìª® ¯®§¨æ¨© ¢ áâ®à®­ã
+ „®¡ ¢«¥­  ¢®§¬®¦­®áâì 㤠«¥­¨ï 楫®© áâப¨ ¯® Ctrl+Y
+ „®¡ ¢«¥­  £®àïç ï ª­®¯ª  ¤«ï á®åà ­¥­¨ï Ctrl+S
+ <20>¥ «¨§ æ¨ï ­®¢®£® ०¨¬  à ¡®âë Home - ¥á«¨ ¥áâì â ¡ã«ïâ®àë ¢ ­ ç «¥ áâப¨,
â® ¯à¨ ¯¥à¢®¬ ­ ¦ â¨¨ ªãàá®à ¯¥à¥¬¥é ¥âáï ¢ ¯®§¨æ¨î á ¯¥à¢ë¬ ­¥-¯à®¡¥«ì­ë¬
ᨬ¢®«®¬, ¯à¨ ¯®¢â®à­®¬ ­ ¦ â¨¨ - ¯¥à¥¬¥é ¥âáï ¢ ¯¥à¢ãî ¯®§¨æ¨î
FN v.1.12 02.04.2021 (Mikhaltchenkov Dmitry aka Hard/WCG)
+ <20>¥ «¨§®¢ ­ § ¯ã᪠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

View File

@ -3,155 +3,177 @@ FN - FlexNavigator
FV - FileViewer
FE - FileEditor
25.07.2025
CDplayer.flx 1.1:
- ¯« £¨­ ¤®¤¥« ­, ®¯¨á ­¨¥/history ¢ cdplayer.txt à冷¬ á ¯« £¨­®¬.
FE 1.09
- ¨á¯à ¢«¥­®: ¯à¨ ¢ë室¥ ¨§ । ªâ®à  á ­¥á®åà ­¥­­ë¬ ä ©«®¬ ¨ § ¯à®á¥ ­  á®åà ­¥­¨¥
ª« ¢¨è  Enter ⥯¥àì à ¡®â ¥â ª ª ¯®¤â¢¥à¦¤¥­¨¥ á®åà ­¥­¨ï.
FN 1.16
- ¢áâ஥­­ë© editor ¯¥à¥¥å « ¢ ¯« £¨­ ®âªã¤  ¨ § ¯ã᪠¥âáï ¯® F4, ¨§ FN 㤠«¥­.
- ¢áâ஥­­ë© viewer ¯¥à¥¥å « ¢ ¯« £¨­ ®âªã¤  ¨ § ¯ã᪠¥âáï ¯® F3, ¨§ FN 㤠«¥­.
- ¢áâ஥­­ë© help ¯¥à¥¥å « ¢ ¯« £¨­ ®âªã¤  ¨ § ¯ã᪠¥âáï ¯à¨ ­ ¦ â¨¨ F1, ¨§ FN 㤠«¥­.
- § £à㧪  ¯« £¨­  ®â¤¥«¥­  ®â § ¯ã᪠, ⥯¥àì ¬®¦­® § ¯ã᪠âì ¯« £¨­ë ­¥
⮫쪮 ¨§ ¯ ­¥«¨ FN.
- ¤®¡ ¢«¥­ ¬ ªà®á ä®à¬¨à®¢ ­¨ï § £®«®¢ª  ¤«ï ¯« £¨­®¢.
- ¤®¡ ¢«¥­  ¯®¤¤¥à¦ª  à ¡®âë ¯« £¨­®¢ ¢  ¤à¥á  0x4000-0x7FFF (®ª­® 1) ¢ ¤®¯®«­¥­¨¥
ª áâ àë¬ 0xC000-0xBFFF (®ª­® 3), ¯®ª  ¨á¯®«ì§ã¥âáï ¢ ¯« £¨­¥ cdplayer.
- ¢ ®ª­ å á ®è¨¡ª®© ¯¥à¥¤¥« ­ ­  2 ⨯  ®ª®­ ¢¬¥áâ® ¬­®£¨å ¯®¤ ª ¦¤ãî ®è¨¡ªã.
- ¨á¯à ¢«¥­  ¯®â¥àï æ¢¥â  ¯à¨ ¯¥ç â¨ ⥪áâ  ¯® 㪠§ ­­®¬ã  ¤à¥áã.
- ⥪áâ®¢ë¬ ä ©« ¬ ¢¥à­ã« ª®¤¨à®¢ªã CP866, readme.md ®áâ ¢«¥­ ¢ ª®¤¨à®¢ª¥ UTF8.
27.06.2025
FN 1.15.01
- ¢ ¯ à¥ ¬¥áâ ¨á¯à «¥­  data ­  date.
25.06.2025
FN 1.15
- год копирайта во встроенном help вставляется при сборке.
- в окне "About" теперь показывает дату сборки.
- поправлен встроенный help.
- добавлена копия этого хистори в кодировке 866 с копированием в папку fn.
- доки переведены на UTF8 кодировку.
- поправлена CorrBigChar.
- небольшие переделки в bat файлах.
- исправлен "attribut" на "attribute".
- исправлен в 2х местах "claster" на "cluster".
- £®¤ ª®¯¨à ©â  ¢® ¢áâ஥­­®¬ help ¢áâ ¢«ï¥âáï ¯à¨ á¡®àª¥.
- ¢ ®ª­¥ "About" ⥯¥àì ¯®ª §ë¢ ¥â ¤ âã ᡮન.
- ¯®¯à ¢«¥­ ¢áâ஥­­ë© help.
- ¤®¡ ¢«¥­  ª®¯¨ï í⮣® å¨áâ®à¨ ¢ ª®¤¨à®¢ª¥ 866 á ª®¯¨à®¢ ­¨¥¬ ¢ ¯ ¯ªã fn.
- ¤®ª¨ ¯¥à¥¢¥¤¥­ë ­  UTF8 ª®¤¨à®¢ªã.
- ¯®¯à ¢«¥­  CorrBigChar.
- ­¥¡®«ì訥 ¯¥à¥¤¥«ª¨ ¢ bat ä ©« å.
- ¨á¯à ¢«¥­ "attribut" ­  "attribute".
- ¨á¯à ¢«¥­ ¢ 2å ¬¥áâ å "claster" ­  "cluster".
28.05.2025
FE v1.08
- убрано "искажение" имени файла при запуске.
- ã¡à ­® "¨áª ¦¥­¨¥" ¨¬¥­¨ ä ©«  ¯à¨ § ¯ã᪥.
FV v1.05
- убрано "искажение" имени файла при запуске.
- ã¡à ­® "¨áª ¦¥­¨¥" ¨¬¥­¨ ä ©«  ¯à¨ § ¯ã᪥.
FN v1.14
- исправлено зависание в командной строке при нажатии ALT+F1/F2.
- сделан пропуск для имени директории ".." для сортировщика для правильной сортировки.
- поправлены названия типов сортировки.
- сделан измеритель размера директории в байтах для копирования директориями (пока спрятан).
- показ содержимого директории из дерева сделан по ENTER вместо автопоказа (пока спрятана).
- поправлена генерация дерева файлов.
- ¨á¯à ¢«¥­® § ¢¨á ­¨¥ ¢ ª®¬ ­¤­®© áâப¥ ¯à¨ ­ ¦ â¨¨ ALT+F1/F2.
- ᤥ« ­ ¯à®¯ã᪠¤«ï ¨¬¥­¨ ¤¨à¥ªâ®à¨¨ ".." ¤«ï á®àâ¨à®¢é¨ª  ¤«ï ¯à ¢¨«ì­®© á®àâ¨à®¢ª¨.
- ¯®¯à ¢«¥­ë ­ §¢ ­¨ï ⨯®¢ á®àâ¨à®¢ª¨.
- ᤥ« ­ ¨§¬¥à¨â¥«ì à §¬¥à  ¤¨à¥ªâ®à¨¨ ¢ ¡ ©â å ¤«ï ª®¯¨à®¢ ­¨ï ¤¨à¥ªâ®à¨ï¬¨ (¯®ª  á¯àïâ ­).
- ¯®ª § ᮤ¥à¦¨¬®£® ¤¨à¥ªâ®à¨¨ ¨§ ¤¥à¥¢  ᤥ« ­ ¯® ENTER ¢¬¥áâ®  ¢â®¯®ª §  (¯®ª  á¯àïâ ­ ).
- ¯®¯à ¢«¥­  £¥­¥à æ¨ï ¤¥à¥¢  ä ©«®¢.
-------------------------------------------------------------------------------
25/06/24
Добавлено отображение сообщения о защите от записи.
„®¡ ¢«¥­® ®â®¡à ¦¥­¨¥ á®®¡é¥­¨ï ® § é¨â¥ ®â § ¯¨á¨.
13/05/24
Исправлена ошибка инициализации страницы help.
Добавлена поддержка больших файлов для FAT32
ˆá¯à ¢«¥­  ®è¨¡ª  ¨­¨æ¨ «¨§ æ¨¨ áâà ­¨æë help.
„®¡ ¢«¥­  ¯®¤¤¥à¦ª  ¡®«ìè¨å ä ©«®¢ ¤«ï FAT32
11/05/24
Теперь выводится сообщение о том, что слишком много файлов в директории. Те файлы, которые "не влезли" - не отображаются.
’¥¯¥àì ¢ë¢®¤¨âáï á®®¡é¥­¨¥ ® ⮬, ç⮠᫨誮¬ ¬­®£® ä ©«®¢ ¢ ¤¨à¥ªâ®à¨¨. ’¥ ä ©«ë, ª®â®àë¥ "­¥ ¢«¥§«¨" - ­¥ ®â®¡à ¦ îâáï.
12/12/23
Поддержка Current Dir, при старте отображается текущая директория диска.
<EFBFBD>®¤¤¥à¦ª  Current Dir, ¯à¨ áâ à⥠®â®¡à ¦ ¥âáï ⥪ãé ï ¤¨à¥ªâ®à¨ï ¤¨áª .
07/09/23
Множественные мелкие правки.
Œ­®¦¥á⢥­­ë¥ ¬¥«ª¨¥ ¯à ¢ª¨.
01/08/23
Повисает FN после перезагрузки большой альтеры (titd, ldconf).
Убрана проверка на Sp97.
Версия нормально прописана, лишние копирайты при запуске убраны.
<EFBFBD>®¢¨á ¥â FN ¯®á«¥ ¯¥à¥§ £à㧪¨ ¡®«ì让  «ìâ¥àë (titd, ldconf).
“¡à ­  ¯à®¢¥àª  ­  Sp97.
‚¥àá¨ï ­®à¬ «ì­® ¯à®¯¨á ­ , «¨è­¨¥ ª®¯¨à ©âë ¯à¨ § ¯ã᪥ ã¡à ­ë.
29/07/23
Таблица ошибок от завершившегося приложения - 32 записи.
DSS раньше не возвращал флаг CF при выходе с ошибкой, но FN всегда проверял после возврата из приложения флаг CF.
DSS теперь вернул, FN полез ошибку проверять, а там FF, а таблица на 32...
Найдено на disttest.exe, он выходит зачем-то установив код ошибки #FF, а такого кода нет.
Нужно с нулем выходить без ошибок.
’ ¡«¨æ  ®è¨¡®ª ®â § ¢¥à訢襣®áï ¯à¨«®¦¥­¨ï - 32 § ¯¨á¨.
DSS à ­ìè¥ ­¥ ¢®§¢à é « ä« £ CF ¯à¨ ¢ë室¥ á ®è¨¡ª®©, ­® FN ¢á¥£¤  ¯à®¢¥àï« ¯®á«¥ ¢®§¢à â  ¨§ ¯à¨«®¦¥­¨ï ä« £ CF.
DSS ⥯¥àì ¢¥à­ã«, FN ¯®«¥§ ®è¨¡ªã ¯à®¢¥àïâì,   â ¬ FF,   â ¡«¨æ  ­  32...
<EFBFBD> ©¤¥­® ­  disttest.exe, ®­ ¢ë室¨â § ç¥¬-â® ãáâ ­®¢¨¢ ª®¤ ®è¨¡ª¨ #FF,   â ª®£® ª®¤  ­¥â.
<EFBFBD>㦭® á ­ã«¥¬ ¢ë室¨âì ¡¥§ ®è¨¡®ª.
17/07/23
В биосе 2.55 появилась функция - передавать управление из ПЗУ обработчику прерывания в нулевой банке ОЗУ.
Cделана проверка на версию биоса.
¡¨®á¥ 2.55 ¯®ï¢¨« áì äã­ªæ¨ï - ¯¥à¥¤ ¢ âì ã¯à ¢«¥­¨¥ ¨§ <20>‡“ ®¡à ¡®â稪㠯à¥à뢠­¨ï ¢ ­ã«¥¢®© ¡ ­ª¥ އ“.
C¤¥« ­  ¯à®¢¥àª  ­  ¢¥àá¨î ¡¨®á .
10/05/22
Viewer:
* Поправлен косметический баг в нижней строке при смене функциональных клавиш.
* Исправлено зависание принтера до таймаута при печати.
* Героически сэкономлено немного тактов там, где никто не заметит))).
+ Печать перенесена на клавишу F7, чтоб выгнать вас из зоны комфорта))).
+ Добавлено сочетание CTRL+P для печати.
? Почти исправлен Wrap, остался баг с верхней строкой. Лучше, чем ничего.
* <EFBFBD>®¯à ¢«¥­ ª®á¬¥â¨ç¥áª¨© ¡ £ ¢ ­¨¦­¥© áâப¥ ¯à¨ ᬥ­¥ ä㭪樮­ «ì­ëå ª« ¢¨è.
* ˆá¯à ¢«¥­® § ¢¨á ­¨¥ ¯à¨­â¥à  ¤® â ©¬ ãâ  ¯à¨ ¯¥ç â¨.
* ƒ¥à®¨ç¥áª¨ áíª®­®¬«¥­® ­¥¬­®£® ⠪⮢ â ¬, £¤¥ ­¨ªâ® ­¥ § ¬¥â¨â))).
+ <EFBFBD>¥ç âì ¯¥à¥­¥á¥­  ­  ª« ¢¨èã F7, ç⮡ ¢ë£­ âì ¢ á ¨§ §®­ë ª®¬ä®àâ ))).
+ „®¡ ¢«¥­® á®ç¥â ­¨¥ CTRL+P ¤«ï ¯¥ç â¨.
? <EFBFBD>®ç⨠¨á¯à ¢«¥­ Wrap, ®áâ «áï ¡ £ á ¢¥àå­¥© áâப®©. ‹ãçè¥, 祬 ­¨ç¥£®.
Editor:
+ Добавлена кнопка "F7 Print"
+ Добавлено сочетание CTRL+P для печати в режиме HEX
* Поправлен косметический баг в нижней строке при смене функциональных клавиш
* Исправлено зависание принтера до таймаута при печати
+ „®¡ ¢«¥­  ª­®¯ª  "F7 Print"
+ „®¡ ¢«¥­® á®ç¥â ­¨¥ CTRL+P ¤«ï ¯¥ç â¨ ¢ ०¨¬¥ HEX
* <EFBFBD>®¯à ¢«¥­ ª®á¬¥â¨ç¥áª¨© ¡ £ ¢ ­¨¦­¥© áâப¥ ¯à¨ ᬥ­¥ ä㭪樮­ «ì­ëå ª« ¢¨è
* ˆá¯à ¢«¥­® § ¢¨á ­¨¥ ¯à¨­â¥à  ¤® â ©¬ ãâ  ¯à¨ ¯¥ç â¨
-------------------------------------------------------------------------------
FE v.1.06 05.08.2021 (Mikhaltchenkov Dmitry aka Hard/WCG)
+ По кнопке F9 вызываются настройки редактора с возможностью сохранить настройки
в файл
+ <EFBFBD>® ª­®¯ª¥ 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, который включает/отключает диалог
подтверждения закрытия редактора
+ „®¡ ¢«¥­ ¯ à ¬¥âà ¢ ª®­ä¨£-ä ©«¥ fnedit.ini, ª®â®àë© ¢ª«îç ¥â/®âª«î砥⠤¨ «®£
¯®¤â¢¥à¦¤¥­¨ï § ªàëâ¨ï । ªâ®à 
FE v.1.05 07.06.2021 (Mikhaltchenkov Dmitry aka Hard/WCG)
* исправлен глюк, который приводил к зависанию или сбросу после 7-го открытия
редактора
+ Добавлено автозакрытие символов скобок и кавычек
+ У редактора появился конфиг-файл fnedit.ini, через который можно отключить
некоторые фичи
* ¨á¯à ¢«¥­ £«îª, ª®â®àë© ¯à¨¢®¤¨« ª § ¢¨á ­¨î ¨«¨ á¡à®áã ¯®á«¥ 7-£® ®âªàëâ¨ï
। ªâ®à 
+ „®¡ ¢«¥­®  ¢â®§ ªàë⨥ ᨬ¢®«®¢ ᪮¡®ª ¨ ª ¢ë祪
+ “ । ªâ®à  ¯®ï¢¨«áï ª®­ä¨£-ä ©« fnedit.ini, ç¥à¥§ ª®â®àë© ¬®¦­® ®âª«îç¨âì
­¥ª®â®àë¥ ä¨ç¨
FE v.1.04 18.04.2021 (Mikhaltchenkov Dmitry aka Hard/WCG)
+ Добавлена кнопка Ctrl+P для печати (затем F9 будет переназначена на другой
функционал)
+ Добавлен функционал отмены по Ctrl+Z (это не пошаговый Undo, не полноценный,
просто сбрасывает буфер текущей редактируемой строки, на момент перехода
на эту строку)
+ „®¡ ¢«¥­  ª­®¯ª  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, аналогично - на пустой строке могла зациклиться
* Исправлена подпрограмма заполнения буфера текущей строки (при нулевой длине
строки он не очищался)
+ „®¡ ¢«¥­ë ª­®¯ª¨ ã¯à ¢«¥­¨ï Alt+CursorLeft(Home) ¨ Alt+CursorRight(End)
* ˆá¯à ¢«¥­ ¡ £ ¢ ¯®¤¯à®£à ¬¬¥ THomeString - ­  ¯ãá⮩ áâப¥ ¬®£«  § æ¨ª«¨âìáï
* ˆá¯à ¢«¥­ ¡ £ ¢ TEndString,  ­ «®£¨ç­® - ­  ¯ãá⮩ áâப¥ ¬®£«  § æ¨ª«¨âìáï
* ˆá¯à ¢«¥­  ¯®¤¯à®£à ¬¬  § ¯®«­¥­¨ï ¡ãä¥à  ⥪ã饩 áâப¨ (¯à¨ ­ã«¥¢®© ¤«¨­¥
áâப¨ ®­ ­¥ ®ç¨é «áï)
FN v.1.12.1 13.04.2021 (Mikhaltchenkov Dmitry aka Hard/WCG)
* Исправлен баг при автоматической смене панели
+ Добавлена настройка в SetUp для отключения автоматической активации панели при
смене диска
* ˆá¯à ¢«¥­ ¡ £ ¯à¨  ¢â®¬ â¨ç¥áª®© ᬥ­¥ ¯ ­¥«¨
+ „®¡ ¢«¥­  ­ áâனª  ¢ SetUp ¤«ï ®âª«î祭¨ï  ¢â®¬ â¨ç¥áª®©  ªâ¨¢ æ¨¨ ¯ ­¥«¨ ¯à¨
ᬥ­¥ ¤¨áª 
FE v.1.02 10.04.2021 (Mikhaltchenkov Dmitry aka Hard/WCG)
+ Добавлена горячая кнопка Ctrl+D для дублирования строки (работает
только для строк до 127 символов)
+ При переносе строки в начале строки делается такой же отступ от начала, как и
на предыдущей строке
* Переработаны процедуры позиционирования курсора
+ „®¡ ¢«¥­  £®àïç ï ª­®¯ª  Ctrl+D ¤«ï ¤ã¡«¨à®¢ ­¨ï áâப¨ (à ¡®â ¥â
⮫쪮 ¤«ï áâப ¤® 127 ᨬ¢®«®¢)
+ <EFBFBD>ਠ¯¥à¥­®á¥ áâப¨ ¢ ­ ç «¥ áâப¨ ¤¥« ¥âáï â ª®© ¦¥ ®âáâ㯠®â ­ ç « , ª ª ¨
­  ¯à¥¤ë¤ã饩 áâப¥
* <EFBFBD>¥à¥à ¡®â ­ë ¯à®æ¥¤ãàë ¯®§¨æ¨®­¨à®¢ ­¨ï ªãàá®à 
FN v.1.12+ 07.04.2021 (Mikhaltchenkov Dmitry aka Hard/WCG)
+ Панель, в которой меняется диск по Alt+F1/F2 становится активной
+ <EFBFBD> ­¥«ì, ¢ ª®â®à®© ¬¥­ï¥âáï ¤¨áª ¯® Alt+F1/F2 áâ ­®¢¨âáï  ªâ¨¢­®©
FE v.1.01 07.04.2021 (Mikhaltchenkov Dmitry aka Hard/WCG)
+ Добавлен диалог с запросом подтверждения выхода из редактора
+ При извлечении строки буфер строки очищается - ранее можно было наблюдать
некоторый мусор в конце строки при навигации между строками
* Доработана процедура позиционирования курсора при навигации на строку
(страницу) выше/ниже - в зависимости от наличия табуляторов в строке, курсор
мог отскакивать на несколько позиций в сторону
+ Добавлена возможность удаления целой строки по Ctrl+Y
+ Добавлена горячая кнопка для сохранения Ctrl+S
+ Реализация нового режима работы Home - если есть табуляторы в начале строки,
то при первом нажатии курсор перемещается в позицию с первым не-пробельным
символом, при повторном нажатии - перемещается в первую позицию
+ „®¡ ¢«¥­ ¤¨ «®£ á § ¯à®á®¬ ¯®¤â¢¥à¦¤¥­¨ï ¢ë室  ¨§ । ªâ®à 
+ <EFBFBD>ਠ¨§¢«¥ç¥­¨¨ áâப¨ ¡ãä¥à áâப¨ ®ç¨é ¥âáï - à ­¥¥ ¬®¦­® ¡ë«® ­ ¡«î¤ âì
­¥ª®â®àë© ¬ãá®à ¢ ª®­æ¥ áâப¨ ¯à¨ ­ ¢¨£ æ¨¨ ¬¥¦¤ã áâப ¬¨
* „®à ¡®â ­  ¯à®æ¥¤ãà  ¯®§¨æ¨®­¨à®¢ ­¨ï ªãàá®à  ¯à¨ ­ ¢¨£ æ¨¨ ­  áâபã
(áâà ­¨æã) ¢ëè¥/­¨¦¥ - ¢ § ¢¨á¨¬®á⨠®â ­ «¨ç¨ï â ¡ã«ïâ®à®¢ ¢ áâப¥, ªãàá®à
¬®£ ®â᪠ª¨¢ âì ­  ­¥áª®«ìª® ¯®§¨æ¨© ¢ áâ®à®­ã
+ „®¡ ¢«¥­  ¢®§¬®¦­®áâì 㤠«¥­¨ï 楫®© áâப¨ ¯® Ctrl+Y
+ „®¡ ¢«¥­  £®àïç ï ª­®¯ª  ¤«ï á®åà ­¥­¨ï Ctrl+S
+ <EFBFBD>¥ «¨§ æ¨ï ­®¢®£® ०¨¬  à ¡®âë Home - ¥á«¨ ¥áâì â ¡ã«ïâ®àë ¢ ­ ç «¥ áâப¨,
â® ¯à¨ ¯¥à¢®¬ ­ ¦ â¨¨ ªãàá®à ¯¥à¥¬¥é ¥âáï ¢ ¯®§¨æ¨î á ¯¥à¢ë¬ ­¥-¯à®¡¥«ì­ë¬
ᨬ¢®«®¬, ¯à¨ ¯®¢â®à­®¬ ­ ¦ â¨¨ - ¯¥à¥¬¥é ¥âáï ¢ ¯¥à¢ãî ¯®§¨æ¨î
FN v.1.12 02.04.2021 (Mikhaltchenkov Dmitry aka Hard/WCG)
+ Реализован запуск BAT-файлов, как из панели, так и из командной строки с
передачей параметров.
+ <EFBFBD>¥ «¨§®¢ ­ § ¯ã᪠BAT-ä ©«®¢, ª ª ¨§ ¯ ­¥«¨, â ª ¨ ¨§ ª®¬ ­¤­®© áâப¨ á
¯¥à¥¤ ç¥© ¯ à ¬¥â஢.
FN v.1.11 27.03.2021 (Mikhaltchenkov Dmitry aka Hard/WCG)
* Исправлено определение каталога в котором располагаются файлы FlexNavigator-а.
* ˆá¯à ¢«¥­® ®¯à¥¤¥«¥­¨¥ ª â «®£  ¢ ª®â®à®¬ à á¯®« £ îâáï ä ©«ë FlexNavigator- .
FV v.1.03 10.02.2021 (Mikhaltchenkov Dmitry aka Hard/WCG)
+ Добавлено переключение кодировки текста WIN/DOS/KOI
+ „®¡ ¢«¥­® ¯¥à¥ª«î祭¨¥ ª®¤¨à®¢ª¨ ⥪áâ  WIN/DOS/KOI

View File

@ -1,19 +1,19 @@
Flex navigator TODO:
[] добавить в настройки автопоказ или по ENTER при перемещении по дереву каталогов
[] добавить в настройки выбор менять ли активную панель при смене диска на не активной панели
[] при выводе дерева каталогов сделать скролл влево/вправо если дерево не влезает по горизонтали
[] по кнопке F6 только переименование, а должно быть переименование/перемещение файла если на панелях разные пути
[] переделать захордкоженные координаты, переделать на привязку к координатам окна
[] разобраться как работает строка ввода при поиске файла по имени
[] плагин редактирования шрифта
[] плагин для создания форм окон
[] загрузка FLX плагина по имени без запуска
[?] вызов и взаимодействие плагина с плагином
[] ¤®¡ ¢¨âì ¢ ­ áâனª¨  ¢â®¯®ª § ¨«¨ ¯® ENTER ¯à¨ ¯¥à¥¬¥é¥­¨¨ ¯® ¤¥à¥¢ã ª â «®£®¢
[] ¤®¡ ¢¨âì ¢ ­ áâனª¨ ¢ë¡®à ¬¥­ïâì «¨  ªâ¨¢­ãî ¯ ­¥«ì ¯à¨ ᬥ­¥ ¤¨áª  ­  ­¥  ªâ¨¢­®© ¯ ­¥«¨
[] ¯à¨ ¢ë¢®¤¥ ¤¥à¥¢  ª â «®£®¢ ᤥ« âì áªà®«« ¢«¥¢®/¢¯à ¢® ¥á«¨ ¤¥à¥¢® ­¥ ¢«¥§ ¥â ¯® £®à¨§®­â «¨
[] ¯® ª­®¯ª¥ F6 ⮫쪮 ¯¥à¥¨¬¥­®¢ ­¨¥,   ¤®«¦­® ¡ëâì ¯¥à¥¨¬¥­®¢ ­¨¥/¯¥à¥¬¥é¥­¨¥ ä ©«  ¥á«¨ ­  ¯ ­¥«ïå à §­ë¥ ¯ãâ¨
[] ¯¥à¥¤¥« âì § å®à¤ª®¦¥­­ë¥ ª®®à¤¨­ âë, ¯¥à¥¤¥« âì ­  ¯à¨¢ï§ªã ª ª®®à¤¨­ â ¬ ®ª­ 
[] à §®¡à âìáï ª ª à ¡®â ¥â áâப  ¢¢®¤  ¯à¨ ¯®¨áª¥ ä ©«  ¯® ¨¬¥­¨
[] ¯« £¨­ । ªâ¨à®¢ ­¨ï èà¨äâ 
[] ¯« £¨­ ¤«ï á®§¤ ­¨ï ä®à¬ ®ª®­
[?] ¢ë§®¢ ¨ ¢§ ¨¬®¤¥©á⢨¥ ¯« £¨­  á ¯« £¨­®¬
[x] ввод в командную строку и нажатие ALT+F1/F2 (выбор драйва) подвисает
[x] сортировщик сортирует "..", а не должен
[x] вьювер при получении имени файла делает его конверсию и при наличии русских символов портит имя и "File not found"
[x] в Disk Info окне показывает имя диска имя файла (npl.exe)
[x] построитель дерева каталогов не работает
[x] § £à㧪  FLX ¯« £¨­  ¯® ¨¬¥­¨ ¡¥§ § ¯ã᪠
[x] ¢¢®¤ ¢ ª®¬ ­¤­ãî áâப㠨 ­ ¦ â¨¥ ALT+F1/F2 (¢ë¡®à ¤à ©¢ ) ¯®¤¢¨á ¥â
[x] á®àâ¨à®¢é¨ª á®àâ¨àã¥â "..",   ­¥ ¤®«¦¥­
[x] ¢ìî¢¥à ¯à¨ ¯®«ã祭¨¨ ¨¬¥­¨ ä ©«  ¤¥« ¥â ¥£® ª®­¢¥àá¨î ¨ ¯à¨ ­ «¨ç¨¨ àãá᪨å ᨬ¢®«®¢ ¯®àâ¨â ¨¬ï ¨ "File not found"
[x] ¢ Disk Info ®ª­¥ ¯®ª §ë¢ ¥â ¨¬ï ¤¨áª  ¨¬ï ä ©«  (npl.exe)
[x] ¯®áâà®¨â¥«ì ¤¥à¥¢  ª â «®£®¢ ­¥ à ¡®â ¥â

Binary file not shown.

Binary file not shown.

46
fn/flx/cdplayer.txt Normal file
View File

@ -0,0 +1,46 @@
<20>« £¨­ SHAOS CD-Player ¤«ï Flex Navigator ¯à¥¤­ §­ ç¥­ ¤«ï ã¯à ¢«¥­¨ï
¢®á¯à®¨§¢¥¤¥­¨¥¬ ¨ ­ ¢¨£ æ¨¨ Audio CD ¤¨áª®¢.
‘¨á⥬­ë¥ âॡ®¢ ­¨ï: FN ¢¥àᨨ 1.16 ¨ ¢ëè¥.
“¯à ¢«¥­¨¥ ¯«¥¥à®¬ ¯à®¨§¢®¤¨âáï ¯à¨ ¯®¬®é¨ ¬ëè¨ ¨«¨ £®àï稬¨ ª« ¢¨è ¬¨.
‘¯¨á®ª ã¯à ¢«¥­¨ï:
1 - ¯«¥©;
2 - ¯ ã§ , ¢ í⮬ ०¨¬¥ ­ ç¨­ ¥â ¬®à£ âì ¢à¥¬ï ¯à®¨£à뢠­¨ï;
3 - á⮯;
4 - ¯¥à¥©â¨ ­  ¯à¥¤ë¤ã騩 â४;
5 - ¯¥à¥¬®âª  ­ § ¤, ª ¦¤®¥ ­ ¦ â¨¥ ¯¥à¥áª ª¨¢ ¥â ­  10 ᥪ㭤
(⮫쪮 ¢ ०¨¬¥ ¯«¥©);
6 - ¯¥à¥¬®âª  ¢¯¥à¥¤, ª ¦¤®¥ ­ ¦ â¨¥ ¯¥à¥áª ª¨¢ ¥â ­  10 ᥪ㭤
(⮫쪮 ¢ ०¨¬¥ ¯«¥©);
7 - ¯¥à¥©â¨ ­  á«¥¤ãî騩 â४;
8 - § ªàëâì/®âªàëâì â३ ¯à¨¢®¤  CD ¤¨áª®¢. ‘®áâ®ï­¨¥ âà¥ï ­¥ ª®­â஫¨àã¥âáï.
ޤ­® ­ ¦ â¨¥ ¯®¤ ¥â ª®¬ ­¤ã ®âªàëâì, á«¥¤ãî饥 ­ ¦ â¨¥ ¯®¤ ¥â ª®¬ ­¤ã
§ ªàëâ¨ï.
"<22>â® ­¥ ¡ £, íâ® ä¨ç ":
- ­ ¦ â¨¥ á⮯ ¢á¥£¤  á¡à á뢠¥â ¢à¥¬ï ¨£à ­¨ï ¢ 0 ¨ ¯¥à¥å®¤¨â ­  ¯¥à¢ë© â४;
- ¯¥à¥¬®âª  à ¡®â ¥â ⮫쪮 ¢ ०¨¬¥ ¯«¥©;
- ¯à¨ ¢ë室¥ ¨§ ¯«¥¥à  ¢®á¯à®¨§¢¥¤¥­¨¥ ¯à®¤®«¦ ¥âáï. <20>® ¯à¨ á«¥¤ãî饬
§ ¯ã᪥ ¥á«¨ ¤¨áª ¥é¥ ¢®á¯à®¨§¢®¤¨âáï ¯«¥¥à ¡ã¤¥â ¯®ª §ë¢ âì ०¨¬ á⮯
¨ ¯®§¨æ¨î â४ 1, ¢à¥¬ï 00:00.
- ¢ ०¨¬¥ ¯ ã§  ¨ ¯¥à¥å®¤ ­  á«¥¤ãî騩/¯à¥¤ë¤ã騩 â४ ¢à¥¬ï á¡à á뢠¥âáï ¢ 00:00.
History:
‚¥àá¨ï 1.1
- ¯¥à¥à¨á®¢ ­ ¢áâ஥­­ë© ªàã¯­ë© èà¨äâ.
- ¢ ¯ à «¥«ì á ã¯à ¢«¥­¨¥¬ ¬ëèìî ᤥ« ­® ã¯à ¢«¥­¨¥ á ª« ¢¨ âãàë.
- ¢ ०¨¬¥ ¯ ã§  ᤥ« ­® ¬®à£ ­¨¥ ¢à¥¬¥­¥¬ ¨£à ­¨ï.
- ¯¥à¥¬®âª  ¯® ¤¨áªã ᤥ« ­  ­  10 ᥪ㭤 ¨ ⮫쪮 ¢ ०¨¬¥ ¯«¥©.
- ¤®¤¥« ­ë ¢á¥ ­¥¨á¯®«ì§®¢ ­­ë¥ ª­®¯ª¨, ¨á室­ ï ¢¥àá¨ï 㬥«  ⮫쪮 ¯«¥©
¨ ®âªàë⨥ âà¥ï.
- ¯¥à¢ë¥ 2 æ¨äàë ¯®ª §ë¢ îâ ­®¬¥à ⥪ã饣® â४ , ®áâ «ì­ë¥ ¯®ª §ë¢ îâ
¢à¥¬ï ¯à®¨£à뢠­¨ï â४ .
- ᤥ« ­ ¯®ª § ª®«¨ç¥á⢠ â४®¢ ­  ¤¨áª¥.
- ã¡à ­  áªàëâ ï ª­®¯ª  á ­¥¯®­ïâ­ë¬ ä㭪樮­ «®¬.
- ¨á¯à ¢«¥­ ¢ë¢®¤ ­®¬¥à â४  ¨ ¢à¥¬ï ¨£à ­¨ï, ç áâ® á¡®¨«®.
- ¢á¥ ã¯à ¢«¥­¨¥ CD ¯à¨¢®¤®¬ ᤥ« ­  ¯®á뫪®© ATAPI ¯ ª¥â ¬¨ ç¥à¥§ BIOS.
- ¨§ ¯« £¨­  ã¡à ­ ª®¤ à ¡®âë ç¥à¥§ ¯®àâë IDE, ¨á室­¨ª ®áâ ¢«¥­.
- ¨§ ¯« £¨­  ã¡à ­  «®£®  ¢â®à , ¨á室­¨ª ®áâ ¢«¥­.
- ¤®à ¡®âª  ¨á室­®© ¢¥àᨨ SHAOS CD-Player v1.0 beta1.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
fn/fn.exe

Binary file not shown.

View File

@ -3,6 +3,27 @@ FN - FlexNavigator
FV - FileViewer
FE - FileEditor
18.07.2025
CDplayer.flx 1.1:
- ¯« £¨­ ¤®¤¥« ­, ®¯¨á ­¨¥ cdplayer.txt à冷¬ á ¯« £¨­®¬.
FE 1.09
- ¨á¯à ¢«¥­®: ¯à¨ ¢ë室¥ ¨§ । ªâ®à  á ­¥á®åà ­¥­­ë¬ ä ©«®¬ ¨ § ¯à®á¥ ­  á®åà ­¥­¨¥
ª« ¢¨è  Enter ⥯¥àì à ¡®â ¥â ª ª ¯®¤â¢¥à¦¤¥­¨¥ á®åà ­¥­¨ï.
FN 1.16
- ¢áâ஥­­ë© editor ¯¥à¥¥å « ¢ ¯« £¨­ ®âªã¤  ¨ § ¯ã᪠¥âáï ¯® F4, ¨§ FN 㤠«¥­.
- ¢áâ஥­­ë© viewer ¯¥à¥¥å « ¢ ¯« £¨­ ®âªã¤  ¨ § ¯ã᪠¥âáï ¯® F3, ¨§ FN 㤠«¥­.
- ¢áâ஥­­ë© help ¯¥à¥¥å « ¢ ¯« £¨­ ®âªã¤  ¨ § ¯ã᪠¥âáï ¯à¨ ­ ¦ â¨¨ F1, ¨§ FN 㤠«¥­.
- § £à㧪  ¯« £¨­  ®â¤¥«¥­  ®â § ¯ã᪠, ⥯¥àì ¬®¦­® § ¯ã᪠âì ¯« £¨­ë ­¥
⮫쪮 ¨§ ¯ ­¥«¨ FN.
- ¤®¡ ¢«¥­ ¬ ªà®á ä®à¬¨à®¢ ­¨ï § £®«®¢ª  ¤«ï ¯« £¨­®¢.
- ¢ ®ª­ å á ®è¨¡ª®© ¯¥à¥¤¥« ­ ­  2 ⨯  ®ª®­ ¢¬¥áâ® ¬­®£¨å ¯®¤ ª ¦¤ãî ®è¨¡ªã.
- ¨á¯à ¢«¥­  ¯®â¥àï æ¢¥â  ¯à¨ ¯¥ç â¨ ⥪áâ  ãª § ­­®¬ã  ¤à¥áã ¯®  ¤à¥áã
- ⥪áâ®¢ë¬ ä ©« ¬ ¢¥à­ã« ª®¤¨à®¢ªã CP866, readme.md ®áâ ¢«¥­ ¢ ª®¤¨à®¢ª¥ UTF8.
27.06.2025
FN 1.15.01
- ¢ ¯ à¥ ¬¥áâ ¨á¯à «¥­  data ­  date.
25.06.2025
FN 1.15
- £®¤ ª®¯¨à ©â  ¢® ¢áâ஥­­®¬ help ¢áâ ¢«ï¥âáï ¯à¨ á¡®àª¥.
@ -37,7 +58,6 @@ FN v1.14
ˆá¯à ¢«¥­  ®è¨¡ª  ¨­¨æ¨ «¨§ æ¨¨ áâà ­¨æë help.
„®¡ ¢«¥­  ¯®¤¤¥à¦ª  ¡®«ìè¨å ä ©«®¢ ¤«ï FAT32
11/05/24
’¥¯¥àì ¢ë¢®¤¨âáï á®®¡é¥­¨¥ ® ⮬, ç⮠᫨誮¬ ¬­®£® ä ©«®¢ ¢ ¤¨à¥ªâ®à¨¨. ’¥ ä ©«ë, ª®â®àë¥ "­¥ ¢«¥§«¨" - ­¥ ®â®¡à ¦ îâáï.

View File

@ -1,23 +1,34 @@
; LAST UPDATE: 25.06.2025 savelij
DOShistory_Size EQU 0x200 ; à §¬¥à ¡ãä¥à  DOS ¨áâ®à¨¨
; LAST UPDATE: 25.07.2025 savelij
INIT_VAR 0x8000
SETVAR WorkBuffer, 0x400 ; à ¡®ç¨© ¡ãä¥à
SETVAR StackTree, 0x100 ; ­ ç «® ¡ãä¥à  á⥪  ¤«ï à ¡®âë á ¤¥à¥¢®¬ ¤¨à¥ªâ®à¨©
SETVAR STACKTREE, 0 ; 㪠§ â¥«ì ­  ª®­¥æ ¡ãä¥à  (á⥪ à áâ¥â ¢­¨§)
SETVAR PagesList, 0x100 ; ᯨ᮪ áâà ­¨æ ¯ ¬ïâ¨
SETVAR Stack, 0x100 ; ­ ç «® à ¡®ç¥£® á⥪ 
SETVAR STACK, 0 ; 㪠§ â¥«ì ­  ª®­¥æ ¡ãä¥à  (á⥪ à áâ¥â ¢­¨§)
SETVAR PagesList, 0x100 ; ᯨ᮪ áâà ­¨æ ¯ ¬ïâ¨
SETVAR BASE_ADDR, 0x100 ; ­ ç «® ª®¤  (¡«®ª ¯¥à¥å®¤®¢ ¨ ®¡é¨å ¯¥à¥¬¥­­ëå ¤«ï ¤®áâ㯠 ¨§ ¯« £¨­®¢)
SETVAR PALETTE, 0 ; ¯ «¨âà  áà §ã §  â ¡«¨æ¥© ¯¥à¥å®¤®¢ ¨ £«®¡ «ì­ëå ¯¥à¥¬¥­­ëå
ADDR
_INIT_VAR 0x4000
_SETVAR .FlexDIRECTORY
;  ¤à¥á  ¡ãä¥à®¢
BUF_REZ2
_INIT_VAR 0x8000
_MINUSVAR .FLXdir, 0x100
_MINUSVAR .FlexDIRECTORY, 0x100
;  ¤à¥á  ¤«ï ¯« £¨­®¢
PluginOrgCPU3 EQU 0xC000 - 0x10 ;  ¤à¥á ¯« £¨­  ¤«ï ®ª­  3 á ãç¥â®¬ à §¬¥à  § £®«®¢ª 
PluginOrgCPU1 EQU 0x4000 - 0x10 ;  ¤à¥á ¯« £¨­  ¤«ï ®ª­  1 á ãç¥â®¬ à §¬¥à  § £®«®¢ª 
; ¡¨â®¢ë¥ ¬ áª¨ ¤«ï ¯« £¨­®¢
FLXMODES
_BITMASK NORESTORE, 0 ; 0 - à ¡®â ¥â á ¢®ááâ ­®¢«¥­¨¥¬ à ¡®ç¥© ®¡« á⨠Flex Navigator
; (â.¥. ¯®á«¥ à ¡®âë ¯« £¨­  ­¥ ­ã¦­® ¢®ááâ ­ ¢«¨¢ âì íªà ­)
; à ¡®â ¥â ¡¥§ ¢®ááâ ­®¢«¥­¨ï à ¡®ç¥© ®¡« á⨠Flex Navigator
; (â.¥. ¯®á«¥ à ¡®âë ¯« £¨­  ­ã¦­® ¢®ááâ ­ ¢«¨¢ âì íªà ­)
_BITMASK ADRORG, 1 ; 0 -  ¤à¥á ª®¬¯¨«ï樨 ¨ à ¡®âë ¢  ¤à¥á å 0xC000-0xFFFF
; 1 -  ¤à¥á ª®¬¯¨«ï樨 ¨ à ¡®âë ¢  ¤à¥á å 0x4000-0x7FFF
PluginOrg EQU 0xC000 - 0x10 ;  ¤à¥á ¯« £¨­  á ãç¥â®¬ à §¬¥à  § £®«®¢ª 
LenInpData EQU 12 ; ª ª®¥-⮠ᬥ饭¨¥ ¤«ï ¬¥âª¨ SearchStr
CursTimer EQU 6 ; "ç áâ®â " ¬®à£ ­¨ï ⥪á⮢®£® ªãàá®à 
@ -105,50 +116,35 @@ WINSUBOBJ
;[]----------------------------------------------------------[]
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 ; <20>¥à¢ë© ä ©« ­  áâà ­¨æ¥ LOW
_SETVAR .FFH ; <20>¥à¢ë© ä ©« ­  áâà ­¨æ¥ 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 ; ’¥ªã騩 ¯ãâì ¯ ­¥«¨
_SETVAR .PANELFLAG, BYTE ; ”« £ ¯ ­¥«¨ ¡¨â 7 - ¡¨â ¢ë¤¥«¥­­®áâ¨
; ¡¨â 0 - ­®¬¥à ¯ ­¥«¨
_SETVAR .VIEWFLAG, BYTE ; ”« £ ¢¨¤  ¯ ­¥«¨ 0 - ªà âª ï ¯ ­¥«ì
; ¡¨â 0 - ¯®¤à®¡­ ï ¯ ­¥«ì
; ¡¨â 1 - ¤¥à¥¢®
; ¡¨â 2 - 㦠⮥ ¤¥à¥¢®
_SETVAR .SORTFLAG, BYTE ; ‚¨¤ á®àâ¨à®¢ª¨
; ¡¨â 0 - ¯® ¨¬¥­¨
; ¡¨â 1 - ¯® à áè¨à¥­¨î
; ¡¨â 2 - ¯® à §¬¥àã
; ¡¨â 3 - ¯® ¤ â¥
; ¡¨â 4 - execute file
; ¡¨â 5 - file mask
_SETVAR .X, WORD ; X ¯®§¨æ¨ï ¯ ­¥«¨
_SETVAR .BAR_X, WORD ; X ¯®§¨æ¨ï áªà®«¡ à 
_SETVAR .BAR_Y, WORD ; Y ¯®§¨æ¨ï áªà®«¡ à 
_SETVAR .BAR_MAX, WORD ; Max ¤«¨­  áªà®«¡ à 
_SETVAR .BAR_CURR, WORD ; ⥪.¤«¨­  áªà®«¡ à  ???
_SETVAR .BAR_ADR_LEFT, WORD ; €¤à¥á ï祩ª¨ BarLeft
_SETVAR .BAR_ADR_RIGHT, WORD ; €¤à¥á ï祩ª¨ BarRight
_SETVAR .FILES_PAGE, WORD ; Š®«-¢® ä ©«®¢ ­  áâà ­¨æ¥
_SETVAR .FILES_ALL, WORD ; ޡ饥 ª®«-¢® ä ©«®¢
_SETVAR .FIRST_FILE, WORD ; <20>¥à¢ë© ä ©« ­  áâà ­¨æ¥
_SETVAR .CURR_FILE, WORD ; T¥ªã騩 ä ©« ­  áâà ­¨æ¥
_SETVAR .FILES_MARK, WORD ; Š®«-¢® ¬ àª¨à®¢ ­­ëå ä ©«®¢
_SETVAR .BYTES_MARK, DWORD ; Š®«-¢® ¬ àª¨à®¢ ­­ëå ¡ ©â®¢
_SETVAR .BYTES_MARK_H, BYTE ; Š®«-¢® ¬ àª¨à®¢ ­­ëå ¡ ©â®¢ FAT32
_SETVAR .FILE_MASK, MASK_SIZE ; Œ áª  ¯®ª §  ä ©«®¢
_SETVAR .CURR_PATH, 0x100 ; ’¥ªã騩 ¯ãâì ¯ ­¥«¨
PANELFLAG
_BITMASK PRNDOSPATH, 7 ; =1-¯¥ç â âì ¯ãâì DOS
@ -176,47 +172,28 @@ SORTFLAG
;[]----------------------------------------------------------[]
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
_SETVAR .X, WORD
_SETVAR .Y, WORD
_SETVAR .MAX_LEN, WORD ; à §¬¥à ¡ à 
_SETVAR .LEN_FILES, WORD ; ª®«¨ç¥á⢮ ä ©«®¢
_SETVAR .LEFT_FILES, WORD
_SETVAR .RIGHT_FILES, WORD
_SETVAR .PAGE_FILES, WORD ; ª®«¨ç¥á⢮ ä ©«®¢ ­  áâà ­¨æã
_SETVAR .MAX_FILES, WORD ; ¬ ªá¨¬ «ì­®¥ ª®«¨ç¥á⢮ ä ©«®¢
_SETVAR .FIRST_FILE, WORD ; ¯¥à¢ë© ä ©«
;[]----------------------------------------------------------[]
; <20>ணà¥áá ¡ à
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
_SETVAR .X, WORD
_SETVAR .Y, WORD
_SETVAR .MAX_LEN, WORD ; ¬ ªá¨¬ «ì­ ï ¤«¨­  ¯à®æ¥áá 
_SETVAR .INDEX, WORD ; Š®íä䍿¨¥­â ¤«ï ¯à®æ¥áá 
_SETVAR .CORR_INDEX, WORD ; Š®à४æ¨ï ª®í䍿¨¥­â 
_SETVAR .MAX_PAGES, DWORD ; Œ ªá¨¬ã¬ áâà ­¨æ
_SETVAR .CURR_PAGE, DWORD ; ’¥ªãé ï áâà ­¨æ 
_SETVAR .COLOR, BYTE ; –¢¥â ¯à®£à¥áá 
; ”®à¬ â â ¡«¨æë
; +00 2 Xmin
@ -247,22 +224,14 @@ PROC
; +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 .X_MIN, WORD ; Xmin
_SETVAR .X_MAX, WORD ; Xmax
_SETVAR .Y_MIN, WORD ; Ymin
_SETVAR .Y_MAX, WORD ; Ymax
_SETVAR .FLAG, WORD ; ¡¨â®¢ë¥ ä« £¨
_SETVAR .FIRE_NOFIRE, WORD ; €¤à¥á ®¡à ¡®â稪  ¯à¨ ­¥ ­ ¦ â®¬ ®£­¥
_SETVAR .FIRE_LEFT, WORD ; €¤à¥á ®¡à ¡®â稪  ¯à¨ ­ ¦ â®¬ ®£­¥ («¥¢)
_SETVAR .FIRE_RIGHT, WORD ; €¤à¥á ®¡à ¡®â稪  ¯à¨ ­ ¦ â®¬ ®£­¥ (¯à ¢)
_SETVAR .SIZE, 0
;FLAGS ; ¡¨âë 7-0
@ -276,6 +245,7 @@ FORMTABL
_BITMASK BUTTON, 0 ; ª­®¯ª 
; ; ¡¨âë 15-8
_BITMASK FIRENOINV, 7 ; íâ® ¯¥à¥ª«îç â¥«ì (¨­¢¥à⠯ਠ®£­¥ ­¥ 㡨à âì)
_BITMASK HZ, 6 ; ????
_BITMASK CLOSEANDRUN, 1 ; ¢ë§¢ âì äã­ªæ¨î § ªàëâ¨ï ®ª­  ¯¥à¥¤ § ¯ã᪮¬ ¯à®£à ¬¬ë ¯® «¥¢®© ª­®¯ª¥
_BITMASK CLOSEWIN, 0 ; ¢ë§¢ âì äã­ªæ¨î § ªàëâ¨ï ®ª­  ¯¥à¥¤ § ¯ã᪮¬ ¯à®£à ¬¬ë ¯® «¥¢®© ª­®¯ª¥
_BITMASK ENDTABL, 7 ; ¡¨â ¢ .XMINH 㪠§ â¥«ì ­  ª®­¥æ ᯨ᪠
@ -340,11 +310,15 @@ JUMPS
; 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 .FNREZ2, BYTE ; ‘âà ­¨æ  á äã­ªæ¨ï¬¨ FN
_SETVAR .FNFONT, BYTE ; ‘âà ­¨æ  èà¨ä⮢
_SETVAR .FNREZ3, BYTE ; ‘âà ­¨æ  FN HELP
IFDEF ENABLE.VIEW
_SETVAR .FNVIEW, BYTE ; ‘âà ­¨æ  á FileViewer
ENDIF
IFDEF ENABLE.EDIT
_SETVAR .FNEDIT, BYTE ; ‘âà ­¨æ  á FileEditor
ENDIF
_SETVAR .BufferID, BYTE ; ˆ­¤¥­â¨ä¨ª â®à ¯ ¬ï⨠¯®¤ ¡ãä¥à 
_SETVAR .FLX, BYTE ; ‘âà ­¨æ  ¤«ï ¯®¤£à㧪¨ FLX ¯à®á¬®âà. FLX ã⨫¨â
_SETVAR .LEFTPANEL, BYTE ; ‘âà ­¨æ  ª â «®£  ‹¥¢®© ¯ ­¥«¨
@ -378,11 +352,17 @@ FILENAME
.FNEDIT_EXT EQU "fnedit.ext"
.FNTREE_FLN EQU "treeinfo.fln"
.FNEDIT_INI EQU "FNEDIT.INI"
.HELP_FLX EQU "HELP.FLX"
.EDIT_FLX EQU "FNEDITOR.FLX"
.VIEW_FLX EQU "FNVIEWER.FLX"
FNinternal
_INIT_VAR 0xF0
_SETVAR .PlugNotFound
; ®â« ¤®ç­®¥, ­¥ ¬¥­ïâì ¯® ¨§¡¥¦ ­¨¥ £«îª®¢
PLUGS_ENABLE EQU 0
PLUGS_ENABLE EQU 0 ; ¬¥­î ¯« £¨­®¢
TREE_REZID EQU 0
MARK_DIR EQU 0 ; ¢ë¡®à ¤¨à¥ªâ®à¨¨ á ¯®¤áç¥â®¬ à §¬¥à  ¢á¥å ä ©«®¢
TREE_DIR_ENTER EQU 0 ; ¯®ª § ᮤ¥à¦¨¬®£® ¤¨à¥ªâ®à¨¨ ¢ ¤¥à¥¢¥ ¯® ENTER
CORR_FILENAME EQU 1 ; ¯à¥®¡à §®¢ ­¨¥ ᨬ¢®«®¢ ¨¬¥­¨ ä ©« 

View File

@ -1,5 +1,5 @@
; LAST UPDATE: 05.06.2025 savelij
; LAST UPDATE: 19.07.2025 savelij
include macros.a80
@ -14,6 +14,19 @@
include fat_dir_sp.a80
include fn_version.a80
ENABLE
;.EDIT
;.VIEW
;.HELP
PAGES_MEM := 4
IFDEF ENABLE.VIEW
PAGES_MEM := PAGES_MEM + 1
ENDIF
IFDEF ENABLE.EDIT
PAGES_MEM := PAGES_MEM + 1
ENDIF
INIT_VAR 0xC000
SETVAR FONT_RAW, 6888;IFFFONT_RAW_PACK - FONT_RAW_PACK
SETVAR_ALIGN
@ -37,7 +50,7 @@ EntryExec: DI
SPDSS DSSF.EXIT,0x26 ; exit
.next1
SPDSS DSSF.GETMEM,6 ; § ¯à®á 6 áâà ­¨æ ¯ ¬ïâ¨
SPDSS DSSF.GETMEM,PAGES_MEM ; § ¯à®á áâà ­¨æ ¯ ¬ïâ¨
JR NC,.next2 ; CY - not enough memory
LD HL,MAIN.no_memory_str
SPDSS DSSF.PCHARS ; print text
@ -46,6 +59,7 @@ EntryExec: DI
.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
@ -53,35 +67,15 @@ EntryExec: DI
LD A,(MAIN.hFile)
SPDSS DSSF.READ
JP C,disk_error
LD A,(MAIN.FNFUNCT)
; § £à㧪  ¤®¯®«­¨â¥«ì­ëå ä㭪権
LD A,(MAIN.FNREZ2)
SETPORT WINSP.CPU3,,0
LD HL,0xC000 ; FNFUNCT
LD HL,0xC000 ; FNREZ2
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)
@ -89,8 +83,6 @@ EntryExec: DI
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
@ -103,8 +95,39 @@ EntryExec: DI
LD DE,CLOCK_BMP
LD BC,CLOCK_BMP_Size + MOUSE_BMP_Size
LDIR
; § £à㧪  奫¯ 
LD A,(MAIN.FNREZ3) ; FNREZ3
SETPORT WINSP.CPU3,,0
; SETPORT WINSP.CPU1,,0 ; ????
LD HL,0xC000
LD DE,END_BLOCK_3 - START_BLOCK_3
LD A,(MAIN.hFile)
SPDSS DSSF.READ
JP C,disk_error
IFDEF ENABLE.VIEW
; § £à㧪  ¢ìà 
LD A,(MAIN.FNVIEW) ; FNVIEW
SETPORT WINSP.CPU3,,0
LD HL,0xC000
LD DE,END_BLOCK_VIEWER - START_BLOCK_VIEWER
LD A,(MAIN.hFile)
SPDSS DSSF.READ
JP C,disk_error
ENDIF
IFDEF ENABLE.EDIT
; § £à㧪  । ªâ®à 
LD A,(MAIN.FNEDIT) ; FNEDIT
SETPORT WINSP.CPU3,,0
LD HL,0xC000
LD DE,END_BLOCK_EDITOR - START_BLOCK_EDITOR
LD A,(MAIN.hFile)
SPDSS DSSF.READ
JP C,disk_error
ENDIF
LD A,(MAIN.hFile)
SPDSS DSSF.CLOSE ; close file
;!TEST ; !HARDCODE SYS_PAGE
SETPORT WINSP.CPU3,PAGE.SYSTEM;0xFE
SETPORT WINSP.CPU3,PAGE.SYSTEM
LD HL,0x0124 + CPU3 ; !HARDCODE
LD (HL),0x38 ; interrupt routine address Low byte
INC HL
@ -117,9 +140,9 @@ EntryExec: DI
SETPORT WINSP.CPU3,,0
LD A,(MAIN.hMem)
LD (RAMPAGES.FNPAGESID),A
LD HL,MAIN.FNFUNCT
LD DE,RAMPAGES.FNFUNCT
LD BC,0x0005
LD HL,MAIN.FNREZ2
LD DE,RAMPAGES.FNREZ2
LD BC,PAGES_MEM
LDIR
JP BASE_ADDR
@ -135,42 +158,62 @@ disk_error: PUSH AF
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
oo EQU COLORP.BLACK + COLORI.BLACK
WW EQU COLORP.WHITE + COLORI.WHITE
HH EQU COLORP.WHITE + COLORI.WHITE0E
BB EQU COLORP.WHITE + COLORI.BLACK
; ç á¨ª¨ ¤«ï ¬ëè¨
; 9 x 14 = 126 00 01 02 03 04 05 06 07 08
Clock_BMP: DB oo,oo,oo,oo,oo,oo,oo,oo,oo ; 00
DB oo,HH,HH,HH,HH,HH,HH,HH,oo ; 01
DB oo,oo,oo,oo,oo,oo,oo,oo,oo ; 02
DB WW,oo,HH,HH,HH,HH,HH,oo,WW ; 03
DB WW,oo,HH,HH,HH,oo,HH,oo,WW ; 04
DB WW,WW,oo,HH,BB,HH,oo,WW,WW ; 05
DB WW,WW,WW,oo,HH,oo,WW,WW,WW ; 06
DB WW,WW,WW,oo,HH,oo,WW,WW,WW ; 07
DB WW,WW,oo,HH,BB,HH,oo,WW,WW ; 08
DB WW,oo,HH,HH,HH,oo,HH,oo,WW ; 09
DB WW,oo,HH,HH,HH,HH,HH,oo,WW ; 0A
DB oo,oo,oo,oo,oo,oo,oo,oo,oo ; 0B
DB oo,HH,HH,HH,HH,HH,HH,HH,oo ; 0C
DB oo,oo,oo,oo,oo,oo,oo,oo,oo ; 0D
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
; ªãàá®à ¤«ï ¬ëè¨
; 9 x 13 = 117 00 01 02 03 04 05 06 07 08
Mouse_BMP: DB oo,oo,WW,WW,WW,WW,WW,WW,WW ; 00
DB oo,HH,oo,WW,WW,WW,WW,WW,WW ; 01
DB oo,HH,HH,oo,WW,WW,WW,WW,WW ; 02
DB oo,HH,HH,HH,oo,WW,WW,WW,WW ; 03
DB oo,HH,HH,HH,HH,oo,WW,WW,WW ; 04
DB oo,HH,HH,HH,HH,HH,oo,WW,WW ; 05
DB oo,HH,HH,HH,HH,HH,HH,oo,WW ; 06
DB oo,HH,HH,HH,HH,oo,oo,oo,oo ; 07
DB oo,HH,HH,oo,HH,oo,WW,WW,WW ; 08
DB oo,HH,oo,oo,HH,HH,oo,WW,WW ; 09
DB oo,oo,WW,WW,oo,HH,oo,WW,WW ; 0A
DB oo,WW,WW,WW,oo,HH,HH,oo,WW ; 0B
DB WW,WW,WW,WW,WW,oo,oo,WW,WW ; 0C
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
.FNREZ2 db 0x00 ; 00
.FNFONT db 0x00 ; 01
.FNREZ3 db 0x00 ; 02
IFDEF ENABLE.VIEW
.FNVIEW db 0x00 ; 03
ENDIF
IFDEF ENABLE.EDIT
.FNEDIT db 0x00 ; 04
ENDIF
DB 0xFF
.copyright_str: DB "\r\nThe Flex Navigator, ver.\{FLEX_VERS.NAVIGATOR}\r\n",0
.copyright_str: DZ "\r\nThe Flex Navigator, ver.\{FLEX_VERS.NAVIGATOR}\r\n"
.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"

View File

@ -1,5 +1,5 @@
; LAST UPDATE: 25.06.2025 savelij
; LAST UPDATE: 06.07.2025 savelij
MAKEWINDOW MACRO TYPE
CALL JUMPS.MakeWindow
@ -103,4 +103,49 @@ WINDOWCLOSE MACRO
W_END
ENDM
BUILDDATE EQU "\{(DDATE / 10) + '0'}\{(DDATE # 10) + '0'}.\{MMOUNTH / 10 + '0'}\{MMOUNTH # 10 + '0'}.20\{(YYEAR / 10) + '0'}\{(YYEAR # 10) + '0'}"
; ä®à¬¨à®¢ â¥«ì FLX § £®«®¢ª , ¯ à ¬¥âàë:
; STRING (¤® 5 ¡ ©â) - «î¡®© ⥪áâ ¤«ï § £®«®¢ª 
; OFFSET (WORD) - ᬥ饭¨¥ ¢ áâà ­¨æ¥ ¯ ¬ï⨠¤«ï § £à㧪¨ (0 - 0x3FFF)
; ENTRY (WORD) - ᬥ饭¨¥ ¢ áâà ­¨æ¥ ¯ ¬ï⨠¤«ï § ¯ã᪠ (0 - 0x3FFF)
; MODES (BYTE) - ०¨¬ à ¡®âë
HDR_FLX MACRO STRING,OFFSET,ENTRY,MODES
IFNB MODES
IF MODES & FLXMODES.M_ADRORG
ORG PluginOrgCPU1
ELSE
ORG PluginOrgCPU3
ENDIF
ELSE
ORG PluginOrgCPU3
ENDIF
DB "FLX"
IFB STRING
DB "-PLUG"
ELSE
IF STRLEN (STRING) = 5
DB STRING
ELSE
DB STRING
DB 5 - STRLEN (STRING) DUP " "
ENDIF
ENDIF
IFB OFFSET
DW 0
ELSE
DW OFFSET
ENDIF
IFB ENTRY
DW 0
ELSE
DW ENTRY
ENDIF
IFB MODES
DB 0
ELSE
DB MODES
ENDIF
DB 3 DUP 0
ENDM

View File

@ -1,7 +1,7 @@
; LAST UPDATE: 24.06.2025 savelij
; LAST UPDATE: 18.07.2025 savelij
FLEX_VERS
.NAVIGATOR EQU "1.15"
.EDITOR EQU "1.08"
.NAVIGATOR EQU "1.16"
.EDITOR EQU "1.09"
.VIEWER EQU "1.05"

200
fnbar.a80
View File

@ -1,13 +1,13 @@
; LAST UPDATE: 07.03.2025 savelij
; LAST UPDATE: 25.07.2025 savelij
;[]-----------------------------------------------------------[]
InitScrollBar LD C,(IX + BAR.PAGEL)
LD B,(IX + BAR.PAGEH) ; Š®«-¢® í«¥¬. ­  áâà.
InitScrollBar LD C,(IX + BAR.PAGE_FILES)
LD B,(IX + BAR.PAGE_FILES + 1) ; Š®«-¢® í«¥¬. ­  áâà.
LD L,C
LD H,B
LD E,(IX + BAR.MAXL)
LD D,(IX + BAR.MAXH) ; ¬ ªá.í«¥¬¥­â®¢
LD E,(IX + BAR.MAX_FILES)
LD D,(IX + BAR.MAX_FILES + 1) ; ¬ ªá.í«¥¬¥­â®¢
LD A,D
OR E
JR NZ,.L1
@ -18,8 +18,8 @@ InitScrollBar LD C,(IX + BAR.PAGEL)
ADD HL,DE
EX DE,HL
.L2 PUSH DE
LD E,(IX + BAR.MAXLL)
LD D,(IX + BAR.MAXLH) ; Š®«-¢® ¢¨¤. í«¥¬. * à §¬¥à ¡ à 
LD E,(IX + BAR.MAX_LEN)
LD D,(IX + BAR.MAX_LEN + 1) ; Š®«-¢® ¢¨¤. í«¥¬. * à §¬¥à ¡ à 
CALL Mult16X16 ; DE * BC = HL + DE
POP BC ; /¬ ªá.í«¥¬¥­â®¢
CALL Divis32X16 ; HL + DE / BC = DE (HL-®áâ)
@ -31,8 +31,8 @@ InitScrollBar LD C,(IX + BAR.PAGEL)
SBC HL,DE
JR C,.L4
LD DE,0x0003
.L4 LD (IX + BAR.LENL),E ; = ¤«¨­  ¡ à 
LD (IX + BAR.LENH),D ; = ¤«¨­  ¡ à 
.L4 LD (IX + BAR.LEN_FILES),E ; = ¤«¨­  ¡ à 
LD (IX + BAR.LEN_FILES + 1),D ; = ¤«¨­  ¡ à 
RET
PrnHScrBar PUSH IY
@ -40,12 +40,12 @@ PrnHScrBar PUSH IY
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 L,(IX + BAR.FIRST_FILE) ; FirstFile
LD H,(IX + BAR.FIRST_FILE + 1)
LD E,(IX + BAR.PAGE_FILES)
LD D,(IX + BAR.PAGE_FILES + 1)
LD C,(IX + BAR.MAX_FILES) ; EquipFiles
LD B,(IX + BAR.MAX_FILES + 1)
LD A,B
OR C
JR NZ,.L1
@ -63,8 +63,8 @@ PrnHScrBar PUSH IY
JR NC,.L2
LD HL,0x0000
.L2 EX DE,HL
LD C,(IX + BAR.MAXLL)
LD B,(IX + BAR.MAXLH)
LD C,(IX + BAR.MAX_LEN)
LD B,(IX + BAR.MAX_LEN + 1)
CALL Mult16X16
POP BC
CALL Divis32X16
@ -76,12 +76,12 @@ PrnHScrBar PUSH IY
RR E
JR NC,.L4
INC DE
.L4 LD L,(IX + BAR.XL)
LD H,(IX + BAR.XH)
.L4 LD L,(IX + BAR.X)
LD H,(IX + BAR.X + 1)
SRL H
RR L
SET 6,H
LD A,(IX + BAR.YL)
LD A,(IX + BAR.Y)
LD C,A
LD B,COLORP.HIGHGRAY + COLORI.HIGHGRAY;0x88
SETPORT WINSP.CPU1,0x50
@ -104,11 +104,11 @@ PrnHScrBar PUSH IY
EI
POP DE
.L3 PUSH DE
LD L,(IX + BAR.XL)
LD H,(IX + BAR.XH)
LD L,(IX + BAR.X)
LD H,(IX + BAR.X + 1)
ADD HL,DE
LD E,(IX + BAR.LEFTL)
LD D,(IX + BAR.LEFTH)
LD E,(IX + BAR.LEFT_FILES)
LD D,(IX + BAR.LEFT_FILES + 1)
LD A,D
OR E
JR Z,.L6
@ -122,10 +122,10 @@ PrnHScrBar PUSH IY
SRL H
RR L
SET 6,H
LD A,(IX + BAR.YL)
LD A,(IX + BAR.Y)
LD C,A
LD E,(IX + BAR.LENL)
LD D,(IX + BAR.LENH)
LD E,(IX + BAR.LEN_FILES)
LD D,(IX + BAR.LEN_FILES + 1)
LD A,D
OR A
JR NZ,.L7
@ -185,12 +185,12 @@ PrnHScrBar PUSH IY
SETPORT WINSP.CPU1,,0
EI
POP HL
LD C,(IX + BAR.LENL)
LD B,(IX + BAR.LENH)
LD C,(IX + BAR.LEN_FILES)
LD B,(IX + BAR.LEN_FILES + 1)
PUSH BC
ADD HL,BC
LD C,(IX+BAR.RIGHTL)
LD B,(IX+BAR.RIGHTH)
LD C,(IX + BAR.RIGHT_FILES)
LD B,(IX + BAR.RIGHT_FILES + 1)
LD A,B
OR C
JR Z,.L10
@ -201,8 +201,8 @@ PrnHScrBar PUSH IY
LD A,H
LD (BC),A
.L10 POP BC
LD L,(IX + BAR.MAXLL)
LD H,(IX + BAR.MAXLH)
LD L,(IX + BAR.MAX_LEN)
LD H,(IX + BAR.MAX_LEN + 1)
OR A
SBC HL,BC
POP BC
@ -216,7 +216,7 @@ PrnHScrBar PUSH IY
SRL D
RR E
JR Z,.L11
LD A,(IX + BAR.YL)
LD A,(IX + BAR.Y)
LD C,A
LD B,COLORP.HIGHGRAY + COLORI.HIGHGRAY;0x88
SETPORT WINSP.CPU1,0x50
@ -247,12 +247,12 @@ PrnVScrBar PUSH IY
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 L,(IX + BAR.FIRST_FILE) ; FirstFile
LD H,(IX + BAR.FIRST_FILE + 1)
LD E,(IX + BAR.PAGE_FILES)
LD D,(IX + BAR.PAGE_FILES + 1)
LD C,(IX + BAR.MAX_FILES) ; EquipFiles
LD B,(IX + BAR.MAX_FILES + 1)
LD A,B
OR C
JR NZ,.L1
@ -270,12 +270,12 @@ PrnVScrBar PUSH IY
JR NC,.L2
LD HL,0x0000
.L2 EX DE,HL
LD C,(IX + BAR.MAXLL)
LD B,(IX + BAR.MAXLH)
LD C,(IX + BAR.MAX_LEN)
LD B,(IX + BAR.MAX_LEN + 1)
CALL Mult16X16
POP BC
CALL Divis32X16
LD A,(IX + BAR.YL)
LD A,(IX + BAR.Y)
LD IYL,A
LD A,D
OR E
@ -283,8 +283,8 @@ PrnVScrBar PUSH IY
PUSH DE
LD A,E
LD (.L4),A
LD L,(IX + BAR.XL)
LD H,(IX + BAR.XH)
LD L,(IX + BAR.X)
LD H,(IX + BAR.X + 1)
SRL H
RR L
SET 6,H
@ -311,11 +311,11 @@ PrnVScrBar PUSH IY
EI
POP DE
.L3 PUSH DE
LD L,(IX + BAR.YL)
LD H,(IX + BAR.YH)
LD L,(IX + BAR.Y)
LD H,(IX + BAR.Y + 1)
ADD HL,DE
LD E,(IX + BAR.LEFTL)
LD D,(IX + BAR.LEFTH)
LD E,(IX + BAR.LEFT_FILES)
LD D,(IX + BAR.LEFT_FILES + 1)
LD A,D
OR E
JR Z,.L6
@ -326,12 +326,12 @@ PrnVScrBar PUSH IY
LD (HL),D
EX DE,HL
.L6 PUSH HL
LD L,(IX + BAR.XL)
LD H,(IX + BAR.XH)
LD L,(IX + BAR.X)
LD H,(IX + BAR.X + 1)
SRL H
RR L
SET 6,H
LD A,(IX + BAR.LENL)
LD A,(IX + BAR.LEN_FILES)
LD C,A
SUB 0x02
LD (.L7),A
@ -382,12 +382,12 @@ PrnVScrBar PUSH IY
SETPORT WINSP.CPU1,,0
EI
POP HL
LD C,(IX + BAR.LENL)
LD B,(IX + BAR.LENH)
LD C,(IX + BAR.LEN_FILES)
LD B,(IX + BAR.LEN_FILES + 1)
PUSH BC
ADD HL,BC
LD C,(IX + BAR.RIGHTL)
LD B,(IX + BAR.RIGHTH)
LD C,(IX + BAR.RIGHT_FILES)
LD B,(IX + BAR.RIGHT_FILES + 1)
LD A,B
OR C
JR Z,.L9
@ -398,8 +398,8 @@ PrnVScrBar PUSH IY
LD A,H
LD (BC),A
.L9 POP BC
LD L,(IX + BAR.MAXLL)
LD H,(IX + BAR.MAXLH)
LD L,(IX + BAR.MAX_LEN)
LD H,(IX + BAR.MAX_LEN + 1)
OR A
SBC HL,BC
POP BC
@ -411,8 +411,8 @@ PrnVScrBar PUSH IY
JR C,.L10
LD A,L
LD (.L11),A
LD L,(IX+BAR.XL)
LD H,(IX+BAR.XH)
LD L,(IX + BAR.X)
LD H,(IX + BAR.X + 1)
SRL H
RR L
SET 6,H
@ -441,18 +441,18 @@ PrnVScrBar PUSH IY
;[]-----------------------------------------------------------[]
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)
LD (IX + PROC.CURR_PAGE),A
LD (IX + PROC.CURR_PAGE + 1),A
LD (IX + PROC.CURR_PAGE + 2),A
LD (IX + PROC.CURR_PAGE + 3),A
LD (IX + PROC.CORR_INDEX),A
LD (IX + PROC.CORR_INDEX + 1),A
LD C,(IX + PROC.MAX_LEN) ; Œ ªá/¬ ªá.¤«¨­ã ¯à®æ¥á 
LD B,(IX + PROC.MAX_LEN + 1)
LD E,(IX + PROC.MAX_PAGES)
LD D,(IX + PROC.MAX_PAGES + 1)
LD L,(IX + PROC.MAX_PAGES + 2)
LD H,(IX + PROC.MAX_PAGES + 3)
CALL Divis32X16 ; HL + DE / BC = DE (HL-®áâ)
LD A,H
OR L
@ -462,20 +462,20 @@ InitProcess SUB A
OR A
SBC HL,DE
JR C,.L1
LD A,(IX + PROC.MAXL2)
OR (IX + PROC.MAXH2)
LD A,(IX + PROC.MAX_PAGES + 2)
OR (IX + PROC.MAX_PAGES + 3)
JR NZ,.L1
LD E,(IX + PROC.MAXL1)
LD D,(IX + PROC.MAXH1)
LD E,(IX + PROC.MAX_PAGES)
LD D,(IX + PROC.MAX_PAGES + 1)
LD BC,1000
LD (IX + PROC.CORRL),C
LD (IX + PROC.CORRH),B
LD (IX + PROC.CORR_INDEX),C
LD (IX + PROC.CORR_INDEX + 1),B
CALL Mult16X16
LD C,(IX + PROC.MAXLL) ; Œ ªá/¬ ªá.¤«¨­ã ¯à®æ¥á 
LD B,(IX + PROC.MAXLH)
LD C,(IX + PROC.MAX_LEN) ; Œ ªá/¬ ªá.¤«¨­ã ¯à®æ¥á 
LD B,(IX + PROC.MAX_LEN + 1)
CALL Divis32X16 ; HL + DE / BC = DE (HL-®áâ)
.L1 LD (IX + PROC.COEFL),E
LD (IX + PROC.COEFH),D
.L1 LD (IX + PROC.INDEX),E
LD (IX + PROC.INDEX + 1),D
RET
PrnProcess PUSH IY
@ -483,21 +483,21 @@ PrnProcess PUSH IY
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)
LD E,(IX + PROC.CURR_PAGE)
LD D,(IX + PROC.CURR_PAGE + 1)
LD L,(IX + PROC.CURR_PAGE + 2)
LD H,(IX + PROC.CURR_PAGE + 3)
LD A,(IX + PROC.CORR_INDEX)
OR (IX + PROC.CORR_INDEX + 1)
JR Z,.L1
LD C,(IX + PROC.CORRL)
LD B,(IX + PROC.CORRH)
LD C,(IX + PROC.CORR_INDEX)
LD B,(IX + PROC.CORR_INDEX + 1)
CALL Mult16X16
.L1 LD C,(IX + PROC.COEFL)
LD B,(IX + PROC.COEFH)
.L1 LD C,(IX + PROC.INDEX)
LD B,(IX + PROC.INDEX + 1)
CALL Divis32X16
LD L,(IX + PROC.XL)
LD H,(IX + PROC.XH)
LD L,(IX + PROC.X)
LD H,(IX + PROC.X + 1)
SRL H
RR L
SET 6,H
@ -506,8 +506,8 @@ PrnProcess PUSH IY
JR Z,.L2
PUSH DE
PUSH HL
LD L,(IX + PROC.MAXLL)
LD H,(IX + PROC.MAXLH)
LD L,(IX + PROC.MAX_LEN)
LD H,(IX + PROC.MAX_LEN + 1)
OR A
SBC HL,DE
JR NC,.L3
@ -518,7 +518,7 @@ PrnProcess PUSH IY
RR E
JR NC,.L4
INC DE
.L4 LD A,(IX + PROC.YL)
.L4 LD A,(IX + PROC.Y)
LD C,A
LD A,(IX + PROC.COLOR)
AND 0xF0
@ -549,8 +549,8 @@ PrnProcess PUSH IY
EI
POP DE
.L2 PUSH HL
LD L,(IX + PROC.MAXLL)
LD H,(IX + PROC.MAXLH)
LD L,(IX + PROC.MAX_LEN)
LD H,(IX + PROC.MAX_LEN + 1)
OR A
SBC HL,DE
EX DE,HL
@ -561,7 +561,7 @@ PrnProcess PUSH IY
RR E
JR NC,.L7
INC DE
.L7 LD A,(IX + PROC.YL)
.L7 LD A,(IX + PROC.Y)
LD C,A
LD A,(IX + PROC.COLOR)
AND 0x0F

View File

@ -16,7 +16,7 @@ NewDIRECTORY PUSH HL
POP IY
PUSH IY
POP HL
LD DE,PANEL.CURRPATH
LD DE,PANEL.CURR_PATH
ADD HL,DE
ADD A,'A'
CP (HL)
@ -36,11 +36,11 @@ NewDIRECTORY PUSH HL
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
LD HL,LeftPanel + PANEL.CURR_PATH
LD DE,RightPanel + PANEL.CURR_PATH
JR Z,NewDIR0
LD HL,RightPanel + PANEL.CURRPATH
LD DE,LeftPanel + PANEL.CURRPATH
LD HL,RightPanel + PANEL.CURR_PATH
LD DE,LeftPanel + PANEL.CURR_PATH
NewDIR0 SUB A
.L1 LDI
CP (HL)
@ -61,7 +61,7 @@ NewDIRECT1 BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
CALL PrnFileInfo
PUSH IY
POP IX
LD DE,PANEL.BARXL
LD DE,PANEL.BAR_X
ADD IX,DE
CALL InitScrollBar
LD A,(IY + PANEL.VIEWFLAG)
@ -74,7 +74,7 @@ NewDIRECT1 BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
NewDIRTree PUSH IY
POP HL
LD DE,PANEL.CURRPATH
LD DE,PANEL.CURR_PATH
ADD HL,DE
INC HL
INC HL
@ -102,7 +102,7 @@ RefreshDIR BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
CALL PrnFileInfo
PUSH IY
POP IX
LD DE,PANEL.BARXL
LD DE,PANEL.BAR_X
ADD IX,DE
CALL InitScrollBar
LD A,(IY + PANEL.VIEWFLAG)
@ -111,8 +111,8 @@ RefreshDIR BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
CALL Z,PrnHScrBar
POP AF
CALL NZ,PrnVScrBar
RfDIRn1 LD HL,LeftPanel + PANEL.CURRPATH
LD DE,RightPanel + PANEL.CURRPATH
RfDIRn1 LD HL,LeftPanel + PANEL.CURR_PATH
LD DE,RightPanel + PANEL.CURR_PATH
RefrDIR LD A,(DE)
CP (HL)
RET NZ
@ -136,7 +136,7 @@ RefrDIR LD A,(DE)
CALL PrnFileInfo
PUSH IY
POP IX
LD DE,PANEL.BARXL
LD DE,PANEL.BAR_X
ADD IX,DE
CALL InitScrollBar
LD A,(IY + PANEL.VIEWFLAG)
@ -149,8 +149,8 @@ RefrDex POP IY
RET
;[]----------------------------------------------------------[]
FindPrevFile LD A,(IY + PANEL.EFL)
OR (IY + PANEL.EFH)
FindPrevFile LD A,(IY + PANEL.FILES_ALL)
OR (IY + PANEL.FILES_ALL + 1)
RET Z
BIT PANELFLAG.B_PRNDOSPATH,(IY + PANEL.PANELFLAG)
RET Z
@ -202,8 +202,8 @@ FndPrFileE LD A,(HL)
PrevFile DB 13 DUP 0
;[]----------------------------------------------------------[]
FindPrevDIR LD A,(IY + PANEL.EFL)
OR (IY + PANEL.EFH)
FindPrevDIR LD A,(IY + PANEL.FILES_ALL)
OR (IY + PANEL.FILES_ALL + 1)
RET Z
BIT PANELFLAG.B_PRNDOSPATH,(IY + PANEL.PANELFLAG)
RET Z
@ -254,8 +254,8 @@ FndTree INC SP
INC SP
LD L,C
LD H,B
LD C,(IY + PANEL.FPL)
LD B,(IY + PANEL.FPH)
LD C,(IY + PANEL.FILES_PAGE)
LD B,(IY + PANEL.FILES_PAGE + 1)
LD DE,0x0000
EX DE,HL
OR A
@ -268,10 +268,10 @@ FndTree INC SP
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
LD (IY + PANEL.CURR_FILE),L
LD (IY + PANEL.CURR_FILE + 1),H
LD (IY + PANEL.FIRST_FILE),E
LD (IY + PANEL.FIRST_FILE + 1),D
FndTreeExt POP AF
SETPORT WINSP.CPU1,,0
RET

View File

@ -1,5 +1,5 @@
; LAST UPDATE: 28.05.2025 savelij
; LAST UPDATE: 25.07.2025 savelij
;[]==========================================================[]
DOSline SUB A
@ -108,12 +108,12 @@ RunDOSline
CALL SaveDOSline
LD HL,DOSinp
LD A,(HL)
CP 0x20
CP ' '
JP Z,ClearDOSline
LD A,(DOSstr.slen)
LD B,A
LD C,0x00
LD A,0x20
LD A,' '
RunDLn0 CP (HL)
JR Z,RunDLine
INC HL
@ -135,7 +135,7 @@ RunDLine DEC HL
LD A,(DOSinp + 1)
CP ':'
JR NZ,.L1
LD (IY + PANEL.CURRPATH),0x00
LD (IY + PANEL.CURR_PATH),0x00
.L1 CALL NewDIRECTORY
LD A,(TreeFlag)
OR A
@ -149,7 +149,7 @@ RunDLine DEC HL
JR NZ,.L2
LD IY,RightPanel
LD HL,LeftPanel
.L2 LD DE,PANEL.CURRPATH
.L2 LD DE,PANEL.CURR_PATH
ADD HL,DE
INC HL
INC HL
@ -162,7 +162,7 @@ RunDLine DEC HL
CALL PrnFileInfo
PUSH IY
POP IX
LD DE,PANEL.BARXL
LD DE,PANEL.BAR_X
ADD IX,DE
CALL PrnVScrBar
POP IY
@ -217,7 +217,7 @@ RunDOSexe1 ld hl,WorkBuffer
jr z,.endOfLine
dec hl
ld de,WorkBuffer
call ConcatString
call STRCAT
.endOfLine: ld hl,WorkBuffer
ld de,WorkBuffer + 0x0100
SPDSS DSSF.EX_PATH,4
@ -242,9 +242,9 @@ RunDOSexe1 ld hl,WorkBuffer
.noExe: ld hl,ShellFile ;ª®¯¨à㥬 ¯ãâì ª 襫«ã
ld de,WorkBuffer + 0x0100
call CopyString
call STRCPY
ld hl,WorkBuffer
call ConcatString
call STRCAT
.noBatch: CALL ResDrivers
SUB A
CALL ClearScreen
@ -282,11 +282,11 @@ GetFileName: LD A,(DOSinp + 1) ;
.panelSearch: ex hl,de
ld (.str),hl
bit PANELFLAG.B_SIDE,(iy + PANEL.PANELFLAG)
ld hl,RightPanel + PANEL.CURRPATH
ld hl,RightPanel + PANEL.CURR_PATH
jr nz,.next
ld hl,LeftPanel + PANEL.CURRPATH
ld hl,LeftPanel + PANEL.CURR_PATH
.next: ld de,WorkBuffer + 0x0100
call CopyString
call STRCPY
ld a,'\\'
ld (de),a
inc de
@ -310,16 +310,16 @@ GetFileName: LD A,(DOSinp + 1) ;
.str EQU $-2
jr c,.notFound
ld hl,WorkBuffer + 0200h
jp CopyString
jp STRCPY
;<3B>®¤£®â®¢ª  ¨¬¥­¨ ä ©«  ¤«ï ¯®¨áª 
PrepareFilename:
ld de,WorkBuffer + 0200h
push hl
ld hl,WorkBuffer + 0x0100
call CopyString
call STRCPY
pop hl
jp ConcatString
jp STRCAT
;¯®¨áª ä ©« 
SearchFilename: ld hl,WorkBuffer + 0200h ;¯®¨áª ä ©«  ¢ ª â «®£¥ ⥪ã饩 ¯ ­¥«¨
@ -331,7 +331,7 @@ SearchFilename: ld hl,WorkBuffer + 0200h ;
SaveDOSline
GETPORT WINSP.CPU1
PUSH AF
LD A,(RAMPAGES.FNHELP)
LD A,(RAMPAGES.FNREZ3)
SETPORT WINSP.CPU1,,0
SETPORT WINSP.Y_PORT,0xC0
LD IX,DOSstr
@ -404,7 +404,7 @@ GetDOShistory LD IX,DOSstr
EX AF,AF'
GETPORT WINSP.CPU1
PUSH AF
LD A,(RAMPAGES.FNHELP)
LD A,(RAMPAGES.FNREZ3)
SETPORT WINSP.CPU1,,0
EX AF,AF'
PUSH AF
@ -562,10 +562,10 @@ InsFileName
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)
LD L,(IY + PANEL.FIRST_FILE)
LD H,(IY + PANEL.FIRST_FILE + 1)
LD E,(IY + PANEL.CURR_FILE)
LD D,(IY + PANEL.CURR_FILE + 1)
ADD HL,DE
BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
JR Z,InsFN1
@ -616,10 +616,10 @@ InsFN2 POP AF
TempName DB 14 DUP 0
InsLeftPath LD HL,LeftPanel + PANEL.CURRPATH
InsLeftPath LD HL,LeftPanel + PANEL.CURR_PATH
JR InsPath
InsRightPath LD HL,RightPanel + PANEL.CURRPATH
InsRightPath LD HL,RightPanel + PANEL.CURR_PATH
InsPath LD DE,WorkBuffer + 0x100
PUSH DE
SUB A

View File

@ -1,5 +1,5 @@
; LAST UPDATE: 27.04.2025 savelij
; LAST UPDATE: 24.07.2025 savelij
;[]==========================================================[]
InitVideoMode
@ -137,7 +137,7 @@ FirstInit
ADD A,'A'
LD (ShellFile),a ; fndosln.z80
SPDSS DSSF.CURDISK
LD HL,LeftPanel + PANEL.CURRPATH
LD HL,LeftPanel + PANEL.CURR_PATH
PUSH HL
ADD A,'A'
LD (HL),A
@ -146,17 +146,30 @@ FirstInit
INC HL
SPDSS DSSF.CURDIR
POP HL
LD DE,RightPanel + PANEL.CURRPATH
LD DE,RightPanel + PANEL.CURR_PATH
LD BC,0x0100
LDIR
GETPORT WINSP.CPU1
PUSH AF
LD A,(RAMPAGES.FNFUNCT)
LD A,(RAMPAGES.FNREZ2)
SETPORT WINSP.CPU1,,0
LD HL,FlexDIRECTORY
LD HL,BUF_REZ2.FlexDIRECTORY
SPDSS DSSF.APPINFO,1
JP C,.L5
LD HL,FlexDIRECTORY
; á®§¤ ­¨¥ ¯ã⨠¤«ï § ¯ã᪠ FLX ¯« £¨­®¢ á ¯à¨¢ï§ª®© ª ¯ã⨠FN
LD HL,BUF_REZ2.FlexDIRECTORY
LD DE,BUF_REZ2.FLXdir
.L6 LD A,(HL)
AND A
JR Z,.L7
LDI
JR .L6
.L7 LD HL,.DIRFLX
LD BC,.EDIRFLX - .DIRFLX
LDIR
LD (LOADFLX4RUN.NAMEFLX),DE
LD HL,BUF_REZ2.FlexDIRECTORY
SPDSS DSSF.CHDIR
JP C,.L5
LD HL,SetupName
@ -203,7 +216,7 @@ FirstInit
LDI
POP DE
EX DE,HL
LD BC,PANEL.FILEMASK
LD BC,PANEL.FILE_MASK
ADD HL,BC
EX DE,HL
SUB A
@ -219,7 +232,7 @@ FirstInit
LDI
POP DE
EX DE,HL
LD BC,PANEL.FILEMASK
LD BC,PANEL.FILE_MASK
ADD HL,BC
EX DE,HL
SUB A
@ -235,15 +248,18 @@ FirstInit
.L5 POP AF
SETPORT WINSP.CPU1,,0
LD DE,InitExtention
LD A,(RAMPAGES.FNHELP)
LD A,(RAMPAGES.FNREZ3)
LD C,WINSP.CPU1
CALL Resident
LD HL,LeftPanel + PANEL.CURRPATH
LD HL,LeftPanel + PANEL.CURR_PATH
SPDSS DSSF.CHDIR
LD A,0x01
LD (InitFlg),A
RET
.DIRFLX DB "FLX\\"
.EDIRFLX
; ®¡­®¢«¥­¨¥ ¢ â ¡«¨æ¥ ¢ë¡®à  ¤¨áª®¢ ­  ¯ ­¥«¨
SETUP_DISKS LD HL,BgDISKl ; ¤¨áª¨ «¥¢®© ¯ ­¥«¨
LD DE,BgDISKr ; ¤¨áª¨ ¯à ¢®© ¯ ­¥«¨
@ -352,7 +368,7 @@ InitPanTree LD IY,LeftPanel
LD IY,RightPanel
.L1 CALL InitPanelE
InitPanExit LD HL,LeftPanel
LD DE,PANEL.CURRPATH
LD DE,PANEL.CURR_PATH
BIT 7,(HL)
JR NZ,.L2
LD HL,RightPanel
@ -374,8 +390,8 @@ InitPanelE LD A,(InitPanFlg)
LD A,(IY+PANEL.VIEWFLAG)
AND VIEWFLAG.MASK
JP NZ,InitPPanel
LD L,(IY+PANEL.XL)
LD H,(IY+PANEL.XH)
LD L,(IY+PANEL.X)
LD H,(IY+PANEL.X + 1)
LD (PanelN1),HL
INC HL
INC HL
@ -389,23 +405,23 @@ InitPanelE LD A,(InitPanFlg)
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 (IY+PANEL.BAR_X),L
LD (IY+PANEL.BAR_X + 1),H
LD (IY+PANEL.BAR_Y),0xC9
LD (IY+PANEL.BAR_Y + 1),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 (IY+PANEL.BAR_MAX),E
LD (IY+PANEL.BAR_MAX + 1),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
LD (IY+PANEL.FILES_PAGE),0x33
LD (IY+PANEL.FILES_PAGE + 1),0x00
; Šà âª ï ¯ ­¥«ì
MAKEWINDOW WINSUBOBJ.WOBIND
PanelN1 EQU $+1
@ -433,12 +449,12 @@ PanelN6 EQU $+1
POP HL
LD C,0x32
ADD HL,BC
LD (IY+PANEL.BARLFL),L
LD (IY+PANEL.BARLFH),H
LD (IY+PANEL.BAR_ADR_LEFT),L
LD (IY+PANEL.BAR_ADR_LEFT + 1),H
LD C,0x0E
ADD HL,BC
LD (IY+PANEL.BARRTL),L
LD (IY+PANEL.BARRTH),H
LD (IY+PANEL.BAR_ADR_RIGHT),L
LD (IY+PANEL.BAR_ADR_RIGHT + 1),H
JP InitPanEx
NormMouse
@ -449,8 +465,8 @@ Nbar1 DEFW 0, 0,201,209,%0000000000000000,0,PageUp,0
Nbar2 DEFW 0, 0,201,209,%0000000000000000,0,PageDown,0
; <20>®¤à®¡­ ï ¯ ­¥«ì ¨ ¯ ­¥«ì á ¤¥à¥¢®¬
InitPPanel LD L,(IY+PANEL.XL)
LD H,(IY+PANEL.XH)
InitPPanel LD L,(IY+PANEL.X)
LD H,(IY+PANEL.X + 1)
LD (PanelP1),HL
INC HL
INC HL
@ -467,20 +483,20 @@ InitPPanel LD L,(IY+PANEL.XL)
LD (Pbar1),HL
LD (Pbar2),HL
LD (Pfile+2),HL
LD (IY+PANEL.BARXL),L
LD (IY+PANEL.BARXH),H
LD (IY+PANEL.BAR_X),L
LD (IY+PANEL.BAR_X + 1),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
LD (IY+PANEL.BAR_Y),0x44
LD (IY+PANEL.BAR_Y + 1),0x00
LD (IY+PANEL.BAR_MAX),0x85
LD (IY+PANEL.BAR_MAX + 1),0x00
LD (IY+PANEL.FILES_PAGE),0x12
LD (IY+PANEL.FILES_PAGE + 1),0x00
MAKEWINDOW WINSUBOBJ.WOBIND
PanelP1 EQU $+1
W_BORDER 0,59,312,151
@ -507,12 +523,12 @@ PanelP6 EQU $+1
POP HL
LD BC,0x0036
ADD HL,BC
LD (IY+PANEL.BARLFL),L
LD (IY+PANEL.BARLFH),H
LD (IY+PANEL.BAR_ADR_LEFT),L
LD (IY+PANEL.BAR_ADR_LEFT + 1),H
LD BC,0x000E
ADD HL,BC
LD (IY+PANEL.BARRTL),L
LD (IY+PANEL.BARRTH),H
LD (IY+PANEL.BAR_ADR_RIGHT),L
LD (IY+PANEL.BAR_ADR_RIGHT + 1),H
JP InitPanEx
PodrMouse
@ -528,7 +544,7 @@ InitPanEx LD A,(InitPanFlg)
PUSH IY
PUSH IY
POP HL
LD DE,PANEL.CURRPATH
LD DE,PANEL.CURR_PATH
ADD HL,DE
SPDSS DSSF.CHDIR
POP IY
@ -539,7 +555,7 @@ InitPanEx LD A,(InitPanFlg)
POP IY
PUSH IY
POP HL
LD DE,PANEL.CURRPATH
LD DE,PANEL.CURR_PATH
ADD HL,DE
ADD A,'A'
LD (HL),A
@ -560,7 +576,7 @@ InitPanEx LD A,(InitPanFlg)
CALL PrnFileInfo
PUSH IY
POP IX
LD DE,PANEL.BARXL
LD DE,PANEL.BAR_X
ADD IX,DE
CALL InitScrollBar
LD A,(IY+PANEL.VIEWFLAG)
@ -584,12 +600,12 @@ InitPanEx LD A,(InitPanFlg)
PUSH IY
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
LD IY,RightPanel
LD HL,LeftPanel + PANEL.CURRPATH
LD DE,RightPanel + PANEL.CURRPATH
LD HL,LeftPanel + PANEL.CURR_PATH
LD DE,RightPanel + PANEL.CURR_PATH
JR Z,.L3
LD IY,LeftPanel
LD HL,RightPanel + PANEL.CURRPATH
LD DE,LeftPanel + PANEL.CURRPATH
LD HL,RightPanel + PANEL.CURR_PATH
LD DE,LeftPanel + PANEL.CURR_PATH
.L3 SUB A
.L4 LDI
CP (HL)

View File

@ -1,5 +1,5 @@
; LAST UPDATE: 03.06.2025 savelij
; LAST UPDATE: 24.07.2025 savelij
;[]=======================================================================[]
; FLEX NAVIGATOR ;
@ -99,11 +99,15 @@ MouseFlag DB 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
.FNREZ2 DB 0 ; ‘âà ­¨æ  á äã­ªæ¨ï¬¨ FN
.FNFONT DB 0 ; ‘âà ­¨æ  èà¨ä⮢
.FNREZ3 DB 0 ; ‘âà ­¨æ  ¥é¥ ­¥¬­®£® ä㭪権 FN
IFDEF ENABLE.VIEW
.FNVIEW DB 0 ; ‘âà ­¨æ  á FileViewer
ENDIF
IFDEF ENABLE.EDIT
.FNEDIT DB 0 ; ‘âà ­¨æ  á FileEditor
ENDIF
.BufferID DB 0 ; ˆ­¤¥­â¨ä¨ª â®à ¯ ¬ï⨠¯®¤ ¡ãä¥à 
.FLX DB 0 ; ‘âà ­¨æ  ¤«ï ¯®¤£à㧪¨ FLX ¯à®á¬®âà. FLX ã⨫¨â
.LEFTPANEL DB 0 ; ‘âà ­¨æ  ª â «®£  ‹¥¢®© ¯ ­¥«¨
@ -139,7 +143,7 @@ RAMPAGES
DOSError EX AF,AF'
GETPORT WINSP.CPU1
PUSH AF
LD A,(RAMPAGES.FNFUNCT)
LD A,(RAMPAGES.FNREZ2)
SETPORT WINSP.CPU1,,0
EX AF,AF'
CALL DOSErrorR
@ -149,6 +153,17 @@ DOSError EX AF,AF'
EX AF,AF'
RET
;[]----------------------------------------------------------[]
Resident LD (.ResCall),DE
IN B,(C)
PUSH BC
OUT (C),A
CALL 0x0000
.ResCall EQU $-2
POP BC
OUT (C),B
RET
include fnwin.a80
include fnprint.a80
include fninput.a80
@ -317,7 +332,7 @@ LeftPanel: DB 0x80 ;
DB 0
DB "*.*" ; Ma᪠ ¤«ï ä ©«®¢
DB 0x0A DUP 0
DB 0x100 DUP 0 ; <20>ãâì ª ⥪ã饩 ¤¨à¥ªâ®à¨¨
DB PANEL.CURR_PATH_Size DUP 0 ; <20>ãâì ª ⥪ã饩 ¤¨à¥ªâ®à¨¨
RightPanel: DB 0x01 ; ”« £ ¯ ­¥«¨ ¡¨â 7 - ¡¨â ¢ë¤¥«¥­­®áâ¨
; ¡¨â 0 - ­®¬¥à ¯ ­¥«¨
@ -348,7 +363,7 @@ RightPanel: DB 0x01 ;
DB 0
DB "*.*" ; Ma᪠ ¤«ï ä ©«®¢
DB 0x0A DUP 0
DB 0x100 DUP 0 ; <20>ãâì ª ⥪ã饩 ¤¨à¥ªâ®à¨¨
DB PANEL.CURR_PATH_Size DUP 0 ; <20>ãâì ª ⥪ã饩 ¤¨à¥ªâ®à¨¨
;[]=======================================================================[]
@ -370,7 +385,7 @@ RESIDENT
;[]----------------------------------------------------------[]
.CopyFiles: LD DE,CopyFilesR
; resident 2
.FunctResident: LD A,(RAMPAGES.FNFUNCT)
.FunctResident: LD A,(RAMPAGES.FNREZ2)
LD C,WINSP.CPU1
JP Resident
@ -450,13 +465,16 @@ RESIDENT
;[]==========================================================[]
.MarkFile: LD DE,MarkFileR
; resident 3
.HelpResident: LD A,(RAMPAGES.FNHELP)
.HelpResident: LD A,(RAMPAGES.FNREZ3)
LD C,WINSP.CPU1
JP Resident
IF MARK_DIR
.GetDirSize: LD DE,GetDirSizeR
JR .HelpResident
.MkdirsDst LD DE,MkdirsDstR
JR .HelpResident
ENDIF
.UnMarkGroup: LD DE,UnMarkGroupR
@ -498,9 +516,10 @@ END_BLOCK_1:
;[]=======================================================================[]
PHASE 0x4000
; section .text
; MAIN.FNREZ2
START_BLOCK_2
FlexDIRECTORY: DB 0x100 DUP 0
;FlexDIRECTORY: DB 0x100 DUP 0
;FLXdir: DB 0x100 DUP 0
include rez2_fnfunct.a80
include rez2_fnmisc.a80
@ -514,43 +533,9 @@ FlexDIRECTORY: DB 0x100 DUP 0
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
; MAIN.FNFONT
START_BLOCK_4
FONT_RAW_PACK binclude tmp/font_raw.pack
@ -560,11 +545,59 @@ IFFFONT_RAW_END
END_BLOCK_4:
DEPHASE ; 0xC000
;[]-----------------------------------------------------------------------[]
PHASE 0x4000
; MAIN.FNREZ3
START_BLOCK_3
include rez3_fnnext.a80
include rez3_fnmark.a80
; ¡ãä¥à  çâ®¡ë ¯ ¬ïâì ­¥ § ­¨¬ «¨ ¢ EXE ä ©«¥
INIT_VAR 0x8000 ; á ª®­æ  áâà ­¨æë
MINUSVAR fnedit_ext, WorkBuffer_Size ;times 0x400 db 0
MINUSVAR fnview_ext, WorkBuffer_Size ;times 0x400 db 0
MINUSVAR fn_ext, WorkBuffer_Size ;times 0x400 db 0
MINUSVAR DOShistory, 0x200 ;times 0x200 db 0
IFDEF ENABLE.HELP
WINSP_CPU EQU WINSP.CPU3 ; ®ª­® ¯à®¥æ¨à®¢ ­¨ï
WINSP_ADR EQU 0xC000 ;  ¤à¥á ®ª­ 
include plugins/help/help.a80
HelpText: include plugins/help/help_t.a80
HelpTextEnd:
ENDIF
END_BLOCK_3:
DEPHASE ; 0x4000
;[]-----------------------------------------------------------------------[]
IFDEF ENABLE.VIEW
; MAIN.FNVIEW
START_BLOCK_VIEWER
PHASE 0xC000
include plugins/fnviewer/fviewer.a80
DEPHASE ; 0xC000
END_BLOCK_VIEWER
ENDIF
IFDEF ENABLE.EDIT
; MAIN.FNEDIT
START_BLOCK_EDITOR
PHASE 0xC000
include plugins/fneditor/feditor.a80
DEPHASE ; 0xC000
END_BLOCK_EDITOR
ENDIF
;[]-----------------------------------------------------------------------[]
; ç¨áâ® ¤«ï ®â« ¤ª¨
BLOCK1_SIZE EQU END_BLOCK_1 - START_BLOCK_1 ; ®á­®¢­®© ª®¤
BLOCK2_SIZE EQU END_BLOCK_2 - START_BLOCK_2 ; १¨¤¥­â 2
BLOCK3_SIZE EQU END_BLOCK_3 - START_BLOCK_3 ; १¨¤¥­â 3
IFDEF ENABLE.EDIT
EDITOR_SIZE EQU END_BLOCK_EDITOR - START_BLOCK_EDITOR ; । ªâ®à
ENDIF
IFDEF ENABLE.VIEW
VIEWER_SIZE EQU END_BLOCK_VIEWER - START_BLOCK_VIEWER ; ¢ìà
ENDIF
SORT_SIZE EQU END_SORT - START_SORT ; á®àâ¨à®¢é¨ª
TREE_SIZE EQU END_TREE - START_TREE ; à ¡®â  á ¤¥à¥¢®¬

View File

@ -1,5 +1,5 @@
; LAST UPDATE: 27.05.2025 savelij
; LAST UPDATE: 25.07.2025 savelij
;[]==========================================================[]
PullDown: CALL ResInvert
@ -93,15 +93,15 @@ PullInvert: LD L,A
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)
LD L,(IX + FORMTABL.X_MIN)
LD H,(IX + FORMTABL.X_MIN + 1)
LD C,(IX + FORMTABL.Y_MIN)
LD B,(IX + FORMTABL.Y_MIN + 1)
LD A,(IX + FORMTABL.X_MAX)
SUB (IX + FORMTABL.X_MIN)
EX AF,AF'
LD A,(IX + FORMTABL.YMAXL)
SUB (IX + FORMTABL.YMINL)
LD A,(IX + FORMTABL.Y_MAX)
SUB (IX + FORMTABL.Y_MIN)
LD IXH,A
EX AF,AF'
SRL A
@ -268,7 +268,7 @@ MenuView: CALL ResInvert
LD (MenuView.sort5),A
PUSH IY
POP HL
LD BC,PANEL.FILEMASK
LD BC,PANEL.FILE_MASK
ADD HL,BC
LD DE,MenuView.Tfilter
LD C,STRLEN("*.* ");0x0C
@ -406,7 +406,7 @@ CurWTab EQU $-2
RET
TestInvert: LD HL,(CurWTab)
LD DE,FORMTABL.FLAGH
LD DE,FORMTABL.FLAG + 1
ADD HL,DE
LD A,0
MaxLines EQU $-1
@ -554,19 +554,19 @@ ChangeSet: CALL TestInvert
ADD HL,BC
PUSH HL
POP IX
LD C,(IX + FORMTABL.FIRELEFTL) ; § ¯ã᪠¯® «¥¢®© ª­®¯ª¥
LD B,(IX + FORMTABL.FIRELEFTH)
LD C,(IX + FORMTABL.FIRE_LEFT) ; § ¯ã᪠¯® «¥¢®© ª­®¯ª¥
LD B,(IX + FORMTABL.FIRE_LEFT + 1)
LD A,B
OR C
RET Z
BIT FORMTABL.B_EXECNORETLMB,(IX + FORMTABL.FLAGL) ; § ¯ã᪠¡¥§ ¢®§¢à â 
BIT FORMTABL.B_EXECNORETLMB,(IX + FORMTABL.FLAG) ; § ¯ã᪠¡¥§ ¢®§¢à â 
JR Z,.L1
POP AF
.L1 PUSH BC
BIT FORMTABL.B_INV1,(IX + FORMTABL.FLAGL)
BIT FORMTABL.B_INV1,(IX + FORMTABL.FLAG)
CALL NZ,ResSelect1
CALL ResSelect2
BIT FORMTABL.B_CLOSEWIN,(IX + FORMTABL.FLAGH)
BIT FORMTABL.B_CLOSEWIN,(IX + FORMTABL.FLAG + 1)
RET Z
WINDOWCLOSE
RET
@ -792,7 +792,7 @@ NewFilter: CALL ResInvert
W_END
PUSH IY
POP HL
LD BC,PANEL.FILEMASK
LD BC,PANEL.FILE_MASK
ADD HL,BC
LD DE,CurFilt
SUB A
@ -817,7 +817,7 @@ NewFilter: CALL ResInvert
RET NC
PUSH IY
POP HL
LD DE,PANEL.FILEMASK
LD DE,PANEL.FILE_MASK
ADD HL,DE
EX DE,HL
LD HL,CurFilt
@ -944,7 +944,7 @@ ChangeDrv: PUSH IY
JR NZ,.Drive1
LD (IX+0x00),0x00
LD (IX+0x01),0x80
LD A,(IY + PANEL.CURRPATH)
LD A,(IY + PANEL.CURR_PATH)
SUB 'A'
LD (CurDrive),A
CALL SetDriveInv
@ -1032,7 +1032,7 @@ DriveEnter: LD A,(CurDrive)
SetDrive: LD HL,NewDrive
ADD A,'A'
LD (HL),A
LD (IY+PANEL.CURRPATH),0x00
LD (IY+PANEL.CURR_PATH),0x00
WINDOWCLOSE
EX (SP),IY
CALL SetInvert
@ -1056,7 +1056,7 @@ AutoActivatePanel EQU $-1
BIT 7,(HL)
JR NZ,.readDir
LD HL,RightPanel
.readDir: LD DE,PANEL.CURRPATH
.readDir: LD DE,PANEL.CURR_PATH
ADD HL,DE
SPDSS DSSF.CHDIR
POP IY
@ -1078,15 +1078,15 @@ DriveInvert: LD L,A
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)
LD L,(IX + FORMTABL.X_MIN)
LD H,(IX + FORMTABL.X_MIN + 1)
LD C,(IX + FORMTABL.Y_MIN)
LD B,(IX + FORMTABL.Y_MIN + 1)
LD A,(IX + FORMTABL.X_MAX)
SUB (IX + FORMTABL.X_MIN)
EX AF,AF'
LD A,(IX + FORMTABL.YMAXL)
SUB (IX + FORMTABL.YMINL)
LD A,(IX + FORMTABL.Y_MAX)
SUB (IX + FORMTABL.Y_MIN)
LD IXH,A
EX AF,AF'
SRL A

View File

@ -1,5 +1,5 @@
; LAST UPDATE: 20.04.2025 savelij
; LAST UPDATE: 25.07.2025 savelij
;[]----------------------------------------------------------[]
ResFire: LD A,(MouseFlag)
@ -57,27 +57,27 @@ TestCoords: CALL TestCMOS
RET Z
.L4 LD (.PrMousX),HL
LD (.PrMousY),DE
CoordLp LD C,(IX+FORMTABL.XMINL) ; 00
LD B,(IX+FORMTABL.XMINH) ; 01
CoordLp LD C,(IX+FORMTABL.X_MIN) ; 00
LD B,(IX+FORMTABL.X_MIN + 1) ; 01
OR A
SBC HL,BC
ADD HL,BC
JP C,NxtCrds
LD C,(IX+FORMTABL.XMAXL) ; 02
LD B,(IX+FORMTABL.XMAXH) ; 03
LD C,(IX+FORMTABL.X_MAX) ; 02
LD B,(IX+FORMTABL.X_MAX + 1) ; 03
SBC HL,BC
ADD HL,BC
JP NC,NxtCrds
LD C,(IX+FORMTABL.YMINL) ; 04
LD B,(IX+FORMTABL.YMINH) ; 05
LD C,(IX+FORMTABL.Y_MIN) ; 04
LD B,(IX+FORMTABL.Y_MIN + 1) ; 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
LD C,(IX+FORMTABL.Y_MAX) ; 06
LD B,(IX+FORMTABL.Y_MAX + 1) ; 07
EX DE,HL
SBC HL,BC
ADD HL,BC
@ -88,9 +88,9 @@ CoordLp LD C,(IX+FORMTABL.XMINL) ; 00
OR A
LD A,C
JR Z,CoordL1
BIT FORMTABL.B_INV1,(IX+FORMTABL.FLAGL) ; 08
BIT FORMTABL.B_INV1,(IX+FORMTABL.FLAG) ; 08
CALL NZ,SetSelect1
CoordL1 BIT FORMTABL.B_STATICINV,(IX+FORMTABL.FLAGL) ; 08
CoordL1 BIT FORMTABL.B_STATICINV,(IX+FORMTABL.FLAG) ; 08
CALL NZ,SetSelect2
LD C,0x00
RunFlag EQU $-1
@ -105,63 +105,63 @@ RunFlag EQU $-1
JR Z,Execute1
BIT 0,A
JR Z,Execute2
BIT FORMTABL.B_BUTTON,(IX+FORMTABL.FLAGL) ; 08
BIT FORMTABL.B_BUTTON,(IX+FORMTABL.FLAG) ; 08
CALL NZ,PushButton
CCF
RET NC
OR A
BIT FORMTABL.B_WORKBUTTON,(IX+FORMTABL.FLAGL) ; 08 ; à ¡®ç ï ª­®¯ª 
BIT FORMTABL.B_WORKBUTTON,(IX+FORMTABL.FLAG) ; 08 ; à ¡®ç ï ª­®¯ª 
RET NZ
LD C,(IX+FORMTABL.FIRELEFTL) ; 0C ; § ¯ã᪠¯® «¥¢®© ª­®¯ª¥
LD B,(IX+FORMTABL.FIRELEFTH) ; 0D
LD C,(IX+FORMTABL.FIRE_LEFT) ; 0C ; § ¯ã᪠¯® «¥¢®© ª­®¯ª¥
LD B,(IX+FORMTABL.FIRE_LEFT + 1) ; 0D
LD A,B
OR C
JP Z,NxtCrds1
BIT FORMTABL.B_EXECNORETLMB,(IX+FORMTABL.FLAGL) ; 08 ; § ¯ã᪠¡¥§ ¢®§¢à â 
BIT FORMTABL.B_EXECNORETLMB,(IX+FORMTABL.FLAG) ; 08 ; § ¯ã᪠¡¥§ ¢®§¢à â 
JR Z,.L1
POP AF
.L1 PUSH BC
BIT FORMTABL.B_INV1,(IX+FORMTABL.FLAGL) ; 08
BIT FORMTABL.B_INV1,(IX+FORMTABL.FLAG) ; 08
CALL NZ,ResSelect1
CALL ResSelect2
OR A
BIT FORMTABL.B_CLOSEWIN,(IX+FORMTABL.FLAGH) ; 09
BIT FORMTABL.B_CLOSEWIN,(IX+FORMTABL.FLAG + 1) ; 09
RET Z
WINDOWCLOSE
RET
Execute1 LD C,(IX+FORMTABL.FIRENOL) ; 0A ; § ¯ã᪠¡¥§ ®£­ï
LD B,(IX+FORMTABL.FIRENOH) ; 0B
Execute1 LD C,(IX+FORMTABL.FIRE_NOFIRE) ; 0A ; § ¯ã᪠¡¥§ ®£­ï
LD B,(IX+FORMTABL.FIRE_NOFIRE + 1) ; 0B
LD A,B
OR C
JR Z,NxtCrds1
BIT FORMTABL.B_EXECONLY,(IX+FORMTABL.FLAGL) ; 08 ; § ¯ã᪠¡¥§ ¢®§¢à â 
BIT FORMTABL.B_EXECONLY,(IX+FORMTABL.FLAG) ; 08 ; § ¯ã᪠¡¥§ ¢®§¢à â 
JR Z,.L1
POP AF
.L1 PUSH BC
BIT FORMTABL.B_INV1,(IX+FORMTABL.FLAGL) ; 08
BIT FORMTABL.B_INV1,(IX+FORMTABL.FLAG) ; 08
CALL NZ,ResSelect1
CALL ResSelect2
OR A
BIT FORMTABL.B_EXECNOPRESS,(IX+FORMTABL.FLAGL) ; 08
BIT FORMTABL.B_EXECNOPRESS,(IX+FORMTABL.FLAG) ; 08
RET Z
WINDOWCLOSE
RET
Execute2 LD C,(IX+FORMTABL.FIRERIGHTL) ; 0E ; § ¯ã᪠¯® ¯à ¢®© ª­®¯ª¥
LD B,(IX+FORMTABL.FIRERIGHTH) ; 0F
Execute2 LD C,(IX+FORMTABL.FIRE_RIGHT) ; 0E ; § ¯ã᪠¯® ¯à ¢®© ª­®¯ª¥
LD B,(IX+FORMTABL.FIRE_RIGHT + 1) ; 0F
LD A,B
OR C
JR Z,NxtCrds1
BIT FORMTABL.B_EXECNORETRMB,(IX+FORMTABL.FLAGL) ; 08 ; § ¯ã᪠¡¥§ ¢®§¢à â 
BIT FORMTABL.B_EXECNORETRMB,(IX+FORMTABL.FLAG) ; 08 ; § ¯ã᪠¡¥§ ¢®§¢à â 
JR Z,.L1
POP AF
.L1 PUSH BC
BIT FORMTABL.B_INV1,(IX+FORMTABL.FLAGL) ; 08
BIT FORMTABL.B_INV1,(IX+FORMTABL.FLAG) ; 08
CALL NZ,ResSelect1
CALL ResSelect2
OR A
BIT FORMTABL.B_WORKBUTTON,(IX+FORMTABL.FLAGH) ; 09
BIT FORMTABL.B_WORKBUTTON,(IX+FORMTABL.FLAG + 1) ; 09
RET Z
WINDOWCLOSE
RET
@ -171,13 +171,13 @@ NxtCrds LD C,A
OR A
LD A,C
JR Z,NxtCrds0
BIT FORMTABL.B_INV1,(IX+FORMTABL.FLAGL) ; 08
BIT FORMTABL.B_INV1,(IX+FORMTABL.FLAG) ; 08
CALL NZ,ResSelect1
NxtCrds0 BIT FORMTABL.B_STATICINV,(IX+FORMTABL.FLAGL) ; 08
NxtCrds0 BIT FORMTABL.B_STATICINV,(IX+FORMTABL.FLAG) ; 08
CALL NZ,SetSelect2
NxtCrds1 LD BC,FORMTABL.SIZE;0x0010
ADD IX,BC
BIT FORMTABL.B_ENDTABL,(IX+FORMTABL.XMINH) ; ª®­¥æ â ¡«¨æë?
BIT FORMTABL.B_ENDTABL,(IX+FORMTABL.X_MIN + 1) ; ª®­¥æ â ¡«¨æë?
JP Z,CoordLp
OR A
RET
@ -187,10 +187,10 @@ ResMInvert PUSH IX
PUSH DE
PUSH AF
LD BC,FORMTABL.SIZE;0x0010
ResCrds RES FORMTABL.B_FIRENOINV,(IX+FORMTABL.FLAGH) ; 09
RES 6,(IX+FORMTABL.FLAGH) ; 09
ResCrds RES FORMTABL.B_FIRENOINV,(IX+FORMTABL.FLAG + 1) ; 09
RES FORMTABL.B_HZ,(IX+FORMTABL.FLAG + 1) ; 09
ADD IX,BC
BIT FORMTABL.B_ENDTABL,(IX+FORMTABL.XMINH)
BIT FORMTABL.B_ENDTABL,(IX+FORMTABL.X_MIN + 1)
JR Z,ResCrds
POP AF
POP DE
@ -198,22 +198,22 @@ ResCrds RES FORMTABL.B_FIRENOINV,(IX+FORMTABL.FLAGH) ; 09
POP IX
RET
SetSelect1 BIT FORMTABL.B_FIRENOINV,(IX+FORMTABL.FLAGH) ; 09
SetSelect1 BIT FORMTABL.B_FIRENOINV,(IX+FORMTABL.FLAG + 1) ; 09
RET NZ
SET FORMTABL.B_FIRENOINV,(IX+FORMTABL.FLAGH) ; 09
SET FORMTABL.B_FIRENOINV,(IX+FORMTABL.FLAG + 1) ; 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
LD L,(IX+FORMTABL.X_MIN) ; 00
LD H,(IX+FORMTABL.X_MIN + 1) ; 01
LD C,(IX+FORMTABL.Y_MIN) ; 04
LD B,(IX+FORMTABL.Y_MIN + 1) ; 05
LD A,(IX+FORMTABL.X_MAX) ; 02
SUB (IX+FORMTABL.X_MIN) ; 00
EX AF,AF'
LD A,(IX+FORMTABL.YMAXL) ; 06
SUB (IX+FORMTABL.YMINL) ; 04
LD A,(IX+FORMTABL.Y_MAX) ; 06
SUB (IX+FORMTABL.Y_MIN) ; 04
LD IXH,A
EX AF,AF'
SRL A
@ -224,9 +224,9 @@ SetSelect1 BIT FORMTABL.B_FIRENOINV,(IX+FORMTABL.FLAGH) ; 09
PUSH IX
NxCrds1 LD BC,FORMTABL.SIZE;0x0010
ADD IX,BC
BIT FORMTABL.B_ENDTABL,(IX+FORMTABL.XMINH) ; 01 ; ¯à®¢¥àª  ª®­æ  â ¡«¨æë?
BIT FORMTABL.B_ENDTABL,(IX+FORMTABL.X_MIN + 1) ; 01 ; ¯à®¢¥àª  ª®­æ  â ¡«¨æë?
JR NZ,NxCrds2
BIT FORMTABL.B_INV1,(IX+FORMTABL.FLAGL) ; 08
BIT FORMTABL.B_INV1,(IX+FORMTABL.FLAG) ; 08
CALL NZ,ResSelect1
JR NxCrds1
@ -236,21 +236,21 @@ NxCrds2 POP IX
POP AF
RET
ResSelect1 BIT FORMTABL.B_FIRENOINV,(IX+FORMTABL.FLAGH) ; 09
ResSelect1 BIT FORMTABL.B_FIRENOINV,(IX+FORMTABL.FLAG + 1) ; 09
RET Z
RES FORMTABL.B_FIRENOINV,(IX+FORMTABL.FLAGH) ; 09
RES FORMTABL.B_FIRENOINV,(IX+FORMTABL.FLAG + 1) ; 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
LD L,(IX+FORMTABL.X_MIN) ; 00
LD H,(IX+FORMTABL.X_MIN + 1) ; 01
LD C,(IX+FORMTABL.Y_MIN) ; 04
LD B,(IX+FORMTABL.Y_MIN + 1) ; 05
LD A,(IX+FORMTABL.X_MAX) ; 02
SUB (IX+FORMTABL.X_MIN) ; 00
EX AF,AF'
LD A,(IX+FORMTABL.YMAXL) ; 06
SUB (IX+FORMTABL.YMINL) ; 04
LD A,(IX+FORMTABL.Y_MAX) ; 06
SUB (IX+FORMTABL.Y_MIN) ; 04
LD IXH,A
EX AF,AF'
SRL A
@ -262,22 +262,22 @@ ResSelect1 BIT FORMTABL.B_FIRENOINV,(IX+FORMTABL.FLAGH) ; 09
POP IX
RET
SetSelect2 BIT 6,(IX+FORMTABL.FLAGH) ; 09
SetSelect2 BIT FORMTABL.B_HZ,(IX+FORMTABL.FLAG + 1) ; 09
RET NZ
SET 6,(IX+FORMTABL.FLAGH) ; 09
SET FORMTABL.B_HZ,(IX+FORMTABL.FLAG + 1) ; 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
LD L,(IX+FORMTABL.X_MIN) ; 00
LD H,(IX+FORMTABL.X_MIN + 1) ; 01
LD C,(IX+FORMTABL.Y_MIN) ; 04
LD B,(IX+FORMTABL.Y_MIN + 1) ; 05
LD A,(IX+FORMTABL.X_MAX) ; 02
SUB (IX+FORMTABL.X_MIN) ; 00
EX AF,AF'
LD A,(IX+FORMTABL.YMAXL) ; 06
SUB (IX+FORMTABL.YMINL) ; 04
LD A,(IX+FORMTABL.Y_MAX) ; 06
SUB (IX+FORMTABL.Y_MIN) ; 04
LD IXH,A
EX AF,AF'
SRL A
@ -295,25 +295,25 @@ ResSelect2 PUSH HL
PUSH IX
LD IX,(TestCoords.PrvTabl)
LD BC,FORMTABL.SIZE;0x0010
NxCrds3 BIT FORMTABL.B_STATICINV,(IX+FORMTABL.FLAGL) ; 08
NxCrds3 BIT FORMTABL.B_STATICINV,(IX+FORMTABL.FLAG) ; 08
JR NZ,ResSel22
ADD IX,BC
BIT FORMTABL.B_ENDTABL,(IX+FORMTABL.XMINH) ; 01 ; ¯à®¢¥àª  ª®­æ  â ¡«¨æë?
BIT FORMTABL.B_ENDTABL,(IX+FORMTABL.X_MIN + 1) ; 01 ; ¯à®¢¥àª  ª®­æ  â ¡«¨æë?
JR NZ,ResSel2E
JR NxCrds3
ResSel22 BIT 6,(IX+FORMTABL.FLAGH) ; 09
ResSel22 BIT FORMTABL.B_HZ,(IX+FORMTABL.FLAG + 1) ; 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
RES FORMTABL.B_HZ,(IX+FORMTABL.FLAG + 1) ; 09
LD L,(IX+FORMTABL.X_MIN) ; 00
LD H,(IX+FORMTABL.X_MIN + 1) ; 01
LD C,(IX+FORMTABL.Y_MIN) ; 04
LD B,(IX+FORMTABL.Y_MIN + 1) ; 05
LD A,(IX+FORMTABL.X_MAX) ; 02
SUB (IX+FORMTABL.X_MIN) ; 00
EX AF,AF'
LD A,(IX+FORMTABL.YMAXL) ; 06
SUB (IX+FORMTABL.YMINL) ; 04
LD A,(IX+FORMTABL.Y_MAX) ; 06
SUB (IX+FORMTABL.Y_MIN) ; 04
LD IXH,A
EX AF,AF'
SRL A
@ -327,15 +327,15 @@ ResSel2E POP IX
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 L,(IX+FORMTABL.X_MIN) ; 00
LD H,(IX+FORMTABL.X_MIN + 1) ; 01
LD E,(IX+FORMTABL.Y_MIN) ; 04
LD D,(IX+FORMTABL.Y_MIN + 1) ; 05
LD A,(IX+FORMTABL.X_MAX) ; 02
SUB (IX+FORMTABL.X_MIN) ; 00
LD C,A
LD A,(IX+FORMTABL.YMAXL) ; 06
SUB (IX+FORMTABL.YMINL) ; 04
LD A,(IX+FORMTABL.Y_MAX) ; 06
SUB (IX+FORMTABL.Y_MIN) ; 04
LD B,A
PUSH HL
PUSH DE
@ -352,27 +352,27 @@ PushLp1
JR Z,PushButtEx
BIT 0,A
JR Z,PushButtEx
LD C,(IX+FORMTABL.XMINL) ; 00
LD B,(IX+FORMTABL.XMINH) ; 01
LD C,(IX+FORMTABL.X_MIN) ; 00
LD B,(IX+FORMTABL.X_MIN + 1) ; 01
OR A
SBC HL,BC
ADD HL,BC
JR C,PushButtEx
LD C,(IX+FORMTABL.XMAXL) ; 02
LD B,(IX+FORMTABL.XMAXH) ; 03
LD C,(IX+FORMTABL.X_MAX) ; 02
LD B,(IX+FORMTABL.X_MAX + 1) ; 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
LD C,(IX+FORMTABL.Y_MIN) ; 04
LD B,(IX+FORMTABL.Y_MIN + 1) ; 05
OR A
SBC HL,BC
ADD HL,BC
JR C,PushButtEx
LD C,(IX+FORMTABL.YMAXL) ; 06
LD B,(IX+FORMTABL.YMAXH) ; 07
LD C,(IX+FORMTABL.Y_MAX) ; 06
LD B,(IX+FORMTABL.Y_MAX + 1) ; 07
SBC HL,BC
CCF
JR C,PushButtEx
@ -394,10 +394,10 @@ PushButtEx POP BC
POP HL
RET
TestRun BIT FORMTABL.B_WORKBUTTON,(IX+FORMTABL.FLAGL) ; 08
TestRun BIT FORMTABL.B_WORKBUTTON,(IX+FORMTABL.FLAG) ; 08
RET Z
LD C,(IX+FORMTABL.FIRELEFTL) ; 0C
LD B,(IX+FORMTABL.FIRELEFTH) ; 0D
LD C,(IX+FORMTABL.FIRE_LEFT) ; 0C
LD B,(IX+FORMTABL.FIRE_LEFT + 1) ; 0D
PUSH BC
RET

View File

@ -1,9 +1,9 @@
; LAST UPDATE: 27.04.2025 savelij
; LAST UPDATE: 24.07.2025 savelij
;[]----------------------------------------------------------[]
PrintDisks LD L,(IY + PANEL.XL)
LD H,(IY + PANEL.XH)
PrintDisks LD L,(IY + PANEL.X)
LD H,(IY + PANEL.X + 1)
INC HL
INC HL
LD (.DiskX1),HL
@ -17,7 +17,7 @@ PrintDisks LD L,(IY + PANEL.XL)
LD (.DISK),A
PUSH IY
POP HL
LD DE,PANEL.CURRPATH
LD DE,PANEL.CURR_PATH
ADD HL,DE
LD A,(HL)
SUB 'A'
@ -71,8 +71,8 @@ PrintPath BIT PANELFLAG.B_PRNDOSPATH,(IY + PANEL.PANELFLAG)
.L1 LD (.HeadCol),A
LD A,C
LD (.PathCol),A
LD L,(IY + PANEL.XL)
LD H,(IY + PANEL.XH)
LD L,(IY + PANEL.X)
LD H,(IY + PANEL.X + 1)
LD (.PanelHX),HL
MAKEWINDOW WINSUBOBJ.WOBIND
W_FILL 0,46,310,12,COLORI.BLACK
@ -82,7 +82,7 @@ PrintPath BIT PANELFLAG.B_PRNDOSPATH,(IY + PANEL.PANELFLAG)
PUSH IY
POP HL
LD BC,PANEL.CURRPATH
LD BC,PANEL.CURR_PATH
ADD HL,BC
PUSH HL
LD DE,WorkBuffer
@ -121,7 +121,7 @@ PrintPath BIT PANELFLAG.B_PRNDOSPATH,(IY + PANEL.PANELFLAG)
;[]----------------------------------------------------------[]
PrintDOSPath PUSH IY
POP HL
LD BC,PANEL.CURRPATH
LD BC,PANEL.CURR_PATH
ADD HL,BC
LD DE,WorkBuffer
SUB A
@ -153,8 +153,8 @@ PrintDOSPath PUSH IY
;[]----------------------------------------------------------[]
PrnFileInfo BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
JP NZ,PrnTreeInfo ;Tree
LD A,(IY + PANEL.MFL)
OR (IY + PANEL.MFH)
LD A,(IY + PANEL.FILES_MARK)
OR (IY + PANEL.FILES_MARK + 1)
JP NZ,PrnSelInfo
GETPORT WINSP.CPU1
PUSH AF
@ -164,10 +164,10 @@ PrnFileInfo BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
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)
LD L,(IY + PANEL.FIRST_FILE)
LD H,(IY + PANEL.FIRST_FILE + 1)
LD E,(IY + PANEL.CURR_FILE)
LD D,(IY + PANEL.CURR_FILE + 1)
ADD HL,DE
ADD HL,HL ; *2
ADD HL,HL ; *4
@ -236,8 +236,8 @@ PrnFileInfo BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
INC DE
CALL GetTime
PrntFI LD HL,WorkBuffer + FileHDR.SIZE;0x18
LD E,(IY+PANEL.XL)
LD D,(IY+PANEL.XH)
LD E,(IY+PANEL.X)
LD D,(IY+PANEL.X + 1)
INC DE
INC DE
INC DE
@ -323,7 +323,7 @@ PrnTreeInfo
EX DE,HL
PUSH IY
POP HL
LD BC,PANEL.CURRPATH
LD BC,PANEL.CURR_PATH
ADD HL,BC
INC HL
INC HL
@ -338,18 +338,18 @@ PrnTreeInfo
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
PrnSelInfo LD L,(IY+PANEL.BYTES_MARK)
LD H,(IY+PANEL.BYTES_MARK + 1)
LD C,(IY+PANEL.BYTES_MARK + 2)
LD B,(IY+PANEL.BYTES_MARK + 3)
LD A,(IY+PANEL.BYTES_MARK_H) ; [ ] FAT32
LD DE,WorkBuffer
CALL ConvNumTxt40 ; [ ] fat32
LD HL,CrSizeT
LD BC,0x000A
LDIR
LD L,(IY+PANEL.MFL)
LD H,(IY+PANEL.MFH)
LD L,(IY+PANEL.FILES_MARK)
LD H,(IY+PANEL.FILES_MARK + 1)
CALL ConvNumTxt16
LD HL,CrSelT
LD BC,0x000F
@ -379,8 +379,8 @@ PrnSelInfo LD L,(IY+PANEL.MBL1)
.PrSelI2 SUB A
LD (DE),A
LD HL,WorkBuffer+0x100
LD E,(IY+PANEL.XL)
LD D,(IY+PANEL.XH)
LD E,(IY+PANEL.X)
LD D,(IY+PANEL.X + 1)
INC DE
INC DE
INC DE
@ -393,11 +393,11 @@ CrSizeT DEFB " bytes in "
CrSelT DEFB " selected files"
;[]----------------------------------------------------------[]
PrintDIR LD A,(IY+PANEL.EFL)
OR (IY+PANEL.EFH)
PrintDIR LD A,(IY+PANEL.FILES_ALL)
OR (IY+PANEL.FILES_ALL + 1)
JR NZ,PrnDIRECT
LD L,(IY+PANEL.XL)
LD H,(IY+PANEL.XH)
LD L,(IY+PANEL.X)
LD H,(IY+PANEL.X + 1)
INC HL
INC HL
LD (.ClrDIR1),HL
@ -432,8 +432,8 @@ PrnDIRECT BIT VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG)
LD A,(RAMPAGES.RIGHTPANEL)
.L1
SETPORT WINSP.CPU1,,0
LD L,(IY+PANEL.FFL)
LD H,(IY+PANEL.FFH)
LD L,(IY+PANEL.FIRST_FILE)
LD H,(IY+PANEL.FIRST_FILE + 1)
ADD HL,HL ; *2
ADD HL,HL ; *4
ADD HL,HL ; *8
@ -526,8 +526,8 @@ PrintFULL PUSH IY
LD A,(RAMPAGES.RIGHTPANEL)
.L1
SETPORT WINSP.CPU1,,0
LD L,(IY+PANEL.FFL)
LD H,(IY+PANEL.FFH)
LD L,(IY+PANEL.FIRST_FILE)
LD H,(IY+PANEL.FIRST_FILE + 1)
ADD HL,HL ; *2
ADD HL,HL ; *4
ADD HL,HL ; *8
@ -664,8 +664,8 @@ PrintTREE
DJNZ .L2
POP DE
LD HL,0x4000
LD C,(IY+PANEL.FFL)
LD B,(IY+PANEL.FFH)
LD C,(IY+PANEL.FIRST_FILE)
LD B,(IY+PANEL.FIRST_FILE + 1)
LD A,B
OR C
JR Z,.PrDIRb2
@ -1069,8 +1069,8 @@ 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)
PrnInvert LD A,(IY + PANEL.FILES_ALL)
OR (IY + PANEL.FILES_ALL + 1)
RET Z
BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
JP NZ,PrnTreeInv
@ -1083,10 +1083,10 @@ PrnInvert LD A,(IY + PANEL.EFL)
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)
LD L,(IY + PANEL.FIRST_FILE)
LD H,(IY + PANEL.FIRST_FILE + 1)
LD E,(IY + PANEL.CURR_FILE)
LD D,(IY + PANEL.CURR_FILE + 1)
ADD HL,DE
ADD HL,HL ; *2
ADD HL,HL ; *4
@ -1109,8 +1109,8 @@ PrnInvert LD A,(IY + PANEL.EFL)
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 L,(IY + PANEL.CURR_FILE)
LD H,(IY + PANEL.CURR_FILE + 1)
LD C,L
LD B,H
ADD HL,HL
@ -1134,8 +1134,8 @@ PrnInvert LD A,(IY + PANEL.EFL)
DEC HL
JP InvertRectan
PrnInvertP LD L,(IY + PANEL.CFL)
LD H,(IY + PANEL.CFH)
PrnInvertP LD L,(IY + PANEL.CURR_FILE)
LD H,(IY + PANEL.CURR_FILE + 1)
ADD HL,HL
ADD HL,HL
ADD HL,HL
@ -1159,10 +1159,10 @@ PrnTreeInv PUSH HL
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)
LD L,(IY + PANEL.FIRST_FILE)
LD H,(IY + PANEL.FIRST_FILE + 1)
LD E,(IY + PANEL.CURR_FILE)
LD D,(IY + PANEL.CURR_FILE + 1)
ADD HL,DE
ADD HL,HL ; *2
ADD HL,HL ; *4
@ -1194,8 +1194,8 @@ PrnTreeInv PUSH HL
JR Z,.L3
LD E,C
LD D,L
.L3 LD L,(IY+PANEL.CFL)
LD H,(IY+PANEL.CFH)
.L3 LD L,(IY+PANEL.CURR_FILE)
LD H,(IY+PANEL.CURR_FILE + 1)
ADD HL,HL
ADD HL,HL
ADD HL,HL

View File

@ -1,5 +1,5 @@
; LAST UPDATE: 24.06.2025 savelij
; LAST UPDATE: 24.07.2025 savelij
;[]----------------------------------------------------------[]
ReadDIR BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
@ -18,9 +18,9 @@ ReadDIR BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
SETPORT WINSP.CPU3,,0
PUSH IY
POP HL
LD BC,PANEL.EFL
LD BC,PANEL.FILES_ALL
ADD HL,BC
LD B,PANEL.FILEMASK - PANEL.EFL
LD B,PANEL.FILE_MASK - PANEL.FILES_ALL
.L5 LD (HL),0
INC HL
DJNZ .L5
@ -49,8 +49,8 @@ ReadDIR BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
DJNZ .L4
POP AF
SETPORT WINSP.CPU3,,0
LD (IY + PANEL.EFL),E ;EQUIP FIL
LD (IY + PANEL.EFH),D
LD (IY + PANEL.FILES_ALL),E ;EQUIP FIL
LD (IY + PANEL.FILES_ALL + 1),D
LD A,(IY + PANEL.SORTFLAG)
AND SORTFLAG.MASK
JP NZ,SortDIR

153
fnsys.a80
View File

@ -1,10 +1,11 @@
; LAST UPDATE: 08.03.2025 savelij
; LAST UPDATE: 25.07.2025 savelij
;[]-----------------------------------------------------------[]
;<3B>à®æ¥¤ãà  ã¬­®¦¥­¨ï (8*8bit)
;<3B>  ¢å®¤: E*C
;<3B>  ¢ë室:HL-१ã«ìâ â
; <20>à®æ¥¤ãà  ã¬­®¦¥­¨ï (8*8bit)
; <20>  ¢å®¤: E * C
; <20>  ¢ë室:
; HL - १ã«ìâ â
Mult8 SUB A
LD L,A
LD H,A
@ -21,9 +22,10 @@ Mult8 SUB A
.L2 DJNZ .L1
RET
;<3B>à®æ¥¤ãà  ã¬­®¦¥­¨ï (16*8bit)
;<3B>  ¢å®¤: DE*C
;<3B>  ¢ë室:A+HL-१ã«ìâ â
; <20>à®æ¥¤ãà  ã¬­®¦¥­¨ï (16*8bit)
; <20>  ¢å®¤: DE * C
; <20>  ¢ë室:
; AHL - १ã«ìâ â
Mult16X8 SUB A
LD L,A
LD H,A
@ -42,9 +44,10 @@ Mult16X8 SUB A
.L2 DJNZ .L1
RET
;<3B>à®æ¥¤ãà  ã¬­®¦¥­¨ï (16*16bit)
;<3B>  ¢å®¤: DE*BC
;<3B>  ¢ë室:HL-१ã«ìâ â
; <20>à®æ¥¤ãà  ã¬­®¦¥­¨ï (16*16bit)
; <20>  ¢å®¤: DE * BC
; <20>  ¢ë室:
; HL - १ã«ìâ â
Mult16 LD HL,0x0000
LD A,0x10
.L1 RR B
@ -57,9 +60,10 @@ Mult16 LD HL,0x0000
JR NZ,.L1
RET
;<3B>à®æ¥¤ãà  ã¬­®¦¥­¨ï (32bit)
;<3B>  ¢å®¤: DE*BC
;<3B>  ¢ë室:HL+DE-१ã«ìâ â
; <20>à®æ¥¤ãà  ã¬­®¦¥­¨ï (32bit)
; <20>  ¢å®¤: DE * BC
; <20>  ¢ë室:
; HLDE - १ã«ìâ â
Mult16X16 PUSH IX
EX DE,HL
LD E,0x00
@ -82,9 +86,10 @@ Mult16X16 PUSH IX
POP IX
RET
;<3B>à®æ¥¤ãà  ã¬­®¦¥­¨ï (32bit)
;<3B>  ¢å®¤: HL+DE*BC
;<3B>  ¢ë室:HL+DE-१ã«ìâ â
; <20>à®æ¥¤ãà  ã¬­®¦¥­¨ï (32bit)
; <20>  ¢å®¤: HLDE * BC
; <20>  ¢ë室:
; HLDE - १ã«ìâ â
Mult32 PUSH IX
LD IX,0x0000
LD A,0x20
@ -104,10 +109,11 @@ Mult32 PUSH IX
POP IX
RET
;<3B>à®æ¥¤ãà  ¤¥«¥­¨ï (16bit)
;<3B>  ¢å®¤: BC/DE
;<3B>  ¢ë室:BC-१ã«ìâ â
; HL-®áâ â®ª
; <20>à®æ¥¤ãà  ¤¥«¥­¨ï (16bit)
; <20>  ¢å®¤: BC / DE
; <20>  ¢ë室:
; BC - १ã«ìâ â
; HL - ®áâ â®ª
Divis16X16 LD A,D
OR E
RET Z
@ -124,7 +130,8 @@ Divis16X16 LD A,D
RL C
RLA
LD B,A
RET
RET
.L3 RL C
RLA
ADC HL,HL
@ -137,10 +144,11 @@ Divis16X16 LD A,D
LD B,A
RET
;<3B>à®æ¥¤ãà  ¤¥«¥­¨ï (24x16bit)
;<3B>  ¢å®¤: H+L+C/DE
;<3B>  ¢ë室:A -१ã«ìâ â
; HL-®áâ â®ª
; <20>à®æ¥¤ãà  ¤¥«¥­¨ï (24x16bit)
; <20>  ¢å®¤: HLC / DE
; <20>  ¢ë室:
; A -१ã«ìâ â
; HL - ®áâ â®ª
Divis24X16 LD A,D
CPL
LD D,A
@ -162,7 +170,8 @@ Divis24X16 LD A,D
INC A
.L5 POP HL
DJNZ .L1
RET
RET
.L2 ADC A,A
JR NC,.L3
INC HL
@ -170,10 +179,11 @@ Divis24X16 LD A,D
DJNZ .L1
RET
;<3B>à®æ¥¤ãà  ¤¥«¥­¨ï 32/16bit=16bit
;<3B>  ¢å®¤: HL+DE/BC
;<3B>  ¢ë室:DE-१ã«ìâ â
; HL-®áâ â®ª
; <20>à®æ¥¤ãà  ¤¥«¥­¨ï 32/16bit=16bit
; <20>  ¢å®¤: HLDE / BC
; <20>  ¢ë室:
; DE - १ã«ìâ â
; HL - ®áâ â®ª
Divis32X16 LD A,0x10
.L2 EX DE,HL
ADD HL,HL
@ -184,16 +194,18 @@ Divis32X16 LD A,0x10
ADD HL,BC
DEC A
JR NZ,.L2
RET
RET
.L1 INC DE
DEC A
JR NZ,.L2
RET
;<3B>à®æ¥¤ãà  ¤¥«¥­¨ï 32/16bit=32bit
;<3B>  ¢å®¤: HL+DE/BC
;<3B>  ¢ë室:HL+DE-१ã«ìâ â
; BC-®áâ â®ª
; <20>à®æ¥¤ãà  ¤¥«¥­¨ï 32/16bit=32bit
; <20>  ¢å®¤: HLDE/BC
; <20>  ¢ë室:
; HLDE - १ã«ìâ â
; BC-®áâ â®ª
Divis32 PUSH IX
LD IXL,E
LD IXH,D
@ -221,7 +233,7 @@ Divis32 PUSH IX
;[]===================================================================[]
;<3B>  ¢å®¤:
; A:BC:HL - ç¨á«® 40 ¡¨â
; ABCHL - ç¨á«® 40 ¡¨â
; DE - ¡ãä¥à
ConvNumTxt40: PUSH IX
LD IX,ConvertFlg
@ -259,7 +271,7 @@ ConvNumTxt40: PUSH IX
;[]-----------------------------------------------------------[]
;Š®­¢¥àâ¥à ç¨á«  32¡¨â ¢ ⥪áâ
;<3B>  ¢å®¤:
; BC+HL - ç¨á«® 32 ¡¨â
; BCHL - ç¨á«® 32 ¡¨â
; DE - ¡ãä¥à
ConvNumTxt32 PUSH IX
LD IX,ConvertFlg
@ -317,10 +329,10 @@ ConvNumTxt32_Shared:
INC DE
RET
;Š®­¢¥àâ¥à ç¨á«  16¡¨â ¢ ⥪áâ
;<3B>  ¢å®¤:
; HL - ç¨á«® 16 ¡¨â
; DE - ¡ãä¥à
; Š®­¢¥àâ¥à ç¨á«  16¡¨â ¢ ⥪áâ
; <EFBFBD>  ¢å®¤:
; HL - ç¨á«® 16 ¡¨â
; DE - ¡ãä¥à
ConvNumTxt16 PUSH IX
PUSH BC
LD IX,ConNumbExit
@ -343,10 +355,10 @@ ConvNumTxt16 PUSH IX
POP IX
RET
;Š®­¢¥àâ¥à ç¨á«  8¡¨â ¢ ⥪áâ
;<3B>  ¢å®¤:
; A - ç¨á«® 8 ¡¨â
; DE - ¡ãä¥à
; Š®­¢¥àâ¥à ç¨á«  8¡¨â ¢ ⥪áâ
; <EFBFBD>  ¢å®¤:
; A - ç¨á«® 8 ¡¨â
; DE - ¡ãä¥à
ConvNumTxt8 PUSH IX
PUSH BC
LD IX,ConNumbExit
@ -434,12 +446,12 @@ ConNumbExit: CP "0"
RET
;[]-----------------------------------------------------------[]
;Š®­¢¥àâ¥à ⥪áâ  ¢ ç¨á«® 32 ¡¨â
;<3B>  ¢å®¤:
; DE - ⥪áâ
;<3B>  ¢ë室:
; HL+IX - ç¨á«®
; CY - ®è¨¡ª 
; Š®­¢¥àâ¥à ⥪áâ  ¢ ç¨á«® 32 ¡¨â
; <EFBFBD>  ¢å®¤:
; DE - ⥪áâ
; <EFBFBD>  ¢ë室:
; HLIX - ç¨á«®
; CY - ®è¨¡ª 
ConvTxtNum32 LD IX,0x0000
LD HL,0x0000
ConvTN1 LD A,(DE)
@ -476,12 +488,12 @@ ConvTN1 LD A,(DE)
RET C
JR ConvTN1
;Š®­¢¥àâ¥à ⥪áâ  ¢ ç¨á«® 16 ¡¨â
;<3B>  ¢å®¤:
; DE - ⥪áâ
;<3B>  ¢ë室:
; HL - ç¨á«®
; CY - ®è¨¡ª 
; Š®­¢¥àâ¥à ⥪áâ  ¢ ç¨á«® 16 ¡¨â
; <EFBFBD>  ¢å®¤:
; DE - ⥪áâ
; <EFBFBD>  ¢ë室:
; HL - ç¨á«®
; CY - ®è¨¡ª 
ConvTxtNum16 LD HL,0x0000
ConvTN2 LD A,(DE)
CP 0x21
@ -584,21 +596,10 @@ LenUp LD A,0x00
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. <20>ã«ì ª®¯¨àã¥âáï ⮦¥.
; (hl) -> (de)
ConcatString: ex hl,de
STRCAT: ex hl,de
.loop: ld a,(hl)
or a
jr z,.end
@ -610,10 +611,10 @@ ConcatString: ex hl,de
;[]----------------------------------------------------------[]
; Š®¯¨à®¢ ­¨¥ áâப¨ ¤® ­ã«ï. <20>ã«ì ª®¯¨àã¥âáï ⮦¥.
; (hl) -> (de)
CopyString: ld a,(hl)
STRCPY: ld a,(hl)
ldi
or a
jr nz,CopyString
jr nz,STRCPY
dec de
ret
@ -642,21 +643,21 @@ CopyWord: ld bc, 0x20FF
; "c" - string1 < string2
; ¨­ ç¥ - string1 > string2
;[]----------------------------------------------------------[]
CompareStrings: ld a,(de)
STRCMP: ld a,(de)
cp (hl)
ret nz
inc hl
inc de
ld a,(hl)
or a
jr nz,CompareStrings ; ®¡à §¥æ ­¥ § ª®­ç¥­
jr nz,STRCMP ; ®¡à §¥æ ­¥ § ª®­ç¥­
ld a,(de)
cp (hl)
ret
;<3B>®¨áª ª®­æ  á«®¢  ¨«¨ áâப¨
;> hl - áâப 
;< hl - ª®­¥æ áâப¨ ¨«¨
; <EFBFBD>®¨áª ª®­æ  á«®¢  ¨«¨ áâப¨
; > hl - áâப 
; < hl - ª®­¥æ áâப¨ ¨«¨
SkipWord: ld b,0x20
.loop: ld a,(hl)
inc hl

View File

@ -1,14 +1,14 @@
; LAST UPDATE: 28.05.2025 savelij
; LAST UPDATE: 24.07.2025 savelij
MAX_LEVEL_DIR EQU 21
;[]----------------------------------------------------------[]
ReadTreeR PUSH IY
POP HL
LD BC,PANEL.EFL
LD BC,PANEL.FILES_ALL
ADD HL,BC
LD B,PANEL.FILEMASK - PANEL.EFL
LD B,PANEL.FILE_MASK - PANEL.FILES_ALL
.LL1 LD (HL),0
INC HL
DJNZ .LL1
@ -196,8 +196,8 @@ ReadTreeR PUSH IY
LD A,C
SETPORT WINSP.CPU1,,0
LD HL,(TreeDIRS)
LD (IY+PANEL.EFL),L ; EQUIP FIL
LD (IY+PANEL.EFH),H
LD (IY+PANEL.FILES_ALL),L ; EQUIP FIL
LD (IY+PANEL.FILES_ALL + 1),H
PUSH IY
GETPORT WINSP.CPU3
PUSH AF
@ -293,8 +293,8 @@ LoadTreeR EX AF,AF'
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
.L5 LD (IY+PANEL.FILES_ALL),C ; EQUIP FILES
LD (IY+PANEL.FILES_ALL + 1),B
BIT PANELFLAG.B_PRNDOSPATH,(IY+PANEL.PANELFLAG)
LD A,1
JR NZ,.L6
@ -304,7 +304,7 @@ LoadTreeR EX AF,AF'
SETPORT WINSP.CPU3,,0
.TreeOkey PUSH IY
POP HL
LD DE,PANEL.CURRPATH
LD DE,PANEL.CURR_PATH
ADD HL,DE
INC HL
INC HL
@ -504,10 +504,10 @@ TestTreeR BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
.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)
LD L,(IY+PANEL.FIRST_FILE)
LD H,(IY+PANEL.FIRST_FILE + 1)
LD E,(IY+PANEL.CURR_FILE)
LD D,(IY+PANEL.CURR_FILE + 1)
ADD HL,DE
ADD HL,HL
ADD HL,HL
@ -553,10 +553,10 @@ MakeTreePathR
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)
LD L,(IY+PANEL.FIRST_FILE)
LD H,(IY+PANEL.FIRST_FILE + 1)
LD E,(IY+PANEL.CURR_FILE)
LD D,(IY+PANEL.CURR_FILE + 1)
ADD HL,DE
ADD HL,HL
ADD HL,HL
@ -723,12 +723,12 @@ FindTreeDIRR
SBC HL,BC
JR NC,.L13
LD HL,0
.L13 LD (IX+PANEL.FFL),L
LD (IX+PANEL.FFH),H
.L13 LD (IX+PANEL.FIRST_FILE),L
LD (IX+PANEL.FIRST_FILE + 1),H
EX DE,HL
OR A
SBC HL,DE
LD (IX+PANEL.CFL),L
LD (IX+PANEL.CFH),H
LD (IX+PANEL.CURR_FILE),L
LD (IX+PANEL.CURR_FILE + 1),H
OR A
RET

View File

@ -1,5 +1,5 @@
; LAST UPDATE: 30.03.2025 savelij
; LAST UPDATE: 17.07.2025 savelij
;[]----------------------------------------------------------[]
;<3B>à®æ¥¤ãà  ®âç¨áª¨ 0 íªà ­ 
@ -132,29 +132,29 @@ MakeWindow: EX (SP),IY
PUSH HL
LD A,(IY+0x00) ; ⥪ã騩 ¯®¤®¡'¥ªâ ®ª­ 
INC IY
CP WINSUBOBJ.TEXT;0x01 ; ⥪á⮢ ï áâப 
CP WINSUBOBJ.TEXT ; ⥪á⮢ ï áâப 
JP Z,PutTxtLine
CP WINSUBOBJ.FILL;0x02 ; ¬¥áâ® ¤«ï § £®«®¢ª 
CP WINSUBOBJ.FILL ; ¬¥áâ® ¤«ï § £®«®¢ª 
JP Z,PutHeadPlc
CP WINSUBOBJ.BORDER;0x03 ; 㣫㡫¥­¨¥ ¢ ®ª­¥
CP WINSUBOBJ.BORDER ; 㣫㡫¥­¨¥ ¢ ®ª­¥
JP Z,PutDRectan
CP WINSUBOBJ.BUTTON;0x04 ; ª­®¯ª 
CP WINSUBOBJ.BUTTON ; ª­®¯ª 
JP Z,PutURectan
CP WINSUBOBJ.BUTTONTEXT;0x05 ; ª­®¯ª  á ⥪á⮬
CP WINSUBOBJ.BUTTONTEXT ; ª­®¯ª  á ⥪á⮬
JP Z,PutButton
CP WINSUBOBJ.HORIZLINE;0x06 ; £®à¨§®­â «ì­ ï «¨­¨ï
CP WINSUBOBJ.HORIZLINE ; £®à¨§®­â «ì­ ï «¨­¨ï
JP Z,PutHorizLine
CP WINSUBOBJ.VERTICLINE;0x07 ; ¢¥à⨪ «ì­ ï «¨­¨ï
CP WINSUBOBJ.VERTICLINE ; ¢¥à⨪ «ì­ ï «¨­¨ï
JP Z,PutVertLine
CP WINSUBOBJ.ICONLEFTARROW;0x08 ; ¨ª®­ª  "áâ५ª  ¢«¥¢®"
CP WINSUBOBJ.ICONLEFTARROW ; ¨ª®­ª  "áâ५ª  ¢«¥¢®"
JP Z,PutSBleft
CP WINSUBOBJ.ICONRIGHTARROW;0x09 ; ¨ª®­ª  "áâ५ª  ¢¯à ¢®"
CP WINSUBOBJ.ICONRIGHTARROW ; ¨ª®­ª  "áâ५ª  ¢¯à ¢®"
JP Z,PutSBright
CP WINSUBOBJ.ICONUPARROW;0x0A ; ¨ª®­ª  "áâ५ª  ¢¢¥àå"
CP WINSUBOBJ.ICONUPARROW ; ¨ª®­ª  "áâ५ª  ¢¢¥àå"
JP Z,PutSBup
CP WINSUBOBJ.ICONDOWNARROW;0x0B ; ¨ª®­ª  "áâ५ª  ¢­¨§"
CP WINSUBOBJ.ICONDOWNARROW ; ¨ª®­ª  "áâ५ª  ¢­¨§"
JP Z,PutSBdown
CP WINSUBOBJ.RESTOREWIN;0x7F ; ¢®ááâ ­®¢«¥­¨¥ ç á⨠íªà ­ 
CP WINSUBOBJ.RESTOREWIN ; ¢®ááâ ­®¢«¥­¨¥ ç á⨠íªà ­ 
JP Z,RestoreWindow
CP WINSUBOBJ.ADRTEXT
JP Z,PutAdrTxtLine
@ -171,14 +171,14 @@ MakeWindow: EX (SP),IY
;--------------------------------------------------------------
; Ž¡« áâì ¤ ­­ëå ®ª­ 
.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
.PositX DW 0 ;  ¤à¥á X ª®®à¤¨­ âë ®ª­ 
.PositY DW 0 ; Y ª®®à¤¨­ â  ®ª­ 
.LenX DW 0 ; ¤«¨­  ®ª­  X/2
.LenY DW 0 ; ¤«¨­  ®ª­  Y
.Free DW 0
.Open DB 0 ; Š®«-¢® ®âªàëâëå ®ª®­
.Type DB 0
.Buffer DB 0x40 DUP 0
;--------------------------------------------------------------
; <20>à®æ¥¤ãà  á®åà ­¥­¨ï ¯àאַ㣮«ì­®© ¯«®áª®á⨠¢ ¡ãä¥à
@ -440,20 +440,20 @@ PutRectan HALT
SETPORT WINSP.CPU1,,0
RET
; <20>¥ç âì ⥪á⮢®© áâப¨ ¯® 㪠§ ­­®¬ã  ¤à¥áã  ¤à¥áã
; <20>¥ç âì ⥪á⮢®© áâப¨ ¯® 㪠§ ­­®¬ã  ¤à¥áã
PutAdrTxtLine LD HL,(MakeWindow.PositX)
SLA L
RL H
LD E,(IY+0x00) ; Xpos
LD E,(IY+0x00)
INC IY
LD D,(IY+0x00)
LD D,(IY+0x00) ; Xpos
INC IY
ADD HL,DE
EX DE,HL
LD HL,(MakeWindow.PositY)
LD C,(IY+0x00) ; Ypos
LD C,(IY+0x00)
INC IY
LD B,(IY+0x00)
LD B,(IY+0x00) ; Ypos
INC IY
ADD HL,BC
LD C,L
@ -465,8 +465,10 @@ PutAdrTxtLine LD HL,(MakeWindow.PositX)
LD H,(IY+0) ; €¤à¥á ⥪áâ 
INC IY
PUSH IY
LD IYL,A
LD A,H
OR L
LD A,IYL
CALL NZ,PrnTxtLnIFF ; ¯¥ç â âì ¥á«¨  ¤à¥á ­¥ 0
POP IY
RET

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
; LAST UPDATE: 20.03.2025 savelij
; LAST UPDATE: 15.07.2025 savelij
include macros.a80
include fn_const.a80
@ -9,13 +9,7 @@
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
HDR_FLX "-CALC"
PluginEntry:
MAKEWINDOW WINSUBOBJ.STORE

View File

@ -6,9 +6,13 @@ set path=d:\yad\svn\pentevo\tools\asl\bin\;d:\yad\svn\pentevo\tools\mhmt\;d:\yad
call ..\..\setpath_includes
set includes=%includes%;..\..\
asl -U -L -C -x -olist tmp\flx-date.lst -i %includes% cdplayer.a80 || goto error
cls
asl -U -L -C -x -olist tmp\cdplayer.lst -i %includes% cdplayer.a80 || goto error
p2bin cdplayer.p ..\cdplayer.flx -r $-$ -k
copy /Y /B cdplayer.txt ..
echo ########################
echo # -= End Compile Ok =- #
echo ########################

View File

@ -1,32 +1,28 @@
; LAST UPDATE: 20.03.2025 savelij
; LAST UPDATE: 15.07.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 errors_sp.a80
include macros_sp.a80
include dss_sp.a80
include bios_sp.a80
include vers.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
DEBUG EQU 0
BUF_TOC EQU RESULT + 3000
;// include 'dos_equ.inc'
HDR_FLX "-CDPL",,,FLXMODES.M_ADRORG
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_TEXT 8,4,COLORI.WHITE + COLORP.BLUE,"SHAOS CD-Player v\{CDVERS}"
W_BUTTONTEXT 468,2,12,10,COLORP.HIGHGRAY,"x"
W_BORDER 8,15,268,38
W_FILL 10,16,264,36,COLORI.BLACK
@ -41,112 +37,90 @@ PluginEntry:
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 SHOW_BUTTON ; ¢ë¢®¤ ¨ª®­®ª ­  ª­®¯ª¨
IF DEBUG
CALL DEBUG_TXTKEYS ; ®â« ¤®ç­ë© ⥪áâ
ENDIF
call CDinit ; ¯®¨áª Audio-CD ¨ ¨­¨â
call BIGDIGITSALL
plugin_loop: LD HL,FLAG
BIT B_RDUPDATE,(HL)
JR NZ,.L2
; ¯¥à¥ç¨â뢠¥¬ ⥪ã饥 ¯®«®¦¥­¨¥ á ãç¥â®¬ ०¨¬®¢
SET B_RDUPDATE,(HL)
BIT B_PAUSE,(HL)
JR NZ,.L3
BIT B_TRAY,(HL)
JR NZ,.L4
BIT B_PLAY,(HL)
CALL NZ,RDSUBCHAN ; ¨«¨ ç¨â ¥¬ ⥪ã饥 ¢à¥¬ï ¥á«¨ â३ § ªàëâ ¨ ०¨¬ ¯«¥©
CALL UPDATE_CURRTRACK ; ®¡­®¢«¥­¨¥ áâப¨ ¤«ï ¢ë¢®¤ 
.L4 LD HL,(APCMD.PLAY_MSF + 6) ; ¢à¥¬ï ª®­æ  ¤¨áª 
LD DE,(RESULT + 9) ; ⥪ã饥 ¢à¥¬ï
AND A
SBC HL,DE
CALL Z,CDSTOP ; ¯à¨­ã¤¨â¥«ì­ë© á⮯ ¥á«¨ ª®­¥æ ¤¨áª 
JR .L3
; ¯¥à¥à¨á®¢ë¢ ¥¬ ⥪ãéãî ¯®§¨æ¨î ¨£à ­¨ï
.L2 RES B_RDUPDATE,(HL)
BIT B_TRAY,(HL)
CALL Z,BIGDIGITSALL ; ¨«¨ ¢ë¢®¤¨¬ ­  íªà ­
; ®á­®¢­®© 横« ®¯à®á  ã¯à ¢«¥­¨ï
.L3 ld ix,PluginMouseTab
call JUMPS.TestCoords
; ld c, 0x31
; rst 0x10
SPDSS DSSF.SCANKEY
jr z, plugin_loop
ld a, b
jr z,plugin_loop
ld a,b
or a
jr nz, plugin_loop
ld a, e
cp 0x1B
jr z, PluginExit
jr nz,plugin_loop
ld a,e
CALL CHECKHOTKEYS ; ¯à®¢¥àª  å®âª¥¥¢ ¯® ᯨáªã
JR NC,plugin_loop
.L1 cp 0x1B
jr z,PluginExit
cp 0x0D
jr nz, plugin_loop
jr nz,plugin_loop
PluginExit:
CALL RESTORE_STATE
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)
show: di
GETPORT WINSP.CPU0
ld (shwin),a
; ld a,50h
; out (82h),a
PUSH AF
GETPORT WINSP.Y_PORT
PUSH AF
SETPORT WINSP.CPU0,0x50
push ix
pop de
push iy
pop bc
LD C,IYL
ld b,16
show1: ld a,c
; out (89h),a
.L1: ld a,c
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
jp nz,.L1
POP AF
SETPORT WINSP.Y_PORT,,0
POP AF
SETPORT WINSP.CPU0,,0
ei
ret
shwin db 0
; a - digit
; ix,iy - coords (320x256)
showd: rlca
@ -157,18 +131,39 @@ showd: rlca
call show
ld de,16
add iy,de
call show
ret
jp show
; Show Digit string
shows: ld ix,46
ld iy,97
ld c,8
ld hl,Digits
shows1: push bc
; ¯®ª § ­®¬¥à  â४  ¨ ¢à¥¬¥­¨ ¯à®¨£à뢠­¨ï ªàã¯­ë¬ èà¨ä⮬
BIGDIGITSALL: LD HL,(Digits)
LD (DigitsNone),HL ; ª®¯¨à®¢ ­¨¥ ­®¬¥à  â४ 
LD HL,FLAG
BIT B_PAUSE,(HL)
LD DE,Digits ; ¯® 㬮«ç ­¨î ¢á¥£¤  æ¨äàë
JR Z,.L3
; áç¥â稪 ¤«ï ¬®à£ ­¨ï ¢ ¯ ã§¥
LD A,PAUSEDIGITS
.L4 EQU $-1
DEC A
JR NZ,.L5
LD A,PAUSEDIGITS
.L5 LD (.L4),A
JR NZ,.L6
LD A,M_VIEWNONE
XOR (HL)
LD (HL),A
.L6 BIT B_VIEWNONE,(HL)
JR Z,.L3
LD DE,DigitsNone ; ¯ãá⮥ ¢à¥¬ï ¢ ०¨¬¥ ¯ ã§ 
; ¯¥ç âì ⥪ã饣® ­®¬¥à  â४  ¨ ¢à¥¬¥­¨
.L3 EX DE,HL
; HL -  ¤à¥á ¤ ­­ëå ¤«ï ¢ë¢®¤  ⥪饣® â४ /¢à¥¬¥­¨ ¨£à ­¨ï
ld ix,46 ; X
ld c,8 ; ᪮«ìª® ᨬ¢®«®¢ à¨á®¢ âì
.L2 ld iy,97 ; Y
.L1: push bc
push hl
push iy
ld a,(hl)
ld a,(hl)
call showd
ld bc,16
add ix,bc
@ -177,77 +172,546 @@ shows1: push bc
pop bc
inc hl
dec c
jp nz,shows1
jp nz,.L1
ret
include cdrom.a80
CHANGEDISK: LD A,(CDDRIVE)
SPBIOS BIOSF.DRV_RESET
JR NC,.cont
CP ERR_DRV.ATAPI_UnitAttention
JR Z,.drv_change
CP ERR_DRV.ATAPI_NotReady
SCF
RET NZ
LD A,ERR_DSS.NOT_READY
RET
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
.drv_change: LD A,(CDDRIVE)
CALL SAVE_MEDIA_CHANGED
.cont: CALL INITDISK
RET C
AND A
RET
INITDISK: LD B,4
.CD_I_LP PUSH BC
LD IX,0x0010
LD HL,0x0000
LD DE,RESULT
LD A,(CDDRIVE)
SPBIOS BIOSF.DRV_READ,1
POP BC
JR NC,.CD_I_OK
DJNZ .CD_I_LP
.UNKCD LD A,ERR_DSS.UNKNOWN_FORMAT
SCF
RET
.CD_I_OK LD HL,RESULT
LD A,(HL)
INC HL
DEC A
JR NZ,.UNKCD
LD A,(HL)
INC HL
CP 'C'
JR NZ,.UNKCD
LD A,(HL)
INC HL
CP 'D'
JR NZ,.UNKCD
XOR A
RET
RESTORE_STATE: LD B,1
.set_par: EQU $-1
LD A,(CDDRIVE)
SPBIOS BIOSF.DRV_SET_PAR
RET
SAVE_MEDIA_CHANGED:
SPBIOS BIOSF.DRV_GET_PAR
OR %00000010
LD B,A
LD A,(RESTORE_STATE.set_par)
OR B
LD (RESTORE_STATE.set_par),A
RET
; ¯®¨áª CD-ROM ¨ ¨­¨æ¨ «¨§ æ¨ï
CDinit: LD B,0xC0 - 1
.loop: INC B
LD A,B
CP 0xC4
SCF
JP Z,noCD
PUSH BC
SPBIOS BIOSF.DRV_DETECT
POP BC
JR NC,.found
CP ERR_DRV.ATAPI_MediumError
JR Z,.found
CP ERR_DRV.ATAPI_UnitAttention
JR NZ,.loop
.found: LD A,B
LD (CDDRIVE),A
CALL yesCD0
.CLOSETRAY LD HL,APCMD.CLOSETRAY
CALL SEND_PACKET
CALL CHANGEDISK
LD HL,FLAG
RES B_TRAY,(HL)
.UPDATE_TOC LD HL,RESULT+6
LD (HL),0xAA
LD HL,APCMD.READTOC
CALL SEND_PACKET
LD HL,RESULT-2
LD B,0xFF
LD DE,8
.L1 INC B
ADD HL,DE
LD A,(HL)
CP 0xAA
JR NZ,.L1
LD A,B
LD (TRACKS),A
; ä®à¬¨à®¢ ­¨¥ â ¡«¨æë â४®¢
LD HL,RESULT + 4 + 5
LD A,(RESULT + 3)
LD DE,BUF_TOC + 3 ; ­ã«¥¢®£® ­¥â
.L2 EX AF,AF'
LDI
LDI
LDI
LD A,5
ADD A,L
LD L,A
ADC A,H
SUB L
LD H,A
EX AF,AF'
DEC A
JP NZ,.L2
LD DE,APCMD.PLAY_MSF + 6 ; ª®­¥æ ¤¨áª 
LDI
LDI
LDI
LD A,(TRACKS)
LD HL,TXTTRACKS.DIGITS
CALL A2HALFDEC
LD A,'0'
ADD A,(HL)
LD (HL),A
DEC HL
LD A,'0'
ADD A,(HL)
LD (HL),A
LD HL,TXTTRACKS
LD DE,360
LD BC,140
LD A,COLORP.HIGHGRAY + COLORI.BLUE
CALL JUMPS.PrnTxtLnIFF
LD A,1
LD (CURRENT.TRACK),A
; ®¡­®¢«¥­¨¥ ⥪ã饣® ­®¬¥à  â४  ¨ ¢à¥¬¥­¨ ¨£à ­¨ï ­  íªà ­¥
UPDATE_CURRTRACK
LD A,(CURRENT.TRACK)
LD HL,Digits
CALL A2HALFDEC
LD A,(CURRENT.MINUTE)
LD HL,Digits.MIN
CALL A2HALFDEC
LD A,(CURRENT.SECUND)
LD HL,Digits.SEC
; ª®­¢¥àá¨ï ç¨á«  ¤«ï ¢ë¢®¤  ­  ¤¨á¯«¥©
A2HALFDEC LD BC,10
.L1 INC B
SUB C
JR NC,.L1
DEC B
ADD A,C
LD (HL),B
INC HL
LD (HL),A
RET
IF DEBUG
A2HEX PUSH AF
AND %11110000
RRCA
RRCA
RRCA
RRCA
CALL .L2
LD B,A
POP AF
AND %00001111
.L2 ADD A,'0'
CP '9'+1
RET C
ADD A,7
RET
ENDIF
; CD-ROM ­ ©¤¥­
yesCD0: ld hl,msgY
ld a,0x80
ld a,COLORP.HIGHGRAY + COLORI.BLUE
jr CDprn
; CD-ROM ­¥ ­ ©¤¥­
noCD: ld hl,msgN
ld a,0x81
ld a,COLORP.HIGHGRAY + COLORI.RED
CDprn: ld de,84
ld bc,140
call JUMPS.PrnTxtLnIFF
ret
JP JUMPS.PrnTxtLnIFF
msgY db "CD-ROM is present "
msg_ DB 100 DUP 0
msgN db "CD-ROM is absent",0
msgY DZ "CD-ROM is present"
msgN DZ "CD-ROM is absent"
TXTTRACKS DZ "Tracks: 00" ; ª®«¨ç¥á⢮ â४®¢ ­  ¤¨áª¥
.DIGITS EQU $-3
CDplay: ld hl,AP_PLA
call ATAPI
ret
; à¨á®¢ ­¨¥ ¨ª®­®ª ­  ª­®¯ª å ¯® â ¡«¨çª¥ ¯®§¨æ¨©
SHOW_BUTTON LD HL,TABLBUTTONS
.L1 LD E,(HL)
INC HL
LD D,(HL)
INC HL
LD A,D
OR E
RET Z
PUSH DE
LD E,(HL)
INC HL
LD D,(HL)
INC HL
LD IXH,D
LD IXL,E
LD E,(HL)
INC HL
LD D,(HL)
INC HL
LD IYH,D
LD IYL,E
EX (SP),HL
CALL show
POP HL
JR .L1
CDejec: ld hl,AP_CD2
call ATAPI
ret
IF DEBUG
; â ¡«¨æ  ¯®¤áª §®ª ­  å®âª¥¨
DEBUG_TXTKEYS LD HL,DEBUGTABLKEYS
.L1 LD E,(HL)
INC HL
LD D,(HL)
INC HL
LD A,D
OR E
RET Z
PUSH DE
LD E,(HL)
INC HL
LD D,(HL)
INC HL
LD C,(HL)
INC HL
LD B,(HL)
INC HL
EX (SP),HL
LD A,COLORP.HIGHGRAY + COLORI.RED
CALL JUMPS.PrnTxtLnIFF
POP HL
JR .L1
ENDIF
; ¯à®¢¥àª  å®âª¥¥¢ ¯® â ¡«¨æ¥
CHECKHOTKEYS LD HL,TABLHOTKEYS
.L1 LD B,(HL)
INC B
DEC B
SCF
RET Z
INC HL
LD E,(HL)
INC HL
LD D,(HL)
INC HL
CP B
JR NZ,.L1
PUSH AF
EX DE,HL
CALL JP_HL
POP AF
AND A
RET
Digits db 0x00,0x00,0x0B,0x00,0x00,0x0A,0x00,0x00
JP_HL JP (HL)
; ç⥭¨¥ ⥪ã饣® á®áâ®ï­¨ï ¨£à ­¨ï
RDSUBCHAN LD HL,APCMD.RDSUBCHAN
CALL SEND_PACKET
LD A,(RESULT + 6)
LD (CURRENT.TRACK),A
LD HL,RESULT + 13
LD DE,CURRENT.MINUTE
LDI
LDI
RET
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
; ãáâ ­®¢ª  ¯®§¨æ¨¨ ¤«ï ¨£à ­¨ï ¢ ¯ ª¥â¥
SETPOS_MSF EXX
LD HL,(CURRENT.TRACK)
LD H,0
LD E,L
LD D,H
ADD HL,HL
ADD HL,DE
LD DE,BUF_TOC
ADD HL,DE
LD DE,APCMD.PLAY_MSF + 3
LDI
LDI
LDI
EXX
RET
PluginMT2: dw 252,324,138,156,0x01,0,Ok,0
dw 0x8000
; ¯¥à¥¬®âª  ­ § ¤
REWIND LD A,(FLAG)
BIT B_PAUSE,A
RET NZ
BIT B_PLAY,A
RET Z
; ⮫쪮 ¤«ï ०¨¬  ¯«¥©
CALL RDSUBCHAN
LD HL,APCMD.PLAY_MSF + 3
LD DE,(RESULT + 9)
LD A,D
SUB PAUSE
LD D,A
JR NC,.L1
ADD A,60
LD D,A ; ­®¢ë¥ ᥪ㭤ë
DEC E ; ­®¢ë¥ ¬¨­ãâë
.L1 LD (HL),E ; ¬¨­ãâë
INC HL
LD (HL),D ; ᥪ㭤ë
INC HL
LD (HL),0 ; ä३¬
JR CDPLAY.L1
StringBuf: db 16,1
db 0,0,0
dw 0x00CC,0x0057,0x00E8
db 0xF0
; ¯¥à¥¬®âª  ¢¯¥à¥¤
FORWARD LD A,(FLAG)
BIT B_PAUSE,A
RET NZ
BIT B_PLAY,A
RET Z
; ⮫쪮 ¤«ï ०¨¬  ¯«¥©
CALL RDSUBCHAN
LD HL,APCMD.PLAY_MSF + 3
LD DE,(RESULT + 9)
LD A,D
ADD A,PAUSE
LD D,A
CP 60
JR C,REWIND.L1
SUB 60
LD D,A ; ­®¢ë¥ ᥪ㭤ë
INC E ; ­®¢ë¥ ¬¨­ãâë
JR REWIND.L1
String: DB 16 DUP 0
DB 13 DUP 0
; ¯à¥¤ë¤ã騩 â४
PREV_TRACK LD HL,CURRENT.TRACK
LD A,(HL)
DEC A
RET Z
DEC (HL)
JR NEXT_TRACK.L1
include shaos.a80
include cd.a80
; á«¥¤ãî騩 â४
NEXT_TRACK LD HL,CURRENT.TRACK
LD A,(TRACKS)
CP (HL)
RET Z
INC (HL)
.L1 LD HL,0
LD (CURRENT.MINUTE),HL
CALL SETPOS_MSF ; ãáâ ­®¢ª  ¯®§¨æ¨¨ ¢ ¯ ª¥â¥
CALL UPDATE_CURRTRACK ; ®¡­®¢«¥­¨¥ áâப¨ â४  ¨ ¢à¥¬¥­¨
CALL BIGDIGITSALL ; à¨á®¢ ­¨¥ ­  íªà ­ áâப¨ â४  ¨ ¢à¥¬¥­¨
LD HL,FLAG
BIT B_PLAY,(HL) ; ०¨¬ ¯«¥©?
RET Z ; ¢ë室 ¥á«¨ ­¥â
BIT B_PAUSE,(HL) ; ०¨¬ ¯ ã§ë?
RET NZ ; ¢ë室 ¥á«¨ ¤ 
JR CDPLAY.L1 ; ¨­ ç¥ § ¯ã᪠¥¬ ¯«¥© ¤«ï ­®¢®£® â४ 
; ¨£à âì â४
CDPLAY: LD HL,FLAG
BIT B_PAUSE,(HL)
JR NZ,CDPAUSE.PAUSEON ; ¥á«¨ ¨§ ०¨¬  ¯ ã§ , á­ ç «  á¡à®á ०¨¬ 
BIT B_PLAY,(HL)
RET NZ ; ¥á«¨ ¨§ ०¨¬  ¯«¥©, â® ¢ë室¨¬
.L2 SET B_PLAY,(HL)
CALL SETPOS_MSF
.L1 LD HL,APCMD.PLAY_MSF
JP SEND_PACKET
CDPAUSE LD HL,FLAG
BIT B_PLAY,(HL)
RET Z ; ¥á«¨ á⮯ â® ¯ ã§ã ¨£­®à¨¬
BIT B_PAUSE,(HL)
JR NZ,.PAUSEON
; ¢ª«î祭¨¥ ०¨¬  ¯ ã§ 
SET B_PAUSE,(HL)
CALL RDSUBCHAN
LD HL,(RESULT + 9)
LD (CURRENT.PAUSE_POS),HL
LD HL,APCMD.PAUSE
JP SEND_PACKET
; ¢ëª«î祭¨¥ ०¨¬  ¯ ã§ 
.PAUSEON RES B_PAUSE,(HL)
RES B_VIEWNONE,(HL)
BIT B_PAUSENEW,(HL)
RES B_PAUSENEW,(HL)
JP Z,CDPLAY.L1
LD HL,(CURRENT.PAUSE_POS)
LD (APCMD.PLAY_MSF + 3),HL
JR CDPLAY.L1
; ¯®«­ ï ®áâ ­®¢ª 
CDSTOP: LD HL,FLAG
RES B_PLAY,(HL)
RES B_PAUSE,(HL)
RES B_VIEWNONE,(HL)
LD A,1
LD (CURRENT.TRACK),A
LD HL,0
LD (CURRENT.MINUTE),HL
CALL SETPOS_MSF
CALL UPDATE_CURRTRACK
CALL BIGDIGITSALL
; ª®¬ ­¤  á⮯
CD_APSTOP LD HL,APCMD.STOP
; ¯®á뫪  ATAPI ¯ ª¥â 
SEND_PACKET LD DE,RESULT
LD A,0
CDDRIVE EQU $-1
SPBIOS BIOSF.DRV_EXTENDED,DRV_EXTENDED.ATAPI_Custom_PCMD
RET
; ®âªàë⨥/§ ªàë⨥ âà¥ï
CDEJECT: CALL CDSTOP
LD HL,FLAG
BIT B_TRAY,(HL)
SET B_TRAY,(HL)
JP NZ,CDinit.CLOSETRAY ; § ªàë⨥ ¨ २­¨â
; ¨­ ç¥ ®âªàë⨥ âà¥ï
LD HL,APCMD.OPENTRAY
CALL SEND_PACKET
LD HL,BUF_TOC
LD DE,BUF_TOC + 1
LD BC,99 * 3
LD (HL),0
LDIR
RET
IF DEBUG
TXT
.D1 DZ "1"
.D2 DZ "2"
.D3 DZ "3"
.D4 DZ "4"
.D5 DZ "5"
.D6 DZ "6"
.D7 DZ "7"
.D8 DZ "8"
DEBUGTABLKEYS DW TXT.D1,363,95
DW TXT.D2,483,95
DW TXT.D3,523,95
DW TXT.D4,363,115
DW TXT.D5,403,115
DW TXT.D6,443,115
DW TXT.D7,483,115
DW TXT.D8,523,115
DW 0
ENDIF
; â ¡«¨æ  ¨ª®­®ª ¤«ï ª­®¯®ª
TABLBUTTONS DW cd_play,201,95
DW cd_paus,241,95
DW cd_stop,261,95
DW cd_ll,181,115
DW cd_l,201,115
DW cd_r,221,115
DW cd_rr,241,115
DW cd_ejec,261,115
DW 0
; å®âª¥¨
TABLHOTKEYS DB '1'
DW CDPLAY ; ¯«¥©
DB '2'
DW CDPAUSE ; ¯ ã§ 
DB '3'
DW CDSTOP ; á⮯
DB '4'
DW PREV_TRACK ; ¯à¥¤ë¤ã騩 â४
DB '5'
DW REWIND ; ¯¥à¥¬®âª  ­ § ¤
DB '6'
DW FORWARD ; ¯¥à¥¬®âª  ¢¯¥à¥¤
DB '7'
DW NEXT_TRACK ; á«¥¤ãî騩 â४
DB '8'
DW CDEJECT ; ®âªàë⨥/§ ªàë⨥ âà¥ï
DB 0
; ⥪ã騩 â४ ¨ ⥪ã饥 ¢à¥¬ï â४ 
Digits DB 0x00,0x00,0x0B
.MIN DB 0x00,0x00,0x0A
.SEC DB 0x00,0x00
; ¯ãá⮥ ¢à¥¬ï ¤«ï ¬®à£ ­¨ï ¢ ¯ ã§¥
DigitsNone DB 0x0B,0x0B,0x0B,0x0B,0x0B,0x0A,0x0B,0x0B
; â ¡«¨æ  ¤«ï ¬ëè¨
PluginMouseTab: dw 546,558, 81, 91,%0000000000100001,0,PluginExit,PluginExit
dw 360,476, 94,112,%0000000000000001,0,CDPLAY,0
dw 480,516, 94,112,%0000000000000001,0,CDPAUSE,0
dw 520,556, 94,112,%0000000000000001,0,CDSTOP,0
dw 360,396,114,132,%0000000000000001,0,PREV_TRACK,0
dw 400,436,114,132,%0000000000000001,0,REWIND,0
dw 440,476,114,132,%0000000000000001,0,FORWARD,0
dw 480,516,114,132,%0000000000000001,0,NEXT_TRACK,0
dw 520,556,114,132,%0000000000000001,0,CDEJECT,0
dw 0x8000
APCMD
; 00 01 02 03 04 05 06 07 08 09 0A 0B
.STOP DB 0x4E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.PAUSE DB 0x4B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
; SM SS SF EM ES EF
.PLAY_MSF DB 0x47,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ; 3-5 START MSF, 6-8 END MSF
.READTOC DB 0x43,0x02,0x00,0x00,0x00,0x00,0x01,0x03,0x24,0x00,0x00,0x00
.CLOSETRAY DB 0x1B,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.OPENTRAY DB 0x1B,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.RDSUBCHAN DB 0x42,0x02,0x40,0x01,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00
include icons.a80
include digits.a80
PluginEnd:
;// savebin 'Build/FN/Plugins/cdplayer.flx',PluginStart,PluginEnd-PluginStart
FLAG DB 0
BITMASK TRAY, 7 ; 1-â३ ®âªàëâ, 0-â३ § ªàëâ
BITMASK RDUPDATE, 6 ; 1-®¡­®¢«¥­¨¥ ¢à¥¬¥­¨,0-ç⥭¨¥ ¢à¥¬¥­¨
BITMASK PAUSE, 5 ; 1-०¨¬ ¯ ã§ë,0-­¥â
BITMASK PLAY, 4 ; 1-०¨¬ ¯«¥©  ªâ¨¢¥­,0-­¥â
BITMASK PAUSENEW, 3 ; 1-¢ ०¨¬¥ ¯ ã§  ­ ¦ â ¯¥à¥å®¤ ­  ¤à㣮© â४
BITMASK VIEWNONE, 2 ; 1-¯ãáâë¥ æ¨äàë,0-­®à¬ «ì­ë¥
CURRENT ; ­®¬¥à â४  ¨ ¢à¥¬ï ¤«ï ¢ë¢®¤  ­  íªà ­
.TRACK DB 0 ; ⥪ã騩 â४
.MINUTE DB 0 ; ⥪ãé ï ¬¨­ãâ 
.SECUND DB 0 ; ⥪ãé ï ᥪ㭤 
.PAUSE_POS DW 0 ; ⥪ãé ï ¯®§¨æ¨ï ­  ¬®¬¥­â ­ ¦ â¨ï ¯ ã§ë
TRACKS DB 0 ; ª®«¨ç¥á⢮ â४®¢ ­  ¤¨áª¥
; ­ ç «® ¡ãä¥à  ¯®«ã祭¨ï १ã«ìâ â ¢ë¯®«­¥­¨ï ATAPI ¯ ª¥â 
RESULT DB 0 ; १ã«ìâ â ¢ë¯®«­¥­¨ï ATAPI ª®¬ ­¤ë

View File

@ -0,0 +1,46 @@
<20>« £¨­ SHAOS CD-Player ¤«ï Flex Navigator ¯à¥¤­ §­ ç¥­ ¤«ï ã¯à ¢«¥­¨ï
¢®á¯à®¨§¢¥¤¥­¨¥¬ ¨ ­ ¢¨£ æ¨¨ Audio CD ¤¨áª®¢.
‘¨á⥬­ë¥ âॡ®¢ ­¨ï: FN ¢¥àᨨ 1.16 ¨ ¢ëè¥.
“¯à ¢«¥­¨¥ ¯«¥¥à®¬ ¯à®¨§¢®¤¨âáï ¯à¨ ¯®¬®é¨ ¬ëè¨ ¨«¨ £®àï稬¨ ª« ¢¨è ¬¨.
‘¯¨á®ª ã¯à ¢«¥­¨ï:
1 - ¯«¥©;
2 - ¯ ã§ , ¢ í⮬ ०¨¬¥ ­ ç¨­ ¥â ¬®à£ âì ¢à¥¬ï ¯à®¨£à뢠­¨ï;
3 - á⮯;
4 - ¯¥à¥©â¨ ­  ¯à¥¤ë¤ã騩 â४;
5 - ¯¥à¥¬®âª  ­ § ¤, ª ¦¤®¥ ­ ¦ â¨¥ ¯¥à¥áª ª¨¢ ¥â ­  10 ᥪ㭤
(⮫쪮 ¢ ०¨¬¥ ¯«¥©);
6 - ¯¥à¥¬®âª  ¢¯¥à¥¤, ª ¦¤®¥ ­ ¦ â¨¥ ¯¥à¥áª ª¨¢ ¥â ­  10 ᥪ㭤
(⮫쪮 ¢ ०¨¬¥ ¯«¥©);
7 - ¯¥à¥©â¨ ­  á«¥¤ãî騩 â४;
8 - § ªàëâì/®âªàëâì â३ ¯à¨¢®¤  CD ¤¨áª®¢. ‘®áâ®ï­¨¥ âà¥ï ­¥ ª®­â஫¨àã¥âáï.
ޤ­® ­ ¦ â¨¥ ¯®¤ ¥â ª®¬ ­¤ã ®âªàëâì, á«¥¤ãî饥 ­ ¦ â¨¥ ¯®¤ ¥â ª®¬ ­¤ã
§ ªàëâ¨ï.
"<22>â® ­¥ ¡ £, íâ® ä¨ç ":
- ­ ¦ â¨¥ á⮯ ¢á¥£¤  á¡à á뢠¥â ¢à¥¬ï ¨£à ­¨ï ¢ 0 ¨ ¯¥à¥å®¤¨â ­  ¯¥à¢ë© â४;
- ¯¥à¥¬®âª  à ¡®â ¥â ⮫쪮 ¢ ०¨¬¥ ¯«¥©;
- ¯à¨ ¢ë室¥ ¨§ ¯«¥¥à  ¢®á¯à®¨§¢¥¤¥­¨¥ ¯à®¤®«¦ ¥âáï. <20>® ¯à¨ á«¥¤ãî饬
§ ¯ã᪥ ¥á«¨ ¤¨áª ¥é¥ ¢®á¯à®¨§¢®¤¨âáï ¯«¥¥à ¡ã¤¥â ¯®ª §ë¢ âì ०¨¬ á⮯
¨ ¯®§¨æ¨î â४ 1, ¢à¥¬ï 00:00.
- ¢ ०¨¬¥ ¯ ã§  ¨ ¯¥à¥å®¤ ­  á«¥¤ãî騩/¯à¥¤ë¤ã騩 â४ ¢à¥¬ï á¡à á뢠¥âáï ¢ 00:00.
History:
‚¥àá¨ï 1.1
- ¯¥à¥à¨á®¢ ­ ¢áâ஥­­ë© ªàã¯­ë© èà¨äâ.
- ¢ ¯ à «¥«ì á ã¯à ¢«¥­¨¥¬ ¬ëèìî ᤥ« ­® ã¯à ¢«¥­¨¥ á ª« ¢¨ âãàë.
- ¢ ०¨¬¥ ¯ ã§  ᤥ« ­® ¬®à£ ­¨¥ ¢à¥¬¥­¥¬ ¨£à ­¨ï.
- ¯¥à¥¬®âª  ¯® ¤¨áªã ᤥ« ­  ­  10 ᥪ㭤 ¨ ⮫쪮 ¢ ०¨¬¥ ¯«¥©.
- ¤®¤¥« ­ë ¢á¥ ­¥¨á¯®«ì§®¢ ­­ë¥ ª­®¯ª¨, ¨á室­ ï ¢¥àá¨ï 㬥«  ⮫쪮 ¯«¥©
¨ ®âªàë⨥ âà¥ï.
- ¯¥à¢ë¥ 2 æ¨äàë ¯®ª §ë¢ îâ ­®¬¥à ⥪ã饣® â४ , ®áâ «ì­ë¥ ¯®ª §ë¢ îâ
¢à¥¬ï ¯à®¨£à뢠­¨ï â४ .
- ᤥ« ­ ¯®ª § ª®«¨ç¥á⢠ â४®¢ ­  ¤¨áª¥.
- ã¡à ­  áªàëâ ï ª­®¯ª  á ­¥¯®­ïâ­ë¬ ä㭪樮­ «®¬.
- ¨á¯à ¢«¥­ ¢ë¢®¤ ­®¬¥à â४  ¨ ¢à¥¬ï ¨£à ­¨ï, ç áâ® á¡®¨«®.
- ¢á¥ ã¯à ¢«¥­¨¥ CD ¯à¨¢®¤®¬ ᤥ« ­  ¯®á뫪®© ATAPI ¯ ª¥â ¬¨ ç¥à¥§ BIOS.
- ¨§ ¯« £¨­  ã¡à ­ ª®¤ à ¡®âë ç¥à¥§ ¯®àâë IDE, ¨á室­¨ª ®áâ ¢«¥­.
- ¨§ ¯« £¨­  ã¡à ­  «®£®  ¢â®à , ¨á室­¨ª ®áâ ¢«¥­.
- ¤®à ¡®âª  ¨á室­®© ¢¥àᨨ SHAOS CD-Player v1.0 beta1.

View File

@ -1,5 +1,5 @@
; LAST UPDATE: 11.03.2025 savelij
; LAST UPDATE: 30.06.2025 savelij
; CDROM.A - Alexander Shabarshin 13.10.2002
@ -106,14 +106,11 @@ CD_TRANS: ld d,(hl)
; 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
@ -191,21 +188,14 @@ NO_CDROM: pop hl
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
@ -214,14 +204,12 @@ FNAME db "cd_buf.dat",0
FHAND db 0
AP_NOP: ld hl,AP_00
call SEND_ATAPI
ret
JP SEND_ATAPI
; ATAPI command
; HL - address of ATAPI command (AP_*)
ATAPI:
AP_COM: call SEND_ATAPI
ret
AP_COM: JP SEND_ATAPI
AP_00 db 0x00
DB 11 DUP 0

View File

@ -1,384 +1,402 @@
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
; LAST UPDATE: 25.07.2025 savelij
ii EQU COLORP.BLACK + COLORI.BLACK ; 䎭
HH EQU COLORP.YELLOW + COLORI.YELLOW ; ݍŞáĽŤě
; 0 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
digit0 db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii ; 00
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii ; 01
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii ; 02
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii ; 03
db ii,ii,ii,HH,HH,HH,HH,HH,HH,HH,HH,HH,HH,ii,ii,ii ; 04
db ii,ii,HH,ii,HH,HH,HH,HH,HH,HH,HH,HH,ii,HH,ii,ii ; 05
db ii,ii,HH,HH,ii,HH,HH,HH,HH,HH,HH,ii,HH,HH,ii,ii ; 06
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii ; 07
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii ; 08
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii ; 09
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii ; 0A
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii ; 0B
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii ; 0C
db ii,ii,HH,HH,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,ii,ii ; 0D
db ii,ii,HH,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,ii,ii ; 0E
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii ; 0F
db ii,ii,HH,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,ii,ii ; 10
db ii,ii,HH,HH,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,ii,ii ; 11
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii ; 12
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii ; 13
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii ; 14
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii ; 15
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii ; 16
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii ; 17
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii ; 18
db ii,ii,HH,HH,ii,HH,HH,HH,HH,HH,HH,ii,HH,HH,ii,ii ; 19
db ii,ii,HH,ii,HH,HH,HH,HH,HH,HH,HH,HH,ii,HH,ii,ii ; 1A
db ii,ii,ii,HH,HH,HH,HH,HH,HH,HH,HH,HH,HH,ii,ii,ii ; 1B
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii ; 1C
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii ; 1D
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii ; 1E
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii ; 1F
; 1
digit1 db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
; 2
digit2 db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,HH,HH,HH,HH,HH,HH,HH,HH,HH,HH,ii,ii,ii
db ii,ii,ii,ii,HH,HH,HH,HH,HH,HH,HH,HH,ii,HH,ii,ii
db ii,ii,ii,ii,ii,HH,HH,HH,HH,HH,HH,ii,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,ii,ii
db ii,ii,ii,ii,HH,HH,HH,HH,HH,HH,HH,HH,ii,HH,ii,ii
db ii,ii,ii,HH,HH,HH,HH,HH,HH,HH,HH,HH,HH,ii,ii,ii
db ii,ii,HH,ii,HH,HH,HH,HH,HH,HH,HH,HH,ii,ii,ii,ii
db ii,ii,HH,HH,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,HH,HH,ii,HH,HH,HH,HH,HH,HH,ii,ii,ii,ii,ii
db ii,ii,HH,ii,HH,HH,HH,HH,HH,HH,HH,HH,ii,ii,ii,ii
db ii,ii,ii,HH,HH,HH,HH,HH,HH,HH,HH,HH,HH,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
; 3
digit3 db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,HH,HH,HH,HH,HH,HH,HH,HH,HH,HH,ii,ii,ii
db ii,ii,ii,ii,HH,HH,HH,HH,HH,HH,HH,HH,ii,HH,ii,ii
db ii,ii,ii,ii,ii,HH,HH,HH,HH,HH,HH,ii,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,ii,ii
db ii,ii,ii,ii,HH,HH,HH,HH,HH,HH,HH,HH,ii,HH,ii,ii
db ii,ii,ii,HH,HH,HH,HH,HH,HH,HH,HH,HH,HH,ii,ii,ii
db ii,ii,ii,ii,HH,HH,HH,HH,HH,HH,HH,HH,ii,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,HH,HH,HH,HH,HH,HH,ii,HH,HH,ii,ii
db ii,ii,ii,ii,HH,HH,HH,HH,HH,HH,HH,HH,ii,HH,ii,ii
db ii,ii,ii,HH,HH,HH,HH,HH,HH,HH,HH,HH,HH,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
; 4
digit4 db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,HH,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,ii,ii
db ii,ii,HH,HH,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,HH,HH,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,ii,ii
db ii,ii,HH,ii,HH,HH,HH,HH,HH,HH,HH,HH,ii,HH,ii,ii
db ii,ii,ii,HH,HH,HH,HH,HH,HH,HH,HH,HH,HH,ii,ii,ii
db ii,ii,ii,ii,HH,HH,HH,HH,HH,HH,HH,HH,ii,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
; 5
digit5 db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,HH,HH,HH,HH,HH,HH,HH,HH,HH,HH,ii,ii,ii
db ii,ii,HH,ii,HH,HH,HH,HH,HH,HH,HH,HH,ii,ii,ii,ii
db ii,ii,HH,HH,ii,HH,HH,HH,HH,HH,HH,ii,ii,ii,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,HH,HH,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,HH,ii,HH,HH,HH,HH,HH,HH,HH,HH,ii,ii,ii,ii
db ii,ii,ii,HH,HH,HH,HH,HH,HH,HH,HH,HH,HH,ii,ii,ii
db ii,ii,ii,ii,HH,HH,HH,HH,HH,HH,HH,HH,ii,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,HH,HH,HH,HH,HH,HH,ii,HH,HH,ii,ii
db ii,ii,ii,ii,HH,HH,HH,HH,HH,HH,HH,HH,ii,HH,ii,ii
db ii,ii,ii,HH,HH,HH,HH,HH,HH,HH,HH,HH,HH,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
; 6
digit6 db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,HH,HH,HH,HH,HH,HH,HH,HH,HH,HH,ii,ii,ii
db ii,ii,HH,ii,HH,HH,HH,HH,HH,HH,HH,HH,ii,ii,ii,ii
db ii,ii,HH,HH,ii,HH,HH,HH,HH,HH,HH,ii,ii,ii,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,HH,HH,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,HH,ii,HH,HH,HH,HH,HH,HH,HH,HH,ii,ii,ii,ii
db ii,ii,ii,HH,HH,HH,HH,HH,HH,HH,HH,HH,HH,ii,ii,ii
db ii,ii,HH,ii,HH,HH,HH,HH,HH,HH,HH,HH,ii,HH,ii,ii
db ii,ii,HH,HH,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,HH,HH,ii,HH,HH,HH,HH,HH,HH,ii,HH,HH,ii,ii
db ii,ii,HH,ii,HH,HH,HH,HH,HH,HH,HH,HH,ii,HH,ii,ii
db ii,ii,ii,HH,HH,HH,HH,HH,HH,HH,HH,HH,HH,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
; 7
digit7 db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,HH,HH,HH,HH,HH,HH,HH,HH,HH,HH,ii,ii,ii
db ii,ii,ii,ii,HH,HH,HH,HH,HH,HH,HH,HH,ii,HH,ii,ii
db ii,ii,ii,ii,ii,HH,HH,HH,HH,HH,HH,ii,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
; 8
digit8 db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,HH,HH,HH,HH,HH,HH,HH,HH,HH,HH,ii,ii,ii
db ii,ii,HH,ii,HH,HH,HH,HH,HH,HH,HH,HH,ii,HH,ii,ii
db ii,ii,HH,HH,ii,HH,HH,HH,HH,HH,HH,ii,HH,HH,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,HH,HH,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,ii,ii
db ii,ii,HH,ii,HH,HH,HH,HH,HH,HH,HH,HH,ii,HH,ii,ii
db ii,ii,ii,HH,HH,HH,HH,HH,HH,HH,HH,HH,HH,ii,ii,ii
db ii,ii,HH,ii,HH,HH,HH,HH,HH,HH,HH,HH,ii,HH,ii,ii
db ii,ii,HH,HH,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,HH,HH,ii,HH,HH,HH,HH,HH,HH,ii,HH,HH,ii,ii
db ii,ii,HH,ii,HH,HH,HH,HH,HH,HH,HH,HH,ii,HH,ii,ii
db ii,ii,ii,HH,HH,HH,HH,HH,HH,HH,HH,HH,HH,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
; 9
digit9 db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,HH,HH,HH,HH,HH,HH,HH,HH,HH,HH,ii,ii,ii
db ii,ii,HH,ii,HH,HH,HH,HH,HH,HH,HH,HH,ii,HH,ii,ii
db ii,ii,HH,HH,ii,HH,HH,HH,HH,HH,HH,ii,HH,HH,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,HH,HH,HH,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,HH,HH,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,ii,ii
db ii,ii,HH,ii,HH,HH,HH,HH,HH,HH,HH,HH,ii,HH,ii,ii
db ii,ii,ii,HH,HH,HH,HH,HH,HH,HH,HH,HH,HH,ii,ii,ii
db ii,ii,ii,ii,HH,HH,HH,HH,HH,HH,HH,HH,ii,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,HH,HH,HH,ii,ii
db ii,ii,ii,ii,ii,HH,HH,HH,HH,HH,HH,ii,HH,HH,ii,ii
db ii,ii,ii,ii,HH,HH,HH,HH,HH,HH,HH,HH,ii,HH,ii,ii
db ii,ii,ii,HH,HH,HH,HH,HH,HH,HH,HH,HH,HH,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
; ¤˘ŽĽâŽç¨Ľ
digi_sp db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,HH,HH,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,HH,HH,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,HH,HH,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,HH,HH,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,HH,HH,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,HH,HH,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,HH,HH,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,HH,HH,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
; ŻŕŽĄĽŤ
digi_ss db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii
db ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii,ii

View File

@ -1,30 +1,23 @@
; LAST UPDATE: 03.02.2025 savelij
; LAST UPDATE: 30.06.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
SETPORT WINSP.Y_PORT,,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
@ -33,11 +26,8 @@ shaos1: ld a,c
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

View File

@ -0,0 +1,7 @@
; LAST UPDATE: 11.07.2025 savelij
CDVERS EQU "1.1"
PAUSE EQU 10 ; è £ ¢ ᥪ㭤 å ¤«ï ¯¥à¥¬®âª¨
PAUSEDIGITS EQU 12 ; ¯ ã§  ¬®à£ ­¨ï æ¨äà ¢ ०¨¬¥ ¯ ã§ 

View File

@ -1,5 +1,5 @@
; LAST UPDATE: 31.03.2025 savelij
; LAST UPDATE: 15.07.2025 savelij
include macros.a80
include fn_const.a80
@ -7,12 +7,9 @@
include macros_sp.a80
include dss_sp.a80
org PluginOrg
PluginStart: db "FLX-PLUG"
dw 0
dw PluginEntry
db 0
db 0,0,0
HDR_FLX "-DATE"
JP PluginEntry
db "Date preferences plug-in for Flex Navigator",0
db "2003 (c) Mac Buster",0

View File

@ -1,5 +1,5 @@
; LAST UPDATE: 11.03.2025 savelij
; LAST UPDATE: 18.07.2025 savelij
INIT_VAR
SETVAR CursorX ;EQU 0x00
@ -307,7 +307,7 @@ SureLoop LD IX,SureTab
SCF
JR Z,SureExit
CP 0x0D
JR Z,SureExit
JR Z,SureOkey
RES 5,A
CP 'N'
JR Z,SureExit
@ -704,7 +704,7 @@ FEAbout CALL FEResCursor
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 96,28,COLORP.HIGHGRAY,"v\{FLEX_VERS.EDITOR} build \{BUILDDATE}"
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

View File

@ -1,5 +1,5 @@
; LAST UPDATE: 20.03.2025 savelij
; LAST UPDATE: 18.07.2025 savelij
include macros.a80
include fn_const.a80
@ -13,12 +13,6 @@
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
HDR_FLX "-EDIT",,,;FLXMODES.M_ADRORG
PluginEntry: include feditor.a80
include feditor.a80

View File

@ -1,5 +1,5 @@
; LAST UPDATE: 24.03.2025 savelij
; LAST UPDATE: 16.07.2025 savelij
FECSign: DB "FEC"
HomeKeyFlag: DB 0
@ -28,7 +28,7 @@ ReadEditorIni: ld a,0
POP IY
GETPORT WINSP.CPU1
PUSH AF
LD A,(JUMPS.FNFUNCT)
LD A,(JUMPS.FNREZ2)
SETPORT WINSP.CPU1,,0
LD HL,ADDR.FlexDIRECTORY
PUSH IY
@ -244,7 +244,7 @@ FESetupOkey: ld a,(ExitDlgFlag)
SPDSS DSSF.CURDIR
GETPORT WINSP.CPU1
PUSH AF
LD A,(JUMPS.FNFUNCT)
LD A,(JUMPS.FNREZ2)
SETPORT WINSP.CPU1,,0
LD HL,ADDR.FlexDIRECTORY
SPDSS DSSF.CHDIR

View File

@ -1,5 +1,5 @@
; LAST UPDATE: 30.05.2025 savelij
; LAST UPDATE: 18.07.2025 savelij
include macros.a80
@ -15,12 +15,6 @@
include fat_dir_sp.a80
include macros_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
HDR_FLX "-VIEW",,,;FLXMODES.M_ADRORG
PluginEntry: include fviewer.a80
include fviewer.a80

View File

@ -1,5 +1,5 @@
; LAST UPDATE: 26.03.2025 savelij
; LAST UPDATE: 15.07.2025 savelij
include macros.a80
include fn_const.a80
@ -16,13 +16,7 @@
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
HDR_FLX "-HELP"
PluginEntry: include help.a80

View File

@ -1,9 +1,9 @@
; LAST UPDATE: 25.06.2025 savelij
; LAST UPDATE: 27.06.2025 savelij
DB 0,0
DB " Flex Navigator",0,0
DB " version \{FLEX_VERS.NAVIGATOR}",0,0,0
DB " version \{FLEX_VERS.NAVIGATOR}",0,0,0
DB " Copyright (C) 2000, Enin Anton, St.-Petersburg, Russia",0
DB " Copyright (C) \{SUBSTR(DATE,STRLEN(DATE)-4,4)}, Sprinter Team",0
DB 0
@ -112,7 +112,7 @@
DB " Filtr... - 䨫ìâà ¤«ï ᯨ᪠ ä ©«®¢",0
DB " Name - á®àâ¨à®¢ âì ¯® ¨¬¥­¨",0
DB " Extention - á®àâ¨à®¢ âì ¯® à áè¨à¥­¨î",0
DB " Data - á®àâ¨à®¢ âì ¯® ¤ â¥",0
DB " Date - á®àâ¨à®¢ âì ¯® ¤ â¥",0
DB " Size - á®àâ¨à®¢ âì ¯® à §¬¥àã",0
DB " Unsorted - ¡¥§ á®àâ¨à®¢ª¨",0,0,0," ",9
DB " Œ…<C592>ž - Config -",0,0

View File

@ -1,5 +1,5 @@
; LAST UPDATE: 24.03.2025 savelij
; LAST UPDATE: 15.07.2025 savelij
;// DEVICE ZXSPECTRUM128
;[]=======================================================================[]
@ -24,13 +24,7 @@
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
HDR_FLX "-TEST"
PluginEntry:
MAKEWINDOW WINSUBOBJ.STORE

View File

@ -1,4 +1,4 @@

Flex Navigator для компьтера Sprinter
Flex Navigator v1.16 для компьютера Sprinter
Собранные файлы забирать из папки fn

View File

@ -1,5 +1,5 @@
; LAST UPDATE: 24.03.2025 savelij
; LAST UPDATE: 24.07.2025 savelij
PALITRA.RESERV EQU PALETTE + 0x34
@ -177,7 +177,7 @@ SaveSetup CALL SetClock
PUSH IY
SPDSS DSSF.CURDIR
POP IY
LD HL,FlexDIRECTORY
LD HL,BUF_REZ2.FlexDIRECTORY
PUSH IY
SPDSS DSSF.CHDIR
POP IY
@ -215,7 +215,7 @@ SaveSetup CALL SetClock
LDI
LDI
POP HL
LD BC,PANEL.FILEMASK
LD BC,PANEL.FILE_MASK
ADD HL,BC
SUB A
.L1 LDI
@ -229,7 +229,7 @@ SaveSetup CALL SetClock
LDI
LDI
POP HL
LD BC,PANEL.FILEMASK
LD BC,PANEL.FILE_MASK
ADD HL,BC
SUB A
.L2 LDI
@ -286,8 +286,8 @@ SetupExit LD A,(SaveFlag)
OR A
RET Z
LD IX,LeftPanel
LD HL,LeftPanel + PANEL.CURRPATH
LD DE,FlexDIRECTORY
LD HL,LeftPanel + PANEL.CURR_PATH
LD DE,BUF_REZ2.FlexDIRECTORY
LD A,(DE)
SetRef1 CP (HL)
JR NZ,SetRef2
@ -299,8 +299,8 @@ SetRef1 CP (HL)
CP (HL)
CALL Z,RefreshSetup
SetRef2 LD IX,RightPanel
LD HL,RightPanel + PANEL.CURRPATH
LD DE,FlexDIRECTORY
LD HL,RightPanel + PANEL.CURR_PATH
LD DE,BUF_REZ2.FlexDIRECTORY
LD A,(DE)
SetRef3 CP (HL)
JR NZ,SetRef4
@ -313,7 +313,7 @@ SetRef3 CP (HL)
CALL Z,RefreshSetup
SetRef4 PUSH IY
POP HL
LD DE,PANEL.CURRPATH
LD DE,PANEL.CURR_PATH
ADD HL,DE
PUSH IY
SPDSS DSSF.CHDIR
@ -327,7 +327,7 @@ RefreshSetup BIT VIEWFLAG.B_TREE,(IX+PANEL.VIEWFLAG)
POP IY
PUSH IY
POP HL
LD DE,PANEL.CURRPATH
LD DE,PANEL.CURR_PATH
ADD HL,DE
PUSH IY
SPDSS DSSF.CHDIR
@ -338,7 +338,7 @@ RefreshSetup BIT VIEWFLAG.B_TREE,(IX+PANEL.VIEWFLAG)
CALL PrnFileInfo
PUSH IY
POP IX
LD DE,PANEL.BARXL
LD DE,PANEL.BAR_X
ADD IX,DE
CALL InitScrollBar
LD A,(IY+PANEL.VIEWFLAG)

View File

@ -1,122 +1,161 @@
; LAST UPDATE: 25.03.2025 savelij
; LAST UPDATE: 18.07.2025 savelij
; !FIXIT ¯¥à¥¤¥« âì ®¤¨­ ª®¢ë¥ ®ª­  á à §­ë¬ ⥪á⮬ ¤«ï ®è¨¡®ª ¯®¤  ¢â®¬ â¨ç¥áªãî ¯à®æ¥¤ãàã
;[]===========================================================[]
DOSErrorR ;[x] 30/07/23 -bug ¢ë«¥â §  ¯à¥¤¥«ë â ¡«¨æë ®è¨¡®ª
CP (.error - .ErrorWins)/2
JR C,.calc_addr
LD HL,.error
JR .goto_addr
CP (.UNKerror - .ErrorWins) / 4
JR C,.calc_addr
CP 0xF0
JR NC,.FNerror
LD HL,.UNKerror
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)
; ¤«ï ¢­ãâ७­¨å ®è¨¡®ª FN
.FNerror SUB FNinternal.PlugNotFound
LD HL,.PlugNotFound
JR .INT_ERR
.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
.calc_addr: LD HL,.ErrorWins
.INT_ERR ADD A,A ; *2
ADD A,A ; *4
ADD A,L
LD L,A
ADC A,H
SUB L
LD H,A
.goto_addr LD E,(HL)
INC HL
LD D,(HL) ;  ¤à¥á ⥪áâ  á • ¯®§¨æ¨¥©
INC HL
LD A,(DE)
INC DE
LD C,A ; X ¯®§¨æ¨ï ¬« ¤è¨© ¡ ©â
LD A,(DE)
INC DE
LD (.WINTYPE),A
RES 7,A
LD B,A ; X ¯®§¨æ¨ï áâ à訩 ¡ ©â
LD (.XPOSTXT),BC ; X ¯®§¨æ¨ï ¯¥ç â¨
LD (.XPOSTXT2),BC ; X ¯®§¨æ¨ï ¯¥ç â¨
LD (.ADRTXT),DE ;  ¤à¥á ⥪áâ 
LD (.ADRTXT2),DE ;  ¤à¥á ⥪áâ 
LD A,(HL)
INC HL
LD H,(HL)
LD L,A ;  ¤à¥á ªã¤  ¯¥à¥å®¤¨âì ¯®á«¥ ®ª­ 
OR H
RET Z ; ¥á«¨  ¤à¥á ¯¥à¥å®¤  0, ¢ë室¨¬
LD (.ADRJUMP),HL
LD (.ADRJUMP2),HL
CALL SetMouse
LD A,0
.WINTYPE EQU $-1
BIT 7,A
JR NZ,.TYPE2
; ®ª­® á ⥪á⮬ ®è¨¡ª¨
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_ADRTEXT 0,18,COLORP.HIGHGRAY,0
.XPOSTXT EQU $-7 ; ¯®§¨æ¨ï ¯¥ç â¨
.ADRTXT EQU $-2 ;  ¤à¥á ⥪áâ 
W_BUTTON 60,30,72,14
W_TEXT 88,33,COLORP.HIGHGRAY,"Ok"
W_END
JP 0
.ADRJUMP EQU $-2
; ®ª­® á ⥪á⮬ ®è¨¡ª¨ ¨ ¢¢®¤®¬ ¡ãª¢ë ¤¨áª 
.TYPE2
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_ADRTEXT 0,18,COLORP.HIGHGRAY,0
.XPOSTXT2 EQU $-7 ; ¯®§¨æ¨ï ¯¥ç â¨
.ADRTXT2 EQU $-2 ;  ¤à¥á ⥪áâ 
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 0
.ADRJUMP2 EQU $-2
;  ¤à¥á ⥪áâ   ¤à¥á ªã¤  ¯¥à¥å®¤¨âì
.ErrorWins DW 0, 0 ; 00
DW 0, 0 ; 01
DW TXTERR.InvDrive, InputDrive ;InvDrive ; 02
DW TXTERR.FileNFound, ErrorLp ;FileNFound ; 03
DW TXTERR.InvPath, ErrorLp0 ;InvPath ; 04
DW 0, 0 ; 05
DW TXTERR.FileNFound, ErrorLp ;FileNFound ; 06
DW TXTERR.FILEexists, ErrorLp ;FILEexists ; 07
DW 0, 0 ; 08
DW TXTERR.ROOToverflow, ErrorLp ;ROOToverflow ; 09
DW TXTERR.NoDiskSpace, ErrorLp ;NoDiskSpace ; 0A
DW TXTERR.DIRnotEmpty, ErrorLp ;DIRnotEmpty ; 0B
DW 0, 0 ; 0C
DW TXTERR.InvMedia, InputDrive ;InvMedia ; 0D
DW 0, 0 ; 0E
DW TXTERR.DIRexists, ErrorLp ;DIRexists ; 0F
DW TXTERR.InvName, ErrorLp ;InvName ; 10
DW TXTERR.InvEXEfile, ErrorLp ;InvEXEfile ; 11
DW TXTERR.InvEXEver, ErrorLp ;InvEXEver ; 12
DW 0, 0 ; 13
DW TXTERR.NotReady, InputDrive ;NotReady ; 14
DW 0, 0 ; 15
DW 0, 0 ; 16
DW 0, 0 ; 17
DW TXTERR.WriteProtect, ErrorLp ;WriteProtect ; 18 ; [ ] 26/06/2024
DW 0, 0 ; 19
DW 0, 0 ; 1A
DW 0, 0 ; 1B
DW TXTERR.NotReady, InputDrive ;NotReady ; 1C
DW 0, 0 ; 1D
DW TXTERR.NoMemory, ErrorLp ;NoMemory ; 1E
DW 0, 0 ; 1F
DW 0, 0 ; 20
DW 0, 0 ; 21
DW 0, 0 ; 22
DW TXTERR.ToManyFilesDir,ErrorLp ;ToManyFilesDir ; 23
; always last in the table:
.error: DW UnknownError ; if no ERROR in this table then will show this message
.UNKerror: DW TXTERR.UnknownError, ErrorLp ;UnknownError ; if no ERROR in this table then will show this message
; ¤ «¥¥ ¢­ãâ७­¨¥ ®è¨¡ª¨ FN
.PlugNotFound DW TXTERR.PlugNotFound, ErrorLp
;--------------------------------------------------------------
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
SETERRTEXT MACRO X,TEXT
DW X ; X ¯®§¨æ¨ï ¯¥ç â¨
DB TEXT,0 ; áâப  ¡¥§ 0 ¢ ª®­æ¥
ENDM
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
TXTERR
.PlugNotFound SETERRTEXT 56,"Plugin not found"
.InvDrive SETERRTEXT 24 | 0x8000,"Invalid drive letter:"
.FileNFound SETERRTEXT 60,"File not found"
.InvPath SETERRTEXT 70,"Invalid path"
.FILEexists SETERRTEXT 72,"File exists"
.ROOToverflow SETERRTEXT 64,"ROOT overflow"
.NoDiskSpace SETERRTEXT 62,"No disk space"
.DIRnotEmpty SETERRTEXT 40,"Directory is not empty"
.InvMedia SETERRTEXT 46 | 0x8000,"Invalid media:"
.DIRexists SETERRTEXT 56,"Directory exists"
.InvName SETERRTEXT 66,"Invalid name"
.InvEXEfile SETERRTEXT 60,"Invalid EXE file"
.InvEXEver SETERRTEXT 40,"Unsupport EXE version"
.NotReady SETERRTEXT 36 | 0x8000,"Drive not ready:"
.WriteProtect SETERRTEXT 37,"Drive is write protected"
.NoMemory SETERRTEXT 52,"No memory space"
.ToManyFilesDir SETERRTEXT 30,"Too many directory entries"
.UnknownError SETERRTEXT 60,"Unknown Error"
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"
ADD A,'A'
LD (CurDrv),A
LD IX,DriveStr
LD HL,ErrorTab1
@ -125,7 +164,7 @@ InputDrive PUSH IY
CALL SetClock
LD A,(CurDrv)
RES 5,A
SUB "A"
SUB 'A'
PUSH IY
SPDSS DSSF.CHDISK
POP IY
@ -139,7 +178,7 @@ InputDrive PUSH IY
LD A,0x01
RET
ErrorTab1 DEFW 0x011C,0x0164,0x0076,0x0084,0x01,0x0000,InputLine.InpLnExtN,0x0000
ErrorTab1 DEFW 284,356,118,132,%0000000000000001,%0000000000000000,InputLine.InpLnExtN,0
DEFW 0x8000
DriveStr DEFB 0x01,0x00,0x00,0x00
@ -150,15 +189,6 @@ DriveStr DEFB 0x01,0x00,0x00,0x00
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
@ -186,141 +216,10 @@ ErrorExt0
LD A,0x01
RET
ErrorTab2 DEFW 0x011C,0x0164,0x0076,0x0084,0x21,0x0000,ErrorExt0,0x0000
ErrorTab2 DEFW 284,356,118,132,%0000000000100001,%0000000000000000,ErrorExt0,0
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
@ -342,5 +241,5 @@ ErrorExt
SUB A
RET
ErrorTab3 DEFW 0x011C,0x0164,0x0076,0x0084,0x21,0x0000,ErrorExt,0x0000
ErrorTab3 DEFW 284,356,118,132,%0000000000100001,%0000000000000000,ErrorExt,0
DEFW 0x8000

File diff suppressed because it is too large Load Diff

View File

@ -1,9 +1,9 @@
; LAST UPDATE: 25.06.2025 savelij
; LAST UPDATE: 25.07.2025 savelij
;[]==========================================================[]
FileInfoR LD A,(IY+PANEL.EFL)
OR (IY+PANEL.EFH)
FileInfoR LD A,(IY+PANEL.FILES_ALL)
OR (IY+PANEL.FILES_ALL + 1)
RET Z
BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
RET NZ
@ -16,10 +16,10 @@ FileInfoR LD A,(IY+PANEL.EFL)
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)
LD L,(IY+PANEL.FIRST_FILE)
LD H,(IY+PANEL.FIRST_FILE + 1)
LD E,(IY+PANEL.CURR_FILE)
LD D,(IY+PANEL.CURR_FILE + 1)
ADD HL,DE
ADD HL,HL
ADD HL,HL
@ -131,7 +131,7 @@ FName EQU $ - STRLEN(" ") - 1
FAttrib EQU $ - STRLEN(" ") - 1
W_TEXT 10,44,COLORP.HIGHGRAY,"Len: "
FLen EQU $ - STRLEN(" ") - 1
W_TEXT 10,56,COLORP.HIGHGRAY,"Data: "
W_TEXT 10,56,COLORP.HIGHGRAY,"Date: "
FData EQU $ - STRLEN(" ") - 1
FTime EQU $ - STRLEN(" ") - 1
W_TEXT 10,68,COLORP.HIGHGRAY,"First cluster: "
@ -162,8 +162,8 @@ FileInfoExt:
FAtributs: DEFB "--ad-shr"
;[]==========================================================[]
PrintFileR LD A,(IY+PANEL.EFL)
OR (IY+PANEL.EFH)
PrintFileR LD A,(IY+PANEL.FILES_ALL)
OR (IY+PANEL.FILES_ALL + 1)
RET Z
BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
RET NZ
@ -176,10 +176,10 @@ PrintFileR LD A,(IY+PANEL.EFL)
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)
LD L,(IY+PANEL.FIRST_FILE)
LD H,(IY+PANEL.FIRST_FILE + 1)
LD E,(IY+PANEL.CURR_FILE)
LD D,(IY+PANEL.CURR_FILE + 1)
ADD HL,DE
ADD HL,HL
ADD HL,HL
@ -236,7 +236,7 @@ PrintFileR LD A,(IY+PANEL.EFL)
W_END
PUSH IY
POP HL
LD DE,PANEL.CURRPATH
LD DE,PANEL.CURR_PATH
ADD HL,DE
LD DE,WorkBuffer
SUB A
@ -277,10 +277,10 @@ PrintFileR LD A,(IY+PANEL.EFL)
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
InitPrn LD (IX + PROC.MAX_PAGES),L
LD (IX + PROC.MAX_PAGES + 1),H
LD (IX + PROC.MAX_PAGES + 2),E
LD (IX + PROC.MAX_PAGES + 3),0x00
CALL InitProcess
LD HL,PrnFileName
SPDSS DSSF.OPEN,,1
@ -410,19 +410,19 @@ NxtPrnProc LD A,E
PUSH DE
PUSH BC
LD IX,ProcessFPrn
LD L,(IX+PROC.CURL1)
LD H,(IX+PROC.CURH1)
LD L,(IX + PROC.CURR_PAGE)
LD H,(IX + PROC.CURR_PAGE + 1)
INC HL
LD (IX+PROC.CURL1),L
LD (IX+PROC.CURH1),H
LD (IX + PROC.CURR_PAGE),L
LD (IX + PROC.CURR_PAGE + 1),H
LD A,H
OR L
JR NZ,.L1
LD L,(IX+PROC.CURL2)
LD H,(IX+PROC.CURH2)
LD L,(IX + PROC.CURR_PAGE + 2)
LD H,(IX + PROC.CURR_PAGE + 3)
INC HL
LD (IX+PROC.CURL2),L
LD (IX+PROC.CURH2),H
LD (IX + PROC.CURR_PAGE + 2),L
LD (IX + PROC.CURR_PAGE + 3),H
.L1 CALL PrnProcess
POP BC
POP DE

View File

@ -1,9 +1,9 @@
; LAST UPDATE: 27.03.2025 savelij
; LAST UPDATE: 24.07.2025 savelij
;[]==========================================================[]
QSearchR LD A,(IY+PANEL.EFL)
OR (IY+PANEL.EFH)
QSearchR LD A,(IY+PANEL.FILES_ALL)
OR (IY+PANEL.FILES_ALL + 1)
RET Z
SETPORT WINSP.Y_PORT,0xC0
LD HL,SearchN
@ -13,8 +13,8 @@ QSearchR LD A,(IY+PANEL.EFL)
INC HL
DJNZ .L1
LD (SrchLen),A
LD L,(IY+PANEL.XL)
LD H,(IY+PANEL.XH)
LD L,(IY+PANEL.X)
LD H,(IY+PANEL.X + 1)
LD DE,0x000A
ADD HL,DE
LD (.SrchX1),HL
@ -144,10 +144,10 @@ 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)
LD L,(IY+PANEL.CURR_FILE)
LD H,(IY+PANEL.CURR_FILE + 1)
LD C,(IY+PANEL.FIRST_FILE)
LD B,(IY+PANEL.FIRST_FILE + 1)
ADD HL,BC
SBC HL,DE
EX DE,HL
@ -155,8 +155,8 @@ FoundSFile PUSH HL
PUSH HL
CALL ResInvert
POP HL
LD C,(IY+PANEL.FPL)
LD B,(IY+PANEL.FPH)
LD C,(IY+PANEL.FILES_PAGE)
LD B,(IY+PANEL.FILES_PAGE + 1)
LD DE,0x0000
EX DE,HL
OR A
@ -169,12 +169,12 @@ FoundSFile PUSH HL
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
LD (IY+PANEL.CURR_FILE),L
LD (IY+PANEL.CURR_FILE + 1),H
LD C,(IY+PANEL.FIRST_FILE)
LD B,(IY+PANEL.FIRST_FILE + 1)
LD (IY+PANEL.FIRST_FILE),E
LD (IY+PANEL.FIRST_FILE + 1),D
EX DE,HL
OR A
SBC HL,BC
@ -183,7 +183,7 @@ FoundSFile PUSH HL
CALL PrnFileInfo
PUSH IY
POP IX
LD DE,PANEL.BARXL
LD DE,PANEL.BAR_X
ADD IX,DE
LD A,(IY+PANEL.VIEWFLAG)
AND VIEWFLAG.MASK

View File

@ -1,9 +1,9 @@
; LAST UPDATE: 02.06.2025 savelij
; LAST UPDATE: 25.07.2025 savelij
;[]==========================================================[]
MarkFileR LD A,(IY+PANEL.EFL)
OR (IY+PANEL.EFH)
MarkFileR LD A,(IY+PANEL.FILES_ALL)
OR (IY+PANEL.FILES_ALL + 1)
RET Z
BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
RET NZ
@ -15,10 +15,10 @@ MarkFileR LD A,(IY+PANEL.EFL)
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)
LD L,(IY+PANEL.FIRST_FILE)
LD H,(IY+PANEL.FIRST_FILE + 1)
LD E,(IY+PANEL.CURR_FILE)
LD D,(IY+PANEL.CURR_FILE + 1)
ADD HL,DE
ADD HL,HL ; *2
ADD HL,HL ; *4
@ -64,10 +64,10 @@ UnSelectFile: LD IXL,0x00
.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)
LD L,(IY+PANEL.FIRST_FILE)
LD H,(IY+PANEL.FIRST_FILE + 1)
LD E,(IY+PANEL.CURR_FILE)
LD D,(IY+PANEL.CURR_FILE + 1)
ADD HL,DE
ADD HL,HL ; *2
ADD HL,HL ; *4
@ -85,25 +85,29 @@ UnSelectFile: LD IXL,0x00
POP HL
BIT DIR.B_Dir,C ; íâ® ¤¨à ?
IF MARK_DIR
CALL NZ,COUNTING_DIR
CALL NZ,COUNTING_DIR ; ¨§¬¥à¥­¨¥ à §¬¥à  ¤¨àë
ELSE
JR NZ,.MrFile1
JR NZ,.MrFile1 ; ¤¨à¥ª®à¨¨ ª®¯¨à®¢ âì ­¥ 㬥¥¬, ⮫쪮 ä ©«ë
ENDIF
; íâ® ä ©«
LD B,(HL) ; áâ à®¥ á®áâ®ï­¨¥ ¯®¬¥âª¨ ä ©« 
LD A,IXL
LD (HL),A ; ­®¢®¥ á®áâ®ï­¨¥ ¯®¬¥âª¨ ä ©« 
LD A,C
LD DE,WorkBuffer
PUSH BC
LD BC,FileHDR.SIZE
LDIR
BIT DIR.B_Dir,A ; ä ©« ¨«¨ ¤¨à 
JR Z,.L8
IF MARK_DIR
; ª®¯¨à㥬 à §¬¥à ¢ ¡ ©â å ¨§ à §¬¥à  ¤¨àë
LD HL,COUNTING_DIR.FILES_SIZE
LD DE,WorkBuffer + FileHDR.SizeBytes
LD BC,DWORD
LDIR
ENDIF
POP BC
.L8 POP BC
.MrFile1 POP AF
SETPORT WINSP.CPU3,,0
IF MARK_DIR = 0
@ -116,8 +120,8 @@ UnSelectFile: LD IXL,0x00
BIT VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG)
JR NZ,.MarkFull
; ¯à¨ ªà âª®¬ ¯®ª §¥ ä ©«®¢
LD L,(IY+PANEL.CFL)
LD H,(IY+PANEL.CFH)
LD L,(IY+PANEL.CURR_FILE)
LD H,(IY+PANEL.CURR_FILE + 1)
LD E,L
LD D,H
ADD HL,HL
@ -149,8 +153,8 @@ UnSelectFile: LD IXL,0x00
JR .MarkExit2
; ¯à¨ ¯®«­®¬ ¯®ª §¥ ä ©«®¢
.MarkFull LD L,(IY+PANEL.CFL)
LD H,(IY+PANEL.CFH)
.MarkFull LD L,(IY+PANEL.CURR_FILE)
LD H,(IY+PANEL.CURR_FILE + 1)
ADD HL,HL
ADD HL,HL
ADD HL,HL
@ -173,57 +177,57 @@ UnSelectFile: LD IXL,0x00
JR Z,.MarkExit2
; ãáâ ­®¢ª  ¢ë¡®à ä ©« 
.MarkExit1 LD IX,WorkBuffer
LD L,(IY + PANEL.MFL)
LD H,(IY + PANEL.MFH)
LD L,(IY + PANEL.FILES_MARK)
LD H,(IY + PANEL.FILES_MARK + 1)
INC HL
LD (IY + PANEL.MFL),L
LD (IY + PANEL.MFH),H ; ®¡­®¢«¥­¨¥ ª®«¨ç¥á⢠ ¯®¬¥ç¥­­ëå ä ©«®¢
LD (IY + PANEL.FILES_MARK),L
LD (IY + PANEL.FILES_MARK + 1),H ; ®¡­®¢«¥­¨¥ ª®«¨ç¥á⢠ ¯®¬¥ç¥­­ëå ä ©«®¢
LD L,(IX + FileHDR.SizeBytes)
LD H,(IX + FileHDR.SizeBytes + 1)
LD E,(IY + PANEL.MBL1)
LD D,(IY + PANEL.MBH1)
LD E,(IY + PANEL.BYTES_MARK)
LD D,(IY + PANEL.BYTES_MARK + 1)
XOR A ; [ ] fat32
ADD HL,DE
LD (IY + PANEL.MBL1),L
LD (IY + PANEL.MBH1),H ; ®¡­®¢«¥­¨¥ à §¬¥à  ¯®¬¥ç¥­­ëå ä ©«®¢ ¡¨âë 15-0
LD (IY + PANEL.BYTES_MARK),L
LD (IY + PANEL.BYTES_MARK + 1),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)
LD E,(IY + PANEL.BYTES_MARK + 2)
LD D,(IY + PANEL.BYTES_MARK + 3)
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
ADC A,(IY + PANEL.BYTES_MARK_H)
LD (IY + PANEL.BYTES_MARK_H),A ; ®¡­®¢«¥­¨¥ à §¬¥à  ¯®¬¥ç¥­­ëå ä ©«®¢ ¡¨âë 32-39
LD (IY + PANEL.BYTES_MARK + 2),L
LD (IY + PANEL.BYTES_MARK + 3),H ; ®¡­®¢«¥­¨¥ à §¬¥à  ¯®¬¥ç¥­­ëå ä ©«®¢ ¡¨âë 31-15
RET
; á­ï⨥ ¢ë¡®à  ä ©« 
.MarkExit2 LD IX,WorkBuffer
LD L,(IY + PANEL.MFL)
LD H,(IY + PANEL.MFH)
LD L,(IY + PANEL.FILES_MARK)
LD H,(IY + PANEL.FILES_MARK + 1)
DEC HL
LD (IY + PANEL.MFL),L
LD (IY + PANEL.MFH),H
LD L,(IY + PANEL.MBL1)
LD H,(IY + PANEL.MBH1)
LD (IY + PANEL.FILES_MARK),L
LD (IY + PANEL.FILES_MARK + 1),H
LD L,(IY + PANEL.BYTES_MARK)
LD H,(IY + PANEL.BYTES_MARK + 1)
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 (IY + PANEL.BYTES_MARK),L
LD (IY + PANEL.BYTES_MARK + 1),H
LD L,(IY + PANEL.BYTES_MARK + 2)
LD H,(IY + PANEL.BYTES_MARK + 3)
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
ADC A,(IY + PANEL.BYTES_MARK_H)
LD (IY + PANEL.BYTES_MARK_H),A
LD (IY + PANEL.BYTES_MARK + 2),L
LD (IY + PANEL.BYTES_MARK + 3),H
RET
;[]==========================================================[]
@ -238,8 +242,8 @@ MarkGroupRN: LD HL,SetInvert
PUSH HL
LD A,0x01
SelectGroup: LD (SelMode),A
LD A,(IY+PANEL.EFL)
OR (IY+PANEL.EFH)
LD A,(IY+PANEL.FILES_ALL)
OR (IY+PANEL.FILES_ALL + 1)
RET Z
BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
RET NZ
@ -301,13 +305,13 @@ MarkGNext
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)
LD L,(IY+PANEL.BYTES_MARK)
LD H,(IY+PANEL.BYTES_MARK + 1)
LD E,(IY+PANEL.BYTES_MARK + 2)
LD D,(IY+PANEL.BYTES_MARK + 3)
LD A,(IY+PANEL.BYTES_MARK_H) ; [ ] FAT32
LD C,(IY+PANEL.FILES_MARK)
LD B,(IY+PANEL.FILES_MARK + 1)
EXX
EX AF,AF' ; [ ] fat32
PUSH IY
@ -360,13 +364,13 @@ Select8: LD DE,FileHDR.SIZE
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
LD (IY+PANEL.BYTES_MARK),L
LD (IY+PANEL.BYTES_MARK + 1),H
LD (IY+PANEL.BYTES_MARK + 2),E
LD (IY+PANEL.BYTES_MARK + 3),D
LD (IY+PANEL.BYTES_MARK_H),A ; [ ] FAT32
LD (IY+PANEL.FILES_MARK),C
LD (IY+PANEL.FILES_MARK + 1),B
EXX
POP AF
SETPORT WINSP.CPU3,,0
@ -463,8 +467,8 @@ SMask21 LD (DE),A
SelectAllR: CALL ResInvert
SelectAllRN: LD HL,SetInvert
PUSH HL
LD A,(IY+PANEL.EFL)
OR (IY+PANEL.EFH)
LD A,(IY+PANEL.FILES_ALL)
OR (IY+PANEL.FILES_ALL + 1)
RET Z
BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
RET NZ
@ -515,22 +519,22 @@ SelectAllRN: LD HL,SetInvert
POP AF
SETPORT WINSP.CPU3,,0
EXX
LD E,(IY+PANEL.MFL)
LD D,(IY+PANEL.MFH)
LD E,(IY+PANEL.FILES_MARK)
LD D,(IY+PANEL.FILES_MARK + 1)
OR A
SBC HL,DE
RET Z
ADD HL,DE
LD (IY+PANEL.MFL),L
LD (IY+PANEL.MFH),H
LD (IY+PANEL.FILES_MARK),L
LD (IY+PANEL.FILES_MARK + 1),H
EXX
LD (IY+PANEL.MBL1),L
LD (IY+PANEL.MBH1),H
LD (IY+PANEL.MBL2),E
LD (IY+PANEL.MBH2),D
LD (IY+PANEL.BYTES_MARK),L
LD (IY+PANEL.BYTES_MARK + 1),H
LD (IY+PANEL.BYTES_MARK + 2),E
LD (IY+PANEL.BYTES_MARK + 3),D
; [ ] FAT32
EX AF,AF'
LD (IY+PANEL.MBL3),A
LD (IY+PANEL.BYTES_MARK_H),A
CALL PrintDIR
JP PrnFileInfo
@ -538,19 +542,19 @@ SelectAllRN: LD HL,SetInvert
UnSelectAllR: CALL ResInvert
UnSelectAllRN: LD HL,SetInvert
PUSH HL
LD A,(IY+PANEL.EFL)
OR (IY+PANEL.EFH)
LD A,(IY+PANEL.FILES_ALL)
OR (IY+PANEL.FILES_ALL + 1)
RET Z
BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
RET NZ
LD A,(IY+PANEL.MFL)
OR (IY+PANEL.MFH)
LD A,(IY+PANEL.FILES_MARK)
OR (IY+PANEL.FILES_MARK + 1)
RET Z
PUSH IY
POP HL
LD BC,PANEL.MFL
LD BC,PANEL.FILES_MARK
ADD HL,BC
LD B,PANEL.FILEMASK - PANEL.MFL
LD B,PANEL.FILE_MASK - PANEL.FILES_MARK
.L2 LD (HL),0
INC HL
DJNZ .L2
@ -580,8 +584,8 @@ UnSelA1: RES 0,(HL)
InvertSelectR: CALL ResInvert
InvertSelectRN: LD HL,SetInvert
PUSH HL
LD A,(IY+PANEL.EFL)
OR (IY+PANEL.EFH)
LD A,(IY+PANEL.FILES_ALL)
OR (IY+PANEL.FILES_ALL + 1)
RET Z
BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
RET NZ
@ -599,13 +603,13 @@ InvertSelectRN: LD HL,SetInvert
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)
LD L,(IY + PANEL.BYTES_MARK)
LD H,(IY + PANEL.BYTES_MARK + 1)
LD E,(IY + PANEL.BYTES_MARK + 2)
LD D,(IY + PANEL.BYTES_MARK + 3)
LD A,(IY + PANEL.BYTES_MARK_H) ; [ ] FAT32
LD C,(IY + PANEL.FILES_MARK)
LD B,(IY + PANEL.FILES_MARK + 1)
EXX
EX AF,AF' ; [ ] fat32
.loop: BIT DIR.B_Dir,(IX + FileHDR.Attr) ;!HARDCODE Dir
@ -624,13 +628,13 @@ InvertSelectRN: LD HL,SetInvert
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
LD (IY + PANEL.BYTES_MARK),L
LD (IY + PANEL.BYTES_MARK + 1),H
LD (IY + PANEL.BYTES_MARK + 2),E
LD (IY + PANEL.BYTES_MARK + 3),D
LD (IY + PANEL.BYTES_MARK_H),A ; [ ] FAT32
LD (IY + PANEL.FILES_MARK),C
LD (IY + PANEL.FILES_MARK + 1),B
EXX
LD A,B
OR A
@ -677,13 +681,25 @@ SUB_SIZE: EX AF,AF' ; [ ] fat32
IF MARK_DIR
; ¯®¤áç¥â ¢ ¡ ©â å à §¬¥à  ®â¬¥ç¥­­®© ¤¨à¥ªâ®à¨¨
COUNTING_DIR PUSH IX
; HL -  ¤à¥á ®¯¨á â¥«ï ¤¨àë ¢ áâà ­¨æ¥ ¯ ­¥«¨ ª®â®àãî ¬¥àïâì
COUNTING_DIR
.OLDPATH EQU WorkBuffer + 0x300 ; á®åà ­¥­­ë© ⥪ã騩 ¯ãâì
.CURRPATH EQU WorkBuffer + 0x200 ; ¢à¥¬¥­­®© ⥪ã騩 ¯ãâì
PUSH IX
PUSH IY
PUSH HL
PUSH BC
GETPORT WINSP.CPU3
PUSH AF
PUSH HL
BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
LD A,(RAMPAGES.LEFTPANEL)
JR Z,.L1
LD A,(RAMPAGES.RIGHTPANEL)
.L1 ; ¢ª«îç ¥¬ ¯ £ã á ¤¨à¥ªâ®à¨¥© ⥪ã饩 ¯ ­¥«¨
SETPORT WINSP.CPU3,,0
XOR A
LD H,A
LD L,A
@ -694,7 +710,7 @@ COUNTING_DIR PUSH IX
LD (.CURR_DIRNAME),HL
; á®åà ­¥­¨¥ ⥪ã饣® ¯ã⨠¤«ï ¢®§¢à â 
SPDSS DSSF.CURDISK
LD HL,WorkBuffer + 0x300 ; á®åà ­¥­ë© ¯ãâì ¤«ï ¢®§¢à â 
LD HL,.OLDPATH ; á®åà ­¥­ë© ¯ãâì ¤«ï ¢®§¢à â 
ADD A,'A'
LD (HL),A
INC HL
@ -702,7 +718,7 @@ COUNTING_DIR PUSH IX
INC HL
SPDSS DSSF.CURDIR
POP DE
JR C,.END_COUNT
JP C,.END_COUNT
; ¢å®¤ ¢ ¤¨à¥ªâ®à¨î
LD HL,FileHDR.Name
ADD HL,DE
@ -751,7 +767,7 @@ COUNTING_DIR PUSH IX
; ¢®§¢à â ⥪ã饣® ¯ãâ¨
.END_COUNT POP AF
SETPORT WINSP.CPU3,,0
LD HL,WorkBuffer + 0x300 ; á®åà ­¥­ë© ¯ãâì ¤«ï ¢®§¢à â 
LD HL,.OLDPATH ; á®åà ­¥­ë© ¯ãâì ¤«ï ¢®§¢à â 
SPDSS DSSF.CHDIR
POP BC
POP HL
@ -782,7 +798,7 @@ COUNTING_DIR PUSH IX
.SP1 PUSH IX
SPDSS DSSF.CHDIR
SPDSS DSSF.CURDISK
LD HL,WorkBuffer + 0x200
LD HL,.CURRPATH
ADD A,'A'
LD (HL),A
INC HL
@ -846,7 +862,7 @@ COUNTING_DIR PUSH IX
DIR.M_ReadOnly + \
DIR.M_Dir
.FFF1 LD HL,.FILES_MASK
LD DE,WorkBuffer + 0x300
LD DE,.OLDPATH
PUSH DE
PUSH IX
SPDSS DSSF.F_FIRST,0
@ -855,7 +871,7 @@ COUNTING_DIR PUSH IX
RET
; ¯®¨áª á«¥¤ãî饣® ®¯¨á â¥«ï
.F_NEXT LD DE,WorkBuffer + 0x300
.F_NEXT LD DE,.OLDPATH
PUSH DE
PUSH IX
SPDSS DSSF.F_NEXT
@ -869,7 +885,208 @@ COUNTING_DIR PUSH IX
.DIR_NAME DZ " "
.CURR_DIRNAME DW 0
; ¯®¤áç¥â à §¬¥à  ¤¨à¥ªâ®à¨¨
; <20>  ¢å®¤¥:
; HL -  ¤à¥á ®¯¨á â¥«ï ¤¨àë ¢ áâà ­¨æ¥ ¯ ­¥«¨ ª®â®àãî ¬¥àïâì
; <20>  ¢ë室¥:
; BCDE' - à §¬¥à ¢ ¡ ©â å
GetDirSizeR CALL COUNTING_DIR
LD HL,COUNTING_DIR.FILES_SIZE
JP GET_DWORD
CALL GET_DWORD
EXX
RET
; á®§¤ ­¨¥ ¯ ¯®ª ­  ¯à¨¥¬­¨ª¥
; HL -  ¤à¥á ®¯¨á â¥«ï ¤¨àë ¢ áâà ­¨æ¥ ¯ ­¥«¨ ª®â®àãî ª®¯¨à®¢ âì
MkdirsDstR
.OLDPATH EQU WorkBuffer + 0x300 ; á®åà ­¥­­ë© ⥪ã騩 ¯ãâì
.CURRPATHSRC EQU WorkBuffer + 0x200 ; ¢à¥¬¥­­®© ⥪ã騩 ¯ãâì ¨áâ®ç­¨ª 
.CURRPATHDST EQU WorkBuffer + 0x100 ; ¢à¥¬¥­­®© ⥪ã騩 ¯ãâì ¯à¨¥¬­¨ª 
.FINDBUF EQU WorkBuffer
PUSH IX
PUSH IY
GETPORT WINSP.CPU3
PUSH AF
LD (.OLDSP),SP
PUSH HL
BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
LD DE,RightPanel ; ¤«ï ¯ã⨠ªã¤  ª®¯¨à®¢ âì
LD A,(RAMPAGES.LEFTPANEL) ; ¨§ ª ª®© áâà ­¨æë ¯ ­¥«¨ ¡à âì ¯ãâì
JR Z,.L1
LD DE,LeftPanel ; ¤«ï ¯ã⨠ªã¤  ª®¯¨à®¢ âì
LD A,(RAMPAGES.RIGHTPANEL) ; ¨§ ª ª®© áâà ­¨æë ¯ ­¥«¨ ¡à âì ¯ãâì
.L1 ; ¢ª«îç ¥¬ ¯ £ã á ¤¨à¥ªâ®à¨¥© ⥪ã饩 ¯ ­¥«¨
SETPORT WINSP.CPU3,,0
LD HL,PANEL.CURR_PATH
ADD HL,DE ; ®âªã¤  ¯ãâì ¯à¨¥¬­¨ª  ¢§ïâì
LD DE,.CURRPATHDST ; ¡ãä¥à ¯ã⨠¯à¨¥¬­¨ª 
CALL .COPYNAME2PATH
LD (.ENDPATHDST),DE ;  ¤à¥á 墮áâ  ¯ã⨠¯à¨¥¬­¨ª 
; á®åà ­¥­¨¥ ⥪ã饣® ¯ã⨠¤«ï ¢®§¢à â 
SPDSS DSSF.CURDISK
LD HL,.OLDPATH ; á®åà ­¥­­ë© ¯ãâì ¤«ï ¢®§¢à â 
ADD A,'A'
LD (HL),A
INC HL
LD (HL),':'
INC HL
SPDSS DSSF.CURDIR
POP DE ;  ¤à¥á ®¯¨á â¥«ï ¤¨àë ¢ áâà ­¨æ¥ ¯ ­¥«¨ ª®â®àãî ª®¯¨à®¢ âì
; JP C,ERROR ;COUNTING_DIR.END_COUNT
; ª®¯¨à®¢ ­¨¥ ¨¬¥­¨ ¤¨à¥ªâ®à¨¨ ¤«ï ª®¯¨à®¢ ­¨ï
LD HL,FileHDR.Name
ADD HL,DE
LD DE,COUNTING_DIR.DIR_NAME
LD BC,FileHDR.Name_Size
LDIR ; § ¡à «¨ ¨¬ï ¤¨àë ¤«ï ª®¯¨à®¢ ­¨ï
EX DE,HL
CALL .CUTOFFSPACES ; ®âá¥ç¥­¨¥ ¯à®¡¥«®¢
; ¯¥à¥­®á ⥪ã饣® ¯ã⨠¨áâ®ç­¨ª 
LD HL,.OLDPATH
LD DE,.CURRPATHSRC
CALL .COPYNAME2PATH ; ᪮¯¨à®¢ «¨ ¯ãâì ¨áâ®ç­¨ª 
LD (.ENDPATHSRC),DE ;  ¤à¥á 墮áâ  ¯ã⨠¨áâ®ç­¨ª 
; ¤®¡ ¢«¥­¨¥ ¨¬¥­¨ ¤¨àë ¤«ï ª®¯¨à®¢ ­¨ï ¢ ¯ãâì ¨áâ®ç­¨ª 
LD HL,(.ENDPATHSRC)
LD DE,COUNTING_DIR.DIR_NAME
CALL .ADDNAME2PATH
LD (.ENDPATHSRC),DE ;  ¤à¥á 墮áâ  ¯ã⨠¨áâ®ç­¨ª 
; ¤®¡ ¢«¥­¨¥ ¨¬¥­¨ ¤¨àë ¤«ï ª®¯¨à®¢ ­¨ï ¢ ¯ãâì ¯à¨¥¬­¨ª 
LD HL,(.ENDPATHDST)
LD DE,COUNTING_DIR.DIR_NAME
CALL .ADDNAME2PATH
LD (.ENDPATHDST),DE
; á®§¤ ­¨¥ ¤¨àë ¢ ¯à¨¥¬­¨ª¥
LD HL,.CURRPATHDST
SPDSS DSSF.MKDIR ; á®§¤ «¨ ¤¨à㠯ਥ¬­¨ª 
JR NC,.L3
CP ERR_DSS.DIR_EXISTS ; ¥á«¨ ¤¨à  㦥 ¥áâì ¨£­®à¨¬ ®è¨¡ªã
; JP C,ERROR
.L3
; TODO 横«¨ç¥áª¨© ¯®¨áª ¤¨à¥ªâ®à¨© á á®§¤ ­¨¥¬ ­  ¯à¨¥¬­¨ª¥
LD HL,.CURRPATHSRC
SPDSS DSSF.CHDIR ; ¢å®¤ ¢ ¤¨àã ¨áâ®ç­¨ª 
CALL .FINDFIRSTSRCDIR ; ¯®¨áª ¯¥à¢®£® ®¯¨á â¥«ï
JP C,.ENDCOPY ; ¡®«ìè¥ ¤¨à¥ªâ®à¨© ­¥â, ¢ë室¨¬
; ¯®¨áª ¤¨à¥ªâ®à¨©
.L2 CALL .FINDNEXTSRCDIR ; ¯®¨áª á«¥¤ãî饣® ®¯¨á â¥«ï
JP C,.ENDFINDNEXT ; ¯®¨áª ®ª®­ç¥­?
LD HL,.FINDBUF + FFIRST.Name
LD A,(HL)
CP '.' ; ®¯¨á â¥«¨ "." ¨ ".." ¨£­®à¨¬
JR Z,.L2
LD DE,.TMPNAMEDIR
PUSH DE
CALL .COPYNAME2PATH
LD HL,(.ENDPATHDST)
POP DE
CALL .ADDNAME2PATH
LD HL,.CURRPATHDST
SPDSS DSSF.MKDIR ; á®§¤ ¥¬ ¤¨àã ­  ¯à¨¥¬­¨ª¥
; JP C,ERROR
LD HL,.CURRPATHSRC
SPDSS DSSF.CHDIR ; ¢®§¢à é ¥¬ ¯ãâì ­  ¨áâ®ç­¨ª
; JP C,ERROR
JR .L2 ; ¨é¥¬ á«¥¤ãî騩
; § ¢¥à襭¨¥ ¨ ¢ë室
JP COUNTING_DIR.END_COUNT;RestoreDIR
; LD A,(RAMPAGES.FLX)
; SETPORT WINSP.CPU3,,0
.ENDFINDNEXT
JR $
; ¯®¨áª ¯¥à¢®© ¤¨àë ¢ ⥪ã饩 ¯®¤¤¨à¥ªâ®à¨¨
.FINDFIRSTSRCDIR
LD HL,COUNTING_DIR.FILES_MASK
LD DE,.FINDBUF
SPDSS DSSF.F_FIRST,1,DIR.M_Dir
RET
.FINDNEXTSRCDIR
LD DE,.FINDBUF
SPDSS DSSF.F_NEXT
RET
; ¤®¡ ¢«¥­¨¥ ¨¬¥­¨ ¢ áâப㠯ãâ¨
; HL - ªã¤  ¤®¡ ¢«ïâì (墮áâ ⥪ã饣® ¯ãâ¨)
; DE - ®âªã¤  ¨¬ï ¡à âì
.ADDNAME2PATH CALL .CHECK_BSLASH
LD (HL),'\\'
INC HL
EX DE,HL
; ª®¯¨à®¢ ­¨¥ ¨¬¥­¨ ¨§ ¡ãä¥à 
.COPYNAME2PATH XOR A
.CNP2 CP (HL)
JR Z,.CNP1
LDI
JR .CNP2
.CNP1 LD (DE),A
RET
.NAME2DIRNAME
; ¯à®¢¥àª  ­  BACKSLASH
.CHECK_BSLASH DEC HL
LD A,(HL)
CP '\\'
RET Z
INC HL
RET
; ®âá¥ç¥­¨¥ ¯à®¡¥«®¢ ¢ ¨¬¥­¨
.CUTOFFSPACES LD A,' '
.COS2 DEC HL
CP (HL)
JR Z,.COS2
INC HL
LD (HL),0
RET
; ®âá¥ç¥­¨¥ ¨¬¥­¨ ¤¨àë ¢ áâப¥ ¯ãâ¨
.DELNAME2PATH LD A,'\\'
.COB1 DEC HL
CP (HL)
JR NZ,.COB1
LD (HL),0
RET
; ¢ë室 ¨§ ª®¯¨à®¢ ­¨ï ¤¨à¥ªâ®à¨©
.ENDCOPY LD SP,0
.OLDSP EQU $-2
LD HL,.OLDPATH
SPDSS DSSF.CHDIR
POP AF
SETPORT WINSP.CPU3,,0
POP IY
POP IX
RET
.ENDPATHSRC DW 0 ;  ¤à¥á 墮áâ  ¯ã⨠¨áâ®ç­¨ª 
.ENDPATHDST DW 0 ;  ¤à¥á 墮áâ  ¯ã⨠¯à¨¥¬­¨ª 
.TMPNAMEDIR DB 8 DUP 0
ENDIF
; C:/DEV/
; /CAMEL401
; /DEMON
; /MASM80
; /OASM028
; /SOLID
; /DOC
; /EXAMPLES
; /INCLUDE
; /SRC
; /CLIB
; /BUILD
; /SPFORTH
; /F83
; /F99
; /TASM

View File

@ -1,43 +1,28 @@
; LAST UPDATE: 11.03.2025 savelij
; LAST UPDATE: 18.07.2025 savelij
;[]==========================================================[]
InitExtention: ;[ ] 07/10/23
; LD (InitExt.path),HL
; EX HL,DE
;
LD HL,.ExtName1
InitExtention: LD HL,INIFILES.ExtName1
LD DE,fn_ext
CALL InitExt
LD HL,.ExtName2
LD HL,INIFILES.ExtName2
LD DE,fnview_ext
CALL InitExt
LD HL,.ExtName3
LD HL,INIFILES.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 (.ExtHandle),A
LD HL,WorkBuffer
LD DE,WorkBuffer_Size
SPDSS DSSF.READ
RET C
OR A
RET P
LD A,(ExtHandle)
LD A,0
.ExtHandle EQU $-1
PUSH DE
SPDSS DSSF.CLOSE
POP BC
@ -51,8 +36,6 @@ InitExt: LD (.EXTdata),DE
JR NC,.loop
RET
ExtHandle: DEFB 0x00
InitExtLine: LD (.InExtSv),DE
SUB A
LD (DE),A
@ -217,3 +200,8 @@ InitExtLine: LD (.InExtSv),DE
LD (HL),D
POP HL
JR .L5
INIFILES
.ExtName1: DZ FILENAME.FN_EXT
.ExtName2: DZ FILENAME.FNVIEW_EXT
.ExtName3: DZ FILENAME.FNEDIT_EXT