FPGA development |
TMC-20 multicore board
Indulási alapfeltételek:
- FAT32-re formázott SD kártya, amely tartalmazza a lentebb részletezett gwc2a rendszerkönyvtárat, abban a mag fájlokat.
- HDMI kábel vagy RGB kimenet esetébe RGB-Scart kábel (csak a támogatott magokhoz)
- Szabványos USB billentyűzet
- +5V/1A DC szabályozott tápfeszültség*
- C64/Atari joystick vagy NES kontroller** (famiclone controller)
** A NES kontrollerek csatlakoztatásához egy egyedi kábelre van szükség, lásd lentebb.
Amennyiben a feltételek adottak, induláskor az alábbi bejelentkező képernyő fogadja a felhasználót.
A különböző gépek FPGA konfigurációs fájljait (magokat) a gwc2a könyvtárba kell tenni az SD kártyán. Induláskor a gép a beégetett maggal indul, ami a menü. A gwc2a könyvtárban elhelyezett mag fájlok (cbn, compressed binary) tartalmazzák a különböző rendszereket implementáló FPGA kódot.
Rendszer | A mag neve (a gwc parancshoz) |
ZX Spectrum 48 | zx48 |
ZX Spectrum 128 | zx128 |
Videoton TVC 64k | tvc |
Primo A64 | primo |
HT1080Z 64k | ht |
Homelab 3/4 | hl3 |
Homelab 2/Aircomp 16 | hl2 |
Commodore VIC 20 | vic20 |
Commodore 16/+4 | c16 |
Commodore 64 | c64 |
Nintendo Entertainment System | nes |
Ugyancsak a gwc2a könyvtárban helyezkedik el a cores.txt fájl, ami egy egyszerű strukturált szöveges fájl a menü mag számára, innen olvassa fel a menü az elérhető rendszerek listáját és azok tövid leírását. A menüben a kurzor billentyűkkel lehet navigálni, a kiválasztott mag az ENTER lenyomásakor indul. Minden mag betöltése és indulása pár másodpercet vesz igénybe, ilyenkor video kimenet nincs. Lehetőség van az aktív magon magán is váltani szöveges módon, lásd lentebb a gwc parancsot.
Működő magok esetében az alábbi billentyűk közösek:
- F9 – az adott mag RESET-je
- F10 – file browser menü, egyelőre csak a ZX48/128 és NES magok támogatják
- F11 – a aktuális mag újratöltése (az FPGA újrakonfigurálása)
- F12 – visszalépés a menü-be (a menü mag betöltése)
TVC
A LOAD parancs után a * karakterrel kell megadni a DOS parancsokat, pl:
LOAD ”*DIR” LOAD ”*CD /FOLDER” LOAD ”*VOL” LOAD ”*MOUNT” LOAD ”*INF”A záró idézőjel elhagyható. A normál .CAS fájlok betöltésekor nem szükséges a kiterjesztés, de meg is adható.
LOAD”CROSSFIR” és LOAD”CROSSFIR.CAS ugyanúgy betölti a megadott fájlt
Váltás másik magra: LOAD”*gwc magnév
Pl: LOAD”*gwc c64
HL2
A DOS parancsok a LOAD-on keresztül érhetők el. Ha a megadott szó nem értelmezhető, mint DOS parancs, akkor megpróbálja HTP fájlként megtalálni, és betölteni.
LOAD ”DIR” LOAD ”CD /FOLDER” LOAD ”KIKDU”A záró idézőjel elhagyható. A .HTP fájlok betöltésekor nem szükséges a kiterjesztés, de meg is adható.
Váltás másik magra: LOAD”GWC mag
HL3
A DOS parancsok a LOAD-on keresztül érhetők el. Ha a megadott szó nem értelmezhető, mint DOS parancs, akkor megpróbálja HTP fájlként megtalálni, és betölteni. A záró idézőjel NEM kell, nem szabad megadni!
LOAD ”DIR LOAD ”CD /FOLDER LOAD ”TIEAzokban az esetekben, ha a HTP fájl nem a basic területre, hanem máshová töltődik, a gép kiírja a kezdőcímet, amit a CALL utasításnak meg lehet adni, pl:
LOAD ”TIE
CALL $5000
Váltás másik magra: LOAD”GWC mag
PRIMO
A DOS parancsokat a CMD basic utasítással kell megadni, a nyitó és záró idézőjel is kötelező!
CMD ”DIR” CMD ”CD /FOLDER” CMD ”VOL” CMD ”MOUNT” CMD ”INF”Programok betöltésére a LOAD parancs használható, de a betöltés előtt a TAPE paranccsal meg kell adni a megfelelő PTP fájlt.
CMD ”TAPE /PRIMO/VALAMI.PTP” LOAD
Váltás másik magra: CMD”GWC mag”
HT1080Z
A DOS parancsokat a CMD basic utasítással kell megadni, a záró idézőjel elhagyható.
CMD ”DIR CMD ”CD /FOLDER CMD ”VOLProgramok betöltésére a LOAD parancs használható.
LOAD ”GALAXY
Váltás másik magra: CMD”GWC mag”
ZX Spectrum 48
A DOS parancsokat a CMD basic utasítással kell megadni, idézőjelek nélkül. A CMD parancs a COPY-t váltotta fel a billentyűzeten (Z-betű angol kiosztás szerint, Y a magyar billentyűzeteken)
CMD DIR CMD CD /FOLDER CMD VOL.SNA és .Z80 snapshot fájlok betöltése támogatott. Betöltés az alábbi módon:
CMD sna jetpac.snaA kiterjesztés elhagyható, először .SNA majd .Z80 fájlt keres a rendszer, és ha talál ilyet betölti. A 128-as spectrumhoz készült .Z80 fájlokat a rendszer nem tölti be, hibásként mutatja.
Váltás másik magra: CMD gwc mag
ZX Spectrum 128
A ZX Spectrum 128 ROM egyelőre nem támogatja a közvetlen DOS parancsokat, ezért itt .TAP (ZX Tape) fájlok segítségével és a LOADER-el lehet a játékokat betölteni. Az F10 megnyomásával a felugró on-screen böngészővel lehet kiválasztani a megfelelő .TAP kiterjesztésű tape fájlt. Ez után a 128-as Tape Loader-jét kell nyomni az eredeti Spectrum menűben, így a csatolt tape fájlból tölt a rendszer.
Commodre gépek – VIC20, C16, C64
A DOS parancsokat a @ bevezető karakterrel kell kezdeni.
@DIR @CD /FOLDER @VOLHa a @ bevezető karakter után nem DOS parancs áll, akkor a rendszer megpróbálja megtalálni az adott néven a fájlt és betölti azt. Itt a * karakter is használható szöveges egyezés keresésére.
@GHOST*Az első fájlt betölti, ami a GHOST szóval kezdődik (pl. GHOSTBUSTERS.PRG)
A commodore gépeknél jelenleg még nincs 1541-es emuláció, tehát csak olyan játékok használhatóak, amelyek menet közben nem akarják a lemezegységet használni (nem utántölktősek).
A C16/Plus4 esetében a legújabb C16STM kártyára kiadott többrészes játékok támogatottak, azok működni fognak utántöltő módban. A VIC20 és a C16 az RGB és az analóg audio kimenet is meghajtja, ezek a magok CRT monitoron vagy Scart bemenettel rendelkező TV-n is használhatók.
NES
A NES játékokat az F10 megnyomásával kell betölteni. Ilyenkor megjelenik az on-screen böngésző, a megfelelő .nes fájlt ki kell választani, és ENTER-el betölteni. (Sajnos nem minden .nes hibátlan lejátszása garantált, a különböző NES és klón rendszerek játékai hibásan, vagy egyáltalán nem futnak.)
A C64 joy portok a NES esetében a négy irányt és az „A” gombot emulálják. Mivel a NES kontrolleren ennél több gomb is van, a NES játékokat néha billentyűzettel jobb irányítani, ha nem csak ezeket a gombokat használja az adott játék. NES kontrollerek esetében természetesen minden gomb rendeltetésszerűen használható (4 irány, A, B, SELECT és START)
A NES mag a PC billentyűzettel is irányítható az alábbiak szerint:
NES funkció | 1-es kontroller | 2-es kontroller |
irányok | Kurzor billentyűk | W-A-S-D |
Start | Enter | 1 |
Select | Space | 2 |
A | Ctrl | Right-Shift |
B | Alt | TAB |
NES kontrollerek csatlakoztatása
A TMC-20 kártya két NES kompatíbilis kontroller csatlakoztatásátteszi lehetővé a NESCTRL 6 tüskés porton keresztül.
A tüskék bekötése a mellékelt ábrán látható. A NES kontrollerek többféle csatlakozással is rendelkezhetnek, ezeket
az interneten található források alapján kell azonosítani. [NES kontrollerek kiosztása #1 | NES kontrollerek kiosztása #2] A DB9-es (sárga kazettás) klónok esertében tipikus bekötés, egy kontroller esetében: Tüske DB9 male 1 - 2 DAT 3 - 4 CLK 4 - 3 LAT 5 - 6 +5V 6 - 8 GND |
Figyelem! A kártya korábbi V1-es verzióján még nincs NES kontroller port, ezért azon nyilvánvalóan nem használható ez az eljárás. A V1-es kártyából csak néhány darab készült. A NES kontroller támogatást a a gwc2a/cores.txt fájlban engedélyezni kell az alábbi sorok beszúrásával:
[config] version=2 [end]Ha neked V1-es kártyád van, mindenképp itt írd be: version=1, különben a PICO board egy lába elektronikusan sérülhet!
PICO Firmware upgrade
Az RP2040 PICO board firmware upgrade-jéhet egy PC-re és egy USB-C kábelre van szükség.
(A legfrissebb firmware a letötések között található). Az upgrade menete:
|
MENÜ mag upgrade
Az FPGA board külső flash chipjében található a menü mag, amelynek upgrade-je a beépített monitor programon keresztül történik.
- másold a menucore.bin fájlt az SD kártya gyökerébe (amit a letöltések között találsz)
- A menü futása alatt nyomd meg a Ctrl+P gombokat. Ekkor a TMS System monitor megjelenik, a kép tetején egy kurzorral
- Gépeld be: fread [ENTER]
- Ha a kijövő hexadecimális lista csupa ff-et tartalmaz, akkor a kártyád a régebbi menucore-t tartalmaza. Ekkor exit-el lépj ki a monitorból, és indíts el egy tetszőleges magot. Ha ez elindult, akkor nyomj Ctrl+F12-t. Így az újabb menünek kell betöltődnie, és visszatérve a monitorba (Ctrl+P) az fread parancs már nem csupa ff-et olvas, hanem más értékeket is
- add ki az alábbi parancsot: fwrite 0 menucore.bin - a flash upgrade-je elkezdődik, pár másodpercet vesz igénybe
Órajel források konfigurációja
Erre a konfigurációr akkor van szükség, ha egy mag több órajelet is igényel. A legfrissebb ZX48 mag ilyen. Szükséged lesz egy terminal emulator programra, én a PUTTY-ot használom.
- Húzz ki minden csatlakozót
- Csatlakoztasd a kártyát az USB-C kábellel az FPGA panelen található csatlakozóval (aTMC-20 felirat felett)
- Nyitsd meg az eszközkezelőd és keresd meg az új COM portot - Portok (COM és LPT)
- Konfiguráld be a terminál emulátort: 115200 8 N 1
- Nyomd a Ctrl+C majd Ctrl-X gombokat, amíg a promt meg nem jelenik: TangNano20K />
- Add ki a következő parancsot: pll_clk O2=100M -s
- Ellenőrzésként add ki újra: pll_clk
- Ha az O2 EN állapotban van és 100000000-t mutat, akkor rendben van
SCART/RGB kimenet
A magok a DVI/HDMI video kimenet mellett RGB+sync jelet is szolgáltatnak. Ezt analóg PAL kompatíbilis RGB monitorokon vagy olyan TV készülékeken lehet felhasználni, amelyek rendelkeznek Euro-Scart RGB bemenettel. A scart bemenethez alábbi kapcsolás alkalmazható:
A kapcsolási rajzon látható, hogy az audio kimenetek egy-egy jumper-en (JP3) keresztül a VGA csatlakozóra is köthetők, így lehetséges olyan VGA-Scart kábel készítése, amihez nem kell külön 3.5-es audio jack csatlakozó.
Letöltések
- gwc2a.zip - a gwc2a könyvtár tartalma, a legfrissebb magokkal
- menucore.bin - menucore mag, 2024.06.22
- tn_ctrl_02.uf2 - PICO 2040 firmware 2024.08.19
- Schematics - A V2-es kártya kapcsolási rajza
- tn_ctrl_02.uf2 - PICO 2040 firmware 2024.09.28. *, joy emuláció implementálva
1. Nyomd le a PrtSc/SysRq gombot és a Ctrl gombot
2. Amíg a fenti kombinációt lenyomva tartod, nyomj F1-et az első port, F2-t a második port emulációjához, és F3-at az emuláció kikapcsolásához.
Az emulációt egy mag újratöltése F12-vel minden esetben kikapcsolja!
Hibák, problémák
Mint minden szoftver és hardver esetében, a TMC-20-nál előfordulhatnak bug-ok. Ezeket, ha E-mail-ben, Facebook-on jelzed nekem, próbálom javítani, a magokat tökéletesíteni.
● A reset nem minden mag esetében tökéletes, ezért ha az F9-es reset után nem indul a mag, meg lehet próbálni az F11-el újra betölteni a magot. Sajnos ez sem minden esetben segít, mert a belső RAM megőrzi a tartalmát, és emiatt elképzelhető, hogy a mag betöltése után ugyanaz az állapot áll elő, mint előtte.
● ZX Spectrum ram hiba. Nagyon ritkán előfordul, hogy a Spectrum mag 16K RAM-al indul el. Ezt a PRINT USR ”A” utasítással lehet ellenőrizni, 48K esetében 65368-at ír ki, míg 16K-nál 32600-at. Ezt az F9 reset megoldja.
● TVC esetében - szintén reset után - előfordulhat a black-border hiba, ha a keret fekete marad, de a kék bejelentkező kép megjelenik, új reset-et kell adni (F9)
● C16 és C64 esetében néha a HDMI kép eltolódik, F11 vagy F12, a mag újratöltése segít.
● Bizonyos magok egymás utáni betöltése – a belső RAM megőrzött tartalma miatt – hibát eredményezhet. Ez szintén a nem tökéletes reset eredménye (Homelab3-nál fordulhat elő).
● A vezérlő RP-2040 firmware is el tud szállni (abban is szoftver fut), mivel a kommunikáció az aktuális maggal kézfogásos alapon történik. Ha ez az állapot beáll, a gép nem reagál sem az F9, sem az F12 megnyomására, akkor a komplett áramtalanítás, és újraindítás a megoldás.
Képek