[]========================================================================[] * * * Описание Flex Navigator API v1.xx для разработчиков Flx-Plugins * * doc v0.2 от 07.07.2002 * * * []========================================================================[] []------------------------------------------------------------------------[] ClearScreen - процедура отчистки 0-го экана нужным цветом. на вход: A - цвет отчистки (00-0Fh) на выход: - []------------------------------------------------------------------------[] MakeWindow - процедура создания графического окна на вход: (SP) - описатель окна на выход: - сразу за вызовом этой процедуры в программе следует описатель окна. возврат из процедуры происходит по адресу, следующему за описателем. например: call MakeWindow ... ; описатель окна описатель окна: +00 (1) флаг вывода окна: 0 - без сохранения данных под окном (используется для полноэкранных окон) 1 - с сохранением данных под окном (используется для небольших окон) 0x7F - восстановить данные под окном (флаг служит для закрытия текущего окна) +01 (2) координата x для вывода (0 - 639) +03 (2) координата y для вывода (0 - 255) +05 (2) длина окна по x (0 - 639) +07 (2) длина окна по y (0 - 255) далее идут об'екты окна в формате: +00 (1) тип обекта +01 ... описатели обекта об'екты окна: 0. +00 (1) == 0 - конец списка об'ектов. после этого оконная функция возвращает управление. 1. +00 (1) == 1 - текстовая строка +01 (2) смещение x от начала окна (0 - 639) +03 (2) смещение y от начала окна (0 - 255) +05 (1) цвет печати (d7-d4 цвет background, d3-d0 цвет foreground) +06 ... текстовая строка (конец строки - 0) 2. +00 (1) == 2 - заполнение прямоугольной плоскости +01 (2) смещение x от начала окна (0 - 639) +03 (2) смещение y от начала окна (0 - 255) +05 (2) длина по x (0 - 639) +07 (2) длина по y (0 - 255) +09 (1) цвет заполнения (d7-d4 цвет background, d3-d0 цвет foreground) 3. +00 (1) == 3 - отрисовка углублённой прямоугольной плоскости +01 (2) смещение x от начала окна (0 - 639) +03 (2) смещение y от начала окна (0 - 255) +05 (2) длина по x (0 - 639) +07 (2) длина по y (0 - 255) 4. +00 (1) == 4 - отрисовка выпуклой прямоугольной плоскости +01 (2) смещение x от начала окна (0 - 639) +03 (2) смещение y от начала окна (0 - 255) +05 (2) длина по x (0 - 639) +07 (2) длина по y (0 - 255) 5. +00 (1) == 5 - отрисовка кнопки с текстом +01 (2) смещение x от начала окна (0 - 639) +03 (2) смещение y от начала окна (0 - 255) +05 (2) длина по x (0 - 639) +07 (2) длина по y (0 - 255) +09 (1) цвет печати (d7-d4 цвет background, d3-d0 цвет foreground) +10 ... текстовая строка (конец строки - 0) Внимание! печать текста осуществляется с позиций x + 4, y + 1 6. +00 (1) == 6 - отрисовка горизонтального разделителя +01 (2) смещение x от начала окна (0 - 639) +03 (2) смещение y от начала окна (0 - 255) +05 (2) длина по x (0 - 639) 7. +00 (1) == 7 - отрисовка вертикального разделителя +01 (2) смещение x от начала окна (0 - 639) +03 (2) смещение y от начала окна (0 - 255) +05 (2) длина по y (0 - 255) 8. +00 (1) == 8 - отрисовка левой кнопки скролбара <- +01 (2) смещение x от начала окна (0 - 639) +03 (2) смещение y от начала окна (0 - 255) 9. +00 (1) == 9 - отрисовка правой кнопки скролбара -> +01 (2) смещение x от начала окна (0 - 639) +03 (2) смещение y от начала окна (0 - 255) 10. +00 (1) == 10 - отрисовка верхней кнопки скролбара ^ +01 (2) смещение x от начала окна (0 - 639) +03 (2) смещение y от начала окна (0 - 255) 11. +00 (1) == 11 - отрисовка нижней кнопки скролбара +01 (2) смещение x от начала окна (0 - 639) +03 (2) смещение y от начала окна (0 - 255) []------------------------------------------------------------------------[] InvertRectan - процедура замены цвета прямоугольной плоскости на вход: HL - x координата BC - y координата HX - длина y LX - длина x D - текущий цвет (d7-d4 цвет background, d3-d0 цвет foreground) E - нужный цвет (d7-d4 цвет background, d3-d0 цвет foreground) на выход: - к сожалению процедура не очень быстрая, поэтому большие прямоугольники советую особо не инвертировать... ;) []------------------------------------------------------------------------[] PrnTxtLnIFF - процедура вывода текстовых строк на графический экран 640x256 в режиме размерного по X шрифта на вход: HL - адрес текстовой строки (конец строки - 0) DE - позиция вывода по X BC - позиция вывода по Y A - цвет печати (d7-d4 цвет background, d3-d0 цвет foreground) на выход: HL - адрес байта, следующего за строкой []------------------------------------------------------------------------[] PrnTxtLnNorm - процедура вывода текстовых строк на графический экран 640x256 на вход: HL - адрес текстовой строки (конец строки - 0) DE - позиция вывода по X BC - позиция вывода по Y A - цвет печати (d7-d4 цвет background, d3-d0 цвет foreground) на выход: HL - адрес байта, следующего за строкой []------------------------------------------------------------------------[] PrnTxtLnNormC - процедура вывода текстовых строк на графический экран 640x256 с известным числом символов на вход: HL - адрес текстовой строки DE - позиция вывода по X C - позиция вывода по Y B - кол-во печатаемых символов A - цвет печати (d7-d4 цвет background, d3-d0 цвет foreground) на выход: HL - адрес байта, следующего за последним символом []------------------------------------------------------------------------[] PrnRangPathL - процедура вывода досовских путей на графический экран 640x256 в режиме размерного по X шрифта, прижатых к левому краю ( |-> ) на вход: IX - кол-во пикселей под вывод строки HL - адрес текстовой строки (конец строки - 0) DE - позиция вывода по X BC - позиция вывода по Y A - цвет печати (d7-d4 цвет background, d3-d0 цвет foreground) на выход: - процедура грамотно укорачивает досовский путь до нужного размера путём замещения невлезающих директорий на ..\ []------------------------------------------------------------------------[] PrnRangPathR - процедура вывода досовских путей на графический экран 640x256 в режиме размерного по X шрифта, прижатых к правому краю ( <-| ) на вход: IX - кол-во пикселей под вывод строки HL - адрес текстовой строки (конец строки - 0) DE - позиция вывода по X BC - позиция вывода по Y A - цвет печати (d7-d4 цвет background, d3-d0 цвет foreground) на выход: - процедура грамотно укорачивает досовский путь до нужного размера путём замещения невлезающих директорий на ..\ []------------------------------------------------------------------------[] PrnRangPathC - процедура вывода досовских путей на графический экран 640x256 в режиме размерного по X шрифта, отцентрированных относительно краёв ( <-|-> ) на вход: IX - кол-во пикселей под вывод строки HL - адрес текстовой строки (конец строки - 0) DE - позиция вывода по X BC - позиция вывода по Y A - цвет печати (d7-d4 цвет background, d3-d0 цвет foreground) на выход: - процедура грамотно укорачивает досовский путь до нужного размера путём замещения невлезающих директорий на ..\ []------------------------------------------------------------------------[] InputLine - процедура редактирования строки на графическом экране 640x256 в режиме размерного по X шрифта на вход: IX - адрес описателя строки HL - адрес описателя элементов экрана (для мышки) на выход: - описатель строки: +00 (1) максимальная длина строки +01 (1) флаг готовности +02 (1) текущая X позиция курсора (инициализируется в InputLine) +03 (1) текущая add_x (инициализируется в InputLine) +04 (1) количество введенных символов / длина строки +05 (2) X позиция строки на экране +07 (2) Y позиция строки на экране +09 (2) X длина строки на экране +0B (1) цвет строки (d7-d4 цвет background, d3-d0 цвет foreground) +0C ... сама строка процедуры для таблицы элементов экрана: InpLnExtN - процедура нормального выхода из редакции InpLnExtC - процедура выхода из редакции по cancel (восстанавливает изначальную строку) []------------------------------------------------------------------------[] InitScrBar - процедура инициализации описателя скроллбара на вход: IX - адрес описателя скроллбара на выход: - []------------------------------------------------------------------------[] PrnHScrBar - процедура печати горизонтального скроллбара на вход: IX - адрес описателя скроллбара на выход: - []------------------------------------------------------------------------[] PrnVScrBar - процедура печати вертикального скроллбара на вход: IX - адрес описателя скроллбара на выход: - []------------------------------------------------------------------------[] InitProcess - процедура инициализации описателя процессбара на вход: IX - адрес описателя процессбара на выход: - []------------------------------------------------------------------------[] PrnProcess - процедура печати процессбара на вход: IX - адрес описателя процессбара на выход: - []------------------------------------------------------------------------[] ResFire - процедура ожидания, пока все кнопки мыши не будут отпущены на вход: - на выход: - []------------------------------------------------------------------------[] TestCoords - процедура проверки координат мыши по таблице элементов зкрана на вход: IX - адрес таблицы элементов зкрана на выход: - таблица элементов зкрана: +00 (2) левая x координата элемента +02 (2) правая x координата элемента +04 (2) верхняя y координата элемента +06 (2) нижняя y координата элемента +08 (2) флаги элемента +10 (2) адрес обработчика при не нажатом огне +12 (2) адрес обработчика при нажатом огне (левая кнопка) +14 (2) адрес обработчика при нажатом огне (правая кнопка) флаги элемента: d00 - элемент кнопка d01 - рабочая кнопка d02 - инверт d03 - статичный инверт d04 - программа запускается без адреса возврата без огня d05 - программа запускается без адреса возврата по левой кнопке огня d06 - программа запускается без адреса возврата по правой кнопке огня d07 - вызвать функцию закрытия окна перед запуском программы без огня d08 - вызвать функцию закрытия окна перед запуском программы по левой кнопке d09 - вызвать функцию закрытия окна перед запуском программы по правой кнопке d15 - это флаг: 1 - инверт при огне не убирать если +00 == 0x8000 это считается концом таблицы элементов зкрана []------------------------------------------------------------------------[] SetCMOSPrint - процедура включения печати даты/время из CMOS на вход: - будет описано позднее на выход: - []------------------------------------------------------------------------[] ResCMOSPrint - процедура выключения печати даты/время из CMOS на вход: - будет описано позднее на выход: - []------------------------------------------------------------------------[] SetClock - процедура установки курсора мыши в часы на вход: - на выход: - []------------------------------------------------------------------------[] SetMouse - процедура установки курсора мыши в нормальный курсор на вход: - на выход: - []------------------------------------------------------------------------[] MoveBytes - процедура быстрого копирования памяти с помощью акселлератора с увеличением адресов на вход: HL - откуда DE - куда BC - сколько на выход: HL - (откуда + сколько) DE - (куда + сколько) []------------------------------------------------------------------------[] MoveBytesUp - процедура быстрого копирования памяти с помощью акселлератора с уменьшением адресов на вход: HL - откуда DE - куда BC - сколько на выход: HL - (откуда - сколько) DE - (куда - сколько) []------------------------------------------------------------------------[] Mult8 - процедура умножения 8 * 8 bit = 16 bit на вход: E * C на выход: HL - результат []------------------------------------------------------------------------[] Mult16X8 - процедура умножения 16 * 8 bit = 24 bit на вход: DE * C на выход: A, HL - результат []------------------------------------------------------------------------[] Mult16 - процедура умножения 16 * 16 bit = 16 bit на вход: DE * BC на выход: HL - результат []------------------------------------------------------------------------[] Mult16X16 - процедура умножения 16 * 16 bit = 32 bit на вход: DE * BC на выход: HL, DE - результат []------------------------------------------------------------------------[] Mult32 - процедура умножения 32 * 16 bit = 32 bit на вход: HL, DE * BC на выход: HL, DE - результат []------------------------------------------------------------------------[] Divis16X16 - процедура деления 16 / 16 bit = 16.16 bit на вход: BC / DE на выход: BC - результат HL - остаток []------------------------------------------------------------------------[] Divis24X16 - процедура деления 24 / 16 bit = 8.16 bit на вход: HL, C / DE на выход: A - результат HL - остаток []------------------------------------------------------------------------[] Divis32X16 - процедура деления 32 / 16 bit = 16.16 bit на вход: HL, DE / BC на выход: DE - результат HL - остаток []------------------------------------------------------------------------[] Divis32 - процедура деления 32 / 16 bit = 32.16 bit на вход: HL, DE / BC на выход: HL, DE - результат BC - остаток []------------------------------------------------------------------------[] ConvNumTxt32 - процедура конвертации числа 32 bit в текст на вход: BC, HL - число 32 bit DE - адрес буфера на выход: DE - адрес следующего байта за числом []------------------------------------------------------------------------[] ConvNumTxt16 - процедура конвертации числа 16 bit в текст на вход: HL - число 16 bit DE - адрес буфера на выход: DE - адрес следующего байта за числом []------------------------------------------------------------------------[] ConvNumTxt8 - процедура конвертации числа 8 bit в текст на вход: A - число 8 bit DE - адрес буфера на выход: DE - адрес следующего байта за числом []------------------------------------------------------------------------[] ConvTxtNum32 - процедура конвертации текста в число 32 bit на вход: DE - адрес текста (конец строки - 0) на выход: HL, IX - число C flag - ошибка []------------------------------------------------------------------------[] ConvTxtNum16 - процедура конвертации текста в число 16 bit на вход: DE - адрес текста (конец строки - 0) на выход: HL - число C flag - ошибка []------------------------------------------------------------------------[] DOSError - процедура вывода окна ошибки (для дос ошибок) на вход: A - номер ошибки на выход: - []------------------------------------------------------------------------[] 07 july 2002 Anton Enin (C) Copyright 2002 R-lab если есть вопросы e-mail: r-lab@mail.ru или на спринтер форуме.