Микро ЭВМ "ZX Spectrum" 1969 г.

Микро ЭВМ "ZX Spectrum" - введение. Предисловие. Три взгляда на машину. Описание системы. Физические связи. Логика работы.


Введение

Почти невозможно поверить, что всего лишь за 2.5 года фирма Синклер Рисоч в Кембридже изготовила и продала около 500 тыс. микрокомпьютеров. Весной 1980 г. был разработан микрокомпьютер ZX-80. Разработка этой машины явилась большим успехом, поскольку это был первый сравнительно дешевый микрокомпьютер для любителей. Однако, Клив Синклер и его лаборатория изготовила машину ZX81 всего за один год. Эта модель была более совершенной по сравнению с ZX8 0 и явилась развитием микрокомпьютера с низким разрешением, черно-белым экраном.

Теперь мы имеем ZX-Cпектрум. Эта машина была разработана по принципу ZX8 0 и ZX81. Сделав это, фирма Синклер Рисоч разработала компьютер с высоким разрешением и цветным экраном. Однако, с сожалением надо отметить, что ZX8 0 и ZX81 были вытеснены, хотя обе являются прекрасными машинами. Они просты в работе, что приятно для программиста. Но это не означает, что Спектрум - трудная машина для пользования, но я чувствую, что для того, чтобы от нее получить все, потребуется написание более совершенных программ.

Эта книга была написана таким образом, чтобы читатель мог дополнить свои знания по Спектрум, полученные по двум руководствам, прилагаемым к машине, ( Стив Викерс ) и тем самым получить более глубокое понимание работы со Спектрум и микрокомпьютерами в целом.

1. Принцип работы микрокомпьютерной системы

1.1. Предисловие

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

1.2. Три взгляда на машину

Возможно описать любую микрокомпьютерную систему, приняв три различных концепции. Первая является общим взглядом на на систему, которая будет включать в себя фактически микрокомпьютер и всю его периферию. Вторая - описывает физические связи микрокомпьютера. Третья описывает логику работы компьютера .

Концепция "системы", вероятно, уже хорошо знакома большинству читателей, но все-таки она приводится, т.к. могут быть читатели, которые не знакомы с системой Спектрум.

1.3. Описание системы

Сам по себе микрокомпьютер Спектрум представляет собой пластмассовый корпус 233x144x30 mm.

На верхней части расположены 4 0 клавиш, которые образуют клавиатуру.

Сзади расположены входные и выходные разъемы и разъем для подключения блока питания.

На основной печатной плате (ПП) находится микропроцессор Z8 0 и другие элементы, включая динамик. Плата находится в одном корпусе с клавиатурой, но отделена от нее. Клавиатура и ПП соединены между собой двумя ленточными кабелями.

Система разработана таким образом, что она может отображать ее на принтер или другое периферийное оборудование.

1.4. Физические связи

Для доступа к основной печатной плате необходимо снять верхнюю крышку с клавиатурой, отвернув 5 винтов снизу. Надо проявлять осторожность, чтобы не порвать два кабеля, идущие от клавиатуры. Отключать их не рекомендуется, но при необходимости это можно сделать: зажав их двумя одинаковыми палочками, равномерно вынуть.

Рассмотрим далее каждый элемент.

Микропроцессор Z8 0

Это кремниевый кристалл (ЧИП). Он является самым важным из всех элементов и предназначен для выполнения программ. Программа для Z8 0 представляет собой набор кодовых инструкций и согласованных с ними данных. Процессор Z8 0 работает на определенной частоте - 3.5 МГЦ, что позволяет выполнять 875000 простых кодовых инструкций в секунду. При подаче питания на микропроцессор, он через некоторое время переходит в рабочее состояние.

16К ROM (постоянная память)

Представляет собой ЧИП объемом 129 Кбит или 16 Кбайт памяти, и содержит программу МОНИТОРА в машинных кодах для Z8 0 .

Программа "Монитор 16К" разбита на три части:

7 Кбайт - операционная система;

8 Кбайт - интерпретатор Бейсика;

1 Кбайт - генератор знаков.

16K RAM (оперативная память - ОЗУ)

В стандартной версии 16К ^ектрум имеет 8 ЧИПов по 2 Кбайт, или 16 Кбит. Версия 48К - содержит дополнительно еще 32 Кбайт ОЗУ.

3 из 8 ЧИПов памяти образуют "область экрана" и обычно используются только для этой цели. Четвертый ЧИП предназначен для хранения всех атрибутов 768 знаков экрана (24 строки по 32 символа) и системных переменных. В версии 16К остается свободным немного более 8Кбайт ОЗУ.

ULA

Это большой ЧИП, содержащий в себе много небольших ЧИПов В Спектруме ULA связана больше всего с "областью экрана" и

"областью атрибутов" для получения ТВ сигнала.

ПАЛ - кодировщик

Этот ЧИП получает цветную информацию от ULA и использует ее в формировании требуемого сигнала для УКВ модулятора. В английской версии Спектрум сигнал, полученный от модулятора, находится на 3 6-м дециметровом канале.

На ПП дополнительно размещены: динамик, радиатор, регулятор напряжения, системные часы, ЧИПы выборки адресов, ЧИПы буферов и др.

1.5. Логика работы

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

Микропроцессор Z80 может обращаться к отдельным 65536 адресам памяти (64K). Ограничением на непосредственную адресацию Z80 является 64Кбайт. В версии микрокомпьютера 16К можно адресоваться к адресам от 0 до 32767, а в 48К -доступны адреса от 0 до 65535. Адрес задается в виде 16-битной комбинации. 0 представляется как 0000 0000 0000 0000, а 65535 - 1111 1111 1111 1111. Адреса, выданные Z80, поступают на "Адресную шину", состоящую из 16 линий, находящихся при высоком или низким напряжении (логический "0" или логическая "1"). Адрес можно указывать двумя байтами по 8 бит. Поэтому любые данные (машинная инструкция или данные) могут представляться как 0-255 в десятичном виде или 0000 0000 - 1111 1111 - в двоичном.

Как часть логической концепции Спектрум, также важно рассмотреть нормальный режим работы системы и обсудить "карту памяти".

Синклер Рисоч выпускает Спектрум с мониторной программой 16К и обеспечивает пользователя операционной системой (ОС) и интерпретатором Бейсик (ИБ). По существу возможно вместо программы Монитор использовать Z8 0 с программой в машинных кодах.

При обычном использовании операционная система не требует со стороны пользователя каких-либо сложных действий. Поэтому при работе Спектрум уже работает ИБ как часть мониторной программы. Пользователь может сразу вводить или выполнять Бейсик-программу - подпрограммой ИБ.

Заметьте, что Z80 сам по себе не может выполнять Бейсик-программу, а только мониторную программу, представленную в

машинных кодах Z80. Исключением является программа в машинных кодах, написанная пользователем.

Карта памяти стандартной версии 16К представлена на рис. 1.1 и далее коротко описана.

ROM область

16К ROM, содержащие ОС, ИБ и генератор знаков (ГЗ) , располагаются в адресах 0-16383 (16-ричные 0000-3FFF). В адресе "0" хранится стартовый адрес программы в кодах.

Карта памяти экранной области

6К памяти с 16384 до 22527 (4000-57FF) обеспечивает высокое разрешение на ТВ. Важно, что расположение "экранной области" зафиксировано в аппаратуре Спектрум и не может меняться программно. Имеется взаимно-однозначное соответствие всех битов области и точек экрана ТВ, и следующие вычисления показывают, что число битов 6К памяти - 1024х8х6=49152 (битов) .

Количество байтов в 24 строках экрана (по 64 точки на символ) равно 32х24х64=49152 (точек).

32767 7FFF Графическая область P-RAMT

пользователя 32600 7F58 UDG

32599 7F57 RAMTOP

Стек

Машинный стек

Резервная память STKEND

Стек вычислителя STKBCT

Рабочая область WORKSP

Область редактора E_LINE

Область переменных VARS

Область Бейсик-программы PROG Область информационных каналов CHANS

(23734 5CB6 Память микронакопителей) 23 552 5C0 0 Системные переменные 23296 5B00 Буфер печати 22528 5800 Область атрибутов 16384 4000 Область экрана 0 0000 ROM область

Рис .1.1

Экран ТВ разбит на три части. Линиям с номерами 0-7 соответствуют адреса памяти 16384-18431 (16-ричн. 4000-47FF). Линиям 8-15 - адреса 18432-2С497 (16-ричн. 4800-4FFF). Линиям 16-23 соответствуют адреса 20480-22527 (16-ричн.

5 0 0 0-57FF).

Рассмотрим каждые 2К памяти, как 8 по 1/4 Кбайт областей. Каждая из 1/4 К областей задает биты одной строки (256 точек) трети зкрана, начиная сверху. Это справедливо для всех 24 по 1/4 К областей экрана.

Область атрибутов.

Экран имеет 768 символов,каждый из которых имеет один из 8 цветов "бумаги" ("PAPER"), 8-и цветов "чернил" ("INK"), признак мерцания, признаки повышенной или нормальной яркости .

Область расположена в адресах 22528-23295 (5800-5AFF), где закодированы биты, последовательно определяющие атрибуты экрана.

Зависимость между площадями символа и байтами атрибута несложная, т.к. байты просматриваются подряд для каждой линии экрана сверху вниз и слева направо.

Биты 0-2 определяют цвет "чернил" , 3-5 - цвет "бумаги",

6 - яркость, 7 - мерцание.

Буфер печатающего устройства

Ячейки памяти с десятичными адресами от 23296 до 23551 (5B00-5BFF) используются как буфер печатающего устройства.

Этих 256 байт достаточно для хранения с высокой разрешающей способностью 32 символов, причем биты первых 32 байтов соответствуют символам верхней строки, следующие 32 байта соответствуют второй строке и т.д.

Отметим, что буфер печатающего устройства при необходимости можно использовать как рабочую память.

Системные переменные

В 182 ячейках памяти с десятичными адресами от 23552 до 23733 (5C00-5CB5) содержатся различные системные переменные микро-ЭВМ "Cпектр". Подробное рассмотрение этих переменных будет производиться по мере возникновения необходимости.

Схемы распределения памяти микронакопителей

Эта область памяти начинается в ячейке с десятичным адресом 23734 (5CB6) и в стандартной модели микро-ЭВМ существует только теоретически. Однако, необходимо отметить, что эта область используется только после подключения микронакопителей.

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

Область информационных каналов

Эта специальная область памяти начинается с ячейки, адресуемой системной переменной CHANS, которая сама хранится в ячейках с адресами 23631 и 23632 (5C4F-5C50). Это область переменного размера; заканчивается она ячейкой, в которой содержится метка конца - десятичное значение 128 (80H) .

В стандартной модели микро-ЭВМ - без микронакопителей, заданы характеристики четырех каналов. Это следующие:

1. Канал К - позволяет ввод данных с клавиатуры и вывод в нижнюю часть экрана.

2. Канал S - не позволяет ввода, но предусматривает вывод в верхнюю часть экрана, которая при необходимости может быть увеличена.

3. Канал R - тоже не позволяет ввод, но допускает вывод в рабочую область памяти.

4. Канал P - тоже не позволяет ввод, но допускает вывод на печатающее устройство.

Информация о каждом канале содержит 5 байт. Это 2 байта адреса программы ввода и код (одна буква) имени канала. Четыре канала и метка конца области информационных каналов в стандартной модели микро-ЭВМ занимают 21 ячейку с адресами от 23734 до 23754 (5CB6-5CCA).

Область программы, написанной на языке Бейсик

В этой области памяти содержатся строки текущей программы, написанной на языке Бейсик (если они имеются). Размер области зависит от количества строк в текущей программе.

Начальная ячейка области адресуется системной переменной

PROG, которая содержится в ячейках с адресами 23635 и 23636 (5C53-5C54).

В стандартной модели содержимое системной переменной PROG - 23755 (5ССВ), если только не используется область схем распределения памяти для информационных каналов.

В этой области строки программы, написанной на Бейсике, хранятся в следующем формате:

В первых двух байтах каждой строки содержится номер строки (первый байт - старший, второй - младший).

В третьем и четвертом байтах содержится длина остальной части. На этот раз младший байт расположен перед старшим. Длина остальной части - это число байтов с пятого по конечный символ ENTER включительно.

Дальше расположена сама строка программы. Для обозначения некоторых символов используются коды, разработанные фирмой "Синклер Рисоч"; для стандартных цифробуквенных символов

- коды ASCII.

Последний байт строки всегда ENTER.

В пределах одной строки, написанной на Бейсике, отдельные операторы разделены двоеточиями - десятичный код 58 (3А) . Других меток для разделения операторов не предусмотрено. Заметим, что если в строке, написанной на Бейсике, имеется десятичное число, оно хранится в виде соответствующих символов ASCII с последующим символом NUMBER - дес. код 14 (OEh) в виде десятичного числа с плавающей запятой, независимо от того, будет ли это число с плавающей запятой или целое число из интервала - 65535 до +65535. Таким образом, для каждого десятичного числа, включенного в программу, написанную на Бейсике,требуется 6 байтов дополнительной памяти .

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

10 FOR A=23 755 TO 23817: PRINT A; TAB 9; PEEK A;

TAB 15; CHR$ PEEK A: NEXT A RUN

Область переменных

Начальная ячейка этой области всегда адресуется системной переменной VARS, которая содержится в ячейках памяти с десятичными адресами 23637 и 23638 (5С4В-5С4С).

Отметим, что в микро-ЭВМ адрес начальной ячейки области переменных не изменяется при выполнении любой программы, написанной на Бейсике. В то же время, ее размер всегда изменяется при задании новых переменных.

В последней ячейке области всегда содержится метка конца

- десятичный символ 128 (80).

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

Программа, демонстрирующая область переменных:

10 FOR A = 23804 TO 23823: PRINT A; TAB 9; PEEK A: NEXT A RUN

Область редактирования

Начальная ячейка этой области, содержащей введенную или редактируемую строку, написанную на Бейсике, всегда адресуется системной переменной E-LINE, которая содержится в ячейках с десятичными адресами 23641 и 23642 (5С59-5С5А). В случае, когда на нижней части экрана телевизионного дисплея отображается только мерцающий курсор, область редактирования занимает только три ячейки. В первой ячейке, адресуемой также системной переменной K-CUR, содержится символ ENTER, во второй ячейке - метка конца (десятичный код 128, или 80H). Нижняя часть экрана получается при копировании и отображении редактируемой строки.

Подобная процедура используется при отображении строки, написанной на Бейсике в нижней части экрана с помощью клавиши EDIT. Прежде всего область редактирования расширяется таким образом, чтобы поместить всю строку. Затем производится копирование строки из области редактирования в область ОЗУ, соответствующую нижней части экрана дисплея. На последнем этапе из кодов символов формируется изображение с высокой разрешающей способностью.

Поскольку область редактирования является динамической областью, изменяющейся при каждом использовании, то на данном этапе рассмотрения микро-ЭВМ нецелесообразно приводить образец демонстрационной программы, написанной на Бейсике.

Рабочая область памяти

Эта область памяти используется для различных целей, например, для ввода данных, соединения символьных строк и т.д. Начальная ячейка этой области адресуется системной переменной WORKSP, которая содержится в ячейках с десятичными адресами 24649 и 23650 (5С61 и 5С62). При этом выделяется участок памяти необходимого размера. После использования рабочая область памяти очищается, т.е. сжимается до нуля, что помогает избежать использования большего количества ячеек, чем это необходимо для работы.

Поскольку эта область также является динамической, то на данном этапе рассмотрения невозможно привести простой пример демонстрационной программы, написанной на Бейсике.

Стек вычислителя

Начальная ячейка этой очень важной области памяти адресуется системной переменной STKBOT, которая содержится в ячейках памяти с дес. адресами 23651 и 23652 (5С63 и 5С64); конечная ячейка адресуется системной переменной STKEND, расположенной в ячейках с адресами 23653 и 23654 (5С65 и 5С66).

Стек вычислителя используется для хранения пятибайтовых чисел с плавающей запятой, а при рассмотрении символьных строк - для хранения пяти байтов параметров строки.

Стек обрабатывается по принципу "последним описан -первым считан" ("last in - first out"), и в вершине стека всегда хранится последнее поступившее значение.

Свободная память

Область памяти между стеком вычислителя и стеком микроЭВМ представляет собой доступный пользователю участок памяти. В стандартной модели с памятью 16К при включении системы в этой области имеется, по крайней мере, 8839 ячеек памяти. Однако, стоит помнить, что наименьшее приемлемое значение для очистки памяти равно 23821, и эта ячейка удалена от системной переменной RAMTOR на 8878 байт.

Стек микро-ЭВМ

Микропроцессор Z8 0 должен иметь некоторую рабочую область для использования при работе микропроцессора - так называемый стек микро-ЭВМ. Указатель стека микро-ЭВМ в микропроцессоре Z8 0 всегда указывает на последнюю заполненнук ячейку памяти.

Стек микро-ЭВМ намного подробнее рассматривается в разделах книги, касающихся машинного языка.

Стек GO SUB

При каждом использовании цикла GO SUB номера строк цикла хранятся в стеке GO SUB.

Этот стек в памяти растет вниз, причем каждый адрес занимает в стеке три ячейки. В самой верхней ячейке содержится номер оператора в написанной на Бейсике строке, к которому будет выполнен возврат. В следующей ячейке содержится младший байт номера цикла, а третьей - старший байт.

Приведенная ниже демонстрационная программа показывает стек GO SUB, используемый для хранения номеров строк цикла для трех вложенных подпрограмм.

Программа, демонстрирующая стек GO SUB

10 GO SUB 20: STOP

20 GO SUB 30: RETURN

30 GO SUB 40: RETURN

40 FOR A=32597 TO 32589 STEP 1:PRINT A, PEEK A: NEXT A: RETURN RUN

Две ячейки над стеком GO SUB всегда содержат значения 0 и 62 (00h и 3Eh); любое значение между ними рассматривается как недействительный номер строки. В случае, если в написанной на Бейсике программе содержится лишняя команда RETURN, микро-ЭВМ осуществляет переход к этой недействительной строке, в результате чего на печать выведется сообщение об ошибке "RETURN without GO SUB" ("ВОЗВРАТ без GO SUB").

Примечание: Разработанная фирмой Sinclair Research процедура расщепления GOM SUB не полностью согласуется с общепринятой.

Системная переменная RAMTOR, расположенная в ячейках с адресами 23730 и 23731 (5СB2h и 5CB3h), адресует ячейку, в которой содержится число 62. Эта ячейка считается последней ячейкой области языка Бейсик.

Область заданных пользователем графиков

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

Копирование в эту область битовых представлений букв от А до U является частью процедуры инициализации микро-ЭВМ. Затем пользователь может изменить эти представления, вводя не более 21 графика.

Последняя ячейка этой области всегда адресуется системной переменной P-RAMT, которая расположена в ячейках с адресами 23732 и 23733 (5СВ4-5СВ5Н).

В стандартной модели микро-ЭВМ с памятью 16К в системной переменной P-RAMT должно содержаться 32767 - что свидетель -ствует о том, что все 16К памяти находятся в рабочем состоянии.

Целесообразно иногда вводить строку:

PRINT PEEK 23732+ 256*PEEK 23733

проверяя, что результат действительно равен 32767. (В модели с памятью 48К результат должен равняться 65536).




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Софтятиня - Black Raven - Mission editor.
Обратная связь - контакты редакции.
От автора - вышел ТРИНАДЦАТЫЙ номер...
Sketches among the Ruins of my Mind - Нy чтo, вoт mы дoжили и дo 9-гo нomeрa пeрeрoждённoй EрecИ.
SMP-сервер - SMP-сервер от "МДМ-сервис".

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