Итак, основная работа над изменением Монитора практически завершена.
Подпрограммы вывода на экран
- CALL F809 выводит символ на экран из регистра C
- CALL F80F выводит символ на экран из регистра A (как в «Орионе»)
- CALL F815 выводит байт на экран, сохраняя все регистры
- CALL F818 выводит текст на экран с утерей регистра A (завершение строки по 00 или >128)
Код подпрограммы вывода символа на экран полностью переписан, поддерживает пользовательский буфер и оконность.
Рабочие ячейки:
Код:
CONADR: EQU 07600H ; Адрес символа под курсором в памяти;
CONPOS: EQU 07602H ; Координаты позиции X,Y курсора на экране;
CON@PX: EQU 07602H ; Консольная позиция курсора по X;
CON@PY: EQU 07603H ; Консольная позиция курсора по Y;
CONSTA: EQU 07604H ; Консольный статус в Escape-последовательности;
CONLEN: EQU 0760FH ; Ширина одного знакоряда в настройках ИМС ВГ75 (стандарт: 78);
CONORG: EQU 07610H ; Консольный организатор окна с позицией X1,Y1 относительно начала буфера;
CON@XO: EQU 07610H ; Консольная абсолютная позиция окна по горизонтали (стандарт: 8);
CON@YO: EQU 07611H ; Консольная абсолютная позиция окна по вертикали (стандарт: 3);
CONBOX: EQU 07612H ; Относительный размер бокса ограничителя окна на экране (стандарт: 63x24);
CON@XS: EQU 07612H ; Относительный размер окна по горизонтали с указанием крайнего правого столбца (стандарт: 63);
CON@YS: EQU 07613H ; Относительный размер окна по вертикали с указанием крайней нижней строки (стандарт: 24)
Тем самым, подпрограмма Монитора уже поддерживает оконность (от 1x1 до 80x64) и может полноценно работать с буфером в любом месте ОЗУ. Исключения составляют только коды:- 19 - Перемещает позицию курсора лишь до верхней основной строки окна, затем - прокручивает область вниз;
- 1B - Помимо установки курсора в нужную позицию по Escape-команде «Y», все остальные комбинации перенаправляет в драйвер пользователя, вызываемый через ловушку;
- 1F/0C - Перезапускают ВТ57/ВГ75 в стандартный режим 78x30 в буфере 76D0…7FF3 с окном 64x25 в позиции 8,3;
- 1F - Очищает буфер 76D0…7FFF и перезапускает ВТ57/ВГ75 на стандартный режим
Подпрограмма управления режимом экрана
Для переключения режима ВТ57 и ВГ75 достаточно в HL загрузить адрес на таблицу с описанием режима и вызвать подпрограмму F83C.
Естественно, служебные ячейки с параметрами окна нужно корректировать непосредственно.
Ниже - сам образ ПЗУ Монитора и подгружаемый файл с режимом 80x64.
После запуска программы с переходом по G0 режим экрана переключается и управление возвращается Монитору, что позволяет использовать все директивы в установленном режиме: Даже директивы «I» и «O»!
Выход из режима, как выше и говорилось, клавиша «Стр» или «Home»…
P.S.: Пришлось пожертвовать директивами «X» и «C»… :roll:
Для запуска игры «Volcano» следует сначала обнулить ячейки 03EA и 03EE…