*20 /AUTOCOR /AUTOCORRELOGRAM FOR 512 DATA POINTS, 127 LAGS /DATA IS SAMPLED & DISPLAYED /CORRELOGRAMS ARE DISPLAYED /THEN STORED ON UNIT 1 /RSW GIVE BN IN WHICH FIRST CORRELOGRAM IS STORED /COMPUTATION IS FROM COAUTO BY A.J.HANCE /THIS REVISION BY D.A.OVERTON, 11/25/69 / /FIRST LETS DEFINE CLOCK INSTS. CLSK=6131 CLLR=6132 CLAB=6133 CLEN=6134 CLSA=6135 CLBA=6136 CLCA=6137 / /NEXT DEFINE SAMPLING RATES PMODE DECIMAL /DISSET = NO. OF 100 USEC EPOCHS PER SAMPLE /FOR THE OSCILLOSCOPE MODE DISSET=-20 /500 CPS /SAMSET = NO OF 10 USEC EPOCHS PER SAMPLE FOR DATA ENTRY SAMSET=-500 /200 CPS LMODE OCTAL / / / /OSCILLOSCOPE ROUTINE /SAMPLES & DISPLAYS CHANNEL 10 /DATA IS NOT SAVED *17 0 /RESERVED FOR BN SAMDIS,SNS I 5 /PGM STARTS HERE JMP COREAD /IF SS5=1 SNS I 0 JMP SAMP /SAVE DATA IF SS0=1 /SET UP CLOCK PDP PMODE CLA /CLEAR CLK REGISTERS CLAB CLLR TAD K0100 CLLR CLSA CLA TAD K3 /LOAD BUFFER PRESET CLAB CLA TAD K0300 /OVERFLOW ENABLE CLEN CLA TAD K3100 /10 KC, MODE 1 CLLR LINC LMODE JMP SD5 K3100, 3100 K0300, 0300 K3, DISSET K0100, 0100 /DISPLAY CH 10 SD5, SET I 2 /X COORD 777 SD1, IOB CLSK JMP .+2 JMP SD4 SAM 10 SCR 1 DIS 2 JMP SD1 SD4, IOB CLSA /CLEAR FLAG SAM 10 SCR 1 /SO DATA WILL FIT ON SCOPE DIS I 2 SNS I 5 JMP SD2 /GO TO COREAD SNS I 3 JMP SD3 SNS 0 JMP SD1 /DISPLAY INPUT AGAIN /STOP CLOCK CLR IOB CLLR IOB CLEN JMP SAMP /IF SS0=1 SD2, CLR IOB CLLR IOB CLEN JMP COREAD /IF SS5=1 SD3, CLR IOB CLLR IOB CLEN JMP SP2 /TO DATA DISPLAY IF SS3=1 /END OF OSCILLOSCOPE SIMULATOR / / / /DATA SAMPLING SUBROUTINE /SAMPLE 512 TIMES /SAVE DATA IN 7000-7777 /THEN DISPLAY THE DATA SAMP, SET I 2 /POINTER FOR DATA 6777 /SET UP CLOCK PDP PMODE CLA /CLEAR CLK CLAB CLLR TAD K100 CLLR CLSA CLA /SET BUFFER PRESET REG TAD K2 CLAB CLA /ENABLE OVERFLOW TAD K300 CLEN CLA /100 KC, MODE 1 TAD K2100 CLLR LINC LMODE JMP SP1 K2100, 2100 K300, 300 K2, SAMSET K100, 100 /SAMPLE 512 TIMES SP1, IOB CLSK JMP SP1 CLR IOB CLSA /CLEAR FLAG SAM 10 SCR 1 /MIMIC LINC-8 SAMPLE STA I 2 /STORE DATA IN Q6 & Q7 DIS I 3 DIS 3 XSK 2 /ALL DATA STORED ? JMP SP1 /STOP CLOCK CLR IOB CLLR IOB CLEN /DISPLAY DATA SP2, SET I 2 6777 SET I 3 1777 SP3, LDA I 2 DIS I 3 XSK 2 /SWEEP DONE ? JMP SP3 SNS 0 JMP SAMDIS /REJECT DATA IF SS0=0 SNS 1 JMP SP2 JMP SCALE /IF SS1=1 / / / /AUTOCORRELATION COMPUTATION /TAKEN DIRECTLY FROM COAUTO BY A.J.HANCE / /CLEAR Q5 FOR CORRELOGRAM COMPUT, SET I 1 1377 SET I 2 2377 CLR STA I 2 XSK I 1 JMP .-2 /SET UP INDEX REGISTERS TO COUNT THE VARIOUS /PASSES THROUGH THE CORRELATION PROCESS SET I 1 6777 SET I 4 1577 /127 LAGS SET I 5 2400 /AUTOCOR LOCATION SET I 6 J4 /USED FOR TEMP STORAGE LDA I 2777 STC A2 I1, SET I 2 2777 CLR STC J4 SET I 3 A2, 2777 /WILL BE INCREMENTED /CROSS MULTIPLY DATA ARRAY /AND LAGGED DATA ARRAY. /SUM THE PRODUCTS / C(T) = SUM [ X(I) TIMES X(I+T)] / SUM FROM I=1 TO I=(N-T) / T GOES FROM 0 TO 127 / N = 512 J1, LDA I 3 MUL I 2 STA K1 SCR 13 STC L1 CLR ADD K1 LAM 6 STC 0 ADD L1 LAM 5 STC 0 LAM 6 STC 0 LAM 5 XSK 3 JMP J1 /DIVIDE EACH SUM OF PRODUCTS BY N-T LDA 5 STC L1 ADD 1 COM STC A1 STC F7 STC 7 SET I 11 -14 ADD L1 STA I F7, 0 APO I JMP B7 COM STC L1 ADD J4 COM STC J4 B7, CLR ADD 7 ROL 1 STC 7 ADD J4 ROL I 1 STC J4 ADD L1 ROL I 1 STA L1 ADD 1 AZE I CLR APO JMP .+6 STC L1 LDA I 1 ADD 7 STC 7 XSK I 11 JMP B7 LDA F7 APO I JMP .+5 LDA 7 COM STC 7 LDA 7 STA 5 /STORE RESULT XSK I 1 LDA I 5 LDA I 5 XSK I 4 /ALL LAGS DONE ? JMP .+2 JMP C2 LDA I 1 ADM A2 JMP I1 /DO NEXT LAG /SCALE CORRELOGRAM SO THAT C(0) IS AS /CLOSE AS POSSIBLE TO +377 (OCTAL) /FOR EASY SCOPE DISPLAY C2, SET I 1 0 LDA I -3770 ADA 2400 APO I JMP .+3 XSK I 1 JMP .-5 SET I 2 2377 SET I 3 1377 LDA I 2 MUL 1 SCR 3 STA 2 XSK I 3 JMP .-6 /INTERPOLATE POINTS BETWEEN 128 POINTS /TO MAKE 255 POINTS /MORE OR LESS LIKE HAVING 255 LAGS /EACH 1/2 OF THE SAMPLING INTERVAL SET I 1 1577 SET I 2 2376 SET I 3 2377 SET I 4 2400 LDA 2776 STA 3000 Q1, XSK I 2 XSK I 3 XSK I 4 LDA I 2 ADA I 4 SCR 1 STA I 3 XSK I 1 JMP Q1 JMP CORDIS /EXIT FROM COMPUTATION HERE A1, 0 K1, 0 L1, 0 J4, 0 /END OF AUTOCORRELATION COMP. / / / /SUBROUTINE TO NORMALIZE AND SCALE DATA /PRIOR TO AUTOCORRELOGRAM COMPUTATION SCALE, SET I 12 2777 CLR STC B5 STC C5 SET 2 12 SET I 3 777 /SUM ALL DATA VALUES E5, CLR LDA I 2 SCR 13 STC D5 LDA 2 LAM C5 STC 0 ADD D5 LAM B5 STC 0 LAM C5 STC 0 LAM B5 XSK I 3 JMP E5 /DIVIDE SUM OF DATA POINTS BY 512 BY SHIFTING /INSTEAD OF A DOUBLE PRECISION ROR 11, /IT IS QUICKER TO DOUBLE PRECISION ROL 3 /THIS GIVES THE MEAN AMPLITUDE OF THE DATA ARRAY SET I 2 1774 F5, CLR ADD C5 ROL I 1 STC C5 ADD B5 ROL I 1 STC B5 XSK I 2 JMP F5 ADD B5 COM STC B5 /SUBTRACT THE MEAN FROM EACH DATA POINT /ALSO PICK UP THE LARGEST ABSOLUTE VALUE STC J4 SET 2 12 SET I 3 777 G5, LDA I 2 ADD B5 STA 2 APO I COM ADD J4 APO I JMP H5 COM ADD J4 STC J4 H5, XSK I 3 JMP G5 /DERIVE SCALING FACTOR REQUIRED TO /REDUCE THE LARGEST ABSOLUTE DATA POINT /TO FALL WITHIN THE RANGE /+55 TO -55 (OCTAL) SET I 1 0 LDA I -2640 ADD J4 APO I JMP .+4 XSK I 1 JMP .-4 JMP X1 /SCALE DOWN ALL DATA POINTS /BY MULTIPLYING BY THE SCALING FACTOR /THEN SCR 5 SET 2 12 SET I 3 777 N5, LDA I 2 MUL 1 SCR 5 STA 2 XSK I 3 JMP N5 JMP NORMDD /EXIT FROM SCALING PGM HERE B5,0 C5,0 D5,0 /IF ALL DATA SAMPLES ARE ZERO /RING TTY BELL X1, LDA I 207 IOB 6046/TLS SET I 1 /CLEAR Q5 2377 CLR STA I 1 XSK 1 JMP .-2 JMP CORDIS /END OF DATA NORMALIZING ROUTINE / / /DISPLAY NORMALIZED DATA /FOR A FEW SWEEPS /BEFORE COMPUTING AUTOCORRELOGRAM NORMDD,SET I 5 1760 NN2, SET I 2 2777 SET I 3 1777 NN1, LDA I 2 DIS I 3 XSK 2 /SWEEP DONE ? JMP NN1 XSK I 5 /7 SWEEPS DONE ? JMP NN2 JMP COMPUT / / / /ROUTINE TO DISPLAY AUTOCORRELOGRAM /AFTER IT IS COMPUTED CORDIS, SET I 2 /X COORD 1777 SET I 3 /Y COORD POINTER 2377 SET I 4 /DISPLAY 1 QUARTER 1377 CD1, LDA I 3 DIS I 2 DIS I 2 /DISPLAY EACH VALUE TWICE XSK I 4 JMP CD1 SNS 0 JMP SAMDIS /REJECT IF SS0=0 SNS 2 JMP CORDIS JMP CWRITE /IF SS2=1 / / / /ROUTINE TO READ LS AND SAVE IN LOC 17 READBN, RSW /ARRIVES HERE ONLY IF SS4=1 BCL I 7000 STC 17 JMP 0 / / / /WRITE AUTOCORRELOGRAM ON UNIT 1 /BN IS SPECIFIED BY LOC 17 AND SS4 /THEN DISPLAY BN IN AC UNTIL SS0=0 CWRITE, SNS I 4 JMP READBN /RS TO LOC 17 IF SS4=1 LDA /RETURNS HERE 17 STA /BN IN LOC 377 OF AUTOCOR 2777 BSE I /MAKE TAPE WRITE INST 5000 STC CW1 WRC U CW1, 0 LDA I 207 /RING BELL AT END OF TAPE WRITE IOB 6046 /TLS CW2, SET I 2 /DISPLAY BN IN AC 1777 LDA 17 XSK I 2 JMP .-1 SAE I 777 JMP .+2 JMP CW4 /END OF TAPE SNS I 0 JMP CW2 XSK I 17 /INCREMENT BN IF SS0=0 JMP SAMDIS /RTN TO OSCOPE IF SS0=0 HLT/SHOULD NEVER SKIP TO HERE / / / /TYPE OUT "TAPE FULL" CW4, LDA I 324 /T JMP CW3 LDA I 301 /A JMP CW3 LDA I 320 /P JMP CW3 LDA I 305 /E JMP CW3 LDA I 240 /SPACE JMP CW3 LDA I 306 /F JMP CW3 LDA I 325 /U JMP CW3 LDA I 314 /L JMP CW3 LDA I 314 /L JMP CW3 SET I 17 /RESET BN TO 0 0 LDA I /SET AC=777 777 HLT /MACHINE HALTS HERE JMP SAMDIS /START OVER CW3, STC CW6 LDA 0 STC CW5 LDA I CW6,0 /ASCII IOB 6041 /TSF JMP .-2 IOB 6046 /TLS CW5, JMP 0 /BECOMES RTN JMP / / / / /READ AUTOCORRELOGRAM OFF UNIT 1 /THEN DISPLAY IT UNTIL SS5=0 COREAD, SNS I 4 /ARRIVES HERE ONLY IF SNS5=1 JMP READBN /RS TO LOC 17 LDA /RETURNS HERE 17 BSE I /MAKE READ INST & READ 5000 STC CR1 RDC U CR1, 0 CR3, SET I 2 /SET UP & DISPLAY 1777 SET I 3 2377 SET I 4 1377 CR2, LDA I 3 DIS I 2 DIS I 2 XSK I 4 JMP CR2 SNS I 5 JMP CR3 XSK I 17 /INCREMENT BN JMP SAMDIS /IF SS5=1 /END OF AUTOCOR $AS W3, STC CW6 LDA 0 STC CW5 LDA I CW6,0 /ASCII IOB 6041 /TSF JMP .-2 IOB