.TITLE RX4BUT .GLOBL ABC ABE S924 S707 S383 OFFSET .IRPC X, 012345 R'X=%'X AC'X=%'X .ENDM SP=%6 PC=%7 ; ABC: MOV @(R5)+,COUNT ;SET UP COUNTER (+ EXP) MOV (R5)+,R0 ;R0=KK MOV R0,R1 ; LDF (R0),AC0 ADD R4,R1 ;K1 (OVERLAP) MOV R1,R2 ; LDF AC0,AC1 ;AC0,AC1=A(KK) ADD R4,R2 ;K2 (OVERLAP) ; ADDF (R2),AC0 ;AC0=AKP=A(KK)+A(K2) MOV R2,R3 ;OVERLAP SUBF (R2)+,AC1 ;AC1=AKM=A(KK)-A(K2) ADD R4,R3 ;K3 (OVERLAP) ; LDF (R1)+,AC2 LDF AC2,AC3 ;AC2,AC3=A(K1) ; ADDF (R3),AC2 ;AC2=AJP=A(K1)+A(K3) STF AC2,AC5 ;AC5=AJP SUBF (R3)+,AC3 ;AC3=AJM=A(K1)-A(K3) ; ADDF AC0,AC2 ;AC2=AKP+AJP STF AC2,(R0)+ ;A(KK)=AKP+AJP ; SUBF AC5,AC0 ;AC0=AJP=AKP-AJP STF AC0,AC7 ;AC7=AJP ; LDF (R0),AC0 LDF AC0,AC2 ;AC0,AC2=B(KK) SUBF (R2),AC0 ;AC0=BKM=B(KK)-B(K2) STF AC0,AC5 ;AC5=BKM ; ADDF (R2),AC2 ;AC2=BKP=B(KK)+B(K2) ; LDF (R1),AC0 ;AC0=B(K1) SUBF (R3),AC0 ;AC0=BJM=B(K1)-B(K3) STF AC0,AC4 ;AC4=BJM ; LDF (R1),AC0 ;AC0=B(K1) ADDF (R3),AC0 ;AC0=BJP=B(K1)+B(K3) STF AC0,AC6 ;AC6=BJP ; ADDF AC2,AC0 ;AC0=BJP=BJP+BKP STF AC0,(R0) ;B(KK)=BJP ; SUBF AC6,AC2 ;AC2=BJP=BKP-BJP STF AC2,AC6 ;AC6=BJP ; LDF AC5,AC0 ;AC0=BKM SUBF AC3,AC0 ;AC0=BKM=BKM-AJM STF AC0,AC2 ;AC2=BKM ; ADDF AC5,AC3 ;AC3=BKP=BKM+AJM ; LDF AC1,AC0 ;AC0=AKM ADDF AC4,AC0 ;AC0=AKM=AKM+BJM ; SUBF AC4,AC1 ;AC1=AKP=AKM-BJM ; STF AC2,AC5 ;AC5=BKM STF AC1,AC4 ;AC4=AKP ; LDF AC0,AC1 ;AKM MULF @(R5)+,AC0 ;AC0=AKM*(SIN3-COS3) MOV R5,-(SP) ;SAVE TABLE POINTER ON STACK MOV -2(R5),R5 ;MOVE TRIG TBLE POINTER INTO R5 ADD #4,R5 ;SKIP OVER ENTRY ALREADY DONE MULF (R5)+,AC2 ;AC2=BKM*(SIN3+COS3) ADDF AC5,AC1 ;AC1=AKM+BKM MULF (R5)+,AC1 ;AC1=(AKM+BKM)*COS3 ; ADDF AC1,AC0 ;AKM*SIN3+BKM*COS3 SUBF AC2,AC1 ;AKM*COS3-BKM*SIN3 ; STF AC0,(R3) ;B(K3) STF AC1,-(R3) ;A(K3) ; ; LDF AC3,AC2 ;BKP LDF AC4,AC1 ;AKP MULF (R5)+,AC1 ;AC1=AKP*(SIN1-COS1) MULF (R5)+,AC3 ;AC3=BKP*(COS1+SIN1) ADDF AC4,AC2 ;AC2=AKP+BKP MULF (R5)+,AC2 ;AC2=(AKP+BKP)*C0S1 ; ADDF AC2,AC1 ;AC1=AKP*SIN1+BKP*COS1 SUBF AC3,AC2 ;AC2=AKP*COS1-BKP*SIN1 ; STF AC1,(R1) ;B(K1) STF AC2,-(R1) ;A(K1) ; ; LDF AC7,AC1 ;AJP LDF AC6,AC3 ;BJP LDF AC3,AC0 ;BJP ADDF AC1,AC0 ;AJP+BJP ; MULF (R5)+,AC1 ;AC1=AJP*(SIN2-COS2) MULF (R5)+,AC3 ;AC3=BJP*(COS2+SIN2) MULF (R5)+,AC0 ;AC0=COS2*(AJP+BJP) MOV (SP)+,R5 ;GET TABLE POINTER BACK INTO R5 ; ADDF AC0,AC1 ;AC1=BJP*COS2+AJP*SIN2 SUBF AC3,AC0 ;AC0=AJP*COS2-BJP*SIN2 ; STF AC1,(R2) ;B(K2) STF AC0,-(R2) ;A(K2) ; DEC COUNT BNE ABC+4 ; JMP @(R5)+ ; ABE: MOV @(R5)+,COUNT ;SET UP COUNTER MOV (R5)+,R0 ;R0=KK MOV R0,R1 ; LDF (R0),AC0 ADD R4,R1 ;K1 (OVERLAP) MOV R1,R2 ; LDF AC0,AC1 ;AC0,AC1=A(KK) ADD R4,R2 ;K2 (OVERLAP) ; ADDF (R2),AC0 ;AC0=AKP=A(KK)+A(K2) MOV R2,R3 SUBF (R2),AC1 ;AC1=AKM=A(KK)-A(K2) ADD R4,R3 ;K3 (OVERLAP) ; LDF (R1)+,AC2 LDF AC2,AC3 ;AC2,AC3=A(K1) ; ADDF (R3),AC2 ;AC2=AJP=A(K1)+A(K3) STF AC2,AC5 ;AC5=AJP SUBF (R3)+,AC3 ;AC3=AJM=A(K1)-A(K3) ; ADDF AC0,AC2 ;AC2=AKP+AJP STF AC2,(R0)+ ;A(KK)=AKP+AJP ; SUBF AC5,AC0 ;AC0=AJP=AKP-AJP STF AC0,(R2)+ ;A(K2)=AJP ; LDF (R0),AC0 LDF AC0,AC2 ;AC0,AC2=B(KK) SUBF (R2),AC0 ;AC0=BKM=B(KK)-B(K2) STF AC0,AC5 ;AC5=BKM ; ADDF (R2),AC2 ;AC2=BKP=B(KK)+B(K2) ; LDF (R1),AC0 ;AC0=B(K1) SUBF (R3),AC0 ;AC0=BJM=B(K1)-B(K3) STF AC0,AC4 ;AC4=BJM ; LDF (R1),AC0 ;AC0=B(K1) ADDF (R3),AC0 ;AC0=BJP=B(K1)+B(K3) STF AC0,AC6 ;AC6=BJP ; ADDF AC2,AC0 ;AC0=BJP=BJP+BKP STF AC0,(R0) ;B(KK)=BJP ; SUBF AC6,AC2 ;AC2=BJP=BKP-BJP STF AC2,(R2) ;B(K2)=BJP ; LDF AC5,AC0 ;AC0=BKM SUBF AC3,AC0 ;AC0=BKM=BKM-AJM STF AC0,(R3) ;B(K3)=BKM ; ADDF AC5,AC3 ;AC3=BKP=BKM+AJM STF AC3,(R1) ;B(K1)=BKP ; LDF AC1,AC0 ;AC0=AKM ADDF AC4,AC0 ;AC0=AKM=AKM+BJM STF AC0,-(R3) ;A(K3)=AKM ; SUBF AC4,AC1 ;AC1=AKP=AKM-BJM STF AC1,-(R1) ;A(K1)=AKP ; DEC COUNT BNE ABE+4 ; JMP @(R5)+ ; S707: MOV @(R5)+,COUNT ;SET UP COUNTER (EXP=+) MOV (R5)+,R0 ;R0=KK MOV R0,R1 ; LDF (R0),AC0 ADD R4,R1 ;K1 (OVERLAP) MOV R1,R2 ; LDF AC0,AC1 ;AC0,AC1=A(KK) ADD R4,R2 ;K2 (OVERLAP) ; ADDF (R2),AC0 ;AC0=AKP=A(KK)+A(K2) MOV R2,R3 SUBF (R2)+,AC1 ;AC1=AKM=A(KK)-A(K2) ADD R4,R3 ;K3 (OVERLAP) ; LDF (R1)+,AC2 LDF AC2,AC3 ;AC2,AC3=A(K1) ; ADDF (R3),AC2 ;AC2=AJP=A(K1)+A(K3) STF AC2,AC5 ;AC5=AJP SUBF (R3)+,AC3 ;AC3=AJM=A(K1)-A(K3) ; ADDF AC0,AC2 ;AC2=AKP+AJP STF AC2,(R0)+ ;A(KK)=AKP+AJP ; SUBF AC5,AC0 ;AC0=AJP=AKP-AJP STF AC0,AC7 ;AC7=AJP ; LDF (R0),AC0 LDF AC0,AC2 ;AC0,AC2=B(KK) SUBF (R2),AC0 ;AC0=BKM=B(KK)-B(K2) STF AC0,AC5 ;AC5=BKM ; ADDF (R2),AC2 ;AC2=BKP=B(KK)+B(K2) ; LDF (R1),AC0 ;AC0=B(K1) SUBF (R3),AC0 ;AC0=BJM=B(K1)-B(K3) STF AC0,AC4 ;AC4=BJM ; LDF (R1),AC0 ;AC0=B(K1) ADDF (R3),AC0 ;AC0=BJP=B(K1)+B(K3) STF AC0,AC6 ;AC6=BJP ; ADDF AC2,AC0 ;AC0=BJP=BJP+BKP STF AC0,(R0) ;B(KK)=BJP ; SUBF AC6,AC2 ;AC2=BJP=BKP-BJP STF AC2,AC6 ;AC6=BJP ; LDF AC5,AC0 ;AC0=BKM SUBF AC3,AC0 ;AC0=BKM=BKM-AJM STF AC0,AC2 ;AC2=BKM ; ADDF AC5,AC3 ;AC3=BKP=BKM+AJM ; LDF AC1,AC0 ;AC0=AKM ADDF AC4,AC0 ;AC0=AKM=AKM+BJM ; SUBF AC4,AC1 ;AC1=AKP=AKM-BJM ; SUBF AC0,AC2 ;BKM-AKM MULF MP7,AC2 ;-.707*(BKM-AKM)=.707(AKM-BKM) STF AC2,(R3) ;B(K3) ; MULF MP72,AC0 ;AKM*-1.414 ADDF AC0,AC2 ;-.707*(AKM+BKM) STF AC2,-(R3) ;A(K3) ; ADDF AC3,AC1 ;AKP+BKP MULF P7,AC1 ;.707*(AKP+BKP) STF AC1,(R1) ;B(K1) ; MULF P72,AC3 ;BKP*1.141 SUBF AC3,AC1 ;(AKP-BKP)*.707 STF AC1,-(R1) ;A(K1) ; LDF AC7,AC1 ;AJP STF AC1,(R2) ;B(K2) ; LDF AC6,AC1 ;BJP NEGF AC1 ;-BJP STF AC1,-(R2) ;A(K2) ; DEC COUNT BNE S707+4 ; JMP @(R5)+ MP7: .FLT2 -.7071067812 P7: .FLT2 .7071067812 MP72: .FLT2 -1.4142135624 P72: .FLT2 1.4142135624 ; S383: MOV @(R5)+,COUNT ;SET UP COUNTER (+ EXP) MOV (R5)+,R0 ;R0=KK MOV R0,R1 ; LDF (R0),AC0 ADD R4,R1 ;K1 (OVERLAP) MOV R1,R2 ; LDF AC0,AC1 ;AC0,AC1=A(KK) ADD R4,R2 ;K2(OVERLAP) ; ADDF (R2),AC0 ;AC0=AKP=A(KK)+A(K2) MOV R2,R3 ;OVERLAP SUBF (R2)+,AC1 ;AC1=AKM=A(KK)-A(K2) ADD R4,R3 ;K3 (OVERLAP) ; LDF (R1)+,AC2 LDF AC2,AC3 ;AC2,AC3=A(K1) ; ADDF (R3),AC2 ;AC2=AJP=A(K1)+A(K3) STF AC2,AC5 ;AC5=AJP SUBF (R3)+,AC3 ;AC3=AJM=A(K1)-A(K3) ; ADDF AC0,AC2 ;AC2=AKP+AJP STF AC2,(R0)+ ;A(KK)=AKP+AJP ; SUBF AC5,AC0 ;AC0=AJP=AKP-AJP STF AC0,AC7 ;AC7=AJP ; LDF (R0),AC0 LDF AC0,AC2 ;AC0,AC2=B(KK) SUBF (R2),AC0 ;AC0=BKM=B(KK)-B(K2) STF AC0,AC5 ;AC5=BKM ; ADDF (R2),AC2 ;AC2=BKP=B(KK)+B(K2) ; LDF (R1),AC0 ;AC0=B(K1) SUBF (R3),AC0 ;AC0=BJM=B(K1)-B(K3) STF AC0,AC4 ;AC4=BJM ; LDF (R1),AC0 ;AC0=B(K1) ADDF (R3),AC0 ;AC0=BJP=B(K1)+B(K3) STF AC0,AC6 ;AC6=BJP ; ADDF AC2,AC0 ;AC0=BJP=BJP+BKP STF AC0,(R0) ;B(KK)=BJP ; SUBF AC6,AC2 ;AC2=BJP=BKP-BJP STF AC2,AC6 ;AC6=BJP ; LDF AC5,AC0 ;AC0=BKM SUBF AC3,AC0 ;AC0=BKM=BKM-AJM STF AC0,AC2 ;AC2=BKM ; ADDF AC5,AC3 ;AC3=BKP=BKM+AJM ; LDF AC1,AC0 ;AC0=AKM ADDF AC4,AC0 ;AC0=AKM=AKM+BJM ; SUBF AC4,AC1 ;AC1=AKP=AKM-BJM ; STF AC2,AC5 ;AC5=BKM STF AC1,AC4 ;AC4=AKP ; LDF AC0,AC1 ;AKM MULF K9M3,AC0 ;AC0=AKM*(SIN3-COS3) MULF K9P3,AC2 ;AC2=BKM*(COS3+SIN3) ADDF AC5,AC1 ;AKM+BKM MULF COS3,AC1 ;AC1=(AKM+BKM)*COS3 ; ADDF AC1,AC0 ;AC0=AKM*SIN3+BKM*COS3 SUBF AC2,AC1 ;AC1=AKM*COS3-BKM*SIN3 ; STF AC0,(R3) ;B(K3) STF AC1,-(R3) ;A(K3) ; ; LDF AC3,AC2 ;BKP LDF AC4,AC1 ;AKP MULF K3M9,AC1 ;AC1=AKP*(SIN1-COS1) MULF K3P9,AC3 ;AC3=BKP*(COS1+SIN1) ADDF AC4,AC2 ;AKP+BKP MULF COS1,AC2 ;AC2=(AKP+BKP)*COS1 ; ADDF AC2,AC1 ;AC1=AKP*SIN1+BKP*COS1 SUBF AC3,AC2 ;AC2=AKP*COS1-BKP*SIN1 ; STF AC1,(R1) ;B(K1) STF AC2,-(R1) ;A(K1) ; ; LDF AC7,AC3 ;AJP SUBF AC6,AC3 ;AJP-BJP MULF P7,AC3 ;(AJP-BJP)*.707 STF AC3,(R2) ;B(K2) ; LDF AC7,AC1 ;AJP MULF MP72,AC1 ;AJP*-1.41 ADDF AC1,AC3 ;(AJP+BJP)*-.707 STF AC3,-(R2) ;A(K2) ; DEC COUNT BNE S383+4 ; JMP @(R5)+ K9M3: .FLT2 .541196100 K9P3: .FLT2 -1.306562965 K3M9: .FLT2 .541196100 K3P9: .FLT2 1.306562965 COS1: .FLT2 .382683432 COS3: .FLT2 -.923879533 ; S924: MOV @(R5)+,COUNT ;SET UP COUNTER (+ EXP) MOV (R5)+,R0 ;R0=KK MOV R0,R1 ; LDF (R0),AC0 ADD R4,R1 ;K1 (OVERLAP) MOV R1,R2 ; LDF AC0,AC1 ;AC0,AC1=A(KK) ADD R4,R2 ;K2 (OVERLAP) ; ADDF (R2),AC0 ;AC0=AKP=A(KK)+A(K2) MOV R2,R3 ;OVERLAP SUBF (R2)+,AC1 ;AC1=AKM=A(KK)-A(K2) ADD R4,R3 ;K3 (OVERLAP) ; LDF (R1)+,AC2 LDF AC2,AC3 ;AC2,AC3=A(K1) ; ADDF (R3),AC2 ;AC2=AJP=A(K1)+A(K3) STF AC2,AC5 ;AC5=AJP SUBF (R3)+,AC3 ;AC3=AJM=A(K1)-A(K3) ; ADDF AC0,AC2 ;AC2=AKP+AJP STF AC2,(R0)+ ;A(KK)=AKP+AJP ; SUBF AC5,AC0 ;AC0=AJP=AKP-AJP STF AC0,AC7 ;AC7=AJP ; LDF (R0),AC0 LDF AC0,AC2 ;AC0,AC2=B(KK) SUBF (R2),AC0 ;AC0=BKM=B(KK)-B(K2) STF AC0,AC5 ;AC5=BKM ; ADDF (R2),AC2 ;AC2=BKP=B(KK)+B(K2) ; LDF (R1),AC0 ;AC0=B(K1) SUBF (R3),AC0 ;AC0=BJM=B(K1)-B(K3) STF AC0,AC4 ;AC4=BJM ; LDF (R1),AC0 ;AC0=B(K1) ADDF (R3),AC0 ;AC0=BJP=B(K1)+B(K3) STF AC0,AC6 ;AC6=BJP ; ADDF AC2,AC0 ;AC0=BJP=BJP+BKP STF AC0,(R0) ;B(KK)=BJP ; SUBF AC6,AC2 ;AC2=BJP=BKP-BJP STF AC2,AC6 ;AC6=BJP ; LDF AC5,AC0 ;AC0=BKM SUBF AC3,AC0 ;AC0=BKM=BKM-AJM STF AC0,AC2 ;AC2=BKM ; ADDF AC5,AC3 ;AC3=BKP=BKM+AJM ; LDF AC1,AC0 ;AC0=AKM ADDF AC4,AC0 ;AC0=AKM=AKM+BJM ; SUBF AC4,AC1 ;AC1=AKP=AKM-BJM ; STF AC2,AC5 ;AC5=BKM STF AC1,AC4 ;AC4=AKP ; LDF AC0,AC1 ;AKM MULF J9M3,AC0 ;AC0=AKM*(SIN3-COS3) MULF J9P3,AC2 ;AC2=BKM*(COS3+SIN3) ADDF AC5,AC1 ;AKM+BKM MULF JCOS3,AC1 ;AC1=(AKM+BKM)*COS3 ; ADDF AC1,AC0 ;AC0=AKM*SIN3+BKM*COS3 SUBF AC2,AC1 ;AC1=AKM*COS3-BKM*SIN3 ; STF AC0,(R3) ;B(K3) STF AC1,-(R3) ;A(K3) ; ; LDF AC3,AC2 ;BKP LDF AC4,AC1 ;AKP MULF J3M9,AC1 ;AC1=AKP*(SIN1-COS1) MULF J3P9,AC3 ;AC3=BKP*(COS1+SIN1) ADDF AC4,AC2 ;AKP+BKP MULF JCOS1,AC2 ;AC2=(AKP+BKP)*COS1 ; ADDF AC2,AC1 ;AC1=AKP*SIN1+BKP*COS1 SUBF AC3,AC2 ;AC2=AKP*COS1-BKP*SIN1 ; STF AC1,(R1) ;B(K1) STF AC2,-(R1) ;A(K1) ; ; LDF AC7,AC1 ;AJP ADDF AC6,AC1 ;AJP+BJP MULF P7,AC1 ;(AJP+BJP)*.707 STF AC1,(R2) ;B(K2) ; LDF AC6,AC3 ;BJP MULF MP72,AC3 ;BJP*-1.41 ADDF AC3,AC1 ;(AJP-BJP)*.707 STF AC1,-(R2) ;A(K2) ; DEC COUNT BNE S924+4 ; JMP @(R5)+ J9M3: .FLT2 .541196100 J9P3: .FLT2 1.306562965 J3M9: .FLT2 -.541196100 J3P9: .FLT2 1.306562965 JCOS3: .FLT2 .382683432 JCOS1: .FLT2 .923879533 M72: .FLT2 1.414213563 ; AC6: .FLT2 0.0 AC7: .FLT2 0.0 COUNT: 0 OFFSET: ASR R4 ASR R4 JMP @(R5)+ .END