C C============================================================================= C C MPASGD - ASSIGN MULPLT GRAPHICS DEVICE C C ALL DEVICE SPECS. ARE STORED IN /GRPHDV/ COMMON AS ASCIZ STRINGS. C C============================================================================= C BYTE DEFGDN(6),DEFGD0(32) DATA DEFGDN/'G','D','1',':',0,0/ DATA DEFGD0/'S','Y','0',':','V','E','C','T','O','R', 1 '.','B','I','N',';','1',16*0/ C SET SOME DEFAULTS FOR STARTUP C JDEV = IDEV ! remember who we are talking to IDEV=-1 ICMD=1 !ASSUME IT WILL BE A DISPLAY COMMAND IF(LSTRN0.LE.0)GO TO 40 ! yup - display all (it may be a G? command) C C NON-NULL LINE, LOOK FOR FIRST NON-BLANK CHARACTER C 10 DO 12 I=1,LSTRN0 IF (STRNG0(I) .NE. "40) GO TO 20 12 CONTINUE GO TO 40 !GARBAGE LINE => NULL LINE C C NOW SCAN FOR "=" FOR ASSIGNMENT C 20 DO 22 J=I,LSTRN0 IF (STRNG0(J) .EQ. "75) GO TO 30 22 CONTINUE C C IF HERE, DEVICE # SPANS FROM I TO J; DEVICE SPEC STARTS AT J+1 C 30 K=J-I IF (K .LE.0 ) GO TO 35 DECODE(K,33,STRNG0(I),ERR=990)IDEV 33 FORMAT(I5) IF (IDEV. LT. 0 .OR. IDEV .GT. MAXGD) GO TO 990 35 IF (J .LE. LSTRN0) ICMD=2 !RESET COMMAND TO ASSIGNMENT IF SAW "=" K=LSTRN0-J IF (K .LE. 0) GO TO 40 IF (IDEV .EQ. 0) GOTO 38 IF (K .GT. 5) GO TO 994 !TRAP BAD DEVICE SPECS DO 37 I=J+1,LSTRN0 IF (STRNG0(I) .NE. "72) GO TO 37 STRNG0(I+1)=0 !FORCE NULL AFTER ":" GO TO 40 37 CONTINUE IF (IDEV .GT. 0) GOTO 994 38 STRNG0(LSTRN0+1) = 0 C C DISPATCH COMMAND C 40 GO TO (100,200),ICMD GOTO 2000 C C DISPLAY CURRENT ASSIGNMENTS C 100 IFIRST = 0 ILAST = MAXGD IF (IDEV .LT. 0) GOTO 105 IFIRST = IDEV ILAST = IDEV C 105 DO 150 IDEV=IFIRST,ILAST IF (IDEV .GT. 0) GOTO 125 DO 110 K=1,32 IF (GDDEV0(K) .EQ. 0) GOTO 111 110 CONTINUE 111 K = K - 1 WRITE (LUNTI,115) IDEV,(GDDEV0(L),L=1,K) 115 FORMAT(' Grpahics Device ',I2,' => ',32A1) GOTO 150 C 125 CALL VECTOR(X,Y,-5) ! ask vector if this device exists IF (X .LE. 0) GOTO 150 ! no device here ... DO 129 K=1,6 IF (GDDEVN(K,IDEV) .EQ. 0) GO TO 130 !FIND TRAILING NULL 129 CONTINUE 130 K=K-1 C WRITE (LUNTI,140) IDEV,(GDDEVN(L,IDEV),L=1,K) 140 FORMAT('$Graphics Device ',I2,' => ',6A1) CALL VECTOR(FLOAT(LUNTI),0.,6) ! tell us the type of device 150 CONTINUE GOTO 2000 C C (RE)ASSIGN RSX DEVICE TO GRAPHICS DEVICE C DEVICE SPEC STARTS @ J+1, WITH LENGTH OF K CHARACTERS C 200 IF (IDEV .LT. 0 .AND. K .GT. 0) GOTO 998 ! trap "=DDnn:" IFIRST = 0 ! assume we work on all devices ILAST = MAXGD IF (IDEV .LT. 0) GOTO 205 IFIRST = IDEV ILAST = IDEV C 205 IF (K .LE. 0) GO TO 250 !BRANCH IF SETTING DEFAULTS IF (IDEV .EQ. 0) GOTO 210 DO 208 L=1,6 GDDEVN(L,IDEV) = STRNG0(J+L) 208 CONTINUE GOTO 2000 C 210 DO 220 L=1,32 GDDEV0(L) = STRNG0(J+L) 220 CONTINUE GOTO 2000 C C set the defaults (GTidev:) C 250 DO 300 IDEV=IFIRST,ILAST IF (IDEV .EQ. 0) GOTO 280 C DO 270 L = 1,6 GDDEVN(L,IDEV) = DEFGDN(L) 270 CONTINUE GDDEVN(3,IDEV) = "60+IDEV ! ASCII for IDEV GOTO 300 C 280 DO 290 L=1,32 GDDEV0(L) = DEFGD0(L) 290 CONTINUE 300 CONTINUE GOTO 2000 C C ERROR MESSAGES C 990 WRITE(LUNTI,991) 991 FORMAT('0MPASGD: Invalid graphics device') GO TO 1000 994 WRITE(LUNTI,995) 995 FORMAT('0MPASGD: Invalid RSX device specification') GO TO 1000 998 WRITE(LUNTI,999) 999 FORMAT('0MPASGD: Illegal command') 1000 WRITE(LUNTI,1001)(STRNG0(I),I=1,LSTRN0) 1001 FORMAT(' ?-> ',82A1) 2000 IDEV = JDEV RETURN END