# # VT100 VIDEO DISPLAY COMMAND PROGRAM. CALLING SEQUENCE IS # CALL UVT100(CMD,N1,N2), WHERE CMD IS ONE OF THE COMMANDS IN # THE PARAMETER LIST BELOW, AND N1 AND N2 ARE OPTIONAL PARAMETERS # DEPENDING UPON CMD. SEE THE UVT100 USER'S MANUAL FOR MORE DETAILS. # # AUTHOR: GLEN HOFFING # DATE: 24-FEB-81 # SUBROUTINE UVT100(CMD,N1,N2) IMPLICIT INTEGER (A-Z) DIMENSION PRL(6) PARAMETER CUP = 1, #CURSOR POSITION REPORT CUU = 2, #CURSOR UP CUD = 3, #CURSOR DOWN CUF = 4, #CURSOR FORWARD CUB = 5, #CURSOR BACK DECDWL = 6, #DOUBLE WIDTH LINE DECDHL = 7, #DOUBLE HEIGHT LINE DECRC = 8, #RESTORE CURSOR DECSC = 9, #SAVE CURSOR DECSWL = 10, #SINGLE HEIGHT, SINGLE WIDTH LINE ED = 11, #ERASE IN DISPLAY EL = 12, #ERASE IN LINE SGR = 13, #SELECT GRAPHIC RENDITION NEL = 14, #NEXT LINE SCS = 15, #SELECT CHARACTER SET SM = 16, #SET MODE RM = 17, #RESET MODE ANSI = 18 #SET TERMINAL TO VT100 MODE (VT52 CMD) BYTE OUTBUF(10) OUTBUF(1) = 27 #SET FIRST CHARACTER TO 'ESCAPE' CODE DO I = 2,10 OUTBUF(I) = 0 IF (CMD == CUP) [ #CURSOR POSITION OUTBUF(3) = "[" IF (N1 > 0 .AND. N1 < 25) ENCODE(2,10,OUTBUF(4)) N1 #...ROW N1 OUTBUF(6) = ";" IF (N2 > 0 .AND. N2 < 81) ENCODE(2,10,OUTBUF(7)) N2 #...COLUMN N2 OUTBUF(9) = "H" ] ELSE IF (CMD == CUB) [ #CURSOR BACK OUTBUF(3) = "[" IF (N1 > 0 .AND. N1 < 81) ENCODE(2,10,OUTBUF(4)) N1 #...N1 COLUMNS OUTBUF(6) = "D" ] ELSE IF (CMD == CUD) [ #CURSOR DOWN OUTBUF(3) = "[" IF (N1 > 0 .AND. N1 <25) ENCODE(2,10,OUTBUF(4)) N1 #...N1 ROWS OUTBUF(6) = "B" ] ELSE IF (CMD == CUF) [ #CURSOR FORWARD OUTBUF(3) = "[" IF (N1 > 0 .AND. N1 < 81) ENCODE(2,10,OUTBUF(4)) N1 #...N1 COLUMNS OUTBUF(6) = "C" ] ELSE IF (CMD == CUU) [ #CURSOR UP OUTBUF(3) = "[" IF (N1 > 0 .AND. N1 < 25) ENCODE(2,10,OUTBUF(4)) N1 #...N1 ROWS OUTBUF(6) = "A" ] ELSE IF (CMD == DECDHL) [ #DOUBLE-HEIGHT LINE OUTBUF(3) = "#" IF (N1 == 1) OUTBUF(4) = "4" #...BOTTOM HALF ELSE OUTBUF(4) = "3" #...TOP HALF ] ELSE IF (CMD == DECDWL) [ #DOUBLE-WIDTH LINE OUTBUF(3) = "#" OUTBUF(4) = "6" ] ELSE IF (CMD == DECRC) #RESTORE CURSOR OUTBUF(3) = "8" ELSE IF (CMD == DECSC) #SAVE CURSOR OUTBUF(3) = "7" ELSE IF (CMD == DECSWL) [ #SINGLE-WIDTH,SINGLE-HEIGHT LINE OUTBUF(3) = "#" OUTBUF(4) = "5" ] ELSE IF (CMD == ED) [ #ERASE DISPLAY OUTBUF(3) = "[" IF (N1 == 0) #...CURSOR POSITION TO END OF SCREEN OUTBUF(4) = "0" ELSE IF (N1 == 1) #...START OF SCREEN TO CURSOR POSITION OUTBUF(4) = "1" ELSE OUTBUF(4) = "2" #...ENTIRE SCREEN OUTBUF(5) = "J" ] ELSE IF (CMD == EL) [ #ERASE LINE OUTBUF(3) = "[" IF (N1 == 0) #...CURSOR POSITION TO END OF LINE OUTBUF(4) = "0" ELSE IF (N1 == 2) #...ENTIRE LINE OUTBUF(4) = "2" ELSE #...START OF LINE TO CURSOR POSITION OUTBUF(4) = "1" OUTBUF(5) = "K" ] ELSE IF (CMD == SGR) [ #SELECT GRAPHIC RENDITION OUTBUF(3) = "[" IF (N1 == 7) #...REVERSE FIELD ON OUTBUF(4) = "7" ELSE OUTBUF(4) = "0" #...REVERSE FIELD OFF OUTBUF(5) = "m" OUTBUF(6) = 8 ] ELSE IF (CMD == NEL) #CURSOR TO NEW LINE OUTBUF(3) = "E" ELSE IF (CMD == SCS) [ #SELECT CHARACTER SET IF (N1 == 0) #...G0 CHARACTER SET OUTBUF(3) = "(" ELSE #...G1 CHARACTER SET OUTBUF(3) = ")" IF (N2 == 0) #...UNITED KINGDOM CHARACTER SET OUTBUF(4) = "A" ELSE IF (N2 == 1) #...ASCII CHARACTER SET OUTBUF(4) = "B" ELSE #...SPECIAL GRAPHICS SET OUTBUF(4) = "0" ] ELSE IF (CMD == SM) [ #SET MODE OUTBUF(3) = "[" OUTBUF(4) = "?" IF (N1 > 0 .AND. N1 < 10) #...MODE TO SET ENCODE(1,5,OUTBUF(5)) N1 OUTBUF(6) = "h" ] ELSE IF (CMD == RM) [ #RESET MODE OUTBUF(3) = "[" OUTBUF(4) = "?" IF (N1 > 0 .AND. N1 < 10) #...MODE TO RESET ENCODE(1,5,OUTBUF(5)) N1 OUTBUF(6) = "l" ] ELSE IF (CMD == ANSI) #ANSI MODE OUTBUF(3) = "<" DO I = 1,10 #CONVERT ANY BLANKS TO ZEROES IF (OUTBUF(I) == " ") OUTBUF(I) = 0 CALL GETADR(PRL,OUTBUF) PRL(2) = 10 CALL WTQIO(4608,5,20,,,PRL) 5 FORMAT (I1) 10 FORMAT (I2) RETURN END