Usprawnione rozszerzenie by Kaz 2009-02-25 18:29:31

Kiedyś zapytałem Adama "Asal" Salamona, znanego dotychczas ze współautorstwa gry "Wyspa", o jego projekty elektroniczne, które sobie powolutku dłubie oraz o opisanie ich, ponieważ brzmią ciekawie. Jednen z tych opisów pojawia się dzisiaj w dziale "Wynalazki", a dotyczy rozszerzenia pamięci Atari do 576kB. Niby nic nowego, a jednak... Głos ma Asal:

"(...) Rozszerzenie jest eleganckie, bo nie ma plątaniny kabli, wykorzystana jest multipleksowana magistrala adresowa Freddiego i pamięć statyczna, zamiast dynamicznej. Zaczęło się od tego, że dawno temu dokładnie przeanalizowałem słynne rozszerzenie SIMM Expansion, którego obecnie każdy używa. Najbardziej mnie interesowało, dlaczego autor wspomina o konieczności opóźniania sygnału RAS w zależności od grubości przewodów dochodzących do SIMM-a i dodatkowym opóźnianiu tego sygnału. Na początku nie było mi łatwo, bo nie jestem elektronikiem, ale stopniowo zgłębiając się w temat i analizując zdekompilowanego GAL-a odkryłem BŁĄD, którego prostym skutkiem jest opisane przez Pasia zachowanie. Potem wykorzystałem zdobytą wiedzę i zaprojektowałem moje własne rozszerzenie do 576kB, gdyż więcej mi nie potrzeba. Działa już bezbłędnie dwa lata i niczego nie trzeba opóźniać!



(...) Przesyłam opis mojego rozszerzenia pamięci do 576kB. Dodatkowo przesyłam kod źródłowy dla GAL-a oraz wersję skompilowaną. Początkowo miałem udostępnić tylko wersję skompilowaną, ale po namyśle zmieniłem zdanie, gdyż może komuś wersja źródłowa się przyda, zwłaszcza, że ja nigdy nie studiowałem elektroniki i też musiałem się uczyć od innych. Płytka drukowana wykonana jest metodą 'chałupniczą', ale w najbliższej przyszłości mam zamiar zlecić jej wykonanie profesjonalnemu zakładowi."

Opis autorstwa Asala czytamy tutaj.
Yosh 2009-02-25 21:10:40

Kurka, miałem podobny plan :) bardzo to zgrabne, pisałbym się na płytkę...

A czy 1MB było by dużo trudniejsze (typu kości na kanapkę + jeden CS) ?

Asal_ 2009-02-25 21:18:16

Jasne, że nie byłoby trudniejsze, można by zrobić. Trzeba byłoby tylko wcześniej sprawdzić, czy pamięć siedząca na górze nie będzie przypadkiem zaczepiać o płytę Atari, bo całość jest odwrócona.

Kaz 2009-02-25 21:27:19

A Spectrumowcy maja 4MB... i nie narzekaja :). Mozna to zrealizowac u nas, zachowujac kompatybilnosc z innymi rozszerzeniami?

sikor 2009-02-25 21:47:36

@Kaz: chyba pepiczki mają jakieś rozszerzenie na 4MB. Trza by Rastera podpytać...

Asal 2009-02-25 21:55:15

Można, ale do tego celu trzeba byłoby użyć nowego rejestru, bo inaczej w PortB zabraknie wolnych bitów do adresowania. Moim zdaniem 1MB to raczej maksimum jeżeli chcemy zachować kompatybilność.

miker 2009-02-25 22:02:17

Tak, lepiej się nie wychylać powyżej 1MB. Sikor: XI/Statantronic ma 2MB w kompie i jest ono kompatybilne chyba tylko z sobą. Na foreverze zawsze się patrzy, co się wysypie. ;)

Kaz 2009-02-25 22:19:05

http://www.faqs.org/faqs/atari-8-bit/faq/

Sa wymienione jakies rozwiazania (punkt 8.10).

MaW 2009-02-26 09:26:32

czekam na wersję 1MB!

Asal 2009-02-26 11:09:15

Ok, pomyślę nad wersją 1MB, która nie powinna być trudna do zrobienia, zwłaszcza, że mam w domu drugą pamięć 512kB. Jestem bardzo zaskoczony pozytywną reakcją, spodziewałem się raczej miażdżącej krytyki. :)

pavros 2009-02-26 12:33:05

Podoba mi się elegancja tego rozwiązania, ale idąc tym tropem możnaby zbudować jeszcze bardziej eleganckie rozszerzenie zewnętrzne wpinane w gniazdo ECI/Cardridge. Wtedy pasowałoby do każdej 130-tki i nowszej 65-tki.

xxl 2009-02-26 14:17:49

no to teraz: http://www.spectrum.8bit.pl/pl/spectrum/ay38910/aygrek.htm

Old 2009-02-26 16:51:32

Wersja 1MB to byłby lux, zwłaszcza gdyby posiadała przełącznik trybów (1088/576CS/64). A, jedno pytanie, czy w tym rozszerzeniu poprawnie działa blokowanie zapisu bitów PortB?

Asal 2009-02-26 20:44:18

Czym dokładnie jest blokada zapisu? Rozszerzenie pozwala zapisać dowolną wartość do PortB, ale bank przełączony zostanie wtedy, gdy PB4=0 (dla CPU) lub PB5=0 (dla Antica). Inaczej dostęp do rozszerzonej pamięci nie jest przydzielany.
Sprawdziłem dzisiaj, że dodatkowa pamięć RAM dla wersji 1MB może być bez problemu umieszczona na pierwszej i nie będzie dotykała płyty. To bardzo dobra wiadomość, bo płytka w wersji 1MB nie byłaby większa, ale nawet mniejsza, bo profesjonalne ścieżki są cieńsze od moich.

golem14 2009-02-27 07:28:01

Projekt GNU Robbo znów odżył:
http://osnews.pl/nowa-wersja-gnu-robbo/
http://gnurobbo.sourceforge.net/

Yosh 2009-02-27 08:28:15

Asal@: Tak jak mówię, jeżeli będziesz brał ładne płytki to daj znać - ja z chęcią sobie takie 1MB wstawię

Old 2009-02-27 10:00:00

@Asal: Zauważ, że PortB to pierwotnie port 3 i 4 manipulatora i tak samo jak PortA jest portem dwukierunkowym, z ustawianiem kierunku transmisji dla każdego bitu oddzielnie. Pod adresem i nazwą PortB są DWA rejestry: pierwszego używasz do "przesyłania" bitów do kontrolera pamięci. Drugi ujawnia się po ustawieniu flagi w PBCtl: wtedy ustawiasz w nim kierunek transmisji dla każdego bitu pierwszego portu. Jeśli dla dowolnego bitu ustawisz kierunek transmisji w drugą stronę, to stanie się on odporny na próby zapisu. Można w ten sposób np. zablokować odłączanie ROM, albo blokując odpowiednie bity część ramdysku lub jego całość. Korzysta z tego np. Qmeg3 i różne hackerskie programiki.
Poczytaj o działaniu PortA i PACtl - dokładnie to samo, albo w dawnych scenowych zinach było to dokładnie opisane (Serious albo Syzygy).

Asal 2009-02-27 10:26:01

No tak, PIA udostępnia możliwość dwukierunkowej transmisji, ale zauważ, że rozszerzenie nie operuje bezpośrednio na rejestrze PortB, tylko na wyprowadzeniach PIA - PB0-PB7. Jeżeli PIA uzna, że operacja zapisu jest dozwolona, wówczas zmienia stan swoich wyprowadzeń i dopiero na to odpowiednio reaguje rozszerzenie.
Na podobnej zasadzie (a właściwie identycznej) działa też SIMM Expansion.

Old 2009-02-27 14:09:10

Nie wiem, na czym operuje to rozszerzenie, bo nie jestem elektronikiem, dlatego pytam.
Jeśli przez SIMM Expansion masz na myśli rozszerzenie Pasia, to o ile wiem początkowo w nim blokowanie PortB nie działało prawidłowo, a dopiero po poprawkach pod tym kątem. Dlatego profilaktycznie zwracam uwagę, że bywało z tym różnie.

Asal 2009-02-28 12:28:02

Ok, nie zaszkodzi to dokładnie prztestować przed wypuszczeniem wersji 1MB. Dzięki za tą uwagę.

Kaz 2009-03-03 04:27:33

Ja mam VBXE, ktore ma zaprogramowane standardowo rozszerzenie 320KB (zdaje sie, ze jest tam kostka 512KB). Czy da sie zrobic Asal twoje rozszerzenie jako alternatywne, przelaczane jesli chcemy miec 1MB?

paptak 2009-03-19 15:42:20

A ja bardzo chciałbym mieć to rozszerzenie w swoim Atari. W tej chwili nie mam żadnego. Za SIMM Expansion się nie zabieram, ponieważ wydaje mi się iż sobie nie poradzę z montażem. A tu proszę. Wszystko zwarte i eleganckie.