TOSy - aneb od TOSu4.1 po RSTos3.7

R.Štěrba, RASTER

V dobách, kdy disketové jednotky pro malé Atárko byly jen výsadou těch majetnějších, a u ostatních vládl coby úložné zařízení dataset s úpravou TURBO 2000, se místo DOSů používaly TOSy - turbo operační systémy. Nejznámější legendou je TOS4.1 od Milana Říhy.

Na rozdíl od DOSů se pod písmenem "D:" neskrývá přístup na disketu, ale formát TURBO 2000 - kilové bloky. I když leckdo z pařanů tento formát odsuzoval, pro vývojáře byla jeho existence přímo klíčová, neboť otevírala do té doby netušené možnosti práce se spoustou programů a hlavně, ukládání výstupů z nich na kazetu v T2000 kilové bloky. Krom toho uměl TOS pracovat s klasickým T2000 "souvislým" formátem, což bylo dobré pro ukládání dat umístěných v paměti a posléze jejich opětovné načítání.

Pro vývojářskou činnost jsem měl několik kazet se systémovými programy, uspořádanými v posloupnostech jak se postupně nahrávali. Nejpoužívanější pořadí bylo toto: TURBO2000 zavaděč, TOS4.1, MACMON65. Tato sada však měla jeden problém - nenahrála se automaticky. Bylo nutné vyčkat, až se načetl turbo zavaděč, ten odklepnout, odklepnout hlavičku TOSu4.1, po nahrání TOSu zadat Load, D:, a až se načetl MACMON, spustit ho povelem RUN? Yes. Řeknete si banalita, ale zapomínáte, že při vývoji nějakého assemblerového programu to vypadá tak (aspoň u mě to tak vypadalo), že píšete zdroják, po nějaké době si ho uložíte na kazetu, zkompilujete, přejdete do MONitoru a spustíte ho. Pak teprve zjistíte, že něco nefunguje - respektive, že to co nefunguje přepsalo v paměti různá místa a po RESETu následuje buďto přímo zatuhnutí počítače, nebo se sice do MACMONu dostanete, ale ten je nějak narušený a je stejně nutné všecko vypnout a načíst znovu. No a protože tato situace se v běžném dni programátora opakovala mnohokráte (řádově v desítkách "cyklů"), bylo nutné si nějak pomoci.

Takže ok, pustil jsem se do vlastních úprav TOSu4.1. (Snad mi Milan Říha promine. ;-))

V první fázi jsem chtěl přidat do TOSu některé další funkce, které mi scházely, a naopak "osekat" zbytek co jsem nepoužíval.

Výsledkem byl první RSTos3.1, jenž oproti originálu oplýval následujícími vlastnostmi:

Load

Vyrušení dotazu "Spec:", neboť jsem název nikdy nezadával - co se načte je přece dáno tím, kam se přetočí páska. Dotaz na spuštění programu se neobjevoval až po načtení, ale už u hlavičky. Některé programy totiž zasahovaly až do obrazové paměti a zobrazení dotazu "RUN? (Y/N)" je narušilo.

Turbosave Basic

Tak tohle je unikum! Pamatujete si na prográmky, které uměly načíst Basicový program v klasice (uložený přes CSAVE) a vyprodukovaly samospustitelný T2000 výstup? Tak tohle umí RSTos3.1 taky, ovšem není nutné nic v klasice ukládat. Pokud jste totiž pod tímto TOSem přešli do BASICu a napsali prográmek, stačilo pak skočit do TOSu (povelem DOS) a přes tuto volbu uložit do samospustitelného T2000. Navíc bylo možné stanovit délku záznamu, a tím spolu s BASIC programem uložit třeba strojové podprogramy uchované v paměti (pokud možno umístěné kousek za koncem Basicu), znakové sady a podobně.

Verify

Verifikace záznamu T2000. Tohle mi u původního TOSu moc chybělo. Když jsem si totiž ukládal nějakou paměťovou oblast na kazetu do T2000, nešlo ověřit, zda je záznam v pořádku. Pokud se to testovalo funkcí Load, hrozilo, že nastane chyba a data v paměti si narušíte - navíc zde stále byla jistá (sice malá, ale přece jen) pravděpodobnost, že záznam načíst půjde, ale bude v něm nějaká záměna bitů (kterou jediný závěrečný kontrolní součet neodhalí).

Move

Přenášení bloků paměti. Implementováno včetně přenosu "pod ROM", takže šlo využívat celý rozsah paměti.

Erase

Mazání bloku paměti.

Odstranění funkce Duplicate T2000 program

Na kopírování T2000 souborů se používaly specializované kopíráky.

Odstranění Ramdisku D8:

V programech jsem využíval paměť "pod ROM", takže ramdisk nemohl být použit.

Aby se mi TOS příliš nenafouknul, provedl jsem nakonec výrazné zkrácení všech vypisovaných textů. Díky tomu se nakonec podařilo dosáhnout stejné velikosti jako měl původní TOS4.1, tj. LOMEM je opět $1771 (6001).

Pak přišla na řadu druhá variace RSTos3.7, ve které již šlo o optimalizaci verze 3.1 s cílem plně automatizovat zavádění programu MACMON a vyřadit funkce, které při práci s MACMONem nebývají potřebné.

>Nové vlastnosti v RSTos3.7:

Load (Auto/From)

Po nahrání tohoto TOSu se automaticky vyvolá funkce T2000 autoload, která bez jakýchkoliv dalších dotazů načte T2000 program. Pokud toto není žádoucí, stačí klávesou Break načítání stopnout a klávesou Return vyvolat nabídku. Režim funkce Load se dá přepínat - buď je A (automatické zavádění), nebo F (from) - v tomto případě lze po načtení hlavičky stanovit, na jakou adresu se program bude načítat (údaje v hlavičce jsou pak ignorovány).

Vyhození Turbosave Basic funkce

Při práci s MACMONem není tato funkce potřebná.

Goto a Jsr

Skok (Goto) na zadanou adresu tu byl již dříve, ale někdy vývojář může potřebovat skok do rutiny končící RTS, pak se hodí JSR varianta.

Zbytek zůstal. RSTos3.7 má díky minimalizačním úpravám LOMEM $16DD (5853).

A ještě něco:

Pokud nahradíte zavaděč TURBO2000 lepším zavaděčem UniTurbo, který stačilo odklepnout předem (kliknutí čekalo v klávesnicovém bufferu a po načtení zavaděče se teprve provedlo), pak RSTos3.7 po spuštění začal též hned sám načítat MACMON65. Celé to tedy nakonec fungovalo tak, že jsem při "vytuhnutí" počítače přetočil pásku na začátek, po zapnutí počítače začal načítat UniTurbo zavaděč, jednou ťuknul na mezerník a šel pryč (tj. do ledničky na sváču, napít se, na záchod, prostě kamkoliv). Když jsem se tak po 3 minutách vrátil, čekal na mě připravený MACMON65 s funkčním zařízením D: (T2000 kilové bloky) a mohl jsem začít programovat. Hm, tedy nejdřív jsem musel ještě načíst poslední verzi zdrojáku - tohle už se mi automatizovat nepodařilo. ;-)

Obě tyto verze RSTosu dávám k volnému šíření - třeba se ještě najde nějaký "kazetář", kterému se budou hodit. Jen pro jistotu znovu opakuji, každá verze má své speciální funkce a výhody a je určena pro jiný účel:

RSTos3.1 pro samostatné použití, případně pro vytváření samospustitelných programů v BASICu.

RSTos3.7 pro využití s nějakým dalším programem, který se automaticky načte.