Rozdział 23


WEJŚCIE i WYJŚCIE

 

Podsumowanie

OUT
IN
 

Procesor może czytać oraz (przynajmniej z RAM) zapisywać do pamięci przy pomocy PEEK i POKE. Sam procesor wcale się nie przejmuje, czy pamięcią jest ROM, RAM, czy nawet zupełnie nic (w ZX Spectrum 16K obszar pamięci powyżej adresu 32768 nie jest połączony z żadną fizyczną pamięcią); wie on po prostu, że wszystkich adresów pamięci jest 65536 i że może z każdego z nich odczytać bajt informacji (nawet gdy nie ma to sensu) oraz zapisać bajt (nawet gdy zostanie stracony). W ten sam sposób istnieje 65536 tzw. portów wejścia/wyjścia, które nazywamy portami I/O (I - input, wejście; O - output, wyjście). Są one używane przez procesor do porozumiewania się z różnymi urządzeniami, takimi jak klawiatura lub drukarka, a mogą być sterowane z poziomu języka BASIC za pomocą funkcji IN oraz polecenia OUT.

IN jest funkcją podobną do PEEK.

 

IN adres

 

Posiada jeden argument, adres portu, a wynikiem jest bajt odczytany z tego portu.

 

OUT jest podobne do polecenia POKE.

 

OUT adres, wartość

 

zapisuje podaną wartość do portu o podanym adresie. Sposób interpretacji tego adresu zależy w dużym stopniu od reszty komputera; dosyć często wiele różnych adresów będzie posiadało takie samo znaczenie. W Spectrum najbardziej sensownie jest potraktowanie adresów jak liczb dwójkowych, ponieważ poszczególne bity mają osobne znaczenia. Jest 16 bitów, które będziemy nazywali (A oznacza adres)

 

A15, A14, A13, A12, ..., A2, A1, A0

 

Tutaj A0 jest bitem pierwszym, A1 bitem drugim, A2 bitem trzecim, itd. Bity A0, A1, A2, A3 i A4 są bitami ważnymi. Zwykle mają wartość 1, lecz jeśli któryś z nich przyjmie wartość 0, to dla komputera oznacza to wykonanie czegoś specyficznego. Komputer nie potrafi obsłużyć więcej niż jednej rzeczy naraz, zatem nie więcej niż jeden z tych pięciu bitów powinien mieć wartość 0. Bity A6 i A7 są ignorowane. Bity A8, A9 i dalej są czasami używane do przekazania dodatkowych informacji.

Bajt odczytany lub zapisany składa się z 8 bitów, do których często odwołujemy się przez nazwy D7, D6, ..., D1, D0 (D oznacza dane). Oto lista używanych adresów portów.

Istnieje zbiór adresów wejściowych do odczytu klawiatury oraz gniazdka EAR.

Klawiatura jest podzielona na 8 połówek wierszy po pięć klawiszy w każdym.

 

IN 62278 odczytuje połówkę rzędu klawiszy od CAPS SHIFT do V

IN 65022 odczytuje połówkę rzędu klawiszy od A do G

IN 64510 odczytuje połówkę rzędu klawiszy od Q do T

IN 63486 odczytuje połówkę rzędu klawiszy od 1 do 5

IN 61438 odczytuje połówkę rzędu klawiszy od O do 6

IN 57342 odczytuje połówkę rzędu klawiszy od P do 7

IN 49150 odczytuje połówkę rzędu klawiszy od ENTER do H

IN 32766 odczytuje połówkę rzędu klawiszy od SPACE do B

 

(Adresy te powstają jako 254+256*(255-2↑n), gdy n idzie od 0 do 7.)

We wczytanym bajcie bity D0 do D4 odpowiadają pięciu klawiszom w danej połówce rzędu — D0 dla zewnętrznego klawisza, D4 dla klawisza najbliższego środkowi wiersza. Bit ma wartość 0, jeśli skojarzony z nim klawisz jest wciśnięty, 1 jeśli nie. D6 jest stanem gniazdka EAR.

Adres portu 254 dla urządzeń wyjściowych steruje głośnikiem (D5) i gniazdkiem MIC (D3) oraz również ustawia kolor obramowania ekranu (D2, D1 i D0).

Adres portu 251 obsługuje drukarkę, zarówno przy zapisie jak i odczycie: odczyt sprawdza, czy drukarka jest gotowa do przyjęcia kolejnych danych, a zapis wysyła informację o kropkach do wydrukowania (drukarka ZX Printer działa tylko w trybie graficznym).

Adresy portów 254, 247 i 239 są używane przez dodatkowe urządzenia, o których wspomnieliśmy w Rozdziale 22.

 

Uruchom ten program

 

10 FOR n=0 TO 7: REM numer polowy rzedu
20 LET a=254+256*(255-2 n)
30 PRINT AT 0,0; IN a: GO TO 30

 

i pobaw się naciskaniem klawiszy. Gdy się znudzisz z każdą połówką rzędu klawiatury, wciśnij BREAK i następnie wpisz

 

NEXT n

 

Magistrale sterująca, danych i adresowa są wyprowadzone na złącze krawędziowe znajdujące się z tyłu Spectrum, zatem możesz z nim zrobić prawie wszystko to samo, co z systemem Z80. Czasami jednak układy ZX Spectrum mogą przeszkadzać. Oto schemat tego złącza krawędziowego:

 

Góra (strona komponentów)

Spód (strona połączeń)

 

 


   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