Операционная система Спектрума 1993 г.

Глава 5 - порты и каналы ввода вывода.


ГЛАВА 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




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Вступление - Хочу огорчить всех тех, кто жаждал увидеть Iris Ultrademo.
Капля припоя - Disk protector v1.4 (схема).
Сетевая игра - Пошаговая Сетевая игра со спектрумовскими персонажами.
ZXNet - О точках входа в сеть ZXNet.
Идеи - Как написать многозадачную операционную систему. Какой должна быть идеальная операционная система для Speccy ?

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