Rejestry PIA

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 01:25, 9 sty 2006
KMK (Dyskusja | wkład)
(huh, a niby czemu miałoby to "działać tylko w 400/800"?)
← Previous diff
Wersja z dnia 01:26, 9 sty 2006
KMK (Dyskusja | wkład)
(taka łopatologia jest niepotrzebna)
Next diff →
Linia 7: Linia 7:
<tr><td id="PORTA" rowspan = 2>$D300</td><td rowspan = 2>PORTA</td><td> <tr><td id="PORTA" rowspan = 2>$D300</td><td rowspan = 2>PORTA</td><td>
-<p>W trybie kontroli kierunku przepływu danych (PACTL:2 = 0): Ustawienie bitu na 0 programuje odpowiedni bit w rejestrze przesyłania danych jako bit wejścia danych, w przeciwnym wypadku - jako bit wyjścia danych. System programuje wszystkie linie portu jako wejście.</p></td></tr>+<p>W trybie kontroli kierunku przepływu danych: Ustawienie bitu na 0 programuje odpowiedni bit w rejestrze przesyłania danych jako bit wejścia danych, w przeciwnym wypadku - jako bit wyjścia danych. System programuje wszystkie linie portu jako wejście.</p></td></tr>
<tr><td> <tr><td>
-<p>W trybie przesyłu danych (PACTL:2 = 1): Przypisany jest do dwóch pierwszych (w [[XL]]/[[XE]]: dwóch jedynych) gniazd joysticka, młodsze 4 bity przekazują stany joysticka nr 1, starsze - joysticka nr 2. Cienie znajdują się odpowiednio pod JSTICK0 ($0278) i JSTICK1 ($0279).</p>+<p>W trybie przesyłu danych: Przypisany jest do dwóch pierwszych (w [[XL]]/[[XE]]: dwóch jedynych) gniazd joysticka, młodsze 4 bity przekazują stany joysticka nr 1, starsze - joysticka nr 2. Cienie znajdują się odpowiednio pod JSTICK0 ($0278) i JSTICK1 ($0279).</p>
</td></tr> </td></tr>
<tr><td id="PORTB" rowspan = 2>$D301</td><td rowspan = 2>PORTB</td><td> <tr><td id="PORTB" rowspan = 2>$D301</td><td rowspan = 2>PORTB</td><td>
-<p>W trybie kontroli kierunku przepływu danych (PBCTL:2 = 0): Ustawienie bitu na 0 programuje odpowiedni bit w rejestrze przesyłania danych jako bit wejścia danych, 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).</p></td></tr>+<p>W trybie kontroli kierunku przepływu danych: Ustawienie bitu na 0 programuje odpowiedni bit w rejestrze przesyłania danych jako bit wejścia danych, 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).</p></td></tr>
<tr><td> <tr><td>
-<p>W trybie przesyłu danych (PBCTL:2 = 1): 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.</p>+<p>W trybie przesyłu 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.</p>
<p>W serii [[XL]] rejestr ten steruje układem zarządzania pamięcią oraz (istniejącymi w niektórych modelach) diodami konsoli. Przypisanie bitów:</p> <p>W serii [[XL]] rejestr ten steruje układem zarządzania pamięcią oraz (istniejącymi w niektórych modelach) diodami konsoli. Przypisanie bitów:</p>
* bit 7: RAM w obszarze $5000-$57FF (1) lub SELF TEST tamże (0) * bit 7: RAM w obszarze $5000-$57FF (1) lub SELF TEST tamże (0)

Wersja z dnia 01:26, 9 sty 2006

Układ PIA, sześć rejestrów.

Lista rejestrów

AdresEtykietaOpis
$D300PORTA

W trybie kontroli kierunku przepływu danych: Ustawienie bitu na 0 programuje odpowiedni bit w rejestrze przesyłania danych jako bit wejścia danych, w przeciwnym wypadku - jako bit wyjścia danych. System programuje wszystkie linie portu jako wejście.

W trybie przesyłu danych: Przypisany jest do dwóch pierwszych (w XL/XE: dwóch jedynych) gniazd joysticka, młodsze 4 bity przekazują stany joysticka nr 1, starsze - joysticka nr 2. Cienie znajdują się odpowiednio pod JSTICK0 ($0278) i JSTICK1 ($0279).

$D301PORTB

W trybie kontroli kierunku przepływu danych: Ustawienie bitu na 0 programuje odpowiedni bit w rejestrze przesyłania danych jako bit wejścia danych, 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).

W trybie przesyłu 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: 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.

$D302PACTL

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

Bit 7 - status IRQ - ustawiany jest automatycznie na zero po odczycie PORTA.

$D303PBCTL

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

Bit 7 - status IRQ - ustawiany jest automatycznie na zero po odczycie PORTB.

Personal tools