File FLOAT-S

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

*20
	/// FLOAT-S
/SOFTWARE FLOATING POINT INTERPRETER
/FOR THE PDP-12, SIGSYS-12 SYSTEM.
/
/
/
/
/
/--------------------
/
/FLOATIN POINT INTERPRETER
/
/COPYRIGHT 1969
/AGRIPPA-ORD CORP.
/
/--------------------
/
/
/
/USED IN NON FFP SIGSYS
/STORED AT BLOCKS 4-7
/RUNS IN BANK 1
/UNDER EXEC CONTROL
/
/
/
/
	EJECT
/
/
/AC=USER PC
/USRMB AND USDMB PRESET
/
/
/
	SEGMNT 1
/
/
	*20
/
/
	USRMB=JMP .
/
	LDF
	JMP 0
/
	USDMB=JMP .
/
	LDF
	JMP 0
/
/
	*24
	NOP
INTERP,	STC 6
	ADD 0
	STC GO+4
	SKP
/
NXT,	XSK I 6
	NOP
	USRMB
	LDA 6
	SCR I 5
	SAE I
	17
	JMP GO
	QAC
	SCR 6
	ADA I
	OPRTAB
	STA
	2
	ADA I
	-OPRTAB-25
	APO I
	JMP RRET
	LDA 2
	STC GETARG+2
/
/TEST FOR FAC
TSTIND,	STC INCR
	LDA I 6
	AZE
	JMP .+3
	ADD FACP
	JMP SETARG
/
/TEST FOR INDIRECT
	ROL I 1
	SCR 5
	APO
	JMP NOINDR
	AZE
	JMP NOINDR
	GETREG
	LZE I
	JMP .+3
	STA I
INCR,	0
	SKP
/
NOINDR,	LDA 6
	ROL I 2
	LZE
	USDMB
	ROR I 2
	STA I
H,	0
	BSE I
C2000,	2000
SETARG,	STC GETARG+1
	CLR
/
GETARG,	JMP ARGET
TEMSIN,	0
	0
	JMP RET33
/
GO,	CLR
	ADD 6
	USDMB
	LIF 0
	JMP .
	EJECT
RET33,	ADD ONE
RET22,	ADD ONE
RET11,	ADD ONE
RET,	STC TEM
	ADD INCR
	AZE I
	JMP NXT
	USRMB
	GETREG
	ADD TEM
	STA 3
	JMP NXT
/
	GETREG=JMP .
/
	LDA 6
	BCL I
	7760
	ADD C2000
	STC 3
	LDA 3
	JMP 0
	EJECT
OPRTAB,	JMP RRET
	JMP FSUB
	JMP FMUL
	JMP FDIV
	JMP FLOAD
	JMP FSTORE
	JMP SETWRD
	JMP INPUT
	JMP OUTPUT
	JMP ISTOR1
	JMP SQRT
	JMP DFLOAT
	JMP SFLOAT
	JMP DFIX
	JMP FADD
	JMP ISTOR2
	JMP RRET
	JMP FCOMP
	JMP ZERF
	JMP FAPO
	JMP FAZE
	JMP RECIP
FLAG,	0
	EJECT
ARGET,	SET 17
	0
	JMP PSET
	SET 15
	16
	LDA 15
	STC ARG
	LDA I 15
	STC ARG+1
	LDA I 15
	STC ARG+2
	XSK I 17
	JMP 17
/
RECIP,	JMP LOAD
	FLTONE
	JMP FDIV
	JMP RET33
/
/
/
/
/
COMP,	CLR
	ADD FAC+1
	COM
	STC FAC+1
	ADD FAC+2
	COM
	STC FAC+2
	JMP 0
/
/
ARGFAC,	CLR
	ADD ARG
	STC FAC
	ADD ARG+1
	STC FAC+1
	ADD ARG+2
	STC FAC+2
	JMP 0
/
/
FACARG,	CLR
	ADD FAC
	STC ARG
	ADD FAC+1
	STC ARG+1
	ADD FAC+2
	STC ARG+2
	JMP 0
/
/
/
/
DFIX,	JMP ARGFAC
	JMP FIX
	CLR
	JMP RET33
/
FIX,	SET 17
	0
	JMP SETFAC
	LDA I
M27,	-27
	ADD FAC
	JMP F7M+2
	ADD FAC+2
	JMP 17
/
/
SFLOAT,	ADD ARG
	SCR 14
	STC FAC+1
	ADD ARG
	STC FAC+2
	JMP FLOAT
	JMP RET11
/
DFLOAT,	ADD ARG+1
	STC FAC+1
	ADD ARG
	STC FAC+2
	JMP FLOAT
	JMP RET22
/
FLOAT,	SET 17
	0
	LDA I
P27,	27
	STC FAC
	JMP F6C+5
	JMP SETFAC
	JMP F6G
	ADD FAC+1
	APO
	JMP .+3
	JMP NORMRO
	JMP 17
	JMP COMP
	JMP NORMRO
	JMP COMP
	JMP 17
/
/
/
/
/
FLOAD,	JMP ARGFAC
	JMP RET33
/
LOAD,	SET 17
	0
	JMP PSET
	LDA 16
	STC FAC
	LDA I 16
	STC FAC+1
	LDA I 16
	STC FAC+2
DX,	XSK I 17
	JMP 17
/
/
/
STORE,	SET 17
	0
	JMP PSET
	JMP FSTORE
	JMP DX
/
FSTORE,	ADD FAC
	STA 16
	LDA
	FAC+1
	STA I 16
	LDA
	FAC+2
	STA I 16
CX,	CLR
	JMP 0
/
ISTOR1,	ADD FAC+2
	STA 16
	CLR
	JMP RET11
/
ISTOR2,	ADD FAC+2
	STA 16
	LDA
	FAC+1
	STA I 16
	CLR
	JMP RET22
/
/
PSET,	LDA
	17
	BCL I
	6000
	STC 16
	LDA 16
	STC 16
	JMP 0
/
/
SETWRD,	ADD H
	STC ARG2
	JMP NXT
/
/
/
/
SQRT,	ADD ARG
	STA
	NUMBER
	SCR 1
	STC ARG
	ADD ARG+1
	AZE I
	JMP RET33
	APO
	JMP RET33
	STC NUMBER+1
	ADD ARG+2
	STC NUMBER+2
	JMP ARGFAC
	SET I 11
	-20
SQRT2,	JMP FACARG
	JMP LOAD
	NUMBER
	JMP FDIV
	JMP FADD
	ADD MONE
	ADM
FACP,	FAC
	XSK I 11
	JMP SQRT2
	CLR
	JMP RET33
/
FCOMP,	JMP COMP
RRET,	CLR
	JMP NXT+1
/
ZERF,	JMP FZER
	JMP RRET
/
FAPO,	ADD FAC+1
	APO I
	XSK I 6
	JMP RRET
/
FAZE,	ADD FAC+1
	AZE I
	XSK I 6
	JMP RRET
/FINI INTERPRETER
	EJECT
/
/INOUT
/INPUT OUTPUT
/ARG1 CONTAINS POINTER
/TO INPUT BUFFER
/
INPUT,	ADD H
	ADD M4000
	BSE I
	2000
	STC 7
	STC MFLAG
	STC NFLAG
	STC PFLAG
	STC FRCNT
	JMP FZER
LOOP1,	JMP STORE 
	NUMBER
	JMP ARGET
	TEN
	LDH I 7
	SHD I
	4500 	/CR
	JMP ENDSCN
	SHD I
	5500 	/-
	JMP MINUS
	SHD I
	5600 	/.
	JMP PERIOD
	ADA I
	-57
	APO
	JMP CHKFLG
	ADA I
	-12
	APO I
	JMP CHKFLG
GOTONE,	ADD CX
	AZE I
	COM
	STC TEMSIN
	JMP FMUL
	JMP STORE
	NUMBER
	ADD TEMSIN
	STC FAC+2
	STC FAC+1
	JMP FLOAT
	JMP ARGET
	NUMBER
	JMP FADD
	ADD ONE
	STC NFLAG
	ADD PFLAG
	AZE I
	JMP LOOP1
	ADM
	FRCNT
	JMP LOOP1
MINUS,	LDA
	NFLAG
	AZE
	JMP ENDSCN
	ADD ONE
	STC MFLAG
	JMP LOOP1
CHKFLG,	LDA I
NFLAG,	0
	AZE
	JMP ENDSCN
	JMP LOOP1
PERIOD,	LDA I
PFLAG,	0
	AZE
	JMP ENDSCN
	ADD MONE
	STC PFLAG
	JMP LOOP1
/
ENDSCN,	LDA I
FRCNT,	0
	AZE I
	JMP .+5
	STC 10
	JMP FDIV
	XSK I 10
	JMP .-2
	LDA I
MFLAG,	0
	AZE
	JMP COMP
	JMP NXT
/
/FINI INPUT
	EJECT
/
/OUTPUT
/ARG1 CONTAINS POINTER
/TO BUFFER
/ARG2 CONTAINS CONTROL WORD
/NUMBER IS IN FAC
/
/SAVE NUMBER
OUTPUT,	ADD H
	BSE I
	2000
	STC 11
	STC TEMSIN
	ADD FAC+1
	APO
	JMP COMPLI
O1,	JMP STORE
	NUMBER
/INITIALIZE OUTPUT BUFFER
/WITH BLANKS
/
	ADD ARG2
	ROL 6
	BCL I
SPCC,	7740
	AZE I
	JMP RET
	COM
	STA I
LNG,	0
	STC 10
/
/BLANK FILL
/
	ADD SPCC
	SKP
	STH I 11
	STH 11
	XSK I 10
	JMP .-3
/
/SET BUFFER POINTER
	SET I 10
	4\BUFFER-1
/ROUNDOFF
ROUND,	LDA I
ARG2,	0 	/SETWRD VALUE
	BCL I
	7770
C17,	COM
	STA
	FLNGTH
	MUL I
	3
	ADA I
	FLTONE
	STC GETNUM+1
	ADD ARG2
	ROL 6
	APO I
	JMP SEPNUM
	JMP LOAD
	ONEHAF
GETNUM,	JMP ARGET
	0
	JMP FDIV
	JMP ARGET
	NUMBER
	JMP FADD
/SEPARATE NUMBER
/INTO INTEGER AND FRACTION
SEPNUM,	SET I 12
	-2
	JMP INTGIZ
	SET I 7
ILNGTH,	-7
	LDA I
	TABLE
	STC SUBN
/
LOOP6,	SET I 13
M17,	-17
	JMP ARGET
SUBN,	TABLE
	JMP FSUB
	ADD FAC+1
	APO
	JMP .+3
	XSK I 13
	JMP .-7
	JMP FSUB
	ADD 13
	ADD C17
	ADD SIXTY
	STH I 10
	LDA I
	3
	ADM
	SUBN
	XSK I 7
	JMP LOOP6
	LDA
	FLNGTH
	AZE I
	JMP EBT
	LDH I 10 	/SPIN PAST 56
	JMP LOAD
	FRAC
	SET I 7
FLNGTH,	0
	JMP LOOP4+2
LOOP4,	JMP LOAD
	FRAC
	JMP ARGET
	TEN
	JMP FMUL
	JMP INTGIZ
FIXADR,	JMP FIX
	ADD SIXTY
	STH I 10
	XSK I 7
	JMP LOOP4
/INTERNAL BUFFER
/TO EXTERNAL BUFFER
/TRANSFER
EBT,	SET 16
	LNG
	SET I 12
	4\BUFFER-1
LOOP7,	LDH I 12
	SHD I
	6000
	JMP FILSEV
	SHD I
	5600
	SKP
	JMP LOOP2
	LDA I
SIXTY,	60
	STH 1
LOOP2,	LDH 10
	SHD I
	5000
	JMP CHKSIN
	STH 11
	XSK I 16
	SKP
	JMP CHKSIN
	LDA I
M4000,	3777
	ADD 10
	STC 10
	ADD M4000
	ADM
	11
	JMP LOOP2
/
COMPLI,	JMP COMP
	LDA I
	55
	STC TEMSIN
	JMP O1
/
FILSEV,	LDA I
	50
	STH 12
	SET 1
	12
	JMP LOOP7
/
INTGIZ,	SET 14
	0
	JMP STORE
	ARG
	JMP FIX
	JMP FLOAT
	JMP STORE
	INTGER
	JMP FSUB
	JMP COMP
	JMP STORE
	FRAC
	JMP LOAD
	INTGER
C14,	JMP 14
/
CHKSIN,	JMP LOAD
	NUMBER
	ADD TEMSIN
	AZE I
	JMP NXT
	STH 11
	JMP COMP
	JMP NXT
/
/
/CONSTANTS
/
	5050
BUFFER,	0
	0
	0
	0056
	0
	0
	0
	0
/
TABLE,	24
	3641
	1000
/
	21
	3032
	4000
/
	16
	2342
	0000
/
	12
	3720
	0000
/
	7
	3100
	0000
/
TEN,	4
	2400
	0000
/
ONE,	
FLTONE,	1
	2000
ONEHAF,	0
	2000
	0
INTGER,	0
	0
	0
FRAC,	0
	0
	0
NUMBER,	0
	0
	0
	EJECT
/
/FLOATING POINT SUBROUTINES
/
/
/ADD
FADD,	CLR
	ADD 0
	STC RET3
	JMP TRAARG
	ADD FAC
	COM
	ADD ARG
	454
	JMP .+4
	SCR 14
	BCO I
	7737
	SCR I 1
	ROL I 1
	LZE I
	COM
	STC F7M+1
	ADD ARG
	LZE I
	STC FAC 	/LARGER EXPONENT INTO FAC
	LZE
	JMP SETTEM
	LZE I
	JMP SETFAC 	/SET 6G+1 TO FAC
	JMP F7M
	JMP SETFAC
	SET I 1
	TEM
	JMP F7H
	JMP F7I-2
	LDA
	FAC+1
	JMP F6C+4
	JMP ONEFAC
	STC 2
	JMP F6D
	JMP NORMRO
RET3,	JMP
/
/SUBTRACT
/
FSUB,	CLR
	ADD 0
	STC RET3
	ADD ARG+1
	COM
	STC ARG+1
	ADD ARG+2
	COM
	STC ARG+2
	JMP FADD+3
	EJECT 
/MULTIPLY
/
FMUL,	CLR
	ADD 0
	STC RET4
	JMP SETFAC
	ADD ARG
	JMP OVRADD
	STC F7Y
	STC 2
	JMP F6C
	JMP TRARG2
	SET I 1
	TEM2
	JMP F6D
	JMP ONEFAC
	JMP F6D
	STC 0
	ADD TEM2+2
	ROR 1
	STC TEM2+2
	JMP SETTEM
	JMP F6G
	ADD FAC+1
	MUL
	4\TEM2+1
	STA 3
	QAC
	STA I 3
	LDA
	FAC+2
	ROR 1
	MUL
	4\TEM2+2
	ROL 1
	STA I 3
	LDA
	FAC+1
	MUL
	4\TEM2+2
	JMP F5F
F5D,	LDA
	FAC+2
	ROR 1
	MUL
	4\TEM2+1
	JMP F5F
	LDA
	TEM+2
	ROL I 1
	LDA
	TEM+1
	ROL I 1
	STC FAC+2
	ADD TEM
	STC FAC+1
	ADD F7Y
	STC FAC
	JMP SETFAC
	JMP NORMRO
RET4,	JMP
/
F5F,	STC FAC
	QAC
	ROL 1
	QLZ
	ADD F7K
	STC FAC+1
	SET I 1
	FAC-1
	JMP F7H
	SET I 2
	-0
	JMP F7I
	SRO I
	2525
	JMP F5D
	JMP F5D+6
/
	EJECT
/
/DIVIDE
/
FDIV,	CLR
	ADD 0
	STC RET5
	ADD F7K
	STC F5J+1
	STC 2
	ADD ARG+1
	AZE I
	JMP RET5
	JMP SETFAC
	JMP F6C
	JMP ONEFAC
	JMP F6D
	JMP TRARG2
	SET I 1
	TEM2
	JMP F6D
	LDA
	FAC+1
	AZE I
	JMP RET5
	STC TEM+1
	ADD FAC+2
	STC TEM+2
	ADD ARG
	COM
	JMP OVRADD
	JMP SETTEM
	JMP F6G
	ADD TEM2+1
	COM
	STC FAC+1
	ADD TEM2+2
	COM
	STC FAC+2
	STC F7X
	STC F7Y
	SET I 2
	F7X-1
F5H,	JMP ONEFAC
	JMP .+3
F5I,	SET I 1
	TEM2
	JMP F7H
F5J,	SRO I
	0001
	JMP F5M
	SET I 5
	-0
	JMP F6G
	LDA I 3
	AZE
	JMP F5K-3
	LDA I 3
	AZE I
	JMP F5K+2
	CLR
	JMP F6G
	LDA I 3
F5K,	APO
	JMP F5L
	LDA 2
	BSE
	F5J+1
	STA 2
	XSK I 5
F5L,	SET 1
	F6G+1
	JMP F6G
	JMP F7H
	XSK 5
	JMP F5H
	JMP F5I
F5M,	XSK I 2
	SRO I
	3333
	JMP F5J+3
	CLR
	ADD F7X
	STC FAC+1
	ADD F7Y
	STC FAC+2
	JMP SETFAC
	JMP NORMRO
RET5,	JMP
	EJECT
/
/COM SETUP
/
F6C,	LDA
	FAC+1
	BCO
	ARG+1
	ROL I 1
	LDA I
	NOP
	LZE
	ADD .+3
	STC F7S
	JMP 0
	JMP F6D-20
/
	SET I 2
	-0
/
/COM\ABS 1
/
F6D,	LDA I 1
	SCR I 1
	ROL I 1
	XSK 2
	LZE
	COM
	STA 1
	LDA I 1
	XSK 2
	LZE
	COM
	STA 1
	JMP 0
/
/OVF CHECK
/
OVRADD,	SET 15
	0
	JMP F6G
	ADA 3
	AZE I
	CLR
	STA 3
	JMP 15
/SET 3
F6G,	SET I 3
	0
	JMP 0
/
ONEFAC,	SET I 1
	FAC 
	JMP 0
/
ONEARG,	SET I 1
	ARG
	JMP 0
/
TRAARG,	LDA
	ARG
	STC TEM
	ADD ARG+1
	STC TEM+1
	ADD ARG+2
	STC TEM+2
	JMP 0
/
TRARG2,	LDA
	ARG
	STC TEM2
	ADD ARG+1
	STC TEM2+1
	ADD ARG+2
	STC TEM2+2
	JMP 0
/
SETFAC,	LDA I
	FAC
	STC F6G+1
	JMP 0
/
SETTEM,	LDA I
	TEM
	STC F6G+1
	JMP 0
/ADD 1 TO 3
F7H,	SET 4
	0
	CLR
	JMP F6G
	LDA I 1
	STC F7J
	LDA I 3
	STC F7J+2
	LDA 1
	LAM 3
	LDA I 1
	LAM I 3
	JMP F6G
	STC 0
	LAM I 3
	STC 0
	LAM I 3
	JMP 4
/
	EJECT
/
	SET I 2
	0
/CHECK FOR
/ADD OVERFLOW
F7I,	SET 1
	0
	JMP F6G
	LDA I
F7J,	0
	BCO I
	0
	APO
	JMP 1
	LDA I 3
	BCO
	F7J
	APO I
	JMP 1
	LDA I
F7K,	1
	JMP OVRADD
	LDA I
MONE,	
F7L,	-1
	XSK 2
	JMP F7M+2
	JMP F6G
	LDA I 3
	BCO I
	4000
	STA 3
	JMP 1
/
/SCR N  3
/
F7M,	LDA I
	0
	SET 2
	0
	AZE I
	JMP 2
	STC 5
	SET I 4
	-30
F7O,	CLR
	JMP F6G
	LDA I 3
	SCR I 1
	STA 3
	LDA I 3
	ROR I 1
	STA 3
	XSK I 4
	JMP .+2
	JMP .+3
	XSK I 5
	JMP F7O
	CLR
	JMP 2
	EJECT
/
/NORMALIZE
/
NORMRO,	CLR
	STC 1
	ADD 0
	STC RET6
	ADD FAC+1
	SAE
	FAC+2
	JMP .+5
	AZE
	JMP .+3
	JMP FZER
	JMP RET6
/
	LDA
	FAC+1
	APO
	JMP F7U
	ROL 1
	APO I
	JMP SHIFTL
/
F7R,	LDA
	FAC+2
	ROR I 1
	STC 0
	LAM
	FAC+2
	STC 0
	LAM
	FAC+1
	APO
	JMP F7V
	CLR
	ADD 1
	COM
	JMP OVRADD
	JMP ONEFAC
F7S,	NOP
	CLR
RET6,	JMP
/
SHIFTL,	LDA
	FAC+2
	ROL I 1
	STC FAC+2
	ADD FAC+1
	ROL I 1
	STA
	FAC+1
	XSK I 1
	JMP F7R-3
/
F7U,	JMP F7V
	JMP F7R
/
F7V,	CLR
	ADD 0
	STC F7X
	ADD MONE
	JMP F7M+2
	ADD MONE
	ADD 1
	STC 1
	ADD FAC+1
	BCL I
	4000
	STC FAC+1
F7X,	0
F7Y,	0
/
/FORCE ZERO AC
/
FZER,	LDA I
	4000
	STC FAC
	STC FAC+1
	STC FAC+2
	JMP 0
/
TEM,	0
	0
	0
TEM2,	0
	0
	0
A,	
/
	*1772
ARG,	0
	0
	0
FAC,	0
	0
	0
/
/FLOAT-S
/AUG 73



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