Cartridge do Atari | ||||||||||||
Czy to wada, że programy przed uruchomieniem należy wgrać do pamięci komputera? I tak i nie. Aby przyspieszyć proces, konstruktorzy ATARI zaproponowali inną metodę. Polega na tym, że gotowe programy, (nie tylko), można umieścić na cartridge'u. Niejeden użytkownik Atari który używał tego sposobu być może zastanawiał się nad tym: jak to jest zrobione? Niniejszy artykuł stawia sobie za cel, opisanie całego procesu od strony technicznej.
Zatem... rozglądamy się wokół komputera. W modelach XL nad klawiaturą widać jakieś
dziwne okienko, które na dodatek zamknięte jest dwoma "klapkami". Inne modele, mają takie gniazdo na tylnej ściance
obudowy. Właśnie w to okienko/gniazdo wsuwa się cartridg'e. Dla dociekliwaych podaję opis styków tego gniazda.
Odchylając klapki/zasłonki w 800XL widać gniazdo cartridge'a:
1 - FI/2 druga faza zegara wejścia adresowe: E-A0 B-A3 11-A6 8-A9 7-A12 D-A1 13-A4 10-A7 3-A10 C-A2 12-A5 9-A8 4-A11 wejścia/wyjścia danych: J-D0 H-D2 F-D4 K-D6 I-D1 6-D3 G-D5 5-D7
Dodatkowe objaśnienia styków gniazda:
Sądzę, że opis linii danych (D0-D7) oraz adresowych (A0-A12) jest zbędny, bo każdy "rasowy" elektronik i nie tylko, wie co to jest. Przypomnę tylko, że na liniach danych pojawia się zawartość zaadresowanej komórki. O tym, która to komórka stanowi włąśnie adres podany na linie adresowe (A0-A12).
Spis elemetów potrzebnych do wykonania cartridge'a
![]() Opis Układ UCY7400 łączyć należy następująco:
końcówka 2 do A12 Drugi kondensator elektrolityczny należy połączyć pomiędzy GND a +5V.
Po włączeniu napięcia zasilania wygenerowany zostaje ujemny impuls który wymusza na końcówce 3 (7400) stan wysoki (jedynka logiczna). Sygnał ten podany na RD4 i RD5 odłącza wewnętrzną pamięć komputera o adresach $8000 do $BFFF. W to miejsce podłączona zostaje pamięć EPROM cartridge'a. A że na szynie adresowej utrzymuje się adres różny od $8000-$BFFF, więc stan linii S4 i S5 jest wysoki, tym samym na końcówkę 26 (A13) pamięci EPROM podana zostaje jedynka logiczna i wybrana jest druga, ta o wyższych adresach połówka pamięci EPROM. System operacyjny jest w stanie BOOT, i po chwili odczytany zostaje nagłówek programu cartridge'a umieszczony właśnie w komórkach o najwyższych adresach pamięci EPROM. W końcu startuje program umieszczony na cartridge'u, zadba o to system operacyjny Atari. Co powinno interesować programistów (koderów) piszących program uruchamiany z cartridge'a? Sześć ostatnich komórek EPROM zajmuje tzw. nagłówek. Po włożeniu cartridge'a do gniazda wpisane tam wartości znajdą się pod adresami: - adres startu programu
$BFFA - LSB CARTRUN - znacznik obecności cartridge'a, gdy jest to CARTINS=0 $BFFC - CARTINS - znacznik opcji $BFFD - CARTOPT
bit 0=0 zabroniony BOOT - adres inicjacji cąrtridge'a wywołuje procedurę inicjującą, zakończoną rozkazem RTS. Gdy inicjacja nie jest wymagana, wskazuje tylko rozkaz RTS
$BFFE - LSB CARTINI Powyższy opis obowiązuje dla modułu który zajmuje adresy $A000-$BFFF. Odpowiednio, dla modułu umieszczonego pod adresami $8000-$9FFF, dane wpisać należy pod adresy $9FFA-$9FFF. Jeden przykład zamiast potoku słów Założenie:
Program zostanie umieszczony od najniższej lokacji, tak że ostatecznie znajdzie się pod adresami od $A000...
Przykładowy program:
$BFFA $00 adres startu programu to $A000 Dodatkowe informacje dla jeszcze bardziej dociekliwych... Cartridg'e skonstruowany jest tak, że odłącza wewnętrzną pamięć od $8000 do $BFFF. Nie zawsze jest to konieczne. Dla powyższego przykładowego programu wystarczy, by dla celów programu cartridge'a dostępna była tylko pamięć od $A000-$BFFF. Zatem, można przerwać połączenie łączące RD4 z końcówką 3 (7400). Używając odpowiednio linii RD4, RD5 oraz S4 i S5 można odłączać jeden z dwóch bloków pamięci (po 8kB każdy) i w to miejsce podłączać pamięć EPROM cartridge'a. Oczywiście zadbać należy by nagłówek był odpowiednio opisany, no i by sam program zajmował miejsce wskazane przez ten nagłówek! Temat ten wykracza poza ramy tego artykułu, niemniej stwarza ciekawe możliwości manipulowania pamięcią. W gnieździe cartridge'a dostępny jest sygnał oznaczany CCTL. Gdy na magistrali adresowej pojawi się adres ze strony $D5, to linia CCTL przechodzi w stan zera logicznego. Fakt ten można wykorzystać do modyfikacji i rozbudowy cartridge'a np.programowego odłączenia cartridge'a lub włączenia innej EPROM w przestrzeń adresową $8000-$BFFF, tworząc w ten sposób naprawdę TWARDY DYSK dla Atari. Jest to jednak temat na kolejny artytuł. A może jednak zdradzę jak się to robi?
Robi się to tak: (patrz na schemat!) Sygnał CCTL doprowadź do drugiego wejścia przerzutnika r-s, do tego, do którego
dołączony jest opornik 1kohm. Opornik oczywiście wylutuj, bo jest teraz niepotrzebny. Cartridg'e zostanie odłączony, tym
samym prawdopodobnie komputer się zawiesi gdy program jest kiepsko napisany. Ponowny start powinien nastąpić jak zawsze
po wyłączeniu i włączeniu komputera. Aaaaa.... powie niejeden zjadacz chleba. To prosta droga do uszkodzenia komputera!
Zatem? Proszę dobudować przycisk. Jeden styk łączymy z masą, a drugi z wejściem przerzutnika r-s do którego dołączony
jest opornik 4k7 (opornik tym razem zostaje!), oraz kondensator 22mF. Jeżeli komputer się zablokuje, (zawiesi), to
wystarczy nacisnąć ten przycisk a po chwili RESET w komputerze. Działa? I to bez wyłączania komputera! Programowe
wyłączenie cartridge'a może wyglądać tak:
Uwagi końcowe... Opisany tu sposób wykonania cartridge'a jest tylko przykładowym. Jak łatwo zauważyć, połówka EPROM jest w ogóle nie wykorzystana.
Najczęściej popełniany błąd w czasie pisania programu dla cartridge'a: pisząc w assemblerze program rozpoczynający się
np. od $A000 można zrobić to tak:
Zenon/DIAL |