.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