File REGFRC

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

*20
/// REGFRC
	 
/DISPLAYS NUMFILE DATA GENERATED BY 
/PROGRAM FRC.
	 
/CALCULATES LEAST SQS. REGRESSION FIT
/FOR RAW OR LOG NORMALIZED DATA SETS.
	 
	SEGMNT 5
	*20
	 
BEG,	JMP USROFF	/KILL ALL USERS
	 
	 
/INTRACT SEQUENCE
	 
	 
	 
Q1,	LIF 4
	INTRACT
	CJ1		/ REGFRC
	M1		/FILENAME
	 
	 
/DISPLAY THE DATA
	 
DSP,	JMP DISPLA
	 
/OPEN INPUT BUFFER
	 
	 
Q2,	LIF 4
	INTRACT
	CJ2
	MCOLON		/:
	 
	 
/DECISION TABLES
	 
	 
CJ1,	T1
	J1
	 
	 
CJ2,	T2
	J2
	 
	 
/COMMAND LISTS
	 
	 
T2,	B		/REMOVE LINE
	NEXT		/SUBTRACT LINE
	GO		/DO REGRESSION
	NO		/REMOVE CU
	CU		/CURSOR
	C		/DO LOG
T1,	0
	 
	 
	 
/JUMP LISTS ASSOC. WITH DECISIONS
	 
	 
	 
/FILENAME:
	 
	 
J1,	JMP BEG		/CR
	JMP FILEIN	/0
	 
	 
/MAIN CONTROLLING JUMP LIST
	 
	 
	 
J2,	JMP BEG		/CR
	JMP NOLINE	/B
	JMP SUBLIN	/NEXT
	JMP DOREG	/GO
	JMP NOCURS	/NO
	JMP CURS	/CU
	JMP LOG10	/L
	JMP QUES	/0
	 
	 
	 
QUES,	LIF 4
	MESOUT
	MQUES		/??
	JMP Q2
	 
	 
	 
/SUBROUTINES FOLLOW
	 
	 
/BRING IN FILE
/PBLOCK TO  Q7,DF7; DATA TO DF6
	 
	 
FILEIN,	LDF 4
	FIX
	FAC
	ISTOR2
	FILNAM+1
	DFLOAT
	FILNAM+1
	SETWRD
	0400
	OUTPUT
	NAMBUF+1
	LDA
	INBUF
	STA
	FILNAM
	STC NAMBUF
	 
	 
/GETFIL
	 
	 
	LDA I
	7107
	STA
	WORD1
	LDA I
	4406
	STA
	WORD2
	 
Q1A,	LIF 4
	INUNIT
	 
GETF,	LIF 4
	MGETFIL
	 JMP NOT	/NOT FOUND
	JMP NOT		/NOT FOUND
	 
/GOT FILE, CHECK DATATYPE
	 
	 
	LDF 7
	LDA
	P0		/DATA TYPE
	APO I
	JMP WRONG	/NOT NUMFILE
	LDA
	P1		/NUMBER TYPE
	SAE I
	3
	JMP WRONG	/NOT AN FP FILE
	LDA
	P17		/DIMENSION
	ADA I
	-2
	APO I
	JMP WRONG	/DIM >2
	JMP DSP		/FILE OK, LEAVE
	 
	 
NOT,	LIF 4
	MESOUT
	MNO		/NO
	JMP BEG
	 
	 
WRONG,	LIF 4
	MESOUT
	MWRONG		/NOT A NO. FILE
	JMP BEG
	 
	 
	 
/SCALE X DATA
/FIRST GET MAX X VALUE; I.E. LAST X ENTRY
	 
	 
DISPLA,	LDF 7
	LDA
	P20		/NO. OF PTS.
	ADD KM1
	MUL
	P17		/DIMESNION
	MUL I
	3
	ADD KP2000
	STC .+3
	LDF 6
	LOAD
	0
	 
/STORE IN OUTPUT BUFFER
	 
	 
	STORE
	XMAX
	STORE
	XEND		/INITIALIZE LAST PT.
	SETWRD
	0742
	OUTPUT
	ABSBUF
	 
/CALC SCALE FACTOR
	 
	LOAD
	FP256
	FDIV
	XMAX
	STORE
	XFUDG
	 
/SCALE DATA; STORE IN DF7
	 
	SET I 1
	2000		/GET P0INTER
	JMP PTCNTR	/NO. OF PTS CNTR
	SET I 3
	2000		/PUT POINTER
	 
	 
XSCL,	LDF 6
	LOAD
	4001
	FMUL
	XFUDG
	LDF 7
	FIX
	FAC
	ISTOR1
	4003
	XSK I 3		/INC PUT PTR
	JMP INC1	/INC GET PTR
	XSK I 2		/DONE?
	JMP XSCL	/NO
	 
/X DATA SCALED; NOW SCALE Y DATA
/CALC Y FUDGE FACTOR
	 
DISLOG,	LDF 7
	LOAD
	P102		/MAX Y VALUE
	FSUB
	P103		/MIN Y VALUE
	STORE
	YFUDG
	LOAD
	FP200		/Y FULL SCALE
	FDIV
	YFUDG
	STORE
	YFUDG		/Y SCALE FACTOR
/CALCULATE SUBTRACTION FACTOR TO MAKE
/Y ORIGIN = MIN Y VALUE
	LOAD
	P103
	FMUL
	YFUDG
	STORE
	SUBFAC
	 
	 
/SET Y DISPLAY SCALE
	 
	LOAD
	P102		/MAX Y VALUE
	SETWRD
	0742
	OUTPUT
	ORDMAX
	LOAD
	P103		/MIN Y VALUE
	OUTPUT
	ORDMIN
	 
	 
/SCALE DATA; STORE IN DF7
	 
	 
DISSUB,	SET I 1
	2003
	JMP PTCNTR	/ NO. OF PTS CNTR
	SET I 3
	2001
YSCL,	LDF 6
	LOAD
	4001
	FMUL
	YFUDG
	FSUB
	SUBFAC
	FIX
	FAC
	LDF 7
	ISTOR1
	4003
	XSK I 3		/INC PUT PTR
	JMP INC1	/INC GET PTR
	XSK I 2		/DONE?
	JMP YSCL	/NO
	 
	 
/DISPLAY AXES, SCALES, NAME & CURSOR
/VALUES.
/START WITH NO CURSOR
	 
	 
DODIS,	OPR 11
	26
	0
	5
	DISBUF
	JMP .-5
	 
/START DATA DISPLAY USER
	 
	OPR 1
	2
	DISP
	JMP .-3
/OPEN INPUT BUFFER
	 
	JMP Q2
	 
/USER TO DISPLAY SCALED DATA IN DF7
/ALSO DISPLAYS CURSOR WHEN CALLED FOR
	 
	 
DISP,	OPR 7
	SET I 1
	3777
	JMP PTCNTR
	LDF 7
	LDA I 1		/X
	ADD KP140
	STC 15
	LDA I 1		/Y
	ADD KM42
	DIS 15
	XSK I 2
	JMP .-10
SAMT,	JMP DISP	/OR NOP FOR CURSOR
	 
/CODE TO HANDLE CURSOR DISPLAY
	SAM 0		/CURSOR KNOB
	SCR 2
	ADA I
	177		/ACCESS CU
	SAE I
CUR,	0		/CURRENT CU
	SKP
	JMP DISCU	/CU NOT MOVED
	 
/NEW CU VALUE; GET X & Y VALUES FOR
/NUMERICAL DISPLAY
	STA
	CUR
	MUL I
KP6,	6
	ADD KP2000
	STA I
CURADR,	0
	STC 10
	SETWRD
	1042
	LDF 6
	LOAD
	4010		/X
	OUTPUT
	CXB+2
	LOAD
	10		/Y
	OUTPUT
	CYB+2
	 
/DISPLAY CURSOR
	 
	 
DISCU,	LDF 7
	LDA
	P20		/NO. OF PTS
	ADD KM1
	COM
	ADD CUR		/CURRENT CU PT
	APO
	JMP .+5		/CUR < P20
	LDA		/CUR > P20
	P20		/DIS LAST PT
	ADD KM1
	JMP .+3
	LDA
	CUR
	ROL 1		/X2
	ADD KP2000
	STC 10		/ADR OF X VALUE
	SET I 12
	-6		/CU CNTR
	LDA 10		/X
	ADD KP140	/140<X<540
	STC 5
	LDA I 10	/Y
	ADD KM42
	ADD KP6		/FORM CU
	DIS 5
	ADD KM1
	XSK I 12
	JMP .-3
	JMP DISP
	 
	 
/ROUTINE TO REMOVE CURSOR
	 
	 
NOCURS,	LDA I
	4000
	STC CRSBUF
	LDA I
	JMP DISP
	STC SAMT
	JMP Q2		/BACK TO INPUT
	 
	 
/ROUTINE TO KILL REGRESSION LINE DISPLAY
	 
	 
NOLINE,	JMP USROFF	/KILL ALL USERS
	JMP DODIS	/RESTART DATA DISPLAY
	 
	 
	 
/ROUTINE TO CALCULATE LOG (BASE 10) OF DATA SET
	 
	 
	 
LOG10,	JMP USROFF	/KILL ALL USERS
	SET I 1
	2003
	JMP PTCNTR
	LDF 6
MORLOG,	LOAD
	1
	JMP LOG		/DO LOG
	 HLT		/ERROR
	STORE
	4001		/PUT BACK
	JMP INC1	/INCREMENT BETA1
	XSK I 2		/DONE?
	JMP MORLOG 
	 
	 
/LOG DONE ON DATA
/RESTRART DISPLAY AND OPEN INPUT BUFFER
/FIRST, DO LOG OF MAX & MIN Y VALUES FOR SCALE
	 
	LDF 7
	LOAD
	P102		/MAX Y VALUE
	JMP LOG
	 HLT		/ERROR
	STORE
	P102
	LOAD
	P103		/MIN Y VALUE
	JMP LOG
	 HLT
	STORE
	P103
	 
	JMP DISLOG
	 
/
/
/ROUTINE TO CALCULATE COMMON LOG (BASE 10)
/USES POLYNOMIAL APPROXIMATION
/
LOG,	STORE
	TEM		/X
	SET 3
	0
/CHECK IF X=0
	FAZE
	SKP
	JMP 3		/ERROR RETURN
/
	ADD TEM		/EXPONENT
	ADA I
	-1		/DIV BY 2
	STC EXP
	STC TEM		/CLR EXPONENT
	LOAD
	TEM
	FMUL
	FP2		/1<X<10
/
/CALCULATE X DEPENDENT FACTOR IN 
/POLYNOMIAL APPROXIMATION
/
	STORE
	TEM
	FADD
	SQRT10
	STORE
	XFAC
	LOAD
	TEM
	FSUB
	SQRT10
	FDIV
	XFAC
	STORE
	XFAC
/
/DO POLYNOMIAL APPROXIMATION
/
	LOAD
	C5
	JMP MULT
	FADD
	C3
	JMP MULT
	FADD
	C1
	JMP MULT+2
	FADD
	FHALF
	STORE
	TEM
/
/ADD IN EXPONENT AS MULTIPLE OF LOG 2
	SFLOAT
	EXP
	FMUL
	LOG2		/LOG(10) 2
	FADD
	TEM
	XSK I 3
	JMP 3
/
MULT,	FMUL
	XFAC
	FMUL
	XFAC
	JMP 0
/
/
TEM,	0
	0
	0
XFAC,	0
	0
	0
LOGE,	7776		/.4342945
	3362
	6756
LOG2,	7776		/.3010
	2320
	7126
FP2,	2		/2
	2000
	0
FP10,	4		/10
	2400
	0
FHALF,	0
	2000
	0
C5,	7776		/.2543275
	2021
	5633
C3,	7776		/.2773839
	2160
	1242
C1,	0		/.8690286
	3363
	6125
SQRT10,	2		/SQUARE ROOT 10
	3123		/3.16227766
	0540
EXP,	0
/
/END SUBROUTINE LOG
	 
	 
/ROUTINE TO DO REGRESSION ANALYSIS
	 
/ZERO OUT THE HOLDING BUFFERS
	 
DOREG,	JMP USROFF	/KILL ALL USERS
	SET I 4
	SUMX-1
	SET I 5
	-17
	CLR
	STA I 4
	XSK I 5
	JMP .-2
	 
	LDA
	CURADR		/CU DATA PT ADDRESS
	STA
	CURPT		/SUBLIN END PT
	STC 1		/GET PTR
	STC 2		/NO OF PTS CNTR
	 
X,	LDF 6
	LOAD
	4001
	STORE
	XTEM
	FADD
	SUMX
	STORE
	SUMX
	LOAD
	XTEM
	FMUL
	FAC
	FADD
	SUMX2
	STORE
	SUMX2
Y,	LOAD
	4001
	STORE
	YTEM
	FADD
	SUMY
	STORE
	SUMY
	LOAD
	YTEM
	FMUL
	FAC
	FADD
	SUMY2
	STORE
	SUMY2
	LOAD
	XTEM
	FMUL
	YTEM
	FADD
	SUMXY
	STORE
	SUMXY
	XSK I 2		/INC PTS CNTR
	 
/CHECK IF REACHED END OF LINE POINTS
	 
	LOAD
	XTEM
	FSUB
	XEND		/LAST POINT
	FAZE
	JMP X		/NO
	 
/DONE; DO REGRESSION COMPUTATIONS
/FIRST GET NO OF PTS (N)
	 
	ADD 2		/PT CNTR
	STC N
	SFLOAT
	N
	STORE
	N
	 
/DO EX2 = EX2 - (EX)2/N
	 
	LOAD
	SUMX
	FMUL
	FAC
	FDIV
	N
	FCOMP
	FADD
	SUMX2
	STORE
	SIGMA1
	 
/DO EY2
	 
	LOAD
	SUMY
	FMUL
	FAC
	FDIV
	N
	FCOMP
	FADD
	SUMY2
	STORE
	SIGMA2
	 
/DO EXY 
	 
	LOAD
	SUMX
	FMUL
	SUMY
	FDIV
	N
	FCOMP
	FADD
	SUMXY
	STORE
	SIGMA3
	 
/CLACULATE THE LINE FORMULA
/FIRST GET MEANS
	 
	LOAD
	SUMX
	FDIV
	N
	STORE
	MEANX
	LOAD
	SUMY
	FDIV
	N
	STORE
	MEANY
	 
/CALCULATE B
	 
	LOAD
	SIGMA3
	FDIV
	SIGMA1
	STORE
	BB		/SLOPE
	 
/DERIVE VALUES FOR THE EQUATION
	 
	FMUL
	MEANX
	FCOMP
	FADD
	MEANY
	STORE
	AA		/Y-INTERCEPT
	 
/WORK OUT ANOV FOR THE LINE
/REGRESSION SS
	 
	LOAD
	SIGMA3
	FMUL
	FAC
	FDIV
	SIGMA1
	STORE
	REGSS
	 
	 
/DEVIATION SS
	 
	LOAD
	SIGMA2
	FSUB
	REGSS
	STORE
	DEVSS
	 
/COMPUTE F
	 
	LOAD
	N
	FSUB
	FP2
	STORE
	DEVDF
	LOAD
	DEVSS
	FDIV
	DEVDF
	STORE
	DEVMS
	LOAD
	REGSS
	FDIV
	DEVMS
	STORE
	FF
	 
/COMPUTE R
	 
	LOAD
	REGSS
	FDIV
	SIGMA2
	SQRT
	FAC
	STORE
	R
	 
/OUTPUT THIS MESS
	 
	SETWRD
	1244
	LOAD
	BB
	OUTPUT
	MSLOPE+3
	LOAD
	AA
	OUTPUT
	MINTR+6
	LOAD
	R
	OUTPUT
	MR+1
	LOAD
	FF
	OUTPUT
	MF+1
	LIF 4
	MESOUT
	MSLOPE
	LIF 4
	MESOUT
	MINTR
	LIF 4
	MESOUT
	MR
	LIF 4
	MESOUT
	MF
	 
	 
/CALCULATE THE LINE FOR DISPLAY
	 
	LDF 7
	SET I 2
	-400
	SET I 3
	2400
	FZER
	STORE
	XPT
MORLIN,	LOAD
	XPT
	FADD
	FP1
	STORE
	XPT
	 
/GET THE REAL WORLD VALUE OF X
	 
	LOAD
	XFUDG
	RECIP
	FAC
	FMUL
	XPT
	JMP GETY 	/CALC Y LINE VALUE
	FMUL
	YFUDG
	FSUB
	SUBFAC
	FIX
	FAC
	ISTOR1
	4003
	XSK I 2
	JMP MORLIN
	 
/START DISPLAY
	 
	OPR 1
	2
	DISLIN
	JMP .-3
	 
/JMP TO DATA DISPLAY
	 
	JMP DODIS
	 
	 
	 
	 
/ROUTINE TO START CURSOR
	 
	 
CURS,	CLR
	STC CRSBUF
	LDA I
	NOP
	STC SAMT
	JMP Q2		/BACK TO INPUT
	 
	 
/ROUTINE TO SUBTRACT REGRESSION LINE 
/FROM DATA SET
	 
SUBLIN,	JMP USROFF	/KILL DISPLAY
	 
	 
/CALCULATE Y VALUE OF LINE AT EACH PT
/AND SUBTRACT FROM Y VALUE OF DATA SET
	 
	SET I 1
	2000
	JMP PTCNTR	/NO. OF PTS CNTR
	LDF 6
MORSUB,	LDA
	1
	SAE I
CURPT,	0		/CURSOR PT
	SKP
	JMP ZERPT1	/ZERO REMAINING PTS
	LOAD
	4001		/X VALUE
	STORE
	XEND		/NEW LAST POINT
	JMP GETY	/GET Y VAL OF LINE
	LOAD
	1		/Y DATA VLUE
	FSUB
	YLIN		/Y LINE VALUE
	STORE
	4001		/REPLACE IN DATA SET
	XSK I 2
	JMP MORSUB
	JMP FINSUB
	 
	 
/REACHED CURSOR PT; ZERO SUBSEQUENT Y VALUES. 
	 
ZERPT,	FZER
	STORE
	4001
	XSK I 2		/DONE ALL PTS?
	SKP		/NO
	JMP FINSUB	/YES, LEAVE
ZERPT1,	LOAD
	4001		/X; INC TO Y
	JMP ZERPT
	 
	 
/LINE SUBTRACTED FROM DATA SET
/DISPLAY NEW DATA SET
	 
FINSUB,	JMP DISSUB
	 
	 
/SMALL SUBROUTINES FOLLOW
	 
	 
PTCNTR,	LDF 7
	LDA
	P20		/NO. OF PTS
	COM
	STC 2
	JMP 0
	 
INC1,	LDA I 1
	LDA I 1
	LDA I 1
	JMP 0
	 
	 
DISLIN,	OPR 7
	SET I 1
	2377
	SET I 2
	-400
	SET I 14
	137
	LDF 7
	LDA I 1		/Y
	ADD KM42
	DIS I 14
	XSK I 2		/DONE?
	JMP .-4		/NO
	JMP DISLIN	/YES
	 
GETY,	FMUL
	BB		/SLOPE
	FADD
	AA		/Y INTERCEPT
	STORE
	YLIN		/Y LINE VALUE
	JMP 0
	 
USROFF,	OPR 2
	0
	JMP 0
	 
	 
	 
/DEFINED LOCATIONS AND BUFFERS
	 
	 
/X AXIS
	 
DISBUF,	-0
	0		/LINE
	140		/X
	-42		/Y
	540		/X
	-42		/Y
	4001
	 
/Y AXIS
	 
	-0
	0		/LINE
KP140,	140		/X
KM42,	-42		/Y
	140		/X
	246		/Y
	4001
	 
/X SCALE
	 
	0
	0
	540		/X
	-50		/Y
	LDF 5
	ABSBUF
	4001
	 
/MAX Y SCALE
	 
	0
	0
	0		/X
	240		/Y
	LDF 5
	ORDMAX
	4001
	 
/MIN Y SCALE
	 
	0
	0
	0		/X
	-30		/Y
	LDF 5
	ORDMIN
	4001
	 
/FILENAME
	 
	0
	0
	0		/X
	340		/Y
	LDF 5
	NAMBUF
	4001
	 
/CURSOR
	 
CRSBUF,	4000		/OR 0 FOR CURSOR
	0
	540
	-200
	LDF 5
	CXB
	4001
	4000
	 
	 
	 
NAMBUF,	4040
	4040
	4040
	4034
ABSBUF,	4040
	4040
	4040
	4034
ORDMAX,	4040
	4040
	4040
	4034
ORDMIN,	4040
	4040
	4040
	4034
CXB,	4030
	4040
	4040
	4040
	4040
	4040
	4343
CYB,	4031
	4040
	4040
	4040
	4040
	4040
	3400
	 
	 
XEND,	0
	0
	0
XMAX,	0
	0
	0
XFUDG,	0
	0
	0
YFUDG,	0
	0
	0
SUBFAC,	0
	0
	0
FP200,	10
	3100
	0
FP256,	11
	2000
	0
YLIN,	0
	0
	0
YTEM,	0
	0
	0
XTEM,	0
	0
	0
SUMX,	0
	0
	0
SUMY,	0
	0
	0
SUMX2,	0
	0
	0
SUMY2,	0
	0
	0
SUMXY,	0
	0
	0
SIGMA1,	0
	0
	0
SIGMA2,	0
	0
	0
SIGMA3,	0
	0
	0
N,	0
	0
	0
BB,	0
	0
	0
AA,	0
	0
	0
MEANX,	0
	0
	0
MEANY,	0
	0
	0
REGSS,	0
	0
	0
DEVSS,	0
	0
	0
DEVDF,	0
	0
	0
DEVMS,	0
	0
	0
FF,	0
	0
	0
R,	0
	0
	0
XPT,	0
	0
	0
FP1,	1
	2000
	0
	 
	 
	 
/MESSAGES
	 
	 
MNO,	TEXT &NO SUCH FILE&
	4543
	 
MWRONG,	TEXT &WRONG FILE TYPE &
	4543
	 
M1,	TEXT &PROGRAM REGFRC&
	4543
	TEXT &INPUT FILENAME: &
	 
	 
MCOLON,	TEXT &: &
	 
MSLOPE,	TEXT &SLOPE=          &
	4543
	 
MINTR,	TEXT &Y INTERCEPT=          &
	4543
	 
MR,	TEXT &R=          &
	4543
	 
MF,	TEXT &F=          &
	4543
	 
MQUES,	TEXT &??&
	4543
	 
	 
	 
KM1,	-1
KP2000,	2000
AAEND5,	0
	 
/PBLOCK FOLLOWS
	NOLIST
//PBLOCK
/PARAMETER BLOCK ASSIGNMENTS
/
	P0=3400		/DATA TYPE
	P1=3401		/CURRENT CHAN.
	P17=3417	/NO.SAMP IN SEG
	P20=3420	/NO.SEG IN ENSM
	P102=3602	/MAX Y VALUE
	P103=3605	/MIN Y VALUE
/
/
/COMMAND DECODER ASSIGNMENTS
/
/
	STOP=JMP 20
	STORIT=JMP 23
	GETFIL=JMP 24
	ASSIGN=JMP 30
	DEASS=JMP 31
	INTRACT=JMP 42
	MESOUT=JMP 43
	MGETFIL=JMP 56
	INUNIT=JMP 22
/
/COMMAND LOCATIONS.
/
	FILNAM=2320
	WORD1=2323
	WORD2=2324
	INBUF=2325
	 
/COMMAND NUMBERS.
	 
	NO=20
	GO=23
	NEXT=24
	CU=25
	B=32
	C=33
/
/EXEC3 ASSIGNMENTS
/
	OPR=500
	 
/FLOATING POINT DEFINITIONS.
/
	FAC=0
	FSUB=741
	FMUL=742
	FDIV=743
	LOAD=744
	STORE=745
	SETWRD=746
	INPUT=747
	OUTPUT=750
	ISTOR1=751
	SQRT=752
	SFLOAT=754
	DFLOAT=753
	FIX=755
	FADD=756
	ISTOR2=757
	FCOMP=761
	FZER=762
	FAPO=763
	FAZE=764
	RECIP=765
/
/
/PBLOCK
/JUNE 73
	 
	LIST
	 
	 
///END REGFRC
/APRIL 77
/FHD,JLB



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