На EP8266 можно эмулировать «Радио-86РК», но до микропроцессора 8080 был 8008, о котором сегодня ретрокомпьютерщики вспоминают реже. Его тоже удалось эмулировать на этой платформе и запустить интерпретатор Бейсика SCELBAL.
В проекте автор объединил два своих же предыдущих. Первый — эмулятор 8008 на той же платформе, но без видеовыхода, а второй — так и не доведённый до рабочего состояния (не хватило ОЗУ) эмулятор IBM PC XT с видеовыходом. Взяв из второго проекта код реализации видеовыхода, автор добавил его в первый, получив прошивку для предлагаемого устройства.
Схема его показана ниже:
Эта же схема же в PDF — здесь. Режим взаимодействия через последовательный порт, унаследованный из первого проекта, сохранён, для выбора между портом и видеовыходом предусмотрен переключатель на два положения и два направления. Когда выбран видеовыход, ввод данных происходит с PS/2-клавиатуры. Собранная конструкция у автора выглядит так:
Автор также подключил к устройству свой же перфосчитыватель (тот из двух вариантов, который меньше размерами), но не обновил схему. Так выглядит конструкция вместе с перфосчитывателем:
Alyoshka1976
Интересно предназначение конденсатора C2! Хотя номиналы резисторов в делителе видеовыхода тоже довольно необычные.
x86128
Чтобы удалить низкочастотную составляющую сигнала и не спалить выход.
Alyoshka1976
Мой интерес не праздный — у меня есть похожий в некотором смысле проект, в котором 328-я мега в формате Arduino Nano R3 эмулирует компьютер на i8080 с видеовыходом. Сакральный смысл удаления постоянной составляющей мне остался непонятен. А сжечь выход не дадут 120 Ом делителя.
tormozedison Автор
Расскажите о нём.
Sly_tom_cat
Люто плюсую — очень интересно узнать о проекте на Arduino!
Alyoshka1976
В первоначальной версии Nano использовалась для эмуляции системы команд i8080, а SD-карточка — для эмуляции ОЗУ (с системой кэширования для ускорения доступа) и НГМД (хранит образы дискет), общение было через последовательный порт.
Во второй версии Nano не только эмулирует процессор, но и занимается видеовыводом (можно подключить к композитному входу ТВ). При этом я таки отказался от эмуляции RAM через SD в пользу I2C-чипов памяти (два чипа = 64 Кбайта). Малая STM-ка работает как преобразователь PS/2-Serial и позволяет подключать PS/2-клавиатуру. Можно теоретически было заморочиться с регистрами сдвига etc, чтобы отказаться от STM-ки, но я решил, что это уже слишком.
Концепция видеовывода близка к раннему творению сэра Клайва ZX80, я даже попытался ускорить работу путем гашения экрана, если долго не требуется реакция пользователя. Сама реализация видеовывода потребовала от меня постичь дао обработки прерываний, так как прерывание может приключиться в середине машинного цикла, и если не заморочиться, то в разных строках экрана символы будут сдвинуты друг относительно друга. Да и дао системы команд AVR пришлось постичь, чтобы выводить побольше символов на экран.
Проект был в suspend mode около года, но завершение FoxyPI и эта статья (спасибо!) подвигли меня на размораживание cpm4nano.
Вот сейчас сделал скриншот экрана ТВ :-) с загруженной операционной системой CP/M, выполненными командой просмотра директории DIR и теста процессора:
Работает это поделие, конечно, не быстро, но для игры в STARTREK (текстовую пошаговую космическую игру) хватает. Да и не рассчитывал я на скорость, фан здесь для меня в другом, хотя все это, конечно, субъективно.
Sly_tom_cat
Может стоит статьей это оформить?
Добавить немного схемотехники и самое то!