;   --------------------------------------------------------------
;               Anzeige am LCD-Display
;   --------------------------------------------------------------
; Funktion :    Testprogramm
; 		Anzeige als Blinktext und Lauftext
;		auf einem Disply mit bis zu 4 Zeilen
;		bei 2-zeiligem Display werden nur diese angezeigt
10 STRING 1900,200		; Stringarray init fr $()
20 $(0)="                    "
30 $(1)="STARTPOS"
40 $(2)="Langtext mit vielen Buchstaben"
50 INIT DISP			; Disply inititalisiern
60 INIT OUT,1:CLS		; Printumleitung auf Display
70 PUSH 12 : CALL 481EH    	; Cursor aus
80 ?"Zeile 1"
82 GOSUB 800			; Wartezeit
92 ?"Zeile 2"
100 GOSUB 800			; Wartezeit
110 CUR 2,0:?"Zeile 3"
120 GOSUB 800			; Wartezeit
130 CUR 3,0:?" PROG SEL  TIME NEXT"
200 GOSUB 900			; Laufschrift
210 GOSUB 700			; Blinktext


310 INIT OUT,0:END

; --------------------------------------------------------
;			Blinkende Anzeige
; --------------------------------------------------------
; U ist ein Grenzwert, der die Laufzeit bestimmt
700 U=90:B=0
710 CUR2,0:?$(0),			; Zeile lschen
740   CUR 2,6: IF U>0 THEN P. "STARTPOS", ELSE P. "        ",
750   B=B+1
785   IF B<ABS(U) THEN 750		; Schleife Tastenabfrage
795 B=0:U=-U:GOTO 740			; Schleife blinken
797 RETURN
; --------------------------------------------------------
; 	 		Wartezeit 	
; --------------------------------------------------------
800 FOR K=0 TO 1000:NEXT
810 RETURN
; --------------------------------------------------------
;			Blinkende Anzeige
; --------------------------------------------------------
; TL	= Textlnge
; zuerst die Textlnge feststellen
900 I=0				; Zhler init und starten
910 CC=20					; Anzahl Character/Zeile
920 DO				
930   I=I+1					; beginnt bei 1, 
940   IF ASC($(2),I)=0 THEN TL=-1	; endet bei I-1
950 WHILE TL=0
960 TL=I-2
970 ZEIT=150				; Laufgeschwindigkeit
' --- Ausgabe der SMS als Laufschrift ---
980  IF TL<=0 THEN TL=0 : RETURN	; SMS ohne Text oder Fehlerfaft
990  CUR 1,0 : IF TL>CC THEN 1020	; 20 Zeichen/Zeile
1000  P. "                ", : CUR 1,0	; Zeile loeschen
1010   P. $(2),:RETURN 		; weniger 16 Zeichen

1020  FOR I=1 TO CC : CUR 1,CC-I  ; Meldungsanfang einscrollen
1030    FOR D=1 TO I : P. CHR(ASC($(2),D)), : NEXT D
1040	FOR K=0 TO ZEIT:NEXT					; warten
1050  NEXT I

1060  FOR I=1 TO TL-CC : CUR 1,0 ; weiterscrollen
1070    FOR D=1 TO CC : P. CHR(ASC($(2),D+I)), : NEXT D
1080	FOR K=0 TO ZEIT:NEXT	; warten
1090  NEXT I
1100  RETURN


