tiskoviny/mikrobaze/cpm4
Číslo službyAdresa v ROMPopis funkce
1301D3h<< neobsazeno>>
14290FhLOAD 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
1501D3h<< neobsazeno>>
1601D3h<< neobsazeno>>
1701D3h<< neobsazeno>>
182926hERASE FILE - vymazání souboru
vstup: od 5CDDh hlavička
výstup: BC kód chyby
1928E0hMOVE 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
2028E3hMOVE 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
212739hVERIFY TRACK - verifikace stopy
vstup: D číslo stopy
výstup: na 5CD6h počet chyb, BC kód chyby (např. no disk)
221FEBhSELECT SIDE 0 - volba stopy 0 (kvůli verifikaci ???)
231FF6hSELECT SIDE 1 - volba stopy 1 (kvůli verifikaci ???)
240405hTRDOS 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



     psp-ikona.gif, 2 kB    Text to HTML converter and formatter  builder_ikonka.gif, 3 kB
           
  Best Old Games      kabelmanie.gif, 2 kB  root_ico.gif, 2 kB  český diskmag pro počítače ZX Spectrum a kompatibilní
synapse.gif, 4 kB   TuningPC.cz - Vše pro tuning a casemodding vašeho PC        pspad88x31.gif  delphix.gif, 1 kB
sgatlantis_88x31_3.jpg, 4 kB  atlan.gif, 22 kB  arkon.jpg, 12 kB  ico_abeceda.gif, 888B  blog.idnes.cz   
           
       
 
  torry_logo.gif, 4 kB  

Stránka načtena za 0.00247 sekund.