|
nedoPC.orgElectronics hobbyists community established in 2002 |
|
|
Page 1 of 1
|
[ 5 posts ] |
|
Author |
Message |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22607 Location: Silicon Valley
|
Тут оказывается только у меня сохранилась пара плугинов за авторством Mac Buster: http://nedopc.org/nedopc/sprinter/upload/flx-date.ziphttp://nedopc.org/nedopc/sprinter/upload/flx-calc.zipИсходников нету, но плугины микроскопические - можно дизассемблировать и доделать калькулятор, чтобы считал...
|
17 Dec 2020 00:48 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22607 Location: Silicon Valley
|
Вот описание API плугинов для Flex Navigator-а FLX.INC: HELP.RUS: Пример исходного кода плугина - TEST.Z80: | | | | Code: ;[]=======================================================================[] ; ; test.z80 -- test plugin for Flex Navigator v1.xx ; ; Created by Anton Enin 08-June-2002 ; ; Last update 08-June-2002 ; ; Copyright (C) 2002 R-lab ; ; This program should be compiled using z80asm ; http://www.zxasm.narod.ru/ ; ;[]=======================================================================[]
%include "fplugin.inc"
section .text org 0xBFF0 ; PluginOrg - Header lenght
; Flex Navigator plugin header db "FLX-PLUG" ; Id dw 0x0000 ; LoadOffset dw 0x0000 ; EntryOffset db 0x00 ; PluginMode db 0x00, 0x00, 0x00 ; Reserved
PluginEntry: call MakeWindow db 0x01 dw 0x00E0, 0x0050 dw 0x00C0, 0x0060 db 0x02 ;head place dw 0x0004, 0x0002 dw 0x00B8, 0x000A db 0x00 db 0x01 ;text line dw 0x0052, 0x0003 db 0x0F db "Plugin", 0 db 0x01 ;text line dw 0x0010, 0x0014 db 0x84 db "Flex Navigator v1.xx Plugin Test", 0 db 0x01 ;text line dw 0x002E, 0x0026 db 0x80 db "Written by Enin Anton", 0 db 0x01 ;text line dw 0x0040, 0x0030 db 0x80 db "June, 8 2002", 0 db 0x01 ;text line dw 0x0034, 0x003A db 0x80 db "Copyright (c) 2002", 0 db 0x04 ;uprectan dw 0x003C, 0x004A dw 0x0048, 0x000E db 0x01 ;text line dw 0x0058, 0x004D db 0x80 db "Ok", 0 db 0x00
call ResFire .plugin_loop: ld ix, PluginMouseTab call TestCoords ld c, 0x31 rst 0x10 jr z, .plugin_loop ld a, b or a jr nz, .plugin_loop ld a, e cp 0x1B jr z, PluginExit cp 0x0D jr nz, .plugin_loop PluginExit: call MakeWindow db 0x7F db 0x00 or a ; cf = 0 ret
;[]=======================================================================[] PluginMouseTab: dw 0x011C, 0x0164, 0x009A, 0x00A8, 0x0021, 0x0000, PluginExit, 0x0000 dw 0x0000, 0x00E0, 0x0000, 0x0100, 0x0020, 0x0000, PluginExit, 0x0000 dw 0x01A0, 0x0280, 0x0000, 0x0100, 0x0020, 0x0000, PluginExit, 0x0000 dw 0x0000, 0x0280, 0x0000, 0x0050, 0x0020, 0x0000, PluginExit, 0x0000 dw 0x0000, 0x0280, 0x00B0, 0x0100, 0x0020, 0x0000, PluginExit, 0x0000 dw 0x8000
| | | | |
Описание словами: | | | | Code: []========================================================================[] * * * Описание Flex Navigator API v1.xx для разработчиков Flx-Plugins * * doc v0.4 от 13.07.2002 * * * []========================================================================[]
[]------------------------------------------------------------------------[]
ClearScreen - процедура отчистки 0-го экана нужным цветом.
на вход: A - цвет отчистки (00-0Fh) на выход: -
[]------------------------------------------------------------------------[]
MakeWindow - процедура создания графического окна
на вход: (SP) - описатель окна на выход: -
сразу за вызовом этой процедуры в программе следует описатель окна. возврат из процедуры происходит по адресу, следующему за описателем.
например: call MakeWindow ... ; описатель окна
описатель окна: +00 (1) флаг вывода окна: 0 - без сохранения данных под окном (используется для полноэкранных окон) 1 - с сохранением данных под окном (используется для небольших окон) 0x7F - восстановить данные под окном (флаг служит для закрытия текущего окна) +01 (2) координата x для вывода (0 - 639) +03 (2) координата y для вывода (0 - 255) +05 (2) длина окна по x (0 - 639) +07 (2) длина окна по y (0 - 255)
далее идут об'екты окна в формате: +00 (1) тип обекта +01 ... описатели обекта
об'екты окна: 0. +00 (1) == 0 - конец списка об'ектов. после этого оконная функция возвращает управление.
1. +00 (1) == 1 - текстовая строка +01 (2) смещение x от начала окна (0 - 639) +03 (2) смещение y от начала окна (0 - 255) +05 (1) цвет печати (d7-d4 цвет background, d3-d0 цвет foreground) +06 ... текстовая строка (конец строки - 0)
2. +00 (1) == 2 - заполнение прямоугольной плоскости +01 (2) смещение x от начала окна (0 - 639) +03 (2) смещение y от начала окна (0 - 255) +05 (2) длина по x (0 - 639) +07 (2) длина по y (0 - 255) +09 (1) цвет заполнения (d7-d4 цвет background, d3-d0 цвет foreground)
3. +00 (1) == 3 - отрисовка углублённой прямоугольной плоскости +01 (2) смещение x от начала окна (0 - 639) +03 (2) смещение y от начала окна (0 - 255) +05 (2) длина по x (0 - 639) +07 (2) длина по y (0 - 255)
4. +00 (1) == 4 - отрисовка выпуклой прямоугольной плоскости +01 (2) смещение x от начала окна (0 - 639) +03 (2) смещение y от начала окна (0 - 255) +05 (2) длина по x (0 - 639) +07 (2) длина по y (0 - 255)
5. +00 (1) == 5 - отрисовка кнопки с текстом +01 (2) смещение x от начала окна (0 - 639) +03 (2) смещение y от начала окна (0 - 255) +05 (2) длина по x (0 - 639) +07 (2) длина по y (0 - 255) +09 (1) цвет печати (d7-d4 цвет background, d3-d0 цвет foreground) +10 ... текстовая строка (конец строки - 0)
Внимание! печать текста осуществляется с позиций x + 4, y + 1
6. +00 (1) == 6 - отрисовка горизонтального разделителя +01 (2) смещение x от начала окна (0 - 639) +03 (2) смещение y от начала окна (0 - 255) +05 (2) длина по x (0 - 639)
7. +00 (1) == 7 - отрисовка вертикального разделителя +01 (2) смещение x от начала окна (0 - 639) +03 (2) смещение y от начала окна (0 - 255) +05 (2) длина по y (0 - 255)
8. +00 (1) == 8 - отрисовка левой кнопки скролбара <- +01 (2) смещение x от начала окна (0 - 639) +03 (2) смещение y от начала окна (0 - 255)
9. +00 (1) == 9 - отрисовка правой кнопки скролбара -> +01 (2) смещение x от начала окна (0 - 639) +03 (2) смещение y от начала окна (0 - 255)
10. +00 (1) == 10 - отрисовка верхней кнопки скролбара ^ +01 (2) смещение x от начала окна (0 - 639) +03 (2) смещение y от начала окна (0 - 255)
11. +00 (1) == 11 - отрисовка нижней кнопки скролбара +01 (2) смещение x от начала окна (0 - 639) +03 (2) смещение y от начала окна (0 - 255)
[]------------------------------------------------------------------------[]
InvertRectan - процедура замены цвета прямоугольной плоскости
на вход: HL - x координата BC - y координата HX - длина y LX - длина x D - текущий цвет (d7-d4 цвет background, d3-d0 цвет foreground) E - нужный цвет (d7-d4 цвет background, d3-d0 цвет foreground) на выход: -
к сожалению процедура не очень быстрая, поэтому большие прямоугольники советую особо не инвертировать... ;)
[]------------------------------------------------------------------------[]
PrnTxtLnIFF - процедура вывода текстовых строк на графический экран 640x256 в режиме размерного по X шрифта на вход: HL - адрес текстовой строки (конец строки - 0) DE - позиция вывода по X BC - позиция вывода по Y A - цвет печати (d7-d4 цвет background, d3-d0 цвет foreground) на выход: HL - адрес байта, следующего за строкой
[]------------------------------------------------------------------------[]
PrnTxtLnNorm - процедура вывода текстовых строк на графический экран 640x256 на вход: HL - адрес текстовой строки (конец строки - 0) DE - позиция вывода по X BC - позиция вывода по Y A - цвет печати (d7-d4 цвет background, d3-d0 цвет foreground) на выход: HL - адрес байта, следующего за строкой
[]------------------------------------------------------------------------[]
PrnTxtLnNormC - процедура вывода текстовых строк на графический экран 640x256 с известным числом символов на вход: HL - адрес текстовой строки DE - позиция вывода по X C - позиция вывода по Y B - кол-во печатаемых символов A - цвет печати (d7-d4 цвет background, d3-d0 цвет foreground) на выход: HL - адрес байта, следующего за последним символом
[]------------------------------------------------------------------------[]
PrnRangPathL - процедура вывода досовских путей на графический экран 640x256 в режиме размерного по X шрифта, прижатых к левому краю ( |-> ) на вход: IX - кол-во пикселей под вывод строки HL - адрес текстовой строки (конец строки - 0) DE - позиция вывода по X BC - позиция вывода по Y A - цвет печати (d7-d4 цвет background, d3-d0 цвет foreground) на выход: -
процедура грамотно укорачивает досовский путь до нужного размера путём замещения невлезающих директорий на ..\
[]------------------------------------------------------------------------[]
PrnRangPathR - процедура вывода досовских путей на графический экран 640x256 в режиме размерного по X шрифта, прижатых к правому краю ( <-| ) на вход: IX - кол-во пикселей под вывод строки HL - адрес текстовой строки (конец строки - 0) DE - позиция вывода по X BC - позиция вывода по Y A - цвет печати (d7-d4 цвет background, d3-d0 цвет foreground) на выход: -
процедура грамотно укорачивает досовский путь до нужного размера путём замещения невлезающих директорий на ..\
[]------------------------------------------------------------------------[]
PrnRangPathC - процедура вывода досовских путей на графический экран 640x256 в режиме размерного по X шрифта, отцентрированных относительно краёв ( <-|-> ) на вход: IX - кол-во пикселей под вывод строки HL - адрес текстовой строки (конец строки - 0) DE - позиция вывода по X BC - позиция вывода по Y A - цвет печати (d7-d4 цвет background, d3-d0 цвет foreground) на выход: -
процедура грамотно укорачивает досовский путь до нужного размера путём замещения невлезающих директорий на ..\
[]------------------------------------------------------------------------[]
InputLine - процедура редактирования строки на графическом экране 640x256 в режиме размерного по X шрифта
на вход: IX - адрес описателя строки HL - адрес описателя элементов экрана (для мышки) на выход: -
описатель строки: +00 (1) максимальная длина строки +01 (1) флаг готовности +02 (1) текущая X позиция курсора (инициализируется в InputLine) +03 (1) текущая add_x (инициализируется в InputLine) +04 (1) количество введенных символов / длина строки +05 (2) X позиция строки на экране +07 (2) Y позиция строки на экране +09 (2) X длина строки на экране +0B (1) цвет строки (d7-d4 цвет background, d3-d0 цвет foreground) +0C ... сама строка
процедуры для таблицы элементов экрана: InpLnExtN - процедура нормального выхода из редакции InpLnExtC - процедура выхода из редакции по cancel (восстанавливает изначальную строку)
[]------------------------------------------------------------------------[]
InitScrBar - процедура инициализации описателя скроллбара
на вход: IX - адрес описателя скроллбара на выход: -
описатель скроллбара: +00 (2) X позиция скролбара (0-639) +02 (2) Y позиция скролбара (0-255) +04 (2) длина скролбара +06 (2) текущая длина скролбара (инициализируется в InitScrBar) +08 (2) адрес ячейки, куда запишется начальная координата бара если 0, то не используется (используется для таблицы элементов экрана) +10 (2) адрес ячейки, куда запишется конечная координата бара если 0, то не используется (используется для таблицы элементов экрана) +12 (2) кол-во видимых элементов +14 (2) общее кол-во элементов +16 (2) первая видимый элемент
[]------------------------------------------------------------------------[]
PrnHScrBar - процедура печати горизонтального скроллбара
на вход: IX - адрес описателя скроллбара (см. выше) на выход: -
[]------------------------------------------------------------------------[]
PrnVScrBar - процедура печати вертикального скроллбара
на вход: IX - адрес описателя скроллбара (см. выше) на выход: -
[]------------------------------------------------------------------------[]
InitProcess - процедура инициализации описателя процессбара
на вход: IX - адрес описателя процессбара на выход: -
описателя процессбара: +00 (2) X позиция процессбара (0-639) +02 (2) Y позиция процессбара (0-255) +04 (2) длина процессбара +06 (2) коэффициент для процесса (инициализируется в InitProcess) +08 (2) коррекция коэфициента (инициализируется в InitProcess) +10 (4) максимум (инициализируется в InitProcess) +14 (4) текущее (инициализируется в InitProcess) +18 (1) цвет процессбара (d7-d4 цвет background, d3-d0 цвет foreground)
[]------------------------------------------------------------------------[]
PrnProcess - процедура печати процессбара
на вход: IX - адрес описателя процессбара (см. выше) на выход: -
[]------------------------------------------------------------------------[]
ResFire - процедура ожидания, пока все кнопки мыши не будут отпущены
на вход: - на выход: -
[]------------------------------------------------------------------------[]
TestCoords - процедура проверки координат мыши по таблице элементов зкрана
на вход: IX - адрес таблицы элементов зкрана на выход: -
таблица элементов зкрана: +00 (2) левая x координата элемента +02 (2) правая x координата элемента +04 (2) верхняя y координата элемента +06 (2) нижняя y координата элемента +08 (2) флаги элемента +10 (2) адрес обработчика при не нажатом огне +12 (2) адрес обработчика при нажатом огне (левая кнопка) +14 (2) адрес обработчика при нажатом огне (правая кнопка)
если +00 == 0x8000 это считается концом таблицы элементов зкрана
флаги элемента: d00 - элемент кнопка d01 - рабочая кнопка d02 - инверт d03 - статичный инверт d04 - программа запускается без адреса возврата без огня (т.е. при попадании курсора мыши в эту прямоугольную область удаляется адрес возрата со стека и осуществляется переход на адрес, который находиться в +10) d05 - программа запускается без адреса возврата по левой кнопке огня (т.е. при нажатии левой кнопки мыши над прямоугольной областью удаляется адрес возрата со стека и осуществляется переход на адрес, который находиться в +12) d06 - программа запускается без адреса возврата по правой кнопке огня (т.е. при нажатии правой кнопки мыши над прямоугольной областью удаляется адрес возрата со стека и осуществляется переход на адрес, который находиться в +14) d07 - вызвать функцию закрытия окна перед запуском программы без огня (т.е. при попадании курсора мыши в эту прямоугольную область удаляется последнее окно с экрана) d08 - вызвать функцию закрытия окна перед запуском программы по левой кнопке (т.е. при нажатии левой кнопки мыши над прямоугольной областью удаляется последнее окно с экрана) d09 - вызвать функцию закрытия окна перед запуском программы по правой кнопке (т.е. при нажатии правой кнопки мыши над прямоугольной областью удаляется последнее окно с экрана) d15 - это флаг: 1 - инверт при огне не убирать
[]------------------------------------------------------------------------[]
SetCMOSPrint - процедура включения печати даты/время из CMOS
на вход: - будет описано позднее на выход: - []------------------------------------------------------------------------[]
ResCMOSPrint - процедура выключения печати даты/время из CMOS
на вход: - будет описано позднее на выход: -
[]------------------------------------------------------------------------[]
SetClock - процедура установки курсора мыши в часы
на вход: - на выход: -
[]------------------------------------------------------------------------[]
SetMouse - процедура установки курсора мыши в нормальный курсор
на вход: - на выход: -
[]------------------------------------------------------------------------[]
MoveBytes - процедура быстрого копирования памяти с помощью акселлератора с увеличением адресов на вход: HL - откуда DE - куда BC - сколько на выход: HL - (откуда + сколько) DE - (куда + сколько)
[]------------------------------------------------------------------------[]
MoveBytesUp - процедура быстрого копирования памяти с помощью акселлератора с уменьшением адресов на вход: HL - откуда DE - куда BC - сколько на выход: HL - (откуда - сколько) DE - (куда - сколько)
[]------------------------------------------------------------------------[]
Mult8 - процедура беззнакового умножения 8 * 8 bit = 16 bit
на вход: E * C на выход: HL - результат
[]------------------------------------------------------------------------[]
Mult16X8 - процедура беззнакового умножения 16 * 8 bit = 24 bit
на вход: DE * C на выход: A, HL - результат
[]------------------------------------------------------------------------[]
Mult16 - процедура беззнакового умножения 16 * 16 bit = 16 bit
на вход: DE * BC на выход: HL - результат
[]------------------------------------------------------------------------[]
Mult16X16 - процедура беззнакового умножения 16 * 16 bit = 32 bit
на вход: DE * BC на выход: HL, DE - результат
[]------------------------------------------------------------------------[]
Mult32 - процедура беззнакового умножения 32 * 16 bit = 32 bit
на вход: HL, DE * BC на выход: HL, DE - результат
[]------------------------------------------------------------------------[]
Divis16X16 - процедура беззнакового деления 16 / 16 bit = 16.16 bit
на вход: BC / DE на выход: BC - результат HL - остаток
[]------------------------------------------------------------------------[]
Divis24X16 - процедура беззнакового деления 24 / 16 bit = 8.16 bit
на вход: HL, C / DE на выход: A - результат HL - остаток
[]------------------------------------------------------------------------[]
Divis32X16 - процедура беззнакового деления 32 / 16 bit = 16.16 bit
на вход: HL, DE / BC на выход: DE - результат HL - остаток
[]------------------------------------------------------------------------[]
Divis32 - процедура беззнакового деления 32 / 16 bit = 32.16 bit
на вход: HL, DE / BC на выход: HL, DE - результат BC - остаток
[]------------------------------------------------------------------------[]
ConvNumTxt32 - процедура конвертации беззнакового числа 32 bit в текст
на вход: BC, HL - число 32 bit DE - адрес буфера на выход: DE - адрес следующего байта за числом
[]------------------------------------------------------------------------[]
ConvNumTxt16 - процедура конвертации беззнакового числа 16 bit в текст
на вход: HL - число 16 bit DE - адрес буфера на выход: DE - адрес следующего байта за числом
[]------------------------------------------------------------------------[]
ConvNumTxt8 - процедура конвертации беззнакового числа 8 bit в текст
на вход: A - число 8 bit DE - адрес буфера на выход: DE - адрес следующего байта за числом
[]------------------------------------------------------------------------[]
ConvTxtNum32 - процедура конвертации текста в беззнаковое число 32 bit
на вход: DE - адрес текста (конец строки - 0) на выход: HL, IX - число C flag - ошибка
[]------------------------------------------------------------------------[]
ConvTxtNum16 - процедура конвертации текста в беззнаковое число 16 bit
на вход: DE - адрес текста (конец строки - 0) на выход: HL - число C flag - ошибка
[]------------------------------------------------------------------------[]
DOSError - процедура вывода окна ошибки (для дос ошибок)
на вход: A - номер ошибки на выход: -
[]------------------------------------------------------------------------[]
13 july 2002 Anton Enin (C) Copyright 2002 R-lab если есть вопросы e-mail: r-lab@mail.ru или на спринтер форуме.
| | | | |
|
17 Dec 2020 01:12 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22607 Location: Silicon Valley
|
Я смотрю я писал визуализатор FLX-плагинов на PC (Watcom-C/C++) - надо чтоли зарелизить Ещё редактор ресурсов вроде начинал городить для Спринтера Потом Антон Енин выкладывал исходники для того, чтобы можно было повторить контролы FN в своей программе и я даже из них сделал DLL...
|
17 Dec 2020 01:15 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22607 Location: Silicon Valley
|
Вот как FLX-CALC.FLX выглядит в моём визуализаторе: Также визуализатор генерирует текстовый файл с человеческим описанием ресурсов из файла FLX: | | | | Code: INFO FILE flx-calc.flx
MakeWindow 01 x0=242 y0=80 dx=155 dy=97 02|FILL (246,82) 147x10 00 01|STR (248,83) 0F 'Calculator' 06|HORZ (243,93) 154 03|BUTT0 (250,99) 139x11 [250,389,99,110] 04|BUTTON (250,114) 26x13 [250,276,114,127] 04|BUTTON (278,114) 26x13 [278,304,114,127] 04|BUTTON (306,114) 26x13 [306,332,114,127] 04|BUTTON (334,114) 26x13 [334,360,114,127] 04|BUTTON (362,114) 26x13 [362,388,114,127] 04|BUTTON (250,129) 26x13 [250,276,129,142] 04|BUTTON (278,129) 26x13 [278,304,129,142] 04|BUTTON (306,129) 26x13 [306,332,129,142] 04|BUTTON (334,129) 26x13 [334,360,129,142] 04|BUTTON (362,129) 26x13 [362,388,129,142] 04|BUTTON (250,144) 26x13 [250,276,144,157] 04|BUTTON (278,144) 26x13 [278,304,144,157] 04|BUTTON (306,144) 26x13 [306,332,144,157] 04|BUTTON (334,144) 26x13 [334,360,144,157] 04|BUTTON (362,144) 26x28 [362,388,144,172] 04|BUTTON (250,159) 26x13 [250,276,159,172] 04|BUTTON (278,159) 26x13 [278,304,159,172] 04|BUTTON (306,159) 26x13 [306,332,159,172] 04|BUTTON (334,159) 26x13 [334,360,159,172] 00|END
| | | | |
Надо под SDL чтоли переписать с использованием класса UniGraf, чтобы растягивал 640x256 в 640x480...
|
17 Dec 2020 01:46 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22607 Location: Silicon Valley
|
Вот выкладываю все свои FLX исходники как есть - там доки всех версий (см. подкаталог old), исходники cd-плеера (умеет PLAY и EJECT) и исходники просмотрщика FLX-интерфейсов для доса (всё 18-летней давности)
|
21 Jan 2021 13:13 |
|
|
|
Page 1 of 1
|
[ 5 posts ] |
|
Who is online |
Users browsing this forum: No registered users and 17 guests |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot post attachments in this forum
|
|