chipicon

FPGA development

stripes

TMC-20 multicore board

board picture

Indulási alapfeltételek: * Terheléstől függően (USB-HUB, kontrollerek) indokolt lehet a nagyobb teljesítmény is.
** 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.

menu

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.

RendszerA mag neve (a gwc parancshoz)
ZX Spectrum 48zx48
ZX Spectrum 128zx128
Videoton TVC 64ktvc
Primo A64primo
HT1080Z 64kht
Homelab 3/4hl3
Homelab 2/Aircomp 16hl2
Commodore VIC 20vic20
Commodore 16/+4c16
Commodore 64c64
Nintendo Entertainment Systemnes


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: A különböző gépek BASIC értelmezőjét kiegészítve lehet kiadni a DOS parancsokat. Ahol volt erre lehetőség, ott egy új parancs, a CMD szolgál a parancsok kiadására, máshol a LOAD-ot egészítettem ki. Ez minden gép esetén kissé eltér. A Commodore gépeknél a @ jellel kell kezdeni a DOS parancsokat.

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 ”TIE
Azokban 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 ”VOL
Programok 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.sna
A 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
@VOL
Ha 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 kontroller2-es kontroller
irányokKurzor billentyűkW-A-S-D
StartEnter1
SelectSpace2
ACtrlRight-Shift
BAltTAB

NES kontrollerek csatlakoztatása

nes pinout 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
Két kontroller esetében a második kontroller DAT bemenete a 2-es tüskére megy, a CLK LAT +5V és GND vezetékek pedig közösek.

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

pico fw prog 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:
  • Töltsd le a legfrisseeb UF2 fájlt egy könyvtárba
  • Húzz ki minden csatlakozót
  • Tartsd lenyomva a BOOTSEL gombot
  • Csatlakoztasd a kártyát az USB-C kábellel a PC-hez az RP2040 board-on található csatlakozóval
  • A PC új drive-ként felismeri a board-ot (RPI-RP2)
  • Másold át az UF2 fájlt erre az új drive-ra
  • A drive eltűnik, lehúzhatod, most már az új firmware-el működik a board

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. pllclk
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ó:

vga_scart

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

* 2024.09.28-i firmware megvalósítja a billentyűzeten keresztüli joy emulációt a Cursor (irányok) + Ctrl (tűz) billentyűk segítségével. Működése:
  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

01 02 03
01 02 03
01 02 03
01 02 03
01 02 03
- Joco
mem