Cartridge (mapa pamięci)

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 21:20, 28 cze 2016
KMK (Dyskusja | wkład)
(odwrotnie?)
← Previous diff
Wersja z dnia 21:23, 28 cze 2016
KMK (Dyskusja | wkład)
(jak odwrotnie, to odwrotnie)
Next diff →
Linia 6: Linia 6:
== Nagłówek == == 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 A ma następującą postać:
<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 A</b></center></td></tr>+<tr><td colspan="3"><center><b>Cartridge B/b></center></td></tr>
<tr><td>$9FFA-$9FFB</td><td> </td><td> </td></tr> <tr><td>$9FFA-$9FFB</td><td> </td><td> </td></tr>
<tr><td>$9FFC</td><td> </td><td> </td> </tr> <tr><td>$9FFC</td><td> </td><td> </td> </tr>
<tr><td>$9FFD</td><td> </td><td> </td> </tr> <tr><td>$9FFD</td><td> </td><td> </td> </tr>
<tr><td>$9FFE-$9FFF</td><td> </td><td> </td></tr> <tr><td>$9FFE-$9FFF</td><td> </td><td> </td></tr>
-<tr><td colspan="3"><center><b>Cartridge B</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 B.</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>
# wartość komórki TRAMSZ ($06) różna od $00, # wartość komórki TRAMSZ ($06) różna od $00,
Linia 38: Linia 38:
* bit 0 - wstępny odczyt z dyskietki (0 - zabroniony) * bit 0 - wstępny odczyt z dyskietki (0 - zabroniony)
</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 A.</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> <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
Linia 53: Linia 53:
=== Przykład nagłówka === === Przykład nagłówka ===
-Wewnętrzny [[Atari BASIC]] w XL/XE to kartridż B. Ma on następujący nagłówek:+Wewnętrzny [[Atari BASIC]] w XL/XE to kartridż A. Ma on następujący nagłówek:
* CARTRUN: $A000 - adres uruchomienia * CARTRUN: $A000 - adres uruchomienia

Wersja z dnia 21:23, 28 cze 2016

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ć:

AdresyEtykietaFunkcja
$BFFA-$BFFBCARTRUN

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:

  1. wartość komórki TRAMSZ ($06) różna od $00,
  2. bit 2 CARTOPT równy 1.

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).

$BFFCCARTINS

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).

$BFFDCARTOPT

Znaczniki:

  • bit 7 - rodzaj kartridża (0 zwykły, 1 - diagnostyczny)
  • bit 6 - niewykorzystany
  • bit 5 - niewykorzystany
  • bit 4 - niewykorzystany
  • bit 3 - niewykorzystany
  • bit 2 = 1 wykonaj inicjowanie przez CARTINI i uruchomienie przez CARTRUN (0 - tylko inicjowanie)
  • bit 1 - niewykorzystany
  • bit 0 - wstępny odczyt z dyskietki (0 - zabroniony)
$BFFE-$BFFFCARTINI

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:

  1. mniej niż 176 stron (44 KB) podstawowej pamięci RAM, oraz
  2. rejestr CARTINS równy $00.

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:

  1. rejestr TRIG3 sygnalizuje obecność kartridża w gnieździe,
  2. CARTINS równy $00,
  3. bit 7 CARTOPT równy 1.

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.

Personal tools