Producent stacji Indus GT, krótko przed zakończeniem działalności oferował kartę rozszerzającą Indus RamCharger oraz system CP/M, pracujący z procesorem Z80, w jaki stacja dysków była wyposażona. Zdjęcia istniejących egzemplarzy karty RamCharger pozwalają stwierdzić, że posiadała ona m.in. 64kB pamięci RAM (dynamicznej) oraz układ typu PAL sterujący rozszerzeniem. Skopiowanie karty byłoby więc zadaniem trudnym. Na szczęście zachowały się (częściowo uszkodzone) obrazy dyskietek systemu CP/M przystosowanego do Indus GT oraz schematy elektroniczne stacji. Na podstawie ich analizy okazało się, że sposób zarządzania pamięcią przez oprogramowanie oraz rozwiązania sprzętowe istniejące w zwykłej, nierozszerzonej stacji umożliwiają dołączenie dodatkowej, wymaganej przez CP/M pamięci w stosunkowo prosty sposób.
Stacja Indus GT z zamontowaną kartą RamCharger
Stacji Indus GT w Polsce jest niewiele. Okazuje się jednak, że popularna "czarna" stacja LDW Super 2000 jest, nie tylko wizualnie, klonem Indusa. Różnice sprowadzają się do innego układu zasilającego oraz obsługi napędu Roctec (zamiast oryginalnego Tandon). Choć płytka elektroniki jest przeprojektowana, pozostawiono na niej elementy niezbędne dla naszego rozszerzenia. Prawdopodobnie w firmie LDW (czy Karen) nie zdecydowano się ich wyrzucić (choć pewnie nie wiadomo było po co one są ;). Dzięki temu budowa karty pamięci jest dość prosta, tym bardziej, że użyjemy pamięci statycznej, zamiast dynamicznej (stąd SRAMCharger ;)). Trochę więcej pracy jest w stacji CA-2001, powstałej na podstawie LDW, ale tutaj również nie ma poważniejszych utrudnień. Przeróbki płyty głównej stacji nie zmieniają jej funkcjonalności (jeżeli zdecydujemy się zbudować rozszerzenie w formie odłączanej karty). Dzięki rozszerzonej pamięci w stacjach z dodatkową pamięcią możliwe jest także buforowanie ścieżek.
SRAMCharger od TF_HH zamontowany w stacji CA-2001
Inny SRAMCharger od tregare w LDW Super 2000
Dodatkowe 64kB pamięci statycznej powinno być zarządzane następująco:
32kB (górne) mapowane w obszar $8000-$FFFF
32kB (dolne) bankowane sygnałem /BANK w obszar $0000-$7FFF, w miejsce zwykłych układów stacji.
Odłączanie układów stacji dla aktywnej dolnej połówki pamięci jest już zasadniczo przygotowane na płycie stacji, trzeba jeszcze tylko odłączyć ROM sygnałem /ROMDIS.
Nazwy sygnałów /BANK, /ROMDIS pochodzą ze schematu stacji Indus. Wszystkie sygnały potrzebne do rozszerzenia są dostępne na złączu J3, stąd możliwość zbudowania rozszerzenia jako zewnętrznego modułu wpinanego w to złącze.
Rozszerzenie pamięci można zrealizować na kilka sposobów. Ta wersja wykorzystuje następujące elementy:
Układ należy zmontować według poniższego schematu:
Schemat rozszerzenia z dwoma
układami 62256
Rozszerzenie można również zrealizować w oparciu o jeden układ pamięci 128kB. W tym przypadku wymagane są:
Z doświadczeń wynika, że pamięci z czasem dostępu 70ns i wolniejszym działają dobrze. Jednak mogą wystąpić problemy z szybszymi układami (np. 55ns).
Poniżej przedstawiono schematy rozszerzenia. W drugim układ 74LS155 należy przy tym podłączyć do +5V (pin 16) i GND (pin 8).
Schemat rozszerzenia z układem 628128 i 74LS139 (thanks TF_HH!)
Schemat rozszerzenia z układem 628128 i 74LS155
Sprawdź, czy twój Indus jest wyposażony w wersję oprogramowania 1.20 (najczęściej). W tym celu możesz użyć mojego CP/M TOOL. Jeśli nie, i tak powinieneś je zaktualizować.
Układ w formie dołączanej do złącza J3 karty jest gotowy do użycia w stacji Indus GT. Jednak w niektórych napędach brakuje złącza J3 (choć jest to bardzo rzadkie). Jeśli tak jest w Twoim przypadku, musisz wlutować brakujące złącze. Pozostałe stacje wymagają jeszcze drobnych przeróbek na płycie, które opisano niżej.
Jak wspomniano, schemat tej stacji jest w znacznym stopniu zgodny z Indusem. Odpowiednia logika dla bankowania jest już gotowa. Ponieważ jednak w LDW sygnał /ROMDIS jest standardowo odłączony, należy go przywrócić, wstawiając brakujące rezystory R57 10k i R48 4k7 (jest dla nich miejsce na płycie) i odpowiednio założyć/przeciąć zwory J2, J3).
Fragment schematu LDW - przywrócenie sygnału /ROMDIS (w niektórych płytach R57 i R48 dochodzą do pinów 13 i 12 układu U12, a nie 1 i 2) |
Płyta LDW z zaznaczonymi zmianami |
Stacja LDW posiada wyprowadzenia dla złącza J3, dlatego jeżeli rozszerzenie przygotowujemy w formie dodatkowej karty, należy wlutować w to miejsce odpowiednie złącze kątowe. Ja zastosowałem dwurzędową, kątową listwę goldpinów, zaś na płytce rozszerzenia odpowiednie gniazdo żeńskie. Dzięki temu rozszerzenie mieści się pod obudową z prawej strony stacji (jak oryginalny RamCharger).
Prototyp SRAMChargera w stacji LDW
W tym przypadku jest trochę więcej pracy. Sytuację komplikuje dodatkowo fakt,
że istnieją różne wersje płyty stacji.
W CA-2001 należy przede wszystkim dokonać podobnych przeróbek jak w przypadku
LDW. Tu także jest zworka umożliwiająca przywrócenie sygnału /ROMDIS, należy
także wlutować brakujące rezystory 10k i 4k7.
Fragment schematu CA-2001 - przywrócenie sygnału /ROMDIS |
Płyta CA z zaznaczonymi zmianami dla sygnału /ROMDIS |
Płyta CA-2000-D: W Indus/LDW pin 4 układu 74LS138 (U9) jest podłączony do A15, ale w CA jest podłączony poprzez zworkę z masą, co blokuje bankowanie pamięci. Zworka ta znajduje się w pobliżu złącza P7 (odpowiednika J3), lutowana od strony elementów i połączona z pinem 36 tego złącza. Zworkę trzeba przeciąć, zaś pin 36 połączyć z pinem 13 (gdzie mamy sygnał A15) od strony druku.
Fragment schematu CA-2001 - przywrócenie bankowania pamięci
Płyta CA-2000-D z zaznaczonymi zmianami dla bankowania
Płyta CA-2000-B: W tym przypadku fabrycznie połączono zworą punkty 1 i 4 złącza P7, a ścieżka odchodząca od punktu 4 jest przecięta. Powoduje to, że do pinu 8 układu U6 74244 doprowadzony jest sygnał A0, lecz na złączu P7 nie występuje sygnał A2 i rozszerzenie nie będzie funkcjonować. Należy wylutować zworę ze złącza P7 i ponownie połączyć przeciętą ścieżkę z punktem 4 złącza, co spowoduje przywrócenie sygnału A2. Do pinu 8 układu U6 74244 doprowadzony będzie jednak sygnał A2, a powinien być A0. Należy zatem odciąć połączenie sygnału A2 od pinu 8 układu U6 i doprowadzić tam sygnał A0, łącząc go z pinem 30 procesora.
Do przetestowania wykonanego rozszerzenia można użyć mojego programu Indus CP/M Tool. Opcja RAMCharger check wyświetla numer wersji oprogramowania systemowego (firmware) stacji oraz testuje rozszerzenie pamięci: sprawdzana jest jego obecność, poprawność przełączania banków. Na wyświetlaczu stacji pojawia się numer sprawdzanej strony pamięci. Jeżeli wynik testu jest pozytywny, program wyświetla komunikat "RAMCharger: OK". Można wtedy przystąpić do uruchamiania systemu Indus CP/M. W przypadku problemów program podaje kod błędu jak niżej. Opis CP/M Tool z objaśnieniem kodów po polsku znajduje się w Atariki.
Error code | Description |
---|---|
1 | no upper extended RAM at $8000 (line A15 does not turn upper 32k RAM on) |
2 | extended RAM error at $8001 (data copy failed) |
3 | no lower extended RAM at $0000 (/BANK does not enable lower 32k RAM) |
4 | cannot restore ROM back at $0000 if /BANK not set |
5 | lower and upper 32k are the same |
6 | extended RAM found at $7800-$7FFF instead of drive's internal 2k RAM |
7 | lower 32k RAM test failed (memory error) |
8 | upper 32k RAM test failed (memory error) |
Podziękowania dla jada, jera (Jerzego Soboli), Zenona/Dial oraz sup8pdct za pomoc przy realizacji projektu.
( c ) 2024 trub/DLT. All Rights Reserved.