Binární soubory

Z OldComp Wiki
Přejít na: navigace, hledání

Úvod

Binární soubory používají disketové operační systémy (DOS) pro ukládání spustitelných programů, podobně jako operační systém Windows používá soubory .EXE.

V jednom z nejrozšířenějších DOSů pro počítače Atari – Atari DOS 2.5 se k zavedení a spuštění binárního souboru používá funkce L – BINARY LOAD.

Dos2 binary load.png

Vnitřní struktura binárních souborů

Binární soubor začíná speciální hlavičkou – dvojicí bytů o hodnotě 255 ($FF).

Dále následují segmenty binárního souboru.

Segment je blok dat, který se při zavádění umístí do paměti počítače na adresy určené v segmentové hlavičce. Hlavička obsahuje počáteční a koncovou adresu segmentu. Volitelně může být před hlavičku předřazena dvojice bytů o hodnotě 255 ($FF). Binární soubor může obsahovat libovolné množství segmentů. Segmenty se mohou navzájem překrývat.

Některé segmenty mají zvláštní význam.

  • Segmenty INIT zaváděné na adresy 738 a 739 ($02E2 a $02E3) dovolují provést odskok a vykonání libovolného kódu v průběhu zavádění.
  • Segmenty RUN zaváděné na adresy 736 a 737 ($02E0 a $02E1) označují startovací adresu. Po zavedení všech segmentů je zavedený binární soubor odstartován skokem na tuto startovací adresu.

Přípony binárních souborů

Na počítačích Atari se pro binární soubory většinou používaly přípony .COM a .OBJ. V moderní době se široce používá přípona .XEX. Tato přípona byla zavedena kvůli možnosti pohodlně pracovat s binárními soubory na PC. Operační systémy rodiny Windows totiž nedovolují asociovat programy se soubory s příponou .COM.

Binární zavaděče

Binární zavaděče jsou komponenty operačních systémů nebo samostatné programy, které provádějí zavádění binárních souborů. Disketové operační systémy mají většinou binární zavaděč vestavěný a lze jej vyvolat volbou z nabídky nebo zadáním příkazu. Příkladem samostatného binárního zavaděče je tzv. "Vykřičníkový zavaděč", který dovoluje zavádět binární soubory z kazety (zařízení C:).

Příklad

Toto je výpis segmentů hry SWAPZ.

DATA 08192-08941 [2000-22ED]
INIT 00738-00739 [02E2-02E3] {08192 [2000]}
DATA 08192-08251 [2000-203B]
DATA 12288-15436 [3000-3C4C]
INIT 00738-00739 [02E2-02E3] {08192 [2000]}
DATA 24351-47709 [5F1F-BA5D]
INIT 00738-00739 [02E2-02E3] {47626 [BA0A]}
DATA 47104-49149 [B800-BFFD]
RUN  00736-00737 [02E0-02E1] {08192 [2000]}

Během zavádění se zavede celkem 9 segmentů a provedou tři odskoky. Po zavedení je hra spuštěna od adresy 8192 ($2000).