FPGA археологія

Це стаття про репліки FPGA ретро-комп'ютерів 70-х і 80-х років 20 століття. Дослідження архаїчних систем називається комп'ютерною археологією. Головна проблема колекціонування побутової електроніки того часу — це ветхість обладнання. Конденсатори здуваються, пливуть стародавні РК-дисплеї, окислюються контакти, перестає працювати практично все. Софтверні емулятори (зазвичай розташовані на базі 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, для яких створюються плати, які можна купити та замовити. Тиражі колекційні, як і весь ретро-комп'ютер. Відновлення цієї колекції вам обійдеться в тисячі євро.

ZX Spectrum 48K+ на ZX UNO XL

ZX - це справжній народний простий комп'ютер, який кожен міг спаяти самостійно, його схеми ходили в журналах, на відміну від Японії, Іспанії, де переважали більш потужні версії MSX з графічним відеопроцесором VDP, ZX був розповсюджений в іншій Європі. Це самий простий комп'ютер, приблизно рівня Apple II. Навіть Commodore C64/6502 вважався просунутою мультимедійною платформою, у відмінності від більш народної ZX/Z80. Цей процесор настільно народний, що довго ставився ще в клавіатурі, калькуляторах, телефонах і ставиться до цих пор. Аналоги за номенклатурою Intel — це 8080, 8085.

Що сказати, любителям спартанської платформи ZX повезло, у них існує культова плата ZX UNO XL (Issue 4) (випуск 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, які за стандартом були прошиті в кожному ПЗУ, є механізм колізії спрайтів і апаратний бітблітінг і управління спрайтами. Писати іграшки было простіше. Моя улюблена гра на 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 прекрасно можна використовувати для створення ОС, рантаймів і своїх бібліотек для 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 (Маріо, Донкі Конг). У 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.

Nintendo Super Famicom на Super Nt

Це другий продукт компанії Analogue для емулювання SNES. Jailbrake версія не може грати в певні ігри з розширеними мікросхемами, які може грати FXPAK. Зокрема, джейлбрейк не може запускати SA-1, S-DD1, SPC7110, Super FX GSU-1 і Super FX GSU-2, але FXPAK може запускати всі, крім SPC7110. Сподіваємось, сумісність з SPC7110 буде додана до FXPAK, це вже досягнуто для ядра MiSTer SNES. Джейлбрейк Super Nt може запускати єдину гру ST-011, Hayazashi Nidan Morita Shougi, але FXPAK не може. Хоча джейлбрейк не може запускати S-DD1, найвідомішою грою S-DD1 є Star Ocean, і тут, на romhacking.net, доступний патч, який можна застосувати до англійського перекладу, що робить її доступною через джейлбрейк.

FXPAK може виконувати збереження станів для ігор SNES, за винятком тих, що використовують певні мікросхеми покращення, і він має ядро Super Game Boy 2 FPGA, тому може запускати всі ігри Game Boy та Game Boy Color, які може Super Game Boy 2. Одна перевага прошивки Super Nt jailbreak над FXPAK полягає в тому, що під час гри можна викликати меню налаштувань Super Nt, щоб увімкнути або вимкнути чіти. Тому для більшості ігор, де ви не плануєте використовувати збереження станів, краще скористатися саме цією прошивкою.

Повний перелік картріджів SNES, які не можна запустити в jailbrake, тому що ядра не підтрмують додаткові чіпи (S-DD1; FX-V1; FX-V2; SETA DSP1; FX-GSU-1; SA-1):

SA-1:

Augusta Masters 3 New World Golf (J)
Bass Fishing No.1 (US)
Derby Jockey 2 (J)
Idaten (J)
Igo Daidou (J)
J-League '96 Dream Stadium (J)
Jumpin' Derby (J)
Kakinoki Shogi (J)
Kato Hifumi9dan Shogi (J)
Kirby 3 (J)
Kirby Super Deluxe (J)
Kirby Super Star (US)
Kirby's Dream Land 3 (US)
Kishi no Hanamichi (J)
Marvelous (J)
Masoukishin - Super Robot Wars Gaiden - Lord of Elemental (J)
Mini Yonku Shining Scorpion Let's & Go!! (J)
Parodius 3 - Jikkyou Oshaberi Parodius (J)
Pebble Beach New Tournament Edition (J)
PGA European Tour (US)
PGA Tour 96 (E)
PGA Tour 96 (US)
Saban's Power Rangers Zeo Battle Racers (US)
SD F1 Grand Prix (J)
SD Gundam GNext (J)
Shogi Saikyou 2 (J)
Super Mario RPG (US)
Super Mario RPG (J)
Super Shogi 3 (J)
War in Europe Expert WW II (J)

SA-1 (ID=52)

Dragon Ball Z - Hyper Dimension (J)
Igo Taisyou (J)
New Shogi Club (J)
Shogi Mahjing (J)
Super Bomberman Panic Bomber World (J)

PLGS (SPC7110 - ROM types 0xF5 & 0xF9)

Dai Kaijyu Monogatari 2 (J)
Far East of Eden Zero (J)
Large Shell Beast Story 2
Super Power League 4

FX GSU-1 (FX-Argonaut)

Dirt Racer (Europe)
Dirt Trax FX (Europe)
Dirt Trax FX (US)
Power Slide (Europe) (Proto) (1994-04-12)
Star Fox (Japan)
Star Fox (USA)
Starwing - Competition (Europe)
Starwing - Competition (Germany)
Starwing (Europe)
Starwing (Germany)
Stunt Race FX (Europe)
Stunt Race FX (USA)
Super Star Fox Weekend (USA)
Vortex (Europe)
Vortex (Japan)
Vortex (USA)
Wild Trax (Japan)
Doom (J)
Doom (US)

Seta ST010 (SETA DSP1)

2 Dan Morita Shougi (J)
Exhaust Heat 2 (J)
F1 Roc 2 - Race of Champions (US)

FX GSU-2 (FX-V2)

Doom (Europe)
Doom (Japan)
Doom (USA)
Star Fox 2 (Japan)
Star Fox 2 (USA)
Super Mario - Yossy Island (Japan)
Super Mario World 2 - Yoshi's Island (Europe)
Super Mario World 2 - Yoshi's Island (USA)
Winter Gold FX (Europe)
Stunt Race FX (E)
Stunt Race FX (US)
Wild Trax (J)

S-DD1

Star Ocean (J)
Street Fighter 2 Alpha (US)
Street Fighter 2 Alpha (E)
Street Fighter Zero 2 (J)
Street Fighter Zero 2 (J) (Proto) (1996-09-15)

Повний перелік SNES ігор можна подивитися на сторінці SNES.5HT.CO

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.

Analogue Pocket

Analogue Pocket з'явився в мене в 2025 році. Це другий пристрій в цьому списку після Mega Sg від компанії Analogue, який є авторським баченням FPGA репліки Nintendo Game Boy. Взагалі Analogue -- це більше ніж просто пристрої компанії, -- це комюніті, яке розробляє ядра платформ, що емулюються, а також SDK і фреймворк для розробки довільних платформ з базовими елементами, з яких складаються ретроконсолі і ретрокомпікі.

Як пише Arstechnica в статті "Pocket 1.1 update: We’re not f-ing around", коли Крістофера Тейбера (Analogue CEO) запитали про доцільність «легких» портів із сімейства ядер MiSTer на OpenFPGA від Analogue, сказав, що «на нашу думку, кожне існуюче ядро FPGA третьої сторони має працювати на Pocket». Тейбер сказав, що кілька вибраних розробників були запрошені для тестування та створення контенту на попередній версії OpenFPGA SDK, і він стверджував, що «ми бачили, як початкові розробники портували свої ядра за кілька днів або менше». Отже, це можливо, але це не автоматично. На жаль, Тейбер відмовився надіслати нам будь-яке з цих попередніх ядер для тестування на нашому Analogue Pocket, щоб підтвердити свої заяви. Однак після статті в Арстехніці 30 липня 2022 офіційно вийшла прошивка, яка здатна запускати ігри не тільки з Картріджів, але і з SD карти. Перелік ядер які емулюються на VHDL/Verilog додається.

Хоча плати DE-10 Nano, які використовуються в MiSTer, оснащені більш потужними чіпами Altera Cyclone, ніж ті, що є в Analogue Pocket, Табер неодноразово вказував на відсутність у них «відповідної оперативної пам’яті, включеної або доданої ззовні». Об’єднані пули оперативної пам’яті Pocket включають 0,425 МБ пам’яті BRAM на більшій мікросхемі Cyclone V, 32МБ оперативної пам’яті стільникового зв’язку, 64 МБ синхронної DRAM і 256 КБ асинхронної SRAM.

Головний розробний всіх openFPGA пристроїв Analogue — Кевін 'Kevtris' Хортон.