Formáty Atari XE/XL souborů


aneb atr, xfd, cas, exe, bin, obj, bas, ... co to je? Tahle stránka se pokusí alespoň stručně zodpovědět co tyto soubory obsahují.

Diskové image
Sem patří zejména soubory .atr, dále .xfd a některé méně rozšířené formáty. Jde o obrazy (image) Atari disket. Soubor vznikne tak, že vezmete Atari disketu, tu necháte přečíst speciálním programem a ten její obsah sektor po sektoru uloží do souboru. Diskové image samozřejmě kromě obsahu jednotlivých sektorů obsahují nějaké hlavičky s dalšími informacemi. Detaily lze najít na stránkách autorů těchto formátů.

Je nutno rozlišit, zda původní disketa byla bootovatelná, nebo nikoliv. Bootovatelná znamená, že se program co na ní je spustí tak, že se prostě disketa zasune do mechaniky, zapne Atari a Atari program z diskety natáhne (nabootuje). Pokud je soubor s disketovým image obrazem bootovatelné diskety, lze ho přímo nechat bootovat v emulátoru, nebo přes program pro diskovou emulaci nechat bootovat do Atari. Tohle se týká drtivé většiny programů, zejména her.

Pokud soubor s disketovým image není obrazem bootovatelné diskety, pak to znamená, že je nutné se na něj dívat z Atari nebo emulátoru přes nějaký další program (typicky přes DOS).

Nejjednodušší cesta, jak poznat, zda disketový image je bootovatelný je ta, že ho zkusíte nabootovat.

Kazetové image
Zde máme štěstí, že je jen jediný užívaný formát, to je .cas. Takový soubor je obrazem kazety, t.j. nese informace o obsahu jednotlivých bloků kazetového záznamu, délku mezery mezi bloky a nějaké další informace. Tyhle soubory se dají přímo spouštět v některých emulátorech. Chcete-li ho natáhnout do Atari, použijte můj systém atart.

Původní Atari soubory
uvědomte si, že teď bude řeč o něčem jiném. Formáty zmíněné výše představují obraz nějakého média. Takové soubory dáte k dispozici Atari (nebo emulátoru), ale při práci s Atari je už neuvidíte. Atari se bude dívat dovnitř těchto souborů, ale bude si přitom "myslet", že se dívá na disketu nebo kazetu.

Nyní bude řeč o souborech, které si Atari najde uvnitř těchto obrazů, nebo je uvidí při práci s originálními periferiemi a médii.

DOS 2.5 binární soubory
Zde se užívá spousta přípon - .bin, .exe, .com, .obj a další, znamenají však všechny totéž. Tyhle soubory představují analogii souborů .EXE a .COM známých z PC, jde o spustitelné soubory, tedy programy. Poznáte je tak, že první dva byty jsou vždy FF FF šestnáctkově (255 255 desítkově). K jejich spuštění je nutné mít zaveden Atari DOS, nebo jiný program, který to zajistí. Uživatel zvyklý z DOSu a Windows na to, že spustitelné soubory mají pevně definované přípony je obvykle zmaten tím, že tyhle soubory mohou mít libovolnou příponu. Inu jiná platforma - jiný mrav. Uvědomte si, že např. v unixu jsou spustitelné soubory odlišeny zase jinak, a to speciálním atributem x.

Obecný formát je jednoduchý, soubor má jeden nebo více částí formátu:

FF FF (dvoubytová hlavička)
2 byty počáteční adresa v pořadí nižší byte, vyšší byte
2 byty koncová adresa v pořadí nižší byte, vyšší byte
datová série

Přičemž platí:

Hlavička FF FF je povinná pouze u první série

soubory obvykle na konci obsahují sekvenci

E0 02
E1 02
2 byty startovací adresa v pořadí nižší byte, vyšší byte

mohou obsahovat i sekvenci

E2 02
E3 02
2 byty inicializační adresa v pořadí nižší byte, vyšší byte

Uvědomte si, že tyhle dvě zmíněné sekvence z hlediska obecného formátu představují uložení startovací adresy na $02E0 (RUNAD), popř. na $02E2 (INITAD), což se při nahrávání těchto souborů skutečně stane. Po přečtení každé série je totiž proveden odskok na tyto dvě adresy. Z inicializační rutiny je možné se vrátit pomocí instrukce RTS (návrat ze subrutiny). Takhle je možno např. nejprve zavést a spustit (přes INITAD) program, který zobrazí obrázek a až potom nahrát vlastní program a spustit přes RUNAD. V praxi to bude vypadat takto:

FF FF
2 byte počáteční adresa programu na nakreslení obrázku
2 byte koncová adresa programu na nakreslení obrázku
programový kód pro nakreslení obrázku zakončený instrukcí RTS
E3 02 E4 02
2 byte spouštěcí adresa programu na nakreslení obrázku
2 byte počáteční adresa programu
2 byte koncová adresa programu
programový kód
E0 02 E1 02
2 byte spouštěcí adresa programu

Poslední poznámka - jiné verze Atari DOSů užívaly odlišný formát spustitelných souborů, nenašly však větší rozšíření. Standardem se stal zmíněný formát DOS 2.5.

Bootovatelné soubory
Jde o soubory, které je Atari schopné bootovat, t.j. natáhnout po zapnutí. V praxi jde o první sérii bloků standardního kazetového záznamu (natahuje se pomocí START a Enter při studeném startu počítače, většinou je potřeba stisknout ještě OPTION, což vyřadí ROM BASIC), nebo obsah bootsektorů diskety (pokud při studeném startu není stisknuto START, Atari vždy zjistí, zda je připojena disketová jednotka a pokud ano, pokusí se z ní bootovat. Dále je zde dobré poznamenat, že Atari disketa může mít až 256 bootsektorů. I při bootu z diskety můžeme vyřadit ROM BASIC pomocí OPTION). Formát těchto souborů je takový, že nejprve je 6 bytů hlavička:
00
1 byte počet bloků záznamu (1 blok=128 bytů)
2 byte počáteční adresa
2 byte startovací adresa
pak následuje programový kód

Přičemž nutno upozornit:

- Na počáteční adresu definovanou v hlavičce se ukládá i samotná hlavička, kód se nahraje až za ní (tedy o 6 bytů dále)

- Atari bootovací procedura vykoná nejprve skok za hlavičku, zde musí být povinně inicializační procedura obsahující přinejmenším instrukce CLI a RTS. Až po návratu z inicializační procedury se provede skok na startovací adresu. Pokud se běhěm inicializační procedury neprovede CLI, spustí se self test.

- poslední datový blok je zkrácen na 127 bytů.

U těchto souborů užívám příponu .bot

Soubory Atari Basicu:
.lst uložené pomocí LIST "D:xxxx.lst" nebo LIST "C:", jde o textové soubory v kódu atascii a lze je snadno pomocí konverzních programů učinit čitelnými i na PC
.bas uložené pomocí SAVE "D:xxxx.bas" nebo SAVE "C:", jde o záznam v tzv. tokenizované formě