Глава 23
Ввод и вывод
Краткое содержание: OUT, IN.
Компьютер может считывать некоторую информацию и записывать ее
в свою оперативную память по командам РЕЕК и РОКЕ. Вся память
компьютера, и ПЗУ и ОЗУ, представляются совокупностью адресов от
0 до 65536, каждый нз которых адресует один байт.
Таким же образом можно адресовать и еще 65536 адресов, называ-
емых портами ввода-вывода. Они используются процессором для связи
с клавиатурой и принтером и могут управляться операторами бейсика
IN и OUT.
IN аналогичен оператору реек:
IN ADDRESS- он использует один аргумент-адрес порта и позволя-
ет считать одни байт нз указанного* порта.
OUT подобен оператору РОКЕ:
OUT ADDRESS, VALUE
И записывает указанные данные в заданный порт вывода. ZX
SPECTRUM оперирует 16-тиразрядными адресами, разряды которых мы
будем обозначать буквой А:
- А 1 5 , А 1 4 , А 1 3 , А 1 2............ А! , АО .
Биты адреса аО, al, а2, аЗ, а4 очень важны. Как правило они
равны 1. Но если хотя бы один из них в иулс, это предписывает
компьютеру некоторые действия. Не более чем один из этих S битов
может быть в 0.
Биты аб и а7 игнорируются, так что если вы знакомы с электро-
никой, то можете использовать их по своему усмотрению.
Биты а8 и а9 используются иногда для получения дополнительной
информации. Информационный байт мы будем обозначать буквой D:
D7, D6 , D5..... DO
Теперь представим список адресов портов. Имеется целый ряд
входных адресов для чтения с клавиатуры, а также входного разъема
'EAR'. Сама клавиатура разбита на 8 полурядов по 5 клавиш в полу-
ряду :
IN 65278 считывает ряд от CAPS SHIFT до V,
IN 65022 считывает ряд от А до G,
IN 64S10 считывает ряд от Q до т,
IN 63486 считывает ряд от 1 до 5,
IN 61438 считывает ряд от 0 до 6,
IN 57342 считывает ряд от Р до 7,
IN 49150 считывает ряд от ENTER до Н,
IN 32766 считывает ряд от SPASE до В.
эти адреса могут быть вычислены из выражения:
254+256* (255-2**N) при N, пробегающем от 0 до 7.
В байте, считанном, с клавиатуры, биты от DO до D4 служат для
обозначения 5 клавиш в данном полуряду. DO-для крайней клавиши, а
D4-для ближней К центру. Состояние одного из этих битов 0 указы*
вает, что соответствующая ему клавиша нажата. D6 принимает свое
значение при чтении с разъема 'EAR*.
Входной порт 254 обеспечивает громкоговоритель (D4) и разъем
'MIC' (D3), а также установку цвета (D2, Dl, DO).
Порт 251 обеспечивает связь с принтером, как чтение, так и за-
пись. Чтение-для проверки готовности принтера к работе. Порты
254,247,239 используются для связи с дополнительными устройства-
ми, описанными в главе 22.
запустите следующую программу:
10 FOR N*0 ТО 7: REM HELF«ROW NUMBER (НОМЕР ПОЛУРЯДА)
20 LET А=254+256* (255-2**N)
30 PRINT AT 0,0; IN A: GO TO 30
И понажимайте по одной клавише в каждом полуряду. После нажа-
тия очередной клавиши введите BREAK, а затем NEXT N.
Ниже, на рисунке показано распределение контактов разъема:
Описание синуалрр микропроцессора Z80. ZSOa
AO - A IS- (адресная шина). Выходы с тремя устойчивыми состоя-
ниями. Активный уровень снгналов-высокий. Адресует ОЗУ или УВВ.
(до 64к для ОЗУ)
DO - D7- (шина данных). Входы-выходы с тремя устойчивыми
состояниями. Активный уровень-высокий.
Не М - (машинный цикл). Выход. Активный сигнал-низкий. Указы-
вает, что в текущем цикле осуществляется выборка коп.
Не MREQ- (запрос памяти). Выход с тремя устойчивыми состояния-
ми. Активный сигнал-низкий. Сигнал указывает, что на адресной ши-
не установлен адрес для операции чтения или записи в память.
Не I ORG- (запрос ввода-вывода). Выход с тремя устойчивыми
состояниями. Активный уровень енгнала-низкий. Сигнал указывает,
что младший байт шины адреса содержит адрес УВВ. Кроме того, этот
сигнал генерируется после выдачи подтверждения прерывания, тем
самым указывая, что вектор прерывания может бЫть помещен на шину
данных.
Не RD- (чтение из памяти). Выход с тремя устойчивыми состояни-
ями. Активный уровень сигнала-низкий. Сигнал указывает, что ЦП
готов к чтению данных из памяти или из УВВ. Адресованное УВВ или
память используют этот сигнал для стробирования при подаче данных
на шины данных ЦП.
Не WR- (запись в память). Выход с тремя устойчивыми состояния-
ми. Активный уровень сигнала-низкий. Сигнал указывает, что на ши-
не данных содержатся данные, предназначенные для записи в память
или вывода на УВВ.
Не FRSH- (восстановление). Выход, активный уровень-низкий.
Сигнал указывает, что младшие 7 разрядов шины адреса содержат ад-
рес восстановления для ОЗУ и текущий сигнал не MReQ должен
использоваться для восстановления динамической памяти.
Не HALT- (ост). Выход. Активный уровень-низкий. Сигнал указы-
вает, что ЦП выполнил команду HaLT и ожидает появления либо
маскируемого, либо немаскируемого прерывания, после которого он
продолжит работу. Перед выполнением HALT ЦП заносит в ОЗУ инфор-
мацию, которая нужна для восстановления.
Не WAIT- (ожидание). Вход. Активный уровень-низкий. Сигнал
указывает микропроцессору, что адресуемые память или устройство
не готовы к передаче данных. ЦП ждет, пока активен этот сигнал.
Не I NT- (запрос на маскируемое прерывание). Вход. Активный
уровень-низкий. Запрос будет воспринят ЦП в конце выполнения те-
кущей команды, если триггер разрешения прерывания IFF, управляе-
мый внутренними программными средствами, установлен в определен-
ное состояние.
Не NMI- (запрос на немаскируемое прерывание). Вход. Активный
уровень-низкнй. Это прерывание имеет более высокий приоритет, чем
INT. Распознается в конце текущей команды. Сигнал автоматически
переводит ЦП к выполнению программы с адреса 0066 ( HEX).
Не RESET- (сброс). Вход. Активный уровень-низкий. При поступ-
лении сигнала выполняются следующие действия:
а) сброс триггера разрешения прерывания IFF.
б) очистка счетчика команд и регистров I и R.
в) шины адресная н данных в состоянии выс. сопротивления.
г) для всех управляющих выходных сигналов устанавливается неак-
тивный уровень.
He BUSRQ- (запрос шин). Вход. Активный уровенъ-ннзкий. Сигнал
■меет более высокий приоритет, чем NMI и всегда распознается в
конце текущего машинного цикла. Он используется для организации
■рямого доступа к памяти (ПДП) и переводит в состояние высокого
сопротивления все шииы и тристабильные выходы сигналов управле-
иня, после чего этими шинами могут управлять другие устройства.
Не 1BUSAK - (подтверждение перевода шин в сост. высокого сопро-
тив. ) выход., активный уровень-низкий. Сигнал подается на запра-
шивающее внешнее устройство.