	14 Iorec

	IOREC *Iorec( int dev );

Mit dieser Funktion wird ein Zeiger auf einen Puffer-Datensatz
fr ein Eingabegert geholt. Folgende Eingabegerte knnen
angegeben werden:

	dev	Eingabegert
	 0	RS232
	 1	Tastatur
	 2	MIDI

Der Puffer-Datensatz fr ein Eingabegert hat folgenden Aufbau:

typedef struct
{
	void	*ibuf;		/* Zeiger auf Eingabepuffer */
	int	ibufsiz;	/* Gre des Eingabepuffers */
	int	ibufhd; 	/* Head Index */
	int	ibuftl; 	/* Tail Index */
	int	ibuflow;	/* Low water mark */
	int	ibufhi; 	/* High water mark */
} IOREC;

Bei dem Eingabepuffer handelt es sich um einen zirkulren Puffer,
der Head Index gibt die nchste Schreibposition an (der Puffer
wird von einer Interruptroutine gefllt) und der Tail Index gibt
an, von wo aus dem Puffer gelesen werden kann. Sind Head und Tail
Index gleich, so ist der Puffer leer. Low und High water mark
werden im Zusammenhang mit der Kommunikationskontrolle bei RS232
benutzt (XON/XOFF oder RTS/CTS). Ist der Eingabepuffer bis zur
High water mark gefllt, so wird dem Sender ber XOFF bzw. CTS
mitgeteilt, da der Rechner keine weiteren Daten mehr empfangen
kann. Werden die empfangenen Daten dann vom Rechner weiterverar-
beitet, so da der Pufferinhalt unter die Low water mark sinkt,
so wird die bertragung wieder freigegeben.

Fr die RS232-Ausgabe existiert ein gleich aufgebauter Puffer-
Datensatz, der sich direkt an den Eingabe-Datensatz anschliet.

Beispiel:

	move.w	#1,-(sp)	* Pufferdatensatz fr Tastatur
	move.w	#14,-(sp)	* Iorec
	trap	#14
	addq.l	#4,sp
	...
Ergebnis: $DB0

Die folgende Tabelle enthlt die Daten fr alle Gerte:

		RS232 Eingabe	RS232 Ausgabe	Tastatur   MIDI
---------------------------------------------------------------
Adresse 	$D8E		($D9C)		$DB0	   $DBE
Pufferadresse	$A0E		$B0E		$C0E	   $D0E
Pufferlnge	$100		$100		$100	   $80
Head Index	0		0		0	   0
Tail Index	0		0		0	   0
Low water mark	$40		$40		$40	   $20
High water mark $C0		$C0		$C0	   $60

Head und Tail Index sind natrlich vom augenblicklichen Betriebs-
zustand abhngig. High und Low water mark sind jeweils auf 3/4
bzw. 1/4 der Puffergre gesetzt. Sie sind nur bei eingeschalte-
tem XON/XOFF bzw. RTS/CTS bei RS232 von Bedeutung.
