COM

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 19:32, 22 mar 2007
KMK (Dyskusja | wkład)
(XL OS)
← Previous diff
Wersja z dnia 19:48, 22 mar 2007
KMK (Dyskusja | wkład)
(SpartaDOS X - ups)
Next diff →
Linia 30: Linia 30:
[[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: [[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 $FAFF - 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 $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 $FEFF - blok relokowalny, ładowany nad MEMLO lub do dodatkowe pamięci, w zalezności od zawartości nagłówka.+* .word $FFFE ($FE,$FF) - blok relokowalny, ładowany nad MEMLO lub do dodatkowe pamięci, w zalezności od zawartości nagłówka.
-* .word $FDFF - blok pusty (offset).+* .word $FFFD ($FD,$FF) - blok pusty (offset).
-* .word $FCFF - blok definicji symbolu.+* .word $FFFC ($FC,$FF) - blok definicji symbolu.
=== AlfAssembler === === AlfAssembler ===

Wersja z dnia 19:48, 22 mar 2007

Spis treści

Format standardowy

Plik COM to plik binarny, zwykle zawierający program wykonywalny dla ośmiobitowego Atari i przeznaczony do wczytania pod kontrolą DOS lub inicjalizera. Często COM jest komendą zewnętrzną systemu DOS, tak jak np. w systemie SpartaDOS X. 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.

Standardowy 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 zawiera nagłówek w postaci dwóch bądź trzech słów:

  1. sygnatura $FFFF (niezbędna przy pierwszym bloku, opcjonalna przy pozostałych),
  2. adres początku danych,
  3. 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.

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 dodatkowe pamięci, w zalezności od zawartości nagłówka.
  • .word $FFFD ($FD,$FF) - blok pusty (offset).
  • .word $FFFC ($FC,$FF) - blok definicji symbolu.

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