Projekt rozszerzenia pamięci do 576kB powstał w celu sprawdzenia,
czy możliwe jest stworzenie układu rozszerzającego pamięć
wykorzystującego multipleksowaną magistralę BA0-7 Freddiego.
Dodatkowym celem było stworzenie układu, który wymagałby jak
najmniej przeróbek na płycie Atari i niewielu połączeń za pomocą
dodatkowych przewodów.
Układ można zainstalować wyłącznie w nowszych płytach Atari XE
posiadających układ Freddie i pamięci dynamiczne 4x64kB. Oryginalny
układ MMMU* sterujący dostępem do pamięci został wylutowany, a w
miejsce jego gniazda wlutowałem golpiny. Podobnie w miejscu, gdzie
w Atari 130XE znajdują się dodatkowe pamięci, również znajdują się
goldpiny. Płytka rozszerzenia zbudowana jest w taki sposób, że
posiada ona w odpowiednich miejscach złącza do goldpinów i jego
instalacja sprowadza się do nałożenia go na płytę Atari.
Patrząc na schemat, widać, że użyta została statyczna pamięć SRAM o
pojemności 512kB i zatrzask IC1, który w odpowiednim momencie
zapamiętuje młodszą część adresu komórki pamięci w pierwszej fazie
cyklu adresowania. Symbole POD1-3 odpowiadają gniazdom z
goldpinami. Ponieważ chciałem zapewnić dostęp do całej pamięci z
poziomu Basica, użyty został zatrzask IC4, który zapamiętuje stany
bitów PB1 i PB7 PortB na czas adresowania pamięci rozszerzonej.
Najciekawsza część roszerzenia zawarta jest oczywiście w układzie
GAL22V10, który stanowi swego rodzaju zamiennik oryginalnego MMMU.
Postanowiłem wprowadzić trzy tryby pracy rozszerzenia:
- 576kB, w którym do adresowania banku pamięci wykorzystywane są
bity 7,6,3,2 i 1 PortB;
- 320kB w standardzie RAMBO (bity 6,5,3 i 2 PortB)
- 320kB w standardzie COMPY (bity 7,6,3 i 2 PortB)
Dodatkowe tryby wprowadziłem głownie z powodów sentymentalnych,
gdyż przez ponad 10 lat byłem posiadaczem Atari z dodatkową
pamięcią w standardzie Rambo. Wybór trybu pracy układu ustawia się
zwierając wyprowadzenie COMPY_320 lub RAMBO_320 do masy. Jeżeli
żadne wyprowadzenie nie jest zwarte, układ pracuje w trybie 576kB.
Zarówno w trybie 576kB jak i 320kB COMPY uwzględniany jest stan
bitu PB5, który decyduje o tym, czy dostęp do dodatkowej pamięci
przydzielić CPU czy Anticowi.
Do montażu rozszerzenia trzeba niestety wykonać drobne zmiany na
płycie Atari, lecz są one stosunkowo niewielkie i polegają na
doprowadzeniu do gniazda MMMU kilku brakujących sygnałów. U mnie
połączenia te zostały wykonane od spodu płyty.
Na koniec mała ciekawostka. Na schemacie widać, że doprowadzając
starszą część adresu z magistrali Freddiego do pamięci statycznej
użyłem sygnałów BA1-6 zamiast BA0-5, co wydawać by się mogło
naturalne. Jest to związane z tym, że multipleksując adres, Freddie
nie wykonuje tego w sposób następujący: BA0=A0/A8, BA1=A1/A9,
BA2=A2/A10 itd, lecz sygnały z magistrali A są nieco "wymieszane".
W rezultacie, sygnałom A8-A13, które trzeba doprowadzić do pamięci
odpowiadają właśnie sygnały BA1-6, a nie BA0-5 w drugiej fazie
cyklu adresowania. Odkrycie tego faktu było dla mnie zaskoczeniem i
spowodowało poważne trudności na początku budowy rozszerzenia.

Dla zainteresowanych udostępniam PEŁNY kod źródłowy definicji dla
układu GAL22V10 wraz z komentarzami oraz wersję skompilowaną. Do
kompilacji użyłem programu Atmel WinCUPL, a GALa zaprogramowałem
przerobionym przeze mnie programatorem GALBLASTER skonstruowanym
samodzielnie. Płytkę drukowaną rozszerzenia również wykonałem
samodzielnie posługując się metodą termotransferu.
* MMMU - układ CO25953 czyli zaprogramowany PAL16V8, znajdujący się
niedaleko pamięci dynamicznych. Układ ten określa się jako Małe
MMU, czyli w skrócie MMMU i steruje on bankami pamięci w Atari
130XE, włącza SELF-test itp. Oprócz tego mamy na płycie też układ
MMU, które przydziela pamięć Anticowi, Gtia, Pokeyowi... Jest to
inny układ, opisany w Atariki.
Pliki zdjęć, wkład i schemat
tutaj. Nowinka zapowiadająca była
tutaj.