Cartridge (mapa pamięci): Różnice pomiędzy wersjami
| Linia 10: | Linia 10: | ||
<table border="1" cellpadding="5"> | <table border="1" cellpadding="5"> | ||
<tr><td><b>Adresy</b></td><td><b>Etykieta</b></td><td><b>Funkcja</b></td></tr> | <tr><td><b>Adresy</b></td><td><b>Etykieta</b></td><td><b>Funkcja</b></td></tr> | ||
<tr><td colspan="3"><center><b>Cartridge B</b></center></td></tr> | |||
<tr><td colspan="3"><center><b>Cartridge B/b></center></td></tr> | <tr><td>$9FFA-$9FFB</td><td>CARTRUN (B)</td><td> | ||
<tr><td>$9FFA-$9FFB</td><td> </td><td> </td></tr> | <p>Adres uruchomienia kartridża B.</p> | ||
<tr><td>$9FFC</td><td> </td><td> </td> </tr> | <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> | ||
<tr><td>$9FFD</td><td> </td><td> </td> </tr> | # wartość komórki TSTDAT ($07) różna od $00, | ||
<tr><td>$9FFE-$9FFF</td><td> </td><td> </td></tr> | # bit 2 CARTOPT (B) równy 1. | ||
<p>Gdy te warunki są spełnione, system wykonuje skok JMP pod adres wskazany przez CARTRUN (B).</p> | |||
<p>Jeśli oba kartridże, A i B, spełniają warunki uruchomienia przez CARTRUN, uruchamiany jest kartridż A.</p> | |||
</td></tr> | |||
<tr><td>$9FFC</td><td>CARTINS (B)</td><td><p>Znacznik obecności kartridża (0 = włożony).</p> | |||
<p>Ponieważ wartość $00 może mieć również komórka pamięci RAM, zwykle sprawdzane są dodatkowe warunki (patrz niżej).</p> | |||
<p>Dla zwykłego kartridża sprawdzany, gdy pomiar rozmiaru RAM-u podstawowego wykaże mniej niż 144 stron pamięci (36 KB).</p> | |||
</td></tr> | |||
<tr><td>$9FFD</td><td>CARTOPT (B)</td><td> | |||
<p>Znaczniki:</p> | |||
* bit 7 - niewykorzystany | |||
* bit 6 - niewykorzystany | |||
* bit 5 - niewykorzystany | |||
* bit 4 - niewykorzystany | |||
* bit 3 - niewykorzystany | |||
* bit 2 = 1 wykonaj inicjowanie przez CARTINI (B) i uruchomienie przez CARTRUN (B) (0 - tylko inicjowanie) | |||
* bit 1 - niewykorzystany | |||
* bit 0 - wstępny odczyt z dyskietki (0 - zabroniony) | |||
<p>W obecności obu kartridży odczyt z dyskietki jest dozwolony, gdy zezwala nań co najmniej jeden kartridż.</p> | |||
</td></tr> | |||
<tr><td>$9FFE-$9FFF</td><td>CARTINI (B)</td><td> | |||
<p>Adres inicjowania kartridża B.</p> | |||
<p>Inicjowanie zwykłego kartridża jest wykonywane po zainicjowaniu całego systemu operacyjnego i po włączeniu przerwań, ale przed zainicjowaniem kartridża A. Do inicjowania muszą zostać spełnione następujące warunki:</p> | |||
# mniej niż 144 strony (36 KB) podstawowej pamięci RAM, oraz | |||
# rejestr CARTINS (B) równy $00. | |||
<p>Gdy te warunki są spełnione, system ustawia komórkę pamięci TSTDAT ($07) na 1 (lub na $00, gdy nie są), a potem wykonuje skok JSR pod adres wskazany przez CARTINI (B).</p> | |||
</td></tr> | |||
<tr><td colspan="3"><center><b>Cartridge A</b></center></td></tr> | <tr><td colspan="3"><center><b>Cartridge A</b></center></td></tr> | ||
<tr><td>$BFFA-$BFFB</td><td>CARTRUN</td><td><p>Adres uruchomienia kartridża A.</p> | <tr><td>$BFFA-$BFFB</td><td>CARTRUN</td><td><p>Adres uruchomienia kartridża A.</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> | <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> | ||
| Linia 24: | Linia 51: | ||
<p>Gdy te warunki są spełnione, system wykonuje skok JMP pod adres wskazany przez CARTRUN.</p> | <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> | <p>Uruchomienie następuje po odczycie wstępnym z (kolejno) magnetofonu, dyskietki, nowego urządzenia, oraz po wyzerowaniu znacznika zimnego startu COLDST ($0244).</p> | ||
<p>Jeśli oba kartridże, A i B, spełniają warunki uruchomienia przez CARTRUN, uruchamiany jest kartridż A.</p> | |||
</td></tr> | </td></tr> | ||
<tr><td>$BFFC</td><td>CARTINS</td><td><p>Znacznik obecności kartridża (0 = włożony).</p> | <tr><td>$BFFC</td><td>CARTINS</td><td><p>Znacznik obecności kartridża (0 = włożony).</p> | ||
| Linia 38: | Linia 66: | ||
* bit 1 - niewykorzystany | * bit 1 - niewykorzystany | ||
* bit 0 - wstępny odczyt z dyskietki (0 - zabroniony) | * bit 0 - wstępny odczyt z dyskietki (0 - zabroniony) | ||
<p>W obecności obu kartridży odczyt z dyskietki jest dozwolony, gdy zezwala nań co najmniej jeden kartridż.</p> | |||
</td></tr> | </td></tr> | ||
<tr><td>$BFFE-$BFFF</td><td>CARTINI</td><td><p>Adres inicjowania kartridża A.</p> | <tr><td>$BFFE-$BFFF</td><td>CARTINI</td><td><p>Adres inicjowania kartridża A.</p> | ||
Wersja z 28 cze 2016, 23:53
Pamięć kartridża
Przestrzeń adresową cartridge'a dzielimy na dwie części:
- Cartridge B: $8000-$9FFF. W komputerach 400/800 jest to kartridż prawy.
- Cartridge A: $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 A ma następującą postać:
| Adresy | Etykieta | Funkcja |
| $9FFA-$9FFB | CARTRUN (B) |
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 (B). Jeśli oba kartridże, A i B, spełniają warunki uruchomienia przez CARTRUN, uruchamiany jest kartridż A. |
| $9FFC | CARTINS (B) | Znacznik obecności kartridża (0 = włożony). Ponieważ wartość $00 może mieć również komórka pamięci RAM, zwykle sprawdzane są dodatkowe warunki (patrz niżej). Dla zwykłego kartridża sprawdzany, gdy pomiar rozmiaru RAM-u podstawowego wykaże mniej niż 144 stron pamięci (36 KB). |
| $9FFD | CARTOPT (B) |
Znaczniki:
W obecności obu kartridży odczyt z dyskietki jest dozwolony, gdy zezwala nań co najmniej jeden kartridż. |
| $9FFE-$9FFF | CARTINI (B) |
Adres inicjowania kartridża B. Inicjowanie zwykłego kartridża jest wykonywane po zainicjowaniu całego systemu operacyjnego i po włączeniu przerwań, ale przed zainicjowaniem kartridża A. Do inicjowania muszą zostać spełnione następujące warunki:
Gdy te warunki są spełnione, system ustawia komórkę pamięci TSTDAT ($07) na 1 (lub na $00, gdy nie są), a potem wykonuje skok JSR pod adres wskazany przez CARTINI (B). |
| $BFFA-$BFFB | CARTRUN | Adres uruchomienia kartridża A. 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). Jeśli oba kartridże, A i B, spełniają warunki uruchomienia przez CARTRUN, uruchamiany jest kartridż A. |
| $BFFC | CARTINS | Znacznik obecności kartridża (0 = włożony). Ponieważ wartość $00 może mieć również komórka pamięci RAM, zwykle sprawdzane są dodatkowe warunki (patrz niżej). 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:
W obecności obu kartridży odczyt z dyskietki jest dozwolony, gdy zezwala nań co najmniej jeden kartridż. |
| $BFFE-$BFFF | CARTINI | Adres inicjowania kartridża A. 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 w XL/XE:
W 400/800:
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ż A. 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.