C -+-+-+-+-+  H A E S P L . F T  -+-+-+-+-+ C C * UP 1-OCT-82 C * UP 3-NOV-82 C * UP 26-NOV-82 C * UP 12-JAN-83 C * UP 25-APR-83 C * UP 26-APR-83 C * UP 28-APR-83 C * UP 5-MAY-83 C * UP 10-MAY-83 C * UP 11-NOV-83 TIME SCALE OF PLOT MAY EXCEED SAMPLE TIME C * UP 8-DEC-83 DEBUGGING C * UP 30-NOV-84 SOME NEW ENHANCEMENTS FOR I/O AND PLOTTER C * UP 10-DEC-84 C * UP 3-JUL-85 OUTPUT SCHMITT TRIGGER CHANNELS C * UP 15-AUG-85 C * UP 22-AUG-85 REMOVES SOME BUGS CONCERNING TRIGG OUTPUT C * UP 3-SEP-85 IF SW 8 UP: INSERTS TRIGG FREQUENCY PLOT C * UP 1-NOV-85 DEBUGGS ASZISSA SCALE ROUTINE C * UP 19-NOV-85 REMOVES SOME BUGS C C PLOT THE DATA POINTS C SUBROUTINE SPLOT INCLUDE HAEPTI.FI INCLUDE HAEBUF.FI INCLUDE HAEGSA.FI INCLUDE HAETTY.FI INCLUDE HABRK.FI INCLUDE HAECSZ.FI INCLUDE HAEHAS.FI INCLUDE HAECSP.FI INCLUDE HAECTR.FI INCLUDE HAPPEN.FI REAL XYSAM,COND LOGICAL BETW INTEGER NCOND,TOASCI,IXTA,FLD EXTERNAL XYSAM,NCOND,COND,TOASCI,IXTA,FLD,BETW C C REAL ORDMIN(8),ORDMAX(8) EQUIVALENCE (SRDMIN(1),ORDMIN(1)),(SRDMAX(1),ORDMAX(1)) @ EQUIVALENCE INTO THE HAECSP COMMON BLOCK LOGICAL TIMABZ,TIMORD, @ ABZISSE / ORDINATE IS TIME SCALE * ABISMI, @ IF THE ABZISSA SCALE EXCEEDS 5 MINUTES THEN .TRUE. ELSE .FALSE. * BOTH,L1,ADPLT @ PLOT MIN&MAX OF SOME Y POINTS, WE ARE PLOTTING A/D CHANNELS INTEGER I,K,K1,J,PENPOS,MSG, @ MSG HOLDS TEMP MESSAGE FOR FORMAT 5 AND 6 * STEP,STEPS, @ INCREMENT IN SAMBUF SCAN * CA,CO, @ CHANNEL OF ABZISSE, ORDINATE * PLBEG,PLEND, @ START/END OF TIME SCALE * NUMCN, @ NUMBER OF CHANNELS TO SCAN (NO MEANING IF TIMABZ IS SET .FALSE.) * NUMTRI,ALLCHS, @ NUMBER OF TRIGGER INPUTS TO PLOTT, TOTAL # OF CHANNELS TO SCAN (A/D +STRIGG) * EXPAND @ IF THE TIME SCALE .LE. 5 SECONDS THEN WE MARK EACH 1/10 SECOND ELSE EACH SECOND * ,TS1 @ HOLDS PLEND*SAMRAT FOR SCALEING THE ABZISSA REAL TEMSET, @ DIFFERENCE PLOTTER 0,0 AND PICTURE 0,0 (NO MEANING IF TIMABZ IS SET TO .FALSE.) * LEFT,RIGHT,UP,DOWN, @ PLOT SCALES ABZISSE/ ORDINATE * TE1,TE2,TE3, @ TEMPS * X,Y,YFMIN,YFMAX, @ USED TO COMPRESS PLOT OUTPUT * OLDX @ USED TO COMPRESS PLOT OUTPUT * ,OMAX,OMIN @ MAXIMUM AND MINIMUM OF ORDINATE DATA INTEGER TEXT0(4) @ DIMENSION OF THE TIME AXIS (MIN OR SEC) * ,TEXT1(2) @ MSG FOR FORMAT 3 OUTPUT DATA CA,CO,NUMCN,STEP,NUMTRI,ALLCHS /0,8,2,3,0,2/, * TEXT0 /'TIME [MIN] TIME [SEC]'/ * ,TEXT1 /'A/D','TRG'/ C C STATEMENT FUNCTIONS ARE: C BOX(AP1)=AMAX1(AMIN1(AP1,UP-DOWN),-.01) XF(IP1)=XYSAM(IP1,CA)-LEFT @ RETURNS THE VALUE OF THE ABZISSA WITH CORRECT OFFSET YF(IP1)=XYSAM(IP1,CO)-DOWN @ RETURNS THE VALUES OF THE ORDINATE WITH THE CORRECT OFFSET DEFALT(I1,I2)=NCOND(I1.EQ.1H ,I2,IXTA(FLD(0,6,I1))-48) @ RETURNS DEFAULT VALUES C IF (SAMCNT.EQ.0) RETURN @ NO SAMPLE, NOTHING TO DO C C COMPUTE THE DEFAULT VALUES FOR THE PLOT C IF (OPTION.EQ.11) GOTO 15 @ SP- SKIPS QUESTIONS AND TAKES THE LAST VALUES USED IF (OPTION.NE.12) CALL ASKHIM (2) @ SP* DOES NOT ASK SCILLY QUESTIONS 14 CO=0 @ THE ORDINATE IS CHANNEL 0 CA=8 @ THE ABZISSA IS THE TIME SCALE NUMCN=CHNLS-CO @ ALL CHANNELS TO PLOT STEP=1 @ WE PLOT EACH POINT OF THE DATA WRITE (TTO,1) CA,CO,STEP @ READ CHANNEL ## READ (TTI,2) I,J,K @ AND STEP INCREMENTS IF BREAK(11) RETURN CA=DEFALT(I,CA) CO=DEFALT(J,CO) STEP=NCOND(K,K,STEP) @ CA,CO, STEP DEFAULT VALUES FOR BLANK INPUT IF (.NOT.(CA.LT.0 .OR. CO.LT.0 .OR. STEP.LE.0)) GOTO 12 13 WRITE (TTO,9)CA,CO,STEP GOTO 14 12 IF (CA.GE.CHNLS .AND. CA.LT.8) GOTO 13 @ TEST FOR VALID CHANNEL NUMBER IF (CO.GE.CHNLS .AND. CO.LT.8) GOTO 13 C TIMABZ=CA.GT.7 @ ABZISSE IS THE TIME SCALE TIMORD=CO.GT.7 @ ORDINATE IS THE TIME SCALE IF (.NOT.TIMABZ) GOTO 15 @ ABZISSA IS NO TIME SCALE: ONLY TWO CHANNELS (CO,CO+1) TO PLOT NUMCN=MIN0(NUMCN,CHNLS-CO) @ COMPUTE CORRECT NUMBER OF CHANNELS WRITE (TTO,3) TEXT1(1),NUMCN @ READ THE NUMBER OF CHANNELS TO SCAN READ (TTI,2) I CA=DEFALT(I,CA) CO=DEFALT(J,CO) I=DEFALT(I,NUMCN) @ FOR BLANK INPUT DEFAULT IS NUMCN NUMCN=MIN0(CHNLS-CO,NCOND(I,I,NUMCN)) @ NO INPUT MEANS CHNLS-CO NUMTRI=STRIGS ALLCHS=NUMCN+NUMTRI @ NUMBER OF A/D AND STRIGG CHANNELS TO PLOT C C ASK FOR NUMBER OF STRIGG CHANNELS TO PLOT C IF (STRIGS.EQ.0) GOTO 11 @ NO STRIGS, NO QUESTIONS NUMTRI=STRIGS @ INSERT DEFAULT VALUE WRITE (TTO,3) TEXT1(2),NUMTRI @ READ THE NUMBER OF STRIGG CHANNELS TO SCAN READ (TTI,2) I I=DEFALT(I,NUMTRI) @ BLANK INPUTS DEFAULTS TO NUMTRI NUMTRI=MIN0(STRIGS,MAX0(0,I)) @ INSERT CORRECT VALUE ALLCHS=MIN0(NUMCN+NUMTRI,7) @ ONLY 8 CHANNELS ALLOWED 11 CONTINUE C C ASK FOR SCALE OF THE ORDINATE (MINIMUM AND MAXIMUM) C K=CO-1 DO 80 I=1,ALLCHS K=K+1 MSG=NCOND(K.GE.CO+NUMCN,TEXT1(2),TEXT1(1)) @ EITHER A/D OR TRG MESSAGE TO PRINT J=NCOND(K.GE.CO+NUMCN,1+K-CO-NUMCN,K) @ NUMBER OF A/D OR TRIGGER CHANNEL WRITE (TTO,5) MSG,J,ORDMAX(K+1) @ READ THE MAXIMUM READ (TTI,7) TE1 ORDMAX(K+1)=COND(TE1,TE1,ORDMAX(K+1)) IF (BREAK(11)) RETURN WRITE (TTO,6) MSG,J,ORDMIN(K+1) @ READ THE MINIMUM READ (TTI,7) TE1 ORDMIN(K+1)=COND(TE1,TE1,ORDMIN(K+1)) IF (BREAK(11)) RETURN 80 CONTINUE 15 CONTINUE C C COMPUTE THE SCALING LIMITS C S0=BEGIN*SAMRAT @ HERE WE START THE OUTPUT PLOT S1=ENDS*SAMRAT @ AND HERE WE END THE PLOT TS1=S1 C PLBEG HOLDS THE FIRST SECOND OF THE TIME SCALE (LEFTMOST ) C PLEND HOLDS THE LAST SECOND OF THE TIME SCALE ( RIGHTMOST DOT) C TS1 HOLDS FACTOR FOR TIME SCALE (PLEND*SAMRAT) C S0 HOLDS THE STARTING INDEX OF DATA TO PLOT ( PLBEG*SAMRAT) C S1 HOLDS THE INDEX OF LAST DATA POINT (MIN0(SAMCNT,TS1)) PLBEG=BEGIN PLEND=ENDS C IF (S1.LE.SAMCNT) GOTO 17 @ IF THE INTERVALL TO PLOT EXCEEDS THE TE1=SAMCNT/SAMRAT @ DATA POINTS THEN TE2=S1/SAMRAT WRITE (TTO,4) TE1,TE2 @ WE PRINT THE OVERFLOW MSG AND S1=SAMCNT-1 @ TAKE CARE FOR TRUNCATION ERRORS 17 CONTINUE @ INTERVALL OK, COMPUTE UPPER AND LOWER MARGIN OF PLOT DATA RIGHT=COND(TIMABZ,FLOAT(TS1),512.) @ ABZISSE MARGIN EITHER TIME OR 10 BIT CONVERTER LEFT =COND(TIMABZ,FLOAT(S0),-512.) UP =COND(TIMORD,FLOAT(TS1),512.) @ ORDINATE MARGIN DOWN =COND(TIMORD,FLOAT(S0),-512.) IF BREAK(11) RETURN @ USER GETS RID OF PRGRM CALL STPLT @ START THE PLOTTER ( CALL PLOTS) CALL XYPLOT (XOFSET,YOFSET,-PENUP) @ DRIVE PEN TO PICTURE ZERO C C LOOP TO PLOT EACH CHANNEL WITH CORRECT OFFSET, FACTOR AND SCALE C TEMSET HOLDS THE ORIGIN FOR EACH CHANNEL C TEMSET=0 PLOT ONE CHANNEL/TIME OR X/Y C TEMSET=YLEN/(NUMCN+NUMTRI) FOR MORE THAN ONE CHANNEL C THE TEMSET ORIGIN OFFSET IS RESET AT THE END OF THE LOOP ( ST. 25) C C TEMSET=0 @ CO HOLDS THE FIRST CHANNEL TO PLOT (INCREMENTED AT END OF LOOP) DO 20 K=1,NCOND(TIMABZ,ALLCHS,1) @ SCAN ALLCHS CHANNELS WITH INDEX K FROM 1 TO ALLCHS C C HERE WE COMPUTE THE ACTUAL CHANNEL NUMBER: C EITHER A/D CO TO NUMCN-1 (0 TO CHNLS-1) OR C TRIGG EVENT FROM CHNLS TO CHNLS+STRIGS C C ADPLT IS SET TRUE FOR A/D CHANNELS TO SCAN C STEPSIZE IS THE INCREMENT FOR THE SCAN; C FOR A/D CHANNELS THE MAXIMUM VALUE OF THE SPECIFIED: STEP OR C IF LOWER SAMPLE FREQUENCY THAN MAXRAT THE PACK-VALUE. C FOR TRIGG EVENT CHANNELS STEP MUST ALLWAYS BE 1! C IF (K.GT.NUMCN)CO=CHNLS+K-NUMCN-1 @ CO RUNS FROM CO TO CO+NUMCN FOR AD, FOR TRIGG'S FROM CHNLS TO CHNLS+TRIGS ADPLT=CO.LT.CHNLS @ WE ARE PLOTTING A/D CHANNELS STEPS=NCOND(ADPLT,MAX0(STEP,PACK(CO+1)),1) @ COMPUTE STEPSIZE FOR SCAN C C HERE WE DECIDE : X OVER Y PLOT C OR X OVER TIME C IF (.NOT. TIMABZ) GOTO 51 C C X OVER TIME C C IF THERE IS MORE THAN ONE CHANNEL WE HAVE TO PREPARE A LOT OF SMALL C Y - AXIS FOR EACH CHANNEL TO SCAN. SO WE SET A TEMPORARY Y OFFSET CALLED TEMSET TEMSET=FLOAT(ALLCHS-K)*(YLEN-ALLCHS*.5+.5)/ * FLOAT(ALLCHS)+(ALLCHS-K)*.5 @ TEMPORARY Y OFFSET CALL XYPLOT (0,TEMSET,-PENUP) @ SWITCH TO CORRECT PART OF PICTURE C C COMPUTE THE FACTOR TO GET A PRETTY PLOT C K1=CO+1 @ INDEX TO ORDMIN/MAX SINCE CO STARTS WITH 0 UP=ORDMAX(K1) DOWN=ORDMIN(K1) @ INSERT THE DEFAULT SCALING LIMITS IF (ORDMAX(K1).LE.ORDMIN(K1)) GOTO 21 @ AUTOMATIC SCALING DESIRED OMAX=UP OMIN=DOWN GOTO 51 @ SCALING ALREADY DONE C C HERE WE DO AUTOMATIC SCALING C 21 CONTINUE OMAX=-99999. OMIN=-OMAX DO 50 J=S0,S1,STEPS @ FETCH MIN & MAX OF THE DATA IF (BREAK(11)) GOTO 25 @ IF THE USER GETS RID OF PLOT THEN WE EXIT VIA 25 TE1=XYSAM(J,CO) @ DATA POINT --> TE1 OMAX=AMAX1(OMAX,TE1) @ MAXIMUM --> OMAX 50 OMIN=AMIN1(OMIN,TE1) @ MINIMUM --> OMIN C IF (UP .GT. DOWN-1.) GOTO 52 @ IF UP.LE.DOWN THEN WE MAKE A FIXED SCALE C FIXED SCALE IF POSSIBLE: IF (OMIN.GE.OMAX-(DOWN-UP)) GOTO 53 @ MAKE A FIXED SCALE AT 53 DOWN=OMIN @ DIFFERENCE BETWEEN MIN AND MAX EXCEEDS THE FIX SCALE LENGTH, SO WE TAKE DEFAULT VALUES UP=OMAX @ ELSE DOWN=UP-(OMIN-OMAX) (FIXED DIFFERENCE SCALE) GOTO 51 @ WORK DONE C FIXED SCALE POSSIBLE, MAKE IT AND CENTER THE PLOT 53 TE1=OMIN-((DOWN-UP)-(OMAX-OMIN))*.5 UP=TE1+DOWN-UP @ UPPER LIMIT DOWN=TE1 @ WE SHIFT THE LINE INTO THE CENTER GOTO 51 @ FIXED DIFFERENCE SCALE DONE C AUTOMATIC SCALE BUT WITH INCREMENTAL STEPPED LIMITS 52 CONTINUE DOWN=COND(OMIN.LT.-512.,OMIN,OMIN.LT.-255.,-512., * OMIN.LT.0,-255.,OMIN.LT.256.,0, 255.) @ MAKE 255 STEPS INCREMENT UP=COND(OMAX.GT.512.,OMAX,OMAX.GT.255.,512., * OMAX.GT.0,255.,OMAX.GT.-255.,0, -255.) @ 255 STEPS INCREMENT C UP=COND(DOWN.GE.UP,DOWN+255.,UP) @ SOMETIMES IT WILL HAPPEN: UP=DOWN 51 CONTINUE @ HERE WE COMPUTE THE FACTOR FOR ONE LINE IF (TIMABZ) CALL FACTOR (XLEN/(RIGHT-LEFT), * (YLEN-ALLCHS*.5+.5)/FLOAT(ALLCHS)/(UP-DOWN)) IF (.NOT.TIMABZ) CALL FACTOR (AMIN1(XLEN,YLEN)/(RIGHT-LEFT), * AMIN1(XLEN,YLEN)/(UP-DOWN)) IF BREAK(11) GOTO 25 @ USER GETS RID OF PRGRM C C HERE WE COMPRESS ( TO SAVE PLOTTER TIME) AND PLOT THE DATA POINTS C CALL WHERE (TE1,TE1,TE1,TE2) @ FETCH THE X FACTOR --> TE1 YFMIN=9999. YFMAX=-YFMIN @ PREP TEMPS TO FETCH THE MIN/MAX OF THE ORDINATE POINTS BOTH=.FALSE. C OLDX=XF(S0)-0.4/TE1*XLEN PENPOS=PENUP L1=.FALSE. @ L1 HOLDS: YF(I) INSIDE LOWER/UPPER LIMIT OF PLOT C C IF THERE IS A X MOVEMENT LESS THAN .3 MM THEN WE DO NOT PLOT THE C POINT. WE FETCH THE MIN/MAX OF Y AND PLOT A LINE FROM MIN TO MAX AT THIS X LOCATION. C THIS IS TO COMPRESS USELESS OUTPUT TO THE PLOTTER. C C C DO 10 I=S0,S1,STEPS @ HERE WE PLOT THE DATA POINTS ONE BY ONE X=XF(I) @ TEMP TO SAVE COMPUTING TIME 75 Y=YF(I) @ IF MORE THAN ONE SPIKE SET IN THE TRIGGER TIME WORD, WE REENTER HERE IF BREAK(11) GOTO 25 @ USER GETS RID OF PROGRAM IF(ADPLT)PENPOS=NCOND(BETW(-.1,Y,UP-DOWN+.5).OR.L1,PENPOS,PENUP) @ WE DO NOT PLOT ANY POINTS EXCEEDING THE UPPER/LOWER LIMIT IF (.NOT.ADPLT) GOTO 74 @ TRIGGER EVENTS WITHOUT ANY COMPRESSION! IF (ABS(OLDX-X)*TE1.GE.0.25/XLEN) GOTO 71 @ PLOT THIS POINT YFMIN=AMIN1(Y,YFMIN) @ NO X MOVEMENT, GET THE MIN Y VALUE YFMAX=AMAX1(Y,YFMAX) @ FETCH THE MAX Y VALUE BOTH=.TRUE. @ TWO Y POINTS TO PLOT!! (MIN & MAX) GOTO 10 @ WITH THE NEXT REAL X MOVEMENT C 74 CALL XYPLOT(X,BOX(-DOWN),PENPOS) @ DELTA SPIKE FOR TRIGGER CHANNEL 71 IF (BOTH) GOTO 72 @ IF THERE ARE TWO POINTS TO PLOT THEN GO 72 ELSE CALL XYPLOT (X,BOX(Y),PENPOS) @ WE PLOT THIS ONE AND PRESS IT INTO U/L LIMITS IF (.NOT.ADPLT) * CALL XYPLOT(X,BOX(-DOWN),PENPOS) @ DELTA SPIKE FOR TRIGGER CHANNEL GO TO 73 72 CALL XYPLOT (X,BOX(YFMIN),PENPOS) @ UPPER AND LOWER Y VALUE TO PLOT CALL XYPLOT (X,BOX(YFMAX),PENPOS) YFMIN=9999. @ SET UP NEW MIN/MAX FETCH CYCLE YFMAX=-YFMIN BOTH =.FALSE. @ CLEAR UPPER/LOWER FLAG 73 CONTINUE OLDX=X @ SAVE LAST X VALUE L1=BETW(-.1,Y,UP-DOWN) @ L1:= Y INSIDE U/L LIMITS! PENPOS=PENDWN IF (NXTBIT.GE.0) GOTO 10 @ NO MORE SPIKES IN THIS TRIGG TIME WORD, SKIP TO 10 X=X+(XF(I+1)-XF(I))/TTRGW @ COMPUTE NEW X FOR MULTIPLE SPIKE EVENTS GOTO 75 @ REPEAT FOR NEXT SPIKE IN THIS TIME WORD 10 CONTINUE IF (.NOT. TIMABZ) GOTO 25 @ WORK DONE FOR X-Y GRAPHICS C C MAKE A SCALE FOR THE ORDINATE ( INPUT VOLTAGE ) C CALL WHERE (TE1,TE1,TE1,TE2) CALL FACTOR (1.,TE2) CALL XYPLOT (-.5,0,-PENUP) PENPOS=PENUP DO 55 I=0,10 TE1=DOWN+I*(UP-DOWN)/10. CALL XYPLOT (0,TE1-DOWN,PENPOS) PENPOS=PENDWN J=MOD(I,5) TE3=COND(J.EQ.0,-.5,-.3) CALL XYPLOT (TE3,TE1-DOWN,PENDWN) CALL XYPLOT (0,TE1-DOWN,PENDWN) IF (MOD(I,10).NE.0) GOTO 55 CALL FACTOR (1.,1.) @ WRITE LOWER AND UPPER LIMIT ONTO THE CALL NUMBER (-XOFSET+2.*YZ,(TE1-DOWN)*TE2-YN*.38,YN*.75,TE1,0, * -1) @ AXIS CALL FACTOR (1.,TE2) CALL XYPLOT (0,TE1-DOWN,PENUP) 55 CONTINUE CALL XYPLOT (.5,0,-PENUP) CALL FACTOR (1.,1.) CALL SYMBOL (-XOFSET+YZ, * AMAX1(0.,((YLEN-ALLCHS*.5)/ALLCHS-4.*YZ))*.5,YZ, * NCOND(ADPLT,'CH ','TRG'),90.,3) CALL NUMBER (999.,999.,YZ, * NCOND(ADPLT,CO,CO-CHNLS+1),90.,-1) @ AD CHANNEL # : 0 .. CHNLS, TRG CHAN#: 1 .. STRIGS C C CO=CO+1 @ HERE WE INCREMENT THE CHANNEL NUMBER 25 CALL FACTOR (1.,1.) CALL XYPLOT (0.,-TEMSET,-PENUP) @ RESET CORRECT ORIGIN OF DIAGRAM IF BREAK(11) GOTO 40 20 CONTINUE C C IF ABZISSA IS TIME SCALE THEN DRAW A TIME SCALE C IF (.NOT.TIMABZ) GOTO 40 CALL FACTOR (XLEN/(PLEND-PLBEG),1.) CALL XYPLOT (0.,-.5,-PENUP) C HERE WE PLOT THE LITTLE BAR INDICATING A SECOND OR MINUTE ABISMI=PLEND-PLBEG.GT.300 @ ABZISSE EXCEEDS 5 MINUTES SO WE DRAW A MINUTE SCALING EXPAND=NCOND(PLEND-PLBEG.LE.5,10,1) @ IF THE TIME SCALE IS .LE. 5 SECONDS THEN WE MARK EACH 1/10 SEC C @ REMEMBER : IF (ABISMI) EXPAND=.FALSE. FOR CORRECT ACTION DO 30 I=PLBEG*EXPAND,PLEND*EXPAND @ 1 SEC INCREMENTS TE1=I-PLBEG*EXPAND CALL XYPLOT (TE1/EXPAND,0,PENDWN) IF (.NOT.ABISMI) TE2=COND(MOD(I,10).EQ.0,-.7, MOD(I,5).EQ.0,-.5, * -.3) IF (ABISMI) TE2=COND(MOD(I,600).EQ.0,-.7, * MOD(I,300).EQ.0,-.5, MOD(I,60).EQ.0,-.3) CALL XYPLOT (TE1/EXPAND,TE2,PENDWN) @ HERE WE PLOT THE SMALL BAR CALL XYPLOT (TE1/EXPAND,0,PENDWN) C HERE WE COMPUTE WHERE TO WRITE A NUMBER ONTO THE TIME AXIS TE2=PLEND-PLBEG @ COMPUTE THE SIZE OF THE TIME AXIS IF (.NOT.ABISMI) GOTO 31 @ IF WE PLOT A SECONDS AXIS THEN GOTO 31 IF (MOD(I, * NCOND(TE2.GT.5400,1800,TE2.GE.1800,600,TE2.GT.900,300, * TE2.GT.290,120,60)).GT.0) GOTO 29 @ COMPUTE THE MINUTE WHERE TO PLOT THE NUMBER GOTO 32 @ SKIP TO PLOT THE NUMBER 31 IF (MOD(I,NCOND(TE2.GT.180,30,TE2.GT.60,20,TE2.GT.30,10, * TE2.GT.10,5,TE2.GT.5,2,10)).GT.0) @ WE ASSUME: TE2.LE.5 THEN EXPAND:=10 ELSE EXPAND:=1 !!! * GOTO 30 C C HERE WE PLOT THE NUMBER ONTO THE AXIS C 32 CONTINUE CALL WHERE (TE2,TE2,TE2,TE3) @ GET THE X FACTOR CALL FACTOR (1.,1.) @ RESET TO THE NORMAL FACTOR FOR SYMBOL CALL NUMBER (TE1/EXPAND*TE2-INT(ALOG10(AMAX0(COND(ABISMI, * I/60.,I/EXPAND),1))+.01) * *YN/2.-YN*.3, * -1.3,YN,COND(ABISMI,I/60.,I/EXPAND),0,-1) CALL FACTOR (TE2,TE3) CALL XYPLOT (TE1/EXPAND,0,PENUP) CALL XYPLOT (TE1/EXPAND,0,PENDWN) 29 I=NCOND(ABISMI,MIN0(I+59, * NCOND(I.EQ.PLEND*EXPAND,I,PLEND*EXPAND-1)),I) @ MINUTE SCALE HAS 60 SEC INCREMENT C SECOND NCOND ABOVE PREVENTS ENDLESS LOOP C 30 CONTINUE CALL FACTOR (1.,1.) CALL XYPLOT (0,.5,-PENUP) CALL SYMBOL (XLEN/1.5,-YOFSET,YZ,TEXT0(NCOND(ABISMI,1,3)),0,10) C C 40 CALL FACTOR (1.,1.) IF (BREAK(11)) GOTO 60 @ USER SWITCHED OFF THE PLOTTER CALL LABPLT (0,-YOFSET,PLEND) IF (BREAK(11)) GOTO 60 CALL SYMBOL (YZ,YLEN+YZ,YZ,LABEL,0,MIN0(42,LABCNT*6)) @ PLOT 42 CHARACTERS INTO THE FIRST LINE OF LABEL IF (LABCNT.GT.7) * CALL SYMBOL (YZ,YLEN,YZ,LABEL(8),0,LABCNT*6-42) @ AND THE REMAINING INTO THE NEXT LINE 60 CONTINUE CALL XYPLOT (38.,25.,PENUP) CALL EXPLT RETURN 1 FORMAT (' KANAL ABZISSE/ORDINATE (ZEITBASIS=8), SCHRITTWEITE', * ' (2I1,I3) (', * 2I1,I3,')? ',$) 2 FORMAT (2A1,I3) 3 FORMAT (' ANZAHL DER DARZUSTELLENDEN ',A3,' KANAELE (I1) (',I1, * ') ? ',$) 4 FORMAT (' NUR FUER',F6.1,' SEK. MESSDATEN JEDOCH',F6.1, * ' SEC. ANGEFORDERT. ') 5 FORMAT (' ORDINATEN MAXIMUM FUER ',A3,' KANAL',I2,' (',F5.0,')?',$) 6 FORMAT (' " " MINIMUM FUER ',A3,' KANAL',I2,' (',F5.0,')?',$) 7 FORMAT (F5.0) 9 FORMAT (' ABZISSEN/ ORDINATEN KANAL ODER SCHRITTWEITE ', * ' FEHLERHAFT: ',3I4) END