COM
From Atariki
Wersja z dnia 20:23, 29 gru 2005 Miker (Dyskusja | wkład) (→Wstęp - a może tak?) ← Previous diff |
Wersja z dnia 20:37, 29 gru 2005 KMK (Dyskusja | wkład) (→Wstęp) Next diff → |
||
Linia 1: | Linia 1: | ||
== Wstęp == | == Wstęp == | ||
Plik [[COM]] to plik binarny, zwykle zawierający program wykonywalny dla ośmiobitowego Atari i przeznaczony do wczytania pod kontrolą [[DOS]] (często jest to jego komenda zewnętrzna, np. w wypadku [[SpartaDOS X|Sparty]]) lub [[inicjalizer]]a. Plik taki ma strukturę blokową, tzn. składa się z jednego, bądź więcej bloków, czy też segmentó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 - wszystkie natomiast muszą zawierać nagłówek. | Plik [[COM]] to plik binarny, zwykle zawierający program wykonywalny dla ośmiobitowego Atari i przeznaczony do wczytania pod kontrolą [[DOS]] (często jest to jego komenda zewnętrzna, np. w wypadku [[SpartaDOS X|Sparty]]) lub [[inicjalizer]]a. Plik taki ma strukturę blokową, tzn. składa się z jednego, bądź więcej bloków, czy też segmentó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 - wszystkie natomiast muszą zawierać nagłówek. | ||
+ | |||
+ | Format nie przewiduje automatycznej relokacji kodu, nagłówek dosłownie wskazuje adresy, pod które nalezy wczytać dane zawarte w bloku (segmencie). Relokowalne binaria ma tylko [[SpartaDOS X]]. | ||
== Nagłówek == | == Nagłówek == |
Wersja z dnia 20:37, 29 gru 2005
Spis treści |
Wstęp
Plik COM to plik binarny, zwykle zawierający program wykonywalny dla ośmiobitowego Atari i przeznaczony do wczytania pod kontrolą DOS (często jest to jego komenda zewnętrzna, np. w wypadku Sparty) lub inicjalizera. Plik taki ma strukturę blokową, tzn. składa się z jednego, bądź więcej bloków, czy też segmentó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 - wszystkie natomiast muszą zawierać nagłówek.
Format nie przewiduje automatycznej relokacji kodu, nagłówek dosłownie wskazuje adresy, pod które nalezy wczytać dane zawarte w bloku (segmencie). Relokowalne binaria ma tylko SpartaDOS X.
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.