CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC SUBROUTINE UVT100(COMMND,N1,N2) CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C INCLUDE 'SY:ENTRY.CMN' BYTE OUTBUF(10) C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C CALL DSASTR C OUTBUF(1) = 27 DO 2 I = 2,10 OUTBUF(I) = 0 2 CONTINUE C C CCC CURSOR POSITION: 101 IF (COMMND .NE. CUP) GOTO 102 OUTBUF(2) = '[' ENCODE(2,10,OUTBUF(3)) N1 OUTBUF(5) = ';' ENCODE(2,10,OUTBUF(6)) N2 OUTBUF(8) = 'H' LENGTH = 8 GOTO 1000 C CCC CURSOR UP 102 IF (COMMND.NE.CUU) GOTO 103 OUTBUF(2) = '[' N1 = N1-1 IF (N1.LT.1) N1 = 23 ENCODE(2,10,OUTBUF(3)) N1 OUTBUF(5) = ';' ENCODE(2,10,OUTBUF(6)) N2 OUTBUF(8) = 'H' LENGTH = 8 GOTO 1000 C CCC CURSOR DOWN 103 IF (COMMND.NE.CUD) GOTO 104 OUTBUF(2) = '[' N1 = N1+1 IF (N1.GT.23) N1 = 1 ENCODE(2,10,OUTBUF(3)) N1 OUTBUF(5) = ';' ENCODE(2,10,OUTBUF(6)) N2 OUTBUF(8) = 'H' LENGTH = 8 GOTO 1000 C CCC CURSOR FORWARD 104 IF (COMMND.NE.CUF) GOTO 105 OUTBUF(2) = '[' N2 = N2+1 IF (N2.GT.80) N2 = 2 ENCODE(2,10,OUTBUF(3)) N1 OUTBUF(5) = ';' ENCODE(2,10,OUTBUF(6)) N2 OUTBUF(8) = 'H' LENGTH = 8 GOTO 1000 C CCC CURSOR BACKWARDS 105 IF (COMMND.NE.CUB) GOTO 106 OUTBUF(2) = '[' N2 = N2-1 IF (N2.LT.2) N2 = 80 ENCODE(2,10,OUTBUF(3)) N1 OUTBUF(5) = ';' ENCODE(2,10,OUTBUF(6)) N2 OUTBUF(8) = 'H' LENGTH = 8 GOTO 1000 C CCC SELECT GRAPHIC RENDITION 106 IF (COMMND.NE.SCA) GOTO 107 OUTBUF(2) = '[' IF (N1.GE.0 .AND. N1.LE.7) ENCODE(1,5,OUTBUF(3)) N1 OUTBUF(4) = 'm' LENGTH = 4 GOTO 1000 C CCC SELECT CHARACTER SET 107 IF (COMMND.NE.SCS) GOTO 108 OUTBUF(2) = ')' IF (N1.EQ.0) OUTBUF(2) = '(' OUTBUF(3) = '0' IF (N2.EQ.0) OUTBUF(3) = 'A' IF (N2.EQ.1) OUTBUF(3) = 'B' LENGTH = 5 GOTO 1000 C CCC SET MODE 108 IF (COMMND.NE.SM) GOTO 109 OUTBUF(2) = '[' OUTBUF(3) = '?' IF (N1.GE.1 .AND. N1.LE.9) ENCODE(1,5,OUTBUF(4)) N1 OUTBUF(5) = 'h' LENGTH = 5 GOTO 1000 C CCC ERASE IN SCREEN 109 IF (COMMND.NE.ED) GOTO 114 OUTBUF(2) = '[' IF (N1.EQ.0) THEN OUTBUF(3) = '0' ELSE IF (N1.EQ.1) THEN OUTBUF(3) = '1' ELSE IF (N1.EQ.2) THEN OUTBUF(3) = '2' ELSE RETURN END IF OUTBUF(4) = 'J' LENGTH = 4 GOTO 1000 C CCC ERASE IN LINE 114 IF (COMMND.NE.EL) GOTO 110 OUTBUF(2) = '[' IF (N1.EQ.0) THEN OUTBUF(3) = '0' ELSE IF (N1.EQ.1) THEN OUTBUF(3) = '1' ELSE IF (N1.EQ.2) THEN OUTBUF(3) = '2' ELSE RETURN END IF OUTBUF(4) = 'K' LENGTH = 4 GOTO 1000 C CCC RESET MODE 110 IF (COMMND.NE.RM) GOTO 111 OUTBUF(2) = '[' OUTBUF(3) = '?' IF (N1.GE.1 .AND. N1.LE.9) ENCODE(1,5,OUTBUF(4)) N1 OUTBUF(5) = 'l' LENGTH = 5 GOTO 1000 C CCC ANSI MODE 111 IF (COMMND.NE.ANSI) GOTO 1121 OUTBUF(2) = '<' LENGTH = 2 GOTO 1000 C CCC SET KEYPAD MODE - 1=ENTER ALTERNATE KEYPAD MODE, ELSE EXIT MODE 1121 IF (COMMND.NE.KEYPAD) GOTO 112 IF (N1.EQ.1) THEN OUTBUF(2) = '=' ELSE OUTBUF(2) = '>' END IF LENGTH = 2 GOTO 1000 C CCC SET SCROLLING REGION 112 IF (COMMND.NE.SCROLL) GOTO 113 OUTBUF(2) = '[' ENCODE(2,10,OUTBUF(3)) N1 OUTBUF(5) = ';' ENCODE(2,10,OUTBUF(6)) N2 OUTBUF(8) = 'r' LENGTH = 8 GOTO 1000 C CCC RING BELL OR RETURN 113 IF (COMMND.NE.BEL) RETURN CALL GETADR(PRL,BELL) PRL(2) = 1 CALL WTQIO(IOWVB,4,2,,,PRL) RETURN C 1000 DO 1005 I = 1, LENGTH IF (OUTBUF(I).EQ.' ') OUTBUF(I) = '0' 1005 CONTINUE C CALL GETADR(PRL, OUTBUF) PRL(2) = LENGTH CALL WTQIO(IOWVB,4,20,,,PRL) 5 FORMAT(I1) 10 FORMAT(I2) RETURN END