SINGLE=1 ;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 .TITLE $ALG03 .IFDF CND$3 .GLOBL ALOG,ALOG10,$ERR .IFNDF FPU .GLOBL $POLSH,$ADR,$SBR,$MLR,$DVR,$IR .ENDC R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 SP=%6 PC=%7 F0=%0 F1=%1 F2=%2 F3=%3 .IFNDF FPU ALOG10: MOV @PC,-(SP) BR LOG$3 ALOG: CLR -(SP) LOG$3: MOV 2(R5),R4 MOV #071030,-(SP) MOV #137661,-(SP) CMP -(SP),-(SP) MOV 2(R4),-(SP) MOV @R4,-(SP) BLE ERR$3 ASL @SP MOVB 1(SP),12.(SP) MOVB #200,1(SP) ROR @SP MOV #002363,-(SP) MOV #040065,-(SP) MOV 6(SP),-(SP) MOV 6(SP),-(SP) MOV #002363,-(SP) MOV #040065,-(SP) JSR R4,$POLSH .WORD $SBR,UP$3,$ADR,$DVR .WORD DUP$3,DUP$3 .WORD $MLR,REG$3,STK$3,STK$3,STK$3 .WORD $MLR,$ADR,$MLR,$ADR,$MLR,$ADR,$MLR,$ADR .WORD SCL$3,$IR,PL2$3,$MLR .WORD $ADR,EXI$3 .WORD $MLR,EXI$3 REG$3: MOV (SP)+,R0 MOV (SP)+,R1 MOV #CON$3+4,R2 BR STC$3 STK$3: MOV R1,-(SP) MOV R0,-(SP) STC$3: MOV -(R2),-(SP) MOV -(R2),-(SP) JMP @(R4)+ UP$3: MOV (SP)+,10.(SP) MOV (SP)+,10.(SP) JMP @(R4)+ SCL$3: CLR -(SP) BISB 6(SP),@SP SUB #200,@SP JMP @(R4)+ DUP$3: MOV 2(SP),-(SP) MOV 2(SP),-(SP) JMP @(R4)+ PL2$3: MOV #071030,-(SP) MOV #040061,-(SP) JMP @(R4)+ EXI$3: DECB 5(SP) BLT LGT$3 MOV #055731,-(SP) MOV #037736,-(SP) JMP @(R4)+ LGT$3: MOV (SP)+,R0 MOV (SP)+,R1 TST (SP)+ RTS R5 ERR$3: ADD #14.,SP JSR R5,$ERR RTS R5 .BYTE 4 .BYTE 10. .ENDC .IFDF FPU ALOG10: MOV @PC,R4 BR LOG$3 ALOG: CLR R4 LOG$3: SETF SETI MOV #FCO$3,R0 LDF @2(R5),F2 CFCC BLE ERR$3 STEXP F2,R1 LDCIF R1,F3 MULF (R0)+,F3 LDEXP #0,F2 LDF F2,F1 SUBF (R0),F2 ADDF (R0)+,F1 DIVF F1,F2 LDF F2,F1 MULF F1,F1 MOV #3,R1 LDF (R0)+,F0 XPD$3: MULF F1,F0 DEC R1 ADDF (R0)+,F0 BGT XPD$3 MULF F2,F0 ADDF (R0)+,F0 ADDF F3,F0 TST R4 BEQ LGT$3 MULF (R0)+,F0 LGT$3: STF F0,-(SP) MOV (SP)+,R0 MOV (SP)+,R1 RTS R5 ERR$3: JSR R5,$ERR RTS R5 .BYTE 4 .BYTE 10. FCO$3: .WORD 040061,071030 .WORD 040065,002363 .ENDC .WORD 037632,014525 .WORD 037714,120036 .WORD 040052,125332 CON$3: .WORD 040400,000000 .IFDF FPU .WORD 137661,071030 .WORD 037736,055731 .ENDC .ENDC .TITLE $ANT03 .IFDF CND$4 .GLOBL AINT,$INTR R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 SP=%6 PC=%7 MQ=177304 LSH=177314 F0=%0 F1=%1 .IFDF FPU AINT: .WORD 170001 .WORD 172475,2 .WORD 171467,24 .WORD 174146 MOV (SP)+,R0 MOV (SP)+,R1 RTS R5 $INTR: .WORD 170001 .WORD 172426 .WORD 171467,4 .WORD 174146 JMP @(R4)+ ONE$4: .WORD 040200,0 .ENDC .IFNDF FPU AINT: MOV 2(R5),R4 MOV @R4,R0 MOV 2(R4),R1 MOV PC,R2 BR AI1$4 $INTR: CLR R2 MOV (SP)+,R0 MOV (SP)+,R1 AI1$4: MOV R0,R3 ROL R3 CLRB R3 SWAB R3 SUB #230,R3 BGE DNE$4 CMP #-30,R3 BLT SHF$4 CLR R0 CLR R1 BR DNE$4 SHF$4: MOV R3,-(SP) .IFNDF EAE&MULDIV ROR$4: ROR R0 ROR R1 INC R3 BLT ROR$4 MOV (SP)+,R3 ASL$4: ASL R1 ROL R0 INC R3 BLT ASL$4 .ENDC .IFDF EAE MOV #MQ,R3 MOV R1,@R3 MOV R0,-(R3) MOV @SP,@#LSH NEG @SP MOV (SP)+,@#LSH MOV (R3)+,R0 MOV @R3,R1 .ENDC .IFDF MULDIV .WORD 073016 NEG @SP .WORD 073026 .ENDC DNE$4: TST R2 BEQ DN1$4 RTS R5 DN1$4: MOV R1,-(SP) MOV R0,-(SP) JMP @(R4)+ .ENDC .ENDC .TITLE $CMD02 .IFDF CND$5 .GLOBL $CMD R0=%0 R1=%1 R2=%2 R4=%4 SP=%6 PC=%7 F0=%0 .IFDF FPU $CMD: .WORD 170011 .WORD 172426 .WORD 173426 .WORD 170000 JMP @(R4)+ .ENDC .IFNDF FPU $CMD: MOV @PC,R0 MOV 8.(SP),R1 BGE FPS$5 ASL R0 MOV (SP)+,R2 BLT SME$5 BR NEG$5 FPS$5: MOV (SP)+,R2 BLT PLS$5 SME$5: CMP R1,R2 BNE OUT$5 CMP 8.(SP),@SP BNE OUT$5 CMP 10.(SP),2(SP) BNE OUT$5 CMP 12.(SP),4(SP) BNE OUT$5 CLR R0 OUT$5: ROR R0 BCS PLS$5 NEG$5: NEG R0 PLS$5: ADD #14.,SP TST R0 JMP @(R4)+ .ENDC .ENDC .TITLE $CMR02 .IFDF CND$6 .GLOBL $CMR R0=%0 R1=%1 R2=%2 R4=%4 SP=%6 PC=%7 F0=%0 .IFDF FPU $CMR: .WORD 170001 .WORD 172426 .WORD 173426 .WORD 170000 JMP @(R4)+ .ENDC .IFNDF FPU $CMR: MOV @PC,R0 MOV 4(SP),R1 BGE FPS$6 ASL R0 MOV (SP)+,R2 BLT SME$6 BR NEG$6 FPS$6: MOV (SP)+,R2 BLT PLS$6 SME$6: CMP R1,R2 BNE OUT$6 CMP 4(SP),@SP BNE OUT$6 CLR R0 OUT$6: ROR R0 BCS PLS$6 NEG$6: NEG R0 PLS$6: ADD #6,SP TST R0 JMP @(R4)+ .ENDC .ENDC .TITLE $DBL02 .IFDF CND$7 .GLOBL DBLE R0=%0 R1=%1 R2=%2 R3=%3 R5=%5 DBLE: MOV 2(R5),R2 MOV (R2)+,R0 MOV @R2,R1 CLR R2 CLR R3 RTS R5 .ENDC .TITLE $DCI01 .IFDF CND$8 .GLOBL $DCI,$RCI R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 SP=%6 PC=%7 NUMEND=0 POINTL=2 DIGITS=4 BEXP=6 ESIGN=8. SIGN=10. EEXP=12. P=30. D=32. ERF=26. LENGTH=34. TEMP=LENGTH RESULT=P START=36. END=START $RCI: CLR -(SP) INC @SP BR CNV$8 $DCI: CLR -(SP) CNV$8: MOV R0,-(SP) MOV R1,-(SP) MOV R2,-(SP) MOV R3,-(SP) MOV R4,-(SP) MOV R5,-(SP) CLR -(SP) CLR -(SP) CLR -(SP) MOV #65.,-(SP) MOV #18.,-(SP) CLR -(SP) CLR -(SP) MOV START(SP),R5 ADD LENGTH(SP),END(SP) CLR R0 CLR R1 CLR R2 CLR R3 SCN$8: MOVB (R5)+,R4 BIC #177600,R4 CMPB R4,#' BNE SGS$8 CMP R5,START(SP) BLT SCN$8 JMP ZER$8 SGS$8: CMPB R4,#'+ BEQ FLD$8 CMPB R4,#'- BNE NCK$8 INC SIGN(SP) BR FLD$8 NXT$8: MOVB (R5)+,R4 BIC #177600,R4 CMPB R4,#' BNE NCK$8 MOV #'0,R4 NCK$8: CMPB R4,#'0 BLT PCK$8 BNE NNZ$8 TST R0 BNE NNZ$8 TST R1 BNE NNZ$8 TST R2 BNE NNZ$8 TST R3 BEQ FLD$8 NNZ$8: CMPB R4,#'9 BGT EXC$8 DEC DIGITS(SP) BGE A2I$8 INC EEXP(SP) BR FLD$8 A2I$8: SUB #60,R4 JSR PC,ML5$8 JSR PC,LFT$8 ADD R4,R3 ADC R2 ADC R1 ADC R0 FLD$8: CMP R5,END(SP) BLT NXT$8 MOV R5,@SP SCL$8: TST R0 BNE SC1$8 TST R1 BNE SC1$8 TST R2 BNE SC1$8 TST R3 BEQ ZER$8 SC1$8: CMP @SP,R5 BNE NOP$8 SUB P(SP),EEXP(SP) NOP$8: TST POINTL(SP) BNE PNT$8 MOV D(SP),@SP PNT$8: SUB POINTL(SP),@SP SUB @SP,EEXP(SP) BGT MUL$8 BLT DIV$8 JMP FLT$8 MUL$8: CMP R0,#31462 BHI MDV$8 JSR PC,ML5$8 INC BEXP(SP) D10$8: DEC EEXP(SP) BGT MUL$8 JMP FLT$8 MDV$8: JSR PC,M54$8 ADD #3,BEXP(SP) BR D10$8 PCK$8: CMPB R4,#'. BNE ERR$8 PTF$8: TST POINTL(SP) BNE ERR$8 MOV R5,POINTL(SP) BR FLD$8 ERR$8: COMB ERF+1(SP) ZER$8: CLR R0 CLR R1 CLR R2 CLR R3 JMP STR$8 EXC$8: CMPB R4,#'E BEQ EXT$8 CMPB R4,#'D BNE ERR$8 EXT$8: MOV R5,@SP DEC @SP MOV R3,TEMP(SP) CLR R3 CMP R5,END(SP) BGE ERR$8 MOVB (R5)+,R4 BIC #177600,R4 CMPB R4,#'+ BEQ EF1$8 CMPB R4,#'- BNE ENM$8 INC ESIGN(SP) EF1$8: CMP R5,END(SP) BGE ERR$8 EF2$8: MOVB (R5)+,R4 BIC #177600,R4 ENM$8: CMPB R4,#' BNE EN1$8 MOV #'0,R4 EN1$8: CMPB R4,#'0 BLT ERR$8 CMPB R4,#'9 BGT ERR$8 SUB #60,R4 ASL R3 ADD R3,R4 ASL R3 ASL R3 ADD R4,R3 CMP R5,END(SP) BLT EF2$8 TST ESIGN(SP) BEQ EN2$8 NEG R3 EN2$8: ADD R3,EEXP(SP) MOV TEMP(SP),R3 JMP SCL$8 DIV$8: TST R0 BLT DV1$8 DV2$8: DEC BEXP(SP) JSR PC,LFT$8 BPL DV2$8 DV1$8: MOV #16.,R4 JSR PC,RIT$8 MOV R3,-(SP) MOV R2,-(SP) MOV R1,-(SP) MOV R0,-(SP) DV3$8: JSR PC,RIT$8 CLC JSR PC,RIT$8 MOV #2,R5 CLC DV4$8: JSR PC,RIT$8 ADD 6(SP),R3 ADC R2 ADC R1 ADC R0 ADD 4(SP),R2 ADC R1 ADC R0 ADD 2(SP),R1 ADC R0 ADD @SP,R0 DEC R5 BGT DV4$8 DEC R4 BGT DV3$8 ADD #8.,SP SUB #3,BEXP(SP) INC EEXP(SP) BLT DIV$8 FLT$8: DEC BEXP(SP) JSR PC,LFT$8 BCC FLT$8 ADD #200,BEXP(SP) BLE UND$8 CMP BEXP(SP),#377 BGT OVR$8 CLRB R3 BISB R2,R3 SWAB R3 CLRB R2 BISB R1,R2 SWAB R2 CLRB R1 BISB R0,R1 SWAB R1 CLRB R0 BISB BEXP(SP),R0 SWAB R0 ROR SIGN(SP) JSR PC,RIT$8 ADC R3 ADC R2 ADC R1 ADC R0 BVS OVR$8 BCS OVR$8 STR$8: TSTB ERF(SP) BEQ DPR$8 ROL R2 ADC R1 ADC R0 BVS OVR$8 BCS OVR$8 MOV R0,R2 MOV R1,R3 DPR$8: MOV R0,RESULT(SP) MOV R1,RESULT+2(SP) MOV R2,RESULT+4(SP) MOV R3,RESULT+6(SP) ADD #14.,SP MOV (SP)+,R5 MOV (SP)+,R4 MOV (SP)+,R3 MOV (SP)+,R2 MOV (SP)+,R1 MOV (SP)+,R0 TSTB @SP BEQ RRN$8 MOV (SP)+,2(SP) MOV (SP)+,2(SP) RRN$8: ROL (SP)+ RTS PC OVR$8: UND$8: JMP ERR$8 M54$8: CMP R0,#146314 BLO M55$8 CLC JSR PC,RIT$8 INC BEXP+0+2(SP) M55$8: MOV R0,-(SP) MOV R1,-(SP) MOV R2,-(SP) MOV R3,-(SP) CLC JSR PC,RIT$8 CLC JSR PC,RIT$8 BR M5A$8 ML5$8: MOV R0,-(SP) MOV R1,-(SP) MOV R2,-(SP) MOV R3,-(SP) JSR PC,LFT$8 JSR PC,LFT$8 M5A$8: ADD (SP)+,R3 ADC R2 ADC R1 ADC R0 ADD (SP)+,R2 ADC R1 ADC R0 ADD (SP)+,R1 ADC R0 ADD (SP)+,R0 RTS PC LFT$8: ASL R3 ROL R2 ROL R1 ROL R0 RTS PC RIT$8: ROR R0 ROR R1 ROR R2 ROR R3 RTS PC .ENDC .TITLE $DCO04 .IFDF CND$9 .GLOBL $ECO,$FCO,$GCO,$DCO R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 SP=%6 PC=%7 POINT=2 BEXP=4 EEXP=6 TYPE=12. P=16. D=18. L=20. S=22. $GCO: MOV #42403,R0 BR XCO$9 $FCO: CLR R0 BR XCO$9 $DCO: MOV (SP)+,R0 MOV (SP)+,R1 MOV (SP)+,R2 MOV @SP,R3 MOV #42002,@SP MOV R4,-(SP) MOV 4(SP),R4 MOV R0,4(SP) BR XC1$9 $ECO: MOV #42402,R0 XCO$9: MOV (SP)+,R3 MOV (SP)+,R1 MOV (SP)+,R2 MOV R3,-(SP) MOV R0,-(SP) CLR R3 MOV R4,-(SP) CLR R4 XC1$9: MOV R5,-(SP) CLR -(SP) CLR -(SP) CMP -(SP),-(SP) ADD S(SP),L(SP) MOV S(SP),R0 CLE$9: MOVB #' ,(R0)+ CMP R0,L(SP) BLO CLE$9 ROL R1 ROL @SP SWAB R1 MOVB R1,BEXP(SP) BNE NNZ$9 CLR R0 BR NOD$9 NNZ$9: SEC ROR R1 CLRB R1 SWAB R2 BISB R2,R1 CLRB R2 SWAB R3 BISB R3,R2 CLRB R3 SWAB R4 BISB R4,R3 CLRB R4 SUB #200,BEXP(SP) BLT DIV$9 BEQ NOM$9 MUL$9: TST R1 BLT ML1$9 ASL R4 ROL R3 ROL R2 ROL R1 DEC BEXP(SP) BGT MUL$9 BR NOM$9 ML1$9: JSR PC,M45$9 INC EEXP(SP) SUB #3,BEXP(SP) BGT MUL$9 BEQ NOM$9 DIV$9: CMP R1,#146314 BHIS DV1$9 CMP BEXP(SP),#-3 BGT DV1$9 JSR PC,M54$9 DEC EEXP(SP) ADD #2,BEXP(SP) BR DV2$9 DV1$9: JSR PC,RIT$9 DV2$9: INC BEXP(SP) BNE DIV$9 NOM$9: CLR R0 NO1$9: JSR PC,M54$9 JSR PC,ML8$9 TST R0 BNE NOD$9 DEC EEXP(SP) BR NO1$9 NOD$9: TSTB TYPE(SP) BEQ FFT$9 RORB TYPE(SP) BCC EFT$9 TST EEXP(SP) BLT EFT$9 CMP EEXP(SP),D(SP) BGT EFT$9 CLRB TYPE(SP) SUB #4,L(SP) SUB EEXP(SP),D(SP) CLR P(SP) FFT$9: MOV EEXP(SP),R5 FFE$9: ADD D(SP),R5 ADD P(SP),R5 JSR PC,RUD$9 MOV L(SP),R5 SUB D(SP),R5 TSTB TYPE(SP) BNE FF5$9 ADD EEXP(SP),P(SP) BLE FF5$9 SUB P(SP),R5 SUB #2,R5 JSR PC,ISN$9 BR FF3$9 FF5$9: SUB #3,R5 JSR PC,ISN$9 MOVB #'0,(R5)+ MOVB #'.,(R5)+ FF4$9: CMP R5,L(SP) BHIS FF3$9 MOVB #'0,(R5)+ BR FF4$9 FF3$9: MOV L(SP),R5 SUB D(SP),R5 DEC R5 MOV R5,POINT(SP) TST P(SP) BGT FF6$9 INC R5 FF6$9: SUB P(SP),R5 JSR PC,DGS$9 TSTB TYPE(SP) BEQ DNE$9 BR EFE$9 EFT$9: SUB #4,L(SP) CLR R5 TST P(SP) BLE FFE$9 MOV D(SP),R5 ADD P(SP),R5 JSR PC,RUD$9 MOV L(SP),R5 SUB D(SP),R5 DEC R5 MOV R5,POINT(SP) SUB P(SP),R5 DEC R5 JSR PC,ISN$9 JSR PC,DGS$9 EFE$9: SUB P(SP),EEXP(SP) MOV L(SP),R3 MOVB TYPE+1(SP),(R3)+ MOV EEXP(SP),R4 BGE EXP$9 NEG R4 MOVB #'-,(R3)+ BR EX1$9 EXP$9: MOVB #' ,(R3)+ EX1$9: MOVB #'0,@R3 EX3$9: SUB #10.,R4 BLT EX2$9 INCB @R3 BR EX3$9 EX2$9: ADD #72,R4 MOVB R4,1(R3) DNE$9: ADD #8.,SP MOV (SP)+,R5 MOV (SP)+,R4 MOV (SP)+,6(SP) MOV (SP)+,6(SP) CMP (SP)+,(SP)+ ROL (SP)+ RTS PC M54$9: MOV R1,-(SP) MOV R2,-(SP) MOV R3,-(SP) MOV R4,-(SP) JSR PC,RIT$9 JSR PC,RIT$9 ADC R4 ADC R3 ADC R2 ADC R1 ADD (SP)+,R4 ADC R3 ADC R2 ADC R1 ADC R0 ADD (SP)+,R3 ADC R2 ADC R1 ADC R0 ADD (SP)+,R2 ADC R1 ADC R0 ADD (SP)+,R1 ADC R0 RTS PC M45$9: MOV #16.,R5 JSR PC,RIT$9 MOV R4,-(SP) MOV R3,-(SP) MOV R2,-(SP) MOV R1,-(SP) M51$9: JSR PC,RIT$9 JSR PC,RIT$9 MOV #2,R0 M52$9: JSR PC,RIT$9 ADD 6(SP),R4 ADC R3 ADC R2 ADC R1 ADD 4(SP),R3 ADC R2 ADC R1 ADD 2(SP),R2 ADC R1 ADD @SP,R1 DEC R0 BGT M52$9 DEC R5 BGT M51$9 ADD #8.,SP RTS PC ML8$9: MOV R5,-(SP) MOV #3,R5 M81$9: ASL R4 ROL R3 ROL R2 ROL R1 ROL R0 DEC R5 BGT M81$9 MOV (SP)+,R5 RTS PC ERR$9: TST (SP)+ MOV S(SP),R3 MOV L(SP),R4 TSTB TYPE(SP) BEQ STS$9 ADD #4,R4 STS$9: MOVB #'*,(R3)+ CMP R3,R4 BLO STS$9 COM TYPE(SP) BR DNE$9 RUD$9: CMP R5,#20. BGT RU1$9 MOV R5,BEXP+0+2(SP) BEQ RU3$9 BLT RU1$9 MOV R0,-(SP) MOV R1,-(SP) MOV R2,-(SP) MOV R3,-(SP) MOV R4,-(SP) MOV #100000,R1 CLR R2 CLR R3 CLR R4 RDF$9: DEC BEXP+0+2+10.(SP) BEQ RDD$9 JSR PC,M45$9 JSR PC,RIT$9 JSR PC,RIT$9 JSR PC,RIT$9 BR RDF$9 RDD$9: CLR R0 ADD (SP)+,R4 ADC R3 ADC R2 ADC R1 ADD (SP)+,R3 ADC R2 ADC R1 ADD (SP)+,R2 ADC R1 ADD (SP)+,R1 ADC R0 ADD (SP)+,R0 RU2$9: CMP #10.,R0 BGT RU1$9 INC EEXP+2(SP) RU1$9: RTS PC RU3$9: ADD #5,R0 BR RU2$9 ISN$9: CMP R5,S-0+2(SP) BLO SPC$9 ROR 0+2(SP) BCC ISR$9 MOVB #'-,@R5 ISR$9: INC R5 RTS PC SPC$9: ROR 0+2(SP) BCS ERR$9 INC R5 CMP R5,S+2(SP) BLO ERR$9 RTS PC DGS$9: CMP #10.,R0 BGT DG1$9 MOVB #'1,(R5)+ SUB #10.,R0 DG1$9: CMP POINT+2(SP),R5 BNE DG2$9 MOVB #'.,(R5)+ DG2$9: CMP L+2(SP),R5 BLOS DIG$9 DG3$9: ADD #60,R0 MOVB R0,(R5)+ CLR R0 JSR PC,M54$9 JSR PC,ML8$9 BR DG1$9 DIG$9: RTS PC RIT$9: CLC ROR R1 ROR R2 ROR R3 ROR R4 RTS PC .ENDC .EOT .TITLE $DLG03 .IFDF CND$10 .GLOBL DLOG,DLOG10,$ERR .IFNDF FPU .GLOBL $POLSH,$ADD,$SBD,$MLD,$DVD,$ID,$POPR4 .ENDC R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 SP=%6 PC=%7 F0=%0 F1=%1 F2=%2 F3=%3 .IFNDF FPU DLOG10: MOV @PC,-(SP) BR LOG$10 DLOG: CLR -(SP) LOG$10: MOV R5,-(SP) MOV 2(R5),R4 ADD #8.,R4 MOV #147572,-(SP) MOV #173721,-(SP) MOV #071027,-(SP) MOV #137661,-(SP) SUB #8.,SP MOV -(R4),-(SP) MOV -(R4),-(SP) MOV -(R4),-(SP) MOV -(R4),-(SP) BLE ERR$10 ASL @SP MOVB 1(SP),26.(SP) MOVB #200,1(SP) ROR @SP MOV #157145,-(SP) MOV #031771,-(SP) MOV #002363,-(SP) MOV #040065,-(SP) MOV 14.(SP),-(SP) MOV 14.(SP),-(SP) MOV 14.(SP),-(SP) MOV 14.(SP),-(SP) MOV #157145,-(SP) MOV #031771,-(SP) MOV #002363,-(SP) MOV #040065,-(SP) JSR R4,$POLSH .WORD $SBD,UP$10,$ADD,$DVD .WORD DUP$10,DUP$10 .WORD $MLD .WORD $POPR4 .WORD REG$10 XPD$10: .WORD $MLD,$ADD,$MLD,$ADD,$MLD,$ADD,$MLD,$ADD .WORD $MLD,$ADD,$MLD,$ADD,$MLD,$ADD .WORD SCL$10,$ID,PL2$10,$MLD .WORD $ADD,EXI$10 .WORD $MLD,EXI$10 ERR$10: ADD #24.,SP JSR R5,$ERR BR ERO$10 .BYTE 4 .BYTE 3 REG$10: MOV #CON$10+8.,R4 MOV #7,R5 BR STC$10 STK$10: MOV R3,-(SP) MOV R2,-(SP) MOV R1,-(SP) MOV R0,-(SP) STC$10: MOV -(R4),-(SP) MOV -(R4),-(SP) MOV -(R4),-(SP) MOV -(R4),-(SP) DEC R5 BGT STK$10 MOV #XPD$10,R4 JMP @(R4)+ UP$10: MOV (SP)+,22.(SP) MOV (SP)+,22.(SP) MOV (SP)+,22.(SP) MOV (SP)+,22.(SP) JMP @(R4)+ SCL$10: CLR -(SP) BISB 12.(SP),@SP SUB #200,@SP JMP @(R4)+ DUP$10: MOV 6(SP),-(SP) MOV 6(SP),-(SP) MOV 6(SP),-(SP) MOV 6(SP),-(SP) JMP @(R4)+ PL2$10: MOV #147572,-(SP) MOV #173721,-(SP) MOV #071027,-(SP) MOV #040061,-(SP) JMP @(R4)+ EXI$10: DECB 11.(SP) BLT LGT$10 MOV #024162,-(SP) MOV #124467,-(SP) MOV #055730,-(SP) MOV #037736,-(SP) JMP @(R4)+ LGT$10: MOV (SP)+,R0 MOV (SP)+,R1 MOV (SP)+,R2 MOV (SP)+,R3 ERO$10: MOV (SP)+,R5 TST (SP)+ RTS R5 .ENDC .IFDF FPU DLOG10: MOV @PC,R4 BR LOG$10 DLOG: CLR R4 LOG$10: SETD SETI MOV #FCO$10,R0 LDD @2(R5),F2 CFCC BLE ERR$10 STEXP F2,R1 LDCID R1,F3 MULD (R0)+,F3 LDEXP #0,F2 LDD F2,F1 SUBD (R0),F2 ADDD (R0)+,F1 DIVD F1,F2 LDD F2,F1 MULD F1,F1 MOV #6,R1 LDD (R0)+,F0 XPD$10: MULD F1,F0 DEC R1 ADDD (R0)+,F0 BGT XPD$10 MULD F2,F0 ADDD (R0)+,F0 ADDD F3,F0 TST R4 BEQ LGT$10 MULD (R0),F0 LGT$10: STD F0,-(SP) MOV (SP)+,R0 MOV (SP)+,R1 MOV (SP)+,R2 MOV (SP)+,R3 RTS R5 ERR$10: JSR R5,$ERR RTS R5 .BYTE 4 .BYTE 3 FCO$10: .WORD 040061,071027 .WORD 173721,147572 .WORD 040065,002363 .WORD 031771,157145 .ENDC .WORD 037455,106270 .WORD 157166,174770 .WORD 037471,072731 .WORD 137716,117115 .WORD 037543,111153 .WORD 060101,135465 .WORD 037622,044436 .WORD 007306,063062 .WORD 037714,146314 .WORD 153450,165773 .WORD 040052,125252 .WORD 125247,004643 CON$10: .WORD 040400,000000 .WORD 000000,000057 .IFDF FPU .WORD 137661,071027 .WORD 173721,147572 .WORD 037736,055730 .WORD 124467,024162 .ENDC .ENDC .TITLE $DNT02 .IFDF CND$11 .GLOBL $DINT R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 SP=%6 MQ=177304 ASH=177316 F0=%0 F1=%1 .IFDF FPU $DINT: .WORD 170011 .WORD 172426 .WORD 171467,4 .WORD 174146 JMP @(R4)+ .WORD 040200,0,0,0 .ENDC .IFNDF FPU $DINT: MOV (SP)+,R0 MOV (SP)+,R1 MOV (SP)+,R2 MOV (SP)+,R3 MOV R4,-(SP) MOV R5,-(SP) MOV R0,R4 ROL R4 CLRB R4 SWAB R4 SUB #270,R4 BGE DNE$11 CMP #-70,R4 BLT SHF$11 CLR R0 CLR R1 C23$11: CLR R2 CLR R3 BR DNE$11 SHF$11: .IFNDF EAE&MULDIV MOV R4,R5 CMP #-32.,R4 BLT ROR$11 BEQ C23$11 ADD #32.,R4 MOV R4,R5 RR1$11: ROR R0 ROR R1 INC R4 BLT RR1$11 AS1$11: ASL R1 ROL R0 INC R5 BLT AS1$11 BR C23$11 ROR$11: ROR R2 ROR R3 INC R4 BLT ROR$11 ASL$11: ASL R3 ROL R2 INC R5 BLT ASL$11 .ENDC .IFDF EAE MOV #MQ,R5 .ENDC .IFDF MULDIV!EAE CMP #-32.,R4 BLT R23$11 BEQ C23$11 R01$11: ADD #32.,R4 .IFDF MULDIV .WORD 073004 NEG R4 .WORD 073004 .ENDC .IFDF EAE MOV R1,@R5 MOV R0,-(R5) MOV R4,@#ASH NEG R4 MOV R4,@#ASH MOV (R5)+,R0 MOV @R5,R1 .ENDC BR C23$11 .IFDF MULDIV R23$11: .WORD 073204 NEG R4 .WORD 073204 .ENDC .IFDF EAE R23$11: MOV R3,@R5 MOV R2,-(R5) MOV R4,@#ASH NEG R4 MOV R4,@#ASH MOV (R5)+,R2 MOV @R5,R3 .ENDC .ENDC DNE$11: MOV (SP)+,R5 MOV (SP)+,R4 MOV R3,-(SP) MOV R2,-(SP) MOV R1,-(SP) MOV R0,-(SP) JMP @(R4)+ .ENDC .ENDC .TITLE $DR02 .IFDF CND$12 .GLOBL $DR,$ERR R4=%4 R5=%5 SP=%6 F0=%0 .IFDF FPU $DR: .WORD 170001 .WORD 177426 .WORD 170000 BVS OV1$12 .WORD 174046 JMP @(R4)+ .ENDC .IFNDF FPU $DR: ROL 4(SP) ADC 2(SP) ADC @SP BCS OVR$12 BVS OVR$12 DR1$12: MOV (SP)+,2(SP) MOV (SP)+,2(SP) JMP @(R4)+ OVR$12: CMP (SP)+,(SP)+ CMP (SP)+,(SP)+ .ENDC OV1$12: JSR R5,$ERR BR DR2$12 .BYTE 3 .BYTE 23. DR2$12: CLR -(SP) CLR -(SP) JMP @(R4)+ .ENDC .TITLE $DSN04 .IFDF CND$13 .GLOBL DSIN,DCOS .IFNDF FPU .GLOBL $ADD,$SBD,$MLD,$DVD,$DINT,$POLSH,$POPR4 .ENDC R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 SP=%6 PC=%7 F0=%0 F1=%1 F2=%2 F3=%3 .IFNDF FPU DCOS: MOV R5,-(SP) MOV 2(R5),R4 CLR -(SP) MOV 6(R4),-(SP) MOV 4(R4),-(SP) MOV 2(R4),-(SP) MOV @R4,-(SP) MOV #064302,-(SP) MOV #121041,-(SP) MOV #007732,-(SP) MOV #040311,-(SP) JSR R4,$POLSH .WORD $ADD,SNC$13 DSIN: MOV R5,-(SP) MOV 2(R5),R4 CLR -(SP) MOV 6(R4),-(SP) MOV 4(R4),-(SP) MOV 2(R4),-(SP) MOV @R4,-(SP) SNC$13: ASL @SP ROR 8.(SP) ROR @SP MOV #064302,-(SP) MOV #121041,-(SP) MOV #007732,-(SP) MOV #040711,-(SP) JSR R4,$POLSH .WORD $DVD .WORD DUP$13 .WORD $DINT .WORD $SBD .WORD X4$13 .WORD DUP$13 .WORD $DINT .WORD QUD$13 .WORD $SBD .WORD QST$13 QSE$13: .WORD DUP$13 .WORD DUP$13 .WORD $MLD .WORD $POPR4 .WORD PLY$13 XPD$13: .WORD $MLD,$ADD,$MLD,$ADD,$MLD,$ADD,$MLD,$ADD .WORD $MLD,$ADD,$MLD,$ADD,$MLD,$ADD,$MLD,$ADD .WORD $MLD PR4$13: .WORD $POPR4 .WORD RTN$13 RTN$13: TST (SP)+ BGE RT1$13 ADD #100000,R0 RT1$13: MOV (SP)+,R5 RTS R5 DUP$13: MOV 6(SP),-(SP) MOV 6(SP),-(SP) MOV 6(SP),-(SP) MOV 6(SP),-(SP) JMP @(R4)+ X4$13: TST @SP BEQ ZER$13 INCB 1(SP) JMP @(R4)+ ZER$13: MOV #PR4$13,R4 JMP @(R4)+ QUD$13: BIS @SP,16.(SP) JMP @(R4)+ QST$13: TSTB 8.(SP) BEQ Q13$13 ADD #100000,@SP CLR -(SP) CLR -(SP) CLR -(SP) MOV #40200,-(SP) JSR R4,$POLSH .WORD $ADD,QSR$13 QSR$13: MOV #QSE$13,R4 Q13$13: ASRB 9.(SP) BCC QUT$13 ADD #100000,@SP QUT$13: JMP @(R4)+ PLY$13: MOV #CON$13+8.,R4 MOV #9.,R5 BR PY1$13 PY2$13: MOV R3,-(SP) MOV R2,-(SP) MOV R1,-(SP) MOV R0,-(SP) PY1$13: MOV -(R4),-(SP) MOV -(R4),-(SP) MOV -(R4),-(SP) MOV -(R4),-(SP) DEC R5 BGT PY2$13 MOV #XPD$13,R4 JMP @(R4)+ .ENDC .IFDF FPU DCOS: SETD LDD @2(R5),F0 ADDD PI2$13,F0 BR SNC$13 DSIN: SETD LDD @2(R5),F0 SNC$13: SETI MOV #FCO$13,R0 CLR R4 CFCC BGE POS$13 INC R4 ABSD F0 POS$13: DIVD (R0)+,F0 MODD #1.0,F0 CFCC BEQ RTN$13 MODD #4.0,F0 STCDI F1,R1 ROR R1 BCC Q13$13 NEGD F0 ADDD #1.0,F0 Q13$13: ROR R1 BCC Q12$13 NEGD F0 Q12$13: LDD F0,F2 MULD F2,F2 MOV #8.,R1 LDD (R0)+,F1 XPD$13: MULD F2,F1 DEC R1 ADDD (R0)+,F1 BGT XPD$13 MULD F1,F0 TST R4 BEQ RTN$13 NEGD F0 RTN$13: STD F0,-(SP) MOV (SP)+,R0 MOV (SP)+,R1 MOV (SP)+,R2 MOV (SP)+,R3 RTS R5 PI2$13: .WORD 040311,007732 .WORD 121041,064302 FCO$13: .WORD 040711,007732 .WORD 121041,064302 .ENDC .WORD 026716,106703 .WORD 045277,146362 .WORD 130467,136273 .WORD 103054,123153 .WORD 032164,074657 .WORD 047254,154742 .WORD 133561,101646 .WORD 167216,134016 .WORD 035050,036032 .WORD 041214,103131 .WORD 136231,064546 .WORD 071423,125024 .WORD 037243,032743 .WORD 035655,051557 .WORD 140045,056747 .WORD 030455,171222 CON$13: .WORD 040311,007732 .WORD 121041,064302 .ENDC .TITLE $DSQ03 .IFDF CND$14 .GLOBL DSQRT,$ERR .IFNDF FPU .GLOBL $ADD,$DVD,$POLSH .ENDC R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 F0=%0 F1=%1 F2=%2 SP=%6 .IFNDF FPU DSQRT: MOV R5,-(SP) MOV 2(R5),R5 MOV @R5,R1 BMI ERR$14 BEQ ZER$14 MOV 2(R5),R2 MOV #4,-(SP) ASR R1 ROR R2 ADD #20100,R1 CLR -(SP) CLR -(SP) MOV R2,-(SP) MOV R1,-(SP) CLR -(SP) CLR -(SP) MOV 2(R5),-(SP) MOV @R5,-(SP) CLR -(SP) CLR -(SP) MOV R2,-(SP) MOV R1,-(SP) LUP$14: JSR R4,$POLSH .WORD $DVD,$ADD,UPL$14 UPL$14: SUB #200,@SP DEC 8.(SP) BEQ OUT$14 MOV 6(R5),-(SP) MOV 4(R5),-(SP) MOV 2(R5),-(SP) MOV @R5,-(SP) MOV 14.(SP),-(SP) MOV 14.(SP),-(SP) MOV 14.(SP),-(SP) MOV 14.(SP),-(SP) BR LUP$14 OUT$14: MOV (SP)+,R0 MOV (SP)+,R1 MOV (SP)+,R2 MOV (SP)+,R3 TST (SP)+ RTN$14: MOV (SP)+,R5 RTS R5 ERR$14: JSR R5,$ERR BR RTN$14 .BYTE 4 .BYTE 4 ZER$14: CLR R0 CLR R1 CLR R2 CLR R3 BR RTN$14 .ENDC .IFDF FPU DSQRT: MOV 2(R5),R4 MOV @R4,R1 BMI ERR$14 BEQ ZER$14 MOV 2(R4),R2 ASR R1 ROR R2 ADD #20100,R1 CLR -(SP) CLR -(SP) MOV R2,-(SP) MOV R1,-(SP) MOV #4,R0 SETD LDD (SP)+,F0 LDD @R4,F2 LUP$14: LDD F0,F1 LDD F2,F0 DIVD F1,F0 ADDD F1,F0 DEC R0 DIVD #2.0,F0 BGT LUP$14 STD F0,-(SP) MOV (SP)+,R0 MOV (SP)+,R1 MOV (SP)+,R2 MOV (SP)+,R3 RTS R5 ERR$14: JSR R5,$ERR RTS R5 .BYTE 4 .BYTE 4 ZER$14: CLR R0 CLR R1 CLR R2 CLR R3 RTS R5 .ENDC .ENDC .TITLE $DTN03 .IFDF CND$15 .GLOBL DATAN,DATAN2 .IFNDF FPU .GLOBL $ADD,$SBD,$MLD,$DVD,$POLSH,$POPR4 .ENDC R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 SP=%6 F0=%0 F1=%1 F2=%2 F3=%3 F4=%4 F5=%5 .IFNDF FPU DATAN2: MOV R5,-(SP) CLR -(SP) CLR -(SP) CLR -(SP) CLR -(SP) CLR -(SP) CLR -(SP) CLR -(SP) CLR -(SP) CLR -(SP) MOV 2(R5),R4 MOV 6(R4),-(SP) MOV 4(R4),-(SP) MOV 2(R4),-(SP) MOV @R4,-(SP) MOV @SP,R0 MOV 4(R5),R4 MOV 6(R4),-(SP) MOV 4(R4),-(SP) MOV 2(R4),-(SP) MOV @R4,-(SP) MOV @SP,R1 BEQ INF$15 ASL R0 CLRB R0 SWAB R0 ASL R1 CLRB R1 SWAB R1 SUB R1,R0 CMP #58.,R0 BLT INF$15 DIV$15: JSR R4,$POLSH .WORD $DVD,UPL$15 UPL$15: TST @4(R5) BGE ATE$15 MOV #040511,16.(SP) MOV #007732,18.(SP) MOV #121041,20.(SP) MOV #064301,22.(SP) TST @2(R5) BGE ATE$15 ADD #100000,16.(SP) ATE$15: TST @SP BR AT1$15 INF$15: ADD #36.,SP MOV #040311,R0 MOV #007732,R1 MOV #121041,R2 MOV #064301,R3 TST @2(R5) BGE INR$15 ADD #100000,R0 INR$15: RTS R5 DATAN: MOV R5,-(SP) CLR -(SP) CLR -(SP) CLR -(SP) CLR -(SP) CLR -(SP) CLR -(SP) CLR -(SP) CLR -(SP) CLR -(SP) MOV 2(R5),R4 MOV 6(R4),-(SP) MOV 4(R4),-(SP) MOV 2(R4),-(SP) MOV @R4,-(SP) AT1$15: BGE PLU$15 ADD #100000,@SP INC 24.(SP) PLU$15: CMP @SP,#40200 BLO LE1$15 BGT GT1$15 TST 2(SP) BNE GT1$15 TST 4(SP) BNE GT1$15 TST 6(SP) BEQ LE1$15 GT1$15: MOV #140311,8.(SP) MOV #007732,10.(SP) MOV #121041,12.(SP) MOV #064301,14.(SP) DEC 24.(SP) MOV 6(SP),-(SP) MOV 6(SP),-(SP) MOV 6(SP),-(SP) MOV 6(SP),-(SP) MOV #40200,8.(SP) CLR 10.(SP) CLR 12.(SP) CLR 14.(SP) JSR R4,$POLSH .WORD $DVD,LE1$15 LE1$15: MOV 6(SP),-(SP) MOV 6(SP),-(SP) MOV 6(SP),-(SP) MOV 6(SP),-(SP) CLR 8.(SP) CLR 10.(SP) CLR 12.(SP) CLR 14.(SP) CMP @SP,#037611 BLO L15$15 BHI TNS$15 CMP 2(SP),#030242 BHI TNS$15 BLO L15$15 CMP 4(SP),#172366 BHI TNS$15 BLO L15$15 CMP 6(SP),#065261 BLOS L15$15 TNS$15: MOV #040006,8.(SP) MOV #005221,10.(SP) MOV #140553,12.(SP) MOV #115454,14.(SP) MOV @SP,R0 MOV 2(SP),R1 MOV 4(SP),R2 MOV 6(SP),R3 MOV #062524,-(SP) MOV #041302,-(SP) MOV #131727,-(SP) MOV #140335,-(SP) MOV R3,-(SP) MOV R2,-(SP) MOV R1,-(SP) MOV R0,-(SP) CLR -(SP) CLR -(SP) CLR -(SP) MOV #40200,-(SP) MOV #062524,-(SP) MOV #041302,-(SP) MOV #131727,-(SP) MOV #040335,-(SP) MOV R3,-(SP) MOV R2,-(SP) MOV R1,-(SP) MOV R0,-(SP) JSR R4,$POLSH .WORD $MLD,$SBD,UP$15,$SBD,$DVD,L15$15 L15$15: MOV @SP,R0 MOV 2(SP),R1 MOV 4(SP),R2 MOV 6(SP),R3 MOV R3,-(SP) MOV R2,-(SP) MOV R1,-(SP) MOV R0,-(SP) MOV R3,-(SP) MOV R2,-(SP) MOV R1,-(SP) MOV R0,-(SP) JSR R4,$POLSH .WORD $MLD .WORD $POPR4,PLY$15 XPD$15: .WORD $MLD,$ADD,$MLD,$ADD,$MLD,$ADD .WORD $MLD,$ADD,$MLD,$ADD,$MLD,$ADD .WORD $MLD,$ADD,$MLD,$ADD,$MLD,$ADD .WORD $ADD .WORD SGN$15 .WORD $ADD .WORD $POPR4 .WORD EXI$15 EXI$15: TST (SP)+ MOV (SP)+,R5 RTS R5 UP$15: MOV (SP)+,22.(SP) MOV (SP)+,22.(SP) MOV (SP)+,22.(SP) MOV (SP)+,22.(SP) JMP @(R4)+ PLY$15: MOV #CON$15+8.,R4 MOV #9.,R5 BR PY1$15 PY2$15: MOV R3,-(SP) MOV R2,-(SP) MOV R1,-(SP) MOV R0,-(SP) PY1$15: MOV -(R4),-(SP) MOV -(R4),-(SP) MOV -(R4),-(SP) MOV -(R4),-(SP) DEC R5 BGT PY2$15 MOV #XPD$15,R4 JMP @(R4)+ SGN$15: TST 16.(SP) BEQ SG1$15 ADD #100000,@SP SG1$15: JMP @(R4)+ .ENDC .IFDF FPU DATAN2: SETD MOV 2(R5),R3 MOV 4(R5),R4 MOV @R3,R0 MOV @R4,R1 BEQ INF$15 ASL R0 CLRB R0 SWAB R0 ASL R1 CLRB R1 SWAB R1 SUB R1,R0 CMP #58.,R0 BLT INF$15 LDD PI$15,F3 LDD @R3,F0 CFCC BGE A1P$15 NEGD F3 A1P$15: LDD @R4,F1 CFCC BLT A2M$15 CLRD F3 A2M$15: DIVD F1,F0 BR AT1$15 INF$15: LDD PI2$15,F1 TST @R3 BGE EXI$15 NEGD F1 BR EXI$15 DATAN: SETD CLRD F3 LDD @2(R5),F0 AT1$15: CLR R4 CFCC STD F3,F5 CLRD F3 BGE PLU$15 ABSD F0 INC R4 PLU$15: LDD #1.0,F1 CMPD F0,F1 CFCC BLE LE1$15 GT1$15: DEC R4 DIVD F0,F1 LDD F1,F0 LDD PI2$15,F3 LE1$15: STD F3,F4 CLRD F3 CMPD T15$15,F0 CFCC BGE L15$15 LDD PI6$15,F3 LDD F0,F1 MULD RT3$15,F0 SUBD #1.0,F0 ADDD RT3$15,F1 DIVD F1,F0 L15$15: LDD F0,F2 MULD F0,F0 MOV #FCO$15,R0 MOV #8.,R1 LDD (R0)+,F1 XPD$15: MULD F0,F1 DEC R1 ADDD (R0)+,F1 BGT XPD$15 MULD F2,F1 ADDD F3,F1 SUBD F4,F1 TST R4 BEQ SG1$15 NEGD F1 SG1$15: ADDD F5,F1 EXI$15: STD F1,-(SP) MOV (SP)+,R0 MOV (SP)+,R1 MOV (SP)+,R2 MOV (SP)+,R3 RTS R5 PI$15: .WORD 040511,007732 .WORD 121041,064301 PI2$15: .WORD 040311,007732 .WORD 121041,064301 T15$15: .WORD 037611,030242 .WORD 172366,065261 PI6$15: .WORD 040006,005221 .WORD 140553,115454 RT3$15: .WORD 040335,131727 .WORD 041302,062524 .ENDC FCO$15: .WORD 037065,150707 .WORD 162300,163030 .WORD 137204,143233 .WORD 004010,000413 .WORD 037235,043002 .WORD 027154,142446 .WORD 137272,025671 .WORD 116412,065630 .WORD 037343,107047 .WORD 023625,025401 .WORD 137422,044444 .WORD 071335,116151 .WORD 037514,146314 .WORD 146224,165650 .WORD 137652,125252 .WORD 125252,113602 CON$15: .WORD 040200,000000 .WORD 000000,000000 .ENDC .TITLE $DVD05 .IFDF CND$16 .GLOBL $DVD,$ERRA R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 SP=%6 PC=%7 F0=%0 F1=%1 D=8. N=16. Q=16. .IFDF FPU $DVD: .WORD 170011 .WORD 172526 .WORD 172426 .WORD 174401 .WORD 174046 JMP @(R4)+ .ENDC .IFNDF FPU $DVD: MOV R4,-(SP) MOV R5,-(SP) CLR R0 CLR R1 CLR R2 CLR R3 CLR -(SP) ASL N+0-2(SP) ROL @SP CLR -(SP) TST D(SP) BEQ DCH$16 BISB N+1(SP),@SP BEQ ZER$16 BISB N(SP),R0 SWAB R0 SEC ROR R0 BISB N+3(SP),R0 BISB N+2(SP),R1 SWAB R1 BISB N+5(SP),R1 BISB N+4(SP),R2 SWAB R2 BISB N+7(SP),R2 BISB N+6(SP),R3 SWAB R3 ASL D(SP) ADC 2(SP) CLR R4 BISB D+1(SP),R4 SUB R4,@SP SWAB D(SP) SEC ROR D(SP) MOVB D+3(SP),D(SP) MOVB D+2(SP),D+3(SP) MOVB D+5(SP),D+2(SP) MOVB D+4(SP),D+5(SP) MOVB D+7(SP),D+4(SP) MOVB D+6(SP),D+7(SP) CLRB D+6(SP) CLR Q(SP) CLR Q+2(SP) CLR Q+4(SP) CMP R0,D(SP) BHI DLW$16 BLO DHI$16 CMP R1,D+2(SP) BHI DLW$16 BLO DHI$16 CMP R2,D+4(SP) BHI DLW$16 BLO DHI$16 CMP R3,D+6(SP) BHI DLW$16 BNE DHI$16 INC @SP CLR R4 BR FLT$16 DCH$16: MOV #1403,R0 BR EC1$16 UND$16: MOV #4005,R0 ECL$16: TST -(SP) EC1$16: JSR R5,$ERRA ZER$16: CMP (SP)+,(SP)+ CLR Q+0-4(SP) CLR Q+2-4(SP) CLR Q+4-4(SP) CLR Q+6-4(SP) BR RTN$16 DLW$16: ROR R0 ROR R1 ROR R2 ROR R3 INC @SP DHI$16: MOV #9.,R5 JSR PC,DV1$16 MOVB R4,Q(SP) TST R5 BNE FL1$16 MOV #16.,R5 JSR PC,DV1$16 MOV R4,Q+2(SP) TST R5 BNE FL1$16 MOV #16.,R5 JSR PC,DV1$16 MOV R4,Q+4(SP) TST R5 BNE FL1$16 MOV #16.,R5 JSR PC,DV1$16 BR FLT$16 FL1$16: CLR R4 FLT$16: MOV (SP)+,R5 ADD #200,R5 BLE UND$16 CMP #377,R5 BLT OVR$16 MOVB R5,Q+1-2(SP) SGN$16: ROR (SP)+ ROR Q+0-4(SP) ROR Q+2-4(SP) ROR Q+4-4(SP) ROR R4 ADC R4 ADC Q+4-4(SP) ADC Q+2-4(SP) ADC Q+0-4(SP) MOV R4,Q+6-4(SP) BCS OV1$16 BVS OV1$16 RTN$16: MOV (SP)+,R5 MOV (SP)+,R4 ADD #8.,SP JMP @(R4)+ OV1$16: TST -(SP) OVR$16: MOV #2003,R0 BR ECL$16 DV1$16: ASL R4 ASL R3 ROL R2 ROL R1 ROL R0 BCS GO$16 CMP D+0+2(SP),R0 BHI NGO$16 BLO GO$16 CMP D+2+2(SP),R1 BHI NGO$16 BLO GO$16 CMP D+4+2(SP),R2 BHI NGO$16 BLO GO$16 CMP D+6+2(SP),R3 BHI NGO$16 BEQ NQD$16 GO$16: SUB D+6+2(SP),R3 SBC R2 SBC R1 SBC R0 SUB D+4+2(SP),R2 SBC R1 SBC R0 SUB D+2+2(SP),R1 SBC R0 SUB D+0+2(SP),R0 INC R4 NGO$16: DEC R5 BGT DV1$16 RTS PC NQD$16: INC R4 BR EQ1$16 EQ2$16: ASL R4 EQ1$16: DEC R5 BGT EQ2$16 INC R5 RTS$16: RTS PC .ENDC .ENDC .TITLE $DVI03 .IFDF CND$17 .GLOBL $DVI,$ERR R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 SP=%6 MQ=177304 .IFNDF EAE&MULDIV $DVI: CLR R0 MOV (SP)+,R1 BGT P1$17 BEQ CHK$17 INC R0 NEG R1 P1$17: MOV @SP,R3 BGT P2$17 BEQ ZER$17 INC R0 NEG R3 P2$17: MOV R4,-(SP) MOV #8.,R4 CLR R2 SWAB R3 BEQ DIV$17 ASL R4 SWAB R3 DIV$17: ASL R3 ROL R2 BEQ LUP$17 INC R3 SUB R1,R2 BHIS LUP$17 ADD R1,R2 DEC R3 LUP$17: DEC R4 BGT DIV$17 MOV (SP)+,R4 NEG R3 ASR R0 BCS P3$17 NEG R3 BVS CHK$17 P3$17: MOV R3,@SP JMP @(R4)+ ZER$17: CLR @SP JMP @(R4)+ .ENDC .IFDF EAE $DVI: MOV #MQ,R0 MOV (SP)+,R1 BEQ CHK$17 MOV (SP)+,@R0 TST -(R0) MOV R1,-(R0) CMP (R0)+,(R0)+ MOV @R0,-(SP) JMP @(R4)+ .ENDC .IFDF MULDIV $DVI: MOV 2(SP),R1 .WORD 006700 .WORD 071026 MOV R0,@SP BCS CHK$17 JMP @(R4)+ .ENDC CHK$17: JSR R5,$ERR JMP @(R4)+ .BYTE 3 .BYTE 5 .ENDC .TITLE $DVR08 .IFDF CND$18 .GLOBL $DVR,$ERRA R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 SP=%6 PC=%7 MQ=177304 NOR=177312 LSH=177314 ASH=177316 F0=%0 F1=%1 D=8. N=12. Q=12. .IFDF FPU $DVR: .WORD 170001 .WORD 172526 .WORD 172426 .WORD 174401 .WORD 174046 JMP @(R4)+ .ENDC .IFNDF FPU $DVR: MOV R4,-(SP) MOV R5,-(SP) CLR R0 CLR R1 CLR -(SP) ASL N+0-2(SP) ROL @SP CLR -(SP) TST D(SP) BEQ DCH$18 BISB N+1(SP),@SP BEQ ZER$18 BISB N(SP),R0 SWAB R0 SEC ROR R0 BISB N+3(SP),R0 BISB N+2(SP),R1 SWAB R1 CLR R2 CLR R3 ASL D(SP) ADC 2(SP) BISB D+1(SP),R2 SUB R2,@SP CLR R2 BISB D(SP),R2 SWAB R2 SEC ROR R2 BISB D+3(SP),R2 BISB D+2(SP),R3 SWAB R3 .IFDF EAE!MULDIV CLC ROR R0 ROR R1 ROR R2 ROR R3 .ENDC CMP R0,R2 BLO DHI$18 .IFNDF EAE&MULDIV BHI DLW$18 CMP R1,R3 BHI DLW$18 BNE DHI$18 CLR Q(SP) INC @SP CLR R5 BR FLT$18 .ENDC .IFDF EAE!MULDIV BHIS DLW$18 .ENDC ZER$18: CMP (SP)+,(SP)+ BR EC1$18 DCH$18: TST (SP)+ MOV #4003,R0 BR ECL$18 OV1$18: TST -(SP) OVR$18: MOV #3003,R0 BR ECL$18 UND$18: MOV #1405,R0 ECL$18: TST (SP)+ JSR R5,$ERRA EC1$18: CLR Q+0-4(SP) CLR Q+2-4(SP) BR RTN$18 DLW$18: ROR R0 ROR R1 INC @SP .IFNDF EAE&MULDIV DHI$18: MOV #9.,R4 JSR PC,DV1$18 MOVB R5,Q(SP) TST R4 BEQ NT0$18 CLR R5 BR FLT$18 NT0$18: MOV #16.,R4 JSR PC,DV1$18 .ENDC .IFDF EAE!MULDIV DHI$18: CLC ROR R3 ROR R0 ROR R1 .ENDC .IFDF EAE MOV #MQ,R5 MOV R1,@R5 MOV R0,-(R5) MOV R2,-(R5) TST (R5)+ MOV (R5)+,R1 MOV (R5)+,R4 MOV R3,@R5 TST -(R5) ASR R1 SUB R1,-(R5) DEC @#ASH MOV R2,-(R5) CMP (R5)+,(R5)+ NEG @R5 MOV #2,@#ASH ADD R4,-(R5) CLR @#NOR SUB @#NOR,@SP MOV #-6,@#LSH MOV (R5)+,Q(SP) MOV @R5,R5 .ENDC .IFDF MULDIV MOV R0,R4 MOV R1,R5 .WORD 071402 MOV R5,R1 MOV R4,R0 .WORD 070403 ASR R1 SUB R1,R4 .WORD 073427,-1 .WORD 071402 NEG R4 .WORD 073427,-14. ADD R0,R4 NBT$18: .WORD 073427,1 BMI NBI$18 DEC @SP BR NBT$18 NBI$18: .WORD 073427,-7 MOV R4,Q(SP) .ENDC FLT$18: MOV (SP)+,R4 ADD #200,R4 BLE UND$18 CMP #377,R4 BLT OVR$18 MOVB R4,Q+1-2(SP) SGN$18: ROR (SP)+ ROR Q+0-4(SP) ROR R5 ADC R5 ADC Q+0-4(SP) MOV R5,Q+2-4(SP) BCS OV1$18 BVS OV1$18 RTN$18: MOV (SP)+,R5 MOV (SP)+,R4 CMP (SP)+,(SP)+ JMP @(R4)+ .IFNDF EAE&MULDIV DV1$18: ASL R5 ASL R1 ROL R0 BCS GO$18 CMP R2,R0 BHI NGO$18 BLO GO$18 CMP R3,R1 BHI NGO$18 BEQ NQD$18 GO$18: SUB R3,R1 SBC R0 SUB R2,R0 INC R5 NGO$18: DEC R4 BGT DV1$18 RTS PC NQD$18: INC R5 BR EQ1$18 EQ2$18: ASL R5 EQ1$18: DEC R4 BGT EQ2$18 INC R4 RTS$18: RTS PC .ENDC .ENDC .ENDC .TITLE $DXP05 .IFDF CND$19 .GLOBL DEXP,$ERRA .IFNDF FPU .GLOBL $ADD,$SBD,$MLD,$DVD,$ID,$DI,$POLSH,$POPR4 .ENDC R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 SP=%6 F0=%0 F1=%1 F2=%2 F3=%3 .IFDF FPU DEXP: MOV @2(R5),R0 .ENDC .IFNDF FPU DEXP: MOV R5,-(SP) MOV 2(R5),R4 MOV @R4,R0 .ENDC BGT POS$19 CMP R0,#141662 BHI ZER$19 BR SMT$19 POS$19: CMP R0,#41660 BHI OVR$19 SMT$19: ASL R0 CMP R0,#43000 BLO ONE$19 .IFNDF FPU SUB #20.,SP ADD #8.,R4 MOV -(R4),-(SP) MOV -(R4),-(SP) MOV -(R4),-(SP) MOV -(R4),-(SP) MOV #013761,-(SP) MOV #024534,-(SP) MOV #125073,-(SP) MOV #40270,-(SP) JSR R4,$POLSH .WORD $MLD .WORD DUP$19 .WORD $DI .WORD ADJ$19 .WORD $ID .WORD $SBD .WORD M16$19 .WORD DUP$19 .WORD $DI .WORD DSV$19 .WORD $ID .WORD $SBD,D16$19 .WORD DUP$19,DUP$19 .WORD $MLD .WORD $POPR4 .WORD UPL$19 ONE$19: MOV #40200,R0 BR Z1$19 OVR$19: MOV #1004,R0 BR ECL$19 ZER$19: MOV #2005,R0 ECL$19: JSR R5,$ERRA CLR R0 Z1$19: CLR R1 CLR R2 CLR R3 BR OUT$19 UPL$19: MOV #033343,-(SP) MOV #015345,-(SP) MOV #152405,-(SP) MOV #040746,-(SP) MOV R3,-(SP) MOV R2,-(SP) MOV R1,-(SP) MOV R0,-(SP) MOV #153703,-(SP) MOV #153011,-(SP) MOV #113360,-(SP) MOV #037154,-(SP) MOV R3,-(SP) MOV R2,-(SP) MOV R1,-(SP) MOV R0,-(SP) MOV #171042,-(SP) MOV #074433,-(SP) MOV #101232,-(SP) MOV #041246,-(SP) JSR R4,$POLSH .WORD $ADD,AUP$19 .WORD $MLD,$ADD,$MLD .WORD TWC$19 .WORD $ADD,ABP$19 .WORD $SBD,$DVD .WORD SCL$19 SCL$19: MOV #RT2$19+8.,R5 ASR$19: ASR 8.(SP) BCC NML$19 MOV -(R5),-(SP) MOV -(R5),-(SP) MOV -(R5),-(SP) MOV -(R5),-(SP) JSR R4,$POLSH .WORD $MLD,ASR$19 NML$19: BEQ SC1$19 SUB #8.,R5 BR ASR$19 SC1$19: MOV (SP)+,R0 MOV (SP)+,R1 MOV (SP)+,R2 MOV (SP)+,R3 TST (SP)+ MOV (SP)+,R4 SWAB R4 CLRB R4 ASR R4 ADD R4,R0 BMI OVR$19 OUT$19: MOV (SP)+,R5 RTS R5 ADJ$19: TST @2(R5) BGE ARN$19 DEC @SP ARN$19: MOV @SP,28.(SP) JMP @(R4)+ M16$19: ADD #1000,@SP JMP @(R4)+ D16$19: SUB #1000,@SP BPL D6R$19 CLR @SP D6R$19: JMP @(R4)+ DSV$19: MOV @SP,26.(SP) JMP @(R4)+ AUP$19: MOV (SP)+,38.(SP) MOV (SP)+,38.(SP) MOV (SP)+,38.(SP) MOV (SP)+,38.(SP) JMP @(R4)+ ABP$19: MOV (SP)+,22.(SP) MOV (SP)+,22.(SP) MOV (SP)+,22.(SP) MOV (SP)+,22.(SP) JMP @(R4)+ DUP$19: MOV 6(SP),-(SP) MOV 6(SP),-(SP) MOV 6(SP),-(SP) MOV 6(SP),-(SP) JMP @(R4)+ TWC$19: MOV #8.,R0 TW1$19: MOV 14.(SP),-(SP) DEC R0 BGT TW1$19 JMP @(R4)+ .WORD 040265,002363,031771,157145 .WORD 040230,033760,050615,134251 .WORD 040213,112701,161752,105727 RT2$19: .WORD 040205,125303,063714,044173 .ENDC .IFDF FPU SETD SETI MOV #FCO$19,R0 LDD @2(R5),F2 MODD (R0)+,F2 STCDI F3,R4 TSTD F2 CFCC BGE M16$19 ADDD #1.0,F2 DEC R4 M16$19: MODD #16.0,F2 STCDI F3,R3 DIVD #16.0,F2 LDD F2,F3 MULD F3,F3 LDD F3,F1 ADDD (R0)+,F1 MULD (R0)+,F3 ADDD (R0)+,F3 MULD F2,F3 LDD F1,F0 ADDD F3,F0 SUBD F3,F1 DIVD F1,F0 SCL$19: ASR R3 BCC NML$19 MULD (R0)+,F0 BR SCL$19 NML$19: BEQ SC1$19 ADD #8.,R0 BR SCL$19 SC1$19: STD F0,-(SP) MOV (SP)+,R0 MOV (SP)+,R1 MOV (SP)+,R2 MOV (SP)+,R3 SWAB R4 CLRB R4 ASR R4 ADD R4,R0 BMI OVR$19 RTS R5 ONE$19: MOV #40200,R0 BR Z1$19 OVR$19: MOV #1004,R0 BR ECL$19 ZER$19: MOV #2005,R0 ECL$19: JSR R5,$ERRA CLR R0 Z1$19: CLR R1 CLR R2 CLR R3 RTS R5 FCO$19: .WORD 40270,125073,024534,013761 .WORD 041246,101232,074433,171042 .WORD 037154,113360,153011,153703 .WORD 040746,152405,015345,033343 .WORD 040205,125303,063714,044173 .WORD 040213,112701,161752,105727 .WORD 040230,033760,050615,134251 .WORD 040265,002363,031771,157145 .ENDC .ENDC .TITLE $EXP04 .IFDF CND$20 .GLOBL EXP,$ERRA .IFNDF FPU .GLOBL $ADR,$SBR,$MLR,$DVR,$IR,$RI,$POLSH .ENDC R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 SP=%6 PC=%7 F0=%0 F1=%1 F2=%2 F3=%3 EXP: MOV 2(R5),R4 MOV @R4,R0 BGT POS$20 CMP R0,#141662 BHI ZER$20 BR SMT$20 POS$20: CMP R0,#41660 BHI OVR$20 SMT$20: ASL R0 CMP R0,#63000 BLO ONE$20 .IFNDF FPU TST -(SP) CLR -(SP) MOV #40200,-(SP) MOV 2(R4),-(SP) MOV @R4,-(SP) MOV 2(R4),-(SP) MOV @R4,-(SP) JSR R4,$POLSH .WORD PLE$20 .WORD $MLR .WORD $RI .WORD ESV$20 .WORD $IR .WORD PLE$20 .WORD $DVR .WORD $SBR .WORD CFR$20 .WORD $MLR .WORD $ADR .WORD $DVR .WORD $ADR .WORD $ADR .WORD $DVR .WORD INC$20 .WORD $ADR .WORD DUP$20 .WORD $MLR .WORD SCL$20 INC$20: ADD #100200,@SP JMP @(R4)+ DUP$20: MOV 2(SP),-(SP) MOV 2(SP),-(SP) JMP @(R4)+ PLE$20: MOV #125073,-(SP) MOV #40270,-(SP) JMP @(R4)+ ESV$20: MOV @SP,10.(SP) JMP @(R4)+ CFR$20: ROL @SP ROL R0 SUB #400,@SP BLOS ZFR$20 ROR R0 ROR @SP MOV @SP,R0 MOV 2(SP),R1 MOV #036602,-(SP) MOV #141100,-(SP) MOV R1,-(SP) MOV R0,-(SP) MOV #071571,-(SP) MOV #042426,-(SP) MOV #056133,-(SP) MOV #041560,-(SP) MOV R1,-(SP) MOV R0,-(SP) MOV R1,-(SP) MOV R0,-(SP) JMP @(R4)+ .ENDC .IFDF FPU SETD SETI MOV #FCO$20,R0 LDCFD @R4,F2 MODD (R0)+,F2 STCDI F3,R4 LDD #1.0,F0 DIVD (R0)+,F2 SETF LDCDF F2,F2 CFCC BEQ SC1$20 LDF F2,F3 MULF F3,F3 ADDF (R0)+,F3 LDF (R0)+,F1 DIVF F3,F1 ADDF F2,F1 ADDF (R0)+,F1 DIVF F1,F2 MULF #2.0,F2 SUBF F2,F0 MULF F0,F0 SC1$20: STF F0,-(SP) .ENDC .IFNDF FPU ZFR$20: CMP (SP)+,(SP)+ .ENDC SCL$20: MOV (SP)+,R0 MOV (SP)+,R1 .IFNDF FPU MOV (SP)+,R4 .ENDC SWAB R4 CLRB R4 ASR R4 ADD R4,R0 BMI OVR$20 RTS R5 ONE$20: CLR R1 MOV #40200,R0 RTS R5 OVR$20: MOV #2404,R0 BR ECL$20 ZER$20: MOV #2405,R0 ECL$20: JSR R5,$ERRA CLR R0 CLR R1 RTS R5 .IFDF FPU FCO$20: .WORD 040270,125073 .WORD 024534,013761 .WORD 040470,125073 .WORD 024534,013761 .WORD 041560,056133 .WORD 042426,071571 .WORD 141100,036602 .ENDC .ENDC .EOT .TITLE $FCL02 .IFDF CND$21 .GLOBL $FCALL R0=%0 R4=%4 R5=%5 SP=%6 $FCALL: MOV #RET$21,-(SP) MOV #137,-(SP) MOV R5,-(SP) MOV #401,-(SP) MOV SP,R5 JSR R0,@R4 RET$21: ADD #8.,SP JMP @(SP)+ .ENDC .TITLE $FIX03 .IFDF CND$22 .GLOBL IFIX,$RI,$POLSH R0=%0 R4=%4 R5=%5 SP=%6 IFIX: MOV 2(R5),R4 MOV 2(R4),-(SP) MOV @R4,-(SP) RND$22: JSR R4,$POLSH .WORD $RI,UPL$22 UPL$22: MOV (SP)+,R0 RTS R5 .ENDC .TITLE $FLT02 .IFDF CND$23 .GLOBL FLOAT,$IR,$POLSH,$POPR3 R0=%0 R1=%1 R4=%4 R5=%5 SP=%6 FLOAT: MOV @2(R5),-(SP) JSR R4,$POLSH .WORD $IR .WORD $POPR3 .WORD UPL$23 UPL$23: RTS R5 .ENDC .TITLE $ICI02 .IFDF CND$24 .GLOBL $ICI,$OCI R0=%0 R1=%1 R2=%2 SP=%6 PC=%7 $OCI: MOV #67,-(SP) BR GO$24 $ICI: MOV #471,-(SP) GO$24: MOV R1,-(SP) MOV 8.(SP),R1 ADD 6(SP),8.(SP) MOV 4(SP),6(SP) MOV R0,4(SP) MOV R2,-(SP) CLR -(SP) CLR R0 STT$24: MOVB (R1)+,R2 BIC #177600,R2 CMPB R2,#' BNE SGS$24 CMP R1,12.(SP) BLT STT$24 BR SGN$24 SGS$24: TSTB 7(SP) BNE SN1$24 INC @SP BR NCK$24 SN1$24: CMPB R2,#'+ BEQ FLD$24 + CMPB R2,#'- BNE NCK$24 INC @SP BR FLD$24 NXT$24: MOVB (R1)+,R2 BIC #177600,R2 CMPB R2,#' BNE NCK$24 MOVB #60,R2 NCK$24: CMPB R2,#'0 BLT ERR$24 CMPB R2,6(SP) BGT ERR$24 SUB #60,R2 TSTB 7(SP) BEQ OCL$24 ASL R0 BVS ERR$24 SUB R0,R2 ASL R0 BVS ERR$24 ASL R0 BVS ERR$24 SUB R2,R0 BVS ERR$24 FLD$24: CMP R1,12.(SP) BLT NXT$24 SGN$24: ROR (SP)+ BCS DNE$24 NEG R0 BVS NGM$24 CLC DNE$24: MOV (SP)+,R2 MOV (SP)+,R1 ROL (SP)+ MOV R0,4(SP) MOV (SP)+,R0 RTS PC ERR$24: TST (SP)+ NGM$24: CLR R0 COM 4(SP) BR DNE$24 OCL$24: ROL R0 BCS ERR$24 ROL R0 BCS ERR$24 ROL R0 BCS ERR$24 ADD R2,R0 BR FLD$24 .ENDC .TITLE $ICO02 .IFDF CND$25 .GLOBL $ICO,$OCO R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 SP=%6 PC=%7 $OCO: MOV #OCT$25-REL$25,R0 BR GO$25 $ICO: MOV #DEC$25-REL$25,R0 GO$25: MOV R4,-(SP) MOV 8.(SP),R3 MOV 6.(SP),R2 BGE LPS$25 CLR R2 CLR 6(SP) LPS$25: MOV 4.(SP),R4 MOV #' ,-(SP) CMP R0,#OCT$25-REL$25 BEQ POS$25 TST R4 BGE POS$25 NEG R4 MOV #'-,@SP POS$25: CLR -(SP) ADD PC,R0 REL$25: TST$25: TST @R0 BEQ MOV$25 CLR R1 SUB$25: SUB @R0,R4 BLO BAC$25 INC R1 BR SUB$25 BAC$25: ADD (R0)+,R4 TST R1 BNE NZE$25 TST @SP BEQ TST$25 NZE$25: ADD #60,R1 MOV R1,-(SP) BR TST$25 MOV$25: ADD R2,R3 ADD #60,R4 MOVB R4,-(R3) DCR$25: DEC R2 BLE FUL$25 MOVB (SP)+,-(R3) BNE DCR$25 MOVB (SP)+,@R3 FIL$25: DEC R2 BEQ DNE$25 MOVB #' ,-(R3) BR FIL$25 FUL$25: TST (SP)+ BNE ERR$25 CMP #' ,(SP)+ BNE STS$25-4. DNE$25: MOV (SP)+,R4 MOV (SP)+,4(SP) TST (SP)+ ROL (SP)+ RTS PC ERR$25: TST (SP)+ BNE ERR$25 TST (SP)+ MOV 8.(SP),R3 STS$25: MOVB #'*,(R3)+ DEC 6(SP) BGT STS$25 COM 6(SP) BR DNE$25 DEC$25: .WORD 10000.,1000.,100.,10.,0 OCT$25: .WORD 100000,10000,1000,100,10,0 .ENDC .TITLE $INT02 .IFDF CND$26 .GLOBL INT,IDINT,$RI,$POLSH R0=%0 R4=%4 R5=%5 SP=%6 INT: IDINT: MOV 2(R5),R4 MOV 2(R4),-(SP) MOV @R4,-(SP) JSR R4,$POLSH .WORD $RI,UPL$26 UPL$26: MOV (SP)+,R0 RTS R5 .ENDC .TITLE $IR04 .IFDF CND$27 .GLOBL $IR,$ID R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 SP=%6 MQ=177304 NOR=177312 F0=%0 .IFDF FPU $ID: SETD BR IDI$27 $IR: SETF IDI$27: SETI LDCIF (SP)+,F0 STF F0,-(SP) JMP @(R4)+ .ENDC .IFNDF FPU $ID: MOV @SP,-(SP) MOV @SP,-(SP) CLR 2(SP) CLR 4(SP) $IR: CLR -(SP) MOV 2(SP),R1 BGT POS$27 BEQ ZER$27 NEG R1 POS$27: ROL -(SP) .IFNDF EAE MOV #220,R2 .ENDC .IFDF EAE MOV #217,R2 .ENDC CLRB 4(SP) NOM$27: .IFNDF EAE ROL R1 BCS NOD$27 DEC R2 BR NOM$27 .ENDC .IFDF EAE MOV #MQ,R3 CLR @R3 MOV R1,-(R3) MOV #NOR,R0 CLR @R0 SUB (R0)+,R2 MOV #2,@R0 MOV @R3,R1 .ENDC NOD$27: MOVB R1,5(SP) CLRB R1 BISB R2,R1 SWAB R1 ROR (SP)+ ROR R1 RORB 3(SP) MOV R1,@SP ZER$27: JMP @(R4)+ .ENDC .ENDC .TITLE $MLD05 .IFDF CND$28 .GLOBL $MLD,$ERRA R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 SP=%6 PC=%7 MQ=177304 A=8. B=16. RESLT=12. SIGN=2 F0=%0 .IFDF FPU $MLD: .WORD 170011 .WORD 172426 .WORD 171026 .WORD 174046 JMP @(R4)+ .ENDC .IFNDF FPU $MLD: MOV R4,-(SP) MOV R5,-(SP) ASL A+0-4(SP) ROL -(SP) CLR -(SP) MOVB A+1(SP),@SP BEQ ZER$28 MOVB A(SP),A+1(SP) SEC ROR A(SP) MOVB A+3(SP),A(SP) SWAB A+2(SP) MOVB A+5(SP),A+2(SP) SWAB A+4(SP) MOVB A+7(SP),A+4(SP) SWAB A+6(SP) CLRB A+6(SP) ASL B(SP) ADC SIGN(SP) TSTB B+1(SP) BNE NNZ$28 ZER$28: CMP (SP)+,(SP)+ ZE1$28: JMP ZE2$28 NNZ$28: CLR R0 CLR R1 .IFNDF EAE&MULDIV CLR R2 CLR R3 CLR R5 ROR B(SP) MOV #16.,-(SP) MOV B+6+2(SP),R4 BEQ B6Z$28 JSR PC,MT0$28 MOV #16.,@SP B6Z$28: MOV B+4+2(SP),R4 BNE B4N$28 TST B+6+2(SP) BEQ B4Z$28 B4N$28: JSR PC,MT2$28 JSR PC,MLT$28 MOV #16.,@SP B4Z$28: MOV B+2+2(SP),R4 BNE B2N$28 TST B+4+2(SP) BNE B2N$28 TST B+6+2(SP) BEQ B2Z$28 B2N$28: JSR PC,MLT$28 B2Z$28: MOV B+0+2(SP),R4 MOV #7,@SP JSR PC,MLT$28 JSR PC,MT1$28 TST (SP)+ ADD (SP)+,R4 .ENDC .IFDF EAE!MULDIV CLR R4 BISB B+1(SP),R4 ADD R4,@SP MOVB #1,B+1(SP) ROR B(SP) SWAB B(SP) MOVB B+3(SP),B(SP) SWAB B+2(SP) MOVB B+5(SP),B+2(SP) SWAB B+4(SP) MOVB B+7(SP),B+4(SP) SWAB B+6(SP) CLRB B+6(SP) .ENDC .IFDF EAE MOV #MQ,R4 MOV A(SP),-(SP) MOV B+6+2(SP),@R4 JSR R5,EMU$28 MOV (SP)+,R2 MOV (SP)+,R3 MOV A+2(SP),-(SP) MOV B+4+2(SP),@R4 JSR R5,EMU$28 ADD (SP)+,R2 ADC R1 ADD (SP)+,R3 ADC R2 ADC R1 MOV A+4(SP),-(SP) MOV B+2+2(SP),@R4 JSR R5,EMU$28 ADD (SP)+,R2 ADC R1 ADD (SP)+,R3 ADC R2 ADC R1 MOV A+6(SP),-(SP) MOV B+0+2(SP),@R4 JSR R5,EMU$28 ADD (SP)+,R2 ADC R1 ADD (SP)+,R3 ADC R2 ADC R1 MOV R2,R3 MOV R1,R2 CLR R1 MOV A(SP),-(SP) MOV B+4+2(SP),@R4 JSR R5,EMU$28 ADD (SP)+,R2 ADC R1 ADD (SP)+,R3 ADC R2 ADC R1 MOV A+2(SP),-(SP) MOV B+2+2(SP),@R4 JSR R5,EMU$28 ADD (SP)+,R2 ADC R1 ADD (SP)+,R3 ADC R2 ADC R1 MOV A+4(SP),-(SP) MOV B+0+2(SP),@R4 JSR R5,EMU$28 ADD (SP)+,R2 ADC R1 ADD (SP)+,R3 ADC R2 ADC R1 MOV A(SP),-(SP) MOV B+2+2(SP),@R4 JSR R5,EMU$28 ADD (SP)+,R1 ADC R0 ADD (SP)+,R2 ADC R1 ADC R0 MOV A+2(SP),-(SP) MOV B+0+2(SP),@R4 JSR R5,EMU$28 ADD (SP)+,R1 ADC R0 ADD (SP)+,R2 ADC R1 ADC R0 MOV A(SP),-(SP) MOV B+0+2(SP),@R4 JSR R5,EMU$28 ADD (SP)+,R0 ADD (SP)+,R1 ADC R0 MOV (SP)+,R4 .ENDC .IFDF MULDIV MOV A(SP),-(SP) MOV B+6+2(SP),R4 JSR PC,EMU$28 MOV R4,R2 MOV R5,R3 MOV A+2(SP),-(SP) MOV B+4+2(SP),R4 JSR PC,EMU$28 ADD R4,R2 ADC R1 ADD R5,R3 ADC R2 ADC R1 MOV A+4(SP),-(SP) MOV B+2+2(SP),R4 JSR PC,EMU$28 ADD R4,R2 ADC R1 ADD R5,R3 ADC R2 ADC R1 MOV A+6(SP),-(SP) MOV B+0+2(SP),R4 JSR PC,EMU$28 ADD R4,R2 ADC R1 ADD R5,R3 ADC R2 ADC R1 MOV R2,R3 MOV R1,R2 CLR R1 MOV A(SP),-(SP) MOV B+4+2(SP),R4 JSR PC,EMU$28 ADD R4,R2 ADC R1 ADD R5,R3 ADC R2 ADC R1 MOV A+2(SP),-(SP) MOV B+2+2(SP),R4 JSR PC,EMU$28 ADD R4,R2 ADC R1 ADD R5,R3 ADC R2 ADC R1 MOV A+4(SP),-(SP) MOV B+0+2(SP),R4 JSR PC,EMU$28 ADD R4,R2 ADC R1 ADD R5,R3 ADC R2 ADC R1 MOV A(SP),-(SP) MOV B+2+2(SP),R4 JSR PC,EMU$28 ADD R4,R1 ADC R0 ADD R5,R2 ADC R1 ADC R0 MOV A+2(SP),-(SP) MOV B+0+2(SP),R4 JSR PC,EMU$28 ADD R4,R1 ADC R0 ADD R5,R2 ADC R1 ADC R0 MOV A(SP),-(SP) MOV B+0+2(SP),R4 JSR PC,EMU$28 ADD R4,R0 ADD R5,R1 ADC R0 MOV (SP)+,R4 .ENDC ASL R3 ROL R2 ROL R1 ROL R0 BCS NOM$28 ASL R3 ROL R2 ROL R1 ROL R0 DEC R4 NOM$28: SUB #200,R4 BLE UND$28 CMP #377,R4 BLT OVR$28 CLRB R3 BISB R2,R3 SWAB R3 CLRB R2 BISB R1,R2 SWAB R2 CLRB R1 BISB R0,R1 SWAB R1 CLRB R0 BISB R4,R0 SWAB R0 ROR (SP)+ ROR R0 ROR R1 ROR R2 ROR R3 ADC R3 ADC R2 ADC R1 ADC R0 BCS OV1$28 BVS OV1$28 OUT$28: MOV R0,RESLT(SP) MOV R1,RESLT+2(SP) MOV R2,RESLT+4(SP) MOV R3,RESLT+6(SP) MOV (SP)+,R5 MOV (SP)+,R4 ADD #8.,SP JMP @(R4)+ OV1$28: TST -(SP) OVR$28: MOV #5003,R0 BR ECL$28 UND$28: MOV #3005,R0 ECL$28: TST (SP)+ JSR R5,$ERRA ZE2$28: CLR R0 CLR R1 CLR R2 CLR R3 BR OUT$28 .IFNDF EAE&MULDIV MLT$28: ASR R4 BCC X0$28 MT1$28: ADD A+6+4(SP),R3 ADC R2 ADC R1 ADC R0 ADC R5 ADD A+4+4(SP),R2 ADC R1 ADC R0 ADC R5 ADD A+2+4(SP),R1 ADC R0 ADC R5 ADD A+0+4(SP),R0 ADC R5 X0$28: ASR R5 ROR R0 ROR R1 ROR R2 ROR R3 DEC 2(SP) BGT MLT$28 RTS PC MT2$28: DEC 2(SP) MT0$28: ASR R4 BCC X00$28 ADD A+2+4(SP),R1 ADC R0 ADC R5 ADD A+0+4(SP),R0 ADC R5 X00$28: ASR R5 ROR R0 ROR R1 ROR R2 ROR R3 DEC 2(SP) BGT MT0$28 RTS PC .ENDC .IFDF EAE EMU$28: CLR @SP TST @R4 BEQ MZ$28 BGT MPL$28 TST 2(SP) BEQ MZ$28 BGT MNG$28 ADD (R4)+,@SP ADD 2(SP),@SP BR EML$28 MPL$28: TST 2(SP) BEQ MZ$28 BGT MLQ$28 ADD (R4)+,@SP BR EML$28 MNG$28: ADD 2(SP),@SP MLQ$28: TST (R4)+ EML$28: MOV 2(SP),@R4 MOV -(R4),2(SP) ADD -(R4),@SP TST (R4)+ JMP @R5 MZ$28: CLR 2(SP) JMP @R5 .ENDC .IFDF MULDIV EMU$28: CLR -(SP) TST R4 BEQ MZ$28 BGT MPL$28 TST 4(SP) BEQ MZ$28 BGT MN1$28 BR MNG$28 MPL$28: TST 4(SP) BEQ MZ$28 BGT MLQ$28 ADD R4,@SP BR MLQ$28 MNG$28: ADD R4,@SP MN1$28: ADD 4(SP),@SP MLQ$28: .WORD 070466,4 MDN$28: ADD (SP)+,R4 MOV (SP)+,@SP RTS PC MZ$28: CLR R4 CLR R5 BR MDN$28 .ENDC .ENDC .ENDC .TITLE $MLI05 .IFDF CND$29 .GLOBL $MLI,$ERR R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 SP=%6 SR$29=177311 MQ=177304 .IFNDF EAE&MULDIV $MLI: CLR R0 MOV (SP)+,R1 BGT P1$29 BEQ ZER$29 INC R0 NEG R1 P1$29: MOV @SP,R3 BGT P2$29 BEQ ZER$29 INC R0 NEG R3 P2$29: MOV R4,-(SP) MOV #8.,R4 CMP R1,R3 BGE CLR$29 MOV R1,R2 MOV R3,R1 MOV R2,R3 CLR$29: CLR R2 MUL$29: ROR R2 ROR R3 BCC CYC$29 ADD R1,R2 CYC$29: DEC R4 BGT MUL$29 MOV (SP)+,R4 TSTB R3 BNE OVR$29 BISB R2,R3 SWAB R3 CLRB R2 SWAB R2 ASR R2 BNE OVR$29 ROR R3 NEG R3 BPL OVR$29 ROR R0 BCS OUT$29 NEG R3 BVS OVR$29 OUT$29: MOV R3,@SP JMP @(R4)+ NGM$29: NEG R3 BVC OVR$29 ROR R0 BCS OUT$29 BR OVR$29 ZER$29: CLR @SP JMP @(R4)+ .ENDC .IFDF EAE $MLI: MOV #MQ,R0 MOV (SP)+,(R0)+ MOV (SP)+,@R0 MOV -(R0),-(SP) BITB #2,SR$29 BEQ OVR$29 JMP @(R4)+ .ENDC .IFDF MULDIV $MLI: MOV (SP)+,R0 .WORD 070026 MOV R1,-(SP) BCS OVR$29 JMP @(R4)+ .ENDC OVR$29: CLR (SP) JSR R5,$ERR JMP @(R4)+ .BYTE 3 .BYTE 14. .ENDC .TITLE $MLR05 .IFDF CND$30 .GLOBL $MLR,$ERRA R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 SP=%6 PC=%7 MQ=177304 SR=177311 LSH=177314 F0=%0 A=8. B=12. RESLT=8. SIGN=2 .IFDF FPU $MLR: .WORD 170001 .WORD 172426 .WORD 171026 .WORD 174046 JMP @(R4)+ .ENDC .IFNDF FPU $MLR: MOV R4,-(SP) MOV R5,-(SP) .IFNDF EAE&MULDIV MOV A+0-4(SP),R2 ASL R2 ROL -(SP) CLR -(SP) SWAB R2 MOVB R2,@SP BEQ ZE1$30 SEC ROR R2 CLRB R2 BISB A+3(SP),R2 CLR R3 BISB A+2(SP),R3 SWAB R3 ASL B(SP) ADC SIGN(SP) ADC SIGN(SP) TSTB B+1(SP) BEQ ZE1$30 ROR B(SP) CLR R0 CLR R1 MOV B+2(SP),R4 BEQ B2Z$30 B2N$30: MOV #15.,R5 JSR PC,MT0$30 JSR PC,MLT$30 B2Z$30: MOV B(SP),R4 MOV #7,R5 JSR PC,MLT$30 JSR PC,MT1$30 ADD (SP)+,R4 .ENDC .IFDF EAE MOV #MQ,R4 MOV #100000,R5 MOV B+2-4(SP),@R4 MOV B+0-4(SP),-(R4) BEQ ZER$30 INC @#LSH RORB @#SR ROL -(SP) MOV (R4)+,-(SP) CLRB @SP SWAB @SP MOV #7,@#LSH MOV @R4,-(SP) BIS R5,-(R4) MOV (R4)+,-(SP) MOV A+2+4(SP),@R4 MOV A+0+4(SP),-(R4) BEQ ZE2$30 INC @#LSH RORB @#SR ADC 6(SP) MOV @R4,R3 CLRB R3 SWAB R3 ADD R3,4(SP) MOV #7,@#LSH MOV (R4)+,R2 BIS R5,R2 CLR R0 CLR R1 MOV (R4)+,R3 BNE A2N$30 TST -(R4) BR A2Z$30 A2N$30: MOV @SP,@R4 CMP -(R4),-(R4) ADD R3,@R4 TST R3 BPL A2P$30 ADD @SP,@R4 A2P$30: MOV (R4)+,R1 A2Z$30: MOV 2(SP),(R4)+ BNE B2N$30 TST -(R4) BR B2Z$30 B2N$30: MOV R2,@R4 CMP -(R4),-(R4) ADD 2(SP),@R4 TST 2(SP) BPL B2P$30 ADD R2,@R4 B2P$30: ADD (R4)+,R1 ADC R0 B2Z$30: MOV R2,(R4)+ ADD R2,R0 MOV @SP,@R4 ADD (SP)+,R0 ADD -(R4),R1 ADC R0 ADD -(R4),R0 TST (SP)+ MOV (SP)+,R4 .ENDC .IFDF MULDIV MOV B+2-4(SP),R5 MOV B+0-4(SP),R4 BEQ ZER$30 .WORD 073427,1 ROL -(SP) MOV R4,-(SP) CLRB @SP SWAB @SP .WORD 073427,7 MOV R5,-(SP) BIS #100000,R4 MOV R4,-(SP) MOV A+2+4(SP),R3 MOV A+0+4(SP),R2 BEQ ZE2$30 .WORD 073227,1 ADC 6(SP) MOV R2,R0 CLRB R0 SWAB R0 ADD R0,4(SP) .WORD 073227,7 BIS #100000,R2 CLR R0 CLR R1 TST R3 BEQ A2Z$30 .WORD 070403 ADD R3,R4 TST R3 BPL A2P$30 ADD @SP,R4 A2P$30: MOV R4,R1 A2Z$30: MOV 2(SP),R4 BEQ B2Z$30 .WORD 070402 ADD 2(SP),R4 TST 2(SP) BPL B2P$30 ADD R2,R4 B2P$30: ADD R4,R1 ADC R0 B2Z$30: MOV R2,R4 ADD R2,R0 .WORD 070416 ADD (SP)+,R0 ADD R5,R1 ADC R0 ADD R4,R0 TST (SP)+ MOV (SP)+,R4 .ENDC ROL R1 ROL R0 BCS NOM$30 ROL R1 ROL R0 DEC R4 NOM$30: SUB #200,R4 BLE UND$30 CMP #377,R4 BLT OVR$30 CLRB R1 BISB R0,R1 SWAB R1 CLRB R0 BISB R4,R0 SWAB R0 ROR (SP)+ ROR R0 ROR R1 ADC R1 ADC R0 BCS OV1$30 BVS OV1$30 OUT$30: MOV R0,RESLT(SP) MOV R1,RESLT+2(SP) MOV (SP)+,R5 MOV (SP)+,R4 CMP (SP)+,(SP)+ JMP @(R4)+ .IFDF EAE!MULDIV ZE2$30: CMP (SP)+,(SP)+ .ENDC ZE1$30: CMP (SP)+,(SP)+ BR ZER$30 OVR$30: TST (SP)+ OV1$30: MOV #6003,R0 BR ECL$30 UND$30: MOV #3405,R0 TST (SP)+ ECL$30: JSR R5,$ERRA ZER$30: CLR R0 CLR R1 BR OUT$30 .IFNDF EAE&MULDIV MLT$30: ASR R4 BCC X0$30 MT1$30: ADD R3,R1 ADC R0 BCS COV$30 ADD R2,R0 X0$30: ROR R0 ROR R1 DEC R5 BGT MLT$30 RTS PC COV$30: ADD R2,R0 SEC BR X0$30 MT0$30: ASR R4 BCC X00$30 ADD R2,R0 X00$30: ROR R0 ROR R1 DEC R5 BGT MT0$30 RTS PC .ENDC .ENDC .ENDC .EOT .TITLE $NEG02 .IFDF CND$31 .GLOBL $NGI,$NGR,$NGD,$ERR R4=%4 R5=%5 SP=%6 $NGI: NEG @SP BVS OVR$31 JMP @(R4)+ $NGR: $NGD: TST @SP BEQ ZER$31 ADD #100000,@SP ZER$31: JMP @(R4)+ OVR$31: JSR R5,$ERR JMP @(R4)+ .BYTE 3 .BYTE 11. .ENDC .TITLE $PHR07 .IFDF CND$32 R0 = %0 R1 = %1 R2 = %2 R3 = %3 R4 = %4 R5 = %5 SP = %6 PC = %7 .GLOBL $PSHR5,$PSHR4,$PSHR3,$PSHR2,$PSHR1 $PSHR5: $PSHR4: MOV R3,-(SP) MOV R2,-(SP) $PSHR3: MOV R1,-(SP) $PSHR2: $PSHR1: MOV R0,-(SP) JMP @(R4)+ .ENDC .TITLE $PPR04 .IFDF CND$33 R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 SP=%6 PC=%7 .GLOBL $POPR5,$POPR4,$POPR3 $POPR5: $POPR4: MOV (SP)+,R0 MOV (SP)+,R1 MOV (SP)+,R2 MOV (SP)+,R3 JMP @(R4)+ $POPR3: MOV (SP)+,R0 MOV (SP)+,R1 JMP @(R4)+ .ENDC .TITLE $RD02 .IFDF CND$34 .GLOBL $RD R4=%4 SP=%6 F0=%0 F1=%1 .IFDF FPU $RD: .WORD 170011 .WORD 177426 .WORD 174046 JMP @(R4)+ .ENDC .IFNDF FPU $RD: MOV 2(SP),-(SP) MOV 2(SP),-(SP) CLR 4(SP) CLR 6(SP) JMP @(R4)+ .ENDC .ENDC .TITLE $RI04 .IFDF CND$35 .GLOBL $RI,$DI,$ERR R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 SP=%6 MQ=177304 LSH=177314 F0=%0 .IFDF FPU $DI: SETD BR RID$35 $RI: SETF RID$35: SETI LDD (SP)+,F0 STCDI F0,-(SP) JMP @(R4)+ .ENDC .IFNDF FPU $DI: MOV (SP)+,2(SP) MOV (SP)+,2(SP) $RI: CLR R2 INC R2 MOV (SP)+,R1 ROL @SP ROL R1 ROL -(SP) MOVB R1,R3 CLRB R1 SWAB R1 SUB #201,R1 BLT ZER$35 BEQ DNE$35 CMP #15.,R1 BLT OVR$35 SWAB R3 CLRB R3 BISB 3(SP),R3 SFT$35: .IFNDF EAE&MULDIV ROL R3 ROL R2 DEC$35: DEC R1 BGT SFT$35 .ENDC .IFDF EAE MOV #MQ,R0 MOV R3,@R0 MOV R2,-(R0) MOV R1,@#LSH MOV @R0,R2 .ENDC .IFDF MULDIV .WORD 073201 .ENDC DNE$35: NEG R2 BVS NGM$35 BGT OVR$35 SGN$35: ROR (SP)+ BCS OUT$35 NEG R2 OUT$35: MOV R2,@SP JMP @(R4)+ NGM$35: ROR (SP)+ BCS OUT$35 OVR$35: TST -(SP) JSR R5,$ERR BR ZER$35 .BYTE 3 .BYTE 22. ZER$35: CLR R2 BR SGN$35 .ENDC .ENDC .TITLE $SGL02 .IFDF CND$36 .GLOBL SNGL,$ERR R0=%0 R1=%1 R4=%4 R5=%5 SNGL: MOV 2(R5),R4 MOV (R4)+,R0 MOV (R4)+,R1 MOV @R4,R4 ROL R4 ADC R1 ADC R0 BCS OVR$36 BVS OVR$36 RTS R5 OVR$36: JSR R5,$ERR RTS R5 .BYTE 4 .BYTE 12. .ENDC .TITLE $SIN04 .IFDF CND$37 .GLOBL SIN,COS .IFNDF FPU .GLOBL $ADR,$MLR,$SBR,$DVR,$INTR,$POLSH .ENDC R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 SP=%6 PC=%7 F0=%0 F1=%1 F2=%2 F3=%3 .IFNDF FPU COS: MOV 2(R5),R4 CLR -(SP) MOV 2(R4),-(SP) MOV @R4,-(SP) MOV #007733,-(SP) MOV #040311,-(SP) JSR R4,$POLSH .WORD $ADR,SNC$37 SIN: MOV 2(R5),R4 CLR -(SP) MOV 2(R4),-(SP) MOV @R4,-(SP) SNC$37: ASL @SP ROR 4(SP) ROR @SP MOV #007733,-(SP) MOV #040711,-(SP) JSR R4,$POLSH .WORD $DVR .WORD DUP$37 .WORD $INTR .WORD $SBR .WORD X4$37 .WORD DUP$37 .WORD $INTR .WORD QUD$37 .WORD $SBR .WORD QST$37 QSE$37: .WORD DUP$37 .WORD DUP$37 .WORD $MLR .WORD PLY$37 .WORD $MLR .WORD $ADR .WORD $MLR .WORD $ADR .WORD $MLR .WORD $ADR .WORD $MLR .WORD $ADR .WORD $MLR .WORD RTN$37 RTN$37: MOV (SP)+,R0 MOV (SP)+,R1 TST (SP)+ BGE RT1$37 ADD #100000,R0 RT1$37: RTS R5 DUP$37: MOV 2(SP),-(SP) MOV 2(SP),-(SP) JMP @(R4)+ X4$37: TST @SP BEQ RTN$37 INCB 1(SP) JMP @(R4)+ QUD$37: BIS @SP,8.(SP) JMP @(R4)+ QST$37: TSTB 4(SP) BEQ Q13$37 ADD #100000,@SP CLR -(SP) MOV #40200,-(SP) JSR R4,$POLSH .WORD $ADR,QSR$37 QSR$37: MOV #QSE$37,R4 Q13$37: ASRB 5(SP) BCC QUT$37 ADD #100000,@SP QUT$37: JMP @(R4)+ PLY$37: MOV (SP)+,R0 MOV (SP)+,R1 MOV #CON$37+4,R2 MOV #5,R3 BR PY1$37 PY2$37: MOV R1,-(SP) MOV R0,-(SP) PY1$37: MOV -(R2),-(SP) MOV -(R2),-(SP) DEC R3 BGT PY2$37 JMP @(R4)+ .ENDC .IFDF FPU COS: SETD LDCFD @2(R5),F0 ADDD PI2$37,F0 BR SNC$37 SIN: SETD LDCFD @2(R5),F0 SNC$37: SETI MOV #FCO$37,R0 CLR R4 CFCC BGE POS$37 INC R4 ABSD F0 POS$37: DIVD (R0)+,F0 MODD #0.25,F0 SETF LDCDF F0,F0 CFCC BEQ RTN$37 MODF #4.0,F0 STCFI F1,R1 ROR R1 BCC Q13$37 NEGF F0 ADDF #1.0,F0 Q13$37: ROR R1 BCC Q12$37 NEGF F0 Q12$37: LDF F0,F2 MULF F2,F2 MOV #4,R1 LDF (R0)+,F1 XPD$37: MULF F2,F1 DEC R1 ADDF (R0)+,F1 BGT XPD$37 MULF F1,F0 TST R4 BEQ RTN$37 NEGF F0 RTN$37: STF F0,-(SP) MOV (SP)+,R0 MOV (SP)+,R1 RTS R5 FCO$37: PI2$37: .WORD 040311,007732 .WORD 121041,064302 .ENDC .WORD 035036,153672 .WORD 136231,023143 .WORD 037243,032130 .WORD 140045,056741 CON$37: .WORD 040311,007733 .ENDC .TITLE $TNH02 .IFDF CND$38 .GLOBL TANH,EXP,$ADR,$SBR,$MLR,$DVR,$FCALL .GLOBL $POLSH,$PSHR3 R0=%0 R1=%1 R4=%4 R5=%5 SP=%6 PC=%7 TANH: MOV R5,-(SP) MOV 2(R5),R5 MOV @R5,R0 BEQ ZER$38 ASL R0 CLRB R0 SWAB R0 CMP R0,#205 BLT STE$38 MOV #40200,R0 CLR R1 TST @R5 BGE OUT$38 ADD #100000,R0 BR OUT$38 STE$38: CMP R0,#177 BGT TAN$38 CMP R0,#164 BGE SML$38 MOV 2(R5),R1 MOV @R5,R0 BR OUT$38 TAN$38: MOV 2(R5),-(SP) MOV @R5,-(SP) ADD #200,@SP MOV SP,R5 MOV #EXP,R4 JSR PC,$FCALL MOV R1,-(SP) MOV R0,-(SP) CLR -(SP) MOV #40200,-(SP) MOV R1,-(SP) MOV R0,-(SP) CLR -(SP) MOV #40200,-(SP) JSR R4,$POLSH .WORD $SBR,UP$38,$ADR,$DVR,UPL$38 UPL$38: MOV (SP)+,R0 MOV (SP)+,R1 OUT$38: MOV (SP)+,R5 RTS R5 SML$38: MOV 2(R5),R1 MOV @R5,R0 JSR R4,$POLSH .WORD $PSHR3,$PSHR3,$PSHR3,$MLR,XSQ$38 XSQ$38: MOV 2(SP),-(SP) MOV 2(SP),-(SP) JSR R4,$POLSH .WORD P35$38,$ADR,ONE$38 .WORD $PSHR3,P45$38,$PSHR3,$DVR,$ADR,$ADR,$DVR .WORD $SBR,$MLR,UPL$38 ONE$38: MOV 4(SP),R0 MOV 6(SP),R1 CLR 6(SP) MOV #40200,4(SP) JMP @(R4)+ P45$38: MOV #136237,-(SP) MOV #41464,-(SP) P15$38: MOV #165707,-(SP) MOV #41722,-(SP) JMP @(R4)+ P35$38: MOV #116457,-(SP) MOV #41414,-(SP) JMP @(R4)+ ZER$38: CLR R0 CLR R1 BR OUT$38 UP$38: MOV (SP)+,10.(SP) MOV (SP)+,10.(SP) JMP @(R4)+ .ENDC .TITLE $ATN03 .IFDF CND$39 .GLOBL ATAN,ATAN2 .IFNDF FPU .GLOBL $ADR,$SBR,$MLR,$DVR,$POLSH,$POPR3 .ENDC R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 SP=%6 F0=%0 F1=%1 F2=%2 F3=%3 F4=%4 F5=%5 .IFNDF FPU ATAN2: CLR -(SP) CLR -(SP) CLR -(SP) CLR -(SP) CLR -(SP) MOV 2(R5),R4 MOV 2(R4),-(SP) MOV @R4,-(SP) MOV @SP,R0 MOV 4(R5),R4 MOV 2(R4),-(SP) MOV @R4,-(SP) MOV @SP,R1 BEQ INF$39 ASL R0 CLRB R0 SWAB R0 ASL R1 CLRB R1 SWAB R1 SUB R1,R0 CMP #26.,R0 BLT INF$39 DIV$39: JSR R4,$POLSH .WORD $DVR,UPL$39 UPL$39: TST @4(R5) BGE ATE$39 MOV #040511,8.(SP) MOV #007733,10.(SP) TST @2(R5) BGE ATE$39 ADD #100000,8.(SP) ATE$39: TST @SP BR AT1$39 INF$39: ADD #18.,SP MOV #040311,R0 MOV #007733,R1 TST @2(R5) BGE INR$39 ADD #100000,R0 INR$39: RTS R5 ATAN: CLR -(SP) CLR -(SP) CLR -(SP) CLR -(SP) CLR -(SP) MOV 2(R5),R4 MOV 2(R4),-(SP) MOV @R4,-(SP) AT1$39: BGE PLU$39 ADD #100000,@SP INC 12.(SP) PLU$39: CMP @SP,#40200 BLO LE1$39 BGT GT1$39 TST 2(SP) BEQ LE1$39 GT1$39: MOV #140311,4(SP) MOV #007733,6(SP) DEC 12.(SP) MOV 2(SP),-(SP) MOV 2(SP),-(SP) MOV #40200,4(SP) CLR 6(SP) JSR R4,$POLSH .WORD $DVR,LE1$39 LE1$39: MOV 2(SP),-(SP) MOV 2(SP),-(SP) CLR 4(SP) CLR 6(SP) CMP @SP,#037611 BLO L15$39 BHI TNS$39 CMP 2(SP),#030243 BLOS L15$39 TNS$39: MOV #040006,4(SP) MOV #005222,6(SP) MOV @SP,R0 MOV 2(SP),R1 MOV #131727,-(SP) MOV #140335,-(SP) MOV R1,-(SP) MOV R0,-(SP) CLR -(SP) MOV #40200,-(SP) MOV #131727,-(SP) MOV #040335,-(SP) MOV R1,-(SP) MOV R0,-(SP) JSR R4,$POLSH .WORD $MLR,$SBR,UP$39,$SBR,$DVR,L15$39 L15$39: MOV @SP,R0 MOV 2(SP),R1 MOV R1,-(SP) MOV R0,-(SP) MOV R1,-(SP) MOV R0,-(SP) JSR R4,$POLSH .WORD $MLR .WORD PLY$39 .WORD $MLR,$ADR,$MLR,$ADR,$MLR,$ADR .WORD $MLR,$ADR,$MLR,$ADR .WORD $ADR .WORD SGN$39 .WORD $ADR .WORD $POPR3,EXI$39 EXI$39: TST (SP)+ RTS R5 UP$39: MOV (SP)+,10.(SP) MOV (SP)+,10.(SP) JMP @(R4)+ PLY$39: MOV (SP)+,R0 MOV (SP)+,R1 MOV #CON$39+4,R2 MOV #5,R3 BR PY1$39 PY2$39: MOV R1,-(SP) MOV R0,-(SP) PY1$39: MOV -(R2),-(SP) MOV -(R2),-(SP) DEC R3 BGT PY2$39 JMP @(R4)+ SGN$39: TST 8.(SP) BEQ SG1$39 ADD #100000,@SP SG1$39: JMP @(R4)+ .ENDC .IFDF FPU ATAN2: SETF MOV 2(R5),R3 MOV 4(R5),R4 MOV @R3,R0 MOV @R4,R1 BEQ INF$39 ASL R0 CLRB R0 SWAB R0 ASL R1 CLRB R1 SWAB R1 SUB R1,R0 CMP #26.,R0 BLT INF$39 LDF PI$39,F3 LDF @R3,F0 CFCC BGE A1P$39 NEGF F3 A1P$39: LDF @R4,F1 CFCC BLT A2M$39 CLRF F3 A2M$39: DIVF F1,F0 BR AT1$39 INF$39: LDF PI2$39,F1 TST @R3 BGE EXI$39 NEGF F1 BR EXI$39 ATAN: SETF CLRF F3 LDF @2(R5),F0 AT1$39: CLR R4 CFCC STF F3,F5 CLRF F3 BGE PLU$39 ABSF F0 INC R4 PLU$39: LDF #1.0,F1 CMPF F0,F1 CFCC BLE LE1$39 GT1$39: DEC R4 DIVF F0,F1 LDF F1,F0 LDF PI2$39,F3 LE1$39: STF F3,F4 CLRF F3 CMPF T15$39,F0 CFCC BGE L15$39 LDF PI6$39,F3 LDF F0,F1 MULF RT3$39,F0 SUBF #1.0,F0 ADDF RT3$39,F1 DIVF F1,F0 L15$39: LDF F0,F2 MULF F0,F0 MOV #FCO$39,R0 MOV #4,R1 LDF (R0)+,F1 XPD$39: MULF F0,F1 DEC R1 ADDF (R0)+,F1 BGT XPD$39 MULF F2,F1 ADDF F3,F1 SUBF F4,F1 TST R4 BEQ SG1$39 NEGF F1 SG1$39: ADDF F5,F1 EXI$39: STF F1,-(SP) MOV (SP)+,R0 MOV (SP)+,R1 RTS R5 PI$39: .WORD 040511,007733 PI2$39: .WORD 040311,007733 T15$39: .WORD 037611,030243 PI6$39: .WORD 040006,005222 RT3$39: .WORD 040335,131727 .ENDC FCO$39: .WORD 037305,035302 .WORD 137421,056514 .WORD 037514,143333 .WORD 137652,125244 CON$39: .WORD 040200,000000 .ENDC .TITLE $POL07 .GLOBL $POLSH R4=%4 SP=%6 .GLOBL $V20A $V20A: $POLSH: TST (SP)+ JMP @(R4)+ .IFDF EAE .GLOBL $EAE $EAE: .ENDC .IFDF EIS!MULDIV .GLOBL $EIS $EIS: .ENDC .IFDF FPU .GLOBL $FPU $FPU: .ENDC .IFDF FIS .GLOBL $FIS $FIS: .ENDC .IFDF RSX .GLOBL $RSX $RSX: .ENDC .TITLE $SQT03 .IFDF CND$41 .GLOBL SQRT,$ERR .IFNDF FPU .GLOBL $ADR,$DVR,$POLSH .ENDC R0=%0 R1=%1 R4=%4 R5=%5 SP=%6 F0=%0 F1=%1 F2=%2 .IFDF FPU SQRT: MOV @2(R5),R1 .ENDC .IFNDF FPU SQRT: MOV R5,-(SP) MOV 2(R5),R5 MOV @R5,R1 .ENDC BMI ERR$41 BEQ ZER$41 .IFNDF FPU MOV #3,-(SP) .ENDC ASR R1 ADD #20100,R1 CLR -(SP) MOV R1,-(SP) .IFNDF FPU CLR -(SP) MOV @R5,-(SP) CLR -(SP) MOV R1,-(SP) LUP$41: JSR R4,$POLSH .WORD $DVR,$ADR,UPL$41 UPL$41: SUB #200,@SP DEC 4(SP) BEQ OUT$41 MOV 2(R5),-(SP) MOV @R5,-(SP) MOV 6(SP),-(SP) MOV 6(SP),-(SP) BR LUP$41 OUT$41: MOV (SP)+,R0 MOV (SP)+,R1 TST (SP)+ RTN$41: MOV (SP)+,R5 RTS R5 ERR$41: JSR R5,$ERR BR RTN$41 .BYTE 4 .BYTE 11. ZER$41: CLR R0 CLR R1 BR RTN$41 .ENDC .IFDF FPU MOV #3,R0 SETF LDF (SP)+,F0 LDF @2(R5),F2 LUP$41: LDF F0,F1 LDF F2,F0 DIVF F1,F0 ADDF F1,F0 DEC R0 DIVF #2.0,F0 BGT LUP$41 STF F0,-(SP) MOV (SP)+,R0 MOV (SP)+,R1 RTS R5 ERR$41: JSR R5,$ERR RTS R5 .BYTE 4 .BYTE 11. ZER$41: CLR R0 CLR R1 RTS R5 .ENDC .ENDC .TITLE $ERR01 .GLOBL $ERR,$ERRA,$ERVEC R0 = %0 R5 = %5 SP = %6 PC = %7 $ERR: MOV R0,-(SP) MOV 2(R5),R0 BR ERB$43 $ERRA: MOV R0,-(SP) ERB$43: .IFNDF CLASS5 CMPB R0,#5 BEQ IGN$43 .ENDC JSR PC,@$ERVEC IGN$43: MOV (SP)+,R0 RTS R5 $ERVEC: .WORD HLT$43 HLT$43: HALT BR HLT$43 .TITLE $LDR01 .IFDF CND$44&CND$42 R4=%4 SP=%6 $LDR: MOV (SP)+,2(SP) MOV (SP)+,2(SP) JMP @(R4)+ .ENDC .TITLE $LDD01 .IFDF CND$45&CND$42 R0=%0 R4=%4 SP=%6 $LDD: MOV SP,R0 ADD #8.,R0 MOV (SP)+,(R0)+ MOV (SP)+,(R0)+ MOV (SP)+,(R0)+ MOV (SP)+,(R0)+ JMP @(R4)+ .ENDC .TITLE $STR01 .IFDF CND$46&CND$42 R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 SP=%6 PC=%7 $STR: MOV #FAC$42,R5 TST 30(SP) BEQ STK$46 CLR 30(SP) MOV SP,R0 MOV SP,R1 CMP (R1)+,(R1)+ MOV #13,R2 LP$46: MOV (R1)+,(R0)+ DEC R2 BNE LP$46 MOV (R5)+,(R0)+ MOV (R5)+,(R0)+ JMP @(R4)+ STK$46: MOV (R5)+,(R0)+ MOV (R5)+,(R0)+ CMP (SP)+,(SP)+ JMP @(R4)+ .ENDC .TITLE $STD01 .IFDF CND$47&CND$42 R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 SP=%6 PC=%7 $STD: MOV #FAC$42,R5 TST 34(SP) BEQ STK$47 CLR 34(SP) MOV SP,R0 MOV SP,R1 ADD #10,R1 MOV #13,R2 LP$47: MOV (R1)+,(R0)+ DEC R2 BNE LP$47 MOV (R5)+,(R0)+ MOV (R5)+,(R0)+ MOV (R5)+,(R0)+ MOV (R5)+,(R0)+ JMP @(R4)+ STK$47: MOV (R5)+,(R0)+ MOV (R5)+,(R0)+ MOV (R5)+,(R0)+ MOV (R5)+,(R0)+ ADD #10,SP JMP @(R4)+ .ENDC .TITLE FPMP11 FLOATING POINT & MATH PACKAGE .END