TMorita wrote:
The 2500AD 6502 cross-assembler for MS-DOS and the assembler packaged with the Super Nintendo development system required the A operand, if I remember correctly.
As do both of Commodore's assembler packages (MADS and DevPak). DevPak prohibits the use of the letter A as a symbol or label. I don't recall anymore if that is true of MADS, but I suspect that is so.
A bit of history: quite a few years ago (about 25, to be exact) I had the pleasure of eating lunch with the late Jim Butterfield while at a Commodore lovefest and naturally, we got into a discussion about assembly language. Somehow the topic of A operands came up. Sir Jim said that when MOS Technology created the assembly language syntax, which requires an A operand for implied accumulator operations, the decision was made that if an instruction mnemonic, e.g., ROR, could be applied to memory or accumulator it had to have an operand. He went on to say that it was easier to parse such an instruction if an operand was required in all cases—most likely true with the limited machine resources available to an assembler in the 1970s. Therefore, the syntax was formalized that way. We can probably blame Chuck Peddle for it, since most of the 6502 assembly language structure was "borrowed" from 6800 assembly language, with which, of course, he was intimately acquainted.
When I wrote the assembler for my POC firmware I didn't have to be concerned with ROR A vs. ROR, since only numeric operands are accepted. As a consequence, ROR A assembles as ROR $0A ($66 $0A), whereas ROR assembles as ROR ($6A). Having been accustomed to the official MOS syntax for some 35 years, I occasionally reflexively type ROR A and thereby create a nice bug in the program.
Another interesting note: DEA has often been used as an alias to DEC A in 65C02 assemblers. The Kowalski simulator's assembler only recognizes DEA. DEC A would be interpreted as a R-M-W operation on a location defined by the symbol A. It seems to me that the original syntax should have used DEA in place of DEC A, only because we have DEX and DEY, as well as INX and INY—logically then, INC A should be INA.