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

______________________________________Другие регистры

Регистр вектора прерываний I используется во 2-м режиме обработки прерываний. Подробно о нем будет рассказано в разделе, посвященном прерываниям.

Регистр регенерации динамической памяти R обслуживает в основном аппаратные потребности компьютера, однако он все же может использовать­ся и для программных целей, например, при написании процедур, генерирующих случайные числа. Младшие семь разрядов этого регистра увеличиваются на единицу после выполнения очередной команды (точнее — цикла M1) микропроцессора, старший разряд аппаратно не используется.___________________

*) BCD — Binary Coded Decimal — двоично-десятичный код (англ.).

Внешние устройства

Работа программиста превратится в бессмысленные математические упражнения при отсутствии связи компьютера с внешним миром, осуществляемой через порты.

Хотя Z80 имеет 16-разрядную шину адреса, в ZX Spectrum при обращении к большинству внешних устройств значащими являются только 8 младших разрядов. Например, для изменения цвета бордюра необходимо записать соответствующее значение в порт с адресом %0000000011111110 (254)*, но если Вы запишете это же значение в порт %0000000111111110 (510), то получите тот же эффект. Разряды, не влияющие на выбор устройства, обычно обозначаются знаком x , и, таким образом, полный адрес упомянутого выше внешнего устройства записывается как xxxxxxxx11111110.

Для упрощения аппаратной части в Speccy выбор внешних устройств осуществляется сбросом в ноль одного из разрядов адреса. Порт 254, например, выбирается при А0=0, порт 239 — при А4=0 и т. д. При разработке ZX Spectrum были сделаны следующие назначения для разрядов шины адреса:

АО — клавиатура, магнитофон, динамик; 254

А1 — не используется (в ZX Spectrum 48К);253

А2 — ZX Printer; 251

A3 и А4 — Interface 1 и микродрайв. 247 и 239(231) **

__________________________________________________________________

*) Ниже для обозначения шестнадцатеричных чисел использован символ #, двоичных — символ %.

**) Здесь и далее фразы на сером фоне означают, что они добавлены в оригинальную книгу под редакцией Дегтяр Олега Прокопьевича.

Если несколько разрядов будут сброшены в ноль, окажутся выбранными одновременно несколько устройств.

Разряды А5, А6 и А7 оставлены разработчиками для специального применения, но, в принципе, могут быть использованы для подключения дополнительных внешних устройств, например, джойстика.

Разряды с А8 по А15 используются для сканирования клавиатуры (только при сброшенном АО).

Хотя в фирменном ZX Spectrum для выбора внешнего устройства и не используются все разряды младшего байта адреса, тем не менее, во избежание различных накладок, в программах рекомендуется всегда указывать точный 8-разрядный адрес порта.

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

____________________________Порт 255 (#ff, %11111111)

Внешнего устройства с таким адресом в ZX Spectrum нет, поэтому из порта 255 считывается состояние «пассивной» шины данных. Благодаря оригинальному схемотехническому решению, в ZX Spectrum шина данных используется одновременно для двух процессов: работы Z80 и вывода информации на дисплей. В момент формирования изображения из порта 255 считываются случайные значения (анализ показывает, что преимущественно считываются

атрибуты отображаемого в данный момент знакоместа), а во время, не занятое выводом — значение 255.*

Чтение из порта 255 в некоторых фирменных программах используется для синхронизации относительно вывода на экран, и поэтому они отказываются работать на многих самоделках.**

*) На самом деле, если Вы попытаетесь обратиться по другим незадействованным адресам портов, то получите аналогичный результат.

**) В ZX Spectrum +3 схема отображения выполнена более грамотно, чем в Speccy, однако это стало причиной неполной совместимости с базовой моделью. Ряд программ, например, Short Circuit, на Spectrum +3 не работают.