1 C -+-+-+-+-+
\ e H A E N Y A . F T
\ e -+-+-+-+-+
8 C * UP 26-APR-83 CREATES HAENYA FROM HAESPL
15 C * UP 7-DEC-83 DEBUGGING
16 C * UP 8-DEC-83 DEBUGGING
17 C * UP 15-DEC-83 REARANGEMENT OF DATA CHANNELS ON OUTPUT PLOT
18 C * UP 19-DEC-83 DEBUGGING
19 C * UP 25-JAN-84 INSERTS NORMALISATION FACTORS INTO PLOT
20 C * UP 26-APR-84 INSERTS SPECIAL CH2 HANDLING ( TURN TABLE)
21 C * UP 26-JAN-84 OPTION '+' ASKS FOR CALIBRATION & NORMALISATION VECTOR
22 C * UP 28-MAY-84 SACCADE DIRECTION SEPARATION INTO L/R
23 C * UP 30-NOV-84 SOME NEW ENHANCEMENTS FOR I/O AND PLOTTER
24 C * UP 10-DEC-84 ONLE ONE NORMALISATION FACTOR FOR EACH CHANNEL
25 C * UP 27-SEP-85 INSERTS STRIGG CHANNELS
26 C * UP 19-NOV-85 REMOVES SOME BUGS
27 C * UP 2-DEC-85 CORRECT HANDLING FOR TRIGGER CHANNELS
29 C PLOT THE DATA POINTS AND THE SUMM OF CH0 AND CH1
42 REAL XYSAM,COND,NYXYSM
44 INTEGER NCOND,TOASCI,IXTA,FLD
45 EXTERNAL XYSAM,NCOND,COND,TOASCI,BETW,NYXYSM,IXTA,FLD
48 LOGICAL TIMABZ,TIMORD, @ ABZISSE / ORDINATE IS TIME SCALE
49 * ABISMI, @ IF THE ABZISSA SCALE EXCEEDS 5 MINUTES THEN .TRUE. ELSE .FALSE.
50 * BOTH,L1,ADPLT,TRGPLT @ PLOT MIN&MAX OF SOME Y POINTS, WE ARE PLOTTING A/D CHANNELS, WE ARE PLOTTING STRIG CHANNELS
51 INTEGER I,K,K1,J,PENPOS,MSG,
52 * CO, @ CHANNEL OF ORDINATE
53 * PLBEG,PLEND, @ START/END OF TIME SCALE
54 * NUMCN, @ NUMBER OF CHANNELS TO SCAN (NO MEANING IF TIMABZ IS SET .FALSE.)
55 * EXPAND @ IF THE TIME SCALE .LE. 5 SECONDS THEN WE MARK EACH 1/10 SECOND ELSE EACH SECOND
56 * ,TS1 @ HOLDS END OF TIME SCALE
57 * ,REARAN(8) @ REARANGE VECTOR
58 * ,NORMSG (1) @ MESSAGE FOR CALIBRATION FACTORS
59 REAL TEMSET, @ DIFFERENCE PLOTTER 0,0 AND PICTURE 0,0 (NO MEANING IF TIMABZ IS SET TO .FALSE.)
60 * LEFT,RIGHT,UP,DOWN, @ PLOT SCALES ABZISSE/ ORDINATE
61 * TE1,TE2,TE3, @ TEMPS
62 * X,Y,YFMIN,YFMAX, @ USED TO COMPRESS PLOT OUTPUT
63 * OLDX @ USED TO COMPRESS PLOT OUTPUT
64 * ,OMAX,OMIN @ MAXIMUM AND MINIMUM OF ORDINATE DATA
65 INTEGER TEXT0(4) @ DIMENSION OF THE TIME AXIS (MIN OR SEC)
66 * ,TEXT1(2) @ MSG FOR FORMAT 3 OUTPUT
67 DATA CA,CO,NUMCN,STEP,NUMTRI,ALLCHS /0,8,2,3,0,2/
68 * ,TEXT1 /'A/D','TRG'/
69 * ,TEXT0 /'TIME [MIN] TIME [SEC]'/
70 * ,REARAN /2,5,4,1,0,3,6,7/ @ PERMUTATION: NUMBER OF PLOT ^ CHANNEL
72 C SIGNAL NAME CHANNEL NUMBER COMMENT
76 C TRG 1 SPIKE 3 NEURON SPIKES
77 C ADD 0 4 COMPUTED FROM NYSTAGMUS+HEAD
78 C ADD 1 5 COMPUTED NYSTAGMUS+HEAD+TABLE
81 C STATEMENT FUNCTIONS ARE:
83 BOX(AP1)=AMAX1(AMIN1(AP1,UP-DOWN),-.01)
84 XF(IP1)=XYSAM(IP1,CA)-LEFT @ RETURNS THE VALUE OF THE ABZISSA WITH CORRECT OFFSET
85 YF(IP1)=NYXYSM(IP1,CO)-DOWN @ RETURNS THE VALUES OF THE ORDINATE WITH THE CORRECT OFFSET
86 DEFALT(I1,I2)=NCOND(I1.EQ.1H ,I2,IXTA(FLD(0,6,I1))-48) @ RETURNS DEFAULT VALUES
88 \f IF (SAMCNT.EQ.0) RETURN @ NO SAMPLE, NOTHING TO DO
90 C COMPUTE THE DEFAULT VALUES FOR THE PLOT
92 IF (OPTION.EQ.11) GOTO 15 @ SP- SKIPS QUESTIONS AND TAKES THE LAST VALUES USED
93 NUMCN=CHNLS-COSTRT+2 @ ALL CHANNELS TO PLOT
94 NYAFIL=0 @ NO FILTER FOR TABLE POSITION
95 IF (OPTION.EQ.12) GOTO 62
96 CALL ASKHIM (2) @ SP* DOES NOT ASK SCILLY QUESTIONS
97 WRITE (TTO,1) CA,COSTRT,STEP @ READ CHANNEL ## (COSTRT SET TO 0 ALLWAYS)!
98 READ (TTI,2) I,J,K @ AND STEP INCREMENTS
101 COSTRT=0 @ CAUSED BY REARANGE VECTOR, I DON'T KNOW HOW TO DO BETTER????
102 STEP=NCOND(K,K,STEP) @ CA,CO, STEP DEFAULTS FOR BLANK INPUT
104 TIMABZ=CA.GT.7 @ ABZISSE IS THE TIME SCALE
105 TIMORD=COSTRT.GT.7 @ ORDINATE IS THE TIME SCALE
106 IF (.NOT.TIMABZ) GOTO 15 @ ABZISSA IS NO TIME SCALE: ONLY TWO CHANNELS (CO,CO+1) TO PLOT
107 NUMCN=MIN0(NUMCN,CHNLS+1-COSTRT) @ COMPUTE CORRECT NUMBER OF CHANNELS
108 IF (OPTION.EQ.12) GOTO 61
109 WRITE (TTO,3) TEXT1(1),NUMCN @ READ THE NUMBER OF CHANNELS TO SCAN
111 I=DEFALT(I,NUMCN) @ FOR BLANK INPUT DEFAULT IS NUMCN
112 NUMCN=MIN0(CHNLS+STRIGS-COSTRT+1,NCOND(I,I,NUMCN)) @ NO INPUT MEANS CHNLS-CO
113 ALLCHS=NUMCN+NUMTRI @ NUMBER OF A/D AND STRIGG CHANNELS TO PLOT
115 C ASK FOR NUMBER OF STRIGG CHANNELS TO PLOT
117 IF (STRIGS.EQ.0) GOTO 11 @ NO STRIGS, NO QUESTIONS
118 NUMTRI=STRIGS @ INSERT DEFAULT VALUE
119 WRITE (TTO,3) TEXT1(2),NUMTRI @ READ THE NUMBER OF STRIGG CHANNELS TO SCAN
121 I=DEFALT(I,NUMTRI) @ BLANK INPUTS DEFAULTS TO NUMTRI
122 NUMTRI=MIN0(STRIGS,MAX0(0,I)) @ INSERT CORRECT VALUE
123 ALLCHS=MIN0(NUMCN+NUMTRI,8) @ ONLY 8 CHANNELS ALLOWED
127 C ASK FOR SCALE OF THE ORDINATE (MINIMUM AND MAXIMUM)
129 DO 80 K=COSTRT+1,NUMCN+COSTRT+NUMTRI
131 ADPLT=K.LT.CHNLS @ QUESTIONS FOR A/D CHANNEL TO PLOT
132 TRGPLT=BETW(CHNLS,K,CHNLS+STRIGS) @ FOR SCHMITT TRIGGER CHNNELS
133 I=NCOND(ADPLT,'A/D',TRGPLT,'TRG','ADD') @ COMPUTE CORRECT TEXT
134 WRITE (TTO,5) I,K,ORDMAX(K1) @ READ THE MAXIMUM
136 ORDMAX(K1)=COND(TE1,TE1,ORDMAX(K1))
137 IF (BREAK(11)) RETURN
138 WRITE (TTO,6) I,K,ORDMIN(K1) @ READ THE MINIMUM
140 ORDMIN(K1)=COND(TE1,TE1,ORDMIN(K1))
141 IF (BREAK(11)) RETURN
142 IF (TRGPLT) GOTO 80 @ NO NORMALISATION FOR TRIGGER CHANNELS
143 WRITE (TTO,8) NORMSG(1),NORM(K1) @ READ THE CALIBRATION FACTOR
145 NORM(K1)=COND(TE1,TE1,NORM(K1)) @ +1 HERE SINCE REARAN'S CH # IS FORM 0 TO 7 AND NORM FROM 1 TO 8!
148 C AND HERE WE ASK FOR TABLE POSITION HANDLING (REAL,FILTER,POLYNOM)
149 C NYAFIL: DETERMINE DESIRED FILTER
156 WRITE (TTO,104) NYAFIL,TABDIR @ WELCHES FILTER FUER TISCHPOSITION?
157 READ (TTI,105) NYAFIL,TABDIR
158 IF (NYAFIL.LE.0) GOTO 82 @ 0: KEINE BEHANDLUNG
159 IF (NYAFIL.EQ.2) GOTO 125 @ 2: GERADE DURCH STUETZPUNKTE
160 NYAFIL=MIN0(NYAFIL,3) @ 1: 11 POL FILTER, 3: 3 POL FILTER
163 125 CONTINUE @ LESE STUETZPUNKTE FUER GERADE EIN
164 CALL MOVE (-16,-10,SMOTAB)
166 111 WRITE (TTO,101) I
167 READ (TTI,102) SMOTAB(1,I) @ UNTERER STUETZPUNKT
169 IF (SMOTAB(1,I).LT.SMOTAB(2,I-1)) GOTO 120
170 112 IF (SMOTAB(1,I).LT.0) GOTO 111 @ FEHLERHAFTE EINGABE
172 READ (TTI,102) SMOTAB(2,I) @ OBERER STUETZPUNKT
173 IF (SMOTAB(2,I).LE.SMOTAB(1,I)) GOTO 113
181 SMOTAB(1,I)=SMOTAB(1,I)*SAMRAT+.5 @ CONVERT TO INDICES AND ROUND
182 SMOTAB(2,I)=SMOTAB(2,I)*SAMRAT+.5
183 IF (SMOTAB(1,I).LT.0) GOTO 140
184 SMOTBL(1,I)=(XYSAM(INT(SMOTAB(2,I)),2)-
185 * XYSAM(INT(SMOTAB(1,I)),2))
186 * / (SMOTAB(2,I)-SMOTAB(1,I)) @ STEIGUNG
187 130 SMOTBL(2,I)=XYSAM(INT(SMOTAB(1,I)),2)-
188 * SMOTBL(1,I)*(SMOTAB(1,I)-.5)
190 101 FORMAT (' STUETZPUNKT PAAR NR.:',I2,/
191 * ' UNTERER STUETZPUNKT IN SEC (F6.0)? ',$)
193 103 FORMAT (' OBERER STUETZPUNKT ? ',$)
194 104 FORMAT (' TISCH: FILTER 0/1/2/3, DREHRICHTUNG L/R/* (I1,A1) ',
202 C COMPUTE THE SCALING LIMITS
204 S0=BEGIN*SAMRAT @ HERE WE START THE OUTPUT PLOT
205 S1=ENDS*SAMRAT @ AND HERE WE END THE PLOT
206 TS1=S1 @ END OF TIME SCALE
207 C PLBEG HOLDS THE FIRST SECOND OF THE TIME SCALE (LEFTMOST )
208 C PLEND HOLDS THE LAST SECOND OF THE TIME SCALE ( RIGHTMOST DOT)
209 C TS1 HOLDS FACTOR FOR TIME SCALE (PLEND*SAMRAT)
210 C S0 HOLDS THE STARTING INDEX OF DATA TO PLOT ( PLBEG*SAMRAT)
211 C S1 HOLDS THE INDEX OF LAST DATA POINT (MIN0(SAMCNT,TS1))
215 IF (S1.LE.SAMCNT) GOTO 17 @ IF THE INTERVALL TO PLOT EXCEEDS THE
216 TE1=SAMCNT-1/SAMRAT @ DATA POINTS THEN
218 WRITE (TTO,4) TE1,TE2 @ WE PRINT THE OVERFLOW MSG AND
219 S1=SAMCNT @ INSERT THE CORRECT PLEND VALUE
220 17 CONTINUE @ INTERVALL OK, COMPUTE UPPER AND LOWER MARGIN OF PLOT DATA
221 RIGHT=COND(TIMABZ,FLOAT(TS1),512.) @ ABZISSE MARGIN EITHER TIME OR 10 BIT CONVERTER
222 LEFT =COND(TIMABZ,FLOAT(S0),-512.)
223 UP =COND(TIMORD,FLOAT(TS1),512.) @ ORDINATE MARGIN
224 DOWN =COND(TIMORD,FLOAT(S0),-512.)
225 IF BREAK(11) RETURN @ USER GETS RID OF PRGRM
226 CALL STPLT @ START THE PLOTTER ( CALL PLOTS)
227 CALL XYPLOT (XOFSET,YOFSET,-PENUP) @ DRIVE PEN TO PICTURE ZERO
231 C LOOP TO PLOT EACH CHANNEL WITH CORRECT OFFSET, FACTOR AND SCALE
232 C TEMSET HOLDS THE ORIGIN FOR EACH CHANNEL
233 C TEMSET=0 PLOT ONE CHANNEL/TIME OR X/Y
234 C TEMSET=YLEN/NUMCN FOR MORE THAN ONE CHANNEL
235 C THE TEMSET ORIGIN OFFSET IS RESET AT THE END OF THE LOOP ( ST. 25)
239 DO 20 K=1,NCOND(TIMABZ,ALLCHS,1) @ SCAN NUMCN CHANNELS WITH INDEX K FROM 1 TO NUMCN
240 CO=REARAN(K) @ REARANGEMENT OF GRAPHICS
241 K1=CO+1 @ INDEX TO ORDMIN/MAX SINCE CO STARTS WITH 0
242 CXCX IF (CO.LT.COSTRT) GOTO 20 @ COMPUTE ONLY DESIRED CHNNELS
244 C HERE WE COMPUTE THE ACTUAL CHANNEL NUMBER:
245 C EITHER A/D CO TO NUMCN-1 (0 TO CHNLS-1) OR
246 C TRIGG EVENT FROM CHNLS TO CHNLS+STRIGS-1
248 C ADPLT IS SET TRUE FOR A/D CHANNELS TO SCAN
249 C STEPSIZE IS THE INCREMENT FOR THE SCAN;
250 C FOR A/D CHANNELS THE MAXIMUM VALUE OF THE SPECIFIED: STEP OR
251 C IF LOWER SAMPLE FREQUENCY THAN MAXRAT THE PACK-VALUE.
252 C FOR TRIGG EVENT CHANNELS STEP MUST ALLWAYS BE 1!
254 TRGPLT=BETW(CHNLS,CO,CHNLS+STRIGS) @ WE ARE PLOTTING SCHMITT TRIGGER CHANNELS
255 ADPLT=CO.LT.CHNLS @ WE ARE PLOTTING A/D CHANNELS
256 STEPS=NCOND(ADPLT,MAX0(STEP,PACK(CO+1)),
257 * TRGPLT,1,MAX0(STEP,PACK(1),PACK(2),PACK(3))) @ COMPUTE STEPSIZE FOR SCAN
259 C HERE WE DECIDE : X OVER Y PLOT
262 IF ( .NOT.TIMABZ) GOTO 51
266 C IF THERE IS MORE THAN ONE CHANNEL WE HAVE TO PREPARE A LOT OF SMALL
267 C Y - AXIS FOR EACH CHANNEL TO SCAN. SO WE SET A TEMPORARY Y OFFSET CALLED TEMSET
268 TEMSET=FLOAT(ALLCHS-K)*(YLEN-ALLCHS*.5+.5)/
269 * FLOAT(ALLCHS)+(ALLCHS-K)*.5 @ TEMPORARY Y OFFSET
270 CALL XYPLOT (0,TEMSET,-PENUP) @ SWITCH TO CORRECT PART OF PICTURE
272 C COMPUTE THE FACTOR TO GET A PRETTY PLOT
275 DOWN=ORDMIN(K1) @ INSERT THE DEFAULT SCALING LIMITS
276 IF (UP.LE.DOWN) GOTO 51 @ AUTOMATIC SCALING DESIRED
279 GOTO 51 @ SCALING ALREADY DONE
280 \fC HERE WE DO AUTOMATIC SCALING
285 DO 50 J=S0,S1,STEPS @ FETCH MIN & MAX OF THE DATA
286 IF (BREAK(11)) GOTO 25 @ IF THE USER GETS RID OF PLOT THEN WE EXIT VIA 25
287 TE1=NYXYSM(J,CO) @ DATA POINT --> TE1
288 OMAX=AMAX1(OMAX,TE1) @ MAXIMUM --> OMAX
289 50 OMIN=AMIN1(OMIN,TE1) @ MINIMUM --> OMIN
291 IF (UP .GT. DOWN-1.) GOTO 52 @ IF OMAX.EQ.OMIN THEN WE MAKE A FIXED SCALE
292 C FIXED SCALE IF POSSIBLE:
293 IF (OMIN.GE.OMAX-(DOWN-UP)) GOTO 53 @ MAKE A FIXED SCALE AT 53
294 DOWN=OMIN @ DIFFERENCE BETWEEN MIN AND MAX EXCEEDS THE FIX SCALE LENGTH, SO WE TAKE DEFAULT VALUES
295 UP=OMAX @ ELSE DOWN=UP-(OMIN-OMAX) (FIXED DIFFERENCE SCALE)
297 C FIXED SCALE POSSIBLE, MAKE IT AND CENTER THE PLOT
298 53 TE1=OMIN-((DOWN-UP)-(OMAX-OMIN))*.5
299 UP=TE1+DOWN-UP @ UPPER LIMIT
300 DOWN=TE1 @ WE SHIFT THE LINE INTO THE CENTER
301 GOTO 51 @ FIXED DIFFERENCE SCALE DONE
302 C AUTOMATIC SCALE BUT WITH INCREMENTAL STEPPED LIMITS
305 DOWN=COND(OMIN.LT.-500.,OMIN,OMIN.LT.-250.,-500.,
306 * OMIN.LT.0,-250.,OMIN.LT.250.,0, 250.) @ MAKE 250 STEPS INCREMENT
307 UP=COND(OMAX.GT.500.,OMAX,OMAX.GT.250.,500.,
308 * OMAX.GT.0,250.,OMAX.GT.-250.,0, -250.) @ 250 STEPS INCREMENT
310 UP=COND(DOWN.GE.UP,DOWN+255.,UP) @ SOMETIMES IT WILL HAPPEN: UP=DOWN
311 51 CONTINUE @ HERE WE COMPUTE THE FACTOR FOR ONE LINE
312 WRITE(0,4711) RIGHT,LEFT,ALLCHS,UP,DOWN
314 IF (TIMABZ) CALL FACTOR (XLEN/(RIGHT-LEFT),
315 * (YLEN-ALLCHS*.5+.5)/FLOAT(ALLCHS)/(UP-DOWN))
316 IF (.NOT.TIMABZ) CALL FACTOR (AMIN1(XLEN,YLEN)/(RIGHT-LEFT),
317 * AMIN1(XLEN,YLEN)/(UP-DOWN))
318 IF BREAK(11) GOTO 25 @ USER GETS RID OF PRGRM
319 \fC HERE WE COMPRESS ( TO SAVE PLOTTER TIME) AND PLOT THE DATA POINTS
321 CALL WHERE (TE1,TE1,TE1,TE2) @ FETCH THE X FACTOR --> TE1
323 YFMAX=-YFMIN @ PREP TEMPS TO FETCH THE MIN/MAX OF THE ORDINATE POINTS
326 OLDX=XF(S0)-0.4/TE1*XLEN
328 L1=.FALSE. @ L1 HOLDS: YF(I) INSIDE LOWER/UPPER LIMIT OF PLOT
330 C IF THERE IS A X MOVEMENT LESS THAN .3 MM THEN WE DO NOT PLOT THE
331 C POINT. WE FETCH THE MIN/MAX OF Y AND PLOT A LINE FROM MIN TO MAX AT THIS X LOCATION.
332 C THIS IS TO COMPRESS USELESS OUTPUT TO THE PLOTTER.
334 DO 10 I=S0,S1,STEPS @ HERE WE PLOT THE DATA POINTS ONE BY ONE
335 X=XF(I) @ TEMP TO SAVE COMPUTING TIME
337 IF BREAK(11) GOTO 25 @ USER GETS RID OF PROGRAM
339 * PENPOS=NCOND(BETW(-.1,Y,UP-DOWN).OR.L1,PENPOS,PENUP) @ WE DO NOT PLOT ANY POINTS EXCEEDING THE UPPER/LOWER LIMIT
340 IF (ABS(OLDX-X)*TE1.GE.0.35/XLEN) GOTO 71 @ PLOT THIS POINT
341 IF(TRGPLT) GOTO 74 @ TRIGGER EVENTS WITHOUT ANY COMPRESSION!
342 YFMIN=AMIN1(Y,YFMIN) @ NO X MOVEMENT, GET THE MIN Y VALUE
343 YFMAX=AMAX1(Y,YFMAX) @ FETCH THE MAX Y VALUE
344 BOTH=.TRUE. @ TWO Y POINTS TO PLOT!! (MIN & MAX)
345 GOTO 10 @ WITH THE NEXT REAL X MOVEMENT
347 74 CALL XYPLOT(X,BOX(-DOWN),PENPOS) @ DELTA SPIKE FOR TRIGGER CHANNEL
348 71 IF (BOTH) GOTO 72 @ IF THERE ARE TWO POINTS TO PLOT THEN GO 72 ELSE
349 CALL XYPLOT (X,BOX(Y),PENPOS) @ WE PLOT THIS ONE AND PRESS IT INTO U/L LIMITS
351 * CALL XYPLOT(X,BOX(-DOWN),PENPOS) @ DELTA SPIKE FOR TRIGGER CHANNEL
353 72 CALL XYPLOT (X,BOX(YFMIN),PENPOS) @ UPPER AND LOWER Y VALUE TO PLOT
354 CALL XYPLOT (X,BOX(YFMAX),PENPOS)
355 YFMIN=9999. @ SET UP NEW MIN/MAX FETCH CYCLE
357 BOTH =.FALSE. @ CLEAR UPPER/LOWER FLAG
359 OLDX=X @ SAVE LAST X VALUE
360 L1=BETW(-.1,Y,UP-DOWN) @ L1:= Y INSIDE U/L LIMITS!
362 IF (NXTBIT.GE.0) GOTO 10 @ NO MORE SPIKES IN THIS TRIGG TIME WORD, SKIP TO 10
363 X=X+(XF(I+1)-XF(I))/TTRGW @ COMPUTE NEW X FOR MULTIPLE SPIKE EVENTS
364 GOTO 75 @ REPEAT FOR NEXT SPIKE IN THIS TIME WORD
366 IF (.NOT. TIMABZ) GOTO 25 @ WORK DONE FOR X-Y GRAPHICS
368 C MAKE A SCALE FOR THE ORDINATE ( INPUT VOLTAGE )
370 CALL WHERE (TE1,TE1,TE1,TE2)
371 C HERE WE WRITE THE CALIBRATION AND NORMALISATION FACTOR ONTO THE RIGHT SIDE
372 CALL FACTOR (1.,1.) @ RESET TO THE NORMAL FACTOR FOR SYMBOL
373 CALL NUMBER (XLEN+YN,TE2*(UP-DOWN)/2.-1.2*YN
374 * ,YN*.8,NORM(CO+1),90.,2)
377 CALL XYPLOT (-.5,0,-PENUP)
380 TE1=DOWN+I*(UP-DOWN)/10.
381 CALL XYPLOT (0,TE1-DOWN,PENPOS)
384 TE3=COND(J.EQ.0,-.5,-.3)
385 CALL XYPLOT (TE3,TE1-DOWN,PENDWN)
386 CALL XYPLOT (0,TE1-DOWN,PENDWN)
387 IF (MOD(I,10).NE.0) GOTO 55
388 CALL FACTOR (1.,1.) @ WRITE LOWER AND UPPER LIMIT ONTO THE
389 CALL NUMBER (-XOFSET+2.*YZ,(TE1-DOWN)*TE2-YN*.38,YN*.75,TE1,0,
392 CALL XYPLOT (0,TE1-DOWN,PENUP)
394 CALL XYPLOT (.5,0,-PENUP)
396 CALL SYMBOL (-XOFSET+YZ,
397 * AMAX1(0.,((YLEN-ALLCHS*.5)/ALLCHS-4.*YZ))*.5,YZ,
398 * NCOND(ADPLT,'CH ',TRGPLT,'TRG','ADD'),90.,3)
399 CALL NUMBER (999.,999.,YZ,
400 * NCOND(ADPLT,CO,TRGPLT,CO-CHNLS+1,CO-STRIGS-CHNLS),90.,-1) @ AD CHANNEL # : 0 .. CHNLS, TRG CHAN#: 1 .. STRIGS
402 * CALL SYMBOL (-XOFSET+YZ+1.2*YN,YLEN/NUMCN*.33-YZ,YN*.8
403 * ,'[DEG]',90.,5) @ A/D CHANNELS, SO WE PLOT DEGREES
406 CO=CO+1 @ HERE WE INCREMENT THE CHANNEL NUMBER
407 25 CALL FACTOR (1.,1.)
408 CALL XYPLOT (0.,-TEMSET,-PENUP) @ RESET CORRECT ORIGIN OF DIAGRAM
412 C IF ABZISSA IS TIME SCALE THEN DRAW A TIME SCALE
414 IF (.NOT.TIMABZ) GOTO 40
415 CALL FACTOR (XLEN/(PLEND-PLBEG),1.)
416 CALL XYPLOT (0.,-.5,-PENUP)
417 C HERE WE PLOT THE LITTLE BAR INDICATING A SECOND OR MINUTE
418 ABISMI=PLEND-PLBEG.GT.300 @ ABZISSE EXCEEDS 5 MINUTES SO WE DRAW A MINUTE SCALING
419 EXPAND=NCOND(PLEND-PLBEG.LE.5,10,1) @ IF THE TIME SCALE IS .LE. 5 SECONDS THEN WE MARK EACH 1/10 SEC
420 C @ REMEMBER : IF (ABISMI) EXPAND=.FALSE. FOR CORRECT ACTION
421 DO 30 I=PLBEG*EXPAND,PLEND*EXPAND @ 1 SEC INCREMENTS
423 CALL XYPLOT (TE1/EXPAND,0,PENDWN)
424 IF (.NOT.ABISMI) TE2=COND(MOD(I,10).EQ.0,-.7, MOD(I,5).EQ.0,-.5,
426 IF (ABISMI) TE2=COND(MOD(I,600).EQ.0,-.7,
427 * MOD(I,300).EQ.0,-.5, MOD(I,60).EQ.0,-.3)
428 CALL XYPLOT (TE1/EXPAND,TE2,PENDWN) @ HERE WE PLOT THE SMALL BAR
429 CALL XYPLOT (TE1/EXPAND,0,PENDWN)
430 C HERE WE COMPUTE WHERE TO WRITE A NUMBER ONTO THE TIME AXIS
431 TE2=PLEND-PLBEG @ COMPUTE THE SIZE OF THE TIME AXIS
432 IF (.NOT.ABISMI) GOTO 31 @ IF WE PLOT A SECONDS AXIS THEN GOTO 31
434 * NCOND(TE2.GT.5400,1800,TE2.GE.1800,600,TE2.GT.900,300,
435 * TE2.GT.300,120,60)).GT.0) GOTO 30 @ COMPUTE THE MINUTE WHERE TO PLOT THE NUMBER
437 31 IF (MOD(I,NCOND(TE2.GT.180,30,TE2.GT.60,20,TE2.GT.30,10,
438 * TE2.GT.10,5,TE2.GT.5,2,10)).GT.0) @ WE ASSUME: TE2.LE.5 THEN EXPAND:=10 ELSE EXPAND:=1 !!!
441 C HERE WE PLOT THE NUMBER ONTO THE AXIS
444 CALL WHERE (TE2,TE2,TE2,TE3) @ GET THE X FACTOR
445 CALL FACTOR (1.,1.) @ RESET TO THE NORMAL FACTOR FOR SYMBOL
446 CALL NUMBER (TE1/EXPAND*TE2-INT(ALOG10(AMAX0(COND(ABISMI,
447 * I/60.,I/EXPAND),1))+.01)
449 * -1.3,YN,COND(ABISMI,I/60.,I/EXPAND),0,-1)
450 CALL FACTOR (TE2,TE3)
451 CALL XYPLOT (TE1/EXPAND,0,PENUP)
452 CALL XYPLOT (TE1/EXPAND,0,PENDWN)
453 I=NCOND(ABISMI,MIN0(I+59,PLEND-1),I) @ MINUTE SCALE HAS 60 SEC INCREMENT
457 CALL XYPLOT (0,.5,-PENUP)
458 CALL SYMBOL (XLEN/1.5,-YOFSET,YZ,TEXT0(NCOND(ABISMI,1,3)),0,10)
461 40 CALL FACTOR (1.,1.)
462 IF (BREAK(11)) GOTO 60 @ USER SWITCHED OFF THE PLOTTER
463 CALL LABPLT (0,-YOFSET,PLEND)
464 IF (BREAK(11)) GOTO 60
465 CALL SYMBOL (YZ,YLEN+YZ,YZ,LABEL,0,MIN0(42,LABCNT*6)) @ PLOT 42 CHARACTERS INTO THE FIRST LINE OF LABEL
467 * CALL SYMBOL (YZ,YLEN,YZ,LABEL(8),0,LABCNT*6-42) @ AND THE REMAINING INTO THE NEXT LINE
469 CALL XYPLOT (38.,25.,PENUP)
472 1 FORMAT (' KANAL ABZISSE/ORDINATE (ZEITBASIS=8), SCHRITTWEITE',
476 3 FORMAT (' ANZAHL DER DARZUSTELLENDEN ',A3,' KANAELE (I1) (',I1,
478 4 FORMAT (' NUR FUER',F6.1,' SEK. MESSDATEN JEDOCH',F6.1,
479 * ' SEC. ANGEFORDERT. ')
480 5 FORMAT (' ORDINATEN MAXIMUM FUER ',A3,' KANAL',
481 * I2,' (',F5.0,')?',$)
482 6 FORMAT (' " " MINIMUM " ',A3,' " " ',
483 * I2,' (',F5.0,')?',$)
485 8 FORMAT (' FAKTOR FUER ',A5,14X,'(',F5.3,')?',$)
486 9 FORMAT (' ABZISSEN/ ORDINATEN KANAL ODER SCHRITTWEITE ',
487 * ' FEHLERHAFT: ',3I4)