11. Portzugriffe

Achtung! Die Befehle greifen direkt auf die Hardware des Computers zu!

INP

Die Funktion INP (= Input) greift auf die Hardware des Computers zu und liest ein Byte von einem I/O-Port. Sie müssen sich mit der Hardware des Computers und den Portadressen sowie deren Bedeutung auskennen, um diesen Befehl nutzen zu können.
Syntax: <numVar> = INP (port)

Parameter: port: Port-Adresse, von der gelesen werden soll



OUT

Der Befehl OUT (= Output) greift auf die Hardware des Computers zu und schreibt ein Byte in einem I/O-Port. Sie müssen sich mit der Hardware des Computers und den Portadressen sowie deren Bedeutung auskennen, um diesen Befehl nutzen zu können.
Syntax: OUT port, wert

Parameter: port: Port-Adresse, auf die ausgegeben werden soll

wert: auszugebender Wert


Achtung: Eine Ausgabe ungültiger Werte auf bestimmte I/O-Ports des Computers könnte die Funktion des Computers schwer stören oder unmöglich machen. Der Programmierer von R-BASIC übernimmt keinerlei Haftung für Schäden, die auf eine fehlerhafte Verwendung der Befehle INP und OUT zurückgehen!

WAIT

Die Funktion WAIT (= Warte) greift auf die Hardware des Computers zu und wartet bis ein bestimmtes Bitmuster an einem I/O-Port anliegt. Sie müssen sich mit der Hardware des Computers und den Portadressen sowie deren Bedeutung auskennen, um diesen Befehl nutzen zu können.
Syntax: WAIT port, mask [, xBits [, mode] ]

Parameter: port: Port-Adresse, von der gelesen werden soll

mask: Maske, welche Bits abgefragt werden sollen

xBits: Welche Bits davon Null sein müssen. xBits ist optional. Vorgabewert ist Null.

mode: mode = 0: WAIT wartet bis das gesuchte Bitmuster erscheint
(Vorgabewert, wenn mode nicht angegeben).

mode = 1: WAIT wartet solange das gesuchte Bitmuster am Port anliegt.
Soll mode angegeben werden, so ist auch xBits anzugeben.

Funktion: WAIT wartet, bis die bitweise logische Verknüpfung des Bitmusters am abgefragten Port mit mask und (falls angegeben) xBits die geforderte Bedingung (mode) erfüllt.
"mask" bestimmt, welche Bits berücksichtigt werden sollen.
Bits, die in mask nicht gesetzt sind, können beliebige Werte haben.

"xBits" bestimmt, welche Bits Null sein müssen.
Bits, die in xBits nicht gesetzt sind, müssen Eins sein, damit die Bedingung erfüllt ist.

Intern werden "mask" und "xBits" (wenn angegeben) logisch XOR verknüpft. Der von "port" gelesene Wert mit "mask" logisch UND verknüpft. Die genauen Formeln lauten:

erwartung = (mask XOR xBits) AND mask
gelesen = INP(port) AND mask

mode = 0 wartet, bis das gelesene Bitmuster erscheint:
Warte bis erwartung = gelesen

mode = 1 wartet, solange das gelesene Bitmuster korrekt ist:
Warte solange wie erwartung = gelesen
Beispiele:

Wir nutzen: 1 ist binär 0001, 2 ist binär 0010, 3 ist binär 0011.
x ist ein Bit, das gesetzt sein kann oder nicht (d.h. egal ob 0 oder 1)

Warten auf ein bestimmtes Bitmuster an Port p:

wait p, 2       ' warten auf xx1x an Port p
wait p, 2, 2    ' warten auf xx0x
wait p, 3, 1    ' warten auf xx10


Warten solange ein bestimmtes Bitmuster an Port p anliegt:

wait p, 2, 0, 1    ' warten solange xx1x an Port p
wait p, 2, 2, 1    ' warten solange xx0x anliegt
wait p, 3, 3, 1    ' warten solange xx00 anliegt
 ' WAIT setzt fort, wenn xx01, xx10 oder xx11 erscheint.

^

Weiter...