Ресурсы УКНЦ/Глава 2
Глава 2. Общие принципы экранного вывода в УКНЦ
§ 4. Программные прерывания EMT И TRAP
4.0 Команды-прерывания
Среди множества команд микропроцессора 1801 есть несколько команд, действие которых состоит в следующем: вызывается прерывание по фиксированному адресу (адрес вектора прерываний — а.в.п.). Вот эти команды:
Таблица 4.0. Команды-прерывания
Команда | Код | А. В. П. |
---|---|---|
BPT | 000003 | 14 |
IOT | 000004 | 20 |
EMT | 104xYZ | 30 |
TRAP | 104XYZ | 34 |
Пример 11. Упражнение с командами-прерываниями IOT и EMT.
Команда IOT (Input-Output Trap) вызывает прерывание с адресом 20. В Системе этот а.в.п. никак не используется. Восполним же этот пробел. Работаем в ОЗУ ПП:
20: 000240 240: 104044 EMT 44 163573 "* ЗАГРУЗКА ИЗ СЕТИ *" 000002 RTIТеперь в любую свободную ячейку запишите число 4 (код IOT) и запустите с этого адреса. Ну, а если Вам наскучит играться с этой надписью, в приложении найдите другую, и адрес ее запишите после кода EMT 44. А еще лучше — читайте дальше.
Первые две команды (BPT и IOT) нам неинтересны, хотя при желании и их можно пустить в дело. Две остальные — EMT и TRAP — представляют некоторый интерес.
Старший байт этих команд содержит код команды (по нему процессор опознает их), а младший может быть любым. Такая организация команд позволяет нести в себе полезную информацию. Чтобы реализовать эту информацию, надо к каждому прерыванию подвесить свои программы обработки прерываний, которые называются диспетчерами.
Это название связано с тем, что в зависимости от кода в младшем байте, эти программы передают управление разным подпрограммам, выполняющим каждая свое действие. Это позволяет использовать команды EMT и TRAP как однословные команды вызова подпрограмм.
Рассмотрим реализацию обоих диспетчеров в Системе.
4.1 EMT-диспетчер
По адресу 30 записан вектор прерывания EMT-дипетчера:
30: 174270 32: 0
Первое слово — адрес диспетчера. Второе — слово, которое загружается в слово состояния процессора (PS) при входе в программу обработки прерываний. 0 означает, что разрешены все прерывания во время работы EMT-диспетчера.
Ниже приведена блок-схема EMT-диспетчера с пояснениями:
TODO: Схема 4.0
Из схемы видно, что диспетчер вызывает подпрограмму, адрес которой определяется по следующей формуле:
- Адр = (160000 + XXX), где XXX — младший байт EMT.
Иными словами, с адреса 160000 хранится таблица, в которой содержатся адреса искомых подпрограмм. Разумеется, младший байт EMT должен быть четным, во избежание недоразумений в процессоре.
В адресах ПЗУ с 160000 по 160012 хранятся некоторые вектора прерываний, поэтому используются EMT с младшими байтами, начиная с 14. Полезных подпрограмм, вызываемых EMT-диспетчером, всего 10. Перечень их приведен в приложении. Остальные подпрограммы состоят из одной команды — RETURN.
4.2 TRAP-диспетчер
Вектор TRAP-диспетчера записан по адресу 34:
34: 174344 36: 200
Второе слово говорит о том, что во время работы TRAP-диспетчера будут запрещены прерывания от сетевого и программируемого таймеров, от клавиатуры, от команды RESET в ЦП, от прерываний каналов.
Блок-схема TRAP-диспетчера выглядит так:
TODO: Схема 4.1
Адрес подпрограммы вычисляется так:
- Адр = (160160 + XXX), где XXX — младший байт TRAP.
То есть адреса подпрограмм хранятся с адреса 160160. Этих подпрограмм всего 3, то есть имеют смысл лишь три команды TRAP:
- TRAP 0,
- TRAP 2,
- TRAP 4.
Отличие их от EMT-подпрограмм в том, заканчиваться они должны на RTI, а не на RETURN.
Резюме к § 4
- Две команды — EMT и TRAP — вызывают прерывания с а.в.п. 30 34 соответственно.
- Младший байт этих команд может быть произвольным.
- В Системе эти байты анализируются в программах обработки прерываний от этих команд — в диспетчерах.
- Младший байт в EMT и TRAP выполняет роль номера подпрограммы, вызываемой диспетчером. Этот «номер» должен быть четным.
- Адреса подпрограмм, вызываемых через EMT, хранятся с адреса 160014 по 160156. Из них только десять выполняют полезное действие.
- Адреса TRAP-подпрограмм хранятся с адреса 160160. Их всего 3 (TRAP 0,2,4).
- EMT-подпрограммы заканчиваются на RETURN (код 207), а TRAP-подпрограммы — на RTI (код 2).
§ 5. Общая схема вывода на экран
TODO