From Atariki
			
												
			Układ PIA, sześć rejestrów.
Lista rejestrów
| Adres | Etykieta | Opis | 
| $D300 | PORTA | 
Jako rejestr kierunku przepływu danych: ustawienie bitu na 0 programuje odpowiedni bit w rejestrze przesyłania danych jako bit wejścia, w przeciwnym wypadku - jako bit wyjścia danych. System programuje wszystkie linie portu jako wejście. | 
| 
 Jako rejestr przesyłania danych: przypisany jest do dwóch pierwszych (w XL i XE: dwóch jedynych) gniazd joysticka, młodsze 4 bity przekazują stany joysticka nr 1, starsze - joysticka nr 2.
 Znaczenie bitów kiedy do gniazd podłączone są joysticki (cień dla dolnego nibble znajduje się odpowiednio pod JSTICK0 ($0278), a dla górnego pod JSTICK1 ($0279)):
 
-  bit 7: joystick 1 w prawo (0 = tak, 1 = nie)
 -  bit 6: joystick 1 w lewo (0 = tak, 1 = nie)
 -  bit 5: joystick 1 w dół (0 = tak, 1 = nie)
 -  bit 4: joystick 1 w górę (0 = tak, 1 = nie)
 -  bit 3: joystick 0 w prawo (0 = tak, 1 = nie)
 -  bit 2: joystick 0 w lewo (0 = tak, 1 = nie)
 -  bit 1: joystick 0 w dół (0 = tak, 1 = nie)
 -  bit 0: joystick 0 w górę (0 = tak, 1 = nie)
  
Znaczenie bitów kiedy do gniazd podłączone są paddles (cienie dla odpowiednich przycisków znajdują się od PTRIG0 ($027C) do PTRIG3 ($027F)):
 
-  bit 7: przycisk potencjometru 3 (0 = wciśnięty, 1 = zwolniony)
 -  bit 6: przycisk potencjometru 2 (0 = wciśnięty, 1 = zwolniony)
 -  bit 5: nieużywany (1)
 -  bit 4: nieużywany (1)
 -  bit 3: przycisk potencjometru 1 (0 = wciśnięty, 1 = zwolniony)
 -  bit 2: przycisk potencjometru 0 (0 = wciśnięty, 1 = zwolniony)
 -  bit 1: nieużywany (1)
 -  bit 0: nieużywany (1)
  
Znaczenie bitów kiedy do gniazd podłączone jest pióro świetlne (dedykowanych rejestrów cieni dla przycisków pióra nie ma, lecz z powodzeniem można posłużyć się rejestrami położenia joysticków JSTICK0, oraz JSTICK1):
 
-  bit 7: nieużywany (1)
 -  bit 6: nieużywany (1)
 -  bit 5: nieużywany (1)
 -  bit 4: przycisk pióra 1 (0 = wciśnięty, 1 = zwolniony)
 -  bit 3: nieużywany (1)
 -  bit 2: nieużywany (1)
 -  bit 1: nieużywany (1)
 -  bit 0: przycisk pióra 0 (0 = wciśnięty, 1 = zwolniony)
  
 | 
| $D301 | PORTB | 
Jako rejestr kierunku przepływu danych: ustawienie bitu na 0 programuje odpowiedni bit w rejestrze przesyłania danych jako bit wejścia, w przeciwnym wypadku - jako bit wyjścia danych. System w 400/800 programuje wszystkie linie portu jako wejście, w XL/XE - wszystkie jako wyjście, za wyjątkiem 1450XLD, gdzie bity 4 i 5 są programowane jako wejściowe (aczkolwiek nie wiadomo, po co). | 
| 
 Jako rejestr przesyłania danych: w serii 400/800 przypisany jest do drugiej (nieistniejącej w XL/XE) pary gniazd joysticka, młodsze 4 bity przekazują stany joysticka nr 3, starsze - joysticka nr 4. Cienie znajdują się odpowiednio pod JSTICK2 ($027A) i JSTICK3 ($027B). W serii XL/XE są to duplikaty cieni portu A.
 W serii XL rejestr ten steruje układem zarządzania pamięcią oraz (istniejącymi w niektórych modelach) diodami konsoli. Przypisanie bitów:
 
-  bit 7: RAM w obszarze $5000-$57FF (1) lub SELF TEST tamże (0)
 -  bit 6: nieużywany
 -  bit 5: nieużywany
 -  bit 4: nieużywany
 -  bit 3: LED 2 (0 - świeci się)
 -  bit 2: LED 1 (0 - świeci się)
 -  bit 1: RAM w obszarze $A000-$BFFF (1) lub Atari BASIC tamże (0)
 -  bit 0: ROM systemu operacyjnego w obszarze $C000-$CFFF i $D800-$FFFF (1) lub RAM tamże (0)
  
Wartością domyślną jest $FF.
 W serii XE rejestr ten steruje układem zarządzania pamięcią. Przypisanie bitów:
 
-  bit 7: RAM w obszarze $5000-$57FF (1) lub SELF TEST tamże (0)
 -  bit 6: w XEGS gdy BASIC jest wyłączony (bit 1=1), ustawienie tutaj 0 włącza ROM wbudowanej gry Missile Command. W pozostałych modelach nieużywany.
 -  bit 5: w obszarze $4000-$7FFF ANTIC widzi pamięć główną (1) lub dodatkową (0)
 -  bit 4: w obszarze $4000-$7FFF CPU widzi pamięć główną (1) lub dodatkową (0)
 -  bit 3: wybór banku pamięci dodatkowej 16k w obszarze $4000-$7FFF
 -  bit 2: wybór banku pamięci dodatkowej 16k w obszarze $4000-$7FFF
 -  bit 1: RAM w obszarze $A000-$BFFF (1) lub Atari BASIC tamże (0)
 -  bit 0: ROM systemu operacyjnego w obszarze $C000-$CFFF i $D800-$FFFF (1) lub RAM tamże (0)
  
Wartością domyślną jest $FF.
 
Działanie bitu 7 jest uzależnione od stanu bitu 0: bit 7 włącza i wyłącza SELF TEST tylko wtedy, kiedy bit 0 jest ustawiony na 1. W przeciwnym razie zmiany stanu bitu 7 są ignorowane. 
Działanie tego rejestru modyfikują rozszerzenia pamięci. Dwa podstawowe typy to: 
-  Compy Shop
 -  Rambo XL
 -  MapRAM - właściwie nie rozszerzenie, a sposób na użycie niedostępnej pamięci RAM spod rejestrów systemowych (pozwala na ustawienie bitu 7, gdy bit 0 jest równy 0)
  
 | 
| $D302 | PACTL | 
 Rejestr kontroli portu A. Znaczenie bitów:
 
-  bit 7: status przerwania IRQ portu A (1 - wystąpiło)
 -  bit 6: nieużywany (zawsze 0)
 -  bit 5: nieużywany (zawsze 1)
 -  bit 4: nieużywany (zawsze 1)
 -  bit 3: sterowanie silnikiem magnetofonu (0 - włączony, 1 - wyłączony)
 -  bit 2: bit wyboru funkcji rejestru PORTA: 0 - rejestr kierunku przepływu danych, 1 - rejestr przesyłania danych
 -  bit 1: nieużywany (zawsze 0)
 -  bit 0: zezwolenie na przerwanie IRQ portu A (1 - dozwolone)
  
Przerwanie IRQ portu A podłączone jest do linii PROCEED gniazda SIO. System programuje tu domyślnie brak zezwolenia na jego wystąpienie. Status IRQ kasowany jest automatycznie po odczycie PORTA.
 
 | 
| $D303 | PBCTL | 
 Rejestr kontroli portu B. Znaczenie bitów:
 
-  bit 7: status przerwania IRQ portu B (1 - wystąpiło)
 -  bit 6: nieużywany (zawsze 0)
 -  bit 5: nieużywany (zawsze 1)
 -  bit 4: nieużywany (zawsze 1)
 -  bit 3: sterowanie linią COMMAND gniazda SIO (0 - aktywna)
 -  bit 2: bit wyboru funkcji rejestru PORTB: 0 - rejestr kierunku przepływu danych, 1 - rejestr przesyłania danych.
 -  bit 1: nieużywany (zawsze 0)
 -  bit 0: zezwolenie na przerwanie IRQ portu B (1 - dozwolone)
  
Przerwanie IRQ portu B podłączone jest do linii INTERRUPT gniazda SIO. System programuje tu domyślnie brak zezwolenia na jego wystąpienie. Status IRQ kasowany jest automatycznie po odczycie PORTB.
 
 |