Część I : Część II : Część III : Artykuł: Muddler/The Coders
Wstęp.
Witam w kąciku elektromaniaka, czyli sposobów kilka na przerobienie i rozbudowę C64. Jest to pierwszy artykuł z wielu (mam nadzieję :-)) które będą traktowały o własnym ulepszaniu poczciwej sześćdziesiątki czwórki. Z góry informuję, iż nie będzie to kolejny cykl dla początkujących. Nie będzie tutaj też artykułów w stylu - "Jak do C64 podłączyć diodę LED i nią mrugać". Jeżeli ktoś słabo czuje się w roli spawacza cynowego (brak umiejętności posługiwania się lutownicą), a bardzo lubi swoją komodę, to radzę nie próbować samemu eksperymentować z bebechami (wnętrznościami?) kompa (a jeśli ktoś nie lubi swojego C64 to niech mi go podeśle, adres na końcu). Poza tym, jeśli nie znasz podstaw elektroniki cyfrowej, to nie myśl, że tutaj się ich nauczysz. Spróbuj odwiedzić stronę www.elektronika.gery.pl lub www.elektroda.pl. Po udanych korepetycjach zapraszam z powrotem. Niestety, ale nie mam aż tyle czasu ani natchnienia, aby pisać teraz o bramkach NAND czy przerzutnikach (jak to mówią - life is brutal), a są to bardzo istotne informacje i w zasadzie bez podstaw elektroniki cyfrowej (zera i jedynki) nie da się zrozumieć działania prezentowanych przeze mnie układów. Jak więc widzisz, drogi Czytelniku, sednem tego cyklu jest abyś zrozumiał to co robisz ze swoim komputerem, a nawet dołożył do proponowanych przeze mnie układów swoje przysłowiowe 5 groszy (tzn. ulepszył je, poprawił, dostosował do swoich celów).
Wszystkie układy i usprawnienia które przedstawię w tym cyklu będą wymagały ingerencji w płytę C64. Mówiąc prosto: bez lutownicy (a często i bez odsysacza) nie wykonacie żadnego z przedstawianych i opisywanych przeze mnie układów. Większość układów wykonana będzie na łatwo dostępnych układach TTL. Najbardziej potrzebne nam rzeczy spiszę pod koniec artykułu i będziecie mieli czas na zgromadzenie ich aż do następnego odcinka. Teraz jednak muszę napisać trochę o samej komodzie. No, może nawet trochę więcej. Na początek dane techniczne.
Podstawowe dane techniczne C64.
Mikroprocesor
|
6510A z zegarem 1.02 MHz (kompatybilny z 6502)
|
Pamięć
|
64k RAM
|
ROM
|
20k ROM (zawiera system operacyjny Kernal i interpreter Basic oraz generator znaków - Char ROM)
|
Tryb Tekstowy
|
40 kolumn x 25 linii tekstu.
- 16 kolorów tła, ramki i znaków
- litery małe i duże, cyfry i symbole
- znaki w inwersji
- znaki graficzne
|
Tryb Graficzny
|
Rozdzielczości:
Hires - 320x200 punktów, 2 kolory
Lores - 160x320 punktów, 4 kolory
|
Obiekty Ruchome (Sprites)
|
- 8 niezależnych obiektów ruchomych
- każdy złożony z matrycy 24x21
- wyświetlanie w trybie lores i hires
- niezależne poszerzanie w pionie i poziomie
- wykrywanie kolizji między obiektami oraz między obiektem i danymi (znakami i rysunkami)
|
Dźwięk
|
- generator dźwięku SID 6581 (8580) zawiera 3 niezależne generatory
- każdy zawiera programowany generator, który umożliwia niezależną regulację kształtu fali, częstotliwość i obwiedni (ADSR)
- możliwość kształtowania charakterystyki sygnału przy użyciu filtrów dolno-przepustowych, górno-przepustowych i pasmowych
- zewnętrzne wejście fonii
|
Klawiatura
|
Pełnowymiarowa klawiatura maszyny do pisania
|
Klawisze
|
- ogółem 66 klawiszy
- 2 klawisze sterujące kursorem
- 4 klawisze funkcyjne (możliwość definiowania przez użytkownika do 8 funkcji)
- zestaw małych i dużych liter
- zestaw znaków graficznych
|
Wejście/Wyjście
|
- port użytkownika
- port szeregowy
- port umożliwiający podłączenie zewnętrznego ROMu (cartridge)
- 2 porty do podłączenia joysticka/manipulatora analogowego - "wiosełka" (ang. Paddle)
- port video
- port do podłączenia pamięci kasetowej np. C1530
|
Charakterystyka oprogramowania
|
Wbudowany BASIC 2.0
- ponad 70 poleceń, instrukcji i funkcji
- pełnoekranowy edytor
|
Zasilanie
|
220V, 50 Hz
|
Oczywiście dane te są danymi producenta. Koderzy pewnie nie zgodzą się z wszystkimi danymi (np. tryby graficzne, ilość sprite'ów, itd.). Wszystkie sztuczki programowe wymyślone na przestrzeni lat przez koderów nasuwają mi pewną myśl. Skoro można było ulepszyć komodę od strony softu, to dlaczego nie ulepszyć jej od strony hardware'owej. Oczywiście nie mam tu na myśli zakupu np. rozszerzenia REU 17xx i wetknięciu go w expansion port. Myślę o własnych rozszerzeniach które zbudujemy sami (co byście powiedzieli na komodę i dwa procki?). Zanim jednak dojdziemy do budowy własnego hard'u musimy omówić sobie poszczególne bloki komody, ważniejsze układy, procesor itd. Być może niektórym wyda się iż zaczynam nudzić, ale bez zrozumienia pracy komody od strony kabelków nie będzie łatwo zaprojektować samemu jakiś układ. By nie przedłużać zapraszam do lektury (a będzie ona długa i szczegółowa).
Schemat blokowy C64.
Powiększ - 17 KB
Zasilacz.
Zasilacz zewnętrzny dostarcza napięcia stabilizowanego 5VDC (stałe), i niestabilizowanego 9VAC (zmienne). Napięcie 5VDC jest podłączone do końcówki 5 i 1 złącza CN7 płyty bazowej C64. Po odfiltrowaniu przez elementy L5, C97 i C100 podane jest na przełącznik S1. Napięcie 5VDC zasila układy logiczne. Warto kontrolować te napięcie, ponieważ jego wahania nie mogą być większe niż +- 5%. Czyli minimum 4.75V, maksimum 5.25V. Jeżeli napięcie nie mieści się w normie, to należy wymienić stabilizator napięcia w zasilaczu oznaczony symbolem 7805. W przeciwnym wypadku mogą ulec uszkodzeniu układy logiczne komody. Z własnej praktyki wiem iż najbardziej podatne na tego typu uszkodzenia są pamięci RAM 41464 komodiusza. W którymś z kolejnych odcinków postaramy się zrobić zasilacz do komody na bazie zasilacza od PC (czyli zasilacz z niezłym kopem).
Napięcie 9VAC jest podłączone do końcówki 6 i 7 złącza CN7 płyty bazowej C64.
Napięcia +12VDC, +5VDC CAN i 9VDC niestabilizowane są otrzymywane z napięcia 9VAC. Napięcie 9VAC jest wyprowadzone na końcówkę 10 i 11 portu użytkownika - złącze CN2.
Wytwarzanie napięcia 12VDC.
Napięcie 9VAC jest dodawane do napięcia 9VDC przez diodę CR6 i prostowane przez diodę CR5. Niestabilizowane napięcie wyjściowe jest filtrowane przez kondensatory C88 i C89, a następnie stabilizowane do napięcia 12VDC przez układ VR1. Stabilizowane napięcie wyjściowe jest filtrowane przez kondensatory C57 i C59.
Napięcie 12VDC zasila układy VIC i SID oraz wzmacniacz fonii.
Wytwarzanie napięcia +5V CAN.
Napięcie 9VAC jest prostowane przez mostek prostowniczy CR4. Niestabilizowane napięcie wyjściowe jest filtrowane przez kondensatory C19 i C95, a następnie stabilizowane do napięcia 5VDC przez układ VR2.
Stabilizowane napięcie wyjściowe jest filtrowane przez kondensatory C102 i C103. Napięcie wyjściowe opisane jako 5VDC CAN jest rozdzielone i indywidualnie filtrowane na dwa napięcia, określone jako VVID i VC. Napięcie VVID zasila układ video, a napięcie VC zasila zegar systemowy.
Wytwarzanie niestabilizowanego napięcia 9VDC.
Mostek prostowniczy CR4 prostuje wejściowe napięcie 9VAC. Na jego wyjściu otrzymujemy niestabilizowane napięcie 9VDC, które wykorzystywane jest do zasilania silnika pamięci kasetowej i modulatora w wersji C64B.
Układ zerowania.
Powiększ - 10 KB
Układ U20 pracuje jako przerzutnik monostabilny. Szerokość impulsu wyjściowego jest określona przez elementy R34 i C24. Szerokość impulsu = 1.1 * R34 * C24, co daje w przybliżeniu 0.5 sekundy. Wyjście układu (końcówka 9) jest aktywne stanem wysokim. Sygnał z końcówki 9 układu U20 podawany jest na wejście inwertera U8.
Wyjście układu U8 jest aktywne stanem niskim. Sygnał RESET inicjuję całą logikę procesora i powoduje, że procesor ładuje licznik rozkazów adresem pierwszej instrukcji systemu operacyjnego określonego mianem KERNAL. Adres startowy przechowywany jest w lokacjach pamięci o adresach $FFFC i $FFFD. Pierwsza instrukcja jest dekodowana i wykonywana dając systemowi KERNAL kontrolę nad działaniem komputera.
Układ zegara systemowego C64.
Powiększ - 27 KB
Układ zegara systemowego zbudowany jest w oparciu o rezonator kwarcowy Y1 o częstotliwości 14.31818 MHz. Układ U31 jest podwójnym oscylatorem sterowanym napięciem (VC0). Sygnał wyjściowy na końcówce 10 o częstotliwości 14.31818 MHz nazywany jest zegarem koloru (?COLOR). Rezystor R27 umożliwia dokładną regulację częstotliwości wyjściowej. Układ U30 jest dzielnikiem częstotliwości, który na wyjściu (końcówka 6) dostarcza sygnał o częstotliwości 2 MHz.
Układ U29 (przerzutnik typu D) pracuje w układzie dzielnika przez 2, dając na wyjściu (końcówka 9) sygnał o częstotliwości 1 MHz.
Układ U32 pracuje jako detektor fazy, porównując sygnał wyjściowy z układu U29 z sygnałem zegara Ø0. Napięcie wyjściowe na końcówce 8 jest proporcjonalne do różnicy faz pomiędzy sygnałami wejściowymi. Druga połowa układu U31 generuje sygnał zegara o częstotliwości 8.1818 MHz nazywany zegarem kropek (DOT CLOCK).
Układ VIC dzieli częstotliwość sygnału DOT CLOCK przez osiem i wyprowadza sygnał zegarowy Ø0 na końcówce 17. Wyjście detektora fazy jest podłączone do końcówki 2 układu U31 sterującej częstotliwością sygnału DOT CLOCK. Tak zamknięta pętla sprzężenia zwrotnego powoduje, że sygnał DOT CLOCK śledzi sygnał ØCOLOR.
Układ zegara systemowego C64B.
Powiększ - 9 KB
Układ zegara systemowego zbudowany jest w oparciu o rezonator kwarcowy Y1 o częstotliwości 16 MHz i układ U31. Sygnał DOT CLOCK o częstotliwości 8.1818 MHz wyprowadzony jest na końcówce 6, a sygnał ØCLOCK o częstotliwości 14.31818 MHz na końcówce 8.
Część I : Część II : Część III : Artykuł: Muddler/The Coders
|