The ";" symbol introduces a comment below.

   SUBR:  MOV R1, -(R6)
          MOV R2, -(R6)
          MOV R3, -(R6)

          CLR R0   ; sum
          MOV R6, R1
          MOV #4, R2
          ADD R2, R1  ; skip over three saved registers, ret addr
          MOV@ R1, R2  ; second parameter, now how many are left
          INC R1
          MOV@ R1, R1  ; first parameter, now pointer to current array element

          ; post-tested loop ok because guaranteed n>0
   LOOP:  MOV (R1)+, R3
          ADD R3, R0
          BVS RETURN  ; with overflow flag set
          DEC R2
          TST R2
          BGT LOOP
	  ; at this point R2=0, thus V is not set

  RETURN: MOV (R6)+, R3
          MOV (R6)+, R2
          MOV (R6)+, R1
          RTS
          ; on a PDP-11 we'd need a "SEV" in the case of overflow because the
             ; MOVs would clear V; but VELMA's MOV doesn't affect V


[on to problem #6]