Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ZX Spectrum для пользователей и программистов.doc
Скачиваний:
56
Добавлен:
28.09.2019
Размер:
1.92 Mб
Скачать

____________________________Порт 254 (#fe, %11111110)

ZX Spectrum управляет магнитофоном, клавиатурой, цветом бордюра и динамиком через один-единственный порт с адресом 254.

При записи байта в порт:

биты DO...D2 определяют цвет бордюра:

000 (0) — черный 100 (4) — зеленый

001 (1) —синий 101 (5) — голубой

010 (2) — красный 110 (6) — желтый

011 (3) — фиолетовый 111 (7) — белый;

бит D3 управляет выходом на магнитофон. Манипулируя этим битом, программы обслуживания магнитофона формируют сигнал записи;

бит D4 управляет звуковым каналом. Например, для того чтобы получить звук частотой 1 кГц, необходимо устанавливать и сбрасывать этот бит 1000 раз в секунду;

биты D5...D7 не используются.

При чтении байта из порта:

биты DO...D4 обслуживают клавиатуру.

Бит адреса

Сброшенный бит

Бит адреса

D0

D1

D2

D3

D4

D4

D3

D2

D1

D0

11

п

#F7FE

A11

1

2

3

4

5

6

7

8

9

0

А12

#EFFE

п

12

10

о

#FBFE

A10

Q

W

E

R

Т

Y

U

I

О

Р

А13

#DFFE

о

13

9

Р

#FDFE

A9

A

S

D

F

G

H

J

К

L

EN

А14

#BFFE

Р

14

8

т

#FEFE

A8

CS

Z

X

С

V

В

N

М

SS

SP

А15

#7FFE

т

15

Стандартная клавиатура ZX Spectrum состоит из 40 клавиш, которые разбиты на восемь рядов по пять кнопок в каждом (рис. 12). Для того, чтобы узнать, какая из клавиш ряда нажата, нужно прочесть байт из порта, полный 16-разрядный адрес которого задается так: младший байт адреса равен 254 (#FE), а в старшем байте сброшен в ноль один из разрядов, соответствующий выбран-

Рис. 12. Организация клавиатуры ZX Spectrum.

ному ряду. Биты DO...D4 считанного байта указывают, какая из кнопок в ряду нажата — соответствующий бит будет сброшен. Например, чтобы узнать, нажата ли клавиша Enter, нужно проверить состояние бита DO в байте, считанном из порта #BFFE.

бит D6 отображает состояние магнитофонного входа. Для получения информации с магнитной ленты программа должна постоянно опрашивать этот бит.

Номер джойстика

1

2

Адрес порта

#EFFE

#F7FE

Функция

бит

клавиша

бит

клавиша

влево (left)

D4

6

D0

1

вправо (right)

D3

7

D1

2

вниз (down)

D2

8

D2

3

вверх (up)

D1

9

D3

4

стрельба (fire)

DO

0

D4

5

Некоторые внешние устройства могут «эмулировать» порт 254. Пример такого устройства — Interface 2. Помимо других своих функций* Interface 2 обслуживает популярный тип джойстика «для двоих» — Sinclair Joystick. Этот , джойстик «запараллелен» с цифровыми клавишами клавиатуры, так что если у Вас нет Interface 2, Вы все-таки можете использовать Sinclair-джойстик, либо аппаратно подключив его к соответствующим клавишам, либо имитировать его, работая этими клавишами как джойстиком. В табл. 1 показано соответствие между цифровыми клавишами и функциями Sinclair-джойстика.

Таблица 1. Назначение клавиш Sinclair-джойстика

Обращение к описанным ниже портам имеет смысл только при подключении к ZX Spectrum соответствующего интерфейса внешнего устройства, например, принтера или джойстика.

____________________________Порт 251 (#FB, %11111011)

Порт обслуживает стандартный для ZX Spectrum принтер—ZX Printer, драйвер которого «зашит» в ПЗУ компьютера. Некоторые интерфейсы принтеров в тот момент, когда на адресной шине появляется адрес 251, «перехватывают» управление. Например, интерфейс ZX Lprint III с помощью драйверов из его собственного ПЗУ может через порт 251 управлять различными типами принтеров.

____________________________________________________________

*) Interface 2 позволяет также использовать картриджи с ПЗУ, в которое при изготовлении записываются готовые программы.

Порт 247 (#F7, %11110111)

Порт 239 (#EF, %11101111)

____________________________Порт 231 (#Е7, %11100111)

Порты устройства Interface 1, которое позволяет: соединять компьютеры в локальную вычислительную сеть; использовать стандартный интер­фейс RS—232C; подключать до восьми микродрайвов (накопителей на «бесконечной» магнитной ленте), работать с которыми несколько удобнее, чем с магнитофоном. Однако в Союзе Interface 1 по разным причинам не получил распространения.

____________________________Порт 31 (#1F, %00011111)

установленный бит

состояние джойстика

D0

влево (left)

D1

вправо (right)

D2

вверх (up)

D3

вниз (down)

D4

стрельба (fire)

Порт 31 служит для связи с самым распространенным типом джойстика — Kempston Joystick. Старшие три бита (D5...D7) этого порта всегда сброшены в ноль — именно по этому условию некоторые программы определяют, что kempston-джойстик подключен. Младшие биты (DO...D4) индицируют состояние джойстика (см. табл. 2). Таблица 2. Биты состояния

kempston-джойстика.

Несколько битов может быть установлено одновременно. Например, если установлены биты DO, D3 и D4, то это означает, что джойстик находится в положении «влево-вниз» и нажата «стрельба».

При нейтральном положении kempston-джойстика из порта 31 должен считываться ноль.

___________________________________________________________

СИСТЕМА ПРЕРЫВАНИЙ

Прерывания являются необходимым средством для программирования параллельных процессов. С их помощью, например, в ZX Spectrum одновременно с выполнением программы на Бейсике осуществляется сканирование клавиатуры и отсчет времени системным таймером.

В процессоре Z80 имеется два аппаратных входа инициализации прерываний: INT — для маскируемых прерываний и NMI — для немаскируемых. Маскируемые прерывания получили свое название благодаря возможности программно запрещать или разрешать реакцию на сигнал прерывания, тогда как для немаскируемых прерываний это невозможно.

При поступлении сигнала прерывания микропроцессор завершает выполнение текущей команды, помещает в стек адрес следующей и приступает к выполнению специальной программы, обслуживающей данное прерывание (за исключением режима 0 маскируемых прерываний). После завершения обработки прерывания процессор извлекает из стека адрес следующей команды и возвращается к выполнению прерванной программы.

Необходимым условием правильного функционирования программ обслуживания прерываний является их сбалансированная работа со стеком: к моменту возврата из прерывания стек должен быть в том же состоянии, в котором он находился к моменту прихода прерывания. Другим условием является сохранение всех регистров, задействованных в программе обслуживания прерываний, и восстановление их значений при возврате из прерывания.