Cartridge (mapa pamięci)
From Atariki
Wersja z dnia 14:44, 23 cze 2016 KMK (Dyskusja | wkład) ← Previous diff |
Wersja z dnia 20:56, 28 cze 2016 KMK (Dyskusja | wkład) (wstępne porządki) Next diff → |
||
Linia 1: | Linia 1: | ||
- | Nagłówek [[cartridge]] znajduje się w ostatnich sześciu bajtach przestrzeni adresowej cartridge. Tę przestrzeń dzielimy na dwie części: | + | Przestrzeń adresową [[cartridge]]'a dzielimy na dwie części: |
* Cartridge A: $8000-$9FFF. W komputerach [[400/800]] jest to kartridż prawy. | * Cartridge A: $8000-$9FFF. W komputerach [[400/800]] jest to kartridż prawy. | ||
* Cartridge B: $A000-$BFFF. W komputerach [[400/800]] jest to kartridż lewy, a w [[XL]] i [[XE]] - jedyny. | * Cartridge B: $A000-$BFFF. W komputerach [[400/800]] jest to kartridż lewy, a w [[XL]] i [[XE]] - jedyny. | ||
- | Nagłówek kartridża w obu przypadkach ma następującą postać: | + | Wewnętrzny [[Atari BASIC]] w XL/XE to kartridż B. |
- | $9FFA lub $BFFA - xx - adres startu | + | Nagłówek [[cartridge]] znajdujący się w ostatnich sześciu bajtach kartridża B ma następującą postać: |
- | xx / | + | |
- | 00 - zero oznacza cartridge podłączony (ważne dla systemu operacyjnego) | + | <table border="1" cellpadding="5"> |
- | xx - flagi | + | <tr><td><b>Adresy</b></td><td><b>Etykieta</b></td><td><b>Funkcja</b></td></tr> |
- | xx - adres init | + | <!-- |
- | $9FFF lub $BFFF xx / | + | <tr><td colspan="3"><center><b>Cartridge A</b></center></td></tr> |
- | + | <tr><td>$9FFA-$9FFB</td><td> </td><td> </td></tr> | |
- | gdzie "flagi": | + | <tr><td>$9FFC</td><td> </td><td> </td> </tr> |
- | + | <tr><td>$9FFD</td><td> </td><td> </td> </tr> | |
- | * bit 0 - 1 = zezwalaj na boot z dyskietki | + | <tr><td>$9FFE-$9FFF</td><td> </td><td> </td></tr> |
- | * bit 2 - 0 = nie uruchamiaj programu z cartridge po inicjacji | + | <tr><td colspan="3"><center><b>Cartridge B</b></center></td></tr> |
- | * bit 7 - 1 = cartridge serwisowy (diagnostyczny) | + | --> |
+ | <tr><td>$BFFA-$BFFB</td><td>CARTRUN</td><td><p>Adres uruchomienia kartridża B.</p> | ||
+ | <p>W przeciwieństwie do inicjowania, które jest obligatoryjne, uruchomienie kartridża jest opcjonalne. Żeby nastąpiło, muszą zostać spełnione następujące warunki:</p> | ||
+ | # wartość komórki TRAMSZ ($06) różna od $00, | ||
+ | # bit 2 CARTOPT równy 1. | ||
+ | <p>Gdy te warunki są spełnione, system wykonuje skok JMP pod adres wskazany przez CARTRUN.</p> | ||
+ | <p>Uruchomienie następuje po odczycie wstępnym z (kolejno) magnetofonu, dyskietki, nowego urządzenia, oraz po wyzerowaniu znacznika zimnego startu COLDST ($0244).</p> | ||
+ | </td></tr> | ||
+ | <tr><td>$BFFC</td><td>CARTINS</td><td><p>Znacznik obecności kartridża (0 = włożony).</p> | ||
+ | <p>W XL/XE dla kartridża diagnostycznego sprawdzany tylko wtedy, gdy rejestr [[Rejestry GTIA#TRIG3|TRIG3]] sygnalizuje obecność kartridża w gnieździe. Dla zwykłego kartridża sprawdzany, gdy pomiar rozmiaru RAM-u podstawowego wykaże mniej niż 176 stron pamięci (44 KB).</p> | ||
+ | </td></tr> | ||
+ | <tr><td>$BFFD</td><td>CARTOPT</td><td><p>Znaczniki:</p> | ||
+ | * bit 7 - rodzaj kartridża (0 zwykły, 1 - diagnostyczny) | ||
+ | * bit 2 = 1 wykonaj inicjowanie przez CARTINI i uruchomienie przez CARTRUN (0 - tylko inicjowanie) | ||
+ | * bit 0 - wstępny odczyt z dyskietki (0 - zabroniony) | ||
+ | </td></tr> | ||
+ | <tr><td>$BFFE-$BFFF</td><td>CARTINI</td><td><p>Adres inicjowania kartridża B.</p> | ||
+ | <p>Inicjowanie zwykłego kartridża jest wykonywane po zainicjowaniu całego systemu operacyjnego (łącznie z [[Nowe urządzenia|nowymi urządzeniami]]), po włączeniu przerwań i po sprawdzeniu, czy klawisz START jest przyciśnięty (jego stan znajduje się pod CKEY $03E9 - 1 = naciśnięty), ale przed otwarciem edytora ekranowego. Do inicjowania muszą zostać spełnione następujące warunki:</p> | ||
+ | # mniej niż 176 stron (44 KB) podstawowej pamięci RAM, oraz | ||
+ | # rejestr CARTINS równy $00. | ||
+ | <p>Gdy te warunki są spełnione, system ustawia komórkę pamięci TRAMSZ ($06) na 1 (lub na $00, gdy nie są), a potem wykonuje skok JSR pod adres wskazany przez CARTINI.</p> | ||
+ | <p>CARTINS jest też wektorem używanym przy uruchamianiu kartridża diagnostycznego. Warunki do uruchomienia:</p> | ||
+ | # rejestr [[Rejestry GTIA#TRIG3|TRIG3]] sygnalizuje obecność kartridża w gnieździe, | ||
+ | # CARTINS równy $00, | ||
+ | # bit 7 CARTOPT równy 1. | ||
+ | <p>Gdy te warunki są spełnione, kartridż jest uruchamiany skokiem JMP pod adres wskazany przez CARTINI. Uruchomienie następuje przez zainicjowaniem systemu operacyjnego, na samym początku procedury RESET.</p> | ||
+ | </td></tr> | ||
+ | </table> | ||
{{stub}} | {{stub}} | ||
[[Kategoria:Programowanie Atari 8-bit]] | [[Kategoria:Programowanie Atari 8-bit]] |
Wersja z dnia 20:56, 28 cze 2016
Przestrzeń adresową cartridge'a dzielimy na dwie części:
- Cartridge A: $8000-$9FFF. W komputerach 400/800 jest to kartridż prawy.
- Cartridge B: $A000-$BFFF. W komputerach 400/800 jest to kartridż lewy, a w XL i XE - jedyny.
Wewnętrzny Atari BASIC w XL/XE to kartridż B.
Nagłówek cartridge znajdujący się w ostatnich sześciu bajtach kartridża B ma następującą postać:
Adresy | Etykieta | Funkcja |
$BFFA-$BFFB | CARTRUN | Adres uruchomienia kartridża B. W przeciwieństwie do inicjowania, które jest obligatoryjne, uruchomienie kartridża jest opcjonalne. Żeby nastąpiło, muszą zostać spełnione następujące warunki:
Gdy te warunki są spełnione, system wykonuje skok JMP pod adres wskazany przez CARTRUN. Uruchomienie następuje po odczycie wstępnym z (kolejno) magnetofonu, dyskietki, nowego urządzenia, oraz po wyzerowaniu znacznika zimnego startu COLDST ($0244). |
$BFFC | CARTINS | Znacznik obecności kartridża (0 = włożony). W XL/XE dla kartridża diagnostycznego sprawdzany tylko wtedy, gdy rejestr TRIG3 sygnalizuje obecność kartridża w gnieździe. Dla zwykłego kartridża sprawdzany, gdy pomiar rozmiaru RAM-u podstawowego wykaże mniej niż 176 stron pamięci (44 KB). |
$BFFD | CARTOPT | Znaczniki:
|
$BFFE-$BFFF | CARTINI | Adres inicjowania kartridża B. Inicjowanie zwykłego kartridża jest wykonywane po zainicjowaniu całego systemu operacyjnego (łącznie z nowymi urządzeniami), po włączeniu przerwań i po sprawdzeniu, czy klawisz START jest przyciśnięty (jego stan znajduje się pod CKEY $03E9 - 1 = naciśnięty), ale przed otwarciem edytora ekranowego. Do inicjowania muszą zostać spełnione następujące warunki:
Gdy te warunki są spełnione, system ustawia komórkę pamięci TRAMSZ ($06) na 1 (lub na $00, gdy nie są), a potem wykonuje skok JSR pod adres wskazany przez CARTINI. CARTINS jest też wektorem używanym przy uruchamianiu kartridża diagnostycznego. Warunki do uruchomienia:
Gdy te warunki są spełnione, kartridż jest uruchamiany skokiem JMP pod adres wskazany przez CARTINI. Uruchomienie następuje przez zainicjowaniem systemu operacyjnego, na samym początku procedury RESET. |
Ten artykuł to tylko zalążek. Możesz pomóc rozwojowi Atariki poprzez rozszerzenie go o więcej informacji.