In this post, Movax12 wrote:
The warning "Suspicious address expression" is a warning for when you load a high or low byte of a label and don't use the immediate operator
In the following contrived code, why is it still "suspicious" to use the .lobyte with a nonzero direct page base?
Code:
.p816
VMDATA = $002118
.smart
.segment "CODE"
sep #$20
pea linebuf & $00FF00
pld
lda <linebuf ; This is suspicious
lda z:<linebuf ; So is this
lda z:linebuf ; And this just makes a range error
pea VMDATA & $00FF00
pld
sta <VMDATA ; But this isn't
forever: jmp forever
.segment "BSS" ; linker script puts this in $000200-$001FFF
linebuf: .res 32
VMDATA = $002118
.smart
.segment "CODE"
sep #$20
pea linebuf & $00FF00
pld
lda <linebuf ; This is suspicious
lda z:<linebuf ; So is this
lda z:linebuf ; And this just makes a range error
pea VMDATA & $00FF00
pld
sta <VMDATA ; But this isn't
forever: jmp forever
.segment "BSS" ; linker script puts this in $000200-$001FFF
linebuf: .res 32
And how should I reassure ca65 that I know what I doing?