File AUTOCOR

Directory of image this file is from
This file as a plain text file

*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



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search