.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) 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 �U� & 5