Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Симулятор Arduino Altair 8800

Компоненты и расходные материалы

Arduino Mega 2560
× 1
Arduino Due
Требуется либо Arduino Mega, либо Due, но не оба сразу!
× 1
LED (общий)
× 36
NPN-транзистор общего назначения
× 36
Резистор 10 кОм
× 36
Резистор 150 Ом
× 36
Мини-переключатель SPDT On-On
Для 16 переключателей адресов (SW15-0) плюс переключатель питания
× 17
Мгновенный переключатель SPDT (On) -Off- (On)
Для переключателей функций (RUN / STOP / EXAMINE ...)
× 8
Металлический лист для основы передней панели
× 1
Bluetooth-модем SparkFun - BlueSMiRF Silver
Необязательно. Подключение его к контактам Arduino TX / RX позволит любому компьютеру или телефону с поддержкой Bluetooth работать в качестве последовательного терминала для эмулируемого Altair.
× 1
карта microSD с адаптером SD-карты
Необязательно. Требуется только для эмуляции дисковода, что не требуется для работы симулятора.
× 1

Приложения и онлайн-сервисы

IDE Arduino
Библиотека Arduino DueFlashStorage
Arduino Due не имеет EEPROM для постоянного хранения, но с помощью этой библиотеки данные можно сохранить в -чип флеш-памяти. Все сохраненное будет удалено при перепрошивке Arduino!
Библиотека Soft_uart Arduino Due
Программная реализация UART, которая позволяет использовать любые выводы в качестве последовательного интерфейса (аналогично библиотеке SoftwareSerial. других платформ Arduino). Файлы из этой библиотеки включены в исходный код симулятора, так как мне нужно было внести небольшие изменения, чтобы интегрировать их в симулятор.

Об этом проекте

Если вы хотите создать это, но вам не нравится идея начинать полностью с нуля, ознакомьтесь с Комплект Криса Дэвиса "Альтаир-Дуино" который приходит с всеми компонентами, печатной платой, корпусом и предварительно запрограммированной Arduino Due!

Вот несколько изображений других авторов, которые создали этот проект и сделали его своим:

  • Алан Лоутер нашел красивый металлический корпус для своей версии и подключил Raspberry Pi для ввода / вывода и синтеза речи.
  • Мартин Цумр сделал действительно красивую коробку из дерева.
  • Крис Дэвис ( kb0wwp ) сделал Печатная плата и красивый чехол.
  • Джастин Дэвис сделал Щит Альтаира для Arduino Due.

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

Долгое время я думал, что было бы здорово поиграть с компьютером Altair 8800. Но рабочие винтажные Альтаеры - редкость и, следовательно, дорогие:они легко могут стоить от 1500 до 2500 долларов, если они вообще есть. Есть и другие варианты, такие как altairclone.com, но они все еще стоят 600 долларов, что для меня слишком много, чтобы тратить их на компьютер, который, хотя и очень крутой, будет иметь ограниченное применение. К счастью, Майк Дуглас, создатель клона Альтаира, предоставил сообществу все старые документы и программное обеспечение, которые он выследил и использовал при создании клона. Благодаря работе Майка, мы получили огромное количество информации о внутреннем устройстве Altair и его наиболее популярных периферийных устройствах.

В какой-то момент я взглянул на спецификации Arduino Mega 2560 и начал задаваться вопросом, хватит ли на нем контактов ввода-вывода, чтобы просто подключить светодиоды и переключатели с передней панели Altair и написать свое собственное программное обеспечение эмулятора. Оказывается, Arduino Mega имеет точно нужное количество контактов ввода / вывода. Так что мне просто нужно было создать своего собственного клона Альтаира.

Использование Arduino Mega для управления симулятором работало нормально, и его было просто настроить, но эмуляция работает только на 25% от скорости Altair и может обеспечить только 6 КБ эмулируемой ОЗУ (хотя в те времена это было бы много. ). Емкость постоянной памяти (для сохранения программ / данных, созданных в симуляторе) также ограничена, поскольку EEPROM Mega содержит только 4 КБ.

Arduino Due имеет достаточно памяти для поддержки 64 КБ эмулируемой оперативной памяти и работает намного быстрее, чем Mega. Кроме того, Due может сохранять данные во флэш-память во время выполнения. Это позволяет использовать любую часть флэш-памяти 512 КБ, не используемую самим симулятором, для постоянного хранения.

Использование Due Теперь у меня есть симулятор Altair 8800, который работает примерно с исходной скоростью, обеспечивает 64 КБ эмулируемой ОЗУ, включает в себя множество программного обеспечения Altair и по-прежнему может предоставить 32 КБ полупостоянного хранилища для загрузки и сохранения программ и данных в эмуляторе.

Моей целью в этом проекте было максимально приблизиться к ощущениям «настоящего» Altair 8800 при работе с симулятором. Это включает в себя то, что подсветка передней панели должна максимально отражать реальное поведение. Одним из критериев для этого было то, что должна быть возможность играть в игру «Kill-the-Bit» на передней панели - и это:

Оказывается, симуляция достаточно верна оригиналу, и даже музыкальная демонстрация Altair 8800 работает. Обратите внимание, что это зависит от AM-радио, улавливающего электромагнитные помехи, создаваемые схемами Альтаира!

В свое время компания Processor Technology выпустила небольшую плату расширения для Altair (всего несколько конденсаторов и резисторов) с сопутствующим программным обеспечением, которое превратило Altair в респектабельную музыкальную систему (для того времени). Такие же дополнения могут быть внесены в Симулятор (см. Документацию), что позволяет проигрывать мелодии, созданные для музыкальной системы того времени. Вот пример:

Еще одним исторически важным дополнением к Altair была графическая плата Cromemco Dazzler. Используя программное или аппаратное расширение, Simulator также может эмулировать эту плату:

Еще одно программно-аппаратное расширение позволяет симулятору эмулировать графическую карту Processor Technology VDM-1:

Конечно, в конце концов, у меня нет оригинального Altair, поэтому вся информация о том, как он работает, должна была быть взята из документов и видео (см. Благодарности ниже). Могут быть некоторые незначительные различия, но в целом я думаю, что он довольно хорошо воспроизводит исходное поведение. Одно известное (и преднамеренное) отличие - это индикатор состояния HLDA:на оригинале он сигнализирует, что ЦП подтвердил остановку внешним устройством. Эта функция никогда не используется в симуляторе, поэтому здесь она сигнализирует, что файл (серийный / магнитный захват / воспроизведение) в настоящее время открыт.

Основные моменты

  • Точно воспроизводит поведение элементов передней панели Altair.
  • Работает примерно с той же скоростью, что и оригинальный Altair 8800 (при использовании Arduino Due), или 25% исходной скорости при использовании Arduino Mega.
  • Размер эмулируемой ОЗУ составляет 64 КБ (срок) или 6 КБ (мегабайт).
  • В эмулятор включен ряд программ Altair, которые можно легко загрузить в эмулятор, в том числе Pong, Altair 4K BASIC (первый продукт Microsoft), Altair extended BASIC, MITS Programming System II (только в срок), Altair Time Sharing BASIC ( позволяет нескольким пользователям одновременно использовать BASIC).
  • Примеры программ BASIC и Assembler включены в программное обеспечение эмулятора и могут быть легко загружены в BASIC / Assembler.
  • Эмулирует одну плату 88-SIO, 88-2SIO и 88-ACR (интерфейс аудиокассетного магнитофона). Каждое смоделированное последовательное устройство можно сопоставить с последовательным интерфейсом Arduino. По умолчанию два наиболее распространенных (88-SIO и 88-2SIO порт 1) сопоставлены с основным последовательным портом Arduino со скоростью 115200 бод 8n1, к которому можно получить доступ через USB-кабель. Я рекомендую подключить адаптер последовательного интерфейса Bluetooth к последовательным контактам RX / TX. Таким образом, любое устройство с поддержкой Bluetooth может служить терминалом для Altair.
  • На Arduino Due можно одновременно использовать как основной последовательный интерфейс (USB), так и интерфейс Serial1 (контакты 18/19).
  • Данные, отправленные на каждое последовательное устройство (включая ленту ACR), могут быть захвачены и воспроизведены в 256 файлах, которые хранятся в локальном хранилище Arduino (EEPROM или FLASH).
  • Кассетный интерфейс поддерживает использование команд CSAVE / CLOAD в расширенном BASIC (поддержка осуществляется автоматически, взаимодействие с пользователем не требуется). Отлично подходит для разработки ваших собственных программ на BASIC!
  • Эмулирует графическую плату Cromemco Dazzler (требуется дополнительное оборудование / программное обеспечение, см. здесь).
  • Эмулирует плату видеотерминала VDM1 с процессорной технологией (требуется дополнительное оборудование / программное обеспечение, см. здесь).
  • Эмулирует до 16 дисков 88-DCDD (4 в конфигурации по умолчанию). Эмуляция дискового накопителя не является обязательной, но требует подключения SD-карты к заголовку SPI Arduino. Поддерживается только при использовании Arduino Due.
  • Эмулирует контроллер жестких дисков 88-HDSK с подключенными до 4 жестких дисков (1 в конфигурации по умолчанию) и 4 пластинами на каждый.
  • Эмулирует плату 88-RTC-VI с часами реального времени и обработкой векторных прерываний. Это позволяет использовать Altair Time Sharing Basic.
  • 256-байтовые страницы памяти можно сохранять в постоянное хранилище и загружать обратно в память. Это обеспечивает простой способ сохранения программ, введенных с помощью переключателей на передней панели.
  • Многие настройки можно легко изменить с помощью встроенного редактора конфигурации.

При использовании Due имейте в виду, что все, что было захвачено или сохранено в симуляторе, будет стерто, если вы загрузите новую версию эскиза в Due. Это связано с тем, что сохраненные данные хранятся во флэш-памяти, которая стирается при загрузке нового скетча (у Due нет EEPROM для постоянного хранения). Если SD-карта подключена к Due, сохраненные данные хранятся на SD-карте. В этом случае данные не потеряются при загрузке нового скетча.

Документация

Поскольку симулятор работает точно так же, как Altair 8800, оригинальная документация Altair (которую легко найти в Google) предоставит всю информацию, необходимую для управления переключателями на передней панели.

Тем не менее, симулятор включает в себя ряд дополнительных функций и встроенное программное обеспечение для Altair, которые доступны через переключатели AUX1 / AUX2 на передней панели (они были включены, но не использовались на оригинальном Altair). Эта функциональность объясняется в отдельном документе, который я написал при разработке программного обеспечения для симулятора. Документ состоит из многих страниц, и информация, содержащаяся в нем, перегрузит эту страницу, поэтому, пожалуйста, обратитесь к файлу Documentation.pdf в исходном репозитории.

Инструкции по сборке

Одна из целей состояла в том, чтобы использовать как можно меньше схем поддержки. И Arduino Mega, и Due имеют достаточно контактов ввода-вывода для прямого подключения всех элементов передней панели. Единственная необходимая дополнительная схема - это транзисторы и резисторы для управления 36 светодиодами (если бы светодиоды были подключены непосредственно к выходным контактам Aruino и слишком много включалось одновременно, общий ток превысил бы ограничения Arduino).

Создание полных схем для этого проекта было бы утомительным, повторяющимся (36 идентичных схем светодиодных драйверов, проводка для 32 переключателей) и не очень полезно. Таким образом, документ схемы вместо этого содержит подробные таблицы о том, какие элементы подключаются к каким контактам Arduino, и схемы для отдельных подсхем (например, драйверов светодиодов). Я также добавил файл Fritzing, чтобы показать расположение компонентов драйвера светодиода на плате.

Чтобы создать переднюю панель, я начал с высококачественного сканирования передней панели Altair (можно найти здесь, на сайте www.vintage-computer.com) и распечатал его в копировальном магазине на картоне. В качестве основы (чтобы удерживать переключатели и светодиоды на месте) я использовал лист металла 22 калибра, используя обычную дрель, чтобы проделать отверстия для светодиодов и переключателей. Цепи драйверов светодиодов припаяны к кускам монтажной платы, которые припаяны непосредственно к светодиодам, которые, в свою очередь, удерживаются на месте металлическим листом.

Передняя панель удерживается на месте и в вертикальном положении с помощью простого деревянного ящика. Коробка не такая глубокая, как у оригинального Altair (потому что она должна удерживать только переднюю панель и Arduino).

Чтобы подключить переключатель включения / выключения на передней панели, я просто добавил к коробке розетку (такую ​​же, как на самой Arduino), подключил ее к переключателю на передней панели, а оттуда - к вилке питания, которая подключается к Arduino.

При использовании Arduino Due можно включить эмуляцию до 16 дисководов 88-DCDD, подключив SD-карту к порту SPI Due. На последней странице документа «Схема» подробно показана необходимая проводка.

Перед загрузкой скетча в Arduino Due обязательно переключите настройку оптимизации компилятора Arduino на «производительность». По умолчанию он установлен на «размер» (не уверен, почему, поскольку у Due 512 КБ флэш-памяти). Для этого загрузите файл

c:\ Users \ [пользователь] \ AppData \ Local \ Arduino15 \ packages \ arduino \ hardware \ sam \ 1.6.9 \ platform.txt

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

Программное обеспечение симулятора также может работать на простом Arduino (Mega или Due) без подключения каких-либо элементов управления на передней панели. Это позволяет запускать довольно много включенных программ (те, которые в основном используют последовательный терминал, а не элементы передней панели). Для этого отредактируйте config.h исходный файл и установите #define STANDALONE 1 (вместо 0). Обратитесь к разделу «Возможности отладки» в документации, чтобы узнать, как работать с элементами виртуальной передней панели в этой настройке. Однако имейте в виду, что симулятор не используется по назначению. Я предлагаю использовать программные эмуляторы на базе ПК, если вы не хотите создавать оборудование для передней панели. Файл config.h Исходный файл содержит ряд переключателей, которые включают / исключают функциональность симулятора. Настройки по умолчанию работают хорошо, но если вы хотите настроить симулятор, это место для начала.

Благодарности

Поскольку у меня самого нет Altair, мне приходилось полагаться на информацию из Интернета. Обучающие видео по Altair 8800, созданные Майком Дугласом (deramp5113) с altairclone.com, очень помогли, и их очень интересно смотреть. Помимо создания видеороликов, Майк собрал множество руководств по аппаратному и программному обеспечению, связанных с Altair, и разместил их на своем сайте.

(Обратите внимание, что видеоролики Майка очень полезны, чтобы получить представление о том, что делать с симулятором после его сборки)

Инструмент Мартина Эберхарда ADEXER оказался бесценным для низкоуровневой отладки поддержки жесткого диска. Он также написал два загрузчика, используемых в симуляторе:загрузчик с комбинированным диском (CDBL) для загрузки дисков и мини-дисков, а также загрузчик с жесткого диска (HDBL), который короче и стабильнее оригинала.>

Хотя я сам написал весь код, включая эмуляцию процессора, я черпал вдохновение из проекта базовой модели i8080, когда дело дошло до эффективного вычисления полупереноса и инструкции DAA.

Симулятор включает в себя оригинальное программное обеспечение для Altair 8800. Еще одно большое спасибо Майку Дугласу, который провел бесчисленные часы, выслеживая, собирая и заставляя это программное обеспечение работать, а затем разместил все это на своем веб-сайте altairclone.com:

  • Altair 4K BASIC (MITS 1975)
  • Altair Extended ROM Basic (MITS 1975)
  • Altair Time Sharing Basic (MITS 1977)
  • Игра Kill-the-Bit (Дин МакДэниел, 1975 г.)
  • Игра в понг с использованием передней панели (Майк Дуглас)
  • Музыка "Дейзи, Дейзи ..." (Стив Домпье, 1975 г.)
  • Музыкальная система (процессорная технология 1977 г.)
  • Система программирования MITS II (MITS 1976)
  • Монитор под ключ Altair (MITS 1977)
  • Диагностика ЦП i8080 (Microcosm Associates, 1980).
  • Программа-тренажер для процессора i8080 (Фрэнк Д. Крингл, 1994 г., Ян Бартоломью, 2009 г.)

Образы дисков и жестких дисков (находящиеся в подкаталоге disks исходного архива) также были взяты с altairclone.com и deramp.com (личный веб-сайт Майка Дугласа). К ним относятся CP / M, различные версии дискового BASIC, Altair DOS (включая Fortran) и многое другое. Опять же, Майк проделал потрясающую работу, обнаружив все это программное обеспечение, а затем создал работающие образы дисков, которые могут использоваться сообществом Altair. Я использовал только избранные программы, так что вы можете перейти на altairclone.com или deramp.com и проверить еще кое-что.

Дискуссионный форум

Крис Дэвис из Altairduino.com создал группу Google для обсуждения вопросов, связанных с Альтаир-Дуино:

https://groups.google.com/forum/#!forum/altair-duino

Не стесняйтесь посещать и участвовать в обсуждении!

Код

Код симулятора Arduino Altair 8800
https://github.com/dhansel/Altair8800

Схема

Вместо предоставления полной схемы (очень повторяющейся) в этом документе описывается, какие контакты для подключения к каким элементам передней панели, и представлены схемы для подсхем (например, схем драйверов светодиодов). Попытка показать компоновку монтажной платы, к которой подключены светодиоды. к. Там немного людно, но должно быть достаточно, чтобы увидеть, как все взаимосвязано. Важно, чтобы компоненты каждого светодиода занимали не более 5 мест на плате. Таким образом светодиоды могут быть расположены достаточно близко друг к другу, чтобы передняя панель имела исходный размер. ledstrip_4OVCpRyKQS.fzz

Производственный процесс

  1. ЖК-панель с Arduino для симулятора полета
  2. Arduino Spybot
  3. FlickMote
  4. Самодельный телевизор B-Gone
  5. Основные часы
  6. Найди меня
  7. Arduino Power
  8. Tech-TicTacToe
  9. Четвероногий Arduino
  10. Джойстик Arduino