„Sercem" ZX Spectrum jest mikroprocesor Z80A lub Z8OB firmy Zilog, nowsze wersje popularnego Z80. Jedyną różnicą między tymi układami jest częstotliwość pracy zegara. Dla Z80 wynosi ona 2,5 MHz, natomiast dla Z80A — 4 MHz (w praktyce 3,5 MHz), a dla Z80B — 6 MHz. Dzięki temu Z80A i Z80B pracują szybciej niż ich poprzednik.
Mikroprocesor zastosowany w ZX Spectrum ma ośmiobitową -szynę danych. To znaczy, że wymiana informacji miedzy CPU i pamięcią operacyjną odbywa się w postaci paczek po osiem bitów każda, czyli porcji składających się z kombinacji ośmiu zer i jedynek. Zero jest reprezentowane przez niski stan napięcia 0-0.8V, a jedynka przez wysoki stan napięcia 2-5V. Dlatego też mikroprocesor -Z80A nazwano ośmiobitowym (Inne procesory ośmiobitowe to 8080 firmy Intel, 6502 firmy Rockwell czy 6800 firmy Motorola).
Z8OA ma szesnastobitową szynę adresową. Pozwala ona na wygenerowanie 2^15—1 — 65535 różnych adresów. Wygenerowany adres jednoonacznie wskazuje, która z komórek pamięci operacyjnej lub który z układów wejścia/wyjścia ma być w danej chwili zaangażowany w wymianę informacji. W praktyce do oznaczenia układów I/O wykorzystuje się osiem pierwszych bitów adresu, gdyż rzadko zdarza się, aby system wykorzystywał więcej niż 256 układów w wejścia/wyjścia. W przypadku ZX Spectrum druga połowę szyny adresowej wykorzystuje się do generowania adresów służących do odczytu klawiatury.
Inną, ważną funkcją procesora jest wytwarzanie sygnałów, wskązujących czy wygenerowany adres został przeznaczony dla pamięci czy też dla układów sprzęgających. Jeżeli wraz z adresem na odpowiednim wyjściu mikroproesora pojawi się sygnał zwany MREQ (ang. Memory REQuest) to znaczy, że w przesłaniu informacji weźmie udział pamięć operacyjna. Natomiast jeżeli z adresem na odpowiednim wyjściu mikroprocesora pojawi się sygnał zwany IRQ (ang. Input Output ReQuest) to znaczy, że zgłasza sie jeden z układów wejścia/wyjścia). Należy pamiętać, że szyna adresowa przesyła sygnały tylko z mikroprocesora do układów wejścia/wyjścia, lub do pamięci — nigdy odwrotnie. Szyna adresowa jest jednokierunkowa.
Inaczej rzeci się ma z szyną danych. Jest ona dwukierunkowa. Można nią przesłać informację z i do mikroprocesora. O tym, w którym kierunku ma nastąpić przesłanie decydują sygnały: RD (ang. Read) — odczytu z pamięci lub układów wejścia/wyjścia lub WR (ang. .WRite)zapisu do pamięci lub przesłania na wyjście. Dokładniej jest to opisane w pracy zbiorowej pt. „Modułowe systemy mikrokomputerowe" wydanej przez WNT w 1984 roku.
ROM i RAM
Przestrzeń adresową ZX Spectrum można podzielić na dwie podstawowe części: ROM (ang. Real Only Memory) i RAM (ang. Random Access Memory). Pamięć ROM zajmuje 16 kB (czyli 16 x 1024 słowa po osiem bitów każde) przestrzeni adresowej od adresu 0 do 16384. Znajduje się tam system operacyjny zajmujący około 7kB. Zawiera on między innymi procedury obsługi błędów, klawiatury, urządzeń zewnętrznych, ekranu, edytora itp... Oprócz systemu operacyjnego ROM zawiera interpreter języka BASIC. Zadaniem jego jest „tłumaczenie" programu z języka BASIC na język zrozumiały dla mikroprocesora. Ściślej można powiedzieć, że interpreter wykonuje program napisany w BASIC-u. Programy znajdujące się w obu tych częściach ROM-u napisane są w kodzie maszynowym — assemblerze Z80.
Za interpreterem BASIC-u znajduje się kalkulator. Jego zadaniem jest wykonywanie operacji logicznych i arytmetycznych.
Ostatnie 768 bajtów ROM-u, od adresu 13616 - 16383 przebaczone są na generator znaków (ang. Character Generatoy). W tym obszarze zdefiniowane są kształty wszystkich liter, cyfr i innych znaków, dostępnych z klawiatury. Znaki kodowane są w standardowym kodzie ASCII (ang. American Standard Code for Information Interchance) i zawierają cyfry, znaki specjalne oraz litery angielskie, co w konsekwencji powoduje, że bezpośrednio z klawiatury niedostępne są polskie litery takie jak: ą, ć, ę, ś itp. (chociaż takie znaki można zdefiniować samemu).
ROM służy tylko do odczytu. Jest to tzw. pamięć stała. Nie można nic w niej zmienić. Cechą charakterystyczną systemu operacyjnego umieszczonego w pamięci stałej ZX Spectrum jest to, że po przyłączeniu zasilania następuje automatyczny start programu zawartego w ROM-ie od adresu zero i już po chwili mikrokomputer jest gotowy do pracy.
Zaraz za ostatnim bajtem ROM-u zaczyna się przestrzeń adresowa RAM-u. W wersji podstawowej zajmuje ona 16 kB. Właściciel ZX Spectrum 16 kB może samodzielnie rozszerzyć pamięć do 48 kB gdyż na płytce „drukowanej" znajdującej się wewnątrz mikrokomputera jest zarezerwowane miejsce na dodatkowe układy scalone pamięci. Produkcja wersji 16 kB została juz dawno przez firmę Sinclair zaniechana.
Najważniejszą cechą pamięci RAM jest możliwość zmiany zawartości jej komórek. Każdy napisany przez użytkownika program lub wczytany z pamięci zewnętrznej (np. z magnetofonu) oraz dane, umieszczone są w tej części pamięci. Jeżeli od mikrokomputera odłączy się zasilanie, cala zawartość pamięci RAM ulegnie bezpowrotnemu zniszczeniu, odwrotnie niż pamięci ROM.
Mimo że cała zawartość pamięci RAM może być zmieniana, to istnieją pewne obszary (zmienne systemowe, mapa microdriva — jeśli jest pod łączony, UDG itd.), w których po załączeniu zasilania system operacyjny umieszcza pewne dane, potrzebne do jego pracy. Niektóre z tych wartości możemy zmieniać sami, co niekiedy bywa bardzo użyteczne. Jednak należy robić to rozważnie po wcześniejszym zapoznaniu się z systemem operacyjnym ZX Spectrum.
ULA
Bardzo ważnym układem omawianego mikrokomputera jest ULA (ang. Uncommited Logic Array). Można porównać ja do dużego węzła łączności. ULA jest połączona z mikroprocesorem jako układ wejścia/wyjścia o adresie 254 (tylko zerowy bit pierwszego bajtu adresu równy zero). ULA jest także połączona z szyną danych ZX Spectrum np. do jednej linii szyny danych podłączony jest głośnik. Można się o tym przekonać relizując poniższy program.
10 OUT 254,16: OUT 254, 0: GOTO 10
W wyniku tego wykonania będzie słyszalne niskie brzęczenie dobiegające z głośnika wewnętrznego Spectrum. Zatrzymanie programu nastąpi po jednoczesnym przyciśnięciu klawiszy CAPS SHIFT i BREAK. W trakcie wykonywania programu zmieni się także kolor granicznej części ekranu telewizora tzw. BORDER, na czarny. Wynika z tego, że ULA zamjuje się kontrolą koloru brzegu ekranu.
Wyczytajmy następujcie programy:
a)
10 FOR n=0 TO 7
20 OUT254,n:PAUSE 100
30 NEXT n
b)
10 FOR n=0 TO 7
20 BORDER n:PAUSE 100
30 NEXT n
W czasie wykonywania się programów będzie zmieniał się kolor brzegu ekranu co około 2 sek. Efekt działania obu programów jest identyczny. Jeżeli po wykonaniu programu pierwszego a) naciśnie się ENTER, to wówczas kolor graniecznej części ekranu powróci do wcześniej definiowanego, tzn. do koloru określonego przed uruchomieniem programu a). Natomiast po wykonaniu drugiego programu b) kolor BORDER-u pozostanie taki jak został określony kodem, koloru ostatnio wykonanej instrukcji BORDER. Stąd wniosek, żę zmiany prowadzone z pomocą OUT 254,n są tylko zmianami bieżącymi i nie zostawiają one w pamięci komputera żadnych śladów.
Do tego samego wyprowadzenia linii szyny danych, co głośnik podłączony jest pakiet dopasowujący magnetofon. Jest to układ umożliwiający bezpośrednie połączenie magnetofonu z mikrokomputerem.
Podsumowując: bity 0, 1, 2 szyny danych sterują przez ULA kolorem granicznej części ekranu. Bit 3 kontroluje wyjście z komputera na magnetofon, a bit 4 kontroluje głośnik.
Do tej pory omówiono ULA pracującą jako urządzenie wyjściowe. Może ona także pracować jako urządzenie wejściowe. ULA steruje przesłaniem danych z gniazda EAR (czyli z wejścia magnetofonu) do pamięci mikrokomputera. Jest ona także urządzeniem pośredniczącym między mikroprocesorem, pamięcią a klawiaturą.
ULA wczytuje także informacje z pamięci obrazu i na ich podstawie generuje kolorowy obraz telewizyjny, sterując pracą kodera PAL-owskiego i modulatora UHF. Odbywa się to z częstotliwością 50 razy na sekundę. Dlatego ma się wrażenie, iż obraz telewizyjny jest stały, nie migający — analogiczna sytuacja jest z obrazem wyświetlanym np. z projektora filmowego.
Wszystkie omówione wyżej — prócz ULA — elementy mikrokomputera są dostępne na rynku nawet w krajach socjalistycznych. ULA natomiast jest specjalizowanym układem wykonanym na zamówienie SINCLAIR-a. Tego typa układy bywają niekiedy bardziej skomplikowane niż mikroprocesory. Zdecydowama większość komputerów domowych ma choć jeden wyspecializowany układ podobny do ULA. Jest to więc jeden z najbardziej istotnych elementów mikrokomputera.
KRZYSZTOF KURYŁOWICZ, DARIUSZ MADEJ