Číslo služby | Adresa v ROM | Popis funkce |
13 | 01D3h | << neobsazeno>> |
14 | 290Fh | LOAD PROGRAM - načtení programu |
vstup: od 5CDDh hlavička | ||
pro A=0 - start a délka podle hlavičky | ||
pro A=3 - HL start, DE délka | ||
výstup: BC kód chyby | ||
15 | 01D3h | << neobsazeno>> |
16 | 01D3h | << neobsazeno>> |
17 | 01D3h | << neobsazeno>> |
18 | 2926h | ERASE FILE - vymazání souboru |
vstup: od 5CDDh hlavička | ||
výstup: BC kód chyby | ||
19 | 28E0h | MOVE HEADER TO 5CDDh - přenesení hlavičky z adresy v HL na 5CDDh |
vstup: v HL adresa bufferu, v bufferu hlavička | ||
výstup: na 5CDDh hlavička | ||
20 | 28E3h | MOVE HEADER FROM 5CDDh - přenesení hlavičky z 5CDDh na adresu v HL |
vstup: na 5CDDh hlavička, v HL adresa bufferu | ||
výstup: hlavička v bufferu | ||
21 | 2739h | VERIFY TRACK - verifikace stopy |
vstup: D číslo stopy | ||
výstup: na 5CD6h počet chyb, BC kód chyby (např. no disk) | ||
22 | 1FEBh | SELECT SIDE 0 - volba stopy 0 (kvůli verifikaci ???) |
23 | 1FF6h | SELECT SIDE 1 - volba stopy 1 (kvůli verifikaci ???) |
24 | 0405h | TRDOS INIT - ověření značky TRDOSu a nastavení druhu záznamu podle údajů na disku |
výstup: nastavené bity specifikace, BC kód chyby |
POZOR! TR-DOS používá číslování sektorů od nuly. Je však zajímavé, že v chybových hlášeních jsou udávána čísla sektorů začínající od jedné.
Pří oboustranném záznamu ukládá systém stopy tak, že sudé stopy (0, 2, 4, atd.) jsou na straně 0 a líché (1, 3, 5, atd.) jsou na straně 1.
V chybových hlášeních jsou však udávána skutečně přečtená čísla stop, takže stopy jsou číslovány na každé straně zvlášt, přičemž se čísla stran neuvádéjí.
Orientace v těchto hlášeních je pak dost obtížná.
Pří volání služeb se připraví parametry na systémové proměnné a zadají se hodnoty do registrů. V registru C musí být vždy číslo požadované
služby. Je také vhodné vynulovat obsah adresy SDOP před každým voláním služby. Sem totíž systém ukládá kód chyby, ale sám ho obvykle nenuluje.
Potom se volá adresa 3Dl3H (u všech verzi 5.xx stejná). Většina služeb vrací v BC kód chyby (pokud to má smysl). Chybové kódy jsem příliš nestudoval
stačilo že 0=žádná chyba. Výjimka je ve službě 10, která vraci v C číslo hlavičky a 0 zde značí neúspěch.
Služby pro čtení a zápis sektoru jsou napsané tak, že umožňují i čtení a zápis sektorů jiných délek. V takovém případě však nejde využít multisektorový provoz,
ale je nutno vždy volat službu jen pro jeden sektor. V dalších dílech tohoto seriálu najdete ukázky programů pro vzájemný převod různých formátů.
Adresář je uložen na stopě 0 a zabírá sektory 0+7. Každá položka v adresáři je určena hlavičkou, délky 16 bajtů, jejíž struktura vypadá takto:
bajty 1+8 - název bajt 9 - typ ("B"=Basic, "C"=CODE, "D"=DATA=sekvenčně uložená data) bajty 10+11 - start CODE, nebo délka Basicu bajty 12+l3 - délka CODE, nebo dél. Bas. bez prom. bajt 14 - počet sektorů bajt 15 - na kterém sektoru začíná bajt 16 - na které stopě začíná
Takových položek se do adresáře vejde max. 128. Soubor je vymazán tak, že se první znak názvu nahradí hodnotou 1. Od této chvíle se název jíž nevypisuje v katalogu,
ale soubor je jinak neporušen. Ke skutečnému přepsání souboru může dojít až po "setřeseni" souborů na disku příkazem MOVE. Tim se teprve fyzicky přemistí soubory tak, aby byl
jeden těsně za druhým. odpovídajícím způsobem se přemísti a aktualizuji i záznamy v adresáři. Popis smazaných souborů tedy zůstane na konci adresáře.
Tyto neplatné položky adresáře mají první znak názvu přepsaný nulou. V té době jsou smazané soubory zčásti přepsány a tedy nenávratně ztracený.
Pokud smažete poslední soubor v adresáři, za nímž už všechny položky začínají nulou, je prvni znak jeho názvu rovnou nahrazen nulou. Jím zabraný
prostor na disku je dán k dispozici systému hned i bez MOVE.
Výše popsané principy je dobré znát. Umožní totiž mnohdy záchranu zdánlivě ztraceného souboru.
Také je dobré si uvědomit, že důležité soubory jsou nejvíce ohroženy při zápisu do adresáře, tj.
při SAVE a MOVE. Rušivým impulzem, nebo výpadkem napájení při těchto operacích, může dojit k vážným
poškozením adresáře. To se pak projeví ztrátou souborů a to i těch, kterých se tato operace zdánlivě netýkala. Stačí třeba na začátek sektoru 0,
stopy 0 dát nulu a v katalogu se od té chvíle nic nebude vypisovat. všechny soubory na disku budou
nedostupné. Přitom jde na disk ukládat nové soubory. Přestože budou v pořádku uloženy, budou také
nedostupné a nevypíší se v adresáři. Stačí nulu zpětně nahradit kódem znaku a vše je rázem v pořádku.
Možná se vám poslední dva odstavce zdají zbytečně podrobné, ale oceníte je ve chvíli; kdy se
vám do adresáře vloudí chybička. Já jsem si to neměl kde přečíst a tak jsem nad Betadískem strávil mnoho nezapomenutelných chvil.
Sektor 8 nese informace o disku. sektory 9+15 jsou k dispozici systému. Uspořádání informaci o dísketé v sektoru 8 je následující:
bajty 0÷224 - hodnota 0 bajt 225 - číslo prvního volného sektoru bajt 226 - číslo první volné stopy
(Zdroj: Mikrobaze 07/1989, str.21)
Předchozí část | Pokračováni příště |
Stránka byla už zobrazena: 422 ×
Aktualizováno: 6. 4. 2018, 18:05
Stránka načtena za 0.00247 sekund.