Pěkných pár let poté, co jsem doplnil TOS 4.1 o funkci "binary load" (odtud TOS 4.1 BL), jsem byl požádán, abych k tomu něco napsal. Pokusím se tedy shrnout, co si ještě pamatuji.
Programy se na Atari od počátku vyskytovaly ve dvou formátech. Jednak jako bootovatelné, jednak jako tzv. binární soubory.
Bootovatelný program musí být v jednom bloku omezené délky (tuším 255 bloků) zaváděný na jedno konkrétní místo v paměti a s jednou startovací adresou. Toto je jediný formát který umí Atari OS spouštět (bootovat) a to z diskety nebo kazety (pouze klasika!).
Binární soubory mají možností daleko více. Jednak se jedná o soubory v pravém slova smyslu, dále se mohou skládat z několika částí, každá se může nahrávat na jiné místo v paměti a může mít svou vlastní inicializační a spouštěcí adresu (nutno podotknout, ze spouštěcí adresa se obecně používá až u poslední části). Atari OS tento formát neumí nahrát a spustit a proto se musí používat nějaký "binární loader". To platí jak pro disketu tak i pro kazetu (stále mluvíme o klasice!). Tento "binární loader" se napřed musí do počítače nějak dostat a teprve on sám načítá příslušný soubor v binárním formátu.
U disket je typickým příkladem "binárního loaderu" nějaký DOS (a to včetně MiniDOSu a MikroDOSu), u kazety například tzv. "vykřičníkový zavaděč" (jsou ještě kromě mě nějací pamětníci? Ano, ten vykřičník a "houknutí" během nahrávání klasiky - tak se projevoval tento binární loader).
OS Q-MEG již umožňuje binární soubory spouštět přímo.
Pro doplnění, známým problémem každého "binárního loaderu" je jeho umístění v paměti, protože se nesmí vyskytovat v místech, kam se program nahrává. To je také důvod, proč spoustu programů nelze spustit z DOSu.
Klasické kazetové Turbo (hlavička + jeden dlouhý blok) je vlastně obdobou bootovatelného formátu a neumožňuje jednoduchým způsobem zavádět binární formát (resp. může být značný problém některé původně binární soubory do něj převést). Pokud jste tedy potřebovali na kazetě používat binární formát, nezbývalo, než použít klasiku...
A pak jsem přišel já se svou úpravou TOSu 4.1...
No, existovala sice ještě možnost použít některý jiný Turbo operační systém, ale ty nebyly na rozdíl od TOSu 4.1 příliš v oblibě (pravděpodobně především proto, že to byly vesměs pěkní bumbrlíčci podporující i práci s disketou) a také si již dnes nejsem příliš jistý, zda neměly nějakou vlastní implementaci tohoto formátu - ha, že by se i tehdy vyskytovalo to, co je dnes běžné... :-( ).
Jako ideální formát pro binární soubory v Turbu se totiž jevily (a dodnes jeví) tzv. "kilové bloky". Libovolný binární soubor dostanete z diskety do kilových bloků například pomocí malé jednoduché kopírky TCOPY. Rovněž, např. pokud v MAC/65, spuštěném pod TOSem, zadáte kompilaci do souboru (ASM ,,#D:SPUST_ME.COM), výstupem budou zase kilové bloky (a především binární formát).
Ale čím je nahrát? TOS 4.1 BL!
TOS 4.1 je skvělý Turbo Operating System od brněnského autora Milana Říhy. Byl to jeden z mých nejoblíbenějších programů a jeho autorovi patří můj velký dík.
Má láska k tomuto kousku software došla tak daleko, že jsem si ho celý disassembloval, začal ho procházet a na pro mě zajímavých částech provádět "reverse engineering". Naštěstí jsem relativně brzy získal originální zdrojáky tohoto programu (navštívil jsem tehdy osobně Milana Říhu, abych je vyzvedl pro Zdeňka Buriana, který mě k němu vyslal).
Z originálních zdrojáků jsem mj. zjistil, že autor programu počítal s možností budoucího rošíření a implementoval jednoduchý způsob, jak doplnit funkci pod písmeno E (jistě, šlo by to změnit, ale proč to tak nenechat). O to bylo jednodušší implementovat funkci "Binary load", když jsem se k tomu rozhodl.
"Binary load" rozšíření jsem napsal v assembleru v MAC/65. Pokud si dobře vzpomínám, našel jsem v něm o pár dnů později ještě drobnou chybku a po opravě došlo k přejmenování na TOS 4.1 BL+. Já sám jsem ho využíval především na převádění finálních verzí programů, které jsem vyvíjel, z binárního formátu do čistého Turba. Protože jsem již v té době měl Q-MEG, jako běžný binární loader jsem ho příliš nevyužíval.