Теневой сервис - монитор для компьютера Scorpion ZS 256 1993 г.

Расширение ОС Бейсик - установка переменных монитора.


_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 нуля.




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Пробы пера - Поэзия.
Drink'em - Алкодомино.
Юмор - Короткие истории, услышанные в МИРЭА в буфете "У погибшего программиста".
Рассказ - Ну, юзер, погоди! (продолжение).
Предисловие - рассказ о сходке поклонников AD&D.

В этот день...   23 ноября