FPGA археология

Это статья об FPGA репликах ретро-комптьютерав 70-х и 80-х годов 20 века. Исследование архаичных систем называется компьютерной археологией. Главная проблема коллекционирования бытовой электроники того времени — это ветхость оборудования. Конденсаторы вздуваются, плывут древние LCD дисплеи, окисляются контакты, выходит из строя практически всё. Софтверные эмулятры (обычно строящиеся на базе Raspberry Pie) не достаточным образом вдохновляют коллекционеров, хочется владеть полной репликой древнего микропроцессора, пускай даже в VHDL виде. Поэтому заслуженную популярность взыскали проекты по воссозданию SoC (полной реплики не только процессора, но и его периферии, совместимой с современными мониторами, клавиатурами и мышами) для FPGA процессоров (Altera, Xilinx, Intel) которые реализуют популярные игровые платформы демосцены прошлого.

В качестве примера, какие процессоры входят в мои сферу интересов, как коллекционера, я бы привел следующие платформы: Apple II/ПРАВЕЦ-8, Sega, NES, Atari 2600/800XL/ST, MSX2+/КУВТ2, C64, ZX, 8085, HC08, HC016, PDP-11/БК-0010. Здесь же, в статье хочу расскать об одном испанском магазинчике древних реплик на FPGA, и других проектах, которые я бы рекомендовал как направления или продукты, для которых существует много софта, и даже некоторые актуальные проекты энтузиастов. Я прощупал немного — олды еще не умерли и паяют все для детей, чтобы, во-первых, те имели возможность учить электронику по отцовским лекалам, а во-вторых, получали замечательный образовательный инструмент со своей минималистичной средой разработки для 8-битных и 16-битных процессоров, который покрывает максимально количество платформ для экспериментов. Рекомендую такой практический курс по электронике украинских для школ, 9-11 классов. Просто на первом курсе уже пора напрямую управлять NVMe контроллером из юзерлэнда, поэтому можно было бы и с 5-го начать, лучше с этим не затягивать.

Итак, я хочу рассказать о моей коллекции FPGA реплик ретро-компьютеров: 32-битный Atari Falcon, 8-битный Commodore C64, 16-битный SEGA Genesis, 16-битный DEC PDP-11/70, MSX-компьютер Sony HB-F1XV HitBit MSX2+, легендарный Sinclair Research ZX Spectrum 48K+ (в порядке убывания цены); находящихся в открытом доступе для прошивки на FPGA чипы, для которых существую платы, которые можно купить и заказать. Тиражи коллекционные, как и весь ретро-компьютинг. Воссоздание этой коллекции вам обойдется в 1000 евро.

ZX Spectrum 48K+ на ZX UNO XL

ZX это настоящий народный простой комптьютер, который каждых мог спаять самостоятельно, его схемы ходили в журналах, в отличие от Японии, Испании, где превалировали более мажорные MSX версии с графическим видеосопроцессором VDP, ZX был распотранен в остальной Европе. Это самый простой компьютер, приблизительно уровня Apple II. Даже Commodore C64/6502 считалась продвинутой мультмедиа платформой, в отличии от более народной ZX/Z80. Этот процессор настольно народный, что ставился долгое время еще в клавиатуры, калькуляторы, телефоны, и ставится до сих пор. Аналоги по номенклатуре Intel — это 8080, 8085.

Что сказать, любителям спартанской платформы ZX повезло, у них существует культовая FPGA плата ZX UNO XL (Issue 4) на Xilinx Spartan XC6SLX9 стоимостью всего 100 евро, которая кроме самой платформы ZX Spectrum 48K поддерживает также Sam Coupe, Jupiter ACE, Apple II, VIC 20, Sega Master System, NES, Atari 800XL, MSX1, C64 и еще парочку. Такой богатый набор эмулируемых платформ ставит эту плату в топ обзора. Более того эта плата подходит в оригинальные корпуса ZX Spectrum 48K — я думаю это максимальный подарок.

Sony HB-F1XV MSX2+ на SX-1

Первые MSX Yamaha я увидел в Каменце-Подольском, в педагогическом университете. В городе был завод Электроника всесоюзного значения, поэтому дети работавших там инженеров интересовались компьютерами. В городе были Sony и КУВТ2 версии MSX. Были компьютерные клубы, во дворе у двоих были самособраные ZX спектрумы, у меня был Atari 800XE (7-й класс), в клубах были корветы с сервером на БК. В школе учителя писали самопалтные сетевые протоколы. Все клоны геймбоев можно было купить чуть ли не в магазине где продавали спининги. Про архитектуру MSX мне впервые рассказали в 9-м классе, когда у меня уже был 486. С 4-го класса у нас прямо домашнем классе стоял ряд ПРАВЕЦ-8, а начиная с 5-го был допуск к классу IBM PC/AT 286 (В основном меня интересовали F1, Prince of Persia, LHX, Turbo Pascal 5.5).

ZX спектрумские игрушки не были такие продвинутые, как MSX из-за наличия аппаратного графического сопроцессора на платформе MSX, что превращало его в реальную двухпроцессорную консоль. Графический процессор VDP умел аппаратный Брезенхем, бит-блиттинг, вертикальные и горизонтальные копи и сканы, и другие штуки. MSX — это один из японских стандартов на компьютеры, такой как PC, которым стал IBM PC/XT или стандарт на ОС реального времени TRON. Yamaha, Panasonic, Sony, Philips, все это на eBay стоит от $500. Konami Metal Gear Solid первый был написан для MSX. Не знаю, что делали игровые консоли КУВТ2 в университетах, но именно там мой учитель программирования учился писать игрушки, так как в Microsoft BASIC-MSX, который по стандарту был прошит в каждый ROM, есть механизм колизии спрайтов и апаратный битблитинг и управление спрайтами. Писать игрушки было проще. Моя любимая игра и на Atari и на MSX и на Z80 — это Montezuma's Revenge, доступна в эмуляторе webmsx.org.

Команды Yamaha VDP-V9938
КомандаОписаниеРегистры
HMMCFill VRAM From CPU36-46
YMMMFast Copy (Y axis)34-39,42-26
HMMMFast Copy32-46
HMMVFill36-46
LMMCLogical Fill VRAM From CPU36-46
LMCMLogical transfer data to CPU32-35,40-46
LMMMLogical Vram to VRAM32-46
LMMVLogical Fill36-46
LINELine36-46
SRCHSearch (X axis)32-36,44-46
PSETPset36-39,44-46
POINTRead Point32-36,44-46
STOPAsync Cancel46
Формат команды VDP-V9938
CMDARGCOLORNUM-YNUM-XDST-YDST-XSRC-YSRC-X
46454442-4340-4138-3936-3734-3532-33

С 2000 года один немец разрабатывает операционную систему SymbOS для всех 8-битных платформ, в том числе понятно и для MSX, заметьте, что начал он это после смерти пллатформы и делает вроде как до сих пор. Если сравнивать SymbOS с Atari TOS, DeskView, Windows 1 или даже с Palm, то вполне ниче, есть WGET, NETSTAT! Все наркоманы, которые до сих пор на этом пишут, понятное дело живут в Нидерландах http://map.grauw.nl/articles/. ОС можно прямо сейчас запустить в эмуляторе WebMSX по прямой ссылке https://webmsx.org/symbos/. Small Device C Compiler прекрасно можно использовать для создания ОС, рантаймов и своих библиотек для MSX/Z80, но многие пишут на чистом ассемблере, которых тоже есть несколько. Под эту платформу существует dBase II, Turbo Pascal 3.0, CP/M, и несколько DOS-ов и файловых менеджеров. В качестве единственного ресурса по программированию ретро-процессоров я рекомендую assemblytutorial.com.

В качестве FPGA реплики MSX я выбрал себе материнскую плату SX-1 формата Mini-ITX с FPGA чипом Altera, которую производят испанские ребята из 8bit4ever. Работает с PS/2 и USB клавами, SD, картриджи, VHD фирмвари опен соурсные. Стоимость 130 евро.

DEC PDP-11/70 на Arty A7

К сожалению бренда, который бы продвигал культовый PDP-11/70 нет. Делают какие-то дети игрушки на Raspberry Pie, но как мы уже отметили, полного удовлетворения такая система не приносит. Поэтому в даном случае мы будем рассматривать плату Digilent Arty A7 на базе FPGA процессора XC7A35 ($130) или XC7A100 ($250), который совместим с опен-соурсной VHDL версией PDP-11/70 github.com/wfjm/w11. VHDL реализует почти всю периферию (кроме FPU) — это позволяет плате запускать первые UNIX: System V и 2.11BSD, а также оригинальные операционные системы DEC: RT-11 и RSX-11M. Для этих систем были написаны первые компиляторы С, и колоночная БД MUMPS, которая получила ISO стандартизацию. Существовали советские клоны PDP-11 БК-0010, клон RT-11 ОС ДЕМОС и клон MUMPS система ДИАМС.

Не стоит думать, что наличие UNIX поможет развернуться, это не современная Ubuntu, в 16-битной системе окружение будет спартанским и напоминать органичения 8-битных систем. Зато увидите как олды работали.

Для любителей минимализма существует PDP-11/70 на Intel Cyclone:

SEGA Genesis на Mega Sg

Бедная SEGA пережила несколько фейлов перед ставшими легендарными SEGA MegaDrive/Genesis, которые воплощены в FPGA компанией Analogue. Так в 1983 году SEGA вышла с SG-1000, в тот же день, что и гораздо более мощная NES (Mario, Donkey Kong). В 1986 году SEGA выпустила Master System, в то время как у Nintendo был уже Super Mario. В итоге SEGA решила выпустить Genesis полностью на 16 битной платформе: память, процессор, видео. На Genesis были такие игрушки как Mortal Kombat (1992), Sonic The Hedgehog (1991), Super Monaco GP (1991), Street Figher (1992), Dune: The Battle For Arrakis (1994), Lemmings (1992), Flashback: The Quest for Identity (1993), Virtua Racing (1994). В 1994 SEGA удалось сравнять продажи с Nintendo. SEGA Dreamcast на SH-4 была третим и последним фейлом SEGA.

Commodore C64 на Mega65

C65 — это обновленая версия Commodore 64, которая появилась на закате и не успела выйти на рынок. Museum of Electronic Games & Art собрал достаточное количество средств и уже доступны заказы на дорогие ($1K) наборы для разработчиков (DevKit) воссоздания в FPGA не только C64, но и невыпущеного C65. В скором времени верится в ожидание запуска потребительского продукта. Документация в TeX, хорошо документована структура VHDL модели — все на GitHub, отличный сайт — mega65.org. Сама платформа MEGA65 предполагает в дальнейшем поддержку ATARI ST и AMIGA.

Atari Falcon на FireBee

Классические 8-битные Atari были построены на процессоре MOS 6502, том же, что и Commodore 64, Apple II и ее болгарский клон ПРАВЕЦ-8. Атари воевала в то время на рынке с Commodore, который поставлял чипы для калькуляторов, и с 1981 по 1983 сборсила цену на 800 серию почти в 9 раз. В 1985 Atari перешла на 32-битные процессоры Motorola 68K и платформу Atari ST. Atari Falcon — это апогей этой платформы, вополщенный в Atari FireBee на базе процессороа Motorola Coldfire 264MHz. Хотя центральный процессор не эмулируется, на плате расположен FPGA Altera Cyclone с помощью которого эмулируется оригинальная периферия Atari.

FPGA Плата FireBee (560 евро) поддерживает почти все ОС которые существовали для Atari ST и еще своих докидывает: MultiTOS, MagiC, EmuTOS, Atari TOS, Geneva; а также графические среды: GEM, XaAES, FreeMiNT.