Díky za další luxusní článek!
Snad mě pamět neklame, ale mám za to, že při otevírání zařízení se tabulka zařízení HATABS prohledávala od konce. Takže možnosti, jak udělat vlastní ovladač existujícího zařízení byly vlastně dvě: Přepsat adresu tabulky vektorů operací v HATABS pro již definované zařízení (oblíbené je P pro ovladač tiskárny např. BT-100), nebo vytvořit nový záznam klidně se stejným písmenem zařízení. Více zde: https://www.atarimagazines.com/v8n2/customhandlers.php
Typická kombinace zařízení v ČSSR u běžných ataristů:
T: kazeťák s Turbem 2000
P: BT-100
(ideálně to mít v TurboBASICu).
Po pádu cen pamětí:
T: kazeťák s Turbem 2000
P: BT-100
D8: RAMDisk (potom se to tuším přejmenovalo na jiné zařízení, ale D8 se drželo, protože s tím dokázaly pracovat starší aplikace)
Tak podobně. Dobrý na tohle byl např. TTDOS, protože v něm si člověk mohl namapovat zařízení interaktivně přímo z jeho menu. A tím si zvolit, jestli jako D: bude ramdisk nebo kazeta a jaké číslo ramdisk bude mít. Takže typická práce, co si pamatuju, byla:
Samozřejmě tu bylo riziko vypnutí počítače před uložením na kazetu, takže kdo se toho z nějakého důvodu bál, mohl naopak v TTDOS navolit, že zařízení D: je kazeta v Turbo (původně B:) a zase: aplikace nic při zápisu nepoznaly, prostě nahrávaly na kazetu místo na disk a bylo jim to jedno. Jen jaksi jim nefungovaly ty extra funkce pro disketu jako výpis adresáře...
30. 7. 2026, 09:54 editováno autorem komentáře
Na CIO jsem se těšil. Dodnes si pamatuju na ten šok, když jsem přišel na MS-DOS a dostal jsem odpověď na svou otázku: "Kde je tady centrální správa zařízení?" :D
Jen přidám pár bodů: jak Pavel rád píše všechny příklady kompletní, tak tady trošku zaniklo, že ty první tři příklady v BASICu jsou úplně stejné a liší se jen tím názvem zařízení, což je jednoduše řetězec, který může být i v proměnné a klidně tentýž kód můžeme zavolat několikrát pro různé řetězce a kopii dat tak poslat na obrazovku, tiskárnu i kazetu...
A dokonce, jak vidíme, v asembleru je to vlastně totéž, jen chybějící syntax pro zápis více proměnných nahradíme vyplněným IOCB blokem. Ony totiž ty příkazy v BASICu jsou jen velmi primitivní wrapper nad CIO systémem - a stačí to, protože je ten CIO systém už tak high-level.
(Malá poznámka: podobně mě fascinovalo na ZX Spectru, když jsem objevil v operačním systému tak high-level kalkulačku s plovoucí čárkou.)
Těším se, že v příštím díle zavedeme vlastní zařízení do tabulky HATABS !
Já bych ten MS-DOS tolik nepodceňoval. První verze byla sotva něco víc než port CP/M na 8086.
Ale už od verze 2.0 měl MS-DOS standardizovanou a celkem robustní podporu znakových zařízení (CON, PRN, AUX, cokoliv dalšího) a dalo se k nim přistupovat pomocí služeb souborového systému. Existoval centrální spojový seznam ovladačů těchto zařízení (něco jako HATABS). Stejně tak měl MS-DOS od verze 2.0 standardizovanou podporu blokových zařízení.
akorát když někdo vytvořil adresář nebo soubor se stejným jménem, jako zařízení (nebo jako vnitřní příkaz COMMAND.COM), tak si zadělal na docela velké problémy - a musel nastoupit disk editor. DOSBox to ovšem neumí emulovat (a nebo to v MS opravili později).
Je možné, že si to po letech už nepamatuju, ale nemám pocit, že bych viděl někoho, jak udělá ovladač třeba na svou nestandardní tiskárnu, původní PRN přejmenuje standardním a definovaným způsobem na něco jiného, svůj ovladač zaregistruje jako PRN, také standardním způsobem, a odteď mohl nahrát jakýkoli program a poslat v něm výstup na svou tiskárnu aniž by ten program zpozoroval změnu.
Myslím, že tam byl nějaký neustálý souboj residentů (občas na ostří nože, nekradli si IRQ?) a do toho nekompatibilní způsoby správy paměti definované v SYS, takže měnitelné pouze bootem. A různé programy potřebovaly buď ten nebo onen.
A pak už si pamatuju jenom, že u vedlejšího stolu byli nějací starší kluci, kteří měli zařízení seřazená v /dev ...a tak jsem tady :)
K písmenkům CIO zařízení pro obsluhu turba. S písmenky se samozřejmě dalo hrát a přemapovávat je. V typickém výchozím nastavení to bývalo takto:
T: Turbo 2000 - Kilobytové bloky. Rychlost 2270 bd. 10bytová hlavička + prosté kilobytové bloky s daty. Jednoduchý formát.
B: TURBO TAPE nebo B-TAPE. Rychlost >= 2725 bd. 1026bytové bloky. Žádná hlavička, v každém bloku byly kromě uživatelských dat úplné informace o souboru ke kterému blok patří (jméno souboru, číslo souboru, sekvenční číslo bloku, příznaky pro zdvojené bloky a dlouhé mezery, zaplnění bloku). První blok byl vždy zdvojený. Pokročilý formát, který umožňoval rychlou orientaci na pásce, nebo pohodlnou funkci "Tape Directory".
U: Turbo 2000 - hlavička + dlouhý datový blok. Původní formát zavedený pro Turbo 2000.
Programy, které tato zařízení poskytovaly, tedy primárně TOS a TT-DOS měly vše řádně zdokumentované v uživatelské přiručce.
Ale lepší než tyhle kazetové "vědomosti" bylo vlastnit disketovou jednotku.