File CONVRT.SB (8k SABR macro assembler source file)

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

//	CONVERSION ROUTINES
/
/	IVAL=IFIXR(FPAR)
/
/	SAME AS FIX, ONLY WITH ROUNDING.
/
/	"FIXR" ERROR IF ABS(FPAR).GE.2047.5
/----------
/
/	FVAL=F4096(IPAR)
/
/	FLOATS 'IPAR' SO IT HAS VALUE FROM 0-4096.
/----------
/
/	IVAL=I4096(FPAR)
/
/	'FIX'ES FPAR TO AN INTEGER, MODULO 4095.
/	E.G.  2047. -> 2047    3000. -> -1096   -3000. -> 1096
/----------

	ENTRY F4096
	ENTRY I4096
	ENTRY IFIXR

OPDEF	TADI	1400
ABSYM	MINUS2	7344	/CLA CLL CMA RAL

/	****  PAGE 0 LOCATIONS  ****

ABSYM	ACX	125	/EXPONENT OF NUMBER.
ABSYM	ACHI	126	/HIGH ORDER WORD.
ABSYM	ACMI	127	/MIDDLE ORDER WORD.
ABSYM	SKPPOS	130	/-1 IF SIGN +, -2 IF -.
ABSYM	CTR	131	/COUNTER FOR SHIFTS.
ABSYM	ADDR	132	/ADDR POINTER FOR PARA.

	LAP		/THIS SHOULD FIT ON 1 PAGE!!!!!!!


F4096,	BLOCK 2		/////////     F4096(IPAR)
	TAD F4096
	DCA FCDF1
FCDF1,	HLT
	TADI F4096#
	DCA FCDF2
	INC F4096#
	TADI F4096#
	DCA ADDR
	INC F4096#
FCDF2,	HLT
	TADI ADDR
	JMS JUSTFY
	DCA TRICL	/ZERO OUT LOWER ORDER WORD.
	CALL 1,FSB	/ALSO NORMALIZES.
	ARG TRICK
	RETRN F4096

TRICK,	2335
	0000
TRICL,	0000

I4096,	BLOCK 2		////////    I4096(FPAR)
	TAD I4096
	DCA IARG
	TAD I4096#
	DCA IARG#
	INC I4096#
	INC I4096#
	CALL 1,IFAD
IARG,	ARG IARG
	JMS JUSTFY
	TAD ACL
	CALL 0,CLEAR
	RETRN I4096

JUSTFY,	0
	DCA TRICL
	CALL 1,FAD
	ARG TRICK
	JMP I JUSTFY


IFXERR,	CALL 1,ERROR
	ARG IFIXM
	CLA CMA CLL RAR	/AC=2047.
	JMP CHKSGN

IFIXM,	4611;3022	/ "FIXR"  (NON-FATAL)

IFIXR,	BLOCK 2		////////    IFIXR(FPAR)
	TAD IFIXR
	DCA CDFA
CDFA,	HLT
	TADI IFIXR#
	DCA CDFB
	INC IFIXR#
	TADI IFIXR#
	DCA ADDR
	INC IFIXR#
CDFB,	HLT
	TADI ADDR
	DCA ACHI
	INC ADDR
	TADI ADDR
	DCA ACMI
	MINUS2
	DCA SKPPOS
	TAD ACHI
	SNA
	JMP IFIXED	/0.   RETURN NOW.
	SMA
	INC SKPPOS	/SET SKPPOS CORRECTLY.
	AND (3770
	CLL RTR;RAR	/RIGHT JUSTIFY.
	DCA ACX
	TAD ACX
	TAD (-200
	SPA CLA
	JMP IFIXED	/EXPON < 0.  RETURN 0.
	TAD ACX
	TAD (-214
	SMA
	JMP IFXERR
	DCA CTR
	TAD ACMI
	AND (7774
	DCA ACMI
	TAD ACHI
	AND (7
	CLL RAR
	TAD ACMI
	RTR; RAR	/SHIFT IN THE THREE BITS.
LOOP,	CLL RAR		/RIGHT SHIFT POS. NUM.
	ISZ CTR
	JMP LOOP
	SZL		/IS REMAINDER BIT SET (.LE. .5)?
	IAC		/YES.  ROUND UP NUMBER.
	SPA		/CHECK FOR N>2047.5
	JMP IFXERR	/YES.  TUT-TUT.
CHKSGN,	ISZ SKPPOS	/CHANGE SIGN?
	CIA		/YES.
IFIXED,	RETRN IFIXR

	END



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