Cartridge (mapa pamięci)
From Atariki
| Wersja z dnia 20:58, 28 cze 2016 KMK (Dyskusja | wkład) ← Previous diff |
Wersja z dnia 21:05, 28 cze 2016 KMK (Dyskusja | wkład) Next diff → |
||
| Linia 1: | Linia 1: | ||
| + | == Pamięć kartridża == | ||
| Przestrzeń adresową [[cartridge]]'a dzielimy na dwie części: | Przestrzeń adresową [[cartridge]]'a dzielimy na dwie części: | ||
| Linia 4: | Linia 5: | ||
| * 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. | ||
| - | Wewnętrzny [[Atari BASIC]] w XL/XE to kartridż B. | + | == Nagłówek == |
| - | + | ||
| Nagłówek cartridge znajdujący się w ostatnich sześciu bajtach kartridża B ma następującą postać: | Nagłówek cartridge znajdujący się w ostatnich sześciu bajtach kartridża B ma następującą postać: | ||
| Linia 39: | Linia 39: | ||
| </td></tr> | </td></tr> | ||
| <tr><td>$BFFE-$BFFF</td><td>CARTINI</td><td><p>Adres inicjowania kartridża B.</p> | <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> | + | <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 = $01, gdy 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 | # mniej niż 176 stron (44 KB) podstawowej pamięci RAM, oraz | ||
| # rejestr CARTINS równy $00. | # rejestr CARTINS równy $00. | ||
| Linia 50: | Linia 50: | ||
| </td></tr> | </td></tr> | ||
| </table> | </table> | ||
| + | |||
| + | === Przykład nagłówka === | ||
| + | |||
| + | Wewnętrzny [[Atari BASIC]] w XL/XE to kartridż B. Ma on następujący nagłówek: | ||
| + | |||
| + | * CARTRUN: $A000 - adres uruchomienia | ||
| + | * CARTINS: $00 - kartridż obecny | ||
| + | * CARTOPT: $05 = %00000101 - boot z dyskietki dozwolony, uruchom przez CARTRUN | ||
| + | * CARTINI: $BFF0 - adres inicjowania (wskazuje rozkaz RTS) | ||
| {{stub}} | {{stub}} | ||
| [[Kategoria:Programowanie Atari 8-bit]] | [[Kategoria:Programowanie Atari 8-bit]] | ||
Wersja z dnia 21:05, 28 cze 2016
Pamięć kartridża
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.
Nagłówek
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 = $01, gdy 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. |
Przykład nagłówka
Wewnętrzny Atari BASIC w XL/XE to kartridż B. Ma on następujący nagłówek:
- CARTRUN: $A000 - adres uruchomienia
- CARTINS: $00 - kartridż obecny
- CARTOPT: $05 = %00000101 - boot z dyskietki dozwolony, uruchom przez CARTRUN
- CARTINI: $BFF0 - adres inicjowania (wskazuje rozkaz RTS)
Ten artykuł to tylko zalążek. Możesz pomóc rozwojowi Atariki poprzez rozszerzenie go o więcej informacji.
