1

Jakiś czas temu pytałem się na forum o cartridge z pamięcią RAM, może niektórzy mnie pamiętają.
Zbudowałem sobie niedawno cartridge'a bardzo podobnego do cartridge'a Turbo Blizzarda, na którym chciałem umieścić swoje ulubione programy. Docelowo zamierzam w cartridge'u zamontować pamięć EPROM, w tej chwili jednak, aby go potestować, używam zwykłej pamięci RAM, którą najpierw programuję na PC-cie a potem, korzystając z odpowiedniej przelotki, nie odłączając zasilania, podłączam do cartridge'a.
Wykonywałem niedawno testy z wczytywaniem dwóch moich ulubionych gier na Atari. Ich kod znajdują się w pamięci RAM w postaci 'lekko skompresowanej' a napisana przeze mnie odpowiednia procedura przenosi kod z obszaru $8000-$bfff w odpowiednie miejsce.

Zaprogramowałem pamięć RAM ... i działa. Gry się wczytują, można pograć. Zauważyłem jednak nietypowe zachowanie mojego cartridge'a, którego nie umiem wyjaśnić. Na cartridge'u mam przełączniki, które pozwalają mi wybrać rodzaj programu. Gdy zmienię ustawienie przełączników a potem wcisnę RESET, wówczas następuje załadowanie nowego programu. Co jednak dziwne, można tak zrobić tylko kilka razy, gdyż po pewnym czasie komputer się zawiesza a po kolejnym resecie następuje zwyczajny zimny reset - tak jakby cartridge został odłączony programowo przez dostęp do strony $d5. Wprawdzie na cartridge'u mam guzik, który przywraca mi stan wysoki na liniach RD4 i RD5, ale po jego wciśnięciu i naciśnięciu RESET procedura inicjująca cartridge wprawdzie zaczyna się wykonywać, ale gra się już nie uruchamia. Co jeszcze bardziej dziwne, wystarczy komputer fizycznie wyłączyć (nie odłączając zasilania pamięci RAM na cartridge'u), aby znowu gry zaczęły się normalnie wczytywać.

Czy ktoś z Was może umie to wyjaścić? Mnie się początkowo wydawało, że może zawieszanie komputera jest wynikiem niewłaściwej wartości w rejestrze GINTLK ($03fa), ale ja nie ruszam tego rejestru w procedurze inicjacji, a standardowa procedura RESET chyba ustawia w nim prawidłową wartość. Najgorsze jest to, że opisany przeze mnie efekt nie występuje na emulatorze - tutaj mogę podmieniać zawartość cartridge'a i sto razy a po wciśnięciu F5 gry zawsze się uruchomią.
Jeszcze jedna uwaga na koniec (przepraszam za długi post) - mój cartridge nie jest cartridge'm diagnostycznym - główna procedura uruchamia się przez wektor CARTINI ($bffe).

2

Takie głupie pytanie, czy zamontowałeś kondensatory blokujące zasilanie, przynajmniej na kości RAM?

3

Tak, zamontowałem. Mam kondensatory 47 uF i 100nF, bezpośrednio przy pamięci.
Wczoraj obejrzałem sobie jeszcze raz mój cartridge i wydaje mi się że może wiem, co się dzieje. W pewnym miejscu mam prawdopodobnie zwarcie, które powodowało że w losowych momentach resetował mi się przerzutnik RS i odłączał cartridge. Widać to wyraźnie na woltomierzu - na wyjściu przerzutnika jest 1.5V a nie powinno tam być przebiegu zmiennego.
I tylko wstyd się przyznać, ile ja tego błędu się naszukałem. :)