BOOT (format pliku)
From Atariki
Wersja z dnia 11:50, 4 wrz 2006 Xxl (Dyskusja | wkład) ← Previous diff |
Aktualna wersja Mono (Dyskusja | wkład) (→Przebieg procedury uruchomienia programu - linki) |
||
Linia 1: | Linia 1: | ||
- | [[BOOT (format pliku)|BOOT]] to format pliku wykorzystywany w małym Atari do wczytywania programów wykonywalnych z poziomu systemu operacyjnego [[OS]] bezpośrednio po uruchomieniu komputera, bez potrzeby wczytywania systemu [[DOS]]. Takim "plikiem" jest też na ogół sam DOS. | + | Format pliku wykorzystywany w [[Atari 8-bit|małym Atari]] do wczytywania programów wykonywalnych z poziomu [[OS|systemu operacyjnego]] bezpośrednio po uruchomieniu komputera, bez potrzeby uprzedniego wczytywania systemu [[DOS]]. Takim "plikiem" jest na ogół sam DOS. |
+ | Program typu "BOOT" może być wczytany zarówno z dyskietki jak i kasety. W przypadku uruchamiania programu typu BOOT z dyskietki należy po prostu włączyć komputer, system operacyjny będzie próbował odczytać program właśnie w formacie BOOT ze stacji dysków nr 1. Jeżeli chcemy przy tym wyłączyć wbudowany interpreter [[BASIC]] należy włączyć komputer z wciśniętym klawiszem OPTION. Natomiast jeżeli chcemy dokonać odczytu programu w formacie BOOT z magnetofonu należy włączyć komputer z wciśniętym klawiszem START. Odłączenie interpretera BASIC-a odbywa się identycznie jak w przypadku odczytu ze stacji dysków. | ||
+ | |||
+ | == Opis formatu == | ||
Na początku znajduje się sześciobajtowy nagłówek, składający się kolejno z dwóch pojedynczych bajtów i dwóch dwubajtowych słów: | Na początku znajduje się sześciobajtowy nagłówek, składający się kolejno z dwóch pojedynczych bajtów i dwóch dwubajtowych słów: | ||
- | * bajt 0 - wartość bez znaczenia dla systemu operacyjnego | + | * bajt 0 - wartość bez znaczenia dla systemu operacyjnego, |
- | * bajt 1 - liczba 128-bajtowych sektorów jakie nalezy wczytać | + | * bajt 1 - określa liczbę 128-bajtowych sektorów dyskietki lub rekordów z kasety jakie należy wczytać, |
- | * bajty 2 i 3 - adres, pod jaki należy wczytać całość | + | * bajty 2 (młodszy bajt) i 3 (starszy bajt) - adres, pod jaki system operacyjny wczyta całość danych, |
- | * bajty 3 i 4 - adres ponownego inicjowania programu w przypadku wciśnięcia klawisza RESET (wpisywany przez system do rejestru DOSINI) | + | * bajty 4 (młodszy bajt) i 5 (starszy bajt) - adres ponownego inicjowania programu w przypadku wciśnięcia klawisza RESET (wpisywany przez system do rejestru DOSINI lub CASINI), |
+ | * bajt 6 i dalsze - procedura inicjalizacyjna. | ||
+ | |||
+ | Cały plik składa się ze 128-bajtowych rekordów (w przypadku programu ładowanego z kasety) lub sektorów (w przypadku gdy program ładowany jest z dyskietki). | ||
+ | |||
+ | == Przebieg procedury uruchomienia programu == | ||
+ | |||
+ | Po wczytaniu programu jest on inicjalizowany przez wywołanie procedury ulokowanej od adresu wczytywania plus sześć bajtów. Ponieważ maksymalna liczba rekordów z jakich może się składać program wynosi 256 (0 podane jako ilość rekordów), to jest to dobry punkt do umieszczenia procedury ładującej pozostałe rekordy w przypadku gdy program jest dłuższy. Procedura ta w procesie ładowania programu zostanie wykonana tylko raz. | ||
- | Program uruchamiany jest od adresu wczytywania, plus sześć. | + | Powrót z ustawionym znacznikiem C powoduje wypisanie błędu BOOT ERROR oraz ponowienie procedury BOOT w przypadku dysku, a jej zakończenie w przypadku magnetofonu (co w dalszej części procedury RESET skutkuje skokiem pod adres w DOSVEC ($000A), gdzie w początkowej fazie ustawiany jest adres [[SELF TEST]]-u). |
- | Jeśli program typu BOOT uruchamiany jest z [[cartridge]] wtedy nagłówek znajduje się w ostatnich sześciu bajtach przestrzeni adresowej cartridge i ma postac: | + | Powrót z ze skasowanym znacznikiem C powoduje kontynuowanie procedury RESET, w tym ustawienie poprawnej wartości zmiennej BOOT? ($0009) i przepisanie adresu uruchomienia programu z czwartego i piątego bajtu nagłówka do wektora DOSINI ($000C), a w przypadku ładowania z kasety dodatkowo w CASINI ($0002), na końcu której następuje oddanie kontroli do programu przez skok pod ten właśnie adres. |
- | $9FFA lub $BFFA - xx - adres startu | + | == Zobacz też == |
- | xx / | + | |
- | 00 - zero oznacza cartridge podłączony (ważne dla systemu operacyjnego) | + | |
- | xx - flagi | + | |
- | xx - adres init | + | |
- | $9FFF lub $BFFF xx / | + | |
- | + | ||
- | gdzie flagi: | + | |
- | + | ||
- | * bit 0 - 1 = zezwalaj na boot z dyskietki | + | |
- | * bit 2 - 0 = nie uruchamiaj programu z cartridge po inicjacji | + | |
- | * bit 7 - 1 = cartridge serwisowy | + | |
+ | * [[RESET]] | ||
+ | * [[Boot]] | ||
+ | * [[Programowanie: Program odporny na RESET]] | ||
{{stub}} | {{stub}} | ||
[[Kategoria:Formaty plików]] | [[Kategoria:Formaty plików]] |
Aktualna wersja
Format pliku wykorzystywany w małym Atari do wczytywania programów wykonywalnych z poziomu systemu operacyjnego bezpośrednio po uruchomieniu komputera, bez potrzeby uprzedniego wczytywania systemu DOS. Takim "plikiem" jest na ogół sam DOS.
Program typu "BOOT" może być wczytany zarówno z dyskietki jak i kasety. W przypadku uruchamiania programu typu BOOT z dyskietki należy po prostu włączyć komputer, system operacyjny będzie próbował odczytać program właśnie w formacie BOOT ze stacji dysków nr 1. Jeżeli chcemy przy tym wyłączyć wbudowany interpreter BASIC należy włączyć komputer z wciśniętym klawiszem OPTION. Natomiast jeżeli chcemy dokonać odczytu programu w formacie BOOT z magnetofonu należy włączyć komputer z wciśniętym klawiszem START. Odłączenie interpretera BASIC-a odbywa się identycznie jak w przypadku odczytu ze stacji dysków.
Opis formatu
Na początku znajduje się sześciobajtowy nagłówek, składający się kolejno z dwóch pojedynczych bajtów i dwóch dwubajtowych słów:
- bajt 0 - wartość bez znaczenia dla systemu operacyjnego,
- bajt 1 - określa liczbę 128-bajtowych sektorów dyskietki lub rekordów z kasety jakie należy wczytać,
- bajty 2 (młodszy bajt) i 3 (starszy bajt) - adres, pod jaki system operacyjny wczyta całość danych,
- bajty 4 (młodszy bajt) i 5 (starszy bajt) - adres ponownego inicjowania programu w przypadku wciśnięcia klawisza RESET (wpisywany przez system do rejestru DOSINI lub CASINI),
- bajt 6 i dalsze - procedura inicjalizacyjna.
Cały plik składa się ze 128-bajtowych rekordów (w przypadku programu ładowanego z kasety) lub sektorów (w przypadku gdy program ładowany jest z dyskietki).
Przebieg procedury uruchomienia programu
Po wczytaniu programu jest on inicjalizowany przez wywołanie procedury ulokowanej od adresu wczytywania plus sześć bajtów. Ponieważ maksymalna liczba rekordów z jakich może się składać program wynosi 256 (0 podane jako ilość rekordów), to jest to dobry punkt do umieszczenia procedury ładującej pozostałe rekordy w przypadku gdy program jest dłuższy. Procedura ta w procesie ładowania programu zostanie wykonana tylko raz.
Powrót z ustawionym znacznikiem C powoduje wypisanie błędu BOOT ERROR oraz ponowienie procedury BOOT w przypadku dysku, a jej zakończenie w przypadku magnetofonu (co w dalszej części procedury RESET skutkuje skokiem pod adres w DOSVEC ($000A), gdzie w początkowej fazie ustawiany jest adres SELF TEST-u).
Powrót z ze skasowanym znacznikiem C powoduje kontynuowanie procedury RESET, w tym ustawienie poprawnej wartości zmiennej BOOT? ($0009) i przepisanie adresu uruchomienia programu z czwartego i piątego bajtu nagłówka do wektora DOSINI ($000C), a w przypadku ładowania z kasety dodatkowo w CASINI ($0002), na końcu której następuje oddanie kontroli do programu przez skok pod ten właśnie adres.
Zobacz też
Ten artykuł to tylko zalążek. Możesz pomóc rozwojowi Atariki poprzez rozszerzenie go o więcej informacji.