..:: Serious Magazine ::..
wydanie 14

  Wstępniak
  Fairy Castle czyli Zaklęty Zamek
  Piano v1.0
  Prezentacja Fairy Castle, Piano
  Klimat...
  Profesor
  Nowoczesne zakupy...
  Postać Atari - Nir Dary
  List do mnie i o mnie - Jabol
  Teraz ja!
  Dekoder
  Humor w Serious'ie
  Recenzja, polemika: Numen
  Nowy
  K.S.O. 2T06 TURBO
  Notka - TURBO 2T06
  Moja przygoda z Atari...
  Zabobony
  Sidcar
  Design Master
  Próbnik - trzecie oko elektronika
  Sterowanie biologiczne
  Jak się pozbyć...
  Grzebanie w popiele
  Nakładka
  Kontroler obrazu
  Jaka dokładność?
  Atari w Internecie
  LCD
  Gadżet
  Gadżet - demo
  Zestaw kilku prac

  Wyjście
Dekoder


      Nie pamiętam który to był rok, było to dawno. Pewnie 1992 lub +-1. Pojechałem na giełdę, a tam ku mojemu zaskoczeniu jakiś gość sprzedawał książki o Atari. Zgadnijcie co zrobiłem? Kosztowała 2850zł. Wtedy dużo, a i dziś niemało. Książka nazywa się ASSEMBLER 6502 wydana przez SOETO w 1987, Ruszczyca. Lektura była pierwszorzędna, choć muszę przyznać nie wszystko było jasne i zrozumiałe. Np. na stronie 167 jest dosyć skrócona mapa pamięci. Oczywiście podobnych miałem już wiele, ale dopiero ta wzbudziła moje zainteresowanie. Dlaczego? Czytam coś takiego:

      D000-D7FF obszar rejestrów, poza nimi nie do wykorzystania w tym:

      D000-D0FF GTIA...
      D100-D1FF Nieużywane
      D200-D2FF POKEY...
      D300-D3FF PIA...
      D400-D5FF ANTIC...
      D600-D6FF Nieużywane
      D700-D7FF Nieużywane

???

Nadal nic nie wiem. Dlaczego!?

Przecież komputer jest, działa i takie marnotrawstwo pamięci? Dlaczego pewne obszary nie są używane, na dodatek niedostępne, z czego to wynika? Schemat do ręki, analizujemy (mam na myśli komputer Atari 800XL). Szyna adresowa, dokładnie jej linie adresowe A11, A12, A13, A14, A15 dochodzą do MMU. Ten układ między innymi wyodrębni z całości adresy z przedziału $D000-$D7FF. Sygnalizuje to wystawieniem stanu niskiego na końcówkę 17 oznaczoną IO (z kreseczką na górze) co właśnie stanowi, że aktywnym sygnałem jest stan niski. Tuż obok jest układ 74LS138, który jest niczym innym jak dekoderem 1 z 8. Czytaj: jeden z ośmiu. Do jego wejść adresowych A,B,C doprowadzone są linie adresowe A8, A9, A10. Wejścia wyboru połączone są następują co:


Wszystko O.K. Ale lepiej widać to będzie na poglądowym schemacie....


oraz na "tablicy prawdy"...
A15A14A13A12A11A10A9A8Opis
11010000GTIA
11010010Nieużywany
11010010POKEY
11010011PIA
11010100ANTIC
11010101CCTL
11010110Nieużywany
11010111Nieużywany

Sygnał aktywności dla GTIA pojawia się na pinie 15 układu 74LS138
Sygnał dla POKEY'a na pinie 13
Sygnał dla PIA na pinie 12
Sygnał dla ANTIC'a na pinie 11
Sygnał dla CCTL na pinie 10

Sygnał CCTL to nic innego jak sygnał uaktywnienia cartridge'a. Polega to na tym, że jeżeli procesor wystawi na szynę adres z zakresu $D500-$D5FF to sygnał CCTL przyjmuje stan zera logicznego. Linie adresowe A0-A7 wyznaczą jedną z komórek na tej stronie. Stąd rejestrów sprzętowych może być 256.

To samo dzieje się dla GTIA, POKEY'a i PIA. Z tym że do tych układów nie są doprowadzone wszystkie linie adresowe A0-A7 a tylko niektóre. Występuje tzw. niepełne dekodowanie. Adresy się "przewijają" co znaczy, że w danym układzie, dany rejestr dostępny jest pod kilkoma adresami. To legło u podstaw zbudowania modułu stereo do Atari, bo wystarczy rozbudować dekoder by każdy POKEY adresowany był innym adresem, etc... etc...

Z ANTIC'iem jest nieco inaczej, bo nie jest sterowany przez sygnał wyjściowy dekodera 74LS138 lecz sam w sobie ma dekoder "czuły" na adresy $D400-$D4FF.

Jaki stąd wniosek?

Sygnały zaznaczone na powyższym schemacie jako nieużywane mogą być... używane. Wystarczy wyprowadzić je na zewnątrz komputera i będą miały taki sam status jak sygnał CCTL dla cartridge'a. Tak więc dostępne staną się strony: $D1, $D6, $D7 oraz jako produkt uboczny sygnał adresujący stronę $D4 która defakto należy do ANTIC'a. Bez najmniejszych oporów sygnały oznaczone jako nieużywane można wyprowadzić kawałkiem przewodu na rozbudowane gniazdo cartridge'a (patrz i czytaj stosowny artykuł na ten temat w tym numerze magazynu SERIOUS). Literatura podaje, że strona $D1 jest przeznaczona dla tzw. "Nowych urządzeń". Więc niech tak będzie. Warto dodać, spoglądając na zamieszczoną wyżej "tablicę prawdy" że linia adresowa A11 służy do:
  • gdy jest zerem, wyboru urządzeń IO
  • gdy jest jedynką wyboru pakietu procedur zmienno - przecinkowych zamieszczonych w Systemie Operacyjnym
Przełączeń dokonuje MMU bez udziału dekodera 74LS138. Oczywiście mówimy stale o adresowaniu obszaru $D000 - $DFFF.

Jednak to temat innego artykułu
      Po tej analizie jest już dla mnie jasne, dlaczego pewne obszary nie są dostępne. Bo nie ma połączeń. A bardziej swojsko? Konstruktorom Atari albo brakło inwencji, albo co jest bardziej prawdopodobne, pozostawili celowo drzwi otwarte do eksperymentatorów takich jak ja. Dziękuję za... dalekowzroczność.

Strona $D6 jak pamiętamy albo i nie, jest używana dla TTP, natomiast strona $D7 dla D_ROM'a.

I tak oto po nitce do kłębka labirynt stał się "przezroczysty". Nie przypadkowo w tym magazynie znajduje się schemat PRÓBNIKA oraz opis jak z niego korzystać. Teraz może się przydać. Wystarczy go dołączyć do płyty Atari, a końcówkę pomiarową dołączyć do odnośnego punktu na płycie. Będą to więc piny 7, 9-15 dekodera 74LS138. Jumper próbnika odpowiednio ustawiony pozwoli zaobserwować przebieg cyfrowy synalizowany miganiem diody LED.

      Wróćmy więc do ANTIC'a. Na pinie 11 dekodera 74LC138 pojawia się przebieg cyfrowy, choć pin ten niczym nie steruje, "wisi w powietrzu". To efekt dekodowania adresu przynależnego do ANTIC'a, a właściwie strony jemu przyporządkowanej. Normalnie ANTIC cały czas pracuje, więc na szynie adresowej pojawiają się adresowe odwołania do niego. ANTIC potrafi rozszyfrować co do niego należy, natomiast dekoder pracuje sobie. Stąd... pinu 11 nie można użyć do sterowania jak w przypadku pinów 7, 9, 10 i 14.

A co się stanie gdy zablokowane zostanie DMA i wszystkie przerwania? Mowa o ANTIC'u. Po cichu namawiam by to sprawdzić, ale wpierw należy zbudować PRÓBNIK :)

Zenon/Dial


Następny artykuł Do góry Poprzedni artykuł