<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl">
	<id>https://mirror.atariki.pl/w/index.php?action=history&amp;feed=atom&amp;title=Cartridge_%28mapa_pami%C4%99ci%29</id>
	<title>Cartridge (mapa pamięci) - Historia wersji</title>
	<link rel="self" type="application/atom+xml" href="https://mirror.atariki.pl/w/index.php?action=history&amp;feed=atom&amp;title=Cartridge_%28mapa_pami%C4%99ci%29"/>
	<link rel="alternate" type="text/html" href="https://mirror.atariki.pl/w/index.php?title=Cartridge_(mapa_pami%C4%99ci)&amp;action=history"/>
	<updated>2026-10-02T21:10:29Z</updated>
	<subtitle>Historia wersji tej strony wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://mirror.atariki.pl/w/index.php?title=Cartridge_(mapa_pami%C4%99ci)&amp;diff=568&amp;oldid=prev</id>
		<title>imported&gt;Atariki recovery: Reconstructed from archived HTML; see provenance manifest</title>
		<link rel="alternate" type="text/html" href="https://mirror.atariki.pl/w/index.php?title=Cartridge_(mapa_pami%C4%99ci)&amp;diff=568&amp;oldid=prev"/>
		<updated>2026-10-01T08:51:48Z</updated>

		<summary type="html">&lt;p&gt;Reconstructed from archived HTML; see provenance manifest&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nowa strona&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Pamięć kartridża ==&lt;br /&gt;
&lt;br /&gt;
Przestrzeń adresową [[Cartridge|cartridge]]&amp;#039;a dzielimy na dwie części:&lt;br /&gt;
&lt;br /&gt;
* Cartridge A: $A000-$BFFF. W komputerach [[800]] jest to kartridż lewy, a w [[400]] oraz [[XL]] i [[XE]] - jedyny.&lt;br /&gt;
* Cartridge B: $8000-$9FFF. W komputerach 800 jest to kartridż prawy.&lt;br /&gt;
&lt;br /&gt;
W 400/800 [[Atari OS]] obsługuje oba kartridże (mimo że 400 ma tylko jedno gniazdo), natomiast w XL/XE [[XL OS]] obsługuje tylko kartridż A.&lt;br /&gt;
&lt;br /&gt;
== Nagłówek ==&lt;br /&gt;
&lt;br /&gt;
Nagłówek cartridge znajdujący się w ostatnich sześciu bajtach obu obszarów ma następującą postać:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! Adresy&lt;br /&gt;
! Etykieta&lt;br /&gt;
! Funkcja&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot; | Cartridge B (tylko 400/800)&lt;br /&gt;
|-&lt;br /&gt;
| $9FFA-$9FFB&lt;br /&gt;
| CARTRUN (B)&lt;br /&gt;
| Adres uruchomienia kartridża B.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
# wartość komórki TSTDAT ($07) różna od $00,&lt;br /&gt;
# bit 2 CARTOPT (B) równy 1.&lt;br /&gt;
&lt;br /&gt;
Gdy te warunki są spełnione, system wykonuje skok JMP pod adres wskazany przez CARTRUN (B).&lt;br /&gt;
&lt;br /&gt;
Jeśli oba kartridże (A i B) spełniają warunki uruchomienia przez CARTRUN, uruchamiany jest kartridż A.&lt;br /&gt;
|-&lt;br /&gt;
| $9FFC&lt;br /&gt;
| CARTINS (B)&lt;br /&gt;
| Znacznik obecności kartridża (0 = włożony).&lt;br /&gt;
&lt;br /&gt;
Ponieważ wartość $00 może mieć również komórka pamięci RAM, zwykle sprawdzane są dodatkowe warunki (patrz niżej).&lt;br /&gt;
&lt;br /&gt;
Dla zwykłego kartridża sprawdzany, gdy pomiar rozmiaru RAM-u podstawowego wykaże mniej niż 144 stron pamięci (36 KB).&lt;br /&gt;
|-&lt;br /&gt;
| $9FFD&lt;br /&gt;
| CARTOPT (B)&lt;br /&gt;
| Znaczniki:&lt;br /&gt;
&lt;br /&gt;
* bit 7 - niewykorzystany&lt;br /&gt;
* bit 6 - niewykorzystany&lt;br /&gt;
* bit 5 - niewykorzystany&lt;br /&gt;
* bit 4 - niewykorzystany&lt;br /&gt;
* bit 3 - niewykorzystany&lt;br /&gt;
* bit 2 = 1 wykonaj inicjowanie przez CARTINI (B) i uruchomienie przez CARTRUN (B) (0 - tylko inicjowanie)&lt;br /&gt;
* bit 1 - niewykorzystany&lt;br /&gt;
* bit 0 - wstępny odczyt z dyskietki (0 - zabroniony)&lt;br /&gt;
&lt;br /&gt;
W obecności obu kartridży odczyt z dyskietki jest dozwolony, gdy zezwala nań co najmniej jeden kartridż.&lt;br /&gt;
|-&lt;br /&gt;
| $9FFE-$9FFF&lt;br /&gt;
| CARTINI (B)&lt;br /&gt;
| Adres inicjowania kartridża B.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
# mniej niż 144 strony (36 KB) podstawowej pamięci RAM, oraz&lt;br /&gt;
# rejestr CARTINS (B) równy $00.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot; | Cartridge A&lt;br /&gt;
|-&lt;br /&gt;
| $BFFA-$BFFB&lt;br /&gt;
| CARTRUN / CARTCS&lt;br /&gt;
| Adres uruchomienia kartridża A.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
# wartość komórki TRAMSZ ($06) różna od $00,&lt;br /&gt;
# bit 2 CARTOPT równy 1.&lt;br /&gt;
&lt;br /&gt;
Gdy te warunki są spełnione, system wykonuje skok JMP pod adres wskazany przez CARTRUN.&lt;br /&gt;
&lt;br /&gt;
Uruchomienie następuje po odczycie wstępnym z (kolejno) magnetofonu, dyskietki, nowego urządzenia, oraz po wyzerowaniu znacznika zimnego startu COLDST ($0244).&lt;br /&gt;
&lt;br /&gt;
Na 400/800, jeśli oba kartridże (A i B) spełniają warunki uruchomienia przez CARTRUN, uruchamiany jest kartridż A.&lt;br /&gt;
|-&lt;br /&gt;
| $BFFC&lt;br /&gt;
| CARTINS / CART&lt;br /&gt;
| Znacznik obecności kartridża (0 = włożony).&lt;br /&gt;
&lt;br /&gt;
Ponieważ wartość $00 może mieć również komórka pamięci RAM, zwykle sprawdzane są dodatkowe warunki (patrz niżej).&lt;br /&gt;
&lt;br /&gt;
Dla zwykłego kartridża sprawdzany, gdy pomiar rozmiaru RAM-u podstawowego wykaże mniej niż 176 stron pamięci (44 KB).&lt;br /&gt;
|-&lt;br /&gt;
| $BFFD&lt;br /&gt;
| CARTOPT / CARTFG&lt;br /&gt;
| Znaczniki:&lt;br /&gt;
&lt;br /&gt;
* bit 7 - rodzaj kartridża (0 zwykły, 1 - diagnostyczny)&lt;br /&gt;
* bit 6 - niewykorzystany&lt;br /&gt;
* bit 5 - niewykorzystany&lt;br /&gt;
* bit 4 - niewykorzystany&lt;br /&gt;
* bit 3 - niewykorzystany&lt;br /&gt;
* bit 2 = 1 wykonaj inicjowanie przez CARTINI i uruchomienie przez CARTRUN (0 - tylko inicjowanie)&lt;br /&gt;
* bit 1 - niewykorzystany&lt;br /&gt;
* bit 0 - wstępny odczyt z dyskietki (0 - zabroniony)&lt;br /&gt;
&lt;br /&gt;
Na 400/800 w obecności obu kartridży odczyt z dyskietki jest dozwolony, gdy zezwala nań co najmniej jeden z nich.&lt;br /&gt;
|-&lt;br /&gt;
| $BFFE-$BFFF&lt;br /&gt;
| CARTINI / CARTAD&lt;br /&gt;
| Adres inicjowania kartridża A.&lt;br /&gt;
&lt;br /&gt;
Inicjowanie zwykłego kartridża jest wykonywane po zainicjowaniu całego systemu operacyjnego (na XL/XE: łącznie z [[Nowe urządzenia|nowymi urządzeniami]]), po włączeniu przerwań, oraz:&lt;br /&gt;
&lt;br /&gt;
# na 400/800: po zainicjowaniu kartridża B,&lt;br /&gt;
# na XL/XE: po sprawdzeniu, czy klawisz START jest przyciśnięty (jego stan znajduje się pod CKEY $03E9 = $01, gdy naciśnięto),&lt;br /&gt;
&lt;br /&gt;
ale przed otwarciem edytora ekranowego. Do inicjowania muszą zostać spełnione następujące warunki:&lt;br /&gt;
&lt;br /&gt;
# mniej niż 176 stron (44 KB) podstawowej pamięci RAM, oraz&lt;br /&gt;
# rejestr CARTINS równy $00.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
CARTINI jest też wektorem używanym przy uruchamianiu kartridża diagnostycznego. Warunki do uruchomienia w XL/XE:&lt;br /&gt;
&lt;br /&gt;
# rejestr [[Rejestry GTIA#TRIG3|TRIG3]] sygnalizuje obecność kartridża w gnieździe;&lt;br /&gt;
# CARTINS równy $00,&lt;br /&gt;
# bit 7 CARTOPT równy 1.&lt;br /&gt;
&lt;br /&gt;
W 400/800:&lt;br /&gt;
&lt;br /&gt;
# CARTINS równy $00,&lt;br /&gt;
# zawartość CARTINS nie daje się zmodyfikować&lt;br /&gt;
# bit 7 CARTOPT równy 1.&lt;br /&gt;
&lt;br /&gt;
Gdy te warunki są spełnione, kartridż jest uruchamiany skokiem JMP pod adres wskazany przez CARTINI. Uruchomienie następuje przed zainicjowaniem systemu operacyjnego, na samym początku procedury RESET.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Przykład nagłówka ===&lt;br /&gt;
&lt;br /&gt;
Wewnętrzny [[Atari BASIC]] w XL/XE to kartridż A. Ma on następujący nagłówek:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! Etykieta&lt;br /&gt;
! Wartość&lt;br /&gt;
! Objaśnienie&lt;br /&gt;
|-&lt;br /&gt;
| CARTRUN&lt;br /&gt;
| $A000&lt;br /&gt;
| Adres uruchomienia.&lt;br /&gt;
|-&lt;br /&gt;
| CARTINS&lt;br /&gt;
| $00&lt;br /&gt;
| Kartridż obecny.&lt;br /&gt;
|-&lt;br /&gt;
| CARTOPT&lt;br /&gt;
| $05&lt;br /&gt;
| %00000101 - boot dyskietki dozwolony, uruchom przez CARTRUN.&lt;br /&gt;
|-&lt;br /&gt;
| CARTINI&lt;br /&gt;
| $BFF0&lt;br /&gt;
| Adres inicjowania (wskazuje rozkaz RTS).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Bibliografia ==&lt;br /&gt;
&lt;br /&gt;
* W. Zientara, &amp;quot;[[Podstawowe procedury systemu operacyjnego]]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Programowanie Atari 8-bit]]&lt;br /&gt;
[[Kategoria:Niezbędnik kodera]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Atariki recovery</name></author>
	</entry>
</feed>