;PRODUCT CODE		DEC-11-NFPMA-A-LA

;COMPUTER		PDP-11

;CONFIGURATION		PAPER TAPE CONFIGURATION IS MINIMUM
;			8192 WORDS MEMORY

;SOFTWARE REQUIREMENTS	PAL-11S (OR MACRO-11)
;			LINK-11S (OR LINK-11)

;PROGRAM NAME		FPMP-11

;VERSION		VERSION LEVEL  1
;			PATCH LEVEL    A

;DESCRIPTION		FLOATING POINT MATH PACKAGE
;			PLUS TRAP HANDLER
;			(FLOATING POINT SUBROUTINES TAKEN FROM
;			DOS-11 FORTRAN IV OTS)

;AUTHOR			E. PETERS (TRAP HANDLER & PACKAGE
;				INTEGRATION)

;DATE			AUGUST, 1972

;			COPYRIGHT 1972, DIGITAL EQUIPMENT CORP.,
;			MAYNARD, MASSACHUSETTS 01754
	.CSECT


	.IFDF	SINGLE
	CND$2=1
	CND$3=1
	CND$4=1
	CND$6=1
	CND$18=1
	CND$20=1
	CND$30=1
	CND$37=1
	CND$38=1
	CND$39=1
	CND$41=1
	CND$44=1
	CND$46=1
	.ENDC

	.IFDF	DOUBLE
	CND$1=1
	CND$5=1
	CND$10=1
	CND$13=1
	CND$14=1
	CND$15=1
	CND$16=1
	CND$19=1
	CND$28=1
	CND$45=1
	CND$47=1
	.ENDC

	.IFDF	SINGLE!DOUBLE
	CND$8=1
	CND$9=1
	CND$31=1
	CND$42=1
	.ENDC
	.IFDF	CND$38
	CND$2=1
	CND$18=1
	CND$20=1
	CND$21=1
	CND$30=1
	CND$32=1
	.ENDC

	.IFNDF	FPU
	.IFDF	CND$3!CND$20!CND$37!CND$39
	CND$2=1
	CND$18=1
	CND$30=1
	.IFDF	CND$37
	CND$4=1
	.ENDC
	.ENDC
	.IFDF	CND$10!CND$13!CND$15!CND$19
	CND$1=1
	CND$16=1
	CND$28=1
	CND$33=1
	.IFDF	CND$13
	CND$11=1
	.ENDC
	.ENDC
	.IFDF	CND$3!CND$10
	CND$27=1
	.ENDC
	.IFDF	CND$19!CND$20
	CND$27=1
	CND$35=1
	.ENDC
	.IFDF	CND$14
	CND$1=1
	CND$16=1
	.ENDC
	.IFDF	CND$41
	CND$2=1
	CND$18=1
	.ENDC
	.ENDC

	.IFDF	CND$23
	CND$27=1
	CND$33=1
	.ENDC
	.IFDF	CND$22!CND$26
	CND$35=1
	.ENDC
	.IFDF	CND$39
	CND$33=1
	.ENDC
	.TITLE	TRAP02
	.IFDF	CND$42
	.GLOBL	TRAPH,$ERRA

	R0=%0
	R1=%1
	R2=%2
	R3=%3
	R4=%4
	R5=%5
	SP=%6
	PC=%7

TRAPH:	BIC	#17,2(SP)
	CLR	-(SP)
	MOV	R5,-(SP)
	MOV	R4,-(SP)
	MOV	R3,-(SP)
	MOV	R2,-(SP)
	MOV	R1,-(SP)
	MOV	R0,-(SP)
	MOV	20(SP),R3
	BIC	#20,R3
	MOV	R3,@#177776
	MOV	16(SP),R1
	MOV	R1,R5
	MOV	-(R1),R4
	MOV	R4,R3
	BIC	#177700,R4
	ASL	R4
	MOV	TBL$42(R4),R4
	BEQ	ERR$42
	MOV	R4,R2
	BIC	#140000,R2
	ADD	PC,R2
PT$42:	BIT	#40000,R4
	BEQ	NAD$42
	ROLB	R3
	BPL	PLM$42
	BCC	STK$42

	MOV	R5,R0
	ADD	(R5)+,R0
UPC$42:	MOV	R5,16(SP)
STK$42:	MOV	#FAC$42+6,R5
	TST	R4
	BLT	ST4$42
	CLR	@R5
	CLR	-(R5)
	TST	(R5)+
ST4$42:	MOV	@R5,-(SP)
	MOV	-(R5),-(SP)
	MOV	-(R5),-(SP)
	MOV	-(R5),-(SP)
	TST	R4
	BLT	ST6$42
	CMP	(R0)+,(R0)+
	BR	OT2$42
ST6$42:	ADD	#8.,R0
	MOV	-(R0),-(SP)
	MOV	-(R0),-(SP)
OT2$42:	MOV	-(R0),-(SP)
	MOV	-(R0),-(SP)




	MOV	#ADR$42,R4
	JMP	@R2
ADR$42:	.WORD	.+2

	MOV	#FAC$42,R5
	MOV	(SP)+,(R5)+
	MOV	(SP)+,(R5)+
	MOV	(SP)+,(R5)+
	MOV	(SP)+,(R5)+
RET$42:	MOV	@PC,R0
	MOV	#FAC$42,R5
	TST	(R5)+
	BLT	NEG$42
	BGT	PLS$42
	TST	(R5)+
	BNE	PLS$42
	TST	(R5)+
	BNE	PLS$42
	TST	(R5)+
	BNE	PLS$42
	CLR	R0
NEG$42:	NEG	R0
CMF$42:	BIS	@#177776,20(SP)
PLS$42:	TST	R0
CM1$42:	MOV	(SP)+,R0
	MOV	(SP)+,R1
	MOV	(SP)+,R2
	MOV	(SP)+,R3
	MOV	(SP)+,R4
	MOV	(SP)+,R5
	TST	(SP)+
	BEQ	RTI$42
	BPL	RT2$42
	MOV	(SP)+,6(SP)
	MOV	(SP)+,6(SP)
	CMP	(SP)+,(SP)+
	RTI
RT2$42:	MOV	(SP)+,2(SP)
	MOV	(SP)+,2(SP)
RTI$42:	RTI


NAD$42:	JSR	R5,@R2
	MOV	(PC)+,R5
	.WORD	FAC$42
	MOV	R0,(R5)+
	MOV	R1,(R5)+
	MOV	R2,(R5)+
	MOV	R3,(R5)+
	BR	RET$42


PLM$42:	BCC	STM$42

	MOV	R5,R0
	TST	R4
	BGE	PL1$42
	ADD	#8.,R5
	BR	UPC$42
PL1$42:	CMP	(R5)+,(R5)+
	BR	UPC$42

STM$42:	MOV	SP,R0
	ADD	#22,R0
	INC	14(SP)
	TST	R4
	BGE	STK$42
	NEG	14(SP)
	BR	STK$42


ERR$42:	CLR	R0
	JSR	R5,$ERRA
	BR	ERR$42


FAC$42:	.WORD	0,0,0,0
	.IFDF	CND$6

CMR$42:	MOV	#CAR$42,R4
	JMP	$CMR
CAR$42:	.WORD	.+2
	BIS	@#177776,24(SP)
	CMP	(SP)+,(SP)+
	BR	CM1$42
	.ENDC

	.IFDF	CND$5
CMD$42:	MOV	#CAD$42,R4
	JMP	$CMD
CAD$42:	.WORD	CMF$42
	.ENDC
	PMODE=40000
	DMODE=100000
TBL$42:	.WORD	0,0,0,0,0,0,0,0
	.WORD	0,0
	.IFDF	CND$2
	.WORD	$ADR-PT$42+PMODE
	.WORD	$SBR-PT$42+PMODE
	.ENDC
	.IFNDF	CND$2
	.WORD	0,0
	.ENDC
	.IFDF	CND$1
	.WORD	$ADD-PT$42+PMODE+DMODE
	.WORD	$SBD-PT$42+PMODE+DMODE
	.ENDC
	.IFNDF	CND$1
	.WORD	0,0
	.ENDC
	.IFDF	CND$5
	.WORD	CMD$42-PT$42+PMODE+DMODE
	.ENDC
	.IFNDF	CND$5
	.WORD	0
	.ENDC
	.IFDF	CND$6
	.WORD	CMR$42-PT$42+PMODE
	.ENDC
	.IFNDF	CND$6
	.WORD	0
	.ENDC
	.WORD	0
	.IFDF	CND$30
	.WORD	$MLR-PT$42+PMODE
	.ENDC
	.IFNDF	CND$30
	.WORD	0
	.ENDC
	.IFDF	CND$28
	.WORD	$MLD-PT$42+PMODE+DMODE
	.ENDC
	.IFNDF	CND$28
	.WORD	0
	.ENDC
	.IFDF	CND$16
	.WORD	$DVD-PT$42+PMODE+DMODE
	.ENDC
	.IFNDF	CND$16
	.WORD	0
	.ENDC
	.WORD	0
	.IFDF	CND$18
	.WORD	$DVR-PT$42+PMODE
	.ENDC
	.IFNDF	CND$18
	.WORD	0
	.ENDC
	.IFDF	CND$4
	.WORD	AINT-PT$42
	.ENDC
	.IFNDF	CND$4
	.WORD	0
	.ENDC
	.WORD	0,0,0,0,0,0,0
	.IFDF	CND$37
	.WORD	SIN-PT$42,COS-PT$42
	.ENDC
	.IFNDF	CND$37
	.WORD	0,0
	.ENDC
	.IFDF	CND$13
	.WORD	DSIN-PT$42+DMODE
	.WORD	DCOS-PT$42+DMODE
	.ENDC
	.IFNDF	CND$13
	.WORD	0,0
	.ENDC
	.IFDF	CND$39
	.WORD	ATAN-PT$42
	.ENDC
	.IFNDF	CND$39
	.WORD	0
	.ENDC
	.WORD	0
	.IFDF	CND$15
	.WORD	DATAN-PT$42+DMODE
	.ENDC
	.IFNDF	CND$15
	.WORD	0
	.ENDC
	.WORD	0
	.IFDF	CND$41
	.WORD	SQRT-PT$42
	.ENDC
	.IFNDF	CND$41
	.WORD	0
	.ENDC
	.IFDF	CND$14
	.WORD	DSQRT-PT$42+DMODE
	.ENDC
	.IFNDF	CND$14
	.WORD	0
	.ENDC
	.IFDF	CND$38
	.WORD	TANH-PT$42
	.ENDC
	.IFNDF	CND$38
	.WORD	0
	.ENDC
	.IFDF	CND$20
	.WORD	EXP-PT$42
	.ENDC
	.IFNDF	CND$20
	.WORD	0
	.ENDC
	.IFDF	CND$19
	.WORD	DEXP-PT$42+DMODE
	.ENDC
	.IFNDF	CND$19
	.WORD	0
	.ENDC
	.IFDF	CND$3
	.WORD	ALOG-PT$42
	.WORD	ALOG10-PT$42
	.ENDC
	.IFNDF	CND$3
	.WORD	0,0
	.ENDC
	.IFDF	CND$10
	.WORD	DLOG-PT$42+DMODE
	.WORD	DLOG10-PT$42+DMODE
	.ENDC
	.IFNDF	CND$10
	.WORD	0,0
	.ENDC
	.WORD	0,0,0,0,0,0,0,0,0,0
	.IFDF	CND$44
	.WORD	$LDR-PT$42+PMODE
	.ENDC
	.IFNDF	CND$44
	.WORD	0
	.ENDC
	.IFDF	CND$45
	.WORD	$LDD-PT$42+PMODE+DMODE
	.ENDC
	.IFNDF	CND$45
	.WORD	0
	.ENDC
	.IFDF	CND$46
	.WORD	$STR-PT$42+PMODE
	.ENDC
	.IFNDF	CND$46
	.WORD	0
	.ENDC
	.IFDF	CND$47
	.WORD	$STD-PT$42+PMODE+DMODE
	.ENDC
	.IFNDF	CND$47
	.WORD	0
	.ENDC
	.WORD	0,0,0
	.ENDC
	.TITLE	$ADD05
	.IFDF	CND$1
	.GLOBL	$ADD,$SBD,$ERR








	R0=%0
	R1=%1
	R2=%2
	R3=%3
	R4=%4
	R5=%5
	SP=%6
	PC=%7
	A1=6
	B1=8.
	C1=10.
	D1=12.
	A2=14.
	B2=16.
	C2=18.
	D2=20.
	SIGNS=0.
	MQ=177304
	NOR=177312
	LSH=177314
	ASH=177316
	F0=%0
$SBD:	ADD	#100000,@SP
	.IFDF	FPU
$ADD:	.WORD	170011
	.WORD	172426
	.WORD	172026
	.WORD	174046
	JMP	@(R4)+
	.ENDC
	.IFNDF	FPU
$ADD:	MOV	R4,-(SP)
	MOV	R5,-(SP)
	CLR	-(SP)
	CLR	R4
	CLR	R5
	ASL	D1(SP)
	ROL	C1(SP)
	ROL	B1(SP)
	ROL	A1(SP)
	BISB	A1+1(SP),R4
	BEQ	A1Z$1
	ROLB	@SP
	ASL	D2(SP)
	ROL	C2(SP)
	ROL	B2(SP)
	ROL	A2(SP)
	BISB	A2+1(SP),R5
	BNE	A2N$1
	RORB	@SP
	ROR	A1(SP)
	ROR	B1(SP)
	ROR	C1(SP)
	ROR	D1(SP)
	MOV	A1(SP),A2(SP)
	MOV	B1(SP),B2(SP)
	MOV	C1(SP),C2(SP)
	MOV	D1(SP),D2(SP)
A1Z$1:	TST	(SP)+
	JMP	OUT$1
A2N$1:	ROLB	SIGNS+1(SP)
	MOVB	#1,A2+1(SP)
	MOVB	#1,A1+1(SP)
	SUB	R4,R5
	BGT	EXA$1
	MOV	A2(SP),R0
	MOV	B2(SP),R1
	MOV	C2(SP),R2
	MOV	D2(SP),R3
	BR	SCK$1
EXA$1:	ADD	R5,R4
	MOV	A1(SP),R0
	MOV	B1(SP),R1
	MOV	C1(SP),R2
	MOV	D1(SP),R3
	MOV	A2(SP),A1(SP)
	MOV	B2(SP),B1(SP)
	MOV	C2(SP),C1(SP)
	MOV	D2(SP),D1(SP)
	SWAB	@SP
	NEG	R5
SCK$1:	CMPB	SIGNS+1(SP),@SP
	BEQ	ECK$1
	NEG	R3
	ADC	R2
	ADC	R1
	ADC	R0
	NEG	R2
	ADC	R1
	ADC	R0
	NEG	R1
	ADC	R0
	NEG	R0
ECK$1:	TST	R5
	BEQ	SFD$1
SFT$1:	CMP	#-57.,R5
	BLE	SFR$1
	MOV	A1(SP),R0
	MOV	B1(SP),R1
	MOV	C1(SP),R2
	MOV	D1(SP),R3
	BR	NOD$1
SFR$1:	CMP	#-8.,R5
	BLE	SR8$1
	.IFNDF	MULDIV
	CLR	-(SP)
	TST	R0
	BPL	SF1$1
	COM	@SP
	.ENDC
	.IFDF	MULDIV
	TST	R0
	.WORD	006746
	.ENDC
SF1$1:	CMP	#-16.,R5
	BLT	S16$1
	MOV	R2,R3
	MOV	R1,R2
	MOV	R0,R1
	MOV	@SP,R0
	ADD	#16.,R5
	BNE	SF1$1
	TST	(SP)+
	BR	SFD$1
	.IFDF	EAE
S16$1:	CMP	#-3,R5
	BLE	S8A$1
	MOV	R4,@SP
	MOV	#MQ,R4
	MOV	R3,@R4
	MOV	R2,-(R4)
	MOV	R5,@#LSH
	MOV	(R4)+,R2
	MOV	@R4,R3
	CLR	@R4
	MOV	R1,-(R4)
	MOV	R5,@#LSH
	TST	(R4)+
	BIS	@R4,R2
	MOV	R1,@R4
	MOV	R0,-(R4)
	MOV	R5,@#ASH
	MOV	(R4)+,R0
	MOV	@R4,R1
	MOV	(SP)+,R4
	BR	SFD$1
	.ENDC
	.IFNDF	EAE&MULDIV
S16$1:	CMP	#-8.,R5
	BLE	S8A$1
	ADD	#16.,R5
SL8$1:	ASL	R3
	ROL	R2
	ROL	R1
	ROL	R0
	ROL	@SP
	DEC	R5
	BGT	SL8$1
	MOV	R2,R3
	MOV	R1,R2
	MOV	R0,R1
	MOV	(SP)+,R0
	BR	SFD$1
	.ENDC
	.IFDF	MULDIV
S16$1:	CMP	#-3,R5
	BLE	S8A$1
	MOV	R4,@SP
	MOV	R5,-(SP)
	MOV	R1,R4
	.WORD	073005
	MOV	R2,R5
	.WORD	073416
	MOV	R2,R4
	MOV	R5,R2
	MOV	R3,R5
	.WORD	073426
	MOV	R5,R3
	MOV	(SP)+,R4
	BR	SFD$1
	.ENDC
S8A$1:	TST	(SP)+
SR8$1:	ASR	R0
	ROR	R1
	ROR	R2
	ROR	R3
	INC	R5
	BLT	SR8$1
SFD$1:	ADD	D1(SP),R3
	ADC	R2
	ADC	R1
	ADC	R0
	ADD	C1(SP),R2
	ADC	R1
	ADC	R0
	ADD	B1(SP),R1
	ADC	R0
	ADD	A1(SP),R0
	CMPB	SIGNS+1(SP),@SP
	BNE	SUB$1
	BIT	R0,#1000
	BEQ	NOD$1
	ASR	R0
	ROR	R1
	ROR	R2
	ROR	R3
	INC	R4
NOD$1:	SWAB	R4
	BNE	OVF$1
NFL$1:	BISB	R0,R4
	ROR	(SP)+
	ROR	R4
	ROR	R1
	ROR	R2
	ROR	R3
	ADC	R3
	ADC	R2
	ADC	R1
	ADC	R4
	BVS	OVR$1
	BCS	OVR$1
	MOV	R4,A2+0-2(SP)
	MOV	R1,B2+0-2(SP)
	MOV	R2,C2+0-2(SP)
	MOV	R3,D2+0-2(SP)
OUT$1:	MOV	(SP)+,R5
	MOV	(SP)+,R4
	ADD	#8.,SP
	JMP	@(R4)+

OVF$1:	TST	(SP)+
OVR$1:	JSR	R5,$ERR
	BR	OUT$1
	.BYTE	3
	.BYTE	1
UTS$1:	TST	R4
	BGT	NOD$1
UNF$1:	JSR	R5,$ERR
	BR	UND$1
	.BYTE	5
	.BYTE	1
UND$1:	CLR	R0
	CLR	R1
	CLR	R2
	CLR	R3
ZER$1:	CLR	@SP
	CLR	R4
	BR	NFL$1

SUB$1:	TST	R0
	BGT	BT9$1
	BEQ	ZTS$1
	NEG	R3
	ADC	R2
	ADC	R1
	ADC	R0
	NEG	R2
	ADC	R1
	ADC	R0
	NEG	R1
	ADC	R0
	SWAB	@SP
	NEG	R0
	BEQ	ZTS$1
BT9$1:
	.IFDF	EAE
	BIT	R0,#740
	BNE	B9A$1
	MOV	R4,-(SP)
	MOV	#MQ,R4
	MOV	R1,@R4
	MOV	R0,-2(R4)
	CLR	@#NOR
	MOV	@#NOR,-(SP)
	SUB	#6,@SP
	MOV	R1,@R4
	MOV	R0,-(R4)
	MOV	@SP,@#LSH
	MOV	(R4)+,R0
	MOV	@R4,R1
	MOV	R2,@R4
	CLR	-(R4)
	MOV	@SP,@#LSH
	BIS	(R4)+,R1
	MOV	R3,@R4
	MOV	R2,-(R4)
	MOV	@SP,@#LSH
	MOV	(R4)+,R2
	MOV	@R4,R3
	SUB	(SP)+,@SP
	MOV	(SP)+,R4
	BGT	NOD$1
	BR	UNF$1
	.ENDC
B9A$1:	BIT	R0,#400
	BNE	UTS$1
	DEC	R4
	ASL	R3
	ROL	R2
	ROL	R1
	ROL	R0
	BR	B9A$1
ZTS$1:	SUB	#8.,R4
	TST	R1
	BNE	ZT1$1
	SUB	#16.,R4
	MOV	R2,R1
	BNE	ZT2$1
	SUB	#16.,R4
	TST	R3
	BEQ	ZER$1
	BISB	R3,R1
	SWAB	R1
	SWAB	R3
	BISB	R3,R0
	CLR	R3
	BR	BT9$1
ZT2$1:	MOV	R3,R2
	CLR	R3
ZT1$1:	SWAB	R1
	BISB	R1,R0
	CLRB	R1
	SWAB	R2
	BISB	R2,R1
	CLRB	R2
	SWAB	R3
	BISB	R3,R2
	CLRB	R3
	BR	BT9$1
	.ENDC
	.ENDC	.TITLE	$ADR04
	.IFDF	CND$2
	.GLOBL	$ADR,$SBR,$ERR








	R0=%0
	R1=%1
	R2=%2
	R3=%3
	R4=%4
	R5=%5
	SP=%6
	PC=%7
	SIGNS=0
	A1=4
	B1=6
	A2=8.
	B2=10.
	AC=177302
	MQ=177304
	NOR=177312
	ASH=177316
	F0=%0
$SBR:	ADD	#100000,@SP
	.IFDF	FPU
$ADR:	.WORD	170001
	.WORD	172426
	.WORD	172026
	.WORD	174046
	JMP	@(R4)+
	.ENDC
	.IFNDF	FPU
$ADR:	MOV	R4,-(SP)
	CLR	-(SP)
	CLR	R2
	CLR	R3
	ASL	B1(SP)
	ROL	A1(SP)
	BISB	A1+1(SP),R3
	BEQ	OUT$2
	ROLB	@SP
	ASL	B2(SP)
	ROL	A2(SP)
	BISB	A2+1(SP),R2
	BNE	A2N$2
	RORB	@SP
	ROR	A1(SP)
	ROR	B1(SP)
	MOV	A1(SP),A2(SP)
	MOV	B1(SP),B2(SP)
	BR	OUT$2
A2N$2:	ROLB	SIGNS+1(SP)
	MOVB	#1,A2+1(SP)
	MOVB	#1,A1+1(SP)
	SUB	R3,R2
	BGT	EXA$2
	MOV	A2(SP),R0
	MOV	B2(SP),R1
	BR	SCK$2
EXA$2:	ADD	R2,R3
	MOV	A1(SP),R0
	MOV	B1(SP),R1
	MOV	A2(SP),A1(SP)
	MOV	B2(SP),B1(SP)
	SWAB	@SP
	NEG	R2
SCK$2:	CMPB	SIGNS+1(SP),@SP
	BEQ	ECK$2
	NEG	R1
	ADC	R0
	NEG	R0
ECK$2:	TST	R2
	BEQ	SFD$2
SFT$2:	CMP	#-25.,R2
	BLE	SFR$2
	MOV	A1(SP),R0
	MOV	B1(SP),R1
	BR	NOD$2
	.IFDF	EAE
SFR$2:	MOV	R1,@#MQ
	MOV	R0,@#AC
	MOV	R2,@#ASH
	MOV	@#MQ,R1
	MOV	@#AC,R0
	.ENDC
	.IFDF	MULDIV
SFR$2:	.WORD	073002
	.ENDC
	.IFNDF	EAE&MULDIV
SFR$2:	CMP	#-8.,R2
	BLE	SF0$2
	CLR	R4
	TST	R0
	BPL	NCP$2
	COM	R4
NCP$2:	CMP	#-16.,R2
	BLT	SRL$2
	MOV	R0,R1
	MOV	R4,R0
	ADD	#16.,R2
	BEQ	SFD$2
SRL$2:	CMP	#-8.,R2
	BLE	SF0$2
	ADD	#16.,R2
SFL$2:	ASL	R1
	ROL	R0
	ROL	R4
	DEC	R2
	BGT	SFL$2
	MOV	R0,R1
	MOV	R4,R0
	BR	SFD$2
SF0$2:	ASR	R0
	ROR	R1
	INC	R2
	BLT	SF0$2
	.ENDC
SFD$2:	ADD	A1(SP),R0
	ADD	B1(SP),R1
	ADC	R0
	CMPB	SIGNS+1(SP),@SP
	BNE	SUB$2
	BIT	R0,#1000
	BEQ	NOD$2
	ASR	R0
	ROR	R1
	INC	R3
NOD$2:	SWAB	R3
	BNE	OVR$2
	BISB	R0,R3
	ROR	@SP
	ROR	R3
	ROR	R1
	ADC	R1
	ADC	R3
	BVS	OVR$2
	BCS	OVR$2
STR$2:	MOV	R3,A2(SP)
	MOV	R1,B2(SP)
OUT$2:	TST	(SP)+
	MOV	(SP)+,R4
	CMP	(SP)+,(SP)+
	JMP	@(R4)+

OVR$2:	JSR	R5,$ERR
	BR	OUT$2
	.BYTE	3
	.BYTE	2

SUB$2:	TST	R0
	BGT	BT9$2
	BEQ	ZTS$2
	NEG	R0
	NEG	R1
	SBC	R0
	SWAB	@SP
BT9$2:
	.IFDF	EAE
	BIT	R0,#700
	BNE	B9A$2
	MOV	R1,@#MQ
	MOV	R0,@#AC
	CLR	@#NOR
	SUB	@#NOR,R3
	MOV	#-6,@#ASH
	ADD	#6,R3
	BLE	UNF$2
	MOV	@#AC,R0
	MOV	@#MQ,R1
	BR	NOD$2
	.ENDC
B9A$2:	BIT	R0,#400
	BNE	UTS$2
	DEC	R3
	ASL	R1
	ROL	R0
	BR	B9A$2
ZTS$2:	TST	R1
	.IFDF	EAE
	BNE	BT9$2
	BR	ZER$2
	.ENDC
	.IFNDF	EAE
	BEQ	ZER$2
	SWAB	R1
	BISB	R1,R0
	CLRB	R1
	SUB	#8.,R3
	BR	BT9$2
	.ENDC
UTS$2:	TST	R3
	BGT	NOD$2
UNF$2:	JSR	R5,$ERR
	BR	UND$2
	.BYTE	5
	.BYTE	2
UND$2:	CLR	R1
ZER$2:	CLR	R3
	BR	STR$2
	.ENDC
	.ENDC
	.EOT
