Formát diskety systému TR-DOS

Formát diskety (disku či jiného zařízení) je naprosto nezbytné znát při používání různých disk doktorů, nebo při psaní programů pro konverzi mezi systémy. Naštěstí formát diskety TRDOSu je velmi jednoduchý a pro všechny známé verze Betadisků (včetně ruských variant počítačů Pentagon a Scorpion) je stejný.

Základní vlastnosti

  • nemá FAT, má pouze adresář s velmi jednoduchou strukturou
  • má vždy sektory dlouhé 256 bytů, vždy má 16 sektorů na 1 stopě
  • proměnnými parametry jsou počet stop (40 nebo 80) a počet stran diskety (1 nebo 2), z toho vyplývají 4 běžně používané formáty disket, kterým TRDOS rozumí, počty stop mohou být větší (42 a 83), nebo menší, ale obvykle se nepoužívají
  • TRDOS nečísluje strany diskety, z toho vyplývají časté problémy při čtení disket na jiných systémech, protože diskové řadiče nejsou schopny ověřit, ze které strany se sektory čtou (obě se jim jeví jako strana 0) a ohlásí při čtení chybu, řešením je formátovat diskety pro TRDOS jinde a na Betadisku zapsat
stranystopykapacita v sektorechvolné místo v sektorech
140640624
24012801264
18012801264
28025602544

Z tabulky je vidět, že na každé disketě je stejný adresář, který zabírá 16 sektorů (tj. 1. stopu označenou číslem 0). Mimochodem, většina emulátorů implicitně používá kapacitu největší.

Rozložení sektorů na disketě

sektorystopypoužití
0-70adresář, každý sektor obsahuje 16 hlaviček, každá hlavička je 16 bytů dlouhá
80systémový sektor s informacema o disketě, viz. dále
9-150pomocné sektory používané během ukládání snapshotů
-1-80zbytek sektorů na disketě je vyhrazen souborům, resp. datové části souborů

Struktura adresáře

V adresáři je celkem 128 položek, které mohou obsahovat jméno a parametry souboru. V každém z 8 sektorů adresáře je 16 položek 16 bytů dlouhých. Struktura jedné položky je v následující tabulce.

bytepopis významu
0-7Jméno souboru
8Přípona B=basic, C=code (bytes), D=data (array), #=sequence pro kanálové operace
9-10Startovní adresa bytesu (CODE), nebo délka BASICu
11-12Délka bytesu (CODE), nebo délka BASIC bez proměnných
13Počet sektorů, které zabírá na disketě tento soubor
14První sektor na němž soubor začíná
15První stopa na níž soubor začíná

Struktura systémového sektoru

Kromě položek souborů musí být někde uloženy informace o počtu souborů, formátu diskety, jméno diskety a podobně. To vše je v sektoru devátém (číslo 8). Opět následuje tabulka.

bytepopis
0-224prázdné místo (možno využít třeba k identifikaci diskety programem, jednoduché ochraně proti kopírování a podobně)
225číslo prvního volného sektoru na disketě
226číslo stopy obsahující první volný sektor
22722=80tr, DS; 23=40trDS; 24=80tr, SS; 25=40tr, SS (DS=double sides, SS=single side)
228počet souborů včetně smazaných (těch co mají jako 1. znak jména kód 1)
229 a 230počet volných sektorů na disketě
23116 (TR-DOS identifikace, bez tohoto bytu bude TR-DOS hlásit DISK ERROR pro všechny diskové operace, krom čtení sektoru)
232 a 2330 - nevyužito
234 až 2420 (heslo ve starších verzích TR-DOSu 3.xx, 4.xx? - nepoužívá se)
2430
244počet smazaných souborů
245 až 255jméno diskety (verze 5.03 a starší používaly jen 9 znaků)

Při mazání souboru z diskety mohou nastat dvě situace. Buď je soubor na konci adresáře a za ním už jsou jen neobsazené položky, nebo na konci adresáře není. Když na konci je, tak je první znak jména souboru vynulován a dojde i k příslušným změnám v sektoru 8 (změní se byty 225, 226, 228, 229 a 230, byte 244 se nezmění), přičemž následující zapsaný soubor data právě smazaného přepíše. Pokud před takto smazaným souborem jsou jiné dříve smazané soubory s kódem 1 místo prvního znaku jména, budou všechny smazány jako by se nacházely na konci adresáře (v tom případě bude změněn i byte 244). Pokud mazaný soubor na konci nebyl, tak je první znak jména souboru nahrazen kódem 1 a v sektoru 8 se změní pouze počet smazaných souborů (tj. byte 244 a nic víc). Následně zapsaný soubor je uložen do prázdného místa za poslední soubor a sektory dříve obsazené smazaným souborem, který nebyl na konci adresáře, zůstávají netknuté, dokud není proveden příkaz MOVE.

Pro editaci diskety na ZX Spectru s Betadiskem doporučuju program B.D.E.. Pro formátování lze použít kromě příkazu TRDOSu i program Maxifor (příp. i jiné), ale taková disketa pak nemusí být čitelná všude, takže když použít, tak s rozvahou. Obojí najdete mezi programy ke stažení.

Použitá literatura: Mikrobáze z roku 1989 a k tomu vlastní zkušenosti s opravováním disket, které se mi podařilo poškodit většinou při programování.

Opravené chyby a změny

  • 18.7.2006 - opraveno několik překlepů, chybných čísel bytů v textu pod tabulkou, upozornil Roman Bórik, postižený odstavec textu jsem díky tomu mírně doplnil.

[ Zpět na hlavní stránku ]

Cygnusova stránka o ZX Spectru a kompatibilních počítačích byla napsána (přepsána) výhradně pomocí svobodného Open Source softwaru. V případě že naleznete chybu, nebo byste rádi cokoliv co se ZX Spectrem souvisí, neváhejte mi napsat na některý z mých emailů, nebo pracovně do zaměstnání. Stručně o mém webu se můžete dočíst zde.