File: FIPLOT.FT of Tape: Various/System-Tapes/eb-plot
(Source file text)
SUBROUTINE FIPLOT (ICOM,ARG1,ARG2,IARG3,IARG4) C ----------------- C C GENERATE DEVICE INDEPENDENT PLOT FILE C DIMENSION ARG1(1) , ARG2(1) , IARG4(1) C LOGICAL SIZOUT COMMON /FIBUFF/ XCUR , YCUR , IXCUR , IYCUR , STEPS , + CHRH , CHRW , CHRCOS, CHRSIN, SIZOUT , + CHRDX, CHRDY, ICHRDX, ICHRDY, IFONT , + IPL , IBUF C----------------------------------------------------------------------- C DISPATCH C C MOVE IF (ICOM .EQ. 16) GOTO 160 C CHAR STRING PLOT IF (ICOM .EQ. 5) GOTO 50 C CHAR SIZE IF (ICOM .EQ. 6) GOTO 60 C CHAR ROTATION IF (ICOM .EQ. 51) GOTO 510 C INIT IF (ICOM .EQ. -1) GOTO 5 C C SEND COMMAND BYTE AS IS C CALL FIBYTE (ICOM+32) C C CHAR FONT IF (ICOM .EQ. 52) GOTO 520 C NEW PEN (IMPLICIT PEN UP) IF (ICOM .EQ. 4) GOTO 40 C DEFINE DASH PATTERN IF (ICOM .EQ. 13) GOTO 130 C NEW PICTURE IF (ICOM .EQ. 53) GOTO 530 C END OF PLOT IF (ICOM .EQ. 15) GOTO 150 C ALL OTHERS ARE ONE BYTE COMMANDS WITHOUT BOOKEEPING RETURN C----------------------------------------------------------------------- C INIT C ---- 5 IPL = IARG3 STEPS = ARG1(1) IBUF = 0 C C SET DEFAULTS C 6 XCUR = 0. YCUR = 0. IXCUR = 0 IYCUR = 0 CHRH = 0. CHRW = 0. CHRCOS = 1. CHRSIN = 0. SIZOUT = .FALSE. RETURN C----------------------------------------------------------------------- C NEW PEN C ------- 40 CALL FIBYTE (IARG3+32) RETURN C----------------------------------------------------------------------- C SYMBOL STRING C ------------- 50 IF (SIZOUT) GOTO 51 C C SEND SYMBOL SCALING INFORMATION C TEMP = STEPS*CHRW CHRDX = CHRCOS*TEMP ICHRDX = CHRDX CHRDY = CHRSIN*TEMP ICHRDY = CHRDY CALL FIBYTE (38) CALL FIDELT (ICHRDX,ICHRDY) TEMP = STEPS * CHRH IDX =-CHRSIN * TEMP IDY = CHRCOS * TEMP CALL FIDELT (IDX,IDY) SIZOUT = .TRUE. C 51 NCHAR = IARG3 IF (IFONT) 999,57,52 C C SEND SYMBOLS FONT 1-3,11,12 C 52 CALL FIBYTE (37) CALL FIBYTE (NCHAR+32) DO 54 I = 1,NCHAR 54 CALL FIBYTE (IARG4(I)) GOTO 59 C C SEND SYMBOLS FONT 0 C 57 CALL FIBYTE (86) CALL FIBYTE (NCHAR+32) DO 58 I = 1,NCHAR K = IARG4(I) L = K/16 CALL FIBYTE (L + 32) 58 CALL FIBYTE (K - L*16 + 32) C C UPDATE CURRENT POSITION C 59 IF (IFONT .EQ. 3) RETURN IXCUR = IXCUR + NCHAR*ICHRDX IYCUR = IYCUR + NCHAR*ICHRDY XCUR = XCUR + NCHAR*CHRDX YCUR = YCUR + NCHAR*CHRDY RETURN C----------------------------------------------------------------------- C SYMBOL SIZE DEFINITION C ---------------------- 60 CHRW = ARG1(1) CHRH = ARG2(1) SIZOUT = .FALSE. RETURN C----------------------------------------------------------------------- C DASH PATTERN DEFINITION C ----------------------- 130 I = IARG4(1) CALL FIBYTE (I+32) L = IARG3 CALL FIBYTE (L+32) DO 133 I = 1,L IDX = ARG1(I) * STEPS IDY = ARG2(I) * STEPS 133 CALL FIDELT (IDX,IDY) RETURN C----------------------------------------------------------------------- C END OF PLOT (FLUSH BUFFER , DISABLE PLOT ROUTINES) C ----------- 150 CALL FIBYTE (0) IPL = -1 RETURN C----------------------------------------------------------------------- C MOVE C ---- 160 DX = ARG1(1)*STEPS DY = ARG2(1)*STEPS XCUR = XCUR + DX YCUR = YCUR + DY 161 IDX = XCUR - IXCUR IDY = YCUR - IYCUR IXCUR = IXCUR + IDX IYCUR = IYCUR + IDY CALL FIDELT (IDX,IDY) RETURN C----------------------------------------------------------------------- C SYMBOL ANGLE DEFINITION C ----------------------- 510 CHRCOS = ARG1(1) CHRSIN = ARG2(1) SIZOUT = .FALSE. RETURN C----------------------------------------------------------------------- C SYMBOL FONT DEFINITION C ----------------------- 520 IFONT = IARG3 CALL FIBYTE (IFONT+32) RETURN C----------------------------------------------------------------------- C START OF NEW PICTURE C -------------------- 530 IDX = ARG1(1) * STEPS IDY = ARG2(1) * STEPS CALL FIDELT (IDX,IDY) GOTO 6 C----------------------------------------------------------------------- C ILLEGAL ARGS C ------------ 999 PAUSE 2 RETURN END