Найти в Дзене
Мифоборец

ZX-Specrum жив! ZX-Spectrum на AVR

Оглавление

В апреле следующего года персональному компьютеру ZX-Spectrum исполнится 40 лет! По меркам компьютеров это уже глубокая старость. Пик его популярности в России и СССР пришелся на конец 80-х,начало 90-х Но тем не менее все еще есть энтузиасты, продолжающие создавать его клоны. Один из них В. Лисицын создал ZX-Spetrum на микроконтроллерах AVR. И про его компьютер я и хочу рассказать

Компьютер "ZX Spectrum" был раз­работан британской компанией Sinclair Research LTD в 1982 г. и принёс с собой немыслимую конкуренцию в мир компьютерной индустрии. Его техниче­ские возможности, встроенный интер­претатор языка BASIC, использование в качестве монитора обычного телевизо­ра, простая схема на доступных компо­нентах, низкая стоимость и хороший дизайн долгие годы способствовали широкому распространению этого ком­пьютера практически во всём мире. Для "ZX Spectrum" написано огромное количество программного обеспече­ния, большая часть которого — раз­личные игры. Для огромного числа радиолюбителей "ZX Spectrum” стал этапом их профессионального ста­новления, стимулом для изучения микропроцессорной и электронной техники.

Внимание к "ZX Spectrum" стало ослабевать, когда мир начали завоёвы­вать компьютеры IBM PC, само назва­ние которых содержало аббревиатуру слов "персональный компьютер". Но за многие годы своего существования "ZX Spectrum" завоевал не только широкую известность, но и огромную массу поклонников. Именно эти люди не дали ему навсегда уйти со сцены, продолжая разрабатывать его новые варианты с применением новейшей элементной базы и программным обеспечением.

К сожалению, многие варианты "ZX Spectrum" на современной элементной базе не приспособлены к повторению их радиолюбителями, так как содержат, например, такие не освоенные боль­шинством из них элементы, как ПЛИС, и построены по слишком сложным схе­мам. Предлагаемая статья описывает версию "ZX Spectrum" на широко рас­пространённых микроконтроллерах се­мейства AVR, доступных и освоенных многими радиолюбителями.

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

Устройство представляет собой полноценный программно-аппаратный эмулятор компьютера "ZX Spectrum", способный имитировать работу его версий "ZX Spectrum 48 К", "ZX Spec­trum 48 К 2006", "ZX Spectrum 128 К", "ZX Spectrum Pentagon 128 К", "ZX Spec- trum+2", "ZX Spectrum+3". В нём про­граммно реализована эмуляция доку­ментированных и недокументирован­ных команд микропроцессора Z80, порта FE, порта 7FFD. Имеется функ­ция отображения теневого экрана.

Основные технические характеристики

Общий объём ОЗУ, включая теневой экран, Кбайт 128

Объём экранной области памяти (не учитывая тене­вой экран), байт

  • видеоинформация 6144
  • атрибуты 768

Объём ПЗУ, Кбайт 32

Эквивалентная тактовая час­тота микропроцессора

Z80, МГц. 3,333

Частота кадров формируе­мого видеосигнала, Гц 50

Разрешение формируемого изображения, пкс 256x192

Размер знакоместа, пкс. 8x8

Число цветов элементов изображения 8

Число градаций яркости эле­ментов изображения 2

Периферийное оборудование:

— стандартная клавиатура "ZX Spec­trum", эмулируемая с помощью клавиа­туры IBM PC с интерфейсом PS/2;

— магнитофон для загрузки и записи программ и другой информации;

— выход звука.

Имеется возможность увеличить объ­ём оперативной памяти до 512 Кбайт, а общее число страниц ПЗУ — до трёх (по 16 Кбайт каждая)

Принципиальная схема

Рис.1
Рис.1

Схема компьютера изображена на рис. 1. На микроконтроллере DD2 ATmega128-16AU реализован эмулятор процессора Z80 и портов FE и 7FFD. Видеоконтроллер выполнен на анало­гичном микроконтроллере DD1. На мультиплексоре DD4 и транзисторах VT1— VT4 собран классический для "ZX Spectrum" узел формирования видео­сигналов. Эмулятор и видеоконтроллер параллельно работают с блоком ОЗУ, состоящим из статической микросхемы памяти DS1 (CY7C1049D-10VXI), вось­миразрядном параллельном регистре- защёлке младшего байта адреса DD5 (74АС373МТС) и страничном мульти­плексоре DD6 (74АС257М). Контроллер интерфейса PS/2 стандартной компью­терной клавиатуры реализован на мик­роконтроллере DD3 ATtiny2313A-SU. Все три микроконтроллера работают с тактовой частотой 20 МГц, хотя пре­дельной для ATmega128-16AU считает­ся частота 16 МГц. Но практика и тесты показывают, что в рассматриваемом устройстве сбоев в их работе не наблю­дается. Стабилизатор питания выпол­нен на микросхеме DA1 (L7805CD2T в корпусе D2 PACK).

Эмулятор процессора и портов ввода—вывода начинает свою работу с момента включения питания, при по­явлении которого внутри микроконтрол­лера DD2 формируется импульс, уста­навливающий его в исходное состояние, затем выполняется инициализация пор­тов ввода—вывода и всех внутренних периферийных устройств микроконтрол­лера. Далее стартует основная програм­ма эмуляции. Эмулируемая программа хранится во FLASH-памяти микроконт­роллера DD2, начиная с физического адреса 0000 страницами по 16 Кбайт. В специально отведённом регистре- указателе ROM ID номер текущей стра­ницы ПЗУ устанавливается при инициа­лизации или при обращении к порту 7FFD. Так как ячейка FLASH-памяти микроконтроллера по адресу 0000 занята эмулируемой программой, все векторы прерываний, включая RESET, перенесены в область памяти, начинаю­щуюся с адреса FEOO, что достигается программированием разряда конфигу­рации BOOTRST при незапрограммиро ванных разрядах BOOTSZ1 и BOOTSZO.

В ходе эмуляции каждой команды микропроцессора Z80 происходит сле­дующее:

1 . Проверяется наличие запроса внешнего прерывания MINT (аналога маскированного прерывания INT в Z80), если оно разрешено. Если запрос име­ется и реакция на него разрешена, про­исходит переход по вектору прерыва­ния для его обработки.

2 . Инкрементируется регистр реге­нерации памяти R, аналогичный имею­щемуся в Z80.

3 . Считывается указатель счётчика команд PC, аналогичный имеющемуся в Z80.

4 . Если счётчик команд указывает на ячейку ПЗУ, производится чтение кода операции обрабатываемой команды из внутренней FLASH-памяти микроконт­роллера с учётом указателя страницы ROMID. В противном случае этот код читается из ОЗУ.

5 . В регистровой паре Z микроконт­роллера формируется адрес, по кото­рому находится процедура эмуляции обрабатываемой команды, затем пере­ход по этому адресу.

6 . Выполняются процедуры эмуля­ции команды

7. Происходит возврат в начало цикла эмуляции (М1) с выдерживанием необходимых временных задержек.

При эмуляции команд, предусмат­ривающих обращение к ОЗУ, микро­контроллер выполняет операцию чте­ния ОЗУ или записи в него. Реали­зуется это по стандартной схеме с запоминанием младшего байта адреса ОЗУ, выведенного на шину ADO — AD 7, в регистре-защёлке DD 5 по спаду сигна­ла ALE , после чего происходит вывод старшего байта адреса на линии А8— А13, А14СР, А15СР и формирование сигнала чтения ОЗУ (/ RD ) или записи в ОЗУ (/ WR ).

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

При обращении к ОЗУ по адресам 0000— FFFF включается та его стра­ница, номер которой установлен в порте 7FFD . При этом используется странич­ный мультиплексор DD 6. В области С000— FFFF старшие разряды А14 и А15 адресов ячеек памяти имеют значе­ния 1. Поэтому при обращении к этой области оба сигнала А14СР и А15СР имеют высокий уровень. При этом уро­вень сигнала управления на выводе 1 (входе A /В) мультиплексора DD 6 стано­вится высоким и происходит пере­ключение старших разрядов адреса ОЗУ А14—А17 с линий А14СР, А15СР, SCA 16, 0 на линии МХА14—МХА17, сиг­налы на которых формируются про­граммно при обращении к порту 7FFD . Они будут описаны ниже.

Следует также отметить, что при отсутствии обращения эмулятора к ОЗУ линии РС6 и РС7 микроконтроллера DD 2 сконфигурированы как выходы, на которых установлены соответственно высокий и низкий уровни. Это позво­ляет страничному мультиплексору DD 6 находиться в состоянии, при котором его выходы соединены с входами АО— АЗ. Старшие разряды поступающего на ОЗУ адреса получают следующие значения: А14=1, А15=0, А16=0 и А17=0 (при SCA 16= O ), что и необходимо для видеоконтроллера, использующего это время для чтения видеоинформации из области 4000— 5CFF .

При эмуляции команд, предусматри­вающих работу с портами ввода— выво­да # FE и 7FFD , происходит формиро­вание или чтение сигналов, описанных далее.

Сигналы BORDERL , BORDERM и BORDERH (разряды 0—2 регистра # FE ) представляют собой трёхразрядный код цвета бордюра, адресованный ви­деоконтроллеру.

Сигнал BORDERY также адресован видеоконтроллеру и задаёт контраст­ность бордюра. В предлагаемой реали­зации она всегда пониженная. Но в новых разработках этот сигнал может быть использован.

Сигнал ВЕЕР (разряд 4 порта # FE ) с выхода РВ4 микроконтроллера DD 2 поступает на электромагнитный излуча­тель звука НА1. Второй вывод излучате­ля соединён с выходом РВ5, на котором всегда установлен низкий уровень. В новых разработках этот выход может быть использован для увеличения гром­кости звуковых сигналов или формиро­вания сложных звуков, но при этом кон­денсатор СЗ следует заменить неполяр­ным.

Сигнал записи на магнитофон, вход которого подключают к разъёму Х6 (гнездо ST -033 под стандартный аудио­штекер диаметром 3,5 мм), формиру­ется на выходе РВЗ микроконтроллера DD 2 (разряд 3 порта # FE ).

Сигнал, воспроизводимый магнито­фоном, подают на линию PF 6 через разъём Х5 (гнездо ST -033 под стан­дартный аудиоштеккер диаметром 3,5 мм). Эта линия сконфигурирована как вход встроенного десятиразрядно­го АЦП микроконтроллера. Он работа­ет в режиме непрерывного преобразо­вания с образцовым напряжением, равным напряжению питания микро­контроллера. С помощью резистивного делителя R 19 R 20 на линии PF 6 уста­новлено постоянное напряжение, рав­ное его половине. Разряд 6 эмулируе­мого порта # FE принимает значение старшего разряда результата работы АЦП.

Сигналы KEYL , KEYML , KEYM , KEYMH , KEYH , получаемые микроконтроллером DD 2, поступают соответственно в раз­ряды 0—4 порта # FE , и при чтении этого порта образуют код ответа клавиатуры.

Сигналы МХА14—МХА16 (порт 7FFD ) и МХА17 — значения четырёх старших разрядов адреса ОЗУ при обращении к нему эмулятора микропроцессора Z 80. В данной реализации сигнал МХА17 всегда имеет низкий уровень, но про­граммно доступен и может быть использован в дальнейшем. Остальные три сигнала — записанный в порт 7FFD код номера страницы в области ОЗУ С000— # FFFF .

Видеоконтроллер читает содержи­мое области видеоинформации ОЗУ (4000— 57FF для обычного экрана и 0000 — 17FF для теневого), области видеоатрибутов (5800— 5AFF для обычного экрана и 1800— 1AFF для теневого), формирует видеосигналы, а также стандартную телевизионную смесь строчных и кадровых синхроим­пульсов (линия SYNC ).

При включении напряжения питания в микроконтроллере DD 1 формируется внутренний импульс установки, происхо­дит начальная конфигурация портов ввода—вывода и всех внутренних уст­ройств. Далее стартует основная про­грамма формирования сигналов, участ­вующих в построении видеосигнала.

Сигнал SYNC представляет собой смесь кадровых и строчных синхроим­пульсов.

Сигнал PIXEL задаёт свечение теку­щего элемента изображения цветом "чернил" ( PIXEL =1) или цветом "бумаги" ( PIXEL =0).

Сигналы IR , IG , IB — соответственно красная, зелёная и синяя компоненты цвета "чернил".

Сигналы PR , PG , РВ — соответствен­но красная, зелёная и синяя компонен­ты цвета "бумаги".

Сигнал Y /2 задаёт уровень контраст­ности выводимого элемента изображе­ния. Y /2=0 — нормальная, Y /2=1 — пони­женная.

К моменту начала первой строки нового кадра изображения во внутрен­них регистрах микроконтроллера уже хранятся прочтённые в предыдущем сеансе обращения к ОЗУ 32 байта, задающие содержание этой строки. А во внутреннем ОЗУ микроконтроллера хранятся прочтённые во время вывода нижнего и верхнего бордюров экрана 768 байт атрибутов изображения. На линии РВ7 формируется сигнал PIXEL первой строки, причём перед началом последовательного вывода содержимо­го каждого из 32 байтов видеоконтрол­лер выводит в порт Е байт атрибута, который устанавливает цвета "чернил", "бумаги" и контрастность изображения.

Длительность вывода одного эле­мента изображения — три такта работы микроконтроллера. За это время он успевает выполнить собственно вывод одного двоичного разряда, сдвиг байта на разряд влево и одну дополнительную инструкцию либо (после вывода по­следнего разряда байта) чтение оче­редного байта атрибутов из внутренне­го ОЗУ. Дополнительные инструкции, не участвующие в выводе строки изобра­жения, образуют ряд процедур, форми­рующих адреса ячеек внешнего ОЗУ, из которых будет выполняться чтение ин­формации для вывода следующей видеостроки и атрибутов для неё, а так­же формирующих байты цвета левого и правого бордюров экрана в соответст­вии с сигналами BORDERL , BORDERM , BORDFRH и BORDERY заданными эму­лятором процессора. Вывод следующих строк изображения происходит анало­гично.

Перед чтением видеоинформации из ОЗУ видеоконтроллер обязательно ана­лизирует состояние линии RBBCP . Если на ней установлен высокий уровень, память в данный момент доступна и можно выполнить чтение байта, зани­мающее три такта. Затем происходит повторный анализ состояния линии RBBCP , и если память всё ещё свобод­на, читается ещё один байт. Если же память оказывается занятой, видео­контроллер, прежде чем читать байт, ожидает её освобождения. В интервале времени между правым и левым бордю­рами изображения на линии SYNC фор­мируется строчный синхроимпульс низ­кого логического уровня.

Чтение атрибутов видеоизображе­ния во внутреннее ОЗУ микроконтрол­лера происходит во время формирова­ния нижнего и верхнего бордюров изоб­ражения, между которыми формиру­ется кадровый синхроимпульс низкого логического уровня с "врезками" строч­ных синхроимпульсов высокого уровня. Во время каждой "врезки" происходит чтение состояния линий BORDERL , BORDERM , BORDERH и BORDERYn фор­мирование байта цвета и уровня конт­растности бордюра для текущей строки.

Чтение байтов атрибутов из внешне­го ОЗУ происходит по тому же принципу, что и чтение видеоинформации, с ана­лизом состояния линии RBBCP . Эффект мигания знакоместа достигается перио­дической коррекцией прочтённого байта атрибута в соответствии со значе­нием флага OCF 3 A счётчика TCNT 3 мик­роконтроллера, настроенного на уста­новку этого флага с частотой мигания.

Следует также отметить, что во время вывода 249-й строки изображе­ния происходит формирование сигнала MINT низкого логического уровня, кото­рый адресуется эмулятору процессора и поступает на вход его внутреннего аналогового компаратора. По флагу прерывания от этого компаратора (если оно разрешено, а разрешается и запре­щается оно при эмуляции команд EI и DI микропроцессора Z 80) эмулятор запус­кает процедуру обработки маскирован­ного прерывания INT , которое использу­ется при опросе клавиатуры. Частота сигнала MINT равна частоте кадровой развёртки — 50 Гц.

Так как эмулятор процессора и ви­деоконтроллер обращаются к одному и тому же внешнему ОЗУ одновременно, во избежание аппаратного конфликта видеоконтроллер соединён с шинами адреса, данных и управления через ограничители тока — резисторы R 2 — R 18.

Контроллер клавиатуры собран на микроконтроллере DD 3 ( ATtiny 2313 A - SU , допустимая замена ATtiny 2313-20 SU ) и рассчитан на подключение к нему стан­дартной клавиатуры IBM PC АТ с интер­фейсом PS/2. Тактовый генератор мик­роконтроллера DD 3 стабилизирован внешним кварцевым резонатором ZQ 1 частотой 20 МГц. В связи с этим разря­ды конфигурации микроконтроллера CKSEL 3, CKSEL 2, CKSEL 1, CKSEL 0 и CKDIV 8 оставлены незапрограммированными (имеют значения 1). Этот же мик­роконтроллер служит источником так­тового сигнала частотой 20 МГц для микроконтроллеров DD1 и DD2. Импульсы этой частоты выводятся на линию PD2 микроконтроллера DD3 при программировании (установке нулевого значения) его разряда конфигурации CKOUT.

Во время ожидания скан-кода клавиатуры анализируется состояние линии KEYCLK. По спадающему перепаду уровня на ней происходят чтение состояния линии KEYDAT и запись в память микроконтроллера очередного разряда поступающей с клавиатуры информации. По завершении приёма байта выполняется его анализ. Если это байт префикса (F0 или Е0), происходит соответствующая установка флагов состояния клавиатуры, которые используются в дальнейшем. Принятые скан-коды нажатых клавиш записываются во внутреннее ОЗУ микроконтроллера.

Сменой высокого логического уровня сигнала KEYMH низким эмулятор процессора Z80 запрашивает прерывание программы контроллера клавиатуры. Выполняя процедуру его обслуживания, последний читает выведенный к этому времени эмулятором в порт В байт кода опроса клавиатуры. В соответствии с этим кодом контроллер клавиатуры формирует адрес внутреннего ОЗУ, по которому уже хранится необходимый код ответа, читает его и выдаёт в порт D эмулятора по линиям KEYL, KEYML, KEYM, KEYMH, KEYH. На этом контроллер клавиатуры процедуру обработки прерывания завершает.

Конструкция и порядок сборки и наладки.

Устройство собрано на двусторонней печатной плате из фольгированного стеклотекстолита, чертёж печатных проводников которой показан на рис. 2, а расположение элементов на обеих её сторонах — на рис. 3. Большинство элементов — для поверхностного мон­тажа. Все отверстия на плате должны быть металлизированными.

Рис.2
Рис.2
Рис.3
Рис.3

Хотя правильно собранное и запро­граммированное устройство не нуждается в регулировке и настройке, начи­ная корректно работать при первом включении, предпочтительно всё же соблюдать определённый порядок его сборки, который позволяет вовремя вы­явить возможные дефекты (замыкания, некачественную пайку), допускаемые при монтаже.

Прежде всего проверьте подготов­ленную к монтажу плату на отсутствие обрывов печатных проводников, замы­каний между ними, дефектов металлизации отверстий. Установите на плату разъём Х4 (гнездо питания 9 x 11 x 14 мм диаметром 6,3 мм), интегральный ста­билизатор DA 1, конденсаторы С4, С5, С7. Подключите к разъёму Х4 источник постоянного напряжения 9...12 В. При этом обязательно соблюдайте правиль­ную полярность.

Измерьте вольтметром напряжение на выводах 1 и 3 стабилизатора DA 1 от­носительно его вывода 2. На выводе 1 оно должно соответствовать напряже­нию источника, а на выводе 3 лежать в пределах 4,8...5,2 В. При невыполнении этих условий найдите и устраните неис­правность.

Следующими установите на плату микроконтроллер DD3 (в его FLASH - naмять должен быть предварительно загружен файл zxkeyboard . hex ), пере­мычку, соединяющую вывод 10 микро­контроллера с общим проводом, квар­цевый резонатор ZQ 1, конденсаторы С8, С15, С19, резисторы R 22, R 24, R 25. Снова включите питание и проконтро­лируйте осциллографом наличие на выводе 6 микроконтроллера DD 3 им­пульсов частотой 20 МГц. Они должны быть близкими по форме к прямоуголь­ным и симметричными. При отсутствии осциллографа можно измерить напря­жение на выводе 6 вольтметром посто­янного тока. Оно должно находиться в пределах 2,5±0,25 В. Проверьте, что такой же сигнал присутству­ет на контактных площад­ках для выводов 24 мик­роконтроллеров DD 1 и DD 2. При отсутствии так­товых сигналов следует найти и устранить неис­правность.

Установите на печат­ную плату микроконтрол­лер DD 1, мультиплексор DD 4, конденсаторы С1, С6, резисторы R 2— R 18, R 23, R 26— R 42, диоды VD 3— VD 5, транзисторы VT 1 — VT 4, разъёмы Х1, Х2 (штыревые колодки PLD с соответствующим числом контактов), XW 1 (гнездо RCA AV 1-8.4-19 "тюль­пан’’). Во FLASH -память микроконтроллера DD 1 может быть предвари­тельно загружен файл videocpu.hex . Но если это­го не сделано, программи­рование микроконтрол­лера можно выполнить и на плате, используя для подключения программа­тора контакты 2 (+5 В), 4 ( RESET ), 6 ( MISO ), 8 ( MOSI ), 10 ( SCK ) и 12 ( GND ) разъ­ёма Х2.

Включив питание, про­контролируйте с помо­щью осциллографа нали­чие синхросигнала SYNC на выводе 54 микроконт­роллера DD 1 или на левом по схеме выводе резис­тора R 23. Он должен со­держать строчные синхро­импульсы частотой око­ло 15 кГц и кадровые син­хроимпульсы частотой около 50 Гц, имея размах приблизительно 4,8 В. Перепады импульсов не должны быть затянутыми.

Проконтролируйте сиг­нал PIXEL на выводе 1 мультиплексора DD 4 и сигналы R , G , В на его вы­водах 12, 4 и 9. Они тоже должны быть размахом 4,8 Вис крутыми перепа­дами. Проверьте видео­сигнал на центральном контакте разъёма XW 1. Он должен иметь крутые перепады, ярко выражен­ные градации уровня и чёткие импуль­сы строчной и кадровой синхрониза­ции. При невыполнении хотя бы одного из описанных условий найдите и устра­ните неисправность.

Соедините разъём XW 1 с видеовхо­дом монитора. На его экране должны появиться чётко выраженные границы прямоугольного видеополя (без раз­бивки на знакоместа) и бордюр. Син­хронизация по строкам и кадрам долж­на быть устойчивой, а градации серого цвета хорошо различаться. Может на­блюдаться мерцание отдельных участ­ков изображения с периодом около 0,25 с. Если имеется цветной монитор с входами R , G , В и SYNC , его можно под­ключить к разъёму Х1, используя в ка­честве синхронизирующего сигнал, подаваемый по цепи OUTY , и наблюдать цветное изображение. При невыполне­нии описанных условий необходимо найти и устранить неисправность.

Установите на плату микросхему памяти DS 1, регистр DD 5, мультиплек­сор DD 6, конденсаторы СЮ—С13, резистор R 21 , диоды VD 1 , VD 2. Выводы 3, 6, 10, 13 мультиплексора DD 6 соеди­ните с общим проводом. После включе­ния питания на экране присоединённо­го к разъёму XW 1 монитора должно появиться изображение, отличающееся от предыдущего разбивкой видеополя на знакоместа. Цвета "бумаги" и "чер­нил" должны отображаться неизменны­ми в пределах каждого знакоместа от­тенками серого цвета. Допускается мерцание знакомест с периодом 0,25 с. Убедившись, что изображение соответ­ствует описанному, либо найдя и устра­нив неисправности, следует отключить от общего провода выводы 3, 6, 10, 13 мультиплексора DD 6.

Микроконтроллер DD 2, как и DD 1, можно монтировать на печатную плату уже запрограммированным. Коды из файла spectrum .hex должны быть запи­саны в его FLASH -память, а из файла DAA _ TABLE .hex — в EEPROM . Однако запрограммировать его можно и на плате, используя на этот раз контакты 1 (+5 В), 3 ( RESET ), 5 ( MISO ), 7 ( MOSI ), 9 ( SCK ) и 11 ( GND ) разъёма X2.

Устройство может эмулировать ра­боту компьютеров " ZX Spectrum ” различных моделей. Представленный в приложении файл spectrum . hex обеспе­чивает эмуляцию модели " ZX Spectrum Pentagon " с памятью 128 Кбайт. Чтобы перейти к другой модели, необходимо открыть в среде AVRStudio 4.1 проект Spectrum .aps (имеется в приложении к статье) и в файл исходного текста Spectrum .asm внести изменения. В этом файле нужно найти фрагмент, следую­щий за указателем адреса . ORG 0 X 8000 и приведённый рис.4. В нём только одна из строк . INCLUDE (в данном слу­чае относящаяся к версии " ZX Spectrum Pentagon ") раскомментирована, перед другими стоят символы "точка с запя­той". Чтобы перейти к другой версии, эту строку нужно закомментировать, поставив в её начале точку с запятой, и раскомментировать подобную строку, относящуюся к нужной версии. В результате компиляции программы с вне­сённым изменением будет получен загрузочный файл Spectrum .hex , коды из которого и следует загрузить во FLASH -память микроконтроллера DD 2.

Рис.4
Рис.4

В связи с тем что многие одноимен­ные выводы микроконтроллеров DD 1 и DD 2, согласно схеме, должны быть соединены между собой, оказалось целесообразным для уменьшения дли­ны печатных проводников и упрощения их трассировки монтировать микро­контроллер DD 2 на плату в перевёрну­том положении. Для этого необходимо перед монтажом переформировать его выводы, изогнув их в противоположную сторону. Вслед за микроконтроллером DD 1 установите на плату оставшиеся элементы.

После подключения монитора и включения питания на экране должно появиться изображение, характеризую­щее версию эмулируемого компьютера " ZX Spectrum ". В версиях с объёмом памяти 48 Кбайт — сообщение в ниж­ней строке экрана "@ 1982 Sinclair Research LTD ", в версиях с объёмом памяти 128 Кбайт и Pentagon выводит­ся соответствующее меню. При невы­полнении этого условия необходимо отыскать и устранить неисправность.

Рис.5 Меню Pentagon128
Рис.5 Меню Pentagon128

Отключите источник питания от разъёма Х4 устройства и отстыкуйте от разъёма XW 1 кабель монитора устрой­ства. Подключите к плате разъём ХЗ ( MDN -6 F ) и пристыкуйте к нему кабель стандартной клавиатуры IBM АТ с ин­терфейсом PS/2. Если предполагается разместить плату устройства внутри корпуса клавиатуры (такой вариант кон­струкции показан на рис. 6), её можно соединить непосредственно с платой имеющегося там контроллера, не уста­навливая разъём ХЗ. В кабеле клавиа­туры цепь KEYDAT обычно выполнена проводом в изоляции белого цвета, цепь KEYCLK — зелёного, цепь питания (+5 В) — красного, а общий провод обычно жёлтый.

Рис.6
Рис.6

В клавиатуре IBM PC задействован­ными по своему назначению оказы­ваются клавиши 1,2, 3, 4, 5, 6, 7, 8, 9, О, Q , W , Е, R , Т, Y , U , I, О, Р, A , S , D , F , G , Н, J , К, L , Z , X, С, V, В, N , М, Enter , Up , Down , Left , Right , Space , F 1— F 7, Del , запятая. Левая клавиша Shift функционально соответствует Caps Shift , а правая — Symbol Shift . Действуют также клавиши 0—9, Enter дополнительной клавиатуры.

Клавиши желательно снабдить на­кладками из самоклеящейся бумаги, отображающими их назначение в ком­пьютере " ZX Spectrum ". Графический файл с образцами таких накладок при­ложен к статье.

Соединив разъём XW 1 с видеовхо­дом монитора и включив питание, наблюдайте на мониторе изображение, характеризующее инициализацию про­грамм микроконтроллеров и устойчи­вый старт установленной версии базо­вой программы " ZX Spectrum ". Войдите в режим загрузки программы с магни­тофона, подключите выход магнитофо­на или другого источника аудиосигнала к гнезду Х5 устройства с помощью стан­дартного аудиокабеля и загрузите какую-либо тестовую или игровую про­грамму. Проконтролируйте правиль­ность выполнения тестов или коррект­ность работы загруженной программы.

На этом налаживание устройства можно считать завершённым.

Файлы из статьи одним архивом. Помимо их архив содержит файл наклеек для самоклеящейся бумаги, а также чертеж печатной платы в формате P-CAD. Те кто не работал сданной САПР могут воспользоваться программой PCAD2006_Viewer

Заключение

ZX-Spectrun AVR вдохновил другого человека на создание компьютера КРИСС СР/М о котором я также рассказываю. А кроме того проект развивается и уже есть ZX-Spectrun AVR V2.0