Parametry techniczne komputera ZX81


Producent: Sinclair Research Ltd
Kraj pochodzenia: Anglia
Rok powstania: 1981
Procesor: kompatybilny z ZiLOG Z80A mikroprocesor NEC P1X108-144 D780C-1, pracujący z zegarem 3,25MHz. Częstotliwość zegarowa była otrzymywana przez podział częstotliwości generatora kwarcowego 6,5MHz, który jednakże nie pracował zbyt precyzyjnie. Komputer działał w dwóch trybach:
SLOW - obliczenia i generacja obrazu, efektywna szybkość procesora 0,82MHz
FAST - tylko obliczenia, procesor pracujący z pełną prędkością
Układy pomocnicze: ULA (Uncommitted Logic Array) 2C184E 8147 produkcji firmy FERRANTI - dzisiaj nie do dostania. Układ ULA, zwany czasami SCL (Sinclair Custom Logic) zawierał część elektroniki odpowiedzialnej za tworzenie obrazu oraz generator przerwań niemaskowanych NMI, który był niezbędny do wykonywania programu użytkownika w czasie tworzenie górnego i dolnego marginesu obrazu - tzw. tryb SLOW.
Pamięć RAM: 1KB wbudowanej pamięci statycznej RAM rozszerzalnej za pomocą zewnętrznych modułów 16, 32, 48 i 64KB. Najpopularniejszym rozszerzeniem było 16KB i to należy przyjąć za standard dla ZX81. Większość programów powstawała właśnie dla tej konfiguracji.
Pamięć ROM: 8KB z systemem ZX81 BASIC umożliwiającym programowanie ZX81 w niestandardowym dialekcie języka BASIC. System posiadał prosty edytor wierszowy z analizą składni poleceń.
Obraz: wyjście antenowe na odbiornik TV - 36 kanał VHF. Obraz czarnobiały, standardowo występował tylko tryb tekstowy 24 wiersze na 32 kolumny. Za pomocą odpowiednich programów oraz drobnej przebudowy sprzętu można było uzyskiwać grafikę zwaną dumnie hires, czyli 192 linie po 256 pikseli w każdej. Z grafiki korzystały głównie gry zręcznościowe. Ciekawostką jest to, iż obraz był tworzony programowo przez mikroprocesor Z80 współpracujący ściśle z układem ULA.

Oprócz liter, cyfr i znaków interpunkcyjnych ZX81 mógł również wyświetlać tzw. grafikę znakową o rozdzielczości 48 x 64 piksele. Znaki mogły być wyświetlane w trybie normalnym oraz negatywowym. Dostępne tylko dwa kolory - biały i czarny.

Dźwięk: tylko to, co wyśpiewał użytkownik. Istnieje jednakże program, który wykorzystuje interfejs magnetofonu do odtwarzania muzyki. Również można było zakupić przystawki do ZX81 z układem dźwiękowym i głośnikiem, ale nigdy nie stały się one bardzo popularne i mało programów je wspiera.
Nośnik danych: kaseta magnetofonowa. Komputer ZX81 wykorzystywał w charakterze pamięci masowej zwykły magnetofon kasetowy - jak najprostszy, bez automatyki poziomu zapisu. Szybkość transmisji nie była imponująca i wynosiła około 38 bitów na sekundę. Zatem program o długości 2KB wczytywał się do komputera przez około 1 minutę. Zapis i odczyt programu sterowany był z poziomu języka ZX81 BASIC za pomocą poleceń SAVE i LOAD.
Klawiatura: foliowa z nadrukowanymi klawiszami, niezbyt wygodna w użyciu, ale za to tania w produkcji. Klawisze posiadały do 5 różnych znaczeń w zależności od aktualnego trybu pracy komputera. Zainteresowanych obsługą klawiatury odsyłam do instrukcji użytkownika ZX81, której autorem jest jeden z twórców oprogramowania - Steven Vickers.
Urządzenie zewnętrzne: czarnobiały odbiornik telewizyjny do wyświetlania obrazu
magnetofon do zapisu i odczytu programów
drukarka ZX81 Printer drukująca na specjalnym, foliowanym papierze

Pojawiały się również inne urządzenia, np. interfejs do joysticka czy stacji dysków, lecz jako niestandardowe nie posiadały odpowiednio dużego wsparcia w oprogramowaniu.

Zasilanie: wewnętrznie 5V, zasilacz zewnętrzny ZX81 Power Supply dostarcza niestabilizowanego napięcia stałego 9V, które wewnętrznie jest stabilizowane przez układ 7805 i zmniejszane do napięcia 5V. Ciekawostką jest fakt, iż radiator stabilizatora umieszczono pod klawiaturą, co powodowało ogrzewanie klawiszy.

 

Komputer ZX81 powstał jako następca wcześniejszego modelu ZX80. W stosunku do swojego poprzednika ZX81 posiadał tryb SLOW, w którym komputer mógł jednocześnie wykonywać program użytkownika oraz wyświetlać stabilny obraz na ekranie telewizora. ZX80 albo wyświetlał obraz, albo wygaszał go i zajmował się wykonaniem programu. Dzisiaj wydaje się to nam dziwne. Musimy jednak wziąć pod uwagę prosty fakt:

Konstruując swoje komputery Sir Clive Sinclair starał się zejść jak najniżej z kosztami wytwarzania. W ZX81 znajdowały się tylko 4 układy scalone (w owym czasie niesamowite osiągnięcie technologiczne):

  • mikroprocesor Z80A wykonujący program i generujący obraz tv
  • układ pomocniczy ULA zawierający elektronikę do tworzenia obrazu tv
  • pamięć 8KB ROM z systemem ZX81 BASIC
  • pamięć statyczna 1KB RAM do przechowywania programu, danych oraz zawartości obrazu

Prawdziwy sterownik obrazu podrażałby koszty oraz komplikowałby sam system, dlatego Sir Sinclair zdecydował się na genialne i niestandardowe wykorzystanie mikroprocesora Z80A, który współuczestniczył w wyświetlaniu obrazu telewizyjnego pobierając dane z pamięci dla układu ULA. Całość jest dokładnie opisana w artykule dotyczącym generacji obrazu na ZX81 oraz dalej w tym artykule. W komputerze ZX81 zastosowano generator przerwań niemaskowanych NMI, dzięki któremu komputer potrafił jednocześnie wykonywać program i wyświetlać obraz telewizyjny. Stworzyło to możliwość powstania interaktywnych gier komputerowych.

Wadą trybu SLOW było jednak wolne wykonywanie programu. Dlatego ZX81 posiadał również tryb szybki - FAST, w którym porzucał tworzenie obrazu i zajmował się wykonywaniem tylko programu użytkownika dając w efekcie około czterokrotny wzrost prędkości. Programy w języku ZX81 BASIC były niestety koszmarnie wolne. Spowodowane to było po pierwsze przez programowe tworzenie obrazu, czym głównie zajmował się mikroprocesor Z80, a po drugie przez przyjęcie w ZX81 BASIC kodowania liczb w systemie zmiennoprzecinkowym. System zmiennoprzecinkowy pozwala co prawda wykonywać skomplikowane obliczenia naukowe, lecz nie jest natywnym systemem kodowania liczb dla mikroprocesora Z80A. Wszelkie rachunki musiały być wykonywane za pomocą skomplikowanych i czasochłonnych procedur zmiennoprzecinkowych. Spowalniało to znacznie wykonywanie instrukcji, w których występowały jakieś liczby, np. PRINT liczba, GOTO liczba, itp.

Pętle nie zapamiętywały położenia swojego początku w pamięci, tylko numer wiersza programu, do którego pętla musiała powrócić. Znalezienie tego wiersza wymagało przejścia za każdym razem przez wszystkie poprzedzające go wiersze w programie. Zatem pętla umieszczona na końcu dużego programu wykonywała się znacząco wolniej niż ta sama pętla na początku. To samo dotyczyło wywołań podprogramów GOSUB oraz skoków GOTO. Wymuszało to na programiście umieszczanie często wykonywanych podprogramów na początku kodu - wtedy program działał nieco szybciej, ale i tak było to zbyt wolno. Przekonałem się o tym po napisaniu kilku prostych gier - wynik nie był zbyt zachęcający. Dlatego szybko zainteresowałem się kodem maszynowym mikroprocesora Z80. Przyspieszenie w stosunku do języka BASIC było ogromne - kilkaset razy! Gry napisane w kodzie maszynowym musiały być wręcz spowalniane, aby dało się w nie efektywnie grać.

Oprócz kodu maszynowego stosowane były kompilatory języka ZX81 BASIC. Zasada działania tych kompilatorów była następująca: programista pisał program w zubożonym języku ZX81 BASIC, który akceptował kompilator. Następnie program był tłumaczony na odpowiadający mu kod maszynowy dla mikroprocesora Z80. Kod wynikowy działał kilkadziesiąt razy szybciej od oryginału. Dla wielu zastosowań (czytaj gier) wzrost szybkości był zupełnie wystarczający. Niektóre gry musiały być nawet sztucznie spowalniane poleceniem PAUSE. Po kompilacji program w języku BASIC nie był już potrzebny i można go było wykasować, uzyskując w ten prosty sposób dodatkowe miejsce w pamięci. Po tej operacji skompilowany program zapisywany był na taśmie i mieliśmy produkt gotowy do użycia.

 

 


   I Liceum Ogólnokształcące   
im. Kazimierza Brodzińskiego
w Tarnowie

©2018 mgr Jerzy Wałaszek

Dokument ten rozpowszechniany jest zgodnie z zasadami licencji
GNU Free Documentation License.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe