DGBoot

Modifikácia projektu SpeccyBoot pre Didaktik Gama.

SpeccyBoot je projekt, ktorý ma zaujal už pred niekoľkými mesiacmi. Rieši pripojenie ZX Spectra na ethernet prostredníctvom modulu s ENC28J60. Čo tým dosiahneme, keď pripojíme Spektrum na sieť? Možnosti sú takmer nekonečné podobne ako keď pripojíte SIF s modulom ConnectOne, ale reálne stále existuje málo softu, ktorý by prinášal nejakú zaujímavú funkcionalitu. Na SIF + ConnectOne je zatiaľ asi iba BitchZX od ub880d a spúšťač súborov cez FTP (SIF01.tap) priamo od autora SIFu.

Obdobnou funkcionalitou disponuje základné programové vybavenie SpeccyBootu umiestnené v (EP)ROM/Flash. Dokáže si zo siete vypýtať adresu od DHCP servera, broadcastom osloví TFTP server a ponúkne na výber zoznam súborov (v tomto prípade snapov vo formáte .Z80), ktoré je možné nahrať do počítača.

Komunikáciu so sieťou sprostredkuje spomínaný čip od Microchipu s označením ENC28J60. Jedná sa o hojne rozšírený a používaný kontrolér, ktorý sa ovláda prostredníctvom sériového protokolu SPI. V Spektre (prípadne jeho klonoch) nemáme k dispozícii čip, ktorý by sa vedel postarať o SPI komunikáciu na úrovni hardvéru. Preto v pôvodnej schéme autor použil na pripojenie vstupný a výstupný register, ktoré sú oba adresované na porte 0x9Fh (159d) pričom samotný protokol je realizovaný čisto softvérovo a komunikáciu riadi procesor. Bit 5 výstupného registra rieši odstánkovanie ROM v počítači a pristánkovanie SpeccyBootu.
V prípade Didaktiku Gama už máme k dispozícii vstupno/výstupné porty v podobe 8255, ktoré sú vyvedená na FRB resp. kratší priamy konektor (podľa modelu) na zadnej strane počítača. Tento konektor je v príručke označený ako INTERFACE.
Pokiaľ máte to šťastie, že EPROM s Basicom máte v Game v pätici, nič nebráni umiestneniu pamäte s vačšou kapacitou s obsahom pôvodnej ROM plus SpeccyBootu do nej.

Takto vznikla značne zjednodušená varianta pôvodného SpeccyBootu pracovne nazývaná DGBoot. Nevyžaduje žiadne aktvne súčiastky (teda okrem stabilizátora na 3.3V a vymenenej EPROM v pätici), iba zopár odporov a jeden jumper. Celková cena konštrukcie sa v podstate obmedzí na cenu samotného modulu, ktorá sa dnes pohybuje na eBay pod 5$ a stabilizátora za pár centov (konkrétne 9 pri nákupe 50ks). Predpokladám, že ďalšie súčiastky (EPROM 27256, odpory, jumper, odrezok z ISA konektora) sa váľajú niekde v šuflíku vyradené z PC odpadu.
Pretože Gama používa bit 0 portu C na stránkovanie pamäti v rozsahu 32-64k tento port som radšej na pripojenie ethernetového modulu nepoužil. Port B je inicializovaný ako výstupný a port A ako vstupný, aby nebolo nutné neustále posielať riadiace slovo na prepínanie smeru toku dát na porte B resp. A. Pre minimalizovanie zásahov do pôvodného zdrojového kódu SpeccyBootu som sa snažil namapovať jednotlivé bity portu podľa pôvodnej schémy. S výnimkou pinu PB3, ktorý som nakoniec prehodil na PB1, sa mi to podarilo (z nejakých nevysvetliteľných dôvodov som mal na PB3 stále úroveň L). [Úprava článku – 13.9.2012: Konečne som prišiel na dôvod problémov s PB3. Po teste pripojenia Kempston joysticku cez invertory ako používa UR4 som zistil, že IN 31 stále vracia hodnotu 8. Správnym smerom ma nakopol Mikezt. Vďaka. Bolo totiž podozrivé, že všetky vstupy s číslom 3 – PA3, PB3, PC3 – vracali logickú jednotku resp. pri výstupe bolo všade log.0. Problém bol v prerušenej cestičke na signále D3 medzi CPU a 8255. Na riadiace slovo to vplyv nemalo, lebo D3 nastavuje tok dát pre PC4-7, ktoré som netestoval. Som pevne presvedčený, že teraz by DGBoot fungoval aj s PB3, ale prekáblovať interface, znovu zostavovať obsah EPROM, mazať a opätovne ju napaľovať je zrejme zbytočná strata času keďže momentálne spoľahlivo funguje s /CS pripojeným na PB1]

Pripojenie signálov je nasledovné:

Bit
SpeccyBoot
Bit
DGBoot
Pin Význam
0 (výstup) PB0 9 SPI CLK (Clock)
3 PB1 10 ETH /CS (Chip Select)
5 PB5 14 EEPROM /CS resp. A14 27256
6 PB6 15 ETH /RESET
7 PB7 16 SPI MOSI (Master Out-Slave In)
1,2,4 2,3,4 nepoužité
0 (vstup) PA0 1 SPI MISO (Master In-Slave Out)

Mapa EPROM vyzerá nasledovne:

Začiatočná adresa Konečná adresa Obsah
0x0000 0x1FFF DGBoot (SpeccyBoot)
0x2000 0x3FFF 0xFFh
0x4000 0x7FFF Didaktik Gama ROM

Rozloženie vývodov modulu s ENC. Na prototyp som použil verziu mini s označením Z28J60:

Pripojenie modulu k 8255:

Pripojenie A14 EPROM (R1, IC1):
Úprava vo vnútri počítača:

  • Výmena EPROM 27128 za 27256. Pôvodná pamať sa vyberie z pätice, novej pamäti treba opatrne vyhnúť pin 27 o 45 stupňov smerom od púzdra a priviesť na tento pin signál z pinu 25 FRB/priameho konektora. Ak je pôvodná pamäť zaletovaná odporúčam ju vyletovať a nahradiť päticou.
  • Vstup jedného z invertorov na rozširujúcom konektore periférií (pin 25) sa zapojí na signál A14 EPROM (pin 27). R1 sa zapojí medzi piny 14 a 5 IO 7404 nachádzajúcim sa medzi EPROM a konektorom
  • Ak nechcete narušiť plošný spoj preškrabom môžete napätie 5V na vstup stabilizátora DGBootu priviesť samostaným drôtikom z 5 kolíkového napájacieho konektora. V opačnom prípade prerušte cestičku vedúcu od pinu 6 IO 7404 ku konektoru a do prekovenej diery v blízkosti pinu 26 konektora priveďte 5V napr. z pinu 14 predmetného IO

Gama po úprave:

DGBoot na univerzálke:

Výhody DGBootu:

  • Samostatná periféria nevyžadujúca divIDE k svojej činnosti
  • Zostáva voľná zbernica na pripojenie ďalších periférií (Melodik, D40…).
  • Rýchle a efektívne testovanie programov na reálnom železe (snap z emulátora sa uloží do správneho adresára, netreba fyzicky prehadzovať médium medzi PC a divIDE –  CF, SD, disk, disketu atď.)
  • Bezkonkurenčná cena a dostupnosť

Nevýhody:

  • Problematickejšie pripojenie ďalších periférí na 8255 (joystick, tlačiareň)
  • O niečo pomalšie nahrávanie oproti pôvodnému SpeccyBootu kvôli zmene kódu pre rôzne adresy vstupného a výstupného portu (14T / byte)
  • Pomalšie nahrávanie v porovnaní s IDE/CF
  • Chýbajúca podpora iných formátov (SNA, TAP)
  • Potreba zapnutého PC s bežiacim DHCP a TFTP. Linuxový router/AP (napr. Asus WL500G) to zrejme bude vedieť plne zastúpiť – zatiaľ v štádiu testovania

Pre činnosť DGBootu budete potrebovať bežiace PC so spusteným DHCP a TFTP serverom. Na Debian 6 odporúčam použiť ISC DHCP server (udhcpd mi nefungoval) a TFTPD spúšťaný cez OpenBSD inetd:

apt-get install isc-dhcp-server tftpd inetd
mkdir -p /srv/tftp/speccyboot
chmod 775 /srv/tftp/speccyboot

Následne je potrebné skonfigurovať dhcp server aby počúval na požadovanom interface a prideľoval rozsah IP adries klientom.
Pomocou skriptu speccyboot-update zo zdrojového archívu vygenerujeme zoznam snapov, ktoré sme predtým uložili do adresára /srv/tftp/speccyboot.

Oživenie zapojenia by nemalo robiť žiadne problémy. Odporúčam skontrolovať zapojenie na skraty, premerať napájanie a činnosť stabilizátora. Následne zasunúť ENC modul do pinovej lišty. Po pripojení sieťového kábla RJ-45 a resete Gamy by mali reagovať LEDky na module (zelená – pripojenie, oranžová – komunikácia). Pokiaľ na PC správne beží DHCP a TFTP server zobrazí sa správa ‘configuring DHCP’ nasleduje ‘configuring TFTP’ a zobrazí sa zoznam snapov na nahratie. Ak nie, odporúčam komunikáciu odsledovať WireSharkom.

Na záver prikladám súbory na stiahnutie:


Veľa zábavy s novým rozšírením pre vašu Gamu želá ikon.

3 komentáre pri “DGBoot

  1. pokial viem, uz niekolko rokov zijeme v 21 storoci.. rychlu linku ma kazdy normalny clovek. pozadie na natacanie netreba.. priniest kameru trva asi 7 sekund (ak ju nemas v pivnici).. ako som spominal, sme v 21 storoci, cize data sa ukladaju na pamatove medium v kamere.. nahrat video a uploadnut je otazka 10 minut … ok, kaslite na to, ked to neviete … Nehovorim o natacani na telefon, ako som spominal, zijeme v 21 storoci, kde uz aj mobily natacaju ostre HD videa, aj pri 60FPS – ked chcete … vy ste nikto nemal nikdy chut ukazat svetu ako taky DGBoot funguje? ja by som hned nejake video urobil.. ako som spominal, je to otazka 5-10 minut

  2. Tak to je krásné! Konečně způsob jak bych mohl využít svoji Gamu, která už řadu let jen tak leží v krabici.

  3. pozeram ze by to chcelo nejaky poriadny spam filter, ti spameri su cim dalej tym viac vynaliezavi. az zacina mat clovek pocit akoby to pisal skutocny clovek. ja by som ten spam zmazal, clanok bol predsa o niecom uplne inom ako o prednaske o toceni videi…

    btw. ako s divide? skusal si to pripojit sucasne s divide?

Pridaj komentár