.TITLE VSUBD SUBTRACTION OF TWO VECTORS (DOUBLE PRECISION) .IDENT /1.0/ ; 08/15/79 .GLOBL VSUBD, V3SUBD .ENABL LSB ; F0=R0 ;DEFINE FLOATING REGISTER 0 F1=R1 ;DEFINE FLOATING REGISTER 1 V3SUBD: CMP #3,(R5)+ ;CHECK NUMBER OF ARGUMENTS BNE BOMB3D ;BOMB IF # OF ARGS. NE 3 MOVB #3,R2 ;R2=VECTOR SIZE=3 BR 10$ VSUBD: CMP #4,(R5)+ ;CHECK NUMBER OF ARGUMENTS BNE BOMBD ;BOMB IF # OF ARGS. NE 4 MOVB @6(R5),R2 ;R2=VECTOR SIZE=N 10$: MOV (R5)+,R3 ;R3=ADDRESS OF C MOV (R5)+,R4 ;R4=ADDRESS OF A MOV (R5),R5 ;R5=ADDRESS OF B SETD ;SET FLOATING DOUBLE MODE ; LOOP TO SUB VECTORS 20$: LDD (R4)+,F1 ;GET A(I) SUBD (R5)+,F1 ;A(I) - B(I) STD F1,(R3)+ ;PUT DIF IN C(I) SOB R2,20$ ;DONE? RTS PC ;RETURN BOMB3D: MOV #101624,-(SP) ;MOVE 2ND HALF OF NAME TO STACK MOV #107273,R4 ;MOVE 1ST HALF OF NAME TO R4 BR 30$ BOMBD: MOV #6440,-(SP) ;MOVE 2ND HALF OF NAME TO STACK MOV #106215,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