Chvála inteligentní sběrnice

Proč si dovoluju chválit něco tak blbého a nemyslícího, jako je sběrnice?
Kdo z vás ještě nahrává programy z kazeťáku při běžné práci s počítačem?
Asi jen zoufalci.
Připojujeme floppydisky, harddisky, CF karty, MMC a SD karty… pokud je máme.
Tyhle věci se dají přidrátovat přímo na sběrnici procesoru, což vyžaduje tvorbu ovladačů a software, který by zařízení mohl využívat, a při jakémkoliv předrátování pak software zcela přepisovat.
Nebo se dají vybavit určitou vlastní inteligencí a připojovat se na nějakou definovanou sběrnici (SIO u Atari, HP-IB nebo PIO u PMD, PIO (PI-5) u Sordu M-5, IEEE u Commodore 64).
Což má tu výhodu, že – v případě vzácných případů, které ovšem není nemžné ošetřit, je to jen složitější – je počítači jedno, zda se baví s disketovkou jednostrannou, disketovkou oboustrannou, harddiskem SCSI nebo IDE, USB MassStorage špačkem, modemem nebo třeba tiskárnou, hlavně, aby vlastní inteligence daného zařízení rozuměla protokolu, který do něj počítač hodlá rvát.
Což má výhodu například tu, že místo disketové jednotky u Atari (která měla v sobě vlastně druhé jednodušší Atari, které se staralo o protokol a pak o vlastní čtení diskety, kterým se hlavní procesor Atari nemusel vůbec zatěžovat) lze připojit libovolnou jinou inteligentní elektroniku (třeba nějaký Atmel), který bude protokol přežvýkávat a data místo z diskety sosat třeba z harddisku nebo paměťové flashkarty.
A fantazii se meze nekladou, na Atari dokonce existuje modem, ze kterého se dá bootovat místo disketovky – rovnou po zapnutí do Atárka zavede terminálový program.
Navíc se počítač nemusí starat o datovou náročnost a samotnou hardwarovou stránku – má prostě jednu rutinu pro výstup znaku na sběrnici, jednu pro vstup znaku ze sběrnice, a nepotřebuje zaplácávat cennou paměť lowlevel balastem, většina operací spočívá v prostém poslání většinou jednobajtového příkazu a jeho parametrů.
A je mu jedno, jestli čte z malé diskety, nebo ohromného harddisku, nemusí si nikam ukládat nebo cachovat rozsáhlé FAT tabulky nebo dlouhé seznamy souborů – o to se stará elektronika připojená mezi samotné zařízení a sběrnici.
Uvedu příklady několika počítačů, několika řešení, a co se mi na nich líbí a nelíbí. A co vlastně z toho vyvozuju a navrhuju.
Takže začnu nejstarším.

Apple I.
V základu se do něk bouchaly programy via klávesnice a nijak se neuchovávaly, Wozniak ale nebyl nepřející a zkonstruoval aspoň velmi spartánský externí interface pro připojení kazeťáku (nízká rychlost, single bloky, bez hlaviček a názvů, při nahrávání musel uživatel vědět, kam chce blok uložit a jak má být dlouhý – a hlavně, který z mnoha programových bloků na kazetě je ten správný.
Šikovný bastlíř si jistě mohl přidrátovat ke sběrnici procesoru řadič disketové jednotky, ale pokud si připojil jiný řadičový čip, nebo ho připojil jinak, tak byli vzájemně nekompatibilní.
Průlom nyní udělala Brielova RS-232 karta, která slouží jako “druhá klávesnice a monitor” a můžete tak”nabušit do klávesnice” přes RS-232 program uložený na PC, a “výpisem na obrazovku” ho do PC dostat. RS-232 karta sice slouží jako “dálkové ovládání” a “prodloužené vedení do klávesnice a monitoru”, ale nejde ji využít jinak (terminál a podobně), vyvinutá byla speciálně pro vyřešení storage.
A druhý průlom odělala CFFA-1, která k Apple I připojí CF kartu (formátovanou v ProDOSu z Apple II).
Neobsahuje žádný DOS, jen menu, kde si můžete volit jednotlivé diskové operace (trochu to připomíná starší “DOSy” s menu na Atari 800).
CF kartu z Apple I přečtete na zařízení, které umí pracovat s ProDOS formátem (takže nejlépe Apple II vybavené CFFA-II), ale co budeme dělat, až budou CF karty neperspektivní zastaralé médium?

Sord m5 používal disketovou jednotku FD-5, připojenou pomocí paralelního interface PI-5.
Disketovce se poslal příkaz, a ona buď poslala data z disku, nebo načetla data z počítače a na disk zapsala, nebo udělala jednu z jiných diskových operací (mazání, …).
Zajímavé je, že, pokud je mi známo, neuměla FORMAT, takže formátování disket se provádělo pomocí krátkého programu v Basicu.
Disketová jednotka má možnost nechat se přepnout do jiného režimu, nebo nahrát program do vnitřní RAM a spustit ho, ale pokud se od této (na Sordu nevyužívané) funkce oprostíme, můžeme jednoduše paralelně připojit nějaký Atmelí šváb a na něj třeba ten harddisk, počítači to bude jedno.
Vyžaduje to jen postavit si napodobeninu PI-5, pokud ho nemáme (stále mám v plánu udělat combo SI-5 a PI-5 dohromady, obsahující SIO i PIO, říkejme mu třeba IO-5). A k ní pak připojit potřebný modul.
Software pro Sord netřeba psát, v Basicu-F je již obsažena obsluha FD-5 a tudíž všeho, co bude jejím povelům rozumět. Vše řeší firmware Atmelu (nebo co to bude – připojením Z80 by šlo vyřešit i spouštění strojáku, pokud by hardware aspoň v hrubých rysech připomínal původní FD-5, nebo je možné Z80 procesor emulovat).

PMD-85.
Většinou jsou jeho přežívající majitelé odkázáni na kazeťák, přitom pro PMD bylo vyvinuto hned několik disketových jednotek. Ty je ale skoro nemožné sehnat, a mnoho dochovaných kusů je z nějakého důvodu nefunkčních.
MFD-85 a PMD-30 s vlastní inteligencí (procesor 8080) se daly připojit buď na sběrnici HP-IB (na PMD nazvanou z licenčních důvodů IMS-2), kam šlo nastohovat tuším 14 zařízení (15 a 16 jsou vyhrazeny pro systém, nula nebyla obsloužena softwarově).
Ovládaly se pomocí jednobajtových HP-IB povelů (používaných stejně jako pro komunikaci s měřícími zařízeními a podobně).
MFD-85 i PMD-30 měla i přímo vyvedenou sběrnici procesoru a dala se údajně připojit na procesorovou sběrnici PMD – 8080 v jednotce se tím odblokoval a hlavní 8080 procesor v PMD pak přistupoval přímo na hardware jednotky. Nevím ale nic o tom, že by na to existoval nějaký software.
Softwarová obsluha jednotky na HP-IB sběrnici byla řešena krátkým rozšířením Basicu, které se dalo do EPROMky v modulu a instalovalo voláním ROM 0. Vzhledem k tomu, že šlo jen o syntaktickou analýzu příkazů v Basicu a vyslání jednoznakového povelu jednotce, je to opravdu krátké a dá se to do počítače nabouchat i ručně.
PMD-32 určená pro PMD-85.3 (neboť ono má v ROMce již zabudovánu obsluhu, ale s příslušnou úpravou Monitoru by šla provozovat s libovolným PMD, a nejen PMD) se připojuje na paralelní port GPIO0 (takže případný joystick je potřeba připojovat na GPIO1).
Při resetu pošle na port znak 0xaa a očekává odpověď 0xaa, při kladné odpovědi nahraje z jednotky obsah bootsektoru a skočí na jeho začátek.
Systém tedy musí být na médiu.
K dispozici jsou dva, jednak CP/M 2.2, vzhledem k tomu, že BDOS je velmi krátký (odeslání znaku na PIO místo dlouhosáhlého šahání přímo na řadič), zabírá CP/M poměrně málo místa v paměti.
Protože v CP/M nejde snadno spouštět nativní PMD programy (hlavně psané v Basicu), existuje ještě PMD-DOS, což je upravené CP/M – je vyhozeno několik příkazů (USER, TYPE, …) a nahrazeno možností spouštění basicových souborů zadáním jejich jména (s příponou BAG).
Čili – naprgat Atmel tak, aby se po paralelní lince bavil s PMD, a ukládal data na naprosto cokoliv (CF, MMC, SD, nebo třeba přes ethernet na FTP server, …), byl by vyřešen problém těch nemnoha uživatelů PMD, kteří to ještě nevzdali a PMD i přes dosavadní absenci moderního záznamového média neopustili.
Tady je potřeba dodat, že po letech od první publikace tohoto článku opravdu zásluhou bratří Bóriků vznikla konstrukce emulující PMD-32 a umožňující na PMD (typu 85-3 nebo i libovolného typu po doplnění ROMky s ovladačem, který model 85-3 obsahuje už od výroby) přistupovat k souborům uloženým na SD kartě a využívat i operační systém Mikros.

Koneckonců, stejným zařízením by šel řešit problém u IQ-151.
Původní řešení s 8palcovou mechanikou, kdy řadič v modulu Floppy nebo Disk-2 byl přidrátován na sběrnici procesoru, a bootovací sekvence byla v EPROM, by šel nahradit dejme tomu paralelním připojením Atmelu, který by tahal data z paměťového média, a EPROMky s “bootovací sekvencí”, tedy poslání povelu do Atmelu.
V případě, že budoucnost přinese nějaké dosud neznámé médium, netřeba předrátovávat nové řadiče, jen se připojí jinak naprganý Atmel (nebo SX nebo jiný procesor) zajišťující spojení se světem.
A mohl by být zase hardwarově stejný pro PMD i IQ – dvě platformy jednou ranou…

Abych nezapomněl na Consul 2717.
Zbrojováček se zapojoval do sítě a disketová jednotka byla připojena pouze ke stroji, který sloužil jako server. Přidrátována byla přímo na sběrnici procesoru.
Obsluha sítě a boot z diskety byl obsažen v ROM (spolu s PMD Monitorem a Basicem-G).
ROMka byla stejná pro server i stanici podřízenou – disketovku bylo možno připojit ke kterémukoliv zbrojováčku.
Ale…
…ale během výroby Zbrojováčků používané osmipalcové mechaniky zastaraly a tak podnik přišel s disketovou jednotkou vybavenou 5.25″ mechanikami.
Zatímco 5.25″ a 3.5″ mechaniky jsou mezi sebou v podstatě záměnné, osmipalcovku jen tak vyměnit nejde, potřebuje jiný krystal a kdesi cosi, takže výsledkem byl úplně nový výrobek, snad i s jiným diskovým řadičem, softwarově neslučitelný s původní disketovou jednotkou.
Proto některé Zbrojováčky vyrobené ke konci produkce mohou mít jinou ROM, se kterou zase nelze provozovat původní osmipalcovou diskeťárnu!
Myslím, že jsou jasné nevýhody toho, že disketovka byla přidrátována rovnou k procesoru, a tudíž její perspektivy nejen vývoje, ale už čistě jenom udržení do budoucna, byly kratičké.

Atari a Commodore jsou jasné – u Atari není nic problém, protože SIO má definovaný protokol, a kromě bootování z modemu umožňuje hrát síťové hry, vůbec mu nevadí, když připojíte SIO2PC (kdy místo disketovky nebo tiskárny má připojeno PC, které periferie obsluhuje nebo třeba tiskárenský výstup ukládá do souboru), SIO2IDE (s připojeným IDE harddiskem nebo CF kartou v IDE módu), či SIO2SD (pro připojení SD karty).
Případně český SDrive, který taky vzniknul až roky po prvním publikování tohoto článku.

U Commodore je to složitější kvůli zlozvyku nahrazovat pomalé pseudosériové připojení custom loadery.
Harddisky připojované na sériák (bývají SCSI, ale to je v případě inteligentní sběrnice vedlejší), obsluhují sice větší kapacitu než disketovka, takže mají změněný firmware, ale základem je stále očesaný Commodore s 6502, takže fungují i s naprostou většinou custom loaderů.
A defaultně pomalé nahrávání se řeší Jiffy-DOSem – tedy nahradíte původní ROM počítače za jinou s custom loaderem (a dalšími rozšířeními).
Nevýhodou je cena těchto harddisků od CMD, která se pohybuje kolem 20 000 korun!
Mnohem levnější IDE64 a MMC64 / MMC Replay je přidrátované na sběrnici rovnou, podvrhuje procesoru svoji ROMku, nahrávání je rychlé, ale nefungují – z pochopitelných důvodů – custom loadery, hry je nutné upravovat (nejlépe zpět na pomalé systémové cally), některé náročnější věci – třeba dohrávací dema s efekty při nahrávání – je nutné pořád spouštět z disket.
Nicméně si myslím, že řešení je v co nejsystémovějším programování, a prasárny si nechat na dovádění v posteli.
Pak budou i ty IDE647 a MMC64 fungovat bez větších problémů.

No a ZX Spectrum!
ZX mělo od Cliva Sinclaira Interface 1 s Microdrivy, RS-232 a ZX-Net (kompatibilním s Q-Lan u počítače QL).
Kupodivu zde definované systémové skoky (hook codes) pro kompatibilitu s programy určenými pro IF-1 použilo pouze Disciple a +D, ZX-Net (dokonce vylepšený) mělo jen Disciple, a RS-232, pokud někdo měl, nebylo s původním snad nikdy kompatibilní.
Pak to bylo každý pes jiná ves, Betadisky, Opusy, D40/80, MB-02+, každý řešený jinak a s jiným softwarem, některý lepší, ale třeba méně rozšířený (MB-02), jiný sice strašný, ale používaný po celém bývalém východním bloku (Beta), nezachránil to ani Amstrad s +3 DOSem.
Nevýhody přímého přidrátování periferie přímo na sběrnici procesoru se ukazují podobně ostře, jako u Zbrojováčku.
Stejná schíza pokračuje u dalších zařízení, odvaha Universumova, psát do Desktopu ovladače spousty všelijak rozšířených a všelijak připojovaných tiskáren, je obdivuhodná.
A harddisky?
Aspoň že češi se nakonec shodli na standardních portech, kam se IDE zařízení bude připojovat.
Kdoví, kde je vlastně připojeno zahraniční ZXCF.
Existuje IDE rozšíření do MB-02, ale to aby jeden měl MBčko. Odměnou mu je BS-DOS, který je sice dobrý, ale zatím obsluhuje jen virtuální diskety. A velká paměť, která sice umožňuje dělat hodně věcí, ale nemá nijak definováno, kde bude co uloženo. Takže se tluče potřeba systémového programátora, který potřebuje někam uložit svůj kód nebo třeba velkou ladem ležící paměť na něco rozumného využít, a uživatele, který si do té úžasné paměti strká kde co, a programátor se pak bojí paměť používat, aby uživateli nedejbože něco nevymazal.
DivIDE je sice po elektronické stránce IDE rozhraní vypipláno jak s entusiasmem, tak profesionálně zdatně, ale má celkově velmi malou paměť.
Jako by toho nebylo dost, existuje jeden použitelný DOS – MDOS 3, který taky používá virtuální diskety.
A pak Demfir, který vzhledem k nové schopnosti zapisovat do ISO image budou mnozí jistě jako náhražku DOSu používat.
A FATware, což je stejně jako Demfir vlastně jen spouštěč emulátorových souborů na reálném hardware.
A pak zahraniční ResiDOS, který sice funguje, na stranu druhou je dost hrozný, a na holém DivIDE pro problémy s nedostatkem paměti nepoběží.
Co budeme dělat, pokud v budoucnu, a nemusí to být za moc dlouho, budeme chtít místo CF karty v IDE režimu používat SD/MMC? Nebo jiné dosud neznámé médium – holografickou kostku nebo whatever?
Znamená to znovu přidrátovat hardware – pověsit na nějaký port konektor pro zasunutí média a případně nějakou bižuterii okolo.
Bude nutno přepsat existující operační systémy, aby místo na IDE sahaly na MMC. Bude nutno upravit aplikační software.
Nepochybuju ani o tom, že se pro nové médium objeví nový DOS, nekompatibilní s těmi předchozími.
Přitom by stačilo mít definovanou (sériovou/paralelní) linkou připojeno zařízení, kterému by se řeklo “pošli mi tenhle soubor” a je mu jedno, jestli je soubor nahraný na kazetopáskové jednotce jako pátý v pořadí, nebo zda se skrývá na pětigigové SD kartě mezi jinými pěti milióny třemi sty tisíci dalšími soubory…

 Sinclair QL
Výhoda inteligentní sběrnice je zde více než viditelná díky zařízení Ser-USB, díky kterému lze připojit na sériový port čtečku USB flashek a SD karet.
Pokud jsou naformátovány ve FAT, je čtení a zápis rychlejší a méně náročný na paměť počítače, než v nativním QL formátu – protože o obsluhu filesystému se v případě FAT stará Atmel uvnitř zařízení, kterému QL posílá příslušné povely a nemusí se o víc starat.
Ne že by QL nezvládalo obsloužit svůj vlastní filesystém, ale na velkých discích mapy disku a adresáře zabírají celé kýblobajty, což je zvlášť v případě nerozšířeného QL s 128 KiB RAM znát.

Mně z toho vyplývá, že inteligentní sběrnice má budoucnost.
Taková čtečka SD karet pro PMD, kompatibilní s PMD-32 disketovou jednotkou, by se mohla vejít do krytky konektoru, kterým se bude připojovat k počítači!
Takže připojujte k počítačům (nejen osmibitovým) své periferie inteligentně!