mirror of
https://github.com/fadden/6502bench.git
synced 2024-12-03 20:49:50 +00:00
39b7b20144
This is the first step toward changing the address region map from a linear list to a hierarchy. See issue #107 for the plan. The AddressMap class has been rewritten to support the new approach. The rest of the project has been updated to conform to the new API, but feature-wise is unchanged. While the map class supports nested regions with explicit lengths, the rest of the application still assumes a series of non-overlapping regions with "floating" lengths. The Set Address dialog is currently non-functional. All of the output for cc65 changed because generation of segment comments has been removed. Some of the output for ACME changed as well, because we no longer follow "* = addr" with a redundant pseudopc statement. ACME and 65tass have similar approaches to placing things in memory, and so now have similar implementations.
298 lines
6.9 KiB
ArmAsm
298 lines
6.9 KiB
ArmAsm
;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
|
|
|
|
} ;!pseudopc
|