Binární soubory: Porovnání verzí

Z OldComp Wiki
Přejít na: navigace, hledání
m
(Přidán algoritmus zavádění binárního souboru, upraven úvod a přeformulována informace o zavádění do překrývajících se oblastí paměti.)
Řádka 1: Řádka 1:
 
== Úvod ==
 
== Ú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.
+
Binární soubory používají disketové operační systémy (DOS) pro ukládání kódu a dat v kompaktní podobě s přesně definovanou strukturou.
 +
Ve většině případů se binární soubory používají na uložení spustitelné podoby programů.
 +
 
 +
Binární soubory v současné podobě byly zavedeny diskovým operačním systémem DISK OPERATING SYSTEM II VERSION 2.0S od společnosti Atari.
  
 
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.
 
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.
Řádka 11: Řádka 14:
 
Dále následují '''segmenty''' binárního souboru.
 
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.
+
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 zavádět do překrývajících se oblastí paměti.
  
 
Některé segmenty mají zvláštní význam.
 
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 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.
+
* '''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 odskokem na tuto startovací adresu.
  
 
== Přípony binárních souborů ==
 
== Přípony binárních souborů ==
Řádka 23: Řádka 26:
 
== Binární zavaděče ==
 
== 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ů.
 
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.
+
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. Existují i kazetové verze binárních zavaděčů, nebo binární zavaděče pro zavádění z cartridge.
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:).
+
 
 +
== Zavedení binárního souboru ==
 +
Zavádění binárního souboru probíhá dle následujícího algoritmu:
 +
01 Otevři binární soubor
 +
02 Zkontroluj hlavičku. Nemají-li první dva byty hodnotu 255 ($FF) zobraz chybové hlášení a skonči
 +
03 *** Hlavní smyčka ***
 +
04 Je-li konec souboru, jdi na 10
 +
05 Přečti hlavičku segmentu
 +
06 Přečti data segmentu, umísti data segmentu na adresu určenou v hlavičce segmentu
 +
07 Změnil-li se vektor INITAD, proveď odskok do podprogramu na (INITAD)
 +
08 Jdi na 04
 +
09 REM **** Konec zavádění ****
 +
10 Změnil-li se během zavádění vektor RUNAD, proveď odskok do podprogramu na (RUNAD)
 +
11 Konec
 +
 
  
 
== Příklad ==
 
== Příklad ==

Verze z 16. 6. 2018, 16:07

Úvod

Binární soubory používají disketové operační systémy (DOS) pro ukládání kódu a dat v kompaktní podobě s přesně definovanou strukturou. Ve většině případů se binární soubory používají na uložení spustitelné podoby programů.

Binární soubory v současné podobě byly zavedeny diskovým operačním systémem DISK OPERATING SYSTEM II VERSION 2.0S od společnosti Atari.

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 zavádět do překrývajících se oblastí paměti.

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 odskokem 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. Existují i kazetové verze binárních zavaděčů, nebo binární zavaděče pro zavádění z cartridge.

Zavedení binárního souboru

Zavádění binárního souboru probíhá dle následujícího algoritmu:

01 Otevři binární soubor
02 Zkontroluj hlavičku. Nemají-li první dva byty hodnotu 255 ($FF) zobraz chybové hlášení a skonči
03 *** Hlavní smyčka ***
04 Je-li konec souboru, jdi na 10
05 Přečti hlavičku segmentu
06 Přečti data segmentu, umísti data segmentu na adresu určenou v hlavičce segmentu
07 Změnil-li se vektor INITAD, proveď odskok do podprogramu na (INITAD)
08 Jdi na 04
09 REM **** Konec zavádění ****
10 Změnil-li se během zavádění vektor RUNAD, proveď odskok do podprogramu na (RUNAD)
11 Konec


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