Počítačové hybridy

…aneb počítač jako terminál nenativního operačního systému, moderní akcelerace pro Apple ][ / Apple IIGS a lopata na komára.
Osmibity jsou prostě osmibity, a každá platforma má svoje specifika, která nejsou přenositelná z jedné na druhou.

Jakýmsi spojovacím prvkem strojů s procesory 8080 a Z80 mohla být CP/M, ale na takové 6502 ji provozovat nešlo (sice existuje DOS/65, moderní obdoba CP/M pro 6502, ale software z CP/M není přenositelný a DOS/65 se tím odsuzuje k podobné záhubě, jako CP/M 68k – jehož snad jediná živá část má být ukryta v TOSu mnohobitových Atari).
Podobným spojovacím prvkem pro počítače s procesorem 6809 mohl být unix-like multitaskingový systém OS/9 (nyní NitrOS/9), ale implementace se omezují na Tandy Color Computer a v jisté míře Dragon 64. Například na francouzských počítačích, které mají procesor 6809 z historických důvodů rovněž, jsem funkční implementaci OS/9 nenašel.

Způsob, jak hranice platforem překročit, se začal hledat už dávno. Pokud vynecháme stroje DECmate, které už v těch dávnách dobách v sobě nesly dva procesory, Harris 6120 kompatibilní s DEC PDP-12 a Z80 k provozování CP/M, byl jedním z prvních strůjců těchto spojení Microsoft se svou Z80 SoftCard pro Apple ][. Ta nedělala nic jiného, než že odpojila procesor 6502 v počítači a předala řízení vlastnímu procesoru Z80.
(Motivace pro vznik karty byla jasná – Microsoft tehdy žil z prodeje software pro CP/M, zejména Basicu, a obohacením Apple ][ o Z80 se rozšiřoval okruh zákazníků.)
Microsoft Z80 SoftCard neobsahuje vlastní ROM a sdílí paměťový prostor s 6502. Protože CP/M je umístěn od adresy 0, Z80 zde má restarty, ale 6502 má v zeropage své proměnné a o kus výše zásobník, má Z80 prostor posunutý tak, že jeho adresa 0 začíná na adrese $1000 6502 prostoru. Díky zacyklení paměti do sebe se pak 6502 zeropage a 6502 zásobník nachází na konci paměťovéhoo prostoru Z80. Manuál doporučuje na Z80 nehrabat nad adresu $DFFF (jednak aby se nepřepsala zeropage a zásobník, dále aby se nehrabalo do I/O prostoru Apple ][). Posunutí adres je možno přepínačem vypnout, ale je to asi zbytečné to dělat.
Jednotlivých 8 slotů Apple ][ je vlastně 8 adresových prostorů, do kterých se namapuje karta do slotu zasunutá (přesněji – její ROM s relokovatelnou částí obsluženého software; karta může nést i nerelokovatelnou ROM, která se bankuje do pevně daného prostoru, který je pro všechny karty společný na adresách $C800-$CFFF).
Přiřazení slotů je toto:
1 – $C100-$C1FF
2 – $C200-$C2FF
3 – $C300-$C3FF
4 – $C400-$C4FF
5 – $C500-$C5FF
6 – $C600-$C6FF
7 – $C700-$C7FF
Jak tedy víme, Z80 SoftCard neobsahuje ROM. Zápisem do příslušného prostoru slotu způsobíme přepnutí procesoru (standardní slot pro připojení SoftCard s CP/M je slot 4).Jedním zápisem se tedy vypne 6502 a zapne Z80, při druhém zápisu se Z80 deaktivuje a 6502 se zase zapne.

Oba procesory ale z principu neběží současně. A to se týká i Z80 karty pro Commodore 64 (údajně ne moc stabilní – ale mohlo jít o poznámku závistného uživatele, protože víc pramenů si na kartu nestěžuje). Podobně je pak koncipován i Commodore 128, který má Z80 zabudovanou vedle 6502.
(A stejně funguje i PC Transporter, což je karta, která z Apple ][ udělá PC XT s MS-DOSem, a stejně tak i spousta dalších obvyklých CP/M a MS-DOS karet.)

Zařízení se současným během více procesorů ale existovala už v té době.
Nejzajímavější z té doby jsou opět pro Apple ][. Hned dvě souvisí s tiskem.
Takový tisk, to probíhalo tak, že z příslušné karty (paralelní interface) šla data do tiskárny. Ta obvykle přijala jeden řádek, který vytiskla, a teprve po jeho vytištění si brala další data.
Textový editor nebo jiný program, který tisková data posílal, pak čekal na ukončení tisku tiskárnou (respektive na odeslání posledních dat do tiskárny) a do té doby nenechal uživatele nic dělat (což snižuje produktivitu firem).
Vtip je právě v tom, že program nečeká na dotištění, ale na odeslání posledních dat.
Zařízení Bufferlink je karta s procesorem Z80, který má k dispozici 16 až 64 kB RAM. Z jedné strany do něj jdou data z tiskové karty (Bufferlink má konektor pro připojení těch několika nejpoužívanějších, včetně populární karty Grapler+), na druhé straně je výstup na tiskárnu. Vtip je v tom, že si Bufferlink nabufferuje tiskovou úlohu do své RAM, textový editor nebo jiný tisknoucí program tím odeslal svá data a nechá uživatele pokračovat v činnosti, zatímco Bufferlink teprve nasyslená data posílá na tiskárnu (v dobových materiálech neváhali použít slovo “multitasking”).

Zajímavou kartou je i Print Server pro Apple ][.
V zásadě je to karta podobná Bufferlinku, s vlastním procesorem, která má tiskové vstupy čtyři. Výstup na tiskárnu jeden.
Takže až čtyři Apple ][ stroje sypou data do Print Serveru (může být v pátém stroji, nebo v jednom z těch čtyř), který je přeposílá na tiskárnu (s primitivním mechanismem pomocí timeoutu pro zabránění kolizím a míchání tiskových dat navzájem).

Pro Apple ][ existují i modernější karty s vlastním procesorem.
Jednou z nich je třeba A2MP3 karta, obsahující mp3 přehrávač, který se dá ovládat po sériové lince. A vedle něj ještě právě to sériové rozhraní. Odesláním jednoduchých povelů pro mp3 přehrávač na kartě povelem PRINT lze přehrávat, zastavovat a přeskakovat jednotlivé empétrojky.

Zajímavou věcí je i “rozpoznávání řeči”, které umí semiautonomní karta Lis’ner. Její činnost spočívá v tom, že při zachycení některého z 64 naučených příkazů vyšle do počítače definovaný řetězec znaků (objeví se na vstupu, jako ze sériové linky nebo třeba z klávesnice). Nepracuje ale úplně samostatně, software částečně využívá výkon hostitelského procesoru.

Existují i celé periferie, dalo by se říci platformově nezávislé, které tíhu zpracování vstupu berou na sebe a počítači posílají už hotová data. Například krásný scanner Oberon OmniReader, který sám provádí OCR textu a do počítače po sériové lince posílá přímo hotový text jako ASCII znaky.

Ale to se dostáváme pryč od pravých hybridů.

Běh více procesorů současně – svého druhu – znají na Atari Falcon nebo na Next Station/Next Cube, kde je Motorola 68030 doplněna DSP Motorola 56001.
DSP jsou ovšem jako procesory dost specifické a programují se prostě jinak, než hlavní procesor počítače, je proto nutné do jejich tajů proniknout. Navíc je třeba řešit například i jinou šířku wordu – 24 bitů na DSP a 16 bitů u 68030.
Tady už ale opravdu dochází ke zvýšení výkonu počítače tím, že se o specifické práce s daty postará DSP.

Pro osmibitové Atari vznikalo (ale sériově se nevyrábělo) Atari 1060. Opět to bylo zařízení, které mělo umožnit běh CP/M na Atari, ale šlo na to jinak, než procesorová karta pro Apple ][ (nebo než rovněž sériově nevyráběné zařízení Atari 1066, což byla karta do sériově nevyráběného rozšiřujícího boxu Atari 1090XL).
Jednalo se vlastně o samostatný Z80 počítač, připojený přes SIO, ke kterému se připojovala disketovka (Atari disketovky neuměly číst CP/M formát – ale to neumí ani Apple ][, na kterém to Microsoft vyřešil použitím vlastních nekompatibilních formátů) a Atari počítač jako konzole (nebo spíš jako klávesnice – Atari 1060 totiž mělo vlastní videovýstup ve 40 nebo 80 znacích, což Atari samo o sobě neumělo).

Co se ovšem vyrábělo, bylo zařízení ATR 8000. Jde o samostatný počítač se Z80 (a CP/M) nebo volitelně i s 8088 (a s MS DOSem), schopný i samostatného běhu (má porty nejen na disketovky, ale i sériový a paralelní – v případě, že není jako terminál připojeno Atari přes SIO, pracuje se s terminálem na sériovém portu).
Výsledkem bylo provozování CP/M nebo MS-DOSu buď ve 40 znacích na řádek, nebo bylo možné Atari hardwarově upravit – “Bit 3 card”, zvládající šíři 80 znaků, jejíž přítomnost si terminál ATMON použitý pro komunikaci s ATR 8000 testuje.

Tento stroj už nechává tušit, že je trošku lopata na komára. Je nejen velký (s velkou základní deskou), ale i obtížně přenosný kvůli těžké kovové bedně, ve které je zabudován.
Mnohem menší a elegantnější je přestavba disketovky Indus GT, která taky obsahuje Z80, a tak po rozšíření paměti zvládne CP/M provozovat (a Atari se tak opět změní v CP/M terminál). 80 znaků na řádek se řeší zobrazením znaků poloviční šířky (4 pixely) v grafickém monochromatickém režimu. Zde ovšem uživatel přichází o výhodu zabudovaných P:R: zařízení v ATR 8000 (tedy paralelní a sériový port).

Budeme se divit, ale podobné řešení se objevilo i u ZX Spectra.
Přišel s ním Timex, šlo o disketovku FDD 3000, jejíž pozdější verze se dosti rozšířila v Polsku.
Šlo o to, že do ZX Spectra se zasunul v podstatě sériový interface s vlastní ROMkou, přes který se komunikovalo s malým Z80 počítačem, který ovládal disketové jednotky a po sériové lince vracel načtená data.
ZX Spectrum má samozřejmě taky procesor Z80, a tak je teoreticky schopno provozovat CP/M. V praxi mu v tom brání dvě věci – jednak VideoRAM umístěná v druhé třetině paměťového prostoru, který CP/M aplikace využívají, druhak přítomnost ROM, které se nejde snadno zbavit, a která tak CP/M, které využívá paměť jako RAM už od adresy 0, překáží.
FDD 3000 díky své koncepci umožňuje provozovat CP/M bez úpravy počítače – prostě CP/M i s programy běží na procesoru FDD 3000 a Spectrum se promění v… v terminál připojený přes sériák.

Co se týče Commodore 64, tak snad lze jen zmínit, že je možné poslat krátký kód do RAM disketové jednotky a nechat ji tuto úlohu vykonávat. Může tak opět odlehčit hlavnímu procesoru, brát od něj po sériáku data a výsledky posílat zpět, ale na provoz “cizího” operačního systému to není, oba procesory (v počítači i v disketovce) jsou 6502.
U Atari se se zaváděním kódu nepočítalo – kontroléry disketových jednotek byly, narozdíl od centrálního CPU 6502, procesory z rodiny 8048 a jen v případě disketovky Indus pak Z80 (česká VD-40-F měla 8085 – i tam by při úpravě velikosti RAM a umístění ROM člo o CP/M uvažovat).

Zatímco snaživci horlivě implementují unix-like systémy na osmibity (například známý Uzix pro MSX nebo uMZiX pro Sharp MZ-800), na stroji Texas Instruments 99/4A byla situace projektem TILinux vyřešena stavbou hybridu. Malý jednodeskový počítač s Linuxem, Snapper 9260, je přes AVR, které simuluje GROM a poskytuje sériovou linku, připojen k TI 99/4A jako k terminálu.
V dnešní době by se místo Snapperu 9260 použilo něco přiměřeně levného a dostupného – nejspíš nějaké OLinuXino (je k dispozici i jako dvoujádrový stroj s Debianem za 33 euro, možnost připojení konzole přes sériák je samozřejmostí), nebo etalon mikropočítače moderní doby – Raspberry Pi.

To je základem rozšiřující karty “Apple II Pi“, která slibuje haldu věcí:
* upgrade na Apple IIGS
* akceleraci
* Linux na Apple ][
* kvalitní grafiku přes HDMI výstup
* zachované čtení z fyzických disket, což běžné PC s emulátorem neumí
* možnost připojení i k Apple //c, které je jinak nerozšiřitelné
* využití mass storage a případně ethernetu.
Z toho je znát, co to asi bude po hardwarové stránce: očesaná Super Serial Card (bez ROMky) s připojeným Raspberry Pi.
Karta s Raspberry se připojí do Apple, připojí se HDMI monitor (nebo se dá použít i původní Apple monitor, neboť Raspberry má i kompozitní videovýstup), k Applu je možno připojit myš, pokud máte Mouse Card (jinak jde využít USB myš připojená k Raspberry).

Zbytek funkčnosti této “lopaty na komára” je pak na straně software.
Na Raspberry se spustí server a Apple po bootu nahrává klientský program. Výsledkem je, že Apple ][ slouží jako přídavná klávesnice (a myš) pro Raspberry Pi, a Raspberry může přes ovladač přistupovat k jeho disketovým jednotkám. (Původní USB klávesnice a myš u Raspberry je ale nadále funkční.)
Provozovat takhle Linux s klávesnicí z osmibitu ale není to, co by uživatel především chtěl. Proto je tu upravený emulátor Apple IIGS – GSPort.
Schválně se podívejte na následující video a zkuste hádat, který z počítačů je opravdový Apple IIGS (nedivte se formfaktoru – prodával se upgrade pro Apple IIe, vlastně deska Apple IIGS, která se dovnitř zabudovala) a který je “emulátor na Raspberry Pi strčený do krabice od Apple ][“, dalo by se říct.
http://www.youtube.com/watch?v=wZSLrq5LQhU&list=PLlPKgUMQbJ7_NYzv8teRtEAZZzydgqMWV
(No, aspoň tu malinu z plochy si mohl dát pryč a nahradit ji jablíčkem…)

Na jednu stranu jsou tu dvě či tři výhody:
* cena Raspberry Pi jakožto akcelerátoru nebo upgrade – zatímco nějaký ten SpeedDemon, Transwarp, ZipChip nebo RocketChip pro akceleraci “obyčejného” Apple ][ se občas dá kolem těch deseti tisíc korun sehnat, akcelerace Apple II GS je mimo možnosti smrtelníků – Transwarp GS patří cenově i výskytem do říše snů. Upgarde “obyčejného” Apple ][ na II GS taky není nic primitivního. Takhle za cenu kolem tisícovky dostane člověk “akcelerované Apple IIGS”, byť víceméně emulované.
* možnost použití u Apple //c, které je jinak nerozšiřitelné.
* možnost pracovat s image emulátorových souborů bez nunosti jejich přenášení na fyzická média.

Na druhou stranu jde o to, zda a jak uživatel skousne vědomí, že se dívá v podstatě na emulátor a osmibit mu poskytuje vlastně jen dobovou klávesnici.