OK.. I see that .byte is not the command... Now it seems like it is a way to trick DASM, not the 6502. I'd think that DASM could just allow the command but I'm sure there is a reason it doesn't.
It would lead to hard to find bugs if you accidentally put in an instruction without the operand and the compiler didn't complain. A warning would work, but over time you'd learn to ignore those warnings. By doing it via .byte you're basically saying "yes, I know what I'm doing isn't normal, but I'm doing it anyway".
Correct, it's the location of the location.
So indirect addressing means the operand is the location where the location of the data is stored? I hope that's right because I've been having a hard time with that stuff. I have immediate addressing down pretty good though!
I am still thrown off by the sbc #0. This looks like "subtract zero" to me, and not "make it zero".
That's exactly what it is, subtract zero. Remember learning subtraction back in grade school?
You had to manually keep track of the "1" you needed to borrow when doing the ones column subtraction so that when you did the tens column the 2-0 became 2-1-0.
The 6507 is doing the same thing, but at a byte level instead of a ones or hundreds position. If the SBC needed to do a borrow it denotes it via the carry flag. The status of the carry flag tells the next SBC if it needs to do an extra "-1" to make up for a borrow.