.TITLE VADDD SUM OF TWO VECTORS (DOUBLE PRECISION) .IDENT /1.0/ ; 08/15/79 .GLOBL VADDD, V3ADDD .ENABL LSB ; F0=R0 ;DEFINE FLOATING REGISTER 0 F1=R1 ;DEFINE FLOATING REGISTER 1 V3ADDD: CMP #3,(R5)+ ;CHECK NUMBER OF ARGUMENTS BNE BOMB3 ;BOMB IF # OF ARGS. NE 3 MOVB #3,R1 ;R1=VECTOR SIZE=3 BR 10$ VADDD: CMP #4,(R5)+ ;ARE THERE 4 ARGUMENTS? BNE BOMB ;BOMB IF # OF ARGS. NE 4 MOVB @6(R5),R1 ;R1=VECTOR SIZE 10$: MOV (R5)+,R2 ;R2=ADDRESS OF C MOV (R5)+,R3 ;R3=ADDRESS OF A MOV (R5),R4 ;R4=ADDRESS OF B SETD ;SET FLOATING DOUBLE MODE ; LOOP TO ADD VECTORS 20$: LDD (R3)+,F1 ;GET A(I) ADDD (R4)+,F1 ;A(I) + B(I) STD F1,(R2)+ ;PUT SUM IN C(I) SOB R1,20$ ;DONE? RTS PC ;RETURN BOMB3: MOV #14644,-(SP) ;MOVE 2ND HALF OF NAME TO STACK MOV #107251,R4 ;MOVE 1ST HALF OF NAME TO R4 BR 30$ BOMB: MOV #14640,-(SP) ;MOVE 2ND HALF OF NAME TO STACK MOV #104654,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