_3,3 Установка переменных монитора (82h)
Через эту подпрограмму программист получает доступ к различным пере-
менным монитора. Это позволяет изменять некоторые режимы работы (это
свойство используется в профессиональном расширении), изменять цвета ме-
ню и экранов монитора, а также предоставляет возможность доступа к пере-
менным дисковой BIOS.
Перед вызовом этой подпрограммы в регистр DE микропроцессора должен
быть помещен код типа переменных (см. ниже), а в регистр ВС - смещение к
переменной. Бит CY задает режим доступа, если он установлен - запись пере-
менной, если сброшен - чтение. Значение переменной передается через акку-
мулятор.
Если необходимо изменить отдельный бит, то сначала нужно прочитать
значение переменной, изменить бит, а затем записать измененное значение.
Ниже приведены значения некоторых переменных, представляющих
интерес для программистов. После указания кода смещения приводится тип
переменной (db-байтовая; dw-двухбайтовая; ds-многобайтовая, последую-
щее число определяет количество байт).
_3.3.1. Системные переменные монитора (РЕ=ЮО)
ВС = +12(db)
отдельные биты этого байта позволяют управлять выводом значений
регистров на экран монитора (см. табл.13). Запись ! запрещает вывод.
ВС = +21 (db)
отдельные биты этого байта (см. табл.14) позволяют управлять выводом
на принтер.
_3.3.2. Переменные режимов, цвета (РЕ=02)
ВС - +0(db)
константа антидребезговой задержки монитора.
ВС = +1 (db)
константа задержки перед автоповтром.
ВС = +2(db)
константа задержки между авгоповгорами.
ВС = +5(db)
цвет бордюра, устанавливаемый монитором, при подаче звукового сигнала
ошибки.
ВС - +6(db)
код символа «возврата каретки» для принтера.
ВС = +7(db)
код символа «перевода строки» для принтера.
ВС - +8(db)
код символа «перевода формата» для принтера.
ВС = +9(dw)
код, определяющий скорость передачи для последовательного интерфейса
(для 9600 бод-Obh).
ВС - +0bh(dw)
код, определяющий скорость передачи для последовательного интерфейса
(для 1200 бод - 6аЮ.
Be = +0dh(ds 11)
коды, служащие для перевода принтера в графический режим (непосредст-
венно за ними будет выдано 768 байт графической информации при печати
экрана из монитора). Байт +0dh хранит количество управляющих кодов.
ВС - +15h(ds 4)
коды, служащие для перевода принтера в текстовый режим, завершающие
печать экрана. Байт +015h хранит количество управляющих кодов. •
ВС = +ldh(db)
число строк на странице при печати на принтере.
ВС - +leh(db)
число символов в строке при печати на принтере.
_3.3.3. Переменные дисковой BIOS (DE=Q4)
ВС - +4(ds 4)
байты хранят максимальное число секторов на дорожке при размере сектора
128, 256, 512, и 1024 байта соответственно.
ВС = +0ah(db)
номер текущего дисковода: 0-дисковода А, 1-В.
ВС = +0bh(db)
число попыток считывания при ошибке, начальное значение 3.
ВС = +0ch(ds 2)
коды, определяющие тип дисководов (спецификации) А и В соответственно.
ВС - +10h(ds 2)
коды, определяющие тип дискеты в дисководах А и В соответственно.
ВС - +18h(ds 2)
коды, ti|j|e-out для дисководов А и В соответственно.
ВС = +ldh (db)
код ошибки дискового интерпритатора.
_3.4. Очистка окна пользователя (83h)
Для внутреннего использования в мониторе была написана программа
оконного интерфейса. Несмотря на более чем скромные возможности, она
может оказаться полезной при написании своих собственных программ.
Каждое окно описывается своим определенным дескриптором-блоком,
состоящим из 13 байт. Местоположение окна на экране может выбираться
произвольно, можно также определить несколько окон одновременно, адрес
дескриптора текущего окна должен быть помещен в регистр IX микропро-
цессора. Перекрывающиеся окна не накладываются, а как бы «просвечива-
ют» сквозь друг друга.
Прежде всего окно необходимо описать, задав в дескрипторе начальные
координаты окна и его размер. Все координаты отсчитываются от левого вер-
хнего угла окна, либо экрана. Затем окно необходимо очистить функцией
83h, которая инициализирует некоторые переменные в дескрипторе. Назна-
чение байт в дескрипторе окна приведено ниже
+0,+1 Координаты курсора в окне(Х,У) - первоначально устанавливаются
в ноль программой очистки окна, затем могут модифицироваться
пользователем.
+2, +3 Координаты начала окна (X,Y). Эти координаты измеряются в стан-
дартных знакоместах размером 8*8 точек.
+4,+5 Размер окна в стандартных символах (8*8 точек), первое число-
размер по вертикали, второе-по горизонтали.
+6 Байт хранит цифровые атрибуты окна.
+7 Системные атрибуты окна, задаются отдельными битами (см.
табл.15).
Табл.15 Формат байта системных атрибутов окна
+10 Размер символов в точках. Монитором поддерживается два размера
символов в 6 и в 8 точек.
+11 Размер окна в символах. Для символов в 8 точек этот размер совпа-
дает с шириной окна. Если размер символа 6 точек, то перед
инициализацией (очисткой) необходимо рассчитать размер окна и
поместить в этот байт.
+ 12 Код символа курсора. Код с этим символом будет выводиться вместе,
отмечая положение курсора, если сброшен 0 бит в системных
атрибутах окна.
_3.5. Вывод символа в окно пользователя (84И)
Код выводимого символа должен находиться в аккумуляторе, а
дескриптор используемого окна в регистре IX. Символы из набора ASCIT
(коды в диапазоне 32... 127) непосредственно печатаются в определенном
окне экрана. Возможно использование определенных символов.
1 Установка атрибутов. Непосредственно за управляющим кодом должен
следовать вывод в окно байта атрибуте, текущие атрибуты окна запомина-
" ются программой вывода в специальной ячейке памяти.
2 Восстановление запомненных атрибутов.
7 Звонок. Программа шрабатывас! коро1кий звуковой сигнал. Бордюр
получает при этом цвет, усшновлепный в специальной ячейке монитора (см.
раздел 3.3.2. «Переменные режимов, цвет» на стр.33).
10 Первод строки. Ксли курсор находится в последней строка, ю
происходит «свиюк»- перемещение содержимого окна вверх с очисткой пос-
ледней строки.
13 Перевод каретки. 11еремещение курсора в крайнюю левую позиции! орчки
вокне. Если установлен соответствующий от и дескрипторе окна, tocobmcci но l
возвратом каретки вызывается и программа обслуживания символа перевода ароки
27 Позиционирование курсора внуфи окна. Непосредственно за управ-
ляющим кодом должны быть выведены два баша. Первый определяет
позицию курсора в строке, шорой помер сдроки. Отсчет оедекя oi .темою
верхнего vrjia окна, начиная i нудя
_3.6. Отключение монитора-отладчика (85h)
Эта функция введена специально для программиста, пишпш .для ком-
пьютера Scorpion ZS 256, и преследуе! цель зашиты программ от «взлома»
внутренним отладчиком. После выполнения ;пой подпрограммы вызов
отладчика из меню сервис-монитора становится невозможным. Кроме этого,
включается режим очистки памяти по аппаратному сбросу компьютера, что
исключает «снятие» программы из памяти.
Обратим внимание на один важный момент. В «обычном» компьютере,
использование этой подпрограммы приведет к возврату управления в
интерпритатор Бейсикт (если только не перехвачен адрес возврата [2j]) Та
кой же эффект произойдет, если в компьютере Scorpion установлена версия
монитора ниже 2.2. Подпрограммой 85h можно пользоваться (для отклю-
чения отладчика) только, если значение байта Oflh во втором банке ПЗУ
(см. стр.42) отлично oi нуля.