Набор утилит "UTILITIO" для организации диалога для ПК "ОРИОН-128" по журналу Радиолюбитель
Программа позволяет добавить новые функции работы с Орион-128
Публиковалось в журнале Радиолюбитель №11 - 1994 год
А. ДАВИДОВИЧ, 220047, г.Минск, а/я 40.
НАБОР УТИЛИТ "UTILITIO" ОРГАНИЗАЦИИ ДИАЛОГА ДЛЯ ПК "ОРИОН-128"
При написании системных и инструментальных программ много времени занимает
организация диалога программы с пользователем. Для облегчения написания
программ, особенно на ассемблере, и для расширения возможностей ПK
"Орион-128" пользователям предлагается набор утилит-функций организации
диалога с программой.
В набор входят функции по обработке меню, организации "окон", ввода данных и
адресов, воспроизведений музыкальных фрагментов и многое другое. Утилиты
объединены в один модуль, который хранится на диске "А" или "В" в виде
файла. Для вызова утилит модуль необходимо загрузить в память при помощи
подпрограмм OR DOS
[11]:
NAMEUTIL:DB"UTILITIO" ; имя зарезервировано
Модуль размещается в ОЗУ по адресам AOOOH-A7FFH. Это связано с тем, что
адресное пространство A800H-AFFFH уже зарезервировано под некоторые драйверы
и подпрограммы (KEYALT$, LPT и др.).
При необходимости модуль можно дезассемблировать и изменить рабочие адреса
или удалить некоторые функции. Однако при этом не следует присваивать
полученному модулю имя "UTILITIO$" или включать утилиты непосредственно в
тело программы. Все рабочие ячейки памяти, используемые утилитами,
расположены в начале модуля но адресам A000H-A07DH. Их содержимое изменять
не следует.
Имена функций, их рабочие адреса и использование регистров приведены в табл.
I. коды модуля с контрольными суммами - в табл.2.
При работе с модулем нужно учитывать следующее:
- модуль нельзя загружать в память непосредственно из ORDOS (по
адресам
A000H-A7FFH размещаются каталоги дисков);
- функции рассчитаны на работу со стандартной организацией экрана (25 строк,
64 символа. 1-й экран). При другой организации необходимо вносить поправки
во входные и выходные значения регистров;
- необходимо выполнять все условия, предъявляемые функцией, иначе результат
непредсказуем;
- вся текстовая информация выводится через подпрограмму монитора F809H, т.е.
символ в регистре С, что позволяет использовать подгружаемые драйверы,
например. "KEYALT$".
ФУНКЦИЯ I. Прорисовка "окна"
OKNO.0A28DH .
Очищается область экрана и изменяется цвет, прорисовывается рамка и тень от
окна, в HL заносится адрес управляющего слова:
LXI H.OKNODAT
CALL OKNO
OK NO DAT: DB N,X,Y,XX.YY,CR,CS,C
где N - не используется, любое значение.
X.Y - координаты курсора левого верхнего угла окна, значение X должно быть в
пределах 2...60 (01Н-ЗСП), Y - в пределах 2..,20 (01H-I4H);
XX,YY - размер окна в символах по горизонтали и вертикали соответственно, XX
и YY должны быть в тех же пределах, что и X.Y, но при этом должны
выполняться условия: X+XX+4<63(3EH), Y+YY+4< 24 (18 Н);
CR - код цвета рамки;
CS - код цвета всего экрана (например, для программ NC$ и VC$ - 1FH); СТ -
код цвета тени.
Значения атрибутов цвета стандартные, фон/символ, 00H-FFH |2|. Если область
цвета на диске "В" занята файлами, цвет не выводится.
ФУНКЦИЯ 2. Прорисовка рамки RAMKA: 0А1А2Н
На экране рисуется рамка, цвет не изменяется: LXI H.XY LXI D.XXYY CALL RAMKA
где X.Y - адрес экранного ОЗУ левого верхнего угла рамки (CI0BH-EEF0H);
XX, YY - размер рамки в байтах по горизонтали и вертикали соответственно,
причем X+XX<EFH, Y+YY<FFH.
Рамку можно нарисовать, задав размер в символах: LXI H.YX ; координаты
левого верхнего угла
LXI D.YYXX ; размер рамки в символах
CAU, ADRRAM ; см.функцию 3
CALL RAMKA
ФУНКЦИЯ 3. Вычисление адресов области экранного ОЗУ ADRRAM: 0A24FH
Преобразует размер области, заданный в символах, в адрес для экранного ОЗУ.
Обращение к подпрограмме - см.функцию 2. Значения X.XX.Y.YY - такие же, как
для функции 1. ФУНКЦИЯ 4. Вычисление адреса символа ADRSIM: 0А26ЕН
Преобразует координаты символа в адрес экранного ОЗУ: LXI H.YX ; координаты
символа (0000Н-193FH)
CALL ADRSIM
Функция возвращает в HL адрес, в котором начинается символ (по Y - верхний
байт). Например, если YX было равно 505Н, после
Скачать в хорошем качестве
дамп программы
выполнения функции в HL будет адрес CI 14Н.
ФУНКЦИЯ 5. Модификация области экранного ОЗУ OBLCLS: А203Н
Заполняет заданную облаем> экранного ОЗУ в 0-й или 1-й странице
указанным кодом:
I.XI H.XY ; адрес левого верхнего угла (С000Н-...)
LX1 D.XXYY ; размер области в байтах (0101Н-2FFFH)
MVI A.NSTR ; номер страницы ОЗУ (0 или I) MVI С,КОП ; код заполнения
(00H-FFH)
CALL OBLCLS
При помощи этой функции можно очистить экран, изменить цвет
отображаемой информации и т.д. Если экранная область 1 -й страницы
занята, модификация ОЗУ в этой странице производиться не будет.
По всем вопросам и для получения каталога ПО вышлите автору конверт с
марками и Вашим обратным адресом.
Продолжение здесь... решил не оцыфровыать
На предыдущую страницу На главную страницу На следующую страницу