...but the 65C02 also has indexed absolute indirect addressing, e.g., LDA ($1234,X) or LDA ($1234),Y (in standard 6502 syntax).
Neither of those is a valid 65C02 instruction. The only valid absolute indirect instructions are
JMP (<addr>) and
JMP (<addr>,X). The valid 65C02 page zero indirect addressing modes are
(<zp>),
(<zp>,X) and
(<zp>),Y. The 65C816 adds
[<dp>] and
[<dp>],Y, both being 24-bit indirect, i.e.,
<dp> is three contiguous bytes on direct (zero) page. If
.Y is set to 16 bits, the
[<dp>],Y mode can "touch" all 16 MB of address space with very succinct code.
For first learning about the details of the new 65C02 features, it's probably easier to read Roger Wagner's "Assembly Lines," part 33 (June 1983 Softalk) than it is the data sheet.
Even better is to get a copy of the Eyes and Lichty manual, which covers all supported instructions in considerable detail and it does a good job of teaching the reader about 6502 assembly language in general, especially 6502 "idioms."
And this promptly became a problem when the 65816 arrived, with its DBR and DPR registers which can make any 8-bit address refer to different locations in Direct Page (replacing Zero Page), Absolute, and Long addressing modes (which take up 8, 16 and 24 bits of operand respectively). You really do need to explicitly specify which addressing mode you mean on the '816, but continuing the traditional 6502 assembly syntax does not make that easy.
I'm not seeing a problem. Taking
DP (direct page pointer) first, what that merely does is tell the '816 which part of bank
$00 memory is direct page. Direct page instructions do not change. For example,
LDA [$21] works the same no matter where
DP points. All that changes is if
DP is pointing to an absolute address the physical zero page is no longer accessible using eight-bit operands. If
DP is set to
$8400 and the instruction
LDA $00 is executed, the
effective address will be
$8400, not
$0000. If it is desired to access the real zero page 16-bit operands must be used. Complementary to that is an instruction such as
LDA ($00) will effectively be
LDA ($8400). This characteristic of the '816 makes it practical (and very useful) to point
DP at some part of the stack and use direct page instructions to access a stack frame.
Turning to
DB (data bank register), its content matters when 16-bit addresses are used in load/store instructions. It's important to understand that the '816
always generates 24-bit addresses, regardless of the addressing mode used. If an absolute addressing mode is specified for any load/store instruction
DB will be prepended to the effective address to create the 24-bit address that the '816 will emit.
DB will be ignored if the addressing mode is direct page, any of the direct page indirect long modes, or any of the absolute long modes. A load immediate instruction is always from the bank in which the instruction is located.
That's why i'm asking the creator of the CustomASM to maybe add an disassembler. so i can easily convert back and forth.
Why make it so complicated? You'd be better served by learning and using standard 6502 assembly language instead of trying to somehow make a 6502 program look like a Z80 program. It will also make it a lot easier for most of us to help you as you write software and run into trouble.