Tajemnice ATARI

SIDICAR - DYSK KRZEMOWY


W modnym ciągle temacie rozszerzania możliwości naszego ulubieńca chciałbym dorzucić to i owo od siebie. Przedstawiana propozycja dotyczy znanego problemu: notoryczny niedostatek pamięci.

    W czasach, gdy do "małego" ATARI montowane są rozszerzenia pamięci 320 KB chcę zaproponować jedynie śmieszne 32 KB. Na dodatek jest to rozszerzenie dosyć kosztowne. Posiada również zalety:

• Bezkolizyjna praca z typowymi rozszerzeniami pamięci.
• Zachowanie zawartości po zaniku napięcia. Skojarzenia z EPROM są tu błędne - proponowana pamięć jest typu RAM.
• Prosta konstrukcja i łatwy montaż, poza wnętrzem komputera.

   Pierwszy plus wynika z używanego obszaru adresowania: $8000-$9FFF. Tradycyjne rozszerzenia lokują się od $4000 do $7FFF.

    Druga i trzecia zaleta wynika z miejsca montażu - cartridge, z pamięcią statyczną RAM, której zasoby podtrzymywane są dzięki maleńkim bateriom zegarkowym (taką kasetę można wyjąć, przenieść do innego komputera, ba, nawet przesłać pocztą bez obawy, że przez te kilka tygodni dane się ulotnią - przyp. red.).

    Rzućmy okiem na gniazdo cartridge-a, patrząc na ściankę tylną (ATARI 65XE) lub przez drzwiczki w górnej pokrywie komputera (ATARI 800XL).

    Za plastikową osłoną mieszczą się dwa rzędy styków:

    Znaczenia większości sygnałów łatwo się domyślić. Dla porządku omówię wszystkie.

• Od A0 do A12 - wyprowadzenia szyny adresowej mikroprocesora CPU.
• Od D0 do D7 - linie szyny danych.
• +5V, GND - zasilanie.
• R/W - sygnał odczyt/zapis.
• FI2 - sygnał zegara CPU (faza 2).
• RD4 - rozkaz dla układu zarządzającego pamięcią (MMU). Gdy stan RD4=1 (wysoki), to MMU wyłączy pamięć wewnętrzną w obszarze od $8000 do $9FFF.
• S4 - sygnał sterujący dla pamięci cartridge-a. Jeżeli RD4=1 oraz na szynie adresowej pojawi się adres z obszaru $8000-$9FFF, to MMU ustawi sygnał S4=0 (niski); pamięć wewnętrzna w wymienionej przestrzeni zostaje wyłączona.
• RD5 - podobnie jak RD4 dla adresów od $A000 do $BFFF.
• S5 - jak S4, odpowiednio dla adresów od $A000 do $BFFF.
• CCTL - (Cartridge ConTroL); gdy na szynie adresowej pojawi się dowolny adres ze strony $D5, to MMU ustawia poziom CCTL=0.

    W cartridge-u proponuję umieścić pamięć statyczną RAM typu 62256. Ponieważ będzie ona lokowana pod $8000-$9FFF, dlatego będziemy dalej nazywali ją M809F, oraz taki prefiks będą miały sygnały z nią związane.

    Na rys. 2 jest przedstawiony rozkład jej wyprowadzeń oraz sposób zabezpieczania danych. W pamięci statycznej CMOS można zachować dane, jeżeli napięcie nie spadnie poniżej +2V, oraz wejście wybierające CS przyjmie potencjał wejścia Vcc (zapewnia to rezystor 82k). Gdy zostaną spełnione takie wymagania, to baterie zasilać będą tylko pamięć M809F. Dla zachowania jej zawartości wystarczy wtedy prąd ok. 50 nA.

    Dioda D1 (najlepiej germanowa) umożliwia "normalne" zasilanie pamięci i zabezpiecza przed zasilaniem z baterii całego komputera w chwili zaniku napięcia +5V. Dioda D2 może być dowolnego typu. Pamięć RAM CMOS 62256 przy CS = 0 pobiera ok. 40-50 mA.

    Zajmijmy się teraz właściwym układem sterowania dodatkową pamięcią. Przedstawiony jest na rys. 3. Sygnały z lewej strony rysunku należą do omówionych styków gniazda cartridge-a z wyjątkiem sygnału WE, który należy pobrać z wyjścia bramki C.

    Na rysunku nie zamieszczono pełnego zestawu adresów i danych dla M809F; nie zapomnijmy o tym!

    Wymagane przez pamięć statyczną sygnały - OE (odczyt) i WE (zapis) wytwarza układ z bramek NAND: A. B, C. Rezystor 18k na wyjściu bramki C ustawia wysoki poziom linii WE po włączeniu zasilania. Zanim nie nastąpi prawidłowe wygenerowanie sygnałów R/W i FI2, zapis M809F będzie niemożliwy.

Z opisu do rys. 1 wynika, że pin CS można podłączyć bezpośrednio do styku S4. W praktyce zastosujemy układ z diodą Zenera i kondensatorem. Pozwoli nam to na pozostawienie SIDICAR-a w gnieździe przy wyłączonym zasilaniu komputera bez większych obaw o kondycję baterii. Pamiętajmy jednak o prądzie upływu kondensatora i... korzystajmy z ATARI jak najczęściej!

    Dodatkowa pamięć jest podzielona na cztery banki po 8KB. Uaktywnianie i wymianę banków (partycji?) realizować będzie dodatkowy rejestr - czterobitowy przerzutnik typu D. Możliwy jest tylko zapis do tego rejestru, który nazwiemy CARSET i osadzimy pod adresem $D5FF. Jak widać, ważne są tylko trzy bity danej wpisywanej do CARSET.

    Znaczenie bitów w rejestrze CARSET prezentuje poniższa tabela.

bit danej znaczenie
D4 D1 D0
. x x przygotowanie banku:
. 0 0 -bank 0
. 0 1 -bank 1
. 1 0 -bank 2
. 1 1 -bank 3
x . . dez-/aktywacja banku:
0 . . - przygotowany bank jest wyłączony
1 . . - przygotowany bank jest aktywny

    Przykładowo, po sekwencji:
carset  equ $d5ff
        lda #%01111110
        sta carset
pod adresami $8000 - $9FFF będziemy odtąd mieli bank 2 pamięci M809F. Po wykonaniu rozkazów:
        lda #%01101111
        sta carset
w wymienionym obszarze ponownie pojawi się "normalna" pamięć ATARI.

    Umówmy się, że:

• nie wykorzystane bity danej będziemy zawsze ustawiali
• zapamiętamy adres CARSET: $D5FF (być może będzie nam to kiedyś potrzebne)

    Oddzielnego omówienia wymaga bit D7 sterujący bramką E (NOR). Bramka E jest wielce uproszczonym dekoderem. Jednoznaczny, wysoki stan na jej wyjściu pojawi się wyłącznie wtedy, gdy w przeznaczonej dla CARSET danej skasujemy bit D7. Jeżeli jeden z bitów szyny danych jest skasowany, to oznacza, że ustala się na niej ważna dana. Biorąc pod uwagę opóźnienie na bramce E i wejściu CLK, CARSET zatrzaśnie już stabilną liczbę.

    "Jeden obraz - tysiąc stów", jak mawiają na Dalekim Wschodzie. Zamiast długiego wywodu o działaniu sterownika, proponuję analizę zależności między sygnałami, która jest przedstawiona na rys. 4.

DLACZEGO WARTO ?

    Oto kilka możliwych zastosowań:

• Przetwarzamy ważne dane. W celu ochrony wyników naszej pracy piszemy procedurę, która co kilka minut uaktywni się, aby wykonać "zrzut" określonego obszaru pamięci na ten "bardzo twardy dysk" (VHD?) bez jazgotu stacji i prawie w tle.
• Chcemy mieć swój ulubiony program na cartrtdge-u. Nic łatwiejszego! Polecam literaturę. Zwłaszcza przymusowi wielbiciele popularnego streamer-a XC 12 i jego odmian, mogą znaleźć w SIDI-CARze wielkiego przyjaciela.
• SIDICAR doskonale nadaje się do wszelkich RAMPLIK-ów, czy też RAMDISK-ów.
• Dodatkowej pamięci nigdy za dużo!

OSTATNIE UWAGI

    Jest do pomyślenia przełącznik, który będzie łączył pin WE pamięci M809F albo z napięciem +5V albo z wyjściem bramki C. Przełącznik taki nazwiemy PROTECT (podobny efekt w przypadku dyskietek uzyskujemy przez zaklejenie wycięcia z boku - przyp. red.).

    Rejestr CARSET (74LS175) jest zerowany jednorazowo - po włączeniu zasilania. Reszta należy do programisty. Przy okazji: zwróćmy uwagę, że włączenie na szynie danych wejść serii 74LS... jest dla układów komputera poważnym obciążeniem. Pamiętajmy o tym, planując dalsze modyfikacje ATARI. Z opisywanym cartrtdge-m postępujemy jak z każdym - wkładamy przed włączeniem napięcia, wyjmujemy po.

    Tekst oraz rysunki zostały przygotowane przy pomocy programu Panther.

SEC2692 Jarosław Krysztopik


    Ps. Specjalne podziękowania dla Rafała za wypożyczenie stacji.

LITERATURA:

H. Kruszyński, K. Kulpa: "Mikroprocesor 6502 i jego rodzina"; NOT-SIGMA, Warszawa 1989.

S.Gardynik: "MIK04 Podstawy mikroelektroniki"; MIK. Raszyn 1986.

W.Zientara: "Mapa pamięci ATARI XE/XL. Podstawowe procedury systemu operacyjnego"; SOETO, Warszawa 1988.

"Schemat ATARI"; Nowy Elektronik 1/90.




Powrót na start | Powrót do spisu treści | Powrót na stronę główną

Pixel 2002