C C=========================================================================== C C Graphics driver for DEC GIGI terminal C C 8.35" x 6.45" (768 x 480) C C============================================================================ C JDEV = JDEV - 1 IF (JDEV .NE. 0) GOTO 5999 C 5000 IF ((IMODE .LT. -5) .OR. (IMODE .GT. 6)) RETURN GOTO (5001,5005,5010,90,90,5020,5030,5040,5030,5070,5080,5200), 1 IMODE+6 C C mode -5: tell them we exist C 5001 X = 1.0 GOTO 90 C C mode -4: initialize C 5005 CALL GTATT(LUNGRP) ! attach the device CALL GT(ESCAPE) ! make sure we're in ANSI mode CALL GT('<') CALL GT(ESCAPE) ! set several graphics defaults CALL GT('Pp;S(I0N0A)W(VI4A0S0M1N0P1)P[0,0];') CALL GTF ! flush the buffer NIBS = 1 LINPAT = -1 GOTO 90 C C mode -3: return screen size C 5010 X = 8.35 Y = 6.45 GOTO 90 C C mode 0: clear screen C 5020 CALL GT('S(E);') ! clear the screen CALL GTF GOTO 90 C C mode 1,3: unwritten vector, point plot C 5030 CALL GT('P[') GOTO 5050 C C mode 2: written vector C 5040 CALL GT('V[') C C modes 1,2,3: ship out the X,Y coordinates C 5050 IX = MIN1(767.,AMAX1(0.,91.9760*XT+0.5)) IY = 479 - MIN1(479.,AMAX1(0.,74.4186*YT+0.5)) ENCODE(7,5060,BUFFER) IX, IY 5060 FORMAT (I3,',',I3) CALL GT(BUFFER,7) CALL GT(']') IF (IMODE .EQ. 3) CALL GT('V[];') ! point plot GOTO 90 C C mode 4: finish the plot C 5070 CALL GT('P[0,0]') ! get to the top left corner CALL GT(ESCAPE) ! CALL GT('\') ! return to alpha mode CALL GT(ESCAPE) ! make sure we're home CALL GT('[H') CALL GTF ! flush the buffer CALL GTATT(-LUNGRP) ! deattach the device CALL CLOSE(LUNGRP) GOTO 90 C C mode 5: nibs (X; intensity) and line pattern (Y; as is) C 5080 IY = IFIX(Y) .AND. "377 ! 8 bits only for GIGI lines ... IF (IY .LE. 0) IY = "377 IF (LINPAT .EQ. IY) GOTO 5110 LINPAT = IY IF (LINPAT .NE. "377) GOTO 5085 ! check for -1: solid line CALL GT(';W(P1);') ! set lines of all ones GOTO 5110 5085 CALL GT(';W(P') ! GIGI 'writing pattern' C DO 5100 I=7,0,-1 IX = 2**I IF (IX .GT. LINPAT) GOTO 5090 CALL GT('1') ! set this bit on LINPAT = LINPAT - IX GOTO 5100 5090 CALL GT('0') ! set this bit off 5100 CONTINUE CALL GT(');') LINPAT = IY ! restore the line pattern C intensity 5110 IX = X IF (IX .EQ. NIBS) GOTO 5120 NIBS = IX IF (NIBS .LE. 1) CALL GT(';W(I4);') ! half intensity for NIBS = 1 IF (NIBS .GT. 1) CALL GT(';W(I7);') ! full intensity for NIBS > 1 5120 GOTO 90 C C mode 6: identify ourself C 5200 WRITE (LUN,5210) 5210 FORMAT('+ DEC GIGI graphics terminal') GOTO 90 C C continue on to the next device C 5999 CONTINUE