HRA

Codeword Arguseye in Secret Mission
Herní styl Text only
Multiplayer Bez multiplayeru
Rok vydání 1984
Programátor Erwin J. Knöll
Grafik (None)

INTRO

USB-IDE64 card

V tomto článku jsem se rozhodl popsat projekt, kterému jsem poslední dobou věnoval dost energie - jak přenášet data mezi C64 a PC pomocí USB. Tento článek jsem plánoval vydat dříve a v angličtině, ale okolnosti mu nepřály, tak alespoň českým příznivcům předkládám tuto verzi (doplněnou o pár poznámek).

Příčinou, proč jsem se začal zajímat o to, jak využít USB, byla jednak mučivá pomalost prvních verzí PC-link pro IDEDOS 0.90 pod WinXP (i přes user port) a za druhé nepoužitelnost kabelu X1541 pod stejným operačním systémem. Zmiňovaný PC-link se v počátcích potýkal se známou problematikou přímého přístupu na piny LPT na NT platformě a používal velice jednoduchou, ale zároveň velice pomalou, knihovnu která spřístupnila jeden hardwarový register, poslala na něj 1 byte, a zase ho "uzavřela". Při porovnávání byl C64 schopen v assembleru několikrát rychleji číst stav userportu, než PC zapisovalo na LPT. Tento problém bylo možné obejít např. pomocí programů Userport nebo Porttalk (ten používá současná verze PC-link, pokud vím), ale to by bylo na jiný článek (pozn. tato problematika je popsána např. na lpt.hw.cz).

Jelikož moje znalosti elektroniky jsou dost omezené, od začátku jsem kladl důraz na co největší jednoduchost hardwaru. Po nějakém tom hledání padla moje volba na integráč FT245BM od firma FTDI (www.ftdichip.com) a jeho mód FIFO - 8mi bitový synchronní přenos. Skvělý (a levný) obvod, ke kterému výrobce zdarma dodává driver s DLLkem a hlavičkovým souborem, takže napsat si vlastní aplikaci pracující s USB portem ve WinAPI (nebo jeho nadstavbách) není nepřekonatelná překážka.

Priorita byla, aby spojení bylo co nejrychlejší, tedy aby používalo všech 8 datových pinů. Původně jsem tento obvod chtěl připojit do C64 userportu, ale jak se záhy ukázalo, dostat kromě 8mi datových pinů z userpotu i 4 synchronizační (obvod FT245 pracuje se čtyřmi synchronizačními signály, dva pro vstup a dva pro výstup) je dost nesnadný úkol. Musel bych používat seriovou linku s časovačem, které jsou na userportu na SP1(2) a CNT1(2). O této problematice je dost nesnadné sehnat nějaké informace a ještě težší je je v praxi aplikovat. Nakonec jsem se rozhodl připojit USB do shortbusu - rozhraní, které je na kartě IDE64. Tím se sice hardware rozrostl o několik dalších součástek, ale odpadl problém s nedostatkem použitelných pinů. Za pomoc s připojením do shortbusu patří můj dík Visáčovi! Díky jeho schématu jsou na adrese $DE48 přístupné datové bity a na $DE49 synchonizační bity.

Rád bych teď vyvedl z omylu všechny, co doufají, že se by se IDE64 na PC hlásilo jako USB disk nebo něco podobného. Nic takového integráč s driverem od FTDI neumí. Dělá "jen" to, že se v Control Panels / System hlásí jako další USB zařízení (podobně jako např. datový kabel telefonu, na liště vidět není). Funkcemi v DLL se pak může otevřít a posílat/přijímat data. Aby se IDE64 hlásilo jako USB disk by vyžadovalo spoustu složitého kódu jak na straně PC, tak i na straně C64 (pozn. taková šajba zase nejsem, ale tento obvod má i více možností, kromě v této aplikaci použitých funkcí OPEN, READ, WRITE atd. umí "emulovat" funkce pro klasický přístup na porty pod WinNT - CreateFile, ReadFile atd., má samozřejmě driver pro Linux a je možné ho mapovat i jako "klasický" COM port).

Prototyp karty jsem dělal jako dva samostatné tišťáky propojené CANNON konektorem a při jejich drátovém propojení do karty vnikalo mnoho rušení, které bylo potřeba odstínit. Proto první verze USB-IDE64 vypadala dost zběsile.

Plnou verzi jsem už udělal na jeden tišťák, který je položen na IDE64 a s PC se propojuje obyčeným USB kabelem A-B. Tato druhá verze už také obsahuje novou verzi integráče FT245 - FT245RL, která oproti FT245BM má v sobě eepromku i krystal a došlo tedy k zjednodušení hardwaru.

Integráč FT245RL má ještě nějaký mód 8mi bitového přenosu synchronizovaném pouze dvěma piny a teoreticky by ho bylo možné připojit do useportu, ale je to novinka a tuto možnost jsem ještě nezkoumal.

Pochopitelně pro kartu USB-IDE64 neexistoval žádný software a všechno jsem si musel napsat sám.
První program je konzolová aplikace, které se jako parametr předá spustitelný C64 program (aplikace zkontroluje jeho velikost a spustitelnost) a ta ho pošle na C64 a spustí. Program, který ho na C64 přijímá, běží od adresy $0400 a je schopen uložit program až do $FFFD. Já to používám pro kódování. Mám nakonfigurovaný PSPAD (www.pspad.com) tak, že při stisku klávesy F9 se spustí 64TASS (ftp://c64.rulez.org/pub/c64/IDE64/source) a soubor, který vytvoří, se pošle po USB na C64 a hned se sputí. Veškeré zdrojáky pro C64 tedy píšu na PC, ale program se (pohodlně) pouští na skutečném C64. Tím že to pracuje až do adresy $FFFD můžu bez problémů kódovat i IFLI obrázky. Prostě nádhera!
Druhý program, který je zatím ve stadiu beta verze, je file manager (dělaný v C++ Builderu). Je to můj vlastní manager, který nespolupracuje s managerem v IDE64 firmwaru a většinu režije v něm obstarává PC. Zatím umí jen přenášet data z PC na C64 s přenosovou rychlostí blížící se 25 kilobyte/sec (včetně režie ukládání na hadr). Zatím nemá mnoho funkcí, kromě již zmíněného přenosu umí procházet directory na IDE zařízení a číst jeho status kanál (pozn. pro přístup k PC filům používám klasickou Delphi/C++ Builder komponentu LsFileExplorer28).

A jak by bylo možné tuto kartu získat? To je trochu problém, mám v současnosti pouze dva prototypy. Možná bych v budoucnu udělal nějaké kusy na prodej, ale brzy se budu stěhovat, takže se mi do toho zatím nechce. A také jsou určité potíže s výrobou tišťáku pro tuto kartu (pozn. jak jsem se přesvědčil, tišťák vyrobený podomácku fotocestou, ikdyž zmáknutým postupem, není úplně dostačující kvalita a bylo by lepší nechat si vyrobit profi tišťák, což by dle předběžných propočtů zdvojnásobilo cenu karty).

LHS

Nový příspěvek k článku

podpis :
První znak podpisu musí být vykřičník, jinak se příspěvek neodešle (ochrana proti spamu)

Advert

Hardcode and datamining by PCH of UNREAL, Hardware guru by RAY of UNREAL, Bugs report by SILLICON of UNREAL
UNREAL 2014-2021 Czech republic