COM

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 14:35, 11 lis 2005
Jellonek (Dyskusja | wkład)
(Wstęp)
← Previous diff
Aktualna wersja
Mono (Dyskusja | wkład)
(COS+NCOPY przeniesione do binarnego pliku DOS)
Linia 1: Linia 1:
-== Wstęp ==+COM to format pliku zawierającego pliki wykonywalne dla ośmiobitowego Atari. Pliki o tym formacie występują też z rozszerzeniami [[EXE]] (głównie na Atari), oraz [[XEX]] (głównie do użycia w emulatorach). W wyniku niepełnej standaryzacji zamiennie stosuje się rozszerzenia .COM i .EXE, choć pierwotnie zakładano rozszerzenie .COM (command) dla plików rozszerzeń przeznaczonych dla procesora komend DOS-u oraz .EXE jako plików wykonywalnych (executable) czyli właściwych (użytkowych) programów.
-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 ==+Rozszerzenie .XEX zostało pierwszy raz użyte w emulatorze [[Atari800Win PLus]] w celu odróżnienia plików wykonywalnych Atari od plików wykonywalnych Windows. Pomysłodawcą .XEX jest [[Eru]], a można je rozwinąć jako "XE eXecutable".
-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 ==+== Format standardowy ==
-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.+Plik [[COM]] to standardowy [[Binarny plik DOSu|plik binarny DOSu]].
-== Obszary specjalne ==+Standardowy format nie przewiduje automatycznej relokacji kodu, nagłówek dosłownie wskazuje adresy, pod które należy wczytać dane zawarte w bloku (segmencie). Relokowalne binaria ma tylko [[SpartaDOS X]].
-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.+
 +== Formaty niestandardowe ==
-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.+=== XL OS ===
 + 
 +[[XL OS]] zawiera własny loader i relokator binariów nazwanych umownie [[ACX]].
 + 
 +=== SpartaDOS X ===
 + 
 +[[SpartaDOS X]] definiuje, jak wspomniano powyżej, format relokowalnych binariów. Są w nim zapisane załączone do DOS-u procedury systemowe i większość programów narzędziowych. Opcję tworzenia takich binariów mają m.in.: [[Fast Assembler]], [[HCASM]] oraz [[MADS]]. Segmenty tych binariów mają - w zależności od funkcji - następujące sygnatury:
 + 
 +* .word $FFFA ($FA,$FF) - blok nierelokowalny, ładowany pod wskazany w nagłówku adres (identycznie jak w przypadku bloku o sygnaturze $FFFF); na ogół zawiera nierezydentny (instalacyjny) segment jakiegoś sterownika.
 +* .word $FFFE ($FE,$FF) - blok relokowalny, ładowany nad MEMLO lub do dodatkowej pamięci, w zależności od zawartości nagłówka (blok może takźe rezerwować pusty obszar pamięci).
 +* .word $FFFD ($FD,$FF) - blok określający położenie adresów w programie, używany przy relokacji.
 +* .word $FFFB ($FB,$FF) - blok określający położenie odwołań do symboli zewnętrznych.
 +* .word $FFFC ($FC,$FF) - blok definicji symbolu.
 + 
 +=== OSS ===
 + 
 +Firmowy program zawierający rozszerzenia dla [[BASIC XE]] istnieje w postaci pliku z rozszerzeniem "OSS". Jest to zwykły plik binarny Atari DOS-u, w którym sygnatura została zmieniona na wartość .word $DDFF ($FF,$DD).
 + 
 +=== AlfAssembler ===
 + 
 +[[AlfAssembler]] definiuje format binarny funkcjonalnie identyczny ze standardowym, ale rozszerzony na całą przestrzeń adresową [[65C816]]. Nagłówek ma osiem bajtów: po sygnaturze $FBFB nastepuje 24-bitowy adres poczatku bloku, a po nim 24-bitowy adres końca bloku.
{{stub}} {{stub}}

Aktualna wersja

COM to format pliku zawierającego pliki wykonywalne dla ośmiobitowego Atari. Pliki o tym formacie występują też z rozszerzeniami EXE (głównie na Atari), oraz XEX (głównie do użycia w emulatorach). W wyniku niepełnej standaryzacji zamiennie stosuje się rozszerzenia .COM i .EXE, choć pierwotnie zakładano rozszerzenie .COM (command) dla plików rozszerzeń przeznaczonych dla procesora komend DOS-u oraz .EXE jako plików wykonywalnych (executable) czyli właściwych (użytkowych) programów.

Rozszerzenie .XEX zostało pierwszy raz użyte w emulatorze Atari800Win PLus w celu odróżnienia plików wykonywalnych Atari od plików wykonywalnych Windows. Pomysłodawcą .XEX jest Eru, a można je rozwinąć jako "XE eXecutable".

Spis treści

Format standardowy

Plik COM to standardowy plik binarny DOSu.

Standardowy format nie przewiduje automatycznej relokacji kodu, nagłówek dosłownie wskazuje adresy, pod które należy wczytać dane zawarte w bloku (segmencie). Relokowalne binaria ma tylko SpartaDOS X.

Formaty niestandardowe

XL OS

XL OS zawiera własny loader i relokator binariów nazwanych umownie ACX.

SpartaDOS X

SpartaDOS X definiuje, jak wspomniano powyżej, format relokowalnych binariów. Są w nim zapisane załączone do DOS-u procedury systemowe i większość programów narzędziowych. Opcję tworzenia takich binariów mają m.in.: Fast Assembler, HCASM oraz MADS. Segmenty tych binariów mają - w zależności od funkcji - następujące sygnatury:

  • .word $FFFA ($FA,$FF) - blok nierelokowalny, ładowany pod wskazany w nagłówku adres (identycznie jak w przypadku bloku o sygnaturze $FFFF); na ogół zawiera nierezydentny (instalacyjny) segment jakiegoś sterownika.
  • .word $FFFE ($FE,$FF) - blok relokowalny, ładowany nad MEMLO lub do dodatkowej pamięci, w zależności od zawartości nagłówka (blok może takźe rezerwować pusty obszar pamięci).
  • .word $FFFD ($FD,$FF) - blok określający położenie adresów w programie, używany przy relokacji.
  • .word $FFFB ($FB,$FF) - blok określający położenie odwołań do symboli zewnętrznych.
  • .word $FFFC ($FC,$FF) - blok definicji symbolu.

OSS

Firmowy program zawierający rozszerzenia dla BASIC XE istnieje w postaci pliku z rozszerzeniem "OSS". Jest to zwykły plik binarny Atari DOS-u, w którym sygnatura została zmieniona na wartość .word $DDFF ($FF,$DD).

AlfAssembler

AlfAssembler definiuje format binarny funkcjonalnie identyczny ze standardowym, ale rozszerzony na całą przestrzeń adresową 65C816. Nagłówek ma osiem bajtów: po sygnaturze $FBFB nastepuje 24-bitowy adres poczatku bloku, a po nim 24-bitowy adres końca bloku.


Ten artykuł to tylko zalążek. Możesz pomóc rozwojowi Atariki poprzez rozszerzenie go o więcej informacji.

Personal tools