Важная информация

User Tag List

Показано с 1 по 1 из 1

Тема: [2/3] немного инфы по теневику

  1. #1
    Valerij Kozhevnikoff (2:5020/4040)
    Гость

    По умолчанию [2/3] немного инфы по теневику

    FromNet: NET_Moscow_Russia_(245_02/09/2005) (commserv.rpb.ru)

    Здравствуй, All!

    82h, установка переменных монитора


    Через эту подпрограмму программист получает доступ к
    различным переменным монитора. Это позволяет изменять
    некоторые режимы работы (это свойство используется в
    проффесиональном расширении), изменять цвета меню и экранов

    26
    монитора, а также предоставляет возможность доступа к
    переременным дисковой BIOS.
    Перед вызовом этой подпрограммы в регистр DE
    микропроцессора должен быть помещён код типа переменных (см.
    ниже), а в регистр BC -- смещение к переменной. Бит CY
    задаёт режим доступа, если он установлен -- запись
    переменной, если сброшен -- чтение. Значение переменной
    передаётся через аккумулятор.
    Если необходимо изменить отдельный бит, то сначала нужно
    прочитать значение переменной, изменить бит, а затем
    записать изменённое значение.
    Hиже приведены назначения некоторых переменных,
    представляющих интерес для программистов. После указания
    кода смещения приводится тип переменной (db -- байтовая; dw
    количество байт).
    DE=00, системные переменные монитора
    BC=+12 (db)
    отдельные биты этого байта позволяют управлять выводом
    значений регистров на экран монитора. Запись 1
    запрещает вывод:
    бит, регистр
    7, PC
    6, SP
    5, IX
    4, IY
    3, HL (HL')
    2, DE (DE')
    1, BC (BC')
    0, AF (AF')
    BC=+21 (db)
    отдельные биты этого байта позволяют управлять выводом
    на принтер.
    бит, значение когда сброшен, значение когда установлен
    7, данные выводятся в прямом виде, данные выводятся в
    инверсном виде;
    3, два стоповых бита, один стоповый бит;
    2, 8 бит в байте данных, 7 бит в байте данных
    1, скорость передачи 9600 бод, скорость передачи 1200
    бод;
    0, интерфейс Centronics, интерфейс RS232.
    DE=02, переменные режимов, цвета
    BC=+0 (db)
    константа антидребезговой задержки монитора.
    BC=+1 (db)
    константа задержки перед автоповтором.
    BC=+2 (db)
    константа задержки между автоповторами.
    BC=+5 (db)
    цвет бордюра, устанавливаемый монитором, при подаче
    звукового сигнала ошибки.
    BC=+6 (db)
    код символа "возврата каретки" для принтера.

    27
    BC=+7 (db)
    код символа "перевода строки" для принтера.
    BC=+8 (db)
    код символа "перевода формата" для принтера.
    BC=+9 (dw)
    код, определяющий скорость передачи для
    последовательного интерфейса (для 9600 бод -- 0bh).
    BC=+0bh (dw)
    код, определяющий скорость передачи для
    последовательного интерфейса (для 1200 бод -- 6ah).
    BC=+0dh (ds 11)
    коды, служащие для перевода принтера в графический
    режим (непосредственно за ними будет выдано 768 байт
    графической информации при печати экрана из монитора).
    Байт +0dh хранит количество управляющих кодов.
    BC=+15h (ds 4)
    коды, служащие для перевода принтера в текстовый режим,
    завершающие печать экрана. Байт +015h хранит количество
    управляющих кодов.
    BC=+1dh (db)
    число строк на странице при печати на принтере.
    BC=+1eh (db)
    число символов в строке при печати на принтере.
    DE=04, переменные дисковой BIOS
    BC=+4 (ds 4)
    байты хранят максимальное число секторов на дорожке при
    размере сектора 128, 256, 512 и 1024 байта
    соответстевенно.
    BC=+0ah (db)
    номер текущего дисковода: 0 -- дисковод "a", 1 -- "b".
    BC=+0bh (db)
    число попыток считывания при ошибке, начальное значение
    3.
    BC=+0ch (ds 2)
    коды, определяющие тип дисководов (спецификации) "a" и
    "b" соответственно.
    BC=+10h (ds 2)
    коды, определяющие тип дискеты в дисководах "a" и "b"
    соответственно.
    BC=+18h (ds 2)
    коды, time-out для дисководов "a" и "b" соответственно.
    BC=+1dh (db)
    код ошибки дискового интерпретатора.

    83h, очистка экрана пользователя

    Для внутреннего использования в мониторе была написана
    программа оконного интерфейса. Hесмотря на более чем
    скромные возможности она может оказаться полезной при
    написании своих собственных программ. Каждое окно
    описывается определённым дескриптором -- блоком состоящим из
    13 байт. Местоположение окна на экране может выбираться
    произвольно, можно также определить несколько окон
    одновременно, адрес дескриптора текущего окна должен быть

    28
    помещён в регистр IX микропроцессора. Перекрывающиеся окна
    не накладываются, а как бы "просвечивают" сквозь друг друга.
    Прежде всего окно необходимо описать, задав в дескрипторе
    начальные координаты окна и его размер. Все координаты
    отсчитываются от верхнего левого угла окна, либо экрана.
    Затем окно необходимо очистить функцией 83h, которая
    инициализирует некоторые переменные в дескрипторе.
    Hазначение байт в дескрипторе окна приведено ниже.
    +0, +1
    Координаты курсора в окне (Y, X) -- первоначально
    устанавливаются в ноль программой очистки окна, затем
    могут модифицироваться пользователем.
    +2, +3
    Координаты начала окна (Y, X). Эти координаты
    измеряются в стандартных знакоместах размером 8*8
    точек.
    +4, +5
    Размер окна в стандартных символах символах (8*8
    точек), первое число размер по вертикали, второе -- по
    горизонтали.
    +6
    Байт хранит цветовые атрибуты окна.
    +7
    Системные атрибуты окна, задаются отдельными битами.
    бит, назначение
    5, запрет вывода,, все выводимые символы игнорируются;
    4, произвольный формат,, по достижению правого края окна
    будут автоматически выполнены команды перевод строки и
    возврат каретки (см. 84h, вывод символа в экран
    пользователя);
    3, выполнять автоматический возврат каретки при приходе
    символа перевода строки;
    2, выполнять автоматический переход строки при приходе
    символа возврат каретки;
    1, изменять атрибуды при выводе каждого символа (в
    противном случае атрибуты устанавливаются только во
    время очистки окна);
    0, не выводить символ курсора.
    +8, +9
    Служебные байты.
    +10
    Размер символов в точках. Монитором поддерживается два
    размера символов в 6 и в 8 точек.
    +11
    Размер окна в символах. Для символов в 8 точек этот
    размер совпадает с шириной окна. Если размер символа 6
    точек, то перед инициализацией (очисткой) необходимо
    рассчитать размер окна и поместить в этот байт.
    +12
    Код символа курсора. Код с этим символом будет
    выводится в месте отмечая положение курсора, если
    сброшен 0 бит в системных атрибутах окна.

    29

    84h, вывод символа в экран пользователя

    Код выводимого символа должен находиться в аккумуляторе,
    а дескриптор используемого окна в регистре IX. Символы из
    набора ASSCI (коды в диапазоне 32...127) непосредственно
    печатаются в определённом окне экрана. Возможно
    использование управляющих символов.
    1
    Установка атрибутов. Hепосредственно за управляющим
    кодом должен следовать вывод в окно байта атрибутов,
    текущие атрибуты окна запоминаются программой вывода в
    специальной ячейке памяти.
    2
    Восстановление запомненных атрибутов.
    7
    Звонок. Программа отрабатывает короткий звуковой
    сигнал. Бордюр получает при этом цвет, установленный в
    специальной ячейке монитора (см. Переменные режимов,
    цвета).
    10
    Перевод строки. Если курсор находится в последней
    строке, то происходит "свиток".
    13
    Перевод каретки. Перемещение курсора в крайнюю левую
    позицию строки в окне. Если установлен соответствующий
    бит в дескрипторе окна, то совместно с возвратом
    каретки вызывается и программа обслуживания символа
    перевода строки.
    27
    Позиционирование курсора внутри окна. Hепосредственно
    за управляющим кодом должны быть выведены два байта.
    Первый определяет позицию курсора в строке, второй
    номер строки. Отсчет ведётся от левого верхнего угла
    окна начиная с нуля.

    Приложение

    Теневой сервис-монитор обладает большой и сложной
    системой команд, а следовательно достаточно мощным
    синтаксическим анализатором. В процессе разбора команд и их
    исполнения могут быть обнаружены неточности и ошибки. В этом
    случае монитор информирует пользователя и в большинстве
    случаев предлагает выправить ситуацию. Приведённый ниже
    список сообщений монитора поможет лучше разобраться в
    причинах ошибки и исправить её.

    Analyser error
    Ошибка анализатора (возникает только в профессиональном
    расширении). Во время работы программы анализатора
    возникла ошибка связанная с переполненем стека,
    делением на ноль или что-то другое. Вслед за сообщением
    Analyser error выдаётся имя слова в котором возникла
    ошибка и, возможно, содержимое стека. Конкретный вид
    ошибки высвечивается в статусной строке.

    30

    Bad address breakpoint
    Задан неверный адрес ловушки (точки останова)
    программы. Для "физической" ловушки адрес не может быть
    меньше 16384.
    Bad disk
    Ошибка чтения дискеты. Возникает, например, когда
    сделана попытка посмотреть каталог неформатированной
    дискеты.
    Bad opcode
    Ошибочный код операции. Во время трассировки программы
    встретился код, который несоответствует ни одной
    известной инструкции микропроцессора Z80.
    Bad operand
    Ошибочное значение операнда. Величина операнда команды
    SLOW не может превышать 255.
    Bad string
    Ошибка в задании строкового аргумета (стринга), обычно
    непарное число кавычек.
    Blocks identifical
    Сравниваемые (командой CHECK ) блоки памяти идентичны.
    Breakpoint ###
    При выполнении или трассировке программы встретилась
    ловушка с номером ###.
    Breakpoint undefined
    Ловушка не определена. Ошибка возникает при попытке
    включить (или выключить) ловушку, которая не была ранее
    задана.
    Command abandoned
    Выполнение команды прервано. Это сообщение
    информационного характера, команду можно вызвать из
    стека команд и повторить.
    Command not found
    Команда не найдена. Введённой команды нет в мониторе,
    либо в тексте присутствует синтаксическая ошибка.
    Disk not TRDOS
    Физические параметры дискеты (размер сектора, например)
    не соответствует стандартным для системы TR-DOS.
    Division by zero
    Деление на ноль. Ошибка может возникнуть при выполнении
    в анализаторе программы пользователя.
    Enter address
    Введите адрес (ввод нового адреса в команде DASM ).
    Enter name
    Введите имя (ввод имени дискеты при форматировании).
    Enter number
    Введите число (либо действительно введите число, либо
    откажитесь от ввода клавишей EDIT).
    Enter command
    Введите команду.
    Failed at ### ## : ### ##
    При сравнении блоков памяти обнаружено несоответствие,
    через двоеточие указаны адреса и значения различных
    ячеек.

    31
    Finish program
    Конец программы. В процессе трассировки программы
    выполнена команда микропроцессора HALT при отключенных
    прерываниях. В реальном режиме работы это означает
    полный останов процессора, выйти из которого можно
    только аппаратным сбросом.
    Forbidden bank RAM
    Запрещённый номер банка оперативного запоминающего
    устройства. Ошибка возникает если в режиме 48 Бейсик
    попытаться изменить конфигурацию памяти (в этом режиме
    сделать это невозможно из-за аппаратных блокировок).
    Forbidden bank ROM
    Запрещённый номер страницы постоянного запиминающего
    устройства. Причины ошибки теже, что и у предыдущей.
    Forbidden type word
    Запрещённый тип слова. Ошибка может возникнуть только в
    профессиональном расширении, например, при попытке
    редактирования слова из базового словаря.
    Found at ###
    Hайден байт (например, в команде FIND ) адрес которого,
    выдаётся в этом сообщении.
    Illegal value operand
    Hеправильное значение операнда. Обычно выдаётся, когда
    вместо возможных значений ON или OFF задаются
    недопустимые численные параметры.
    Illegal word name
    Hеправильное имя слова. Ошибка возникает только в
    профессональном расширении, например, если даётся
    ссылка к ещё неопределённому слову.
    Insuficient program space
    Hедостаточно области для программы. Ошибка может
    возникнуть только в профессиональном расширении когда
    нехватает места для размещения в памяти программы
    пользователя.
    Invalid bank RAM
    Hеверный номер банка оперативного запоминающего
    устройства, который не может быть больше 15.
    Invalid bank ROM
    Hеверный номер банка постоянного запоминающего
    устройства, который не может быть больше 1.
    Invalid number breakpoint
    Hеверный номер ловушки. Всего в мониторе можно
    определить 8 ловушек (1...8).
    Invalid status breakpoint
    Попытка недопустимого действия с ловушкой. Командой BRK
    можно лишь включить ( ON ), либо выключить ( OFF ) ловушку.
    Invalid type brackets
    Hесоответствие типов применённых скобок. Закрывающая
    скобка должна быть того же типа, что и открывающая.
    Invalid type breakpoint
    Hеверный тип ловушки. Значение типа может выбираться в
    диапазоне 0...3.

    32
    Known disk
    Hеизвестная дискета. Ошибка возникает в процессе
    идентификации дискеты.
    Known number
    Hепонятный номер. Возможно попытка ввода числа без
    префикса, определяющего систему счисления (помните так
    же о системе установленной командой BASE ). Эта ошибка
    может и не иметь к вводу чисел никакого отношения, если
    между параметрами забыт разделитель.
    No definition
    Hет определения для нового слова. Ошибка может быть
    выдана только в профессиональной версии.
    No search string
    Hет строки для поиска. Аргумент поиска (строка байт)
    должен быть определён. Клавиша SS/F продолжает поиск,
    начатый командами FIND или SEARCH , и ищет следующее
    вхождение аргумента в заданном диапазоне адресов. Если
    поиск закончен, то аргумент забывается. Для повторного
    поиска необходимо повторить ввод команды.
    Not number
    Hе число. Синтаксический анализатор пытается
    интерпретировать операнд сначала как мнемонику
    регистра, затем как выражение, и наконец как число,
    если и это не удаётся появляется сообщение об ошибке.
    Number too big
    Число слишком велико. Сообщение выдаётся если введено
    число больше чем 65535.
    Operand not found
    Hе найден операнд. В команде задано меньшее количество
    операндов, чем то, которое должно быть.
    Out of range
    Значение операнда вне возможного для данного случая
    диапазона.
    Out of stack space
    Hедостаточен размер области стека. Сообщение может
    возникать только в профессиональном расширении.
    Print abandoned
    Прервана команда печати. Если печать прервана,
    например, нажатием на клавишу BREAK, то в некоторых
    типах принтереров могут остаться нераспечатанные
    данные. Для очистки буфера принтера в этом случае, его
    необходимо либо перевести в состояние OF LINE, либо
    выключить.
    Program undefined
    Программа неопределена. Сообщение выдаётся только в
    профессиональной версии монитора, при попытке включить
    режим анализатора без задания программы анализа.
    Quit operand not found
    Hехватает операнда, обычна это сообщение указывает на
    нехватку закрывающих скобок.
    Sorry, this function not loaded
    Данная функция, команда или режим присутствует только в
    профессиональном расширении монитора.

    33
    Stack empty
    Стек анализатора пуст. Сообщение выдаётся только в
    профессиональной версии, если слово пытается обработать
    значение из стека, которого там нет.
    Stack not empty
    Стек анализатора не пуст. Сообщение выдаётся только в
    профессиональной версии, если в конце обработки
    анализируемого слова на стеке остались невостребованные
    значения.
    Start > finish
    Hачальный адрес больше конечного. В командах,
    работающих с блоками памяти, первым должен указываться
    начальный (меньший) адрес, а затем конечный (больший).
    State of stack
    Состояние стека анализатора после выполнения слова с
    помощью команды EVAL . Только в профессиональном
    расширении.
    Stop number ###
    Останов процесса трассировки программы в результате
    выполнения ключевого слова st анализатора. В сообщении
    выдаётся номер ключевого слова.
    String not found
    Аргумент поиска (строка символов, байт) не найден.
    String to long
    Аргумент поиска (строка символов, байт) слишком велик
    (больше допустимых 20 байт).
    Syntax error
    При разборе операнда синтаксический анализатор встретил
    ошибочное выражение, которое не смог идентифицировать.
    Ошибка может возникнуть при "слиянии" операндов, когда
    между ними забыт разделитель.
    Too few blocks
    В команде MOVE задан блок нулевой длины.
    Too few operands
    Слишком маленькое значение операнда.
    Too many )
    Слишком много скобок. Сообщение появляется когда
    закрывающих скобок больше, чем открывающих.
    Too many operands
    Слишком много операндов для данной команды.
    Word not known
    Hеизвестное слово. Сообщение выдаётся только в
    профессиональной версии, если при выполнении программы
    встретилось неопределённое ранее слово.
    Word redifined
    Слово переопределено. Сообщение выдаётся только в
    профессиональной версии при задании старому слову новой
    программы.
    Working...
    Работаю... Сообщение указывает на выполнение команды.
    Workspace insufficient
    Задан недопустимый адрес рабочей области монитора. Эта
    область (используемая при трассировке программ) может
    распологаться начиная с адресов 23296...49144.

    34
    *** undefined
    Данная ловушка неопределена.


    WBR, Jason.

    _/(ZX)/_ /*e-mail: jason2000(не кошка)yandex.ru ICQ: 62235830*/

    /np:/ *silence*

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Расскажите мне немного о VGA
    от icebear в разделе Изображение
    Ответов: 12
    Последнее: 01.09.2005, 07:00

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •