SUBROUTINE CURSOR(IFNCT,IX,IY,KOUNT,ISTRNG) C** CURSOR CONTROL ROUTINE FOR DEC VT52 + VT55 C** THE USE OF THIS ROUTINE REQUIRES THE SCREEN TO BE OPENED C** WITH NO CARRIAGE CONTROL FOR PROPER TRANSMITION OF C** OF CONTROL CHARACTERS. AN EXAMPLE FOLLOWS: C** OPEN(UNIT=5,NAME='TO:',CARRIAGECONTROL='NONE') BYTE XCOR,YCOR BYTE ESC,AFUNCT(25) BYTE ISTRNG(1) DATA ESC/"033/ C** ARGUEMENTS : C** IFUNCT = 1 LINE FEED 12 ERASE TO END OF LINE C** 2 CURSOR DOWN 13 ERASE TO END OF SCREEN C** 3 REVERSE LINE FEED 14 RING BELL C** 4 CURSOR UP 15 IDENTIFY TERMINAL TYPE C** 5 SPACE 16 ENTER HOLD SCREEN MODE C** 6 CURSOR RIGHT 17 EXIT HOLD SCREEN MODE C** 7 BACKSPACE (CURSOR LEFT) 18 ENTER ALT. KEYPAD MODE C** 8 CARRIAGE RETURN 19 EXIT ALT. KEYPAD MODE C** 9 CURSOR HOME 20 ENTER GRAPHICS MODE C** 10 TAB 21 EXIT GRAPHICS MODE (ALPHANUMERIC) C** 11 DIRECT CURSOR ADDRESSING FROM UPPER LEFT AS (1,1) C** 22 DIRECT CURSOR ADDRESSING FROM LOWER LEFT AS (0,0) DATA AFUNCT/"012,"102,"111,"101,"040, * "103,"010,"015,"110,"011, * "131,"113,"112,"007,"132, * "133,"134,"075,"076,"061, * "062,"131,3*0/ C** IX + IY ARE INTEGER X AND Y COORDINATES C** KOUNT IS THE INTEGER NUMBER OF CHARACTERS TO PRINT AT X,Y C* ISTRNG IS THE INTEGER ARRAY CONTAINING THE CHARACTERS TO ANNOTATE C******************************************************************** IFUNCT = IFNCT IF(IFUNCT .EQ. 1)GO TO 500 IF(IFUNCT .EQ. 5)GO TO 500 IF(IFUNCT .EQ. 7)GO TO 500 IF(IFUNCT .EQ. 8)GO TO 500 IF(IFUNCT .EQ. 10)GO TO 500 IF(IFUNCT .EQ. 14)GO TO 500 IF(IFUNCT .EQ. 12)IFUNCT = 11 IF(IFUNCT .EQ. 11)GO TO 600 IF(IFUNCT .EQ. 22)GO TO 700 IF(IFUNCT .GT. 22)GO TO 900 20 TYPE 1001,ESC,AFUNCT(IFUNCT) 1001 FORMAT(2A1) GO TO 800 500 TYPE 1002,AFUNCT(IFUNCT) 1002 FORMAT(A1) GO TO 800 600 XCOR = "037 + IX YCOR = "037 + IY TYPE 1004,ESC,AFUNCT(IFUNCT),YCOR,XCOR 1004 FORMAT(4A1) IFUNCT = IFNCT IF(IFUNCT .EQ. 12)GO TO 20 GO TO 800 700 XCOR = "040 + IX YCOR = "067 - IY TYPE 1004,ESC,AFUNCT(11),YCOR,XCOR GO TO 800 900 TYPE 1005 1005 FORMAT(' *** CURSOR CONTROL ERROR ***') GO TO 999 800 IF(KOUNT .EQ. 0)GO TO 999 TYPE 1006,(ISTRNG(I),I=1,KOUNT) 1006 FORMAT(80A1) 999 RETURN END