.TITLE VCOMD LINEAR COMBINATION OF TWO VECTORS (DOUBLE PRECISION) .IDENT /1.0/ ; 08/15/79 .GLOBL VCOMD, V3COMD .ENABL LSB ; F0=R0 ;DEFINE FLOATING REGISTER 0 F1=R1 ;DEFINE FLOATING REGISTER 1 F2=R2 F3=R3 V3COMD: CMP #5,(R5)+ ;CHECK NUMBER OF ARGUMENTS BNE BOMB3D ;BOMB IF # OF ARGS. IS INCORRECT MOVB #3,R2 ;R2=VECTOR SIZE=3 BR 10$ VCOMD: CMP #6,(R5)+ ;ARE THERE 6 ARGUMENTS? BNE BOMBD ;BOMB IF # OF ARGS. IS INCORRECT MOVB @12(R5),R2 ;R2=VECTOR SIZE=N 10$: MOV (R5)+,R3 ;R3=ADDRESS OF C MOV (R5)+,R0 ;R0=ADDRESS OF P MOV (R5)+,R4 ;R4=ADDRESS OF A MOV (R5)+,R1 ;R1=ADDRESS OF Q MOV (R5),R5 ;R5=ADDRESS OF B SETD ;SET FLOATING DOUBLE MODE LDD (R0),F2 ;F2=P LDD (R1),F3 ;F3=Q ; LOOP TO ADD VECTORS 20$: LDD (R4)+,F0 ;GET A(I) MULD F2,F0 ;P*A(I) LDD (R5)+,F1 ;GET B(I) MULD F3,F1 ;Q*B(I) ADDD F0,F1 ;P*A(I) + Q*B(I) STD F1,(R3)+ ;PUT SUM IN C(I) SOB R2,20$ ;DONE? RTS PC ;RETURN BOMB3D: MOV #57714,-(SP) ;MOVE 2ND HALF OF NAME TO STACK MOV #107253,R4 ;MOVE 1ST HALF OF NAME TO R4 BR 30$ BOMBD: MOV #50740,-(SP) ;MOVE 2ND HALF OF NAME TO STACK MOV #105007,R4 ;MOVE 1ST HALF OF NAME TO R4 30$: JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST .END