In 68k I was used to being able to do things like add.l d0, d1 to add the value in d0 to d1. I've just started playing around with some 6502 development on the Atari 2600 for the first time, and it appears as though you can't add the value of the X or Y registers to the accumulator.
Think of it like the 68k's distinction between data and address registers. ...
That's not strictly the only way — if you had 256 bytes to spare (/waste) on a lookup table of f(n)=n then you could do something like:
.table db $00, $01, $02, $03 ... $ff
But, otherwise, no, there is no built-in way to perform arithmetic between registers.
As another-dave points out, your "indirect bit in the
instruction" versus "indirect bit in the address" distinction can be
ambiguous. When the instruction and the address operand are always
contained within a single machine word at the same address, is the
indirect bit part of the address or part of the instruction?
I think we can clearly say that for multi-...
tl;dr - I see the world divided into 'indirection indicated by dedicated field in instruction and (sometimes) in indirect words as well' versus 'indirection is a property of certain opcodes'. No 'indirection indicated by bit in address'. I think dedicated-field is more common.
I don't think there were many computers where indirection ...
I'm curious how common the style of "indirect addressing via the address value" instruction was at the time?
To avoid a list answer and as an absolute answer isn't possible anyway, let's say "quite". Notable examples in addition to the mentioned HP2100 are IBM's 1620 of 1959 or DG's NOVA of 1969. All of them are based on the idea that word size is larger ...
But how instructions like DEC, DEX and DEY works ?
By adding $FF provided by the precharged internal data bus to the register content.
The internal databus is precharged with $FF during PHI2 (*1)
During the next phase it's loaded into the B register (signal DB/ADD)
At the same time the index register is transfered via SB (*/SB) to the A ...
(Caveat: This is from memory with a quick peek into the manual. So some reply after trying it might be useful.)
Try fill=yes (*1) for the memory area of MAIN and make HIMEMSEG overwrite the area you added:
ZP: file = "", start = $0002, size = $00FE, define = yes;
LOADADDR: file = %O, start = %S - 2, size = $...