;Edited to have duplicate labels (PROJ_ZERO, DPCODE).
        !cpu    65816
CONST_ZERO =    $f0        ;project const

PROJ_ZERO =     $00        ;project addr
PROJ_ONE =      $01        ;project addr

*       =       $1000
        !as
        !rs
        ldy     PROJ_ZERO
        lda     (PROJ_ONE),y
        sta     $03        ;could be PROJ_ONE+2, but "nearby" is off
        ldx     $04
        lda     CONST_ZERO,S
        sta     $f1,S
        !zone   Z00000c
.VAR_ZERO =     $00
.VAR_TWO =      $02
.VAR_THREE =    $03
.CONST_ZERO_VAR = $f0
        ldy     .VAR_ZERO
        lda     (.VAR_ZERO+1),y
        sta     .VAR_THREE
        ldx     $04
        lda     .CONST_ZERO_VAR,S
        sta     $f1,S
        eor     0
        ora     240,S
        !zone   Z00001c
.VAR_ZERO =     $00
.VAR_TWO =      $02
.VAR_THREE =    $03
.PROJ_ZERO_DUP1 = $10      ;clash with project symbol
.DPCODE_DUP1 =  $80        ;clash with user label
.CONST_ZERO_VAR = $f0
        lda     .VAR_ZERO
        lda     .VAR_ZERO+1
        lda     .VAR_TWO
        !zone   Z000022
.VAR_ZERO =     $00
.VAR_TWO =      $02
.VAR_THREE =    $03
.PROJ_ZERO_DUP1 = $10      ;clash with project symbol
.DPCODE_DUP1 =  $80        ;clash with user label
.CONST_ZERO_VAR = $f0
        lda     .VAR_THREE
        lda     $04
        lda     .PROJ_ZERO_DUP1
        lda     $11
        lda+1   DPCODE
        !zone   Z00002c
        ldx     PROJ_ZERO
        ldx     PROJ_ONE
        ldx     $02
        bit     $ffa9
        ldy     PROJ_ZERO
        ldy     PROJ_ONE
        ldy     $02
        !byte   $2c
        !zone   Z00003c
.NH0    =       $00        ;not hidden
.NH1    =       $01        ;not hidden
L103C   lda     #$fe
        beq     L103C
        ldy     .NH0
        ldy     .NH1
        ldy     $02
        nop
        !zone   Z000047
.NH0    =       $00        ;not hidden
.NH1    =       $01        ;not hidden
.PTR0   =       $10
.CONST0 =       $10
        lda     .PTR0
        ldx     .PTR0+1
        ldy     $12
        lda     (.CONST0,S),y
        sta     (.CONST0+3,S),y
;Test name redefinition.  This is mostly of interest for assemblers without
;redefinable variables, but also of interest to the cross-reference window.
        !zone   Z000051
.NH0    =       $00        ;not hidden
.NH1    =       $01        ;not hidden
.PTR0   =       $10
.CONST0 =       $10
.PTR    =       $20        ;#1
        ldx     .PTR
        !zone   Z000053
.NH0    =       $00        ;not hidden
.NH1    =       $01        ;not hidden
.PTR0   =       $10
.CONST0 =       $10
.PTR    =       $22        ;#2
        ldx     .PTR
        !zone   Z000055
.NH0    =       $00        ;not hidden
.NH1    =       $01        ;not hidden
.PTR0   =       $10
.CONST0 =       $10
.PTR    =       $24        ;#3
        ldx     .PTR
@PTR_1  nop
        !zone   Z000058
.NH0    =       $00        ;not hidden
.NH1    =       $01        ;not hidden
.PTR0   =       $10
.CONST0 =       $10
.PTR_A  =       $20
.PTR    =       $24        ;#3
        ldy     .PTR_A
        !zone   Z00005a
.NH0    =       $00        ;not hidden
.NH1    =       $01        ;not hidden
.PTR0   =       $10
.CONST0 =       $10
.PTR_B  =       $1f
.PTR    =       $24        ;#3
        ldy     .PTR_B+1
        !zone   Z00005c
.NH0    =       $00        ;not hidden
.NH1    =       $01        ;not hidden
.PTR0   =       $10
.CONST0 =       $10
.PTR_C  =       $1d
.PTR    =       $24        ;#3
        ldy     .PTR_C+3
        !zone   Z00005e
.NH0    =       $00        ;not hidden
.NH1    =       $01        ;not hidden
.PTR0   =       $10
.CONST0 =       $10
.PTR_C  =       $1d
.PTR_D  =       $21
.PTR    =       $24        ;#3
        ldy     .PTR_C+3
        !zone   Z000060
.NH0    =       $00        ;not hidden
.NH1    =       $01        ;not hidden
.PTR0   =       $10
.CONST0 =       $10
.PTR_C  =       $1d
.PTR_D  =       $21
.PTR    =       $24        ;#3
.VAL0   =       $30
.VAL1   =       $31
.VAL2   =       $32
.VAL3   =       $33
.VAL4   =       $34
.VAL5   =       $35
        and     .VAL0
        and     .VAL1
        and     .VAL2
        and     .VAL3
        and     .VAL4
        and     .VAL5
        !zone   Z00006c
.NH0    =       $00        ;not hidden
.NH1    =       $01        ;not hidden
.PTR0   =       $10
.CONST0 =       $10
.PTR_C  =       $1d
.PTR_D  =       $21
.PTR    =       $24        ;#3
.VAL0   =       $30
.VAL14  =       $31
.VAL5   =       $35
        and     .VAL0
        and     .VAL14
        and     .VAL14+1
        and     .VAL14+2
        and     .VAL14+3
        and     .VAL5
        !zone   Z000078
.NH0    =       $00        ;not hidden
.NH1    =       $01        ;not hidden
.PTR0   =       $10
.CONST0 =       $10
.PTR_C  =       $1d
.PTR_D  =       $21
.PTR    =       $24        ;#3
.VAL0   =       $30
.VAL14  =       $31
.VAL5   =       $35
.DPNOP  =       $80        ;same as org
        lda+1   DPCODE
        jsr     DPCODE
        rts

        !pseudopc $0080 {
DPCODE  nop
        lda+1   DPCODE
        lda+2   DPCODE
        lda+3   DPCODE
@SPLIT1 lda     #','
        !zone   Z00008a
.NH0    =       $00        ;not hidden
.NH1    =       $01        ;not hidden
.PTR0   =       $10
.CONST0 =       $10
.PTR_C  =       $1d
.PTR_D  =       $21
.PTR    =       $24        ;#3
.VAL0   =       $30
.VAL14  =       $31
.VAL5   =       $35
.SPLITTER =     $80
        ldx     $1234
        beq     @SPLIT1
@SPLIT2 lda     ','
        !zone   Z000091
.NH0    =       $00        ;not hidden
.NH1    =       $01        ;not hidden
.PTR0   =       $10
.CONST0 =       $10
.PTR_C  =       $1d
.PTR_D  =       $21
.PTR    =       $24        ;#3
.VAL0   =       $30
.VAL14  =       $31
.VAL5   =       $35
.SPLITTER =     $80
        ldx     $5678
        beq     @SPLIT2
        nop
        clc
        xce
        rep     #$30
        !al
        !rl
        pea     STRING >> 16
        pea     STRING
        jsl     STRLEN
        sec
        xce
        !as
        !rs
        jmp     L00E6

STRING  !text   "testing"
        !byte   $00

        !zone   Z0000b2
.NH0    =       $00        ;not hidden
.NH1    =       $01        ;not hidden
.PTR0   =       $10
.CONST0 =       $10
.PTR_C  =       $1d
.PTR_D  =       $21
.VAL0   =       $30
.VAL14  =       $31
.VAL5   =       $35
.SPLITTER =     $80
.LEN    =       $f2
.PTR    =       $f4
.ARG    =       $fd
        !al
        !rl
STRLEN  phd
        tsc
        sec
        sbc     #$00f7
        tcd
        adc     #$00f0
        tcs
        stz     .LEN
@L00C1  ldx     .ARG+2
        lda     .ARG
        inc     .ARG
        bne     @L00CB
        inc     .ARG+2
@L00CB  sta     .PTR
        stx     .PTR+2
        lda     [.PTR]
        and     #$00ff
        beq     @L00DA
        inc     .LEN
        bra     @L00C1

@L00DA  lda     .LEN
        tay
        tdc
        clc
        adc     #$00f7
        tcs
        tya
        pld
        rtl

        !as
        !rs
L00E6   bit     .ARG+2
        bit+2   $00ff
        bit     $0100
        rts

        }
