ГЛАВА 5
ПОРТЫ И КАНАЛЫ ВВОДА ВЫВОДА
В стандартном СПЕКТРУ Me адресная шина и шина данных вы-
ведены на разъем с обратной стороны корпуса и БЕЙСИК допускает
связь с внешним миром с помощью команд "IN" и "OUT". Используя
команды "IN А, (С)" и "OUT А, (С)" процессора Z80 вы распределяете
всю адресную шину для однозначного определения, какое из перифе-
рийных устройств будет контролироваться.
□ Порт 254 (FEh).
Используется как выводной для цвета бордюра, вывода на ленту
и для управления внутренним громкоговорителем. Им также поддер-
живается клавиатура и ввод с ленты. Короткое резюме на этот счет
дано в главе о 16К ПЗУ, и позднее в этой главе я приведу более полное
его обсуждение.
□ Порт 251 (FBh) - ZX принтер.
Используется как для ввода, так и для вывода.
□ Порт 247 (F7h).
Передает данные как для сети, так и для RS232 связей ввода/вы-
вода.
□ Порт 239 (FOh).
Контролирует МИКРОДРАЙВ иподсошшениеК8232 ввода-вы-
вода интерфейса 1.
□ Порт 231 (E7h).
Содержит данные МИКРОДРАЙВа при считывании и печати.
Последний порт является одной из причин; несовместимости не-
которых периферийных устройств с интерфейсом ^МИКРОДРАЙВа.
В справочнике СПЕКТРУМа забыли указать, что онбуд^жпользо-
ваться. Я поочередно рассмотрю детали работы наиболее полезных
портов.
□ ПОРТ 254 (FEh) 11111110 BIN
Через порт считывается клавиатура, биты 0-4. Каждая линия
разбита на две секции по пять. Для каждой секции крайняя кнопка -
бит 0, ближайшая к середине - бит 4. Каждый ;бит; активизирован до
тех пор, пока кнопка не будет нажата, в этом случае бит обнуляется.
Адресная линия используется, чШ)** определить; правая или левая
половина считывается комащсой !-Щ^;;Бит, который должен быть
обнулен для каждой линии указан ниЖб4.;
;К;сожалению 5-7 биты считываемых данных устанавливаются
непредсказуемым образом. Считывание клавиатуры было изменено
в третьей ве^йй^СПЕКТРУМа, разрешив некоторые проблемы в
программах, использующих«неочищенное» обращение к клавиату-
ре. Программа сканиройшй клавиатуры СПЕКТРУМа их игнори-
рует. Этот факт открывает возможность их использования для других
нужд, например для определения функциональных клавиш, как на
"ВВС" и других компьютерах, и при сканировании программой опро-
са-прерывания. Можно одновременно считывать более чем один ряд
клавиатуры, путем обнуления нужных битов перед считывание, но
это не позволяет сделать однозначное разделение между различными
рядами кнопок. Примечание: особое внимание необходимо при счи-
тывании более чем одной одновременно нажатой кнопки. СИНКЛЕР
не создал никакой защиты против обратной связи между рядами
кнопок. Это означает, что если одновременно нажаты "A", "S" и "W"
то линия от "Q" до "Т" будет сканирована так, как будто "Q" нажата,
даже если это не так. Это произойдет потому, что при нажатии двух
кнопок на разных адресных линиях но с одинаковым битом данных
ряды соединяются вместе и любой другой ключ, нажатый в любом
ряду, сбросит указанный бит на обоих рядах, т.к. оба других ключа
нажаты.
Бит 6 - ввод с магнитофонного разъема. Имеет тенденцию быть
сброшенным, хотя сбрасывается командой "OUT".
Обратите внимание, что любой вывод в биты 0-2 установит цвет
бордюра. Наиболее надежный способ установить все биты в
1 - вывести 248 (F8h), но это не нужно, если декодирование
делается как положено и к тому же будет временной мерой.
При выводе биты 0, 1 и 2 контролируют цвет бордюра. Бит 0
контролирует синий, 1- красный, 2 - зеленый. Все прочие
цвета могут быть получены сочетанием этих трех.
Цвет |
Номер |
Двоичный код |
Черный |
0 |
аооооооо |
Синий |
1 |
00000001 |
Красный |
2 |
00000010 |
Сиреневый |
3 |
00000011 |
Зеленый |
4 |
00000100 |
Бирюзовый |
5 |
00000101 |
Желтый |
6 |
00000110 |
Белый |
7 |
00000111 |
Бит 3 контролирует звуковой разъем. Помните, что для того,
чтобы получить нечто большее, чем простое щелканье, его
необходимо часто включать и выключать, чтобы получить
тон. "MIC", напечатанное на стенке СПЕКТРУМа, не-
сколько дезориентирует, так как он дает выход на магнито-
фон и втыкать туда микрофон будет пустой тратой времени.
Бит 4 контролирует динамик внутри СПЕКТРУМа и к нему при-
менимы те же требования по использованию, что были ука-
заны выше. Программа, демонстрирующая возможности
встроенного громкоговорителя и:входа "EAR" для считыва-
ния речи или музыки, ее размзадшияв памяти и вывод
через динамик, приведены в конце Згой!главы.
"iiiliiiiiiiiin
□ ПОРТ 251 (FBh) 11111011 BIN
Бит 0 вход индикация занятости принтера; |:0 - принтер занят.
Бит 1 выход Если активизирован - движение^т^мозитея:^ .сброшен
(0) - ускоряется
Бит 2 выход сброшен (0) - начало движения.
Бит 6 вход активизирован (1) - прйнтер не пбйС^динен
Бит 7 выход активизирован - производится печатьг(побитно)
□ ПОРТ 247 (F7h) 11110111 BIN
Бит 0 выход очередные данные для сети и RS232 вход очередные
данные из сети
бит 7 вход очередные данные из RS232::;ii;iiiii;
-гн
□ ПОРТ 239 ШШ 11101111 BIN
Возможна проверка работай установки защиты записи набора дан-
ных МИКРОДРАЙВа путем:Щ;АШЗ9) AND 1; и флаг 0 будет уста-
новлен, если набор защищен.
Наличие драйва мож5ет быть проверено считыванием бита 2 порта
239 после выбора проверяемого драйва, он будет сброшен,
если драйв: ecTb;ii;iiii; ; :;
В битах 3 и 4 порта 239 размещены линии RS232 DTR и CTS
^соответственно. Нежелательно использовать порты 247,
::::;;:23Й:и 231 не из 8К ПЗУ, исключая проверку наличия под-
чинённых ; устройств.
Остальные порШ; достудны для использования другими подчи-
ненными устройствами ;:;Ишните, что если подсоединяется принтер
или другой интерфейс, то шш используют порт или порты для пере-
дачи информации. Два иа:наиболее распространенных интерфейсов
параллельных принтеров - "MOREX" (он также имеет двунаправлен-
ный RS232 встроенный интерфейс (могу его порекомендовать) и
"KEMPSTON", которые используют следующие порты:
□ ПОРТ 251 (FBh) 11111011 BIN
Биты 0-7 выход данные "CENTRONICS OUTPUT"
Бит 0 вход занятость "CENTRONICS"
Бит 1 вход RS232 DTR
Бит 7 вход RS232 данные RX
□ ПОРТ 127 (7Fh) 01111111 BIN
Бит 0 выход CENTRONICS стробирование
Бит 1 выход RS232 данные ТХ
Бит 2 выход RS232 CTS
□ ПОРТЫ "KEMPSTON" 58047 (E2Fh), 57535 (EOBFh)
и 58303 (E3BFh)
Интерфейс "KEMPSTON" может быть использован только ко-
мандами "IN (С)" и " OUT (С)" т.к. он просматривает все 16 бит
адресной шины. Программы, позволяющие переслать один символ в
каждый из этих интерфейсов вывода "CENTRONICS", приведены в
приложении «Полезные программы».
□ ПОРТ 58047 (E28BFh)
Бит 0 вход линия занятости
□ ПОРТ 57535 (EOBFh)
Биты 0-7 выходы данных "CENTRONICS"
П ПОРТ 58303 выход "CENTRONICS" стробирование.
Стандартные потоки
fw
□ Поток К-3/253 (FDh) - аналог потоков О и1 Ш
□ Поток S-2/254 - аналог потока 2
□ Поток R-1/255.
Используется для записи в рабочую область памяти и разместит
текущий код из регистра "А" в адрес*: содержащийся . в системной
переменой "К CUR 23643/4 (5С5В/СЙ)" и даст пфйфкщение адресу
"К CUR". Он не так полезен, как это: кажется на первйй взгляд, т.к.
Сначала вызывается подпрограмма организации окна, и при этом
вверх перемещается вся память, налодящажш выше "К CUR", по-
скольку "RAMTOP" делает поток непригодным!дда записи чего-либо
выше "RAMTOP" или в другое место без перемещения вверх. Под-
программа стартует в 3969 (F81h^;;;Поток может быть использован
только для вывода. Попытки иСйб^Зфвайия его для ввода приведут к
ошибке. Потоки 0 и 1К обычно соединены:с; нижним экраном и
клавиатурой. По их каналам также возможен1 ввод.
□ Поток S2 только для вывода обычно на экран
П Поток РЗ только для ОДЕюдау обычно на принтер.
Всего доступно 19 потоков. Каждый должен быть связан с кана-
лом; каждый поток имеет два байта в области потоков системных
переменных, начиная от 23569;(5С1 Oh) для потока "-3", где содер-
жится смещение присоединенного
канала относительно базы области
каналов:. Помните, что первый поток "-3", поэтому для определения
адреса: канала потока "О"; необходимо просмотреть
23574/;5;£5.C16/7h). Канал состоит из не менее чем пяти байтов,
первые два содержат адрес процедуры вывода, следующие два - адрес
программы:BBOMj:последний - букву кода канала (S, К, Р и т.д. См.
выше). Каналы ^соединенные^с интерфейсом МИКРОДРАЙВа, не-
сколько длиннее, чб^:5:байгг:;:Их формат приводится в книге, прила-
гаемой к интерфейсу. ::::::ii
Программа записи и воспроизведения
10; эта небольшая программа позволяет записать
20; речь с магнитофона в память
30; через вход "EAR".
40; записанная речь затем может быть воспроизведена
50; вновь через динамик СПЕКТРУМа из памяти.
60; программа проста, но эффективна
70;
80;
90 LIMIT EQU 50000 ; низ доступной памяти.
100 TIME EQU 50 ; задержка между битами.
110 FIRST EQU 64998 ; первый используемый
120 ORG 65000 ; байт памяти.
130 START LD HL,FIRST ; подсчитаем количество
140 LD DE,LIMIT ; доступной памяти.
150 PUSH HL
160 AND A
170 SBC HL,DE
180 PUSH HL
190 POP ВС
200 POP HL
210 Dl ; отключим прерывания, гарантируя
220 LISTEN LD A,#7F ; ожидание звука.
230 IN A,(#FE)
240 BIT 6,A
250 JRZ,LISTEN
260 PUSH ВС
270 BYTEIN LD B,8 ; считаем 8 бит
280 DEC HL
290 HEAR IN A,(#FE); побитно
300 RLA
310 RLA
320 RL(HL); переведем в память, через CF
330 DJNZ PAUSE ; пауза и следующий бит
340 POP DE ; если 8 бит считано - проверяем
«
350 DEC DE ; место и изменяем счетчик.
360 LD A,D
370 OR Е
380 PUSH DE
390 JR NZ, BYTE IN ; если место есть - идем на
400 POP ВС ; считывание, иначе 410 EI ; заканчиваем
420 RET
430 PAUSE LD С,TIME
440 DELAY DEC С
450 JR NZ,DELAY
460 JR HEAR
470 SPEAK LD HL,FIRST ; как для Т18ТЁЩ1Ш;;1|;{:
480 LD DE,LIMIT
490 PUSH HL
500 AND A
510 SBC HL,DE
520 PUSH HL
530 POP ВС
540 POP HL
550 PUSH ВС
560 Dl
570 BYTEOT LD B,8 ; вывод 8 битП!ПIH:,
580 DEC HL
590 LD A,(HL); отметьте, что: выводятся всё биты
600 RRCA ; и изменится цвет бордюра
610 RRCA
620 RRCA
630 В1ТОиТ:ОУТ|#ЕЕ),А ; побитной как при вводе
. 640 RLCA
650 LD С,TIME
660 HOLD DEC С:: ,
670 J R NZ.HOLD
680 DJNZ BITOUT
690; POP ВС
70S: DEC ВС
716 lijD A,C
720 OR'i^i:i|i!hii!::.. __ _
730 PUSH
740 J R NZ,BYTEOT Hp
750 POP ВС
760 El
770 RET