Część I : Część II : Część III : Artykuł: Muddler/The Coders
Adresowanie ROMu i układów wejścia/wyjścia, port rozszerzenia.
Powiększ - 33 KB
Adresowanie Układów wejścia/wyjścia.
VIC
|
$D000 - $D02E
|
SID
|
$D400 - $D41C
|
COLOR RAM
|
$D800 - $DBFF
|
CIA1
|
$DC00 - $DC0F
|
CIA2
|
$DD00 - $DD0F
|
I/O1
|
$DE00 - $DEFF
|
I/O2
|
$DF00 - $DFFF
|
Układ U17 jest programowalną tablicą logiczną (PLA). Wyjście F5 układu U17 (końcówka 12) oznaczone jako I/O przechodzi w stan "niski", jeżeli wybrany jest którykolwiek układ WE/WY sterowany przez układ U15. Poniżej przedstawiona jest zajętość przestrzeni adresowej przez poszczególne układy WE/WY.
Adresowanie ROMu.
ROM BASIC'a umieszczony jest w przestrzeni adresowej od adresu $A000 do $BFFF. BASIC ROM jest uaktywniany, gdy wyjście F1 (końcówka 17) układu PLA U17 przechodzi w stan "niski".
KERNAL ROM umieszczony jest w przestrzeni adresowej od adresu $E000 do $FFFF. KERNAL ROM jest uaktywniany, gdy wyjście F2 (końcówka 16) układu PLA U17 przechodzi w stan "niski".
ROM generatora znaków (CHARACTER GENERATOR ROM) umieszczony jest w przestrzeni adresowej od adresu $D000 do $DFFF. Generator znaków jest uaktywniany, gdy wyjście F3 (końcówka 15) układu PLA U17 przechodzi w stan "niski".
Port rozszerzenia.
Port rozszerzenia jest przedłużeniem szyny danych, szyny adresowej i sygnałów sterujących mikroprocesora. Oprócz tego, wyprowadzone są sygnały ROML i ROMH. Pierwszy z nich uaktywnia układy umieszczone od adresu $8000 do $9FFF, a drugi od $E000 do $FFFF. Przy pomocy tych wyjść układ PLA wybiera cartridge zainstalowany na porcie rozszerzenia.
Dalsze dwa sygnały I/O1 i I/O2 generuje układ U15. Sygnał I/O1 uaktywnia układy umieszczone od adresu $DE00 do $DEFF. Sygnał I/O2 uaktywnia układy umieszczone od adresu $DF00 do $DFFF.
Sterowanie pamięci RAM.
Powiększ - 26 KB
Układy U13 i U25 pracują jako multipleksery linii adresowych. Jeżeli sygnał AEC, wytwarzany przez układ VIC, jest w stanie "wysokim", wtedy do pamięci RAM docierają adresy z mikroprocesora. Jeżeli sygnał AEC jest w stanie "niskim" do pamięci RAM dociera adres odświeżania z końcówek 24 - 31 układu VIC.
Sygnał AEC przechodzi w stan "niski", gdy zegar systemowy Ø2 jest w stanie "niskim". Ponieważ wszystkie układy wejścia/wyjścia są dekodowane, gdy zegar Ø2 jest w stanie "wysokim", więc odświeżanie nie przeszkadza w działaniu procesora (odświeżanie w przeciw fazie). Przy użyciu ośmiu układów 4164 DRAM zrealizowana jest pamięć 64kB. Układ pamięci RAM 2114 (1kB * 4 bity) służy do przechowywania informacji o kolorze obrazu.
Układy wyjściowe wizji i fonii - złącze 5-cio końcówkowe.
Powiększ - 46 KB
Układ VIC generuje sygnał luminacji zsumowany z sygnałem synchronizacji na końcówce 15. Na końcówkę 14 wyprowadzony jest sygnał niosący informację o kolorze.
Całkowity sygnał video tworzony jest przez połączenie tych dwóch sygnałów. Kompletny sygnał video podawany jest na modulator i końcówkę 4 złącza monitorowego (CN5). W przeciwieństwie do wersji 8-mio końcówkowej złącza CN5, nie jest tutaj dostępny sygnał koloru.
Układy wyjściowe wizji i fonii - złącze 8-cio końcówkowe.
Powiększ - 41 KB
Układ video kontrolera U19 VIC jest odpowiedzialny za tworzenie sygnału video. Luminacja wraz z synchronizacją (poziomą i pionową) wyprowadzona jest na końcówkę 15. Następnie, sygnał ten podawany jest na nóżkę 2 modulatora. Sygnał koloru z nóżki 14 układu U19 podawany jest na końcówkę 3 modulatora. Końcówka 9 układu U19 VIC umożliwia podłączenie pióra świetlnego.
Układ U18 SID jest odpowiedzialny za fonię. Końcówka 27 jest wyjściem fonii, a końcówka 26 wejściem fonii zewnętrznej. Modulator łączy sygnał luminacji, koloru oraz fonii i generuje kompletny sygnał TV na nóżce 5. Oprócz tego modulator przesyła na złącze CN5 sygnały wyjściowe z układu U19 VIC.
Sygnał fonii z nóżki 27 układu U18 SID, po przejściu przez wzmacniacz Q2, jest podłączony do końcówki 3 złącza CN5.
Sygnał fonii zewnętrznej z końcówki 5 złącza CN5 podawany jest na nóżkę 26 układu U18 SID. Manipulator analogowy ("wiosełka") jest podłączony do jednego z portów sterujących i testowany przez układ U18 SID na końcówkach 23 i 24.
Interfejs pamięci kasetowej.
Powiększ - 30 KB
Jedną z cech układu 6510 jest wbudowany port we/wy (P0-P5). Linie P3 - P5 sterują większością funkcji interfejsu pamięci kasetowej. Na linii P3 wyprowadzony jest sygnał danych do zapisu, który podłączony jest do końcówek E i 5 złącza CN3. P4 jest wejściem, które służy do określania stanu w jakim znajduje się przycisk odtwarzania pamięci kasetowej. Linia P5 jest wyjściem, które steruje silnikiem pamięci kasetowej. Przejście linii P5 w stan niski powoduje zatkanie tranzystora Q2, co w rezultacie doprowadza do ustalenia napięcia na bazie tranzystora Q1 na poziomie 7.5V. Tranzystory Q1 i Q3 zostają nasycone, umożliwiając przepływ prądu przez uzwojenia silnika pamięci kasetowej.
Układ U1 realizuje funkcję rozbudowanego układu we/wy. Zwiera porty równoległe, wyjścia szeregowe i układy czasowe. Dane odczytane z pamięci kasetowej są podłączone do końcówek D i 4 złącza CN3, a następnie na nóżkę 24 (FLAG) układu U1.
Interfejs klawiatury, joysticka i manipulatora analogowego.
Powiększ - 47 KB
Matryca klawiatury.
Powiększ - 15 KB
Klawiatura podłączona jest do układu U1 CIA. Do dekodowania przycisków klawiatury użyte zostały obydwa równoległe porty układu U1. Sygnały portu A (PA0 - PA7) są wyjściami. Sygnały portu B (PB0 - PB7) są wejściami. Na liniach portu A pojawia się wędrujące "0". Przyciśnięcie któregokolwiek klawisza powoduje pojawienie się "0" na odpowiadającej mu linii portu B.
Program zapisany w KERNAL ROM generuje wędrujące "0" na liniach portu A i dekoduje powracające sygnały na liniach portu B.
Przyciśnięcie klawisza RESTORE powoduje generację impulsu przez wygenerowanie przerwania niemaskowalnego - NMI. W wyniku tego procesor wykonuje procedurę, która inicjuje układy we/wy. Jeżeli w tym samym czasie zostanie wciśnięty klawisz STOP inicjowane są również flagi BASICa.
Interfejs joysticka.
Układ U1 współpracuje również z joystickiem. Joystick B, związany z portem 2, jest podłączony do portu A. Joystick A, związany z portem 1, jest podłączony do portu B. Przesunięcie dźwigni joysticka w górę, w dół, w lewo, w prawo lub przyciśnięcie przycisku "fire" powoduje zwarcie odpowiedniego wejścia układu U1 do masy.
Interfejs manipulatora analogowego.
Pokrętło manipulatora połączone jest z regulowanym rezystorem. Obracając pokrętłem, zmieniamy rezystancję, która z kolei wpływa na stałą czasową układu RC. Napięcie, które ustali się na kondensatorze podawane jest na wejście przetwornika analogowo-cyfrowego (A/D), znajdującego się w układzie U18 SID. Informacja w postaci cyfrowej jest przechowywana w jednym z rejestrów układu SID. Położenie manipulatora może być określone przez odczyt zawartości tego rejestru. Do przełączania sygnałów z obydwu manipulatorów wykorzystano układ kluczy analogowych 4066 CMOS (układ U28). Sygnały z manipulatorów są przekazywane do układu SID, podczas gdy wejścia zezwalające (E0-E3) układu U28 są w stanie "wysokim".
UWAGA: Przyporządkowanie końcówek portu U1 podane na schematach jest błędne. Właściwy opis umieszczony jest na rysunku matrycy klawiatury.
Interfejs szeregowy i port użytkownika.
Powiększ - 41 KB
Interfejs szeregowy.
Interfejs szeregowy sterowany jest z układu U2 CIA przez sygnały PA3 - PA7 portu równoległego.
Sygnał PA3 jest sygnałem wyjściowym i spełnia funkcję linii zajętości (ATN). Sygnał zajętości jest odwracany przez układ U8. Linia PA4 jest wyjściem zegara. Transmisja danych z mikrokomputera C64 do urządzenia zewnętrznego jest synchronizowana sygnałem zegarowym na linii PA4. Dane wyjściowe przesyłane są na linii PA5. Sygnały PA4 i PA5 są buforowane przez układ U8.
Transmisja danych z urządzenia zewnętrznego do mikrokomputera C64 jest synchronizowana sygnałem zegarowym generowanym przez urządzenie nadające, który podłączony jest do linii PA6.
Transmisja danych z urządzenia zewnętrznego do mikrokomputera odbywa się na linii PA7. Urządzenie zewnętrzne, które chce nawiązać łączność z mikroprocesorem wystawia sygnał żądania obsługi wprowadzając linię SRQ IN w stan "niski".
Część I : Część II : Część III : Artykuł: Muddler/The Coders
|