        $0A READLINE



        void Cconrs( char *buf );



READLINE stellt eine recht komfortable Funktion zur Eingabe von 
Zeichen ber die Tastatur dar. Im Gegensatz zu den 'einfacheren' 
zeichenorientierten Eingabefunktionen kann mit READLINE eine ganze 
Eingabezeile von der Tastatur geholt werden. Die eingegebenen Zeichen 
werden gleichzeitig auf dem Bildschirm dargestellt.



Als Parameter wird der Funktion die Adresse eines Eingabe-Buffers 
bergeben. Der Wert des ersten Bytes des Eingabe-Buffers bestimmt die 
maximale Lnge der Eingabezeile, mu also vor dem Aufruf 
initialisiert werden. Das zweite Byte des Buffers enthlt nach dem 
Beenden der Eingabe die Anzahl der tatschlich eingegebenen Zeichen. 
Die Zeichen selbst stehen im Buffer ab dem dritten Byte.



Die von READLINE benutzte Routine zur Tastatureingabe ist von den 
zeichenorientierten Console-Eingaben gnzlich unterschiedlich. 
Escape-Sequenzen werden bei der Ausgabe unterdrckt und nicht an den 
VT52-Emulator durchgereicht. Nur Control-Zeichen wie Control-H 
(Backspace) und Control-I (TAB) werden erkannt und entsprechend 
behandelt. Insgesamt sind die folgenden, teilweise sonst nicht 
wirksamen Control-Zeichen mglich:



        ^C  beendet Eingabe UND Programm (!)

        ^H  Backspace ein Zeichen

        ^I  TAB, Tabulatorsprung

        ^J  Line Feed, Eingabe beenden

        ^M  Carriage Return, Eingabe beenden

        ^R  eingegebene Zeile wird in neuer Zeile ausgegeben

        ^U  Zeile nicht werten, in neuer Zeile beginnen

        ^X  Zeile lschen, Cursor an Zeilenanfang.



Wenn man sicher ist, nicht die Control-Funktionen zu verwenden, so 
kann man READLINE recht einfach handhaben. Besonders ^H, das Lschen 
zuletzt eingegebener Zeichen, ist ntzlich. Trotzdem sollte man bei 
umfangreicheren Programmen eine eigene Eingaberoutine schreiben, da 
^C sehr 'gefhrlich' ist. Nicht nur am unmittelbaren Zeilenanfang 
(wie bei CP/M), sondern immer whrend der Eingabe wird mit ^C das 
Programm sofort beendet. Diese Mglichkeit ist nicht abschaltbar.



Werden mehr Zeichen eingegeben, als bei der Initialisierung im ersten 
Byte des Buffers angegeben wurden, so wird automatisch die Eingabe 
abgebrochen. Wird die Eingabe mit ENTER, ^J oder ^M abgeschlossen, so 
steht das Abschluzeichen nicht im Buffer (im Gegensatz zur 
offiziellen ATARI-Dokumentation).

Nach der Eingabe enthlt D0 die Anzahl der eingegebenen Zeichen ohne 
ENTER, die ja auch in buf[1] gefunden werden kann. Der eingegebene 
String wird nicht unbedingt von einer Null abgeschlossen!



----------------------------------------------------------------------
PEA     buffer          * Adresse des Eingabebuffers

MOVE    #$0a,-(SP)      * Funktionsnummer

TRAP    #1              * GEMDOS aufrufen

ADDQ.L  #6,(SP)         * Stack aufrumen

...

buffer: dc.b    20      * wir wollen maximal 20 Zeichen haben

        dc.b    0       * Anzahl der eingegebenen Zeichen nach Aufruf

        ds.b    20      * der eigentliche Eingabebuffer

----------------------------------------------------------------------
