Initial commit
This commit is contained in:
+787
@@ -0,0 +1,787 @@
|
||||
[08.03.2016 21:00:03] Koshi: FAT engine errors:
|
||||
1 - long name is not valid (mkfile, mkdir)
|
||||
2 - short name index fatality (mkfile, mkdir)
|
||||
3 - long name already exists (mkfile, mkdir)
|
||||
4 - short name already exists (mkfile, mkdir)
|
||||
|
||||
8 - not found
|
||||
|
||||
16 - no free space
|
||||
|
||||
255 - unknown error
|
||||
|
||||
|
||||
Исходники плагинов:
|
||||
wild_player - полноценный плагин WildPlayer'a (поддерживает плей листы m3u/ayl)
|
||||
rom_writer - полноценный плагин-прошиватель ПЗУ/виртПЗУ (в данный момент только 64к файлы)
|
||||
mounter - полноценный плагин-манунтилка/дизмаунтилка vDOS дисков
|
||||
(маунтит TRD образы напрямую с FAT, SCL образы как RAM диск, rs232)
|
||||
file_cr - полноценный плагин-креатор файлов (File Creator)
|
||||
gsplayer - полноценный GS плеер, проигрывает MP3, MOD, WAV
|
||||
video_pl - экспериментальный плагин, Video Player
|
||||
(пока-что может проигрывать видео 256 x 2,4,6,...,192)
|
||||
bmpview - BMP Viewer & Sprite Cutter. Поддерживает 8bit BMP до 512x512. Режет 16/256c спрайты!
|
||||
ilbmview - IFF/ILBM Viewer. предназначен для просмотра файлов в формате IFF/ILBM
|
||||
multigigascreen - просмотрщик ZX экранов. в том числе гигаскринов, мультиколоров и мультигигаскринов
|
||||
tapsna - TAP mounter and SNA launcher. запускает SNA файлы и монтирует TAP на RAM диск
|
||||
txt_editor - текстовый редактор, вешается на F4 (если загружен)
|
||||
|
||||
PLUG01.ASM - пример плагина (стартовый плагин)
|
||||
PLUG02.ASM - ещё один пример
|
||||
PLUG03.ASM - пример с заголовком скринсейвера
|
||||
|
||||
|
||||
Plug-in System version #07:
|
||||
------------------------------------------------------
|
||||
#6000-#6003 - номер страницы в соотв. окне
|
||||
#6004 - ABT (флаг выставляется, если был нажат ESC)
|
||||
#6005 - ENT (флаг выставляется, если был нажат ENTER)
|
||||
#6009-#600A - TMN (переменная-таймер, инкрементится по инту)
|
||||
|
||||
|
||||
Common information:
|
||||
#6006 - точка доступа к функциям.
|
||||
в A записывается номер функции которую нужно вызвать.
|
||||
все остальные регистры указываются в описании функции!
|
||||
|
||||
вызов плагина производится простым CALL #8000
|
||||
на входе в плагин передаётся:
|
||||
A - тип вызова:
|
||||
#00 - по расширению
|
||||
#01 - при загрузке плагина
|
||||
#02 - по таймеру
|
||||
#03 - из меню запуска плагинов
|
||||
#14 - по F4
|
||||
[DE,HL] - длина файла в байтах
|
||||
BC - адрес где лежит имя открытого файла (только для типов #00 и #14!)
|
||||
(формат: name(1-255), 0(1))
|
||||
IX - адрес где находится структура активной панели
|
||||
|
||||
!при запуске плагина надо вызывать GEDPL (если нужно, чтобы появился основной тхт экран)
|
||||
!т.к. при входе в плагин может быть любой экран!
|
||||
!вызывать GEDPL лучше всего после анализа контента файла
|
||||
!(когда убедились, что файл действительно подходит)
|
||||
|
||||
По выходу из плагина:
|
||||
A=0 - просто выход
|
||||
A=1 - файл не опознан, пусть забирают вьюверы/другой плагин
|
||||
A=2 - перейти на следующий файл в каталоге
|
||||
A=3 - перечитать каталог (не доступно из плагинов запущенных по таймеру)
|
||||
|
||||
------------------------------------------------------
|
||||
Plug-in Header (512b):
|
||||
Offset¦Len.¦Description
|
||||
------+----+---------------------------
|
||||
+0¦ 16¦reserved
|
||||
------+----+---------------------------
|
||||
+16¦ 16¦"WildCommanderMDL"
|
||||
------+----+---------------------------
|
||||
+32¦ 1¦Версия формата (#07)
|
||||
------+----+---------------------------
|
||||
+33¦ 1¦reserved
|
||||
------+----+---------------------------
|
||||
+34¦ 1¦Количество страниц
|
||||
¦ ¦(которое будет выделено
|
||||
¦ ¦плагину, в этой области
|
||||
¦ ¦хранится сам плагин.)
|
||||
¦ ¦часть страниц может быть
|
||||
¦ ¦задействована исключительно
|
||||
¦ ¦под буфер, который не будет
|
||||
¦ ¦никем трогаться, даже после
|
||||
¦ ¦выхода из плагина!
|
||||
¦ ¦соотв. тут можно хранить
|
||||
¦ ¦данные, которые могут
|
||||
¦ ¦потребоваться при следующем
|
||||
¦ ¦запуске плагина...
|
||||
------+----+---------------------------
|
||||
+35¦ 1¦номер страницы, которая
|
||||
¦ ¦будет включаться в #8000!
|
||||
¦ ¦(из области заданной в +34)
|
||||
¦ ¦нумерация начинается от 0!
|
||||
------+----+---------------------------
|
||||
+36¦ 2*6¦+0 - Номер страницы [от 0]
|
||||
¦ ¦ (из области заданной
|
||||
¦ ¦ в +34(1))
|
||||
¦ ¦+1 - Размер блока (x512b)
|
||||
¦ ¦ (данные блоки лежат
|
||||
¦ ¦ следом за заголовком
|
||||
¦ ¦ плагина)
|
||||
------+----+---------------------------
|
||||
+48¦ 2*8¦reserved
|
||||
------+----+---------------------------
|
||||
+64¦3*32¦блок расширений
|
||||
¦ ¦"TXT", "WRD" и т.д.
|
||||
------+----+---------------------------
|
||||
+160¦ 1¦#00
|
||||
------+----+---------------------------
|
||||
+161¦ 4¦максимальный размер файла
|
||||
¦ ¦(определяет, какие файлы
|
||||
¦ ¦не нужно передавать)
|
||||
------+----+---------------------------
|
||||
+165¦ 32¦Имя плагина
|
||||
------+----+---------------------------
|
||||
+197¦ 1¦Тип условий при которых
|
||||
¦ ¦должен вызываться плагин
|
||||
------+----+---------------------------
|
||||
+198¦ 6¦при +197(1)=#14:
|
||||
¦ ¦содержит текст, который
|
||||
¦ ¦будет выведен напротив
|
||||
¦ ¦подсказки F4 ("Edit ")
|
||||
------+----+---------------------------
|
||||
+204¦ 308¦reserved
|
||||
------+----+---------------------------
|
||||
|
||||
Условия вызова плагина (+197(1)):
|
||||
#00 - только по расширению
|
||||
#01 - сразу после загрузки плагина (только при загрузке по ENTER!)
|
||||
#02 - по таймеру скринсейвера и из меню
|
||||
#03 - из меню запуска
|
||||
#14 - по F4
|
||||
так же все плагины вызываются по расширению, если таковые указаны!
|
||||
блок расширений можно забить нулями, когда не нужна инициация по расширениям.
|
||||
------------------------------------------------------
|
||||
Structure of Window (SOW):
|
||||
Offset¦Len.¦Description
|
||||
------+----+-------------------------
|
||||
+0¦ 1¦0 - стандартное окно
|
||||
¦ ¦1 - окно с заголовками и
|
||||
¦ ¦ текстом
|
||||
¦ ¦ (но без курсора)
|
||||
¦ ¦2 - с курсором
|
||||
------+----+-------------------------
|
||||
+1¦ 1¦маска цвета курсора
|
||||
------+----+-------------------------
|
||||
+2¦ 1¦позиция окна X
|
||||
+3¦ 1¦позиция окна Y
|
||||
------+----+-------------------------
|
||||
+4¦ 1¦ширина окна (Width)
|
||||
+5¦ 1¦высота окна (Height)
|
||||
¦ ¦ 0 = во весь экран
|
||||
¦ ¦(0 заменяется на актуальное значение!)
|
||||
------+----+-------------------------
|
||||
+6¦ 1¦цвет окна (Paper+Ink)
|
||||
------+----+-------------------------
|
||||
+7¦ 1¦reserved (always=0!)
|
||||
------+----+-------------------------
|
||||
+8¦ 2¦адрес буфера, где лежит
|
||||
¦ ¦информация из под окна
|
||||
¦ ¦ #FFFF=при выводе окна
|
||||
¦ ¦ буфер не используется!
|
||||
¦ ¦ #0000=окно не выведено
|
||||
------+----+-------------------------
|
||||
+10¦ 1¦линия разделитель 1
|
||||
+11¦ 1¦линия разделитель 2
|
||||
¦ ¦если !=0 то выводим оную.
|
||||
¦ ¦значение задает смещение
|
||||
¦ ¦по вертикали с низу!
|
||||
------+----+-------------------------
|
||||
-------------------------------------
|
||||
+12¦ 1¦позиция курсора в окне (от 1)
|
||||
+13¦ 1¦нижний ограничитель
|
||||
------+----+-------------------------
|
||||
+14¦ 1¦цвет курсора (накладывается по маске из +1(1))
|
||||
+15¦ 1¦цвет окна под курсором
|
||||
------+----+-------------------------
|
||||
для +0(1)=1:
|
||||
-------------------------------------
|
||||
+12¦ 2¦адрес строки для верхнего заголовка окна
|
||||
------+----+-------------------------
|
||||
+14¦ 2¦адрес строки для нижнего заголовка окна
|
||||
------+----+-------------------------
|
||||
+16¦ 2¦адрес строки/абзаца для вывода в окно
|
||||
------+----+-------------------------
|
||||
для +0(1)=2:
|
||||
-------------------------------------
|
||||
+16¦ 2¦адрес строки для верхнего заголовка окна
|
||||
------+----+-------------------------
|
||||
+18¦ 2¦адрес строки для нижнего заголовка окна
|
||||
------+----+-------------------------
|
||||
+20¦ 2¦адрес строки/абзаца для вывода в окно
|
||||
------+----+-------------------------
|
||||
|
||||
|
||||
|
||||
Структура текстовой разметки (для функций TXTPR, MEZZ, PRWOW):
|
||||
|
||||
#FE,XXXX - линковка на строку, абзацы линковать бесполезно
|
||||
|
||||
#00 - конец строки и абзаца
|
||||
#00,#00 - разделитель между сообщениями (только для MEZZ)
|
||||
так же может быть разделителем и концом строки/абзаца одновременно!
|
||||
|
||||
#0B,XX - сдвиг вправо на XX символов
|
||||
#0C,YY - сдвиг вниз на YY строк (не трогает цвета и X)
|
||||
#0D - перенос строки, изменяет цвет текста на фоновый
|
||||
#0E - центрирование строки, текущая позиция X сбрасывается!
|
||||
(не работает если строка >= ширины окна, либо если есть линковка)
|
||||
|
||||
#09 - инверсия цвета (меняет папер и инк местами)
|
||||
|
||||
#01-08 цветовые коды, задается цвет для чернил
|
||||
(1 - синий, 7 - белый, 8 - черный)
|
||||
|
||||
#01-#08,#01-#08 задание цветов папер+инк
|
||||
(1 -черный, 8 - белый)
|
||||
в случае, когда цвет чернил и бумаги одинаковый, то
|
||||
выставляется фоновый папер с ярким инком!
|
||||
(при этом: 1,1 - ярко синий, 7,7 - ярко белый)
|
||||
|
||||
|
||||
|
||||
Initialisations:
|
||||
------------------------------------------------------
|
||||
86¦INT_PL
|
||||
¦i:A'
|
||||
¦ #00 - disable all INT functions, while plugin running
|
||||
¦ #01 - отключить обновление времени на TXT-экране
|
||||
¦ #02 - отключить опрос PS/2 клавиатуры на прерываниях
|
||||
¦
|
||||
¦ #FF - включение и инициализация обработчика INT от плагина
|
||||
¦ i:HL - адрес обработчика в плагине (#8000-#BFFE)
|
||||
¦
|
||||
¦по выходу из плагина все параметры восстанавливаются!
|
||||
--+---------------------------------------------------
|
||||
|
||||
Main Functions:
|
||||
------------------------------------------------------
|
||||
0¦MNGC_PL
|
||||
¦включение страницы на #C000 (из выделенного блока)
|
||||
¦нумерация совпадает с использующейся в +36
|
||||
¦i:A' - номер страницы (от 0)
|
||||
¦ #FF - страница с фонтом (1го текстового экрана)
|
||||
¦ #FE - первый текстовый экран (в нём панели)
|
||||
--+---------------------------------------------------
|
||||
78¦MNG0_PL
|
||||
¦включение страницы на #0000 (из выделенного блока)
|
||||
¦i:A' - номер страницы (от 0)
|
||||
¦не влияет на работу FAT драйвера, НО все структуры
|
||||
¦которые будут подаваться файловым функциям, должны
|
||||
¦лежать в адресах #8000-#FFFF!
|
||||
--+---------------------------------------------------
|
||||
79¦MNG8_PL
|
||||
¦включение страницы на #8000 (из выделенного блока)
|
||||
¦i:A' - номер страницы (от 0)
|
||||
--+---------------------------------------------------
|
||||
1¦PRWOW
|
||||
¦вывод окна на экран
|
||||
¦(включает основной ТХТ экран в #C000)
|
||||
¦i:IX - адрес по которому лежит структура окна (SOW)
|
||||
--+---------------------------------------------------
|
||||
2¦RRESB
|
||||
¦стирание окна (восстановление информации)
|
||||
¦(включает основной ТХТ экран в #C000)
|
||||
¦i:IX - SOW
|
||||
--+---------------------------------------------------
|
||||
3¦PRSRW
|
||||
¦(включает основной ТХТ экран в #C000)
|
||||
¦печать строки в окне
|
||||
¦i:IX - SOW
|
||||
¦ HL - Text addres (должен быть в #8000-#BFFF!)
|
||||
¦ D - Y
|
||||
¦ E - X
|
||||
¦ BC - Lenght
|
||||
--+---------------------------------------------------
|
||||
4¦PRIAT
|
||||
¦выставление цвета (вызывается сразу после PRSRW)
|
||||
¦i:PRSRW - выставленные координаты и длина
|
||||
¦ A' - цвет
|
||||
--+---------------------------------------------------
|
||||
5¦GADRW
|
||||
¦получение адреса в окне
|
||||
¦(включает основной ТХТ экран в #C000)
|
||||
¦i:IX - SOW
|
||||
¦ D - Y
|
||||
¦ E - X
|
||||
¦o:HL - Address
|
||||
--+---------------------------------------------------
|
||||
6¦CURSOR
|
||||
¦печать курсора
|
||||
¦i:IX - SOW
|
||||
--+---------------------------------------------------
|
||||
7¦CURSER
|
||||
¦стирание курсора (восстановление цвета)
|
||||
¦i:IX - SOW
|
||||
--+---------------------------------------------------
|
||||
8¦YN
|
||||
¦меню ok/cancel
|
||||
¦i:A'
|
||||
¦ #01 - инициализация (вычисляет координаты)
|
||||
¦ #00 - обработка нажатий (вызывать раз в фрейм)
|
||||
¦ #FF - выход
|
||||
¦ o:NZ - выбран CANCEL
|
||||
¦ Z - выбран OK
|
||||
--+---------------------------------------------------
|
||||
9¦ISTR
|
||||
¦редактирование строки, вывод индикации, опрос состояний
|
||||
¦i:A'
|
||||
¦ #FF - инициализация, тип 0 (рисует курсор)
|
||||
¦ i:HL - адрес строки (на экране)
|
||||
¦ DE - CURMAX+CURNOW (длина строки
|
||||
¦ + начальная позиция курсора в ней)
|
||||
¦ #00 - опрос клавиатуры
|
||||
¦ [опрашивает LF,RG,BackSpace,Delete,Insert,]
|
||||
¦ [ctrl+shift... ]
|
||||
¦ [собственно редактируется строка,]
|
||||
¦ [нужно вызывать каждый фрейм ]
|
||||
¦ #01 - выход (стирает курсор)
|
||||
¦ o:HL - адрес строки
|
||||
¦
|
||||
¦ #FD - инициализация, тип 2 (рисует курсор)
|
||||
¦ i:HL - адрес строки (буфер)
|
||||
¦ HL'- размер буфера
|
||||
¦ D - Y внутри окна
|
||||
¦ E - X внутри окна
|
||||
¦ BC - CURMAX+CURNOW
|
||||
¦ (размер окна вывода + позиц. курсора)
|
||||
¦ #02 - вывод на экран блока из буфера с курсором
|
||||
¦ (вызывать каждый фрейм, вместе с #00 и #03)
|
||||
¦
|
||||
¦ #FE - инициализация индикации
|
||||
¦ (INS/OVR + ENG/RUS + CAPS)
|
||||
¦ i: H - 0:выводить в верхнем заголовке окна
|
||||
¦ 1:выводить в нижнем заголовке окна
|
||||
¦ L - reserved (#FF)
|
||||
¦ #03 - обновление индикаторов (вывод)
|
||||
¦
|
||||
¦ #FC - опрос CAPS, INS, CTRL+SHIFT
|
||||
¦ изменяет соотв. состояния, вызывать каждое
|
||||
¦ прерывание.
|
||||
¦ i:none
|
||||
¦ o: A - состояния
|
||||
¦ [7]: %0 - INS
|
||||
¦ %1 - OVR
|
||||
¦ [6]: %0 - CAPS off
|
||||
¦ %1 - CAPS on
|
||||
¦ [5-2]:reserved
|
||||
¦ [1-0]:%00 - ENG
|
||||
¦ %01 - RUS
|
||||
¦ %10 - reserved
|
||||
¦ %11 - reserved
|
||||
¦
|
||||
¦после инициализации тип 0:
|
||||
¦можно вызывать только #00, #01, а так же #FE+#03!
|
||||
¦
|
||||
¦после инициализации тип 2:
|
||||
¦нужно вызывать #00 и #02 каждый фрейм
|
||||
¦в #00 идет редактирование буфера и вывод курсора, а
|
||||
¦по #02 идет вывод на экран текста, в область задан-
|
||||
¦ную координатами XY и шириной=CURMAX.
|
||||
¦так же можно вызывать #FE+#03
|
||||
¦
|
||||
¦недопустимо одновременно вызывать #00 и #FC!!!
|
||||
--+---------------------------------------------------
|
||||
10¦NORK
|
||||
¦перевод байта в HEX (текстовый формат)
|
||||
¦i:HL - Text Address
|
||||
¦ A - Value
|
||||
--+---------------------------------------------------
|
||||
11¦TXTPR
|
||||
¦вывод текста в окне
|
||||
¦i:IX - SOW
|
||||
¦ HL - адрес текста (строки/абзаца)
|
||||
¦ D - Y (внутри окна)
|
||||
¦ E - X (внутри окна)
|
||||
¦
|
||||
¦o: D - Y (след строка)
|
||||
¦ E - X (без изменений)
|
||||
--+---------------------------------------------------
|
||||
12¦MEZZ
|
||||
¦вывод сообщения в окне
|
||||
¦i:IX - SOW
|
||||
¦ A - номер сообщения/абзаца
|
||||
¦ HL - адрес текстового блока с сообщениями
|
||||
¦ D - Y (внутри окна)
|
||||
¦ E - X (внутри окна)
|
||||
¦
|
||||
¦o: D - Y (след строка)
|
||||
¦ E - X (без изменений)
|
||||
--+---------------------------------------------------
|
||||
84¦SCRLWOW
|
||||
¦сдвинуть содержимое области в окне
|
||||
¦i: D - Y
|
||||
¦ E - X
|
||||
¦ B - Height
|
||||
¦ C - Width
|
||||
¦ A'- [7]:%1 - with attributes
|
||||
¦ %0 - chars only
|
||||
¦ [6]:%1 - clear source side (after scroll)
|
||||
¦ %0 - don't clear
|
||||
¦ [5-2]:%0000 - 1 char step
|
||||
¦ %1111 - 16 chars step
|
||||
¦ [1-0]:%00 - scroll down
|
||||
¦ %01 - up
|
||||
¦ %10 - right (disabled)
|
||||
¦ %11 - left (disabled)
|
||||
¦
|
||||
¦если координаты области и её размер позволяют использовать
|
||||
¦DMA, то пересылка будет идти через неё.
|
||||
¦также биты [7-2] должны быть в нуле!!!
|
||||
--+---------------------------------------------------
|
||||
13¦DMAPL
|
||||
¦работа с DMA
|
||||
¦i: A' - тип операции
|
||||
¦#00 - инит S и D (BHL - Source, CDE - Destination)
|
||||
¦#01 - инит S (BHL)
|
||||
¦#02 - инит D (CDE)
|
||||
¦#03 - инит S с пагой из окна (HL, B - 0-3 [номер окна])
|
||||
¦#04 - инит D с пагой из окна (HL, B - 0-3 [номер окна])
|
||||
¦#05 - выставление DMA_T (B - кол-во бёрстов)
|
||||
¦#06 - выставление DMA_N (B - размер бёрста)
|
||||
¦
|
||||
¦#07 - выставить DMA_T+DMA_N (B - кол-во бёрстов, C - размер)
|
||||
¦#08 - выставить SourceAlign (C - 0/1 off/on)
|
||||
¦#09 - выставить DestinationAlign (C - 0/1 off/on)
|
||||
¦#0A - выставить AlignSize (C - 0/1 16c/256c)
|
||||
¦#0B - выставить AlignSize+Source+Destination
|
||||
¦ i:E=0/1 (16c/256c Align)
|
||||
¦ H=0/1 (off/on SourceAlign)
|
||||
¦ L=0/1 (off/on DestinationAlign)
|
||||
¦
|
||||
¦#FC - запуск DMA RAM->RAM
|
||||
¦#FB - запуск DMA BLT->RAM
|
||||
¦#FA - запуск DMA FILL
|
||||
¦#F9 - запуск DMA RAM->CRAM
|
||||
¦#F8 - запуск DMA RAM->SFILE
|
||||
¦
|
||||
¦#FD - запуск DMA RAM->RAM без ожидания завершения (Align=0!)
|
||||
¦#FE - запуск DMA RAM->RAM с ожиданием завершения (Align=0!)
|
||||
¦#FF - ожидание готовности дма
|
||||
¦
|
||||
¦в функциях #00-#02 формат B/C следующий:
|
||||
¦ [7]:%1 - выбор страницы из блока выделенного плагину (0-5)
|
||||
¦ %0 - выбор страницы из видео буферов (0-63)
|
||||
¦ [6-0]:номер страницы
|
||||
--+---------------------------------------------------
|
||||
14¦TURBOPL
|
||||
¦i:B - выбор Z80/AY
|
||||
¦ #00 - меняется частота Z80
|
||||
¦ i:C - %00 - 3.5 MHz
|
||||
¦ %01 - 7 MHz
|
||||
¦ %10 - 14 MHz
|
||||
¦ %11 - 28 MHz (в данный момент 14MHz)
|
||||
¦ #01 - меняется частота AY
|
||||
¦ i:C - %00 - 1.75 MHz
|
||||
¦ %01 - 1.7733 MHz
|
||||
¦ %10 - 3.5 MHz
|
||||
¦ %11 - 3.546 MHz
|
||||
--+---------------------------------------------------
|
||||
15¦GEDPL
|
||||
¦восстановление паллитры, всех оффсетов и txt режима
|
||||
¦ !обязательно вызывать при запуске плагина!
|
||||
¦ (включает основной txt экран)
|
||||
¦i:none
|
||||
--+---------------------------------------------------
|
||||
|
||||
|
||||
Keyboard:
|
||||
если возвращает NZ, то клавиша нажата.
|
||||
------------------------------------------------------
|
||||
16¦SPKE (SPACE)
|
||||
--+---------------------------------------------------
|
||||
17¦UPPP (UP Arrow)
|
||||
--+---------------------------------------------------
|
||||
18¦DWWW (Down Arrow)
|
||||
--+---------------------------------------------------
|
||||
19¦LFFF (Left Arrow)
|
||||
--+---------------------------------------------------
|
||||
20¦RGGG (Right Arrow)
|
||||
--+---------------------------------------------------
|
||||
21¦TABK (Tab)
|
||||
--+---------------------------------------------------
|
||||
22¦ENKE (Enter)
|
||||
--+---------------------------------------------------
|
||||
23¦ESC
|
||||
--+---------------------------------------------------
|
||||
24¦BSPC (Backspace)
|
||||
--+---------------------------------------------------
|
||||
25¦PGU (pgUP)
|
||||
--+---------------------------------------------------
|
||||
26¦PGD (pgDN)
|
||||
--+---------------------------------------------------
|
||||
27¦HOME
|
||||
--+---------------------------------------------------
|
||||
28¦END
|
||||
--+---------------------------------------------------
|
||||
29¦F1
|
||||
--+---------------------------------------------------
|
||||
30¦F2
|
||||
--+---------------------------------------------------
|
||||
31¦F3
|
||||
--+---------------------------------------------------
|
||||
32¦F4
|
||||
--+---------------------------------------------------
|
||||
33¦F5
|
||||
--+---------------------------------------------------
|
||||
34¦F6
|
||||
--+---------------------------------------------------
|
||||
35¦F7
|
||||
--+---------------------------------------------------
|
||||
36¦F8
|
||||
--+---------------------------------------------------
|
||||
37¦F9
|
||||
--+---------------------------------------------------
|
||||
38¦F10
|
||||
--+---------------------------------------------------
|
||||
39¦ALT (не трогает авторепиты)
|
||||
--+---------------------------------------------------
|
||||
40¦SHIFT (не трогает авторепиты)
|
||||
--+---------------------------------------------------
|
||||
41¦CTRL (не трогает авторепиты)
|
||||
--+---------------------------------------------------
|
||||
42¦KBSCN
|
||||
¦опрос клавиш
|
||||
¦i:A' - обработчик
|
||||
¦ #00 - учитывает SHIFT, CL, а так же ENG/RUS
|
||||
¦ (можно вызывать только 1 раз в фрейм)
|
||||
¦ #01 - всегда выдает код из TAIE1
|
||||
¦ (можно вызывать несколько раз за фрейм)
|
||||
¦
|
||||
¦!KBSCN нужно вызывать до вызова опроса SHIFT и CTRL
|
||||
¦
|
||||
¦o: NZ: A - TAIE1/TAIE2/TAIR1/TAIR2 (see PS2P.ASM)
|
||||
¦ Z: A=#00 - unknown key (also no chars)
|
||||
¦ A=#FF - buffer end (impossibru!)
|
||||
--+---------------------------------------------------
|
||||
43¦DEL (Delete)
|
||||
--+---------------------------------------------------
|
||||
85¦INS (Insert)
|
||||
--+---------------------------------------------------
|
||||
44¦CAPS (Caps Lock)
|
||||
--+---------------------------------------------------
|
||||
45¦ANYK (any key)
|
||||
--+---------------------------------------------------
|
||||
46¦USPO
|
||||
--+---------------------------------------------------
|
||||
47¦NUSP (waiting for any key)
|
||||
--+---------------------------------------------------
|
||||
|
||||
|
||||
File Operations:
|
||||
------------------------------------------------------
|
||||
48¦LOAD512
|
||||
¦потоковая загрузка файла
|
||||
¦i:HL - Address
|
||||
¦ B - Blocks (512b)
|
||||
¦o:HL - New Value
|
||||
¦ A - EndOfChain (#0F)
|
||||
--+---------------------------------------------------
|
||||
49¦SAVE512
|
||||
¦потоковая запись файла
|
||||
¦i:HL - Address
|
||||
¦ B - Blocks (512b)
|
||||
¦o:HL - New Value
|
||||
¦ A - EndOfChain (#0F)
|
||||
--+---------------------------------------------------
|
||||
50¦GIPAGPL
|
||||
¦позиционировать на начало файла
|
||||
¦(сразу после запуска плагина оная уже вызвана)
|
||||
--+---------------------------------------------------
|
||||
51¦TENTRY
|
||||
¦получить ENTRY(32) из коммандера
|
||||
¦(структура как в каталоге FAT32)
|
||||
¦i: DE - Address
|
||||
¦o:DE(32) - ENTRY
|
||||
--+---------------------------------------------------
|
||||
52¦CHTOSEP
|
||||
¦разложение цепочки активного файла в сектора
|
||||
¦i:DE - BUFFER (куда кидать номера секторов)
|
||||
¦ BC - BUFFER END (=BUFFER+BUFFERlenght)
|
||||
--+---------------------------------------------------
|
||||
53¦TENTRYN
|
||||
--+---------------------------------------------------
|
||||
54¦TMRKDFL
|
||||
¦получить заголовок маркированного файла
|
||||
¦i:IX - Active panel!!!
|
||||
¦ HL - File number (1-2047)
|
||||
¦ DE - Address [#8000-#BFFF!]
|
||||
¦ (if HL=0; o:BC - count of marked files)
|
||||
¦
|
||||
¦o:NZ - File not found or other error
|
||||
¦ Z - File name received ("name.ext",0)
|
||||
¦ [так же делается позиционирование на начало
|
||||
¦ [этого файла, если bit 7,H не в 1!!!
|
||||
¦ [соотв. функции LOAD512/SAVE512 будут читать/
|
||||
¦ [писать этот файл от начала.
|
||||
--+---------------------------------------------------
|
||||
55¦TMRKNXT
|
||||
--+---------------------------------------------------
|
||||
56¦
|
||||
--+---------------------------------------------------
|
||||
57¦STREAM
|
||||
¦работа с потоками
|
||||
¦i:D - #FF: сделать активным root dir
|
||||
¦ (более никаких параметров не учитывает)
|
||||
¦
|
||||
¦ #FE: клонировать поток из активной панели
|
||||
¦ в потоки #01 и #02.
|
||||
¦ Автоматически делается активным поток #01
|
||||
¦ (никаких других параметров не учитывает)
|
||||
¦
|
||||
¦ #00/#01: номер потока, требует BC.
|
||||
¦ i:B - устройство
|
||||
¦ (0-SD(ZC),1-NemoMaster,2-NemoSlave)
|
||||
¦ (4-SmucMaster,5-SmucSlave)
|
||||
¦ C - раздел (не учитывается)
|
||||
¦ BC=#FFFF: включает поток из D (не возвращает флагов)
|
||||
¦BC<>#FFFF: создает/пересоздает поток.
|
||||
¦
|
||||
¦o:NZ - устройство или раздел не найдены
|
||||
¦ Z - можно начинать работать с потоком
|
||||
--+---------------------------------------------------
|
||||
58¦FindNext
|
||||
¦получение очередного имени файла/каталога
|
||||
¦(сбрасывается после GDIR)
|
||||
¦i:DE - Address
|
||||
¦ A - [7]:%1 - only short names
|
||||
¦ [6-5]:reserved
|
||||
¦ [4]:%1 - enable created time field
|
||||
¦ [3]:%1 - enable created date field
|
||||
¦ [2]:%1 - enable size field
|
||||
¦ [1-0]:%00 find next Entry
|
||||
¦ %01 find next File
|
||||
¦ %10 find next DIR
|
||||
¦ %11 reserved
|
||||
¦
|
||||
¦o: Z - End Of Dir
|
||||
¦ NZ - Buffer updated
|
||||
¦ DE - [size(4)],
|
||||
¦ [date(2)],
|
||||
¦ [time(2)],
|
||||
¦ flag(1),Entry Name(1-255),0
|
||||
--+---------------------------------------------------
|
||||
59¦FENTRY
|
||||
¦поиск файла/каталога в активной директории
|
||||
¦(так же можно подавать путь к файлу/каталогу)
|
||||
¦i:HL - flag(1),name/path(1-255/1-XXX),#00
|
||||
¦flag:#00 - file
|
||||
¦ #10 - dir
|
||||
¦name:"name.txt","directory"...
|
||||
¦
|
||||
¦o: Z - entry not found
|
||||
¦ NZ - [DE,HL] - file length
|
||||
¦ CALL GFILE/GDIR for activating file/dir
|
||||
--+---------------------------------------------------
|
||||
60¦LOAD256
|
||||
¦функция используется видео плеером
|
||||
--+---------------------------------------------------
|
||||
61¦LOADNONE
|
||||
¦пропустить N секторов
|
||||
¦(параметры те же, что и в LOAD512)
|
||||
--+---------------------------------------------------
|
||||
62¦GFILE
|
||||
¦выставить указатель на начало найденного файла
|
||||
¦(вызывается после FENTRY!)
|
||||
--+---------------------------------------------------
|
||||
63¦GDIR
|
||||
¦сделать найденный каталог активным
|
||||
¦(вызывается после FENTRY!)
|
||||
--+---------------------------------------------------
|
||||
72¦MKfile
|
||||
¦создание файла в активном каталоге
|
||||
¦i:HL - flag(1),length(4),name(1-255),#00
|
||||
¦
|
||||
¦o:NZ - Operation failed
|
||||
¦ Z - File created
|
||||
¦ o:ENTRY(32) [use TENTRY]
|
||||
¦
|
||||
¦[после создания файла происходит позиционирование
|
||||
¦[на его начало!!!
|
||||
--+---------------------------------------------------
|
||||
73¦MKdir
|
||||
¦создание каталога в активной директории
|
||||
¦i:HL - name(1-255),#00
|
||||
¦
|
||||
¦o:NZ - Operation failed
|
||||
¦ Z - Directory created
|
||||
--+---------------------------------------------------
|
||||
74¦REName
|
||||
¦переименование файла/каталога
|
||||
¦i:HL - flag(1),oldname(1-255),0
|
||||
¦ DE - newname(1-255),0
|
||||
¦
|
||||
¦o: Z - not found or new name already exists
|
||||
¦ NZ - success
|
||||
--+---------------------------------------------------
|
||||
75¦DelFl
|
||||
¦удаление файла/каталога
|
||||
¦i: HL - flag(1),name(1-255),#00
|
||||
¦
|
||||
¦o: Z - File/DIR Not Found
|
||||
¦ NZ - File/DIR Deleted
|
||||
--+---------------------------------------------------
|
||||
|
||||
|
||||
|
||||
Graphics:
|
||||
------------------------------------------------------
|
||||
64¦MNGV_PL
|
||||
¦включение видео страницы
|
||||
¦i:A' - номер видео страницы
|
||||
¦ #00 - основной экран (тхт)
|
||||
¦ [паллитра выставляется автоматом]
|
||||
¦ [как и все режимы и смещения ]
|
||||
¦ #01 - 1й видео буфер (16 страниц)
|
||||
¦ #02 - 2й видео буфер (16 страниц)
|
||||
¦ #03 - 3й видео буфер (16 страниц)
|
||||
¦ #04 - 4й видео буфер (16 страниц)
|
||||
--+---------------------------------------------------
|
||||
65¦MNGCVPL
|
||||
¦включение страницы из видео буферов на #C000
|
||||
¦i:A' - номер страницы
|
||||
¦ #00-#0F - страницы из 1го видео буфера
|
||||
¦ #10-#1F - страницы из 2го видео буфера
|
||||
¦ #20-#2F - страницы из 3го видео буфера
|
||||
¦ #30-#3F - страницы из 4го видео буфера
|
||||
--+---------------------------------------------------
|
||||
80¦MNG0VPL
|
||||
¦включение страницы из видео буферов на #0000
|
||||
¦i:A' - номер страницы
|
||||
¦нужно учитывать, что в адресах #2000-#7FFF находится
|
||||
¦fat драйвер и ядро системы!
|
||||
¦на время вызова функций, страница переключается, затем
|
||||
¦всё восстанавливается как было...
|
||||
¦
|
||||
¦НЕДОПУСТИМО передавать какие-либо параметры, из
|
||||
¦области #0000-#7FFF fat драйверу!!!
|
||||
--+---------------------------------------------------
|
||||
81¦MNG8VPL
|
||||
¦включение страницы из видео буферов на #8000
|
||||
¦i:A' - номер страницы
|
||||
--+---------------------------------------------------
|
||||
66¦GVmod
|
||||
¦включение видео режима (разрешение+тип)
|
||||
¦i:A' - видео режим
|
||||
¦ [7-6]:%00 - 256x192
|
||||
¦ %01 - 320x200
|
||||
¦ %10 - 320x240
|
||||
¦ %11 - 360x288
|
||||
¦ [5]:%x - nogfx
|
||||
¦ [4]:%x - notsu
|
||||
¦ [3]:%0 - reserved
|
||||
¦ [2]:%0 - reserved
|
||||
¦ [1-0]:%00 - ZX
|
||||
¦ %01 - 16c
|
||||
¦ %10 - 256c
|
||||
¦ %11 - txt
|
||||
--+---------------------------------------------------
|
||||
67¦GYoff
|
||||
¦выставление смещения экрана по Y
|
||||
¦i:HL - Y (0-511)
|
||||
--+---------------------------------------------------
|
||||
68¦GXoff
|
||||
¦выставление смещения экрана по X
|
||||
¦i:HL - X (0-511)
|
||||
--+---------------------------------------------------
|
||||
69¦GVtm
|
||||
¦выставление страницы для TileMap
|
||||
¦i:C - номер страницы из видео буфера (0-63)
|
||||
--+---------------------------------------------------
|
||||
70¦GVtl
|
||||
¦выставление страницы для TileGraphics
|
||||
¦i:B - номер тайло-плоскости (0-1)
|
||||
¦ C - номер страницы из видео буфера (0-63)
|
||||
--+--------------------------------------------------
|
||||
71¦GVsgp
|
||||
¦выставление страницы для SpriteGraphics
|
||||
¦i:C - номер страницы из видео буфера (0-63)
|
||||
--+---------------------------------------------------
|
||||
@@ -0,0 +1 @@
|
||||
ORG #C000␍;-------␍INTM EQU #FEFF␍PE0 EQU #21AF␍;-------␍ LD HL,I_N_T,(INTM+0),HL␍ LD HL,#C9FB,(INTM+2),HL␍ DI␍ LD A,INTM[,I,A:IM 2␍ EI␍;-------␍ LD BC,PE0,A,%00001110:OUT A␍ LD BC,#10AF,A,#0F:OUT A␍␍ LD HL,VAGA,DE,CORE␍ LD BC,VAGAE-VAGA:LDIR␍;---------------------------------------␍ CALL DOS_SWP; DEPACK Driver␍ CALL DEV_INI:JP NZ,ER0␍ CALL HDD:JP NZ,ER1␍ CALL SETROOT; SET ROOT DIR␍␍;CALL VYGREB; ‚ëŁŕĄˇ Ą¬ Ş â «®Ł, ç¨áâ® Ż® Żŕ¨Ş®«ă␍␍;LD HL,FILENAM ; ¨éĄ¬ ä ©«␍;CALL FENTRY:JP Z,ER2␍;LD HL,#1000,C,#02 ; ç¨â Ą¬ ä ©« (1 ˇ«®Ş, 512 ˇ ©â)␍;LD B,1:CALL LOAD512␍␍DDR LD HL,DIR1␍ CALL FENTRY:JR NZ,DIIIR␍ LD HL,DIR1+1:CALL MKDIR:JR Z,DDR␍ JP ER3␍␍DIIIR CALL SETDIR␍; Set DIR found by FENTRY active␍␍;Create File (flag,size,name,0):␍ LD HL,FILE␍ CALL MKFILE:JP NZ,ER4␍␍;Save data into new file:␍ LD C,#00; Page␍ LD HL,#0000;Offset␍ LD B,8; Size (8blocks=4kb)␍ CALL SAVE512␍␍;---------------------------------------␍EXIT ;LD BC,#11AF,A,#05:OUT A␍␍ LD BC,PE0,A,%00000001:OUT A␍ LD BC,#10AF,A,0:OUT A␍;LD BC,#12AF,A,#0F:OUT A␍ RET␍␍;---------------------------------------␍VYGREB LD DE,#8000␍VYG CALL NXTETY:RET Z␍ LD A,D:CP #C0:RET NC␍ JR VYG␍␍;---------------------------------------␍ER0 ;Device not found␍; (SD Card NOT ready!)␍ LD A,1:OUT (254)␍.10 HALT␍ JP EXIT␍;-------␍ER1 ;FAT32 NOT FOUND␍␍ LD A,2:OUT (254)␍.10 HALT␍ JP EXIT␍;-------␍ER2 ;File NOT FOUND␍␍ LD A,3:OUT (254)␍.10 HALT␍ JP EXIT␍;-------␍ER3 ;Dir Creation Failed␍␍ LD A,4:OUT (254)␍.10 HALT␍ JP EXIT␍;-------␍ER4 ;File Creation Failed␍␍ LD A,5:OUT (254)␍.10 HALT␍ JP EXIT␍;---------------------------------------␍I_N_T EI␍ RET␍;---------------------------------------␍FILENAM DB #00; #00 - file, #10 - DIR␍ DB "WC_History.txt",0␍␍FILE DB #00; flag␍ DW #1000,#0000;length␍ DB "ŤĄĄˇ ćć® ¤«¨®Ą ¨¬ď.txt",0␍␍DIR1 DB #10␍ DB "DOWNLOAD",0␍␍DIR2 DB #10␍ DB "ZIFI",0␍;---------------------------------------␍CORE EQU #2002␍DEV_INI EQU CORE+3␍HDD EQU CORE+9␍;-------␍;i: CHL - Addres␍; B - lenght (512b blocks)␍;o: CHL - New Value␍; A - EndOfChain (#0F)␍LOAD512 EQU CORE+21␍␍;i: CHL - Addres␍; B - lenght␍;o: CHL - New Value␍; A - EndOfChain (#0F)␍SAVE512 EQU CORE+24␍␍DOS_SWP EQU CORE+27␍␍;i: HL - flag(1),ln(4),name(1-255),0␍; NZ - ERROR (NO ENOUGHT SPACE)␍; A: 1 - ln not valid␍; 2 - index fatality␍; 3 - ln already exists␍; 255 - unknown error␍; Z - SUCCESS␍MKFILE EQU CORE+57␍␍;i: HL - DirName(1-255,0)␍;o: NZ - ERROR␍; A: 1 - ln not valid␍; 2 - index fatality␍; 3 - ln already exists␍; 255 - unknown error␍; Z - SUCCESS␍MKDIR EQU CORE+60␍␍;i: HL - flag(1),name(1-255),0␍;o: Z - NOT FOUND␍; NZ - FILE DELETED␍DELFL EQU CORE+63␍␍;i: HL - flag(1),oldname(1-255),0␍; DE - newname(1-255),0␍;o: Z - NOT FOUND␍; NZ - SUCCESS␍RENAM EQU CORE+66␍␍;Search for entry in current DIR␍;i: HL - flag(1),name(1-255),0␍;o: Z - NOT FOUND␍; NZ - [DE,HL] - file length␍; SEEK0 is automatically called␍FENTRY EQU CORE+78␍␍;Seek/Skip N sectors␍;i: B - Number of sectors to process␍LOADNON EQU CORE+84␍␍;GetNextEntryFromActiveDir␍;i: DE - Addres␍;o: DE - New Value␍; Z - EndOfDir␍; NZ - OK␍;␍;STRUCTURE:␍;fclus(4),size(4),date(2),time(2),␍;!flag(1),name(1-255),#00␍NXTETY EQU CORE+87␍␍;Set DIR found by ENTRY active␍SETDIR EQU CORE+93␍␍;Set ROOT DIR active␍SETROOT EQU CORE+96␍␍SEEK0 EQU CORE+99␍;-------␍VAGA INCB "WDFCVBI"␍VAGAE␍;---------------------------------------␍
|
||||
Binary file not shown.
Reference in New Issue
Block a user