My modifications to asm6...
http://www.dwedit.org/files/asm6.c
http://www.dwedit.org/files/asm6.exe
This fixes the bug with negative numbers that generates unnecessary error messages if it makes it to the third pass, then fixes a bug where it generates unnecessary error messages on branch instructions if the branch target is invalid. Those bugs have no impact on code without any errors.
There was another change I was planning to make but never got around to it. The assembler's compliment operator acts as a full 32-bit operation, so instructions like LDA #~NN failed if the equate had most significant bit set, the value was treated as an out-of-range integer and refused to assemble. Anding it with 255 worked as a workaround.
Anyway, the reason ASM6 generates floods of error messages is that ASM6 refuses to emit an instruction that gives an error. Then any label located after the error has its address tested against what it should be, and it displays an error message for any label which does not match, so there's your 1000 error messages right there.
My fixes fix a bug where negative numbers could be misparsed as the - label on a third pass, and forces invalid branches to emit a dummy branch instruction. It still knows there's an error, so it won't silently produce bad code, but now it emits the two bytes so it won't make a flood of Incorrect Address errors.