O mojí osobě

Něco ke stažení

Články a návody

Poezie

Odkazy

Záznamová zařízení


Kazetový magnetofon


Standardním záznamovým zařízení ZX Spectra byl kazetový magnetofon. To sice umožnilo výrazně snížit cenu počítače, ale s rozšiřující se pamětí z 16 na 48 a později i na 128 kb RAM se zároveň odpovídajícím způsobem prodloužila i doba nahrávání programu, takže čekat deset minut na nahrání programu pro ZX 128 bylo běžným jevem. No a když se poté ještě objevila systémová hláška o chybě v nahrávání, nejeden uživatel podlehl záchvatu zuřivosti.

Další velkou nevýhodou bylo znemožnění odkládání momentálně nepotřebných bloků z paměti na vnější záznamové zařízení (takzvané swapování) a donahrávání potřebných utilit. Složité (zvlášť pro nezkušené uživatele) bylo i nalézt začátek potřebného programu na delších kazetách, protože uživatel se mohl orientovat pouze podle nic neříkajícího vrčení, pískání a krátkého zaváděcího tónu, kterým začínal skoro každý blok (nemusel nutně, pokud program používal vlastní obslužný podprogram pro nahrávání, takzvaný loader).

BASIC nabízel ke komunikaci s magnetofonem čtyři důležité příkazy:
LOAD pro nahrání bloku či programu do paměti,
SAVE pro uložení na kazetu
VERIFY pro kontrolu, zda byl program uložen správně
a MERGE, který do paměti nahrál jen ty části, které v ní chyběly (to se používalo pro programy psané v BASICu, kde každý řádek programu měl své číslo a MERGE nahrál jen ty řádky, jejichž číslo nebylo ještě použito).

Protože pomocí těchto příkazů se velmi pracně kopírovaly programy z jedné kazety na druhou, mnoho uživatelů raději používalo pro kopírování dva magnetofony spojené přes MIC-EAR. To ovšem při tehdejší nízké kvalitě kazet a magnetofonů záznam velmi zkreslilo a často již nešel nahrát. Proto se rychle rozšířily různé kopírovací programy.

První kopírovací programy fungovaly podobně jako při použití příkazů LOAD a SAVE - uživatel vložil do magnetofonu kazetu, program nahrál jeden (u prvních typů) nebo více bloků kopírovaného programu do paměti. Pak uživatel vložil kazetu cílovou a kopírovací program všechny bloky zase uložil. Tyto programy nabízely i různé pomocné funkce, jako přejmenování bloků, pípnutí na konci programu usnadňující hledání na kazetě nebo možnost kopírovaný program upravit.

Protože kopírovací programy byly často zneužívány k pirátskému šíření komerčního software, bránili se jeho producenti používáním například bezhlavičkových bloků (které rutiny z ROM Spectra a tedy ani příkaz LOAD nebyly schopny nahrát) s vlastními loadery nebo nestandardní rychlostí nahrávky. To ovšem tvůrce kopírovacích programů nezastavilo a vytvořily další vylepšené verze, které si poradili i s těmito překážkami.

Postupně se tak objevovaly programy poskytující uživateli stále větší komfort. Oblíbenými vylepšeními jsou například zavedení komprese, různá počítadla a propracované monitory. Některé kopírovací programy se pokoušely zkrátit dobu nahrávání pomocí zvýšené přenosové rychlosti, ale brzy se od jejich používání upustilo, neboť nahrávání takových programů bylo značně nespolehlivé. Velký rozmach kopírovacích programů nastal společně s rozšířením modelů se zvětšenou pamětí RAM, hlavně ZX Spectra 128 a Didaktiku Gama.

ZX Microdrive


Firma Sinclair Research si byla vědoma nevýhod používání kazetových magnetofonů, ovšem stále chtěla dodržovat svojí strategii ZX Spectra jako levného počítače pro každého. Protože na počátku osmdesátých let patřily mechaniky 5,25" k celkem drahým zařízením, přišla proto na trh se svým vlastním řešením. Tak v roce 1983 přišlo na trh ZX Microdrive.

Řešení to bylo v celku nezvyklé - ZX Microdrive se skládalo ze zvláštní magnetofonové pásky dlouhé 6 metrů a 1.9 milimetru široké, která byla spojena do kruhu v malé krabičce. Na jednu pásku se vešlo asi 85 kb dat a čtecí rychlost byla asi 15 kb za sekundu. Jednotlivá ZX Microdrive se dala zapojovat do řetězce, který jich mohl najednou obsahovat až 8.

ZX Microdrive využívalo pro svůj běh speciální příkazy z ROM ZX Spectra (např. CAT, FORMAT, atd.), které sice nebyly připraveny přímo pro něj, ale byly do ROM zabudovány právě pro možnost nějakého externího média. Jisté potíže pak způsoboval fakt, že ZX Microdrive neobsahovalo vlastní paměť RAM, takže při jeho připojení k ZX Spectru si přidalo vlastní proměnné k systémovým proměnným Spectra. To znamenalo zmenšení volné paměti pro zaváděcí BASICové programy, pokud na tuto možnost nebyly připraveny (důvodem je nastavení hodnoty RAMTOP, tj. rozdělení paměti na část určenou pro systémové proměnné a BASIC a pro ostatní data a strojový kód, která se nastavuje na nejnižší možnou).

Toto řešení bylo sice po mírné úpravě ještě použito pro Sinclair QL, ale již o rok později bylo staženo z trhu. Hlavním důvodem jeho neúspěchu byla jeho celkem vysoká cena (kus se prodával skoro za 5 liber), častá poruchovost a hlavně vysoká míra nekompatibility různých verzí.

Betadisk


V polovině osmdesátých let dochází k poklesu cen disketových mechanik na celkem přijatelnou rovinu, což umožňuje vznik různých disketových systémů.

Jedním z těch prvních je zařízení označované jako Betadisk, používající systém TR-DOS, vyvinutý firmou Technology Research.

Betadisk podobně jako ZX Microdrive neobsahoval vlastní paměť RAM, ale přidával si vlastní proměnné k systémovým proměnným ZX Spectra. Protože autoři systému předpokládali také možnost použití Microdrive, jsou obě zařízení schopna pracovat zároveň - v praxi to znamená, že si navzájem nepřepisují své proměnné, ale posunou ty své na volné místo. Toto řešení sice umožnilo vzájemnou spolupráci, ale ještě více se zmenšila volná paměť pro BASIC a znemožnilo tak běh mnoha programů.

Na rozdíl od ZX Microdrive nepoužívá Betadisk předem připravené příkazy v paměti ROM, ale sám rozšiřuje příkazovou sadu BASICu o příkazy se speciální syntaxí. Má také jednoduché uživatelské prostředí spustitelné z BASICu, které trochu připomíná příkazovou řádku PC-DOSu.

Unikátní postup byl zvolen pro volání Betadisku. To se řeší skokem do datové oblasti ROM ZX Spectra, neboli oblasti, kde normálně neběží program, ale jsou z ní pouze čtena data. K tomu je využita část paměti, kde je v ROM uložen standardní font. Betadisk na požadavek procesoru o čtení instrukce z této oblasti reaguje přestránkováním vlastní ROM, takže procesor zpracuje již instrukci z ROM TR-DOSu. Po ukončení činnosti TR-DOSu se ROM opět vymění a běh programu pokračuje v místě, odkud byl proveden skok do datové oblasti.

Další zvláštností Betadisku je jeho formát disket. disketa formátovaná pod TR-DOSem totiž neobsahuje žádnou alokační tabulku souborů (FAT) ani nic podobného ale pouze velmi jednoduchý adresář. Práce s takovým souborovým systémem je sice velmi rychlá a jednoduchá, ale má i své nevýhody. Pokud je smazán soubor, který není na disketě poslední, není možné uvolnit místo, které zabíral pro další soubory, ale je nutné disketu "setřást", tzn. dojde k posunutí všech následujících souborů směrem k začátku diskety, což je vzhledem k rychlosti počítače značně zdlouhavá operace. I přes tuto nevýhodu ovšem patřil Betadisk k nejrychlejším disketovým systémům na ZX Spectru a to především proto, že vzhledem k formátu disket nemohlo dojít k fragmentaci souboru.

K Betadisku bylo možné připojit až 4 mechaniky, byl průchozí a bylo za něj možné připojit další periferie.

Zajímavou a především hráči počítačových her hojně využívanou schopností Betadisku je tlačítko zvané SnapShot, nebo také Magic Button. Toto tlačítko je umístěno na řadiči a jeho stištění způsobí uložení celé paměti RAM na disk. Vše se ukládá v jednom velkém souboru bez ohledu na to, jaká část paměti je využita. V případě stištění Snapu ve 128 kb módu se uloží pouze stránky, které jsou používány (obsahují i jiné hodnoty kromě nuly). Kromě obsahu paměti se ukládá také obsah všech registrů, včetně ukazatele na právě prováděnou operaci. Takto uložený blok se dá později opět spustit a program bude pokračovat od stavu, kdy bylo stlačeno "magické tlačítko" a program nepozná, že byl přerušen a uložen (samozřejmě existuje možnost detekce, ale využilo jí pouze pár programů).

Pro své dobré vlastnosti se používá i u "Spekter nové generace" - u Pentagonu, Scorpionu a Spritnera. Díky podrobnému návodu na stavbu řadiče Betadisku, který vyšel v roce 1989 v Mikrobázi (4/89), se toto zařízení značně rozšířilo i na území tehdejšího Československa.

Formát Betadisku, jak jsem se již zmínil, neobsahuje tabulku FAT. Má všechny sektory o stejné délce 256 bytů a na 1 stopu připadá celkem 16 sektorů. Dají se k němu použít oboustranné i jednostranné diskety, a to jak 5,25" tak i 3,5". Podle schopností mechaniky je možno diskety formátovat na 40 až 42 nebo 80 až 83 stop.

Na první stopě diskety (tedy té s číslem 0) je 16 sektorů použito pro odkazy na uložené soubory. Rozložení sektorů je následující:

Sektory 0 až 7 jsou použity pro adresář. Ten v každém sektoru obsahuje 16 položek o délce 16 bytů, to znamená celkem 128 položek v celém adresáři. Každá položka obsahuje informace o jednom souboru na disketě, tedy jméno, typ (BASIC, CODE, DATA), startovní adresu, délku a stopu a sektor kde začíná.
Sektor číslo 8 je použitý pro informace o formátu diskety, jménu diskety, početu souborů na disku, dále o začátku volného prostoru (to je za posledním uloženým souborem), a další.
Sektory 9 až 15 se používají při stištění tlačítka SNAPSHOT. Ostatní sektory jsou určeny pro uložené soubory.

Didaktik 40 a Didaktik 80


Dalším disketovým systémem bylo zařízení Didaktik 40 (popřípadě Didaktik 80) od firmy Didaktik Skalica, které bylo vyráběno k počítačům Didaktik Gama a Didaktik M. Didaktik 40 bylo modernější zařízení, než Betadisk, ale mělo i své velké nevýhody. Jednou z nevýhod byl dlouhý připojovací kabel k počítači, který vytvářel na sběrnici počítače indukční zátěž, čímž rušil běh počítače i přenos dat mezi počítačem a disketovou jednotkou. Další nevýhodou byla absence služeb pro programy v assembleru. Takže pokud se změnil hardware, k čemuž došlo u počítače Didaktik Kompakt, stala se nová verze nekompatibilní pro všechny programy, které volaly rutiny přímo v ROM. Se změnou hardware bylo totiž nutné změnit některé rutiny MDOSu (systému, který používal D40/D80) a tedy došlo k drobnému prodloužení, nebo zkrácení rutin a tím pádem k posunutí vstupních adres. Takže program, který volal přímo některou rutinu v ROM prováděl sice potom skok na stejnou adresu, ale ta obsahovala dávno něco jiného a obvykle se program zhroutil.

Přesto měla i řadu výhod. Formát disket systému MDOS byl už výrazně propracovanější. Obsahoval jednoduchou FAT, která je velice podobná FAT 12 systému MS-DOS, ale není s ní kompatibilní. Řadiče firmy Didaktik se vyráběly ve dvou verzích - Didaktik 40 s mechanikou 5.25" a Didaktik 80 s 3,5" mechanikou.
D40 používal formát jednostranný i oboustranný se 40 stopami po 9 sektorech na jednu stopu. Každý sektor měl délku 512 bytů.
D80 se ve formátu lišil pouze počtem stop - místo 40 jich používala 80.

Mezi již zmiňovaným Betadiskem a D40/D80 existovaly ještě tři významné rozdíly. První z nich je ten, že k D40/D80 se daly připojit pouze dvě mechaniky. Ten druhý byl, že D40/D80 měl kromě vlastní 16 kb ROM také 2 kb SRAM. Díky tomu nemusel používat RAM ZX Spectra k ukládání svých systémových proměnných a díky tomu odpadly problémy s nedostatkem paměti pro některé programy, které občas nastávaly s Betadiskem. Třetím důležitým rozdílem bylo použití tlačítka SNAPSHOT. To fungovalo u D40/D80 stejně, ovšem ukládalo pouze 48 kb paměti, jelikož byl určen původně pouze pro Didaktik M.

Protože formát disket systému MDOS je složitější, než u Betadisku, popíšeme si ho pouze stručně.
Nejdůležitější informace se samozřejmě nacházejí v první stopě a prvním sektoru (jelikož se číslují od nuly, tak mají číslo nula), který se nazývá boot sektor.

Význam jednotlivých bytů je následující:

byte význam
0-127 Nevyužité byty
128-191 Zde se nacházejí systémové proměnné a informace o formátu. Většina nemá moc velký význam (např. údaje o mechanikách, které měl systém k dispozici při formátování diskety) a tak se zmíním jen o těch nejdůležitějších
177 - třetí bit je nastaven, pokud je disketa naformátována na 40-tistopé mechanice - čtvrtý bit určuje, zda byla disketa naformátována oboustranně
178 - zde je uložen počet stop na jedné straně diskety
179 - tento byte určuje počet sektorů na jedné stopě
180 - je vždy roven 0
181-183 - v těchto bytech je ještě jednou uložen obsah bytů 177 ..179
192-201 Tady je uloženo jméno diskety o maximální délce 10 znaků
202,203 Do těchto dvou bytů se při formátu uloží náhodně vygenerované číslo. To se používá pro rozlišení dvou stejně pojmenovaných disket.
204-207 Na tomto místě je uložen text SDOS který slouží k rozpoznání diskety zformátované pod systémem MDOS.

Zbylé byty v boot sektoru jsou nevyužité.

Tabulka FAT

MDOS používá 12-ti bitovou FAT, která umožňuje ukládat soubory i do sektorů na přeskáčku, to znamená že mezi jednotlivými sektory souboru mohou být umístěny i sektory jiných souborů. FAT potom slouží k určení sektorů jenž patří k uloženému souboru. Totiž v adresáři je číslo položky ve FAT (to je první sektor), obsahem této položky je číslo další položky (další sektor), ... až nakonec položka ve FAT neobsahuje číslo další položky, ale obsahuje kód, který říká, že tento sektor byl poslední. To celé vytváří tzv. cestu ve FAT. Poloha položky ve FAT pak odpovídá konkrétnímu sektoru na disketě (každý sektor na disketě má svou položku ve FAT přičemž nezáleží na jejím obsahu).
Protože položka tabulky FAT je 12-ti bitová, používá se pro ni 1,5 bytu. Zbytek rozpůleného bytu používá položka sousední. Jeden sektor MDOSu má 512 bytů, z toho plyne, že se do něho vejde 341 položek FAT a půl bytu zbude. Tomu se říká zalomení FAT. Do 4 bitů zalomení FAT se ukládá hodnota 13.
Jelikož jedna položka má 12 bitů, je možné do ní uložit číslo 0 až 4095. Sektorů na jedné disketě může být nejvýše 1705 (ve skutečnosti při maximálním formátu 82 stop x 10 sektorů 1640 sektorů na disketě). Takže čísla větší než 1705 nemohou být číslem položky ve FAT, toho se využívá a některá taková čísla mají speciální význam :

3549 - Sektor je nedostupný. Takto jsou označeny sektory, ve kterých je uložen boot, FAT, adresáře nebo to jsou neformátované sektory. MDOS tak pozná, že tyto sektory nemůže použít k zápisu.
3583 - Touto hodnotou jsou označeny při formátování vadné sektory, které se pak nedají ani číst, ani se do nich nesmí zapisovat.
3072 - Takto se označují prázdné soubory (jejich délka je nulová).
0 - Nula znamená prázdný sektor, do kterého se mohou ukládat data.

Značka konce souboru se vytváří součtem zbytku po dělení délky souboru 512 a přičteme k tomu 3584, tedy (délka modulo 512)+3584.

Adresář :
Adresář je umístěn v sektorech 7 až 14 (jako obvykle číslováno od 0). Adresář je v podstatě jednoduchá tabulka, jehož každá položka má 32 bytů a přesně definovanou strukturu. Protože obsazuje 8 sektorů (tj. 4096 bytů) lze snadno spočítat, že se do něho vejde celkem 128 položek, tedy maximálně lze na jednu disketu systému MDOS uložit 128 souborů.

Struktura jedné položky adresáře:

Byte Význam
0 Přípona souboru (viz popis pod tabulkou)
1-10 Jméno souboru, je-li kratší než 10 znaků je doplněno kódem 0.
11,12 Délka souboru - 0 až 65535.
13,14 Počáteční adresa souboru, nebo startovní řádek jedná-li se o BASICový program.
15,16 Délka BASICového programu bez proměnných, u bytesů nemá význam.
17,18 Vstupní bod do FAT - jedná se vlastně o log. adresu 1. sektoru, který je souborem obsazen.
19 Zde je uložen vždy kód 0
20 Atributy, každý bit odpovídá jednomu atributu v pořadí HSPARWED (H-hidden = bit 7 )
21 Třetí byte pro určení délky souborů je-li delší než 65535 bytů, obvykle soubory typu sekvence.
22-31 Zaplněno hodnotou 229

MDOSu známé přípony souborů :

P - spustitelný program v jazyce BASIC
B - bytes, obecný binární soubor
N - number array, číselné pole
C - character array, znakové pole
S - snapshot
Q - sequence, sekvence


MB-02


Třetím nejrozšířenějším diskovým systémem je MB-02 vyráběný zlínskou firmou 8BitCompany. Ačkoliv přišel na trh v roce 1994, kdy již Spectra měla svou zlatou éru dávno za sebou, díky vysoké kvalitě se velmi rychle rozšířil a bývá označován jako nejlepší diskový systém, který byl pro Spectrum vyvinut.

Na rozdíl od dříve popisovaných systémů je MB-02 schopen pracovat i s disketami se záznamem HD. Kapacita diskety je u HD disket 1.800 kb s přenosovou rychlostí až 50 kb/sec., u DD disket je kapacita 840 kb s rychlostí 25 kb za sekundu. Součástí MB-02 je také EPROM o velikosti 2 kb (lze ji rozšířit až na 64 kb) a SRAM o velikosti 128 kb (maximálně až 512 kb). K MB-02 je možné zapojit celkem až 4 mechaniky 3,5", má také výstup pro Kempston nebo Amiga myš.

Tento systém také umožňuje na jedné disketě až 256 adresářů a v každém adresáři až 65279 souborů.

Se systémem se standardně dodává základní programové vybavení, tedy BS-ROM, BS-DOS a BS-BIOS. K dispozici je dále řada podpůrných utilit, např. pro převádění souborů mezi formátem BS-DOS, DP-DOS, M-DOS a MS-DOS-včetně práce s adresářovými strukturami nebo pro emulaci řadiče D80.

Zajímavou vlastností tohoto systému je emulace kazetového magnetofonu. To znamená, že je možné na disketu uložit program spolupracující s kazetou a následně ho z této diskety spouštět. Program nepozná, že nečte data z kazety, ale z diskety (ovšem tato operace bude provedena mnohem rychleji). To ale platí pouze za předpokladu, že tento program používá rutiny umístěné v ZX-ROM, a ne vlastní nahrávací/ukládací rutiny. To je mimo jiné umožněno tím, že každá disketa si ukládá pozici, na které je "přetočená", tedy má ukazatel na pozici na virtuální pásce. Samozřejmě je možno přepnout systém do stavu, kdy při použití nahrávacích a ukládacích rutin v ROM program bude pracovat s opravdovým magnetofonem. MB-02 je také vybavena utilitami zabezpečující převod souborů mezi disketou a kazetou, a to včetně jinak problémových bezhlavičkových souborů.

Další zajímavostí hardware MB-02 je možnost zapnout mód plynulé RAM 64 kb. To znamená, že na adresu 0 - 16383 (kde je u běžného Spectra paměť ROM) lze uložit libovolný program (například upravenou ROM ZX Spectra). Následně je možné do této oblasti zakázat zápis a simulovat tak paměť ROM. Autoři MB-02 plánují pomocí této vlastnosti podporovat i systémy CP/M a UNIX.

Zpět na index