Хабрахабр

Как собрать Apple 1 и написать для него игру

Как собрать Apple 1 и написать для него игру

Сегодня его возможности не дотягивают даже до простых микропроцессорных устройств или микроконтроллеров. Прошло 40 лет с момента выхода в свет компьютера Apple 1. Предлагаю читателю вместе со мной собрать Apple 1, чтобы узнать, что же интересного в нём было, и написать какую нибудь программу. Но в 1976-ом году эта новинка наделала много шума, говорилось даже о революции в мире ЭВМ.

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

Характеристики Apple 1

Тип: Персональный компьютер
Годы выпуска: июль 1976 — март 1977
Процессор: MOS 6502
Тактовая частота: 1мГц
Память: ПЗУ 256 Байт, ОЗУ 4кБ, расширяемые до 8 кБ
Видео: 40х24 символов
Изготовлено: около 200 штук

Немного истории.

Создателем Apple 1 является Стивен Возняк. Собственно на момент создания он ещё не назывался Apple 1. Да и самой компании Apple ещё не было. 

Первой его вычислительной машиной была «крем-сода», спроектированная на интегральных микросхемах без использования центрального процессора, и способная выполнять несложные математические действия. Стив увлекался проектированием радиоэлектронных устройств с раннего возраста. Судьба «крем-соды» тоже печальна — он сгорел, и попыток восстановить его не было. К сожалению я не смог найти ни фото, ни каких то описаний этого компьютера, только довольно скупые сведения от самого Стива, описанные в его книге. Стиву сообщили, что эта встреча посвящена терминалами и видео технике. Позже, когда Стив работал над калькуляторами в НР, его знакомый, Аллен Баум, пригласил на встречу Клуба любителей компьютеров в Пало-Альто, Калифорния. Стив был скромным парнем, и знай он что речь будет про компьютеры, по его словам, он бы не пошёл туда.
На встрече он чувствовал себя не в своей тарелке, так как присутствующие обсуждали какие то непонятные микропроцессоры и компьютер Altair 8800.  На тот момент он уже создал собственный терминал для работы в ARPANET, и имел представление о терминальной технике, только поэтому он и согласился пойти.

Он решил изучить его на досуге, и понял, что это именно то, что он делал в своем первом ПК «крем-сода», и как можно было бы его сделать проще. После встречи ему дали листок с описанием микропроцессора i8080A. Но до сборки дело дошло только через несколько месяцев, которые ушли на изучение спецификаций новых микросхем и поиск комплектующих. В тот же день у него родилась архитектура будущего Apple 1. Проблема с процессором решилась, когда компания MOS Technology выпустила бюджетный процессор 6500, а в скором времени и 6502, аналог 6500, но обладающий большими возможностями, и стоившем всего 25$. Дело в том, что в 70е годы микропроцессоры и память были очень дороги и дефицитны. Именно легендарный 6502 первым попал в руки Стива. 

В те годы загрузочная программа, как правило, вводилась в компьютеры вручную либо с магнитофонной ленты, это занимало до получаса, и только после этого можно было что то на них делать. Следующая проблема того времени заключалась в подготовке компьютера к запуску. Стив решил эту проблему установкой в свой ПК микросхем постоянной памяти (ПЗУ), с записанной в них управляющей программой, которую он назвал «Монитор». Видео запуска Бейсика и игровой программы, написанной на нём, на Altair 8800 доступно по второй ссылке в конце статьи. Монитор Возняка уместился в 253 байта.
Но для запуска компьютера ему всё ещё не хватало оперативной памяти. Название отражало назначение — большую часть времени она мониторила нажатие клавиш и передавала их на терминал, а так же позволяла отображать значения в ячейках памяти и запускать программу с определенного места. Позже он заменил её на динамическую, что уменьшило количество микросхем на плате, и положительно сказалось на скорости работы.
Стив показал свой ПК публике, а его друг, Стив Джобс, который помогал носить монитор до клуба, предложил начать производить печатные платы для этого ПК, и организовать собственную компанию, которую назвали Apple.  Первая версия его ПК была собрана на медленной статической памяти.

Об этом и многом другом можно детальнее почитать в книге iWoz.

Основная плата Apple 1

Архитектура ПК.

ПК состоит из нескольких узлов. 


(Сайт источник)

Блок формирования и вывода изображения (терминал). 

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

Из-за отсутствия ПДП этот терминал работает как печатная машинка — подали символ на вход, он его отобразил на экране, переместил курсор для следующего символа, и никакой графики. В нём нет схем для прямого доступа к видеопамяти (ПДП), а используется циклическое обновление памяти в 1024 ячейки по 7 бит (причём, 64 ячейки не используются). Все символы выводятся последовательно, нельзя просто так вернуться назад, и исправить неверно введённый символ. Из-за постоянного обновления этой памяти, работа терминала довольно медленная. Для правки нужно ввести команду Монитора, которая изменит содержимое той ячейки памяти, где была допущена ошибка, а затем с помощью другой команды вывести на экран значение байта из изменённой ячейки памяти.

Кстати, при нажатии на Return (современное обозначение — Enter), запускается генератор, который до конца строки печатает символ Пробел. Если же в нашей программе мы хотим очистить экран, нам нужно 24 раза перевести каретку на новую строку.

Графического режима нет, а набор символов ограничивается стандартным набором ASCII кодов, со значениями от 1 до 127 (на экране отображаются только символы из интервала 32-126, некоторые другие используются в качестве управляющих, например 13 — перевод строки), поэтому и шина семибитная, а по старшему разряду всегда установлена единица.

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

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

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

Микропроцессорный блок


Содержит микропроцессор 6502, ПЗУ, порт ввода-вывода (PIA), буферные усилители, дешифратор адресов устройств, оперативную память и немного микросхем мелкой логики.

Блок ввода-вывода и работа с внешними устройствами.

Вместо него я установил 6821. Опросом клавиатуры и передачей введённого символа на шину данных занимается контроллер ввода-вывода (PIA) 6520. И он прекрасно работает.

Каждому устройству соответствует своя область памяти. Работа с внешними устройствами происходит как с ячейками памяти. Его входные линии подключены к адресным линиям микропроцессора, поэтому при установке нужного адреса, к шине данных подключается нужное нам устройство. Включением ввода-вывода с конкретного устройства занимается дешифратор портов. Что, и как с ним можно делать, определяет программа, и само устройство.
Так как в этом ПК не реализованы прерывания, обработкой всего потока данных (ввод с клавиатуры, вывод символов, обмен данными с внешними устройствами и тд) занимается центральный процессор.

Единственным, известным мне, устройством, созданным для этого ПК в 70е годы, является интерфейсная плата для работы с внешним хранилищем данных — магнитофоном. Для подключения внешнего устройства, на основной плате есть один разъём.


Блок питания

Для питания компьютера нужны четыре напряжения. Тут всё просто. Блок питания изготавливался покупателем самостоятельно. +5В, -5В, +12В и -12В. На радиаторе находится стабилизатор на +5В, и он ощутимо греется, поэтому многие пользователи устанавливали на него вентилятор, я не стал изобретать велосипед, и поступил так же. Для этого нужно было отдельно приобрести два понижающих трансформатора, и подключить их к основной плате, на которой уже находились выпрямители и стабилизаторы.

Можно конечно было поставить современный импульсный блок питания, но хотелось тёплого лампового урчания в 50Герц.

Поиск компонентов, сборка и наладка.

Как я писал выше, на поиск компонентов ушло почти 3 года, правда с перерывами. Первой была куплена печатная плата, пролежав примерно год на полке, она начала постепенно обрастать компонентами. Сначала я припаял панельки для микросхем и разъёмы для подключения питания и монитора. Затем все пассивные элементы — резисторы, конденсаторы и диоды. Правда раздобыть оригинальные конденсаторы Sprague не удалось сразу, и вместо них первые пол года стояли обычные современные электролиты.

Побегать пришлось за такими микросхемками: Большую часть микросхем удалось сразу приобрести, более того, у большей их части есть советские аналоги 155-ой серии.

Видео ПЗУ — в нём должна быть записана определённая прошивка, иначе адекватной картинки не будет.
2504V — семь регистров, в которых хранится изображение, выводимое на экран.
2519B — счётчик, используемый для построения изображения, у которого не нашлось аналогов.
8T97 — буферы шины данных, предотвращающие перегрузку шины данных микропроцессора, в прочем им позже нашлась советская замена — К155ЛП11.
ПЗУ с управляющей программой «Монитор».

После того, как все компоненты были найдены, впаяны, или установлены в основную плату, началась сама интересная часть — отладка.

Включаю, смотрю картинку — на экране мусор из случайных символов. Первое включение — щелчок тумблером питания, 5 секунд, выключение — дыма нет, пробки в квартире целы, ничего не загорелось — порядок. Выключаю, жду 5 минут, до полного охлаждения, и такими короткими сериями пытаюсь отлаживать далее на всём протяжении отладки, поэтому этот факт далее не указан. Нажимаю RESET и за ней CLEAR SCREEN (да да, есть и такая кнопка — пользователи тогда были не избалованы модными штучками, а проектировщики считали, пусть пользователь очищает экран, когда ему надо), ничего не происходит — тот же случайный мусор. 
Ко всему прочему, уже начинает подпекать стабилизатор на +5В, по комнате пошёл тёплый ламповый аромат свежесгоревшего толи лака, толи краски с этого стабилизатора.

Если бы всё работало, то после включения компьютера, на экране должна была появиться приветственная заставка в виде чередующихся, мигающих символов "@_" во вcё рабочее пространство монитора, а после нажатия RESET и CS экран должен очиститься, и остаться только курсор для ввода команды управляющей программе «Монитор».

И вот после нескольких дней мучений, я обнаружил, что продавец отправил мне не те аналоги микросхем видеопамяти. Визуальный осмотр и прозвонка цепей формирования изображения и питания ничего не дала. Я вытащил эти регистры из панелек, и на экране ничего не изменилось. У меня стояли 1403А, хотя аналогами являются 1404А. Оригинальные регистры мне обошлись уже около 80$. Продавец свою ошибку признал, и попросил отправить эти регистры ему назад, но так как они стоили не дорого, я не стал с этим возиться. Ждать их пришлось три недели. 
После замены регистров наконец появились долгожданные мигающие собачки (или яблоки, кому как больше по душе), значит видеопамять и вместе с ней весь видеоблок заработал.

Значит не работает микропроцессорный блок. Нажимаю RESET, CS, экран очищается, но курсор не появляется. Тут источников проблем не много — либо процессор, либо ПЗУ, либо мелкая логика в их обвязке.

Первым компонентом, попавшим под следствие стало ПЗУ с «Монитором», так как одна из микросхем ощутимо грелась.

Для управления восьмибитным процессором Возняк поставил 2 такие микросхемы параллельно, получил на выходе нужные 8 бит данных. Немного отвлекусь, скажу, что управляющая программка записана в двух микросхемах памяти, каждая из которых имеет 255 ячеек памяти, а каждая микросхема имеет на выходе только 4 бита. И вся его управляющая программа уместилась в 253 байта (2 байта остались свободными). 

Проверив содержимое ПЗУ, я не нашёл в нём ошибок.  Чтобы прочесть содержимое этой памяти, я собрал на макетной плате устройство на базе Arduino. 
Контроллер последовательно перебирал адреса этих ПЗУ-шек, сливал 4х битные данные в 8-битные и в шестнадцатеричном виде выводил в монитор коммуникационного канала на компьютер.

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

Но этого не происходило. Другого компьютера на базе 6502 у меня нет, поэтому я установил его на макетку, подал на него питание от Ардуинки, тактовые импульсы генератора на 1мГц (от будущего ПК Специалист), на шине данных установил перемычками на +5В или на массу команду NOP, и ждал, что он выполняя пустое действие будет увеличивать значение счётчика адресов. Похоже камень теперь точно камень. Ничего вообще не происходило. Пока он ехал, я успел съездить в отпуск и искупаться в море. Заказал другой, как и положено производства MOS.

Да, можно было получить 1мГц с таймеров Меги, да, можно было и вовсе обойтись без неё, всё это я умею, но тогда хотелось поступить именно так. Тестирование процессора 6502.

Процессорный блок заработал, не прошло и полугода!  После установки нового процессора, включение — привет, собачки — RESET — CS — привет командная строка!

Следующая проблема — у меня не чем было вводить в него команды и код, не было клавиатуры.

Клавиатура

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

Потому я начал думать, как бы подключить к компьютеру имеющуюся у меня PS/2 клавиатуру. 
 
Достать такую клавиатуру в общем то дело пока ещё решаемое, но это как правило число с двумя нулями, и не в отечественных рублях.

За вечер спаял навесным монтажом переходник между PS/2 и ASCII портом и написал под него прошивку. Ничего интереснее, чем Arduino Nano, в голову не пришло. С этого дня не пришлось врукопашную замыкать на плате ножки пинцетом, что очень порадовало. Так как в Apple 1 нет клавиш PgUp и PgDown, я использовал их как кнопки RESET и CLEAR SCREEN.

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


Вид сверху


Вид снизу

Изначально клавиша Return заработала только на половину — она корректно вводила команды в память, и давала указания на их исполнение, но перевод на новую строку не происходил. С клавиатурой приключилась забавная история. Но я решил это дело наладить. В общем то из-за особенностей работы терминала это проблем больших не создавало. Когда же я изучил схему, у меня ни осталось ни единого вопроса в работе аппаратного узла перевода каретки, я сел за тестер и осциллограф. Начал с изучения принципиальной схемы ПК, большую помощь в этом оказал пользователь Mdesk, с zx-pk.ru. Тогда в ход пошёл осциллограф. Прозвонка проводников ничего не дала — все целые. Распутывая цепи дальше, я добрался до одновибратора 74123, нужно было проверить генерируемые им задержки. Я прозвонил входные сигналы с PIA — они были в норме, сигнал где то терялся на 7451N, я пробовал менять её на 7450, и советские аналоги (155ЛР1 и 155ЛР11), эффекта это не дало. Но мой переходник физически закрывает его, что делает прозвонку неудобной.

Тогда я написал тестовую программку
280: A9 8D 20 EF FF A9 31 20 EF FF 4C 80 02
Всё что она делает, это выводит на экран последовательность Return-1-Return-1 (единицы со скроллингом вниз).

Тогда я вынул переходник из панельки, единицы тут же побежали вниз. Запустил её, единицы, как и ожидалось, поехали в строку. После этого раскрутил проблему быстро. Значит причина в переходнике. Очистка экрана (CLR) висела на одной из ног Ардуины, на момент очистки я подавал туда единицу, после отпускания сбрасывал в 0. Кнопки PgUp и PgDown я использую как сброс и очистку экрана. Решение простое — поставил между Ардуинкой и CLR диод, и всё заработало! И этот самый 0 тушил всю линию CLR, а по сути ей пользуется ещё и блок перевода строк.

Работает это так — я закидываю в корень файл с именем dump.hex, и при нажатии клавиши TAB, контроллер считывает содержимое файла и нажимает соответствующие клавиши.  Так как набирать врукопашную килобайтные программы было бы утомительным и не всегда точным занятием, то я придумал подключить к этой же Ардуинке SD-карточку, с которой можно было бы выполнять ввод программ.

Программное обеспечение.

Для Apple 1 не написано много программ, я связываю это со скорым появлением более продвинутого компьютера — Apple 2. И всё же для него есть несколько игр и системных программ. На 30ти летие Apple 1, энтузиасты даже написали довольно большую демку (ссылка внизу). 
Всё это я запустил и посмотрел, но захотелось написать что то своё. Я решил написать для него игру 2048. На написание алгоритма, кодирование (до этого под 6502 не доводилось писать) и отладку ушло 2 вечера. Размер полученной программы составил 1679 байт. Запустить её можно как на оригинальном железе, так и в эмуляторах.

Программа

280: 4C F8 08 20 20 20 20 20
288:20 20 32 20 20 20 34 20
290:20 20 38 20 20 31 36 20
298:20 33 32 20 20 36 34 20
2A0:31 32 38 20 32 35 36 20
2A8:35 31 32 31 30 32 34 32
2B0:30 34 38 01 00 00 00 00
2B8:00 00 00 00 00 00 00 00
2C0:00 00 00 2B 2D 2D 2D 2D
2C8:2D 2D 2B 2D 2D 2D 2D 2D
2D0:2D 2B 2D 2D 2D 2D 2D 2D
2D8:2B 2D 2D 2D 2D 2D 2D 2B
2E0:8D 00 A2 00 A9 8D E8 20
2E8:EF FF E0 24 F0 03 4C E6
2F0:02 60 A9 2B 20 EF FF A9
2F8:20 20 EF FF 60 A9 8D 20
300:EF FF 60 0A 2A A8 A9 00
308:79 83 02 20 EF FF C8 A9
310:00 79 83 02 20 EF FF C8
318:A9 00 79 83 02 20 EF FF
320:C8 A9 00 79 83 02 20 EF
328:FF A9 20 20 EF FF 20 F2
330:02 60 20 FD 02 A2 00 BD
338:C3 02 20 EF FF E8 E0 1E
340:F0 03 4C 37 03 60 20 32
348:03 20 F2 02 AD B3 02 20
350:03 03 AD B4 02 20 03 03
358:AD B5 02 20 03 03 AD B6
360:02 20 03 03 20 32 03 20
368:F2 02 AD B7 02 20 03 03
370:AD B8 02 20 03 03 AD B9
378:02 20 03 03 AD BA 02 20
380:03 03 20 32 03 20 F2 02
388:AD BB 02 20 03 03 AD BC
390:02 20 03 03 AD BD 02 20
398:03 03 AD BE 02 20 03 03
3A0:20 32 03 20 F2 02 AD BF
3A8:02 20 03 03 AD C0 02 20
3B0:03 03 AD C1 02 20 03 03
3B8:AD C2 02 20 03 03 20 32
3C0:03 60 32 30 34 38 8D 8D
3C8:57 2D 55 50 8D 41 2D 4C
3D0:45 46 54 8D 44 2D 52 49
3D8:47 48 54 8D 53 2D 44 4F
3E0:57 4E 8D 8D 43 4F 44 45
3E8:3A 20 44 45 4E 49 53 20
3F0:50 41 52 59 53 48 45 56
3F8:8D 8D 50 52 45 53 53 20
400:41 4E 59 20 4B 45 59 A2
408:00 BD C2 03 20 EF FF E8
410:E0 45 F0 03 4C 09 04 AD
418:11 D0 10 FB AD 10 D0 8D
420:E1 02 60 47 41 4D 45 20
428:4F 56 45 52 59 4F 55 20
430:57 49 4E 20 E2 02 A2 00
438:BD 23 04 20 EF FF E8 E0
440:09 F0 03 4C 38 04 A2 34
448:BD C2 03 20 EF FF E8 E0
450:43 F0 03 4C 48 04 AD 11
458:D0 10 FB AD 10 D0 4C F8
460:08 A0 00 AD E1 02 29 0F
468:AA C8 C0 11 F0 C5 BD B3
470:02 C9 00 F0 0A E8 E0 10
478:D0 EF A2 00 4C 69 04 A9
480:01 9D B3 02 8E E1 02 60
488:A2 00 A9 00 9D B3 02 E8
490:E0 10 D0 F8 A9 01 8D B3
498:02 60 00 00 00 00 00 00
4A0:AE 9F 04 BD 9A 04 C9 00
4A8:D0 14 AE 9E 04 BD 9A 04
4B0:AE 9F 04 9D 9A 04 A9 00
4B8:AE 9E 04 9D 9A 04 60 A9
4C0:03 8D 9F 04 A9 02 8D 9E
4C8:04 20 A0 04 A9 02 8D 9F
4D0:04 A9 01 8D 9E 04 20 A0
4D8:04 A9 01 8D 9F 04 A9 00
4E0:8D 9E 04 20 A0 04 A9 03
4E8:8D 9F 04 A9 02 8D 9E 04
4F0:20 A0 04 A9 02 8D 9F 04
4F8:A9 01 8D 9E 04 20 A0 04
500:A9 03 8D 9F 04 A9 02 8D
508:9E 04 20 A0 04 60 20 E2
510:02 A2 00 BD 2C 04 20 EF
518:FF E8 E0 07 F0 03 4C 13
520:05 A2 34 BD C2 03 20 EF
528:FF E8 E0 43 F0 03 4C 23
530:05 AD 11 D0 10 FB AD 10
538:D0 4C F8 08 AE 9E 04 BD
540:9A 04 C9 00 F0 1D AE 9F
548:04 DD 9A 04 D0 15 A8 C8
550:98 AE 9F 04 9D 9A 04 C9
558:0B F0 B3 A9 00 AE 9E 04
560:9D 9A 04 60 A9 02 8D 9E
568:04 A9 03 8D 9F 04 20 3C
570:05 A9 01 8D 9E 04 A9 02
578:8D 9F 04 20 3C 05 A9 00
580:8D 9E 04 A9 01 8D 9F 04
588:20 3C 05 60 20 BF 04 20
590:64 05 20 BF 04 60 AD B3
598:02 8D 9D 04 AD B7 02 8D
5A0:9C 04 AD BB 02 8D 9B 04
5A8:AD BF 02 8D 9A 04 20 8C
5B0:05 AD 9A 04 8D BF 02 AD
5B8:9B 04 8D BB 02 AD 9C 04
5C0:8D B7 02 AD 9D 04 8D B3
5C8:02 AD B4 02 8D 9D 04 AD
5D0:B8 02 8D 9C 04 AD BC 02
5D8:8D 9B 04 AD C0 02 8D 9A
5E0:04 20 8C 05 AD 9A 04 8D
5E8:C0 02 AD 9B 04 8D BC 02
5F0:AD 9C 04 8D B8 02 AD 9D
5F8:04 8D B4 02 AD B5 02 8D
600:9D 04 AD B9 02 8D 9C 04
608:AD BD 02 8D 9B 04 AD C1
610:02 8D 9A 04 20 8C 05 AD
618:9A 04 8D C1 02 AD 9B 04
620:8D BD 02 AD 9C 04 8D B9
628:02 AD 9D 04 8D B5 02 AD
630:B6 02 8D 9D 04 AD BA 02
638:8D 9C 04 AD BE 02 8D 9B
640:04 AD C2 02 8D 9A 04 20
648:8C 05 AD 9A 04 8D C2 02
650:AD 9B 04 8D BE 02 AD 9C
658:04 8D BA 02 AD 9D 04 8D
660:B6 02 60 AD B3 02 8D 9A
668:04 AD B7 02 8D 9B 04 AD
670:BB 02 8D 9C 04 AD BF 02
678:8D 9D 04 20 8C 05 AD 9D
680:04 8D BF 02 AD 9C 04 8D
688:BB 02 AD 9B 04 8D B7 02
690:AD 9A 04 8D B3 02 AD B4
698:02 8D 9A 04 AD B8 02 8D
6A0:9B 04 AD BC 02 8D 9C 04
6A8:AD C0 02 8D 9D 04 20 8C
6B0:05 AD 9D 04 8D C0 02 AD
6B8:9C 04 8D BC 02 AD 9B 04
6C0:8D B8 02 AD 9A 04 8D B4
6C8:02 AD B5 02 8D 9A 04 AD
6D0:B9 02 8D 9B 04 AD BD 02
6D8:8D 9C 04 AD C1 02 8D 9D
6E0:04 20 8C 05 AD 9D 04 8D
6E8:C1 02 AD 9C 04 8D BD 02
6F0:AD 9B 04 8D B9 02 AD 9A
6F8:04 8D B5 02 AD B6 02 8D
700:9A 04 AD BA 02 8D 9B 04
708:AD BE 02 8D 9C 04 AD C2
710:02 8D 9D 04 20 8C 05 AD
718:9D 04 8D C2 02 AD 9C 04
720:8D BE 02 AD 9B 04 8D BA
728:02 AD 9A 04 8D B6 02 60
730:AD B6 02 8D 9A 04 AD B5
738:02 8D 9B 04 AD B4 02 8D
740:9C 04 AD B3 02 8D 9D 04
748:20 8C 05 AD 9D 04 8D B3
750:02 AD 9C 04 8D B4 02 AD
758:9B 04 8D B5 02 AD 9A 04
760:8D B6 02 AD BA 02 8D 9A
768:04 AD B9 02 8D 9B 04 AD
770:B8 02 8D 9C 04 AD B7 02
778:8D 9D 04 20 8C 05 AD 9D
780:04 8D B7 02 AD 9C 04 8D
788:B8 02 AD 9B 04 8D B9 02
790:AD 9A 04 8D BA 02 AD BE
798:02 8D 9A 04 AD BD 02 8D
7A0:9B 04 AD BC 02 8D 9C 04
7A8:AD BB 02 8D 9D 04 20 8C
7B0:05 AD 9D 04 8D BB 02 AD
7B8:9C 04 8D BC 02 AD 9B 04
7C0:8D BD 02 AD 9A 04 8D BE
7C8:02 AD C2 02 8D 9A 04 AD
7D0:C1 02 8D 9B 04 AD C0 02
7D8:8D 9C 04 AD BF 02 8D 9D
7E0:04 20 8C 05 AD 9D 04 8D
7E8:BF 02 AD 9C 04 8D C0 02
7F0:AD 9B 04 8D C1 02 AD 9A
7F8:04 8D C2 02 60 AD B6 02
800:8D 9D 04 AD B5 02 8D 9C
808:04 AD B4 02 8D 9B 04 AD
810:B3 02 8D 9A 04 20 8C 05
818:AD 9A 04 8D B3 02 AD 9B
820:04 8D B4 02 AD 9C 04 8D
828:B5 02 AD 9D 04 8D B6 02
830:AD BA 02 8D 9D 04 AD B9
838:02 8D 9C 04 AD B8 02 8D
840:9B 04 AD B7 02 8D 9A 04
848:20 8C 05 AD 9A 04 8D B7
850:02 AD 9B 04 8D B8 02 AD
858:9C 04 8D B9 02 AD 9D 04
860:8D BA 02 AD BE 02 8D 9D
868:04 AD BD 02 8D 9C 04 AD
870:BC 02 8D 9B 04 AD BB 02
878:8D 9A 04 20 8C 05 AD 9A
880:04 8D BB 02 AD 9B 04 8D
888:BC 02 AD 9C 04 8D BD 02
890:AD 9D 04 8D BE 02 AD C2
898:02 8D 9D 04 AD C1 02 8D
8A0:9C 04 AD C0 02 8D 9B 04
8A8:AD BF 02 8D 9A 04 20 8C
8B0:05 AD 9A 04 8D BF 02 AD
8B8:9B 04 8D C0 02 AD 9C 04
8C0:8D C1 02 AD 9D 04 8D C2
8C8:02 60 AD 11 D0 10 FB AD
8D0:10 D0 8D E1 02 C9 D7 D0
8D8:04 20 96 05 60 C9 D3 D0
8E0:04 20 63 06 60 C9 C1 D0
8E8:04 20 30 07 60 C9 C4 D0
8F0:04 20 FD 07 60 4C CA 08
8F8:20 88 04 20 E2 02 20 07
900:04 20 E2 02 20 61 04 20
908:46 03 20 CA 08 4C 01 09

Видео работы на youtube.

Что дальше?

В первую очередь корпус, хочется сделать его красивым.

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

Планирую написать для Ардуинки файловый менеджер, который позволит выбирать файл с карты и запускать его. Работа с несколькими файлами.

Хочу спаять для него аудиоплату на К580ВИ53 (просто потому что дома валяется именно этот таймер) и нарисовать небольшую демку со звуком.
Об этом всём, вероятно, будет следующая статья.
 
Я так же приобрёл коннектор для плат расширений.

Заключение

Сказать что я получил большое удовольствие от сборки, отладки и написания программы для Apple 1, это почти ничего не сказать. 

Большое спасибо пользователю Mdesk, и всем ребятам с zx-pk.ru за помощь в разъяснении тонкостей архитектуры, и за полезные советы в наладке этого ПК.

Ну и самая большая благодарность Стиву Возняку за этот замечательный персональный компьютер!!!

Полезные ссылки

Apple 1 на wiki
Загрузка Бейсика на Altair 8800
Apple 1 и современный монитор (три с половиной минуты боли и страданий)
30 лет Apple 1 (демо)
Онлайн эмулятор Apple 1
Онлайн ассемблер/дизассемблер/отладчик 6502

Русскоязычные сайты, посвящённые Apple 1:
mdesk.ru
zx-pk.ru

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть