10
20
30 :
40 MODE7:DIM R%(3),S(3)
50 ins%=TRUE:ON ERROR ins%=FALSE
60 IFins%:PROC_INSTRUC
70 ON ERROR PROC_ERROR
80 MODE7:PROC_INIT
90 REPEAT
100 PRINTTAB(0,0);"Waiting..."
110 T%=T%+1
120 PRINTTAB(0,13);"Run time: ";(D%*T%)/100;" sec "
130 REPEAT UNTIL TIME>t%:t%=TIME+D%
140 PRINTTAB(0,0);"Sampling...":FORA%=0TO3:R%(A%)=0:NEXTA%
150 FORa%=1TO10:FOR A%=0 TO C%:R%(A%)=((ADVAL(A%+1) DIV 64)*S(A%)+R%(A%)):NEXTA%:NEXTa%
160 FORA%=0TO3
170 R%(A%)=R%(A%)/10
180 PRINTTAB(12,4+2*A%);FNd3n2(R%(A%)/4)
190 NEXTA%:IF F% THEN PRINTTAB(0,0);"Printing...":PROC_PLOT
200 IF INKEY(1)=32 THEN F%=F% EOR 1
210 PRINTTAB(17,18);:IF F% THEN PRINT"n. " ELSE PRINT"ff."
220 UNTIL FALSE
230 :
240 DEFPROC_PLOT
250 VDU2:L%=0
260 FOR LO%=0 TO C%
270 PROC_PLOTTER(LO%,L%):L%=R%(LO%)
280 NEXTLO%
290 IF DD$="Y" THEN VDU1,13,1,27,1,ASC"K",1,4,1,0,1,255,1,8,1,8,1,8
300 IF (T% MOD M%)=0 THEN VDU1,13,1,27,1,75,1,188,1,1,1,0,1,0,1,0,1,0:FOR LO%=0 TO 10:FOR LP1%=1 TO 9:VDU1,28,1,8,1,8,1,8:NEXTLP1%:VDU1,63,1,8,1,8,1,8:NEXTLO%
310 VDU1,10,1,13,3
320 ENDPROC
330 :
340 DEFPROC_PLOTTER(Z%,LA%)
350 IF R%(Z%)>480 THEN ENDPROC
360 A=R%(Z%):IF A-8<L% THEN VDU1,13 ELSE A=A-L%-5
370 B%=A+5
380 VDU 1,27,1,75,1,B% MOD 256,1,B% DIV 256
390 FOR B%=0 TO A:VDU1,0:NEXTB%
400 PROC_SHAPE(Z%)
410 ENDPROC
420 :
430 DEFPROC_SHAPE(A)
440 IF A=0 THEN VDU1,14,1,10,1,14,1,0,1,0:ENDPROC
450 IF A=1 THEN VDU1,14,1,14,1,14,1,0,1,0:ENDPROC
460 IF A=2 THEN VDU1,10,1,4,1,10,1,0,1,0:ENDPROC
470 VDU1,4,1,14,1,4,1,0,1,0:ENDPROC
480 :
490 DEFPROC_INIT
500 CLS
510 VDU2,1,27,1,64,1,27,1,ASC"3",1,10,3
520 M%=20:F%=0:T%=-2:t%=0
530 INPUT"How many channels? (1-4) "C%:C%=C%-1
540 INPUT"Delay between samples in seconds"'"(5 sec minimum):"DELAY:D%=DELAY*100
550 INPUT"Duration axis? (Y/N) "DD$:IF LEFT$(DD$,1)="y" OR LEFT$(DD$,1)="Y" THEN DD$="Y" ELSE DD$="N"
560 FOR LOOP=0 TO C%
570 PRINT"Gain for channel ";LOOP+1;":";:INPUT" "S(LOOP)
580 S(LOOP)=S(LOOP)/2:NEXT LOOP
590 INPUT LINE"Main title for printout"'":"TT$:VDU2,21:PRINTTT$:VDU6,1,10,1,10,1,10,1,10,1,13,3
600 FOR LOOP=0 TO C%
610 PRINT"Text for channel ";LOOP+1;":":INPUT LINE ""TT$
620 VDU2,21:PRINT" Gain: ";2*S(LOOP);SPC(4-LENSTR$(S(LOOP)));:VDU6,1,27,1,ASC"K",1,5,1,0:PROC_SHAPE(LOOP):VDU21:PRINT" "TT$:VDU6
630 VDU1,10,1,10,1,10,1,13,3:NEXTLOOP
640 VDU2,21:PRINT"One sample every ";DELAY;"sec.":VDU6,1,10,1,10,1,10,1,13,3
650 CLS
660 FOR A=0 TO C%
670 PRINTTAB(0,4+2*A);"Channel ";A+1;":"SPC(10)"Gain: ";S(A)*2
680 NEXTA
690 PRINTTAB(8,18);"Printer on."
700 VDU23,1;0;0;0;0
710 PRINTTAB(3,22);"SPACE BAR - Printer on/off."
720 PRINTTAB(6,20);"One sample every "DELAY"s."
730 ENDPROC
740 :
750 DEFFNd3n2(A)
760 LOCAL A$
770 A$=STRING$(3-LENSTR$(INT(A))," ")+STR$(A)
780 IF A=INT(A) THEN A$=A$+"."
790 =LEFT$(A$+"00",6)
800 :
810 DEFPROC_ERROR
820 PRINT'"Error: ";:VDU19,0,0,0:REPORT
830 Z=0:IF ERR=17 THEN Z=GET:IF INKEY-1=0 THEN ENDPROC
840 IF INKEY-1 THEN END
850 PROC_INSERT("L."+STR$(ERL)+CHR$(6)+CHR$13)
860 VDU21:END
870 ENDPROC
880 :
890 DEFPROC_INSERT(A$)
900 *FX15
910 FOR A=1 TO LEN A$:OSCLI"FX 138,0,"+STR$(ASCMID$(A$,A,1)):NEXT A
920 ENDPROC
930 :
940 DEFPROC_INSTRUC
950 CLS:*LOAD SampIns FFFF7C00
960 PRINTTAB(5,23)"Press space to continue...";:Z=GET
970 ENDPROC