Serwis Edukacyjny
w I-LO w Tarnowie
obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

obrazek

Tłumaczenie: mgr Jerzy Wałaszek

©2023 mgr Jerzy Wałaszek
I LO w Tarnowie

Rozdział 23

WEJŚCIE i WYJŚCIE

Porty wejścia/wyjścia i ich zastosowania
IN, OUT

SPIS TREŚCI

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)

obrazek

Spód (strona połączeń)

Na początek:  podrozdziału   strony 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2023 mgr Jerzy Wałaszek

Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.

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

Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.

Informacje dodatkowe.