title Zeichen fuer TURBO PASCAL 3.0 holen name ('AHEADMAN') ; Dieses Modul erlaubt das Einlesen von Zeichen von der ; Tastatur, waehrend ein Programm, kompiliert mit ; TURBO PASCAL 3.0 CP/M 80 ablaueft ; Es wurde ausgelegt zum Gebrauch als INLINE Code ; Copyright (C) Wener Cirsovius ; Hohe Weide 44 ; D-2000 Hamburg 20 ; Version 1.0 von Oktober 1987 ; Zum Lauf des Systems wird benoetigt: ; 1 - Aktivierung des 'Laders' durch den Compilerbefehl {$U+} ; (BEACHTUNG: Hierdurch wird das Programm langsamer) ; 2 - Die folgenden Variablen mussen im TURBO Programm ; vorhanden sein: ; BUFFER Zeichenpuffer ; BUFMAX maximale Laenge des Zeichenpuffers ; UOPT Byte, TRUE entspricht dem Befehl {U+} ; ===== TURBO PASCAL 3.0 Adressen ===== consta equ 00a0h ; Konsolstatus conin equ 00a3h ; Konsoleingabe break equ 2014h ; BREAK Adresse ; ===== Externe Referenzen vom TURBO Programm ===== ext uopt,buffer,bufmax ; ===== Start des Codes ===== .z80 start: call consta ; Test des Konsolestatus ret z ; .. nichts zu holen call conin ; Zeichen holen ld e,a cp 'C'-'@' ; Testen CTRL-C --> BREAK jr nz,buffin ; Nein, im Puffer ablegen ld a,(uopt) ; Test original {$U+} cp 0 jp nz,break ; .. BREAK ausfuehren buffin: ld hl,buffer ; Auf Puffer zeigen ld c,(hl) ; Laenge der Zeichen holen ld b,0 inc c ret z ; .. Ueberlauf push hl ld hl,(bufmax) or a sbc hl,bc ; Testen ob noch Platz im Speicher pop hl ret c ; .. nein, Eingabe verwerfen ld (hl),c ; Neue Laenge speichern add hl,bc ld (hl),e ; Neues Zeichen speichern ; ret ; Dies fuegt TURBO ein end