Binarny plik DOS-u

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 13:11, 11 sie 2008
Jellonek (Dyskusja | wkład)

← Previous diff
Aktualna wersja
Mono (Dyskusja | wkład)
(COS + NCOPY - przykład)
Linia 1: Linia 1:
-Plik powstający po wydaniu polecenia "BINARY SAVE" z poziomu DOSów Atari w wersjach 1.0, 2.0, 2.5, 4.0, jak i MyDOSu.+Plik powstający po wydaniu polecenia "BINARY SAVE" z poziomu [[DOS]]-ów Atari w wersjach 1.0, 2.0, 2.5, 4.0, jak i MyDOSu.
== Format standardowy == == Format standardowy ==
-Plik binarny, zwykle zawierający program wykonywalny dla ośmiobitowego Atari i przeznaczony do wczytania pod kontrolą [[DOS]] 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 binarny, zwykle zawierający program wykonywalny dla ośmiobitowego Atari i przeznaczony do wczytania pod kontrolą DOS-u 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.
Standardowy format nie przewiduje automatycznej relokacji danych, nagłówek dosłownie wskazuje adresy, pod które należy wczytać dane zawarte w bloku (segmencie). Relokowalne binaria ma tylko [[SpartaDOS X]]. Standardowy format nie przewiduje automatycznej relokacji danych, nagłówek dosłownie wskazuje adresy, pod które należy wczytać dane zawarte w bloku (segmencie). Relokowalne binaria ma tylko [[SpartaDOS X]].
Linia 20: Linia 20:
* 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. * 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.+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 DOS-y - jak [[DOS XL]] i [[SpartaDOS]] - w takim wypadku, uruchamiają program od początku pierwszego bloku.
 + 
 +=== COS + NCOPY ===
 + 
 +[[COS]] w trakcie ładowania programu z taśmy pozwala na wyświetlenie jego nazwy nadanej podczas kopiowania przy pomocy programu [[Name Copy]]. Blok nazwy jest zwykłym blokiem binarnym ładowanym w obszar $1C0-$1CE:
 + 
 +* $00-$07: nazwa pliku w kodach [[ATASCII]],
 +* $08-$0A: rozszerzenie pliku w kodach ATASCII,
 +* $0B: spacja ($20)
 +* $0C-$0E: długość pliku wyrażona w 128-bajtowych blokach również zapisana kodami ATASCII.
 + 
 +'''UWAGA!''' Jest on zapisywany przez [[Name Copy]] jako pierwszy blok pliku, co może powodować problemy z uruchomieniem programu w niektórych [[DOS]]-ach w sytuacji gdy w pliku nie zdefiniowano adresu uruchomienia programu.
 + 
 +Przykładowa treść bloku:
 + 
 + QA COM 100
== Przykłady == == Przykłady ==
-Format ten stosowany jest zarówno do wczytywania kodu programu (np. zewnętrzne polecenia DOSu w postaci plików [[COM]], [[EXE]], [[XEX]]), jak i pozbawionych kodu programu czystych danych (np. [[CMC]], [[TMC]]). +Format ten stosowany jest zarówno do wczytywania kodu programu (np. zewnętrzne polecenia DOS-u w postaci plików [[COM]], [[EXE]], [[XEX]]), jak i pozbawionych kodu programu czystych danych (np. [[CMC (format pliku)|CMC]], [[TMC (format pliku)|TMC]]).
[[Kategoria:Atari 8-bit]] [[Kategoria:Atari 8-bit]]
[[Kategoria:Programowanie Atari 8-bit]] [[Kategoria:Programowanie Atari 8-bit]]
[[Kategoria:Formaty plików]] [[Kategoria:Formaty plików]]

Aktualna wersja

Plik powstający po wydaniu polecenia "BINARY SAVE" z poziomu DOS-ów Atari w wersjach 1.0, 2.0, 2.5, 4.0, jak i MyDOSu.

Spis treści

Format standardowy

Plik binarny, zwykle zawierający program wykonywalny dla ośmiobitowego Atari i przeznaczony do wczytania pod kontrolą DOS-u 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.

Standardowy format nie przewiduje automatycznej relokacji danych, nagłówek dosłownie wskazuje adresy, pod które należy 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 DOS-y - jak DOS XL i SpartaDOS - w takim wypadku, uruchamiają program od początku pierwszego bloku.

COS + NCOPY

COS w trakcie ładowania programu z taśmy pozwala na wyświetlenie jego nazwy nadanej podczas kopiowania przy pomocy programu Name Copy. Blok nazwy jest zwykłym blokiem binarnym ładowanym w obszar $1C0-$1CE:

  • $00-$07: nazwa pliku w kodach ATASCII,
  • $08-$0A: rozszerzenie pliku w kodach ATASCII,
  • $0B: spacja ($20)
  • $0C-$0E: długość pliku wyrażona w 128-bajtowych blokach również zapisana kodami ATASCII.

UWAGA! Jest on zapisywany przez Name Copy jako pierwszy blok pliku, co może powodować problemy z uruchomieniem programu w niektórych DOS-ach w sytuacji gdy w pliku nie zdefiniowano adresu uruchomienia programu.

Przykładowa treść bloku:

QA      COM 100

Przykłady

Format ten stosowany jest zarówno do wczytywania kodu programu (np. zewnętrzne polecenia DOS-u w postaci plików COM, EXE, XEX), jak i pozbawionych kodu programu czystych danych (np. CMC, TMC).

Personal tools