COM

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 10:07, 10 lis 2005
Jellonek (Dyskusja | wkład)
(tyle podgladow i nie zauwazylem zbednego przecinka...)
← Previous diff
Wersja z dnia 18:19, 25 kwi 2015
0xF (Dyskusja | wkład)
(geneza XEX)
Next diff →
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ę syngaturą w postaci słowa $FFFF. Pozostałe bloki mogą zawierać tą sygnaturę, ale nie jest to warunek koniczny.+
-== 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 dwuch 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ędość ł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 dwuch 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,+
-* $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) 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.+=== 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}}

Wersja z dnia 18:19, 25 kwi 2015

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