Binární soubory

Z OldComp Wiki
Verze z 4. 11. 2016, 20:12; Baktra (diskuse | příspěvky)

(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
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, $02E1) označují startovací adresu. Po zavedení všech segmentů je zavedený binární soubor odstartován skokem na tuto startovací adresu.

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).