*20 /// PROG EKGCAL. /PROGRAM SAMPLES THREE CHANNELS /OF CALIBRATION SIGNALS AND CAL- /CULATES THE REAL WORLD VALUE PER /VOLT FOR EACH CHANNEL AND TYPES /IT OUT. /REQUIRES REAL WORLD MIN & MAX IN /A1, A3, & A4. /STORES AS FOLLOWS: / VAL\V VAL AT ADC0 /CH1 P66 --- /CH3 P72 --- /CH4 P74 --- /RESTORES PBLOCK WITH ABOVE ADDITIONS /AUTOMATICALLY. /NO LODSYM NEEDED. SEGMNT 5 LMODE *20 //COMMAND SEQUENCE. BEG, CLR AXO /RIG STD TAPE STARTF /STD FPP JMP QUES /TTY + PBLK INPUT JMP SETUP /SETUP PARAMETERS JMP GETHEM /SAMPL JMP TYPOUT /TYPE VAL\V JMP PBKOUT /RESTORES PBLK //END COMMAND SEQUENCE. /ROUTINE TO GET PBLOCK. QUES, SET 3 0 D1, LIF 4 INTRACT CJ1 M1 /PROG EKGCAL / PBLOCK: CJ1, T1 J1 T1, 0 J1, JMP BEG /CR JMP GTPBLK /NUM /GET PBLOCK GTPBLK, COM ADA I 7077 STC CPBL LDF 7 OPR 12 CPBL, 0 /ROUTINE TO GET CAL TIME. D2, LIF 4 INTRACT CJ2 M2 /SAMPL\SEC: CJ2, T1 J2 J2, JMP BEG /CR JMP CALNST CALNST, RECIP FAC FMUL FP1000 FMUL FP400 FIX FAC ISTOR1 NST, 0 JMP 3 /END ROUTINE QUES. /ROUTINE TO SET UP CHANNELS 1,3,4 /SET UP NUMBER OF POINTS TO BE SAMPLED /SET UP CLOCK BUT NOT START IT. SETUP, SET 3 0 /SET UP CHANNELS. LDF 7 SET I 2 CALCH LDA I P1 JMP CHSET LDA I JMP DUNSAM STA 2 /ON BASIS OF NUM CHAN (B14), ARRANGE /PROPER TYPOUT. LDA 14 /NUM CHAN USED MUL I 3 ADA I STC OUT STC .+3 LDA I JMP 3 0 /STC OUT+ /ZERO MAX, LVL, PEAK, & LEVLST AREA. CLR SET I 4 MAX-1 SET I 6 -21 STA I 4 XSK I 6 JMP .-2 /SET UP CLOCK. LDA NST STC TICKS JMP 3 /ROUTINE TO SET UP CHANNELS. CHSET, STC PWRD /IST WORD ADD 0 STC CHSETX STC 14 /NUM CHAN USED SET I 4 /START CH1 7 SET I 12 /BITS PER WRD -14 SET I 13 /NUM CHAN ALLOWD -3 SET I 15 /2 WRD CNTR -2 LDA P15 /INVERT WRD BKC, STC INVCH LDA PWRD, 0 /IST OR 2ND PWRD STC CHTST /INVERT TEST. TS, LDA I 16 SRO I INVCH, 0 ADD KP1 STC INVT /CHANNEL TEST. ADD 4 ADD KP1 STC 4 SRO I CHTST, 0 JMP GOTCH /FOUND ONE XSK I 12 /A PWRD DUN JMP TS /NO /ROUTINE TO CHECK 2ND PWRD OR TO EXIT SECWRD, LDA PWRD ADD KP1 STC PWRD /2ND PWRD SET I 12 -14 LDA P16 /2ND INVERT WRD XSK I 15 /DUN 2 ALREADY JMP BKC /NO CHSETX, 0 /YES, LEAVE /ROUTINE TO SET UP SAM COMMAND. GOTCH, LDA 0 STC GOTCHX ADD 4 BSE I SAM STA 2 LDA I INVT, 0 STA I 2 JMP INC2 XSK I 14 /BUMP NUM CHAN XSK I 13 /DUN ALLOWED CH GOTCHX, 0 /NO, LEAVE GOTCH JMP CHSETX /YES,LEAVE CHSET /ROUTINE TO BUMP SAM COMMAND PLACEMENT PNTR. INC2, XSK I 2 XSK I 2 JMP 0 /END CHSET. FPHALF, 0 2000 0 MAX, 0 0 0 LVL, 0 0 0 PEAK, 0 0 0 LEVLST, 0 0 0 0 0 0 0 0 /END SETUP. /ROUTINE TO SET UP CLOCK AND START /SAMPLING ROUTINE IN RESPONSE TO /TTY COMMAND GETHEM, SET 3 0 D3, LIF 4 INTRACT CJ3 M3 /CAL SAM /: CJ3, T3 J3 T3, SAMPL 0 J3, JMP BEG /CR JMP DOSAM /SAM JMP D3 /NUM /MAIN PROGRAM CALIB SAMPLING ROUTINE. DOSAM, OPR 3 /SET UP CLOCK RATE, 1100 TICKS, 0 OPR 2 /SYSTEM OFF 0 IOB IOF /SAMPLING LOOP. /FIRST WAIT FOR EACH CHANNEL TO HAVE /8 DATA VALUES IN A ROW EXACTLY THE /SAME & USE THIS AS CALIBRATION 0 SIGNAL, /I.E., PUT VALUE IN LVL LIST. SAMLUP, SET I 6 /SET LVL PNTR LVL-1 DOCH1, LDA /WAIT FOR CH1 CALCH /SAM CH1 STA SAMCHA STC SAMCHB JMP FILL8 /FILL LEVLST JMP CHK8 /NXT PT SAME? JMP DOCH1 /NO LDA /YES, PUT IN LVL CALCH+1 /NOP,COM STC .+2 ADD HOLD 0 STA I 6 /STUFF LVL LIST DOCH3, LDA /WAIT CH3 CALCH+3 /SAM CH3 STA SAMCHA STC SAMCHB JMP FILL8 JMP CHK8 JMP DOCH3 /NO LDA CALCH+4 STC .+2 ADD HOLD 0 STA I 6 DOCH4, LDA /WAIT CH4 CALCH+6 /SAM CH4 STA SAMCHA STC SAMCHB JMP FILL8 JMP CHK8 JMP DOCH4 /NO LDA CALCH+7 STC .+2 ADD HOLD 0 STA I 6 /LVL LIST NOW FILLED FOR ALL THREE CHANNELS. /PROCEDE TO SEARCH OUT A MAXIMUM. /CONTINUE UNTIL RUBOUT IS TYPED. MAXLUP, SET I 4 /SET MAX PNTR MAX-1 JMP WATCLK /WAIT CLK TIC CALCH, 0 /SAM CH1 0 JMP GMAX 0 /SAM CH3 0 JMP GMAX 0 /SAM CH4 0 JMP GMAX 0 /DUNSAM DUNSAM, IOB 6031 /? TTY CALLING JMP MAXLUP /NO IOB /YES 6036 SAE I 377 /? RUBOUT SKP /NO JMP DOPKS /YES SAE I 240 /? SPACE JMP MAXLUP /NO /PAUSE LOOP. IOB /YES 6031 /WAIT FOR ANY KEY JMP .-2 IOB 6036 JMP MAXLUP /RESTART /END DOSAM. /ROUTINE TO FILL LEVLST WITH 8 SEQUENTIAL /VALUES FROM CHANNEL SET IN LOC SAMCHA. FILL8, LDA 0 STC FILL8X JMP SET815 JMP WATCLK SAMCHA, 0 SCR 1 STA I 15 XSK I 10 JMP SAMCHA-1 FILL8X, 0 /LEAVE /END FILL8. /ROUTINE TO CHK & SEE IF NEXT VALUE /SAMPLED BY LOC SAMCHB IS EQUAL TO ALL /VALUES STORED IN LEVLST. CHK8, LDA 0 STA BADX /P+1 (BAD TEST) ADD KP1 STC CHK8X /P+2 (GOOD TEST) JMP SET815 JMP WATCLK SAMCHB, 0 STA HOLD SCR 1 SAE I 15 BADX, 0 /BAD LEAVE XSK I 10 JMP .-3 CHK8X, 0 /GOOD LEAVE /END CHK8. /ROUTINE TO SET UP BETA REG 10 & 15. SET815, SET I 10 -10 SET I 15 LEVLST-1 JMP 0 /END SET815. /ROUTINE TO WAIT FOR A CLOCK TIC. WATCLK, LDA 0 STC .+6 IOB CLSK JMP .-2 IOB CLSA 0 /LEAVE /END WATCLK. /SUBROUTINE TO CALC MAX /AND STORE VALUE. GMAX, SET 13 0 STA I HOLD, 0 /CHECK FOR A MAXIMUM. REPLACE MAX IF /(N-MAX) IS POSITIVE. LDA I 4 /MAX COM ADD HOLD APO JMP 13 /LEAVE LDA HOLD STA 4 /MAX JMP 13 /LEAVE /END MAXMIN. /GET PEAK TO PEAK VALUE & STORE AS POSITIVE /VALUE IN PEAK LIST. DOPKS, SET I 13 PEAK-1 SET I 6 LVL-1 SET I 4 MAX-1 SET I 5 -3 LDA I 6 COM ADA I 4 APO COM STA I 13 XSK I 5 JMP .-7 JMP 3 /LEAVE GETHEM /END DOPKS. /END GETHEM. /ROUTINE TO CALCULATE THE REAL WORLD PEAK /TO PEAK OCTAL VALUES FOR THE THREE /CHAN FROM PBLK.THEN CALC REAL WORLD VALUES /PER VOLT AND TYPE OUT. TYPOUT, SET 3 0 OPR 3 /START SYSTEM 5100 /1\10SEC RATE 1750 LDF 7 SET I 15 PEAK /PEAK PNTR SET I 16 P50 /REAL WORLD PNTR SET I 17 P66 /VAL\V PNTR JMP PCALC /DO CH1 LOAD /INC 16X2 4\16 LOAD 4\16 LOAD /INC 17X2 4\17 LOAD 4\17 JMP PCALC /DO CH3 JMP PCALC /DO CH4 /NOW SETUP OUTPUT BUFFERS & TYPE OUT. SETWRD 0742 LOAD P66 /CH 1, VAL\V OUTPUT BUFCH1 LOAD P72 /CH3, VAL\V OUTPUT BUFCH3 LOAD P74 /CH4, VAL\V OUTPUT BUFCH4 OUT, LIF 4 MESOUT HEAD1 LIF 4 MESOUT HEAD2 LIF 4 MESOUT HEAD3 JMP 3 PCALC, SET 13 0 LOAD 4\16 /CH N, LVL FCOMP FADD 4\16 /CH N, MAX FMUL FP777 JMP ZERCHK STORE FPTEMP SFLOAT 4\15 /PEAK FDIV FPTEMP JMP ZERCHK RECIP FAC PAHD, STORE 4\17 /VAL\V FZER STORE 4\17 JMP 13 ZERCHK, FAZE JMP 0 /NOT=0, LEAVE FZER /PEAK=0, BAD CASE JMP PAHD HEAD1, 0310 /CH 6140 /1 BUFCH1, 4040 4040 4040 4040 4015 / M 2657 /V/ 2640 /V 4543 HEAD2, 0310 /CH 6340 /3 BUFCH3, 4040 4040 4040 4040 4015 / M 2657 /V/ 2640 /V 4543 HEAD3, 0310 /CH 6440 /4 BUFCH4, 4040 4040 4040 4040 4015 / M 2657 /V/ 2640 /V 4543 /END ROUTINE TYPOUT. /ROUTINE TO RESTORE PBLK WITH NEW VAL\V /STARTING AT P66. PBKOUT, CLR AXO LDA CPBL STA .+4 STC .+5 LDF 7 OPR I 12 /DISC OR TAPE 0 WRC /TAPE 0 JMP BEG /END PBKOUT. /BUFFERS & CONSTANTS. FPTEMP, 0 0 0 FP777, 11 3774 0 FP1000, 12 3720 0 FP400, 11 3100 0 KP1, 1 /INTRACT MESSAGES. M1, TEXT ZPROG EKGCAL Z 4543 TEXT ZPBLOCK: Z M2, TEXT ZSAMPL\SEC: Z M3, TEXT ZCAL SAM Z 4543 TEXT Z: Z AAEND, 0 /END PROG /PARAMETERS (PBLOCK) FOLLOW. NOLIST CLSK=6131 CLSA=6135 //PBLOCK /PARAMETER BLOCK ASSIGNMENTS / P0=3400 /DATA TYPE P1=3401 /CURRENT CHAN. P2=3402 /CURRENT CHAN. P3=3403 /DATA CHAN. P4=3404 /DATA CHAN. P5=3405 /CONTINGENCY CH P6=3406 /CONTINGENCY CH P7=3407 /TRUE CONTING. P10=3410 /FALSE CONTING. P11=3411 /CONTING. WIDTH P12=3412 /TRUE CONTING. P13=3413 /FALSE CONTING. P14=3414 /CONTING. WIDTH P15=3415 /CHAN INVERSION P16=3416 /CHAN INVERSION P17=3417 /NO.SAMP IN SEG P20=3420 /NO.SEG IN ENSM P21=3421 /NO. ENSEMBLES P22=3422 / P23=3423 /BASELINE PNTS P24=3424 /TAPE DELAY P25=3425 /ENSEMBL DELAY P26=3426 /CLOCK RATE P27=3427 /CLOCK TICS P30=3430 P31=3431 P32=3432 P33=3433 P34=3434 P35=3435 P36=3436 P37=3437 /TAPE SPEED UP P40=3440 /TAPE SPEED UP P41=3441 /TAPE SPEED UP / /FLOATING POINT VARIABLES / / P42=3442 /MULT FACTOR P43=3445 /UV PER VOLT P44=3450 /SEG. LENGTH P45=3453 /TEMP P46=3456 /BASELINE DELAY P47=3461 /CONTING WIDTH P50=3464 /BNDA1 MIN P51=3467 /BNDA1 MAX P52=3472 /BNDA2 MIN P53=3475 /BNDA2 MAX P54=3500 /BNDA3 MIN P55=3503 /BNDA3 MAX P56=3506 /BNDA4 MIN P57=3511 /BNDA4 MAX P60=3514 /BNDA5 MIN P61=3517 /BNDA5 MAX P62=3522 /BNDB1 MIN P63=3525 /BNDB1 MAX P64=3530 /BNDB2 MIN P65=3533 /BNDB2 MAX P66=3536 /BNDB3 MIN P67=3541 /BNDB3 MAX P70=3544 /BNDB4 MIN P71=3547 /BNDB4 MAX P72=3552 /BNDB5 MIN P73=3555 /BNDB5 MAX P74=3560 /PF MIN P75=3563 /PF MAX P76=3566 /TEMP P77=3571 /TRUE VOLTS P100=3574 /FALSE VOLTS P101=3577 /TEMP P102=3602 /V RMS P103=3605 /VRMS VAR P153=3775 / / /COMMAND DECODER ASSIGNMENTS / / STOP=JMP 20 SCAN=JMP 21 STRSCN=JMP 21 INUNIT=JMP 22 STORIT=JMP 23 GETFIL=JMP 24 GETFST=JMP 24 GETNAM=JMP 25 GETNXT=JMP 25 DIRINI=JMP 26 DIRLST=JMP 27 ASSIGN=JMP 30 DEASS=JMP 31 OUTUNIT=JMP 32 LODBLK=JMP 33 RUNBLK=JMP 34 FIND=JMP 35 CALL=JMP 37 UNCALL=JMP 40 RUNPRG=JMP 41 INTRACT=JMP 42 MESOUT=JMP 43 DISK=JMP 44 TABSET=JMP 45 INTABLE=JMP 45 MISSNG=JMP 47 TABGET=JMP 50 TABPUT=JMP 51 TABZER=JMP 52 MAKDIL=JMP 53 TABINI=JMP 54 MGETNAM=JMP 55 MGETFIL=JMP 56 MSTORIT=JMP 57 / /COMMAND LOCATIONS. / FILNAM=2320 WORD1=2323 WORD2=2324 INBUF=2325 /COMMAND NUMBERS. YES=17 NO=20 SAMPL=21 TABLE=22 GO=23 NEXT=24 / /EXEC3 ASSIGNMENTS / OPR=500 IOF=6002 ION=6001 EXC=1710 REXC=540 RLSW=514 RRSW=515 /FLOATING POINT DEFINITIONS. / FAC=0 STARTE=740 FSUB=741 FMUL=742 FDIV=743 LOAD=744 STORE=745 SETWRD=746 INPUT=747 OUTPUT=750 ISTOR1=751 SQRT=752 DFLOAT=753 SFLOAT=754 FIX=755 FADD=756 ISTOR2=757 STARTF=760 FCOMP=761 FZER=762 FAPO=763 FAZE=764 RECIP=765 OUTBUF=771 / / /PBLOCK /JUNE 73 LIST /END PBLOCK. /END PROG EKGCAL. /NOV 73 /JLC,FHD