SUBROUTINE INITIALIZE C ===================== C C PURPOSE - INITIALIZATION OF PLOTTER FUNCTIONS C - INITIALIZATION OF COMMON BLOCK /HPPLOT/ C - ASSIGN LUN 1 TO PLOTTER (TT6) C - IF PLOTTER IN USE C THEN STOP WITH ERROR MESSAGE C ELSE ATTACH PLOTTER C C---------------------------------------------------------------------- C SPECIFICATIONS C---------------------------------------------------------------------- IMPLICIT REAL(A-M,O-Y), LOGICAL*1(Z), INTEGER(N) INTEGER MAX0, MIN0, IFIX, MOD DIMENSION ZBUF(500), Z03(2), XA(1), YA(1), 1 NDPB(6), NSTAT(2) EQUIVALENCE (NWORD,ZBYTE) COMMON /HPPLOT/ NSIZE, ZBUF, OFFX, OFFY, SIZEX, SIZEY, 1 ORGX, ORGY, SCALEX, SCALEY, NMINX, NMAXX, 1 NMINY, NMAXY, NZEROX, NZEROY, NLINEN, 1 NSYMN, NPENN, ANGLEN, SLANTN, NHIGHN, NWIDEN, 1 NMAXNX, NMAXNY, N1000, INC, Z0F, Z0E, Z03, 1 ZDOWN, ZLIFT, RZEROX, RZEROY ZPAGE = .TRUE. 1 CALL ASNLUN(1,'TT',6) ! ASSIGN LUN, RESERVE PLOTTER CALL WTQIO("1400,1,1,,NSTAT) IF (NSTAT(1).NE.1) STOP '** HP PLOT PKG - PLOTTER IN USE **' INC=254.0 ! SET DEFAULT VALUES IN COMMON NMAXNX=4000 NMAXNY=2850 N1000=1000 Z03(1)="3 Z03(2)='@' Z0E="16 Z0F="17 NSIZE=0 NLINEN=1 NSYMN=0 NPENN=0 ANGLEN=0.0 OFFX=0.6 OFFY=0.3 SIZEX=7.0 SIZEY=10.0 ORGX=3.5 ORGY=5.0 SCALEX=1.0 SCALEY=1.0 NMINX=MAX0(IFIX(OFFX*INC),0) NMINY=MAX0(IFIX(OFFY*INC),0) NMAXX=MIN0(IFIX((OFFX+SIZEX)*INC),NMAXNX) NMAXY=MIN0(IFIX((OFFY+SIZEY)*INC),NMAXNY) RZEROX=(OFFX+ORGX)*INC RZEROY=(OFFY+ORGY)*INC NZEROX=RZEROX NZEROY=RZEROY CALL ASC('v@') ! STORE ALL PENS CALL SBN(0) CALL ASC('~W@') ! SET GRAPH LIMITS CALL MBP(0,0) CALL MBP(16000,11400) CALL ASC('~S@') ! SET GRID SIZE CALL MBP(4000,2850) CALL ASC('~P@') ! SET CHARACTER SETS CALL MBP(0,5) CALL ASC('~Q@') ! SET SOLID LINE DO 2 NI=1,17 ! SET UP MACROS CALL ASC('~*@') CALL SBN(NI) CALL ASC('~''@') NWORD=NI+"100 ZBUF(NSIZE+1)=Z0E ZBUF(NSIZE+2)=ZBYTE ZBUF(NSIZE+3)=Z0F ZBUF(NSIZE+4)=Z03(1) NSIZE=NSIZE+4 CALL ASC('z@') 2 CONTINUE NSIZE=NSIZE+1 ! SET UP HANDSHAKE ZBUF(NSIZE)="33 CALL ASC('.M50;10:@') NSIZE=NSIZE+1 ZBUF(NSIZE)="33 CALL ASC('.H500;13:@') CALL ASC('~#@') ! CLEAR AUTO MACRO CALL HPSEN1 GOTO 1000 ENTRY PAGE C ========== C C PURPOSE - PREPARE PLOTTER FOR PAPER CHANGE C - RESET SOME DEFAULTS C - SEND BUFFER TO PLOTTER C - WAIT FOR OPERATOR TO HIT "CR" ON TERMINAL C---------------------------------------------------------------------- 1000 ZDOWN=.FALSE. ! PEN IS LOGICALLY UP ZLIFT=.TRUE. IF(NPENN.EQ.0)GO TO 1002 ! STORE ALL PENS CALL ASC('v@') CALL SBN(0) NPENN=0 1002 CALL ASC('p@') ! MOVE TO TOP RIGHT CALL MBP(NMAXNX,NMAXNY) CALL ASC('p}@') IF(ANGLEN.EQ.0.0)GO TO 1003 ! RESET ANGLE CALL ASC('~/@') CALL MBA(360.-ANGLEN) ANGLEN=0.0 1003 NWIDEN=25 ! RESET CHARACTER SIZE NHIGHN=63 CALL ASC('~%@') CALL MBP(NWIDEN,NHIGHN) SLANTN=90.0 ! RESET CHARACTER SLANT CALL ASC('~/@') CALL MBA(SLANTN) IF (NLINEN.EQ.1) GOTO 1005 ! RESET LINE TYPE NLINEN=1 CALL ASC('~Q@') 1005 CALL HPSEND ! OUTPUT BUFFER, WAIT FOR RESPONSE IF (.NOT. ZPAGE) RETURN TYPE701 READ(5,501,END=9000)ZDUM RETURN ENTRY INIT NO PAGE ! ================== ZPAGE = .FALSE. GOTO 1 9000 STOP '** HP PLOT PKG - RESPONSE IS EOF **' 501 FORMAT(A1) 701 FORMAT('$** HP PLOT PKG - NEW PAGE REQ''D **') END