Решив заняться программированием, Вы рано или поздно пойме-
те, что написать действительно серьезную программу для ZX Spectrum
на Бейсике, Паскале и прочих языках «повышенного» уровня практиче-
ски невозможно. Все удобства, предоставляемые этими языками, сво-
дятся «на нет» низким быстродействием и большим объемом написан-
ных на них программ. Только работая непосредственно с командами
процессора, Вы сможете создавать программы, не уступающие фирмен-
ным. Но для этого необходимо серьезно изучить архитектуру
ZX Spectrum, систему команд процессора Z80, уметь пользоваться сред-
ствами написания и отладки программ в кодах.
Эта и последующие главы книги, в отличие от предыдущих,
рассчитаны на более подготовленного читателя. Однако мы старались
как можно доступнее излагать материал, кратко поясняя используемые
термины и не употребляя малопонятных выражений. Надеемся, что
даже неспециалисты, пользуясь сведениями, почерпнутыми из этого
раздела книги, смогут начать программировать на ассемблере, а про-
фессионалы получат в руки подробный справочник по ZX Spectrum.
ZX Spectrum ничем существенно
не отличается от строения других
компьютеров (рис. 9). Работой всех
устройств управляет центральный
процессор (ЦП). Он связан с осталь-
ными блоками компьютера через ши-
ны адреса, данных и управления. Па-
мять разделена на две области: ПЗУ
(постоянное запоминающее устройст-
во) объемом 16К и ОЗУ (оперативное
запоминающее устройство) — 48К. В
ПЗУ «зашита» операционная система
ZX Spectrum. Блокуправления внешни-
ми устройствами обеспечивает связь
процессора с клавиатурой, телевизо-
ром, магнитофоном и т. д.
*) Речь пойдет только о компьютерах, выпущенных фирмой Sinclair Re-
search Ltd. Архитектура остальных разновидностей ZX Spectrum, вклю-
чая машины фирм Amstrad и Timex, может несколько отличаться от
базовой модели. Кроме того, следует иметь ввиду, что на конфигурацию
ZX Spectrum могут влиять подключаемые к компьютеру периферийные
устройства.
Одной из причин успеха, постигшего ZX Spectrum, было применение
в качестве ЦП микропроцессора Z80 (полное название — Z80A CPU) амери-
канской фирмы Zilog. В основе разработки этой микросхемы лежала идеология
построения одного из самых распространенных в свое время 8-разрядных
процессоров —18080 (советский аналог — КР580ВМ80А). В Z80 увеличено
число регистров, дополнена система прерываний и, самое главное, существен-
но расширена система команд (в частности, за счет добавления команд,
обрабатывающих блоки данных). Все это позволило повысить производитель-
Рис. 10. Структурная схема микропроцессора Z80.
Рис. 10. Структурная схема микропроцессора Z80.
Ность процессора при одновременном уменьшении размера программ.
Структурная схема Z80 (рис. 10) включает в себя: арифметико-логи-
ческое устройство (АЛУ), блок управления шиной данных, блок регистров, блок
управления адресной шиной, дешифратор команд и сигналов управления. Все
узды связаны внутренней шиной данных.
Для обращения процессора к памяти и внешним устройствам слу-
жит 16-разрядная шина адреса (ее разряды обозначаются от АО —- млад-
ший разряд до А15 — старший). Следовательно, процессор может непос-
редственно обратиться (в зависимости от обрабатываемой команды) либо
к 2″ =65536 ячейкам памяти, либо к такому же количеству внешних
устройств (портов).
Обмен информацией Z80 с памятью и портами осуществляется через
8-разрядную шину данных (разряда обозначаются D0. D7). Для хранения
и обработки чисел, больших 255 (28-1), используются две или более ячейки
памяти, расположенные одна за другой.
РЕГИСТРЫ 180
Регистры данных и аккумулятор
Видео:Основные накопители информации для ZX SpectrumСкачать
Микропроцессор Z80, в отличие от 18080, работает с двумя наборами
регистров — основным и альтернативным, Оба набора состоят из семи
8-разрядных регистров данных и флагового регистра. Регистры основного
набора обозначаются буквами А, В, С, D, Е, Н, L и F (флаговый). Регистры
альтернативного набора соответственно — А’, В’( С, D r , Е H r , L’ и F Для
пользователя эти наборы совершенно идентичны, и знак’ (апостроф) озна-
чает лишь то, что в данный момент регистр не является активным. С
помощью специальных команд можно переключать работу процессора с
одного набора регистров на другой. Но выяснить, какой из наборов активен
в данный момент, невозможно.
Для выполнения многих команд обрабатываемые данные должны
быть занесены в специальный регистр —
Команды, обрабатывающие 16-разрядные числа, используют пары ре-
гистров в следующих сочетаниях: ВС, DE, HL, AF и, соответственно, ВС, DE
HL AF’. При этом в регистры В, D, Н, А, В’, D’, Н А’ записывается старший
байт числа, а в С, Е, L, F, С, Е L’ и F’ — младший. Спаренные регистры можно
использовать, например, для хранения и обработки адресов ячеек памяти.
Выполнив очередную команду, процессор должен знать, откуда ему
взять следующую. За этим следит 1 б-разрядный регистр счетчика команд PC.
При последовательном выполнении программы после считывания из памяти
каждого байта команды значение PC увеличивается на единицу. Если коман-
да требует от процессора перейти не к следующей, а какой-л^бо другой
ячейке памяти (например, команда вызова подпрограммы), в PC записыва-
ется адрес этой ячейки.
Важной особенностью Z80 является возможность обращаться к ячей-
кам памяти, указывая смещение их адреса относительно содержимого 16-
разрядных индексных регистров IX и IY. Смещение может быть задано
числом в пределах —128. +127.
Читайте также: Ниссан альмера 2004 размер шин
16-разрядный регистр указателя стека SP содержит адрес вершины
стека. Как известно, стек — это специальная область памяти, предназначен-
ная для временного хранения данных. В Z80 он организован по принципу
LIFO* — помещенные в стек одно за другим несколько чисел извлекаться из
стека будут в обратной последовательности. Особенностью Z80 является то,
что стек «растет» в сторону уменьшения адресов. При каждой записи в стек
значение регистра SP уменьшается на 2, а при извлечении числа увеличи-
вается на 2. «Общение» со стеком обычно происходит посредством регист-
ровых пар. В стеке также автоматически сохраняется адрес возврата при
вызове подпрограмм.
После выполнения ряда команд в соответствии с результатом опера-
ции изменяется содержимое флагового регистра ____„_
F (рис. 11). Флагом называется отдельный бит этого Гс I z [ х ! Н I x l P/vTnT»c1
регистра. Флаг считается установленным, если в 1 I L 1 г I ™ 1 I
регистра. Флаг считается установленным, если в
соответствующем бите записана единица, и сбро- 7 6 5 4 3 2 1 0
шейным, если записан ноль. Значимыми являются рис j | Регистр флагов.
6 из 8 битов регистра F:
*) Last In First Out — первым пришел — последним вышел (англ.).
Z (zero) — флаг нуля. Устанавливается, если результат операции равен
нулю;
P/V (parity/overflow) — флаг четности/переполнения, В логических опе-
рациях устанавливается при получении четного результата, в ариф-
метических — при переполнении (изменении знака) операнда;
CY (carry) — флаг переноса. Устанавливается, если в итоге выполнения
арифметических операций произошел перенос либо заем старшего
бита;
N (negative) — флаг отрицательного результата. Устанавливается при
получении отрицательного результата арифметической операции;
Видео:Лучшая ZX графика 2024 | ZX SpectrumСкачать
Н (half-carry) — флаг вспомогательного переноса. Устанавливается, если про-
изошел перенос (заем) в 4-й бит аккумулятора. Используется при прове-
дении двоично-десятичной коррекции при работе с BCD-арифметикой*;
S (sign) — флаг вычитания. Устанавливается, если предыдущей коман-
дой было вычитание. В BCD-арифметике помогает определить тип
предыдущей операции.
Регистр вектора прерываний I используется во 2-м режиме обработки
прерываний. Подробно о нем будет рассказано в разделе, посвященном
прерываниям.
Регистр регенерации динамической памяти R обслуживает в основном
аппаратные потребности компьютера, однако он все же может использовать-
ся и для программных целей, например, при написании процедур, генери-
рующих случайные числа. Младшие семь разрядов этого регистра увеличи-
ваются на единицу после выполнения очередной команды (точнее цикла
Ml) микропроцессора, старший разряд аппаратко не используется.
Работа программиста превратится в бессмысленные математические
упражнения при отсутствии связи компьютера с внешним миром, осущест-
вляемой через порты.
Хотя Z80 имеет 16-разрядную шину адреса, в ZX Spectrum при обраще-
нии к большинству внешних устройств значащими являются только 8 младших
разрядов. Например, для изменения цвета бордюра необходимо записать соот-
ветствующее значение в порт с адресом %0000000011111110 (254)**, но если
Вы запишете это же значение в порт %0000000111111110 (510), то получите
тот же эффект. Разряды, не влияющие на выбор устройства, обычно обозна-
чаются знаком х, и, таким образом, полный адрес упомянутого выше внешнего
устройства записывается как xxxxxxxxl 1111110.
Для упрощения аппаратной части в Speccy выбор внешних устройств
осуществляется сбросом в ноль одного из разрядов адреса. Порт 254, например,
выбирается при А0-0, порт 239 — при A2-Q и т. д. При разработке
ZX Spectrum были сделаны следующие назначения для разрядов шины адреса:
АО — клавиатура, магнитофон, динамик;
А1 — не используется (в ZX Spectrum 48К);
A3 и А4 — Interface 1 и микродрайв.
*) BCD — Binary Coded Decimal — двоично-десятичный код Читайте также: Ручной насос при накачивании велосипедной шины нагревается объясните почему физика
ZX Spectrum управляет магнитофоном, клавиатурой, цветом бордюра
и динамиком через один-единственный порт с адресом 254.
При записи байта в порт:
биты D0. D2 определяют цвет бордюра:
биг D3 управляет выходом на магнитофон. Манипулируя этим битом,
программы обслуживания магнитофона формируют сигнал записи;
бит D4 управляет звуковым каналом. Например, дя того чтобы получить
звук частотой 1 кГц, необходимо устанавливать и сбрасывать этот бит
1000 раз в секунду;
биты D5*.tD7 не используются.
*) На самом деле, если Вы попытаетесь обратиться по другим незадейсгво-
ванным адресам портов, то получите аналогичный результат.
Видео:Обзор ZX INVITE. Загадочное устройство для ретро игры! (ZX Spectrum)Скачать
**) В ZX Spectrum +3 схема отображения выполнена более грамотно, чем в
Speccy, однако это стало причиной неполной совместимости с базовой
моделью. Ряд программ, например, Short Circuit, на Spectrum -КЗ не
работают.
При чтении байта из порта:
биты D0. D4 обслуживают клавиатуру.
Стандартная клавиатура ZX Spectrum состоит из 40 клавиш, которые
разбиты на восемь рядов по пять кнопок в каждом (рис. 12). Для того, чтобы
Zx spectrum шина данных
Работа программиста превратится в бессмысленные математические упражнения при отсутствии
связи компьютера с внешним миром, осуществляемой через порты.
Хотя 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. Для каждого порта указаны его десятичный
и, в скобках, шестнадцатеричный и двоичный адреса.
Внешнего устройства с таким адресом в ZX Spectrum нет, поэтому из порта 255 считывается
состояние «пассивной» шины данных. Благодаря оригинальному схемотехническому решению, в ZX
Spectrum шина данных используется одновременно для двух процессов: работы Z80 и вывода ин-
формации на дисплей. В момент формирования изображения из порта 255 считываются случайные
значения (анализ показывает, что преимущественно считываются
Видео:8 битное железо Беларуси | ZX Spectrum | Перезалив, Dec '22Скачать
атрибуты отображаемого в данный момент знакоместа), а во время, не занятое выводом — зна-
чение 255.*
Чтение из порта 255 в некоторых фирменных программах используется для синхронизации отно-
сительно вывода на экран, и поэтому они отказываются работать на многих самоделках.**
*) На самом деле, если Вы попытаетесь обратиться по другим незадействованным адресам портов, то получите
аналогичный результат.
**) В ZX Spectrum +3 схема отображения выполнена более грамотно, чем в Speccy, однако это стало причиной не-
полной совместимости с базовой моделью. Ряд программ, например, Short Circuit, на Spectrum +3 не работают.
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 обслуживают клавиатуру.
Читайте также: Пропускная способность шины видеокарты что это такое
Стандартная клавиатура ZX Spectrum состоит из 40 клавиш, которые разбиты на восемь рядов
по пять кнопок в каждом (рис. 12). Для того, чтобы узнать, какая из клавиш ряда нажата, нуж-
но прочесть байт из порта, полный 16-разрядный адрес которого задается так: младший байт ад-
реса равен 25 4 (#FE), а в старшем байте сброшен в ноль один из разрядов, соответствующий вы-
бран-
Видео:Подключение контроллера дисковода ZX Spectrum, часть 1.Скачать
Порт обслуживает стандартный для ZX Spectrum
принтер—ZX Printer, драйвер которого «зашит» в
ПЗУ компьютера. Некоторые интерфейсы принтеров в тот момент, когда на адресной шине появляется
адрес 251, «перехватывают» управление. Например, интерфейс ZX Lprint III с помощью драйверов из
его собственного ПЗУ может через порт 251 управлять различными типами принтеров.
*) Interface 2 позволяет также использовать картриджи с ПЗУ, в которое при изготовлении записываются
готовые программы.
Порт 247 (#F7, %11110111)
Порт 239 (#EF, %11101111)
Порты устройства Interface 1, которое позволяет: соединять компьютеры в локальную вычисли-
тельную сеть; использовать стандартный интерфейс RS—232C; подключать до восьми микродрайвов
(накопителей на «бесконечной» магнитной ленте), работать с которыми несколько удобнее, чем с
магнитофоном. Однако в Союзе Interface 1 по разным причинам не получил распространения.
Порт 31 служит для связи с самым распространенным типом
джойстика — Kempston Joystick. Старшие три бита (D5. D7)
этого порта всегда сброшены в ноль — именно по этому усло-
вию некоторые программы определяют, что kempston-джойстик
подключен. Младшие биты (DO. D4) индицируют состояние
джойстика (см. табл. 2). Таблица 2. Биты
Несколько битов может быть установлено одновременно. На-
пример, если установлены биты DO, D3 и D4, то это означа-
ет, что джойстик находится в положении «влево-вниз» и нажата «стрельба».
При нейтральном положении kempston-джойстика из порта 31 должен считываться ноль.
СИСТЕМА ПРЕРЫВАНИЙ
Прерывания являются необходимым средством для программирования параллельных процессов. С
их помощью, например, в ZX Spectrum одновременно с выполнением программы на Бейсике осущест-
вляется сканирование клавиатуры и отсчет времени системным таймером.
В процессоре Z80 имеется два аппаратных входа инициализации прерываний: INT — для маски-
руемых прерываний и NMI — для немаскируемых. Маскируемые прерывания получили свое название
благодаря возможности программно запрещать или разрешать реакцию на сигнал прерывания, тогда
как для немаскируемых прерываний это невозможно.
При поступлении сигнала прерывания микропроцессор завершает выполнение текущей команды,
помещает в стек адрес следующей и приступает к выполнению специальной программы, обслуживаю-
щей данное прерывание (за исключением режима 0 маскируемых прерываний). После завершения об-
работки прерывания процессор извлекает из стека адрес следующей команды и возвращается к вы-
полнению прерванной программы.
Необходимым условием правильного функционирования программ обслуживания прерываний являет-
ся их сбалансированная работа со стеком: к моменту возврата из прерывания стек должен быть в
том же состоянии, в котором он находился к моменту прихода прерывания. Другим условием явля-
ется сохранение всех регистров, задействованных в программе обслуживания прерываний, и вос-
становление их значений при возврате из прерывания.
В ZX Spectrum на вход INT процессора постоянно подается полукадровый синхронизирующий сиг-
нал с периодом 1/50 секунды. В операционной системе это используется для организации опроса
клавиатуры и наращивания значения системного счетчика одновременно с работой интерпретатора
Бейсика.
Управлять прохождением маскируемых прерываний можно командами DI и EI, которые изменяют
состояние специального внутреннего триггера микропроцессора IFF. Команда DI сбрасывает этот
триггер, запрещая прерывания, EI устанавливает его, разрешая прерывания.
При вызове маскируемого прерывания триггер IFF автоматически сбрасывается, запрещая по-
вторный вызов прерываний. После обработки прерывания процессор не устанавливает триггер
вновь — для разрешения прохождения последующих прерываний программист должен включить в про-
грамму команду EI.
Z8 0 имеет три режима обработки маскируемых прерываний, которые устанавливаются командами
процессора IM О, Ш 1 и IM 2. К сожалению, программным путем практически невозможно опреде-
лить, в каком режиме обработки прерываний находится процессор в конкретный момент времени.
Видео:ZX SPECTRUM 48K с Ebay! Разбираем схему, дорабатываем видеовыход, собираем эмулятор клавиатуры PS/2.Скачать
Режим устанавливается либо командой Ш 0, либо аппаратным сбросом процессора, и ничем не
отличается от режима обработки прерываний в микропроцессоре I8080. По приходу сигнала INT
процессор считывает с шины данных код команды (предварительно выставленный на шину внешним
прерывающим устройством) и выполняет ее. В принципе, это может быть любая команда (чаще все-
го используются команды RST N или CALL addr). Но ZX Spectrum устроен таким образом, что при
вызове прерывания в режиме 0 с шины данных всегда считывается значение 255 (#FF) — код ко-
манды RST 56. И, следовательно, для ZX Spectrum этот режим аналогичен режиму 1.*
*) Строго говоря, это не совсем так, см. примечание к режиму 2.
Устанавливается командой IM 1. По прерыванию процессор передает управление на ячейку с ад-
ресом 56 (выполняется команда CALL 56). Именно в этом режиме обрабатывает прерывания опера-
ционная система ZX Spectrum.
Устанавливается командой IM 2. Режим дает возможность программисту самостоятельно обраба-
тывать прерывания, чем и интересен.
- Свежие записи
- Нужно ли менять пружины при замене амортизаторов
- Скрипят амортизаторы на машине что делать
- Из чего состоит стойка амортизатора передняя
- Чем стянуть пружину амортизатора без стяжек
- Для чего нужны амортизаторы в автомобиле
📹 Видео
Слонёнок Dendy против Спека | ZX Spectrum | ПерезаливСкачать
10 особенностей ZX Spectrum которые удивляют сегодняСкачать
Игры для ZX Spectrum, в которых нам что - то показалось ...Скачать
Клон ZX Spectrum "Азбука" - Обзор и разборСкачать
Входим в разработку под ZX Spectrum на канале Петр БезумныйСкачать
Простой клон zx spectrumСкачать
8BitDo - Геймпад для ZX Spectrum Next.Скачать
Из каких микросхем сделан ZX Spectrum | Советские микросхемыСкачать
Днище Спектрумизма | F#CKTRO | ZX Spectrum | Перезалив Mar '20Скачать
ZX Spectrum на виниле, радио и CDСкачать
ZX Spectrum от подписчика: ремонт и расширение памяти компьютера Ленинград 1 (часть 1)Скачать
Подключение контроллера дисковода ZX Spectrum, часть 3.Скачать
ZX совместимый компьютер PROFI | ZX Spectrum | ПерезаливСкачать
ZX Spectrum - Кворум-64 (Old-Hard №80)Скачать