В апреле следующего года персональному компьютеру 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 Spectrum 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 Spectrum", эмулируемая с помощью клавиатуры IBM PC с интерфейсом PS/2;
— магнитофон для загрузки и записи программ и другой информации;
— выход звука.
Имеется возможность увеличить объём оперативной памяти до 512 Кбайт, а общее число страниц ПЗУ — до трёх (по 16 Кбайт каждая)
Принципиальная схема
Схема компьютера изображена на рис. 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. Большинство элементов — для поверхностного монтажа. Все отверстия на плате должны быть металлизированными.
Хотя правильно собранное и запрограммированное устройство не нуждается в регулировке и настройке, начиная корректно работать при первом включении, предпочтительно всё же соблюдать определённый порядок его сборки, который позволяет вовремя выявить возможные дефекты (замыкания, некачественную пайку), допускаемые при монтаже.
Прежде всего проверьте подготовленную к монтажу плату на отсутствие обрывов печатных проводников, замыканий между ними, дефектов металлизации отверстий. Установите на плату разъём Х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.
В связи с тем что многие одноименные выводы микроконтроллеров DD 1 и DD 2, согласно схеме, должны быть соединены между собой, оказалось целесообразным для уменьшения длины печатных проводников и упрощения их трассировки монтировать микроконтроллер DD 2 на плату в перевёрнутом положении. Для этого необходимо перед монтажом переформировать его выводы, изогнув их в противоположную сторону. Вслед за микроконтроллером DD 1 установите на плату оставшиеся элементы.
После подключения монитора и включения питания на экране должно появиться изображение, характеризующее версию эмулируемого компьютера " ZX Spectrum ". В версиях с объёмом памяти 48 Кбайт — сообщение в нижней строке экрана "@ 1982 Sinclair Research LTD ", в версиях с объёмом памяти 128 Кбайт и Pentagon выводится соответствующее меню. При невыполнении этого условия необходимо отыскать и устранить неисправность.
Отключите источник питания от разъёма Х4 устройства и отстыкуйте от разъёма XW 1 кабель монитора устройства. Подключите к плате разъём ХЗ ( MDN -6 F ) и пристыкуйте к нему кабель стандартной клавиатуры IBM АТ с интерфейсом PS/2. Если предполагается разместить плату устройства внутри корпуса клавиатуры (такой вариант конструкции показан на рис. 6), её можно соединить непосредственно с платой имеющегося там контроллера, не устанавливая разъём ХЗ. В кабеле клавиатуры цепь KEYDAT обычно выполнена проводом в изоляции белого цвета, цепь KEYCLK — зелёного, цепь питания (+5 В) — красного, а общий провод обычно жёлтый.
В клавиатуре 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