
/SHIFT RIGHT SHIFT LEFT SUBROUTINES
/SINGLE AND DOUBLE PRECISION
/SHIFTS ARE ARITHMETIC RATHER THAN LOGICAL
/BITS SHIFTED OUT OF REGISTER ARE LOST
/DURING LEFT SHIFTS ZEROS ENTER LEAST SIG. BIT
/DURING POSITIVE RIGHT SHIFTS ZEROS ENTER MOST SIG. BIT
/DURING NEGATIVE RIGHT SHIFTS SIGN IS PROPAGATED
/ENTER WITH -N IN AC
/CALLING SEQUENCE:	JMS SPSL OR SPSR OR DPSL OR DPSR
/			ADDRESS OF DATA
/			RETURN, RESULT IN AC FOR SINGLE
/			        RESULT (MSB) IN AC FOR DOUBLE
/			        RESULT (LSB) IN LSH FOR DOUBLE
*600
SPSL,	0
	DCA CNTR		/SINGLE PRECISION SHIFT LEFT
	TAD I SPSL
	DCA ADDR
	TAD I ADDR
	ISZ SPSL
	CLL RAL
	ISZ CNTR
	JMP .-2
	JMP I SPSL
SPSR,	0
	DCA CNTR		/SINGLE PRECISION SHIFT RIGHT
	TAD I SPSR
	DCA ADDR
	TAD I ADDR
	ISZ SPSR
	CLL
	SPA
	CML
	RAR
	ISZ CNTR
	JMP .-5
	JMP I SPSR
DPSL,	0
	DCA CNTR		/DOUBLE PRECISION SHIFT LEFT
	TAD I DPSL
	DCA ADDR
	TAD I ADDR
	DCA MSH		/MOST SIGNIFICANT HALF
	ISZ ADDR
	TAD I ADDR
	DCA LSH		/LEAST SIGNIFICANT HALF
	ISZ DPSL
	TAD LSH		/SHIFT LEFT
	CLL RAL
	DCA LSH
	TAD MSH
	RAL
	DCA MSH
	ISZ CNTR
	JMP .-7
	TAD MSH
	JMP I DPSL

DPSR,	0
	DCA CNTR		/DOUBLE PRECISION SHIFT RIGHT
	TAD I DPSR
	DCA ADDR
	TAD I ADDR
	DCA MSH		/MOST SIGNIFICANT HALF
	ISZ ADDR
	TAD I ADDR
	DCA LSH		/LEAST SIGNIFICANT HALF
	ISZ DPSR
	TAD MSH		/SHIFT RIGHT
	CLL
	SPA
	CML
	RAR
	DCA MSH
	TAD LSH
	RAR
	DCA LSH
	ISZ CNTR
	JMP .-12
	TAD MSH
	JMP I DPSR
CNTR,	0
ADDR,	0
MSH,	0
LSH,	0

$
