.TITLE VSCLD SCALE A VECTOR (DOUBLE PRECISION) .IDENT /1.0/ ; 08/15/79 .GLOBL VSCLD, V3SCLD .ENABL LSB ; F0=R0 ;DEFINE FLOATING REGISTER 0 F1=R1 ;DEFINE FLOATING REGISTER 1 V3SCLD: CMP #3,(R5)+ ;CHECK NUMBER OF ARGUMENTS BNE BOMB3D ;BOMB IF # OF ARGS. IS INCORRECT MOVB #3,R2 ;R2=VECTOR SIZE=3 BR 10$ VSCLD: CMP #4,(R5)+ ;ARE THERE 4 ARGUMENTS? BNE BOMBD ;BOMB IF # OF ARGS. IS INCORRECT MOVB @6(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 SETD ;SET FLOATING DOUBLE MODE LDD (R0),F1 ;F1=P ; LOOP TO FORM VECTOR 20$: LDD (R4)+,F0 ;GET A(I) MULD F1,F0 ;P*A(I) STD F0,(R3)+ ;PUT SUM IN C(I) SOB R2,20$ ;DONE? RTS PC ;RETURN BOMB3D: MOV #12244,-(SP) ;MOVE 2ND HALF OF NAME TO STACK MOV #107273,R4 ;MOVE 1ST HALF OF NAME TO R4 BR 30$ BOMBD: MOV #45640,-(SP) ;MOVE 2ND HALF OF NAME TO STACK MOV #106173,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