COM: Różnice pomiędzy wersjami

Z Atariki
Przejdź do nawigacji Przejdź do wyszukiwania
Jellonek (dyskusja | edycje)
m tyle podgladow i nie zauwazylem zbednego przecinka...
Nie podano opisu zmian
Linia 1: Linia 1:
== Wstęp ==
== Wstęp ==
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.
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 ==
== Nagłówek ==
Każdy blok posiada nagłówek w postaci dwuch bądź trzech słów:
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),
# sygnatura $FFFF (niezbędna przy pierwszym bloku, opcjonalna przy pozostałych),
# adres początku danych,
# adres początku danych,
Linia 9: Linia 9:


== Dane ==
== 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ędość ładowanych danych.
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 ==
== Obszary specjalne ==
W trakcie ładowania pliku binarnego słowa spod dwuch adresów w pamięci mają szczególne znaczenie:
W trakcie ładowania pliku binarnego słowa spod dwóch 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,
* 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),
* $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) 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.
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.
 


{{stub}}
{{stub}}

Wersja z 10 lis 2005, 19:09

Wstęp

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

Każdy blok posiada 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.


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