COM
From Atariki
Wersja z dnia 10:07, 10 lis 2005 Jellonek (Dyskusja | wkład) (tyle podgladow i nie zauwazylem zbednego przecinka...) ← Previous diff |
Wersja z dnia 17:09, 10 lis 2005 KMK (Dyskusja | wkład) Next diff → |
||
Linia 1: | Linia 1: | ||
== Wstęp == | == Wstęp == | ||
- | Pliki binarne ośmiobitowego Atari mają postać blokową, tzn. składają się z jednego, bądź więcej bloków, przy czym pierwszy z nich musi zaczynań się syngaturą w postaci słowa $FFFF. Pozostałe bloki mogą zawierać tą sygnaturę, ale nie jest to warunek koniczny. | + | Pliki binarne ośmiobitowego Atari mają postać blokową, tzn. składają się z jednego, bądź więcej bloków, przy czym pierwszy z nich musi zaczynań się sygnaturą w postaci słowa $FFFF. Pozostałe bloki mogą zawierać tą sygnaturę, ale nie jest to warunek konieczny. |
== Nagłówek == | == Nagłówek == | ||
- | Każdy blok posiada nagłówek w postaci dwuch bądź trzech słów: | + | Każdy blok posiada nagłówek w postaci dwóch bądź trzech słów: |
# sygnatura $FFFF (niezbędna przy pierwszym bloku, opcjonalna przy pozostałych), | # sygnatura $FFFF (niezbędna przy pierwszym bloku, opcjonalna przy pozostałych), | ||
# adres początku danych, | # adres początku danych, | ||
Linia 9: | Linia 9: | ||
== Dane == | == Dane == | ||
- | Dane znajdują się bezpośrednio za nagłówkiem i wczytywane są w obszar pamięci wyznaczony przez adresy z nagłówka. Wyznaczają one również objędość ładowanych danych. | + | Dane znajdują się bezpośrednio za nagłówkiem i wczytywane są w obszar pamięci wyznaczony przez adresy z nagłówka. Wyznaczają one również objętość ładowanych danych. |
== Obszary specjalne == | == Obszary specjalne == | ||
- | W trakcie ładowania pliku binarnego słowa spod dwuch adresów w pamięci mają szczególne znaczenie: | + | W trakcie ładowania pliku binarnego słowa spod dwóch adresów w pamięci mają szczególne znaczenie: |
- | * $02E2 - jeśli zostało zmienione poprzez ostatnio wczytywany blok, traktowane jest jako adres procedury do wykonania bezpośrednio po wczytaniu tego bloku, | + | * INITAD $02E2 - jeśli zostało zmienione poprzez ostatnio wczytywany blok, traktowane jest jako adres procedury do wykonania bezpośrednio po wczytaniu tego bloku (powrót przez RTS), |
- | * $02E0 - jeśli zostało zmienione przez którykolwiek z wczytywanych bloków, traktowane jest jako adres startowy od którego wykonywany zostanie program, po załadowaniu wszystkich bloków. | + | * RUNAD $02E0 - jeśli zostało zmienione przez którykolwiek z wczytywanych bloków, traktowane jest jako adres startowy od którego wykonywany zostanie program, po załadowaniu wszystkich bloków. |
- | Jeśli słowo pod adresem $02E0 nie zostanie zmienione przez żaden z ładowanych bloków (bądź przez procedurę wykonywaną w wypadku stwierdzenia zmiany słowa $02E2) nie ma ustalonego adresu, od któregno należy wystartować załadowany plik binarny. Niektóre [[DOSy]], w takim wypadku, próbują wykonać program rozpoczynający się od adresu załadowania pierwszego z wczytywanych bloków. | + | Jeśli słowo pod adresem $02E0 nie zostanie zmienione przez żaden z ładowanych bloków (bądź przez procedurę wykonywaną w wypadku stwierdzenia zmiany słowa $02E2), to nie ma ustalonego adresu, od którego należy wystartować załadowany plik binarny. Niektóre [[DOSy]] - jak [[DOS XL]] i [[SpartaDOS]] - w takim wypadku, uruchamiają program od początku pierwszego bloku. |
- | + | ||
{{stub}} | {{stub}} |
Wersja z dnia 17:09, 10 lis 2005
Spis treści |
Wstęp
Pliki binarne ośmiobitowego Atari mają postać blokową, tzn. składają się z jednego, bądź więcej bloków, przy czym pierwszy z nich musi zaczynań się sygnaturą w postaci słowa $FFFF. Pozostałe bloki mogą zawierać tą sygnaturę, ale nie jest to warunek konieczny.
Nagłówek
Każdy blok posiada nagłówek w postaci dwóch bądź trzech słów:
- sygnatura $FFFF (niezbędna przy pierwszym bloku, opcjonalna przy pozostałych),
- adres początku danych,
- adres końca.
Dane
Dane znajdują się bezpośrednio za nagłówkiem i wczytywane są w obszar pamięci wyznaczony przez adresy z nagłówka. Wyznaczają one również objętość ładowanych danych.
Obszary specjalne
W trakcie ładowania pliku binarnego słowa spod dwóch adresów w pamięci mają szczególne znaczenie:
- INITAD $02E2 - jeśli zostało zmienione poprzez ostatnio wczytywany blok, traktowane jest jako adres procedury do wykonania bezpośrednio po wczytaniu tego bloku (powrót przez RTS),
- RUNAD $02E0 - jeśli zostało zmienione przez którykolwiek z wczytywanych bloków, traktowane jest jako adres startowy od którego wykonywany zostanie program, po załadowaniu wszystkich bloków.
Jeśli słowo pod adresem $02E0 nie zostanie zmienione przez żaden z ładowanych bloków (bądź przez procedurę wykonywaną w wypadku stwierdzenia zmiany słowa $02E2), to nie ma ustalonego adresu, od którego należy wystartować załadowany plik binarny. Niektóre DOSy - jak DOS XL i SpartaDOS - w takim wypadku, uruchamiają program od początku pierwszego bloku.
Ten artykuł to tylko zalążek. Możesz pomóc rozwojowi Atariki poprzez rozszerzenie go o więcej informacji.