Binární soubory: Porovnání verzí
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í | + | 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 | + | 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 | + | * '''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. |
− | + | ||
+ | == 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, 17:07
Obsah
Ú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.
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).