PROGRAM TST100 C C This program is of use in testing the "VT" calls manually: C a) to check the exact behaviour of the VT100 C b) to check that a function added to VT.MAC is C generating the correct escape sequences. C It accepts as input single characters - see the last page C of the file VT.TXT for a sorted list of their functions. C The backspacing at labels 30 & 60 is necessary to ensure that C the cursor is at the correct position. C IMPLICIT INTEGER (A-Z) DATA A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z/ 1 65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84, 2 85,86,87,88,89,90/ CALL IPOKE("44,"40000.OR.IPEEK("44)) ! Enable lower case output CALL ANSI 1 CALL SAVCUR CALL CUP(1,1) CALL CLRLIN CALL IPOKE("44,"167777.AND.IPEEK("44)) ! Unset terminal special mode TYPE 100 100 FORMAT('+O.K. INPUT LINE,COL '$) ACCEPT *,LINE,COL CALL IPOKE("44,"10000.OR.IPEEK("44)) ! Set terminal special mode CALL RESCUR 10 INPUT=ITTINR() IF(INPUT.LT. 0) GOTO 10 ! Go back for input if none typed IF(INPUT.LE.32) GOTO 35 ! Don't echo control characters 20 IF(ITTOUR(INPUT).NE.0) GOTO 20 ! Echo the character 30 IF(ITTOUR( 8).NE.0) GOTO 30 ! Backspace over the echo 35 CALL ISLEEP(0,0,0,8) ! Wait 8 ticks IF(INPUT.EQ.1) GOTO 1 ! Ctrl A for new "LINE,COL" values IF(INPUT.EQ.4) GOTO 50 ! Ctrl D to reset VT100 and stop IF(INPUT.EQ.7) GOTO 11 ! Ctrl G for new "MODE" value IF(INPUT.EQ.A) CALL SAVCUR IF(INPUT.EQ.B) CALL RESCUR IF(INPUT.EQ.C) CALL KPAM IF(INPUT.EQ.D) CALL KPNM IF(INPUT.EQ.E) CALL RIS IF(INPUT.EQ.F) CALL RI IF(INPUT.EQ.G) CALL ALIGND IF(INPUT.EQ.H) CALL BIGTOP IF(INPUT.EQ.I) CALL BIGBOT IF(INPUT.EQ.J) CALL DWL IF(INPUT.EQ.K) CALL SWL IF(INPUT.EQ.L) CALL SGS IF(INPUT.EQ.M) CALL DGS IF(INPUT.EQ.N) CALL CLRALL IF(INPUT.EQ.O) CALL CLRTOP IF(INPUT.EQ.P) CALL CLRBOT IF(INPUT.EQ.Q) CALL LL (MODE) IF(INPUT.EQ.R) CALL CLRLIN IF(INPUT.EQ.S) CALL CLRBEG IF(INPUT.EQ.T) CALL CLREND IF(INPUT.EQ.U) CALL NEGVID IF(INPUT.EQ.V) CALL POSVID IF(INPUT.EQ.W) CALL SM (MODE) IF(INPUT.EQ.X) CALL RM (MODE) IF(INPUT.EQ.Y) CALL CUP (LINE,COL) IF(INPUT.EQ.Z) CALL STBM(LINE,COL) IF(INPUT.EQ.91) CALL NEL ! [ has Ascii value 91 IF(INPUT.EQ.92) CALL IND ! \ has Ascii value 92 IF(INPUT.EQ.49) CALL CUU(MODE) ! 1 has Ascii value 49 IF(INPUT.EQ.50) CALL CUD(MODE) ! 2 has Ascii value 50 IF(INPUT.EQ.51) CALL CUF(MODE) ! 3 has Ascii value 51 IF(INPUT.EQ.52) CALL CUB(MODE) ! 4 has Ascii value 52 IF(INPUT.EQ.53) CALL ANSI ! 5 has Ascii value 53 IF(INPUT.EQ.54) CALL CRLF ! 6 has Ascii value 54 C The following statement echoes the input character in lower case, C if it is a letter; consult a table of Ascii codes to see how C non-alphabetic characters should echo 40 IF(ITTOUR(INPUT+32).NE.0) GOTO 40 60 IF(ITTOUR( 8).NE.0) GOTO 60 ! Backspace over echo GOTO 10 11 CALL SAVCUR CALL CUP(1,1) CALL CLRLIN CALL IPOKE("44,"167777.AND.IPEEK("44)) TYPE 110 110 FORMAT('+O.K. INPUT MODE '$) ACCEPT *,MODE CALL IPOKE("44,"10000.OR.IPEEK("44)) CALL RESCUR GOTO 10 50 CALL RIS CALL EXIT END