Určování čísla záznamové jednotky

Ataristi a commodoristi prominou, ale ani Tramiel, ani Bushnell neměli šlechtický titul. A neměli ho proto, že sir Clive je prostě bůh. Jistě, Atari 800 je pěkná ukázka mikroinženýrství a promyšlené práce. Commodore (nějaký, liboovolný) je zas ukázka toho, že i s jednoduchým hardwarovým návrhem a Basicem od Microsoftu lze udělat úspěšný počítač (nebo aspoň herní platformu). Když ale někde slyším “nesnáším způsob, kterým v Sinclair Research navrhovali počítače”, je mi smutno.

Tak, kopl jsem si do tříregistrových, ulevilo se mi, a můžu pokračovat.

Ukázali jsme si, že se sice potrhlým, ale přeci jenom nějakým způsobem nechá v Basicových (a potažmo i strojových) programech ze ZX Microdrivu nahrávat tak, jako by počítač znal aktuální nastavenou cestu, i když s něčím takovým původně tvůrci nepočítali (díky systémovým proměnným je ale známo číslo posledního použitého Microdrivu, a to lze pro tento účel zneužít).
Pokud si říkáte, že to Sinclair nevychytal, tak se podívejte na Commodore – když budete mít v Basicu zápis LOAD “něco”,8 – bude se nahrávat natvrdo z mechaniky 8, i kdyby byla disketa vložena v mechanice 9 (to je taky nápad – číslovat disketovky od osmičky).
I na Atari musíte specifikovat mechaniku podobně jako u ZX Microdrivu (LOAD “D1:něco”), i když musím dodat (a zabránit tak protestujícím hláskům), že MyDOS umí nastavit “defaultní cestu” a tu volat použitím LOAD “D:něco” – pokud není nic nastaveno, použije se D1.
Takže na osmibitech nebyl Sinclairův přístup nijak neobvyklý a teoreticky nepředstavoval nevýhodu.

Nojo, jenže tohle všechno jsou věci, které neřešíte, když máte jednu disketovku (což většina lidí měla, protože disketové jednotky Atari nebo Commodore stály víc, než samotný počítač – dvojice disketových jednotek se objevovaly snad jen u Apple II, kde jednak byla jedna karta s řadičem, ke které se připojovaly poněkud vykuchané mechaniky víceméně bez elektroniky, druhak samotná cena počítače byla taková, že se nějaká disketovka vedle toho už ztratila).
Když si ale pořídíte disketovek (nebo Microdrivů) víc, najednou vám může začít vadit, že v disketovce 1 máte disketu s programem, v disketovce 2 disketu s daty, ale program tvrdošíjně sahá stále na disketovku 1 – nehledě na situaci, kdy disketu s programem strčíte do disketovky 3, což je situace, se kterou ani autor programu nepočítal.
A to ještě není vrchol psychózy, která se tehdy (ale i mnohem později) objevovala v populárních časopisech o mikropočítačích – mám na mysli prohlášení typu “připojíte az 4 jednotky po 360 kB, to je celkem 1440 kB dat, tedy skoro jeden a půl mega…”. Více než megová kapacita je sice hezká, ale ne když je rozkouskována na čtyři média – nedovedu si představit, že by nějaký program takhle dokázal ukládat data. Možná tak nějaká hodně šílená vícesouborová databáze, ale ne třeba textový editor.
(A to si představte, že podobný způsob ukládání požadoval jistý dopis čtenáře v ZX Magazínu pro Dataputer a slovníkovou databázi Tolstoj, která je navíc určena pro D40/80, kterou volá ze strojáku – a to v devadesátých letech- Ano, byli jsme tehdy asi mladí a blbí. Nebo tedy aspoň někdo asi ano.)

Tak. Jsme u výčitek Sinclairovi, že si vybral zrovna Microdrive, a že to měl udělat jinak.
Nu – Sinclair Research nabídla technologii, která byla “good enough” (jak se dnes tak progresivně razí) a za prakticky zanedbatelnou cenu.
Šlo o technologii, kterou sami vyvinuli – nepoužít ji by znamenalo “utopenou investici”, tedy dopustit se toho, co dnes všichni vyčítají HP a Nokii ohledně jejich mobilních operačních sytémů.
Marketingově bylo možné udělat ještě jednu věc – nabídnout ZX Microdrive, a těm, kdo jsou ochotni zbavit se peněžního obnosu v hodnotě několikanásobku pořizovací ceny počítače, pak opravdovou disketovou jednotku (podobně, jako Atari a Commodore nabídli jako alternativy kazeťák proti disketovce).
Což by znamenalo vlastní disketovku vyvinout (nebo od někoho za peníze převzít), konkurovat už existujícím zařízením jiných výrobců, a Sinclair neudělal zas tak velkou chybu, když řekl “tady máte Microdrive, a komu to nestačí, může si od někoho jiného koupit disketovku”.
Je už pak jen věcí poměrně překotného (a obtížně předvídatelného) vývoje trhu, kdy nestačení a pořizování disketových jednotek od někoho jiného postihlo většinu uživatelů, kteří se nesmířili se samotným kazeťákem (což, přiznejme si, zejména mimo Británii až do 90. let ten tapezetor většině stačil).

To jsme se ale pořád nedostali k tomu hlavnímu.

Máme tedy několik těch disketových jednotek a k počítaři je připojíme.
Jak on tedy pozná, která je která?
Na Apple II to bylo zpočátku jednoduché (nemluvím teď tedy o pozdějších UniDisk jednotkách), protože deska řadiče měla dva konektory, a ke kterému konektoru se disketovka připojila, takové číslo pak měla.
Počítače s inteligentní sběrnicí – a teď není řeč jen o SIO sběrnici Atari a IEC u Commodore VIC-20/64/128/16, ale i HP-IB (u počítačů a kalkulaček Hewlett-Packard, ale i Commodore PET) a pozdějším SCSI – vyžadovaly nastavení adresy (čísla zařízení) přímo na jednotce.
U Atari a Commodore je to realizováno přpínači s možností nastavení jedné ze čtyř kombinací.
O tom, co se stane, když zařízení máte nasvičované jinak, než si myslíte, nebo když se vám sejdou dvě zařízení s identickým ID, asi netřeba dlouze básnit. Na osmibitech si to ještě s vypětím sil uhlídáte, ale na SCSI v nějaké větší změti interních a externích disků, CD-ROMek, scannerů a podivných interních zařízení, které si kupodivu taky uzurpují nějakou tu SCSI adresu, se kolizím vždy nevyhnete.

U ZX Microdrive to ale bylo jinak.
Žádné sviče. Žádné nastavování adresy.
Prostě dostupný počet Microdrivů (které jsou zcela identické) zapojíte vedle sebe, a ten nejblíž počítači je vždycky “m”;1 a ten úplně nejdál, pokud jich máte 8, “m”;8.

Všechno zařizují dva dráty, které jdou ze ZX Interface 1 a procházejí každým Microdrivem.
COMMS CLK a COMMS_OUT, který do Microdrive vstupuje na jednom konci jako COMMS_IN a vystupuje na druhém jako další COMMS_OUT. Uvnitř microdrivu je jeden prvek kaskády posuvného registru (D flipflop), který se posouvá na povel jdoucí od COMMS_CLK.
Tedy pokud má ZX Microdrive na COMMS_IN jedničku, je právě aktivním Microdrivem.
Když přijde po COMMS_CLK impuls, předá Microdrive stav svého COMMS_IN na COMM_OUT. Pokud nebyl aktivním, nic se neděle, maximálně z ničeho niic zjistí, že teď už aktivní je, protože na COMMS_IN mu přišla jednička. Pokud aktivní byl, tak už není, protože převzal do své části registru nulu a jedničku přicházející původně na COMMS_IN teď vysílá přes COMMS_OUT dalšímu Microdrivu v řadě na jeho COMMS_IN.
Na počátku je ale třeba případné jedničkové obsahy posuvného registru v jednotlivých Microdrivech vykopírovat do pryč.
Vše je spojeno do jediné akce – vždy se pošle 8 bitů, nuly a jednička, která se prokopíruje na požadovaný Microdrive (tedy při aktivaci osmého Microdrive se pošle jednička v prvním bitu, v případě prvního microdrive se jednička nastaví až do poslendího osmého bitu).
Při volání příslušné rutiny se číslo Microdrivu uvádí v registru A, nula nebo číslo větší než 8 se bere jako povel k zastavení motorů všech Microdrivů. (Součástí rutiny pro výběr Microdrivu je i roztočení motoru a test, zda je vložena cartridge).
Omezení na 8 mechanik je tedy dáno více touto rutinou než elektricky – po úpravě software by (pokud by to dovolovala délka vedení) bylo možno obsluhovat i jiný velký pořet zřetězených jednotek.

To je celé. Jako (skoro) vše u Sinclaira – geniálně jednoduché, jednoduše geniální.