mirror of
https://github.com/marketideas/qasm.git
synced 2024-12-27 15:29:30 +00:00
test
This commit is contained in:
parent
b649b7db0f
commit
a306f6f3d2
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
11
testdata/1000-allops-value-65816.S
vendored
Normal file
11
testdata/1000-allops-value-65816.S
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
; Copyright 2018 faddenSoft. All Rights Reserved.
|
||||||
|
; See the LICENSE.txt file for distribution terms (Apache 2.0).
|
||||||
|
;
|
||||||
|
; Assembler: Merlin 32
|
||||||
|
ZP EQU $FF
|
||||||
|
ABS EQU $FEFF
|
||||||
|
LONG EQU $FDFEFF
|
||||||
|
MV0 EQU ZP ;Merlin 32 bug -- must use 8-bit constant, or
|
||||||
|
MV1 EQU ZP-1 ; '^' modifier is implicitly applied
|
||||||
|
|
||||||
|
PUT allops-common-65816.S
|
12
testdata/1001-allops-zero-65816.S
vendored
Normal file
12
testdata/1001-allops-zero-65816.S
vendored
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
; Copyright 2018 faddenSoft. All Rights Reserved.
|
||||||
|
; See the LICENSE.txt file for distribution terms (Apache 2.0).
|
||||||
|
;
|
||||||
|
; Assembler: Merlin 32
|
||||||
|
|
||||||
|
ZP EQU $00
|
||||||
|
ABS EQU $0000
|
||||||
|
LONG EQU $000000
|
||||||
|
MV0 EQU $00
|
||||||
|
MV1 EQU $00
|
||||||
|
|
||||||
|
PUT allops-common-65816.S
|
110
testdata/1002-embedded-instructions.S
vendored
Normal file
110
testdata/1002-embedded-instructions.S
vendored
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
; Copyright 2018 faddenSoft. All Rights Reserved.
|
||||||
|
; See the LICENSE.txt file for distribution terms (Apache 2.0).
|
||||||
|
;
|
||||||
|
; Assembler: Merlin 32
|
||||||
|
|
||||||
|
org $1000
|
||||||
|
|
||||||
|
; 65816 mode with short regs
|
||||||
|
clc
|
||||||
|
xce
|
||||||
|
sep #$30
|
||||||
|
mx %11
|
||||||
|
|
||||||
|
jsr test1
|
||||||
|
jsr test2
|
||||||
|
jsr test3
|
||||||
|
jsr test4
|
||||||
|
jsr test5
|
||||||
|
rts
|
||||||
|
|
||||||
|
; TEST #1: simple example
|
||||||
|
test1 lda #$00
|
||||||
|
dfb $2c ;BIT abs
|
||||||
|
:inner lda #$01
|
||||||
|
beq :inner
|
||||||
|
rts
|
||||||
|
|
||||||
|
; TEST #2: embedded with break path
|
||||||
|
;
|
||||||
|
; Example inspired by incorrect analysis...
|
||||||
|
;
|
||||||
|
; The code analyzer sees:
|
||||||
|
; beq {+03} ;jumps to the $8f
|
||||||
|
; lda #$00
|
||||||
|
; brk $8f
|
||||||
|
; and stops, then pursues the branch. If we try to walk from top
|
||||||
|
; to bottom, skipping forward by the full length of an instruction,
|
||||||
|
; we'll appear to find ourselves in the middle of an embedded
|
||||||
|
; instruction.
|
||||||
|
;
|
||||||
|
; This is different from the typical embedded instruction,
|
||||||
|
; where the inner is contained entirely within the outer.
|
||||||
|
test2 sep #$30 ;short regs
|
||||||
|
mx %00 ;pretend they're long
|
||||||
|
|
||||||
|
lda $00 ;load something to scramble flags
|
||||||
|
beq :store
|
||||||
|
lda #$0000
|
||||||
|
:store stal $012345
|
||||||
|
rts
|
||||||
|
|
||||||
|
; TEST #3: embedded with non-instruction byte
|
||||||
|
;
|
||||||
|
; The code analyzer sees two paths, involving the three bytes.
|
||||||
|
; The first is the three-byte JSR, the second is the one-byte
|
||||||
|
; RTS. The third NOP byte is never "executed" by the analyzer,
|
||||||
|
; but because of the way we display embedded instructions it
|
||||||
|
; gets put on its own line. Since it's not an instruction start
|
||||||
|
; or a data item, things get confused. (This is referred to as
|
||||||
|
; an "embedded orphan" in the code.)
|
||||||
|
|
||||||
|
test3 dfb $20 ;JSR
|
||||||
|
:mid dfb $60 ;RTS
|
||||||
|
dfb $ea ;NOP
|
||||||
|
bra :mid
|
||||||
|
|
||||||
|
|
||||||
|
; TEST #4: overlapping chain
|
||||||
|
;
|
||||||
|
; Each BIT instruction is three bytes, and each byte is a branch target,
|
||||||
|
; so we get a string of embedded instructions.
|
||||||
|
test4
|
||||||
|
:bits hex 2c2c2c2c2c2c2c2c2ceaea
|
||||||
|
asl
|
||||||
|
bcc :bits
|
||||||
|
asl
|
||||||
|
bcc :bits+1
|
||||||
|
asl
|
||||||
|
bcc :bits+2
|
||||||
|
asl
|
||||||
|
bcc :bits+3
|
||||||
|
asl
|
||||||
|
bcc :bits+4
|
||||||
|
asl
|
||||||
|
bcc :bits+5
|
||||||
|
asl
|
||||||
|
bcc :bits+6
|
||||||
|
asl
|
||||||
|
bcc :bits+7
|
||||||
|
asl
|
||||||
|
bcc :bits+8
|
||||||
|
asl
|
||||||
|
bcc :bits+9
|
||||||
|
rts
|
||||||
|
|
||||||
|
; TEST #5: another overlap
|
||||||
|
;
|
||||||
|
; Trying to be a little different.
|
||||||
|
test5 dfb $2c
|
||||||
|
:mid1 nop
|
||||||
|
hex ad
|
||||||
|
:mid2 lda $00
|
||||||
|
asl
|
||||||
|
bcc :mid1
|
||||||
|
asl
|
||||||
|
bcc :mid2
|
||||||
|
|
||||||
|
; TEST #6: "embedded" off the end of the file
|
||||||
|
dfb $af ;ldal
|
||||||
|
|
258
testdata/1003-flags-and-branches.S
vendored
Normal file
258
testdata/1003-flags-and-branches.S
vendored
Normal file
@ -0,0 +1,258 @@
|
|||||||
|
; Copyright 2018 faddenSoft. All Rights Reserved.
|
||||||
|
; See the LICENSE.txt file for distribution terms (Apache 2.0).
|
||||||
|
;
|
||||||
|
; Assembler: Merlin 32
|
||||||
|
|
||||||
|
org $1000
|
||||||
|
clc
|
||||||
|
xce
|
||||||
|
sep #$ff ;set all flags
|
||||||
|
mx %11
|
||||||
|
|
||||||
|
; clear individual flags with instructions
|
||||||
|
; (this has no effect on the assembled output, but you can see the
|
||||||
|
; effects on the "status" column in the display list)
|
||||||
|
clv
|
||||||
|
cld
|
||||||
|
cli
|
||||||
|
clc
|
||||||
|
lda #$80 ;clear Z
|
||||||
|
lda #$01 ;clear N
|
||||||
|
|
||||||
|
sed
|
||||||
|
sei
|
||||||
|
sec
|
||||||
|
lda #$ff ;set N
|
||||||
|
adc #$00 ;set V, Z (actually scrambles NVZC)
|
||||||
|
|
||||||
|
; clear individual flags with REP
|
||||||
|
sep #$ff
|
||||||
|
rep #$80
|
||||||
|
rep #$40
|
||||||
|
rep #$20
|
||||||
|
rep #$10
|
||||||
|
rep #$08
|
||||||
|
rep #$04
|
||||||
|
rep #$02
|
||||||
|
rep #$01
|
||||||
|
|
||||||
|
; exercise SEP/REP with #$00
|
||||||
|
sep #$00
|
||||||
|
sep #$ff
|
||||||
|
rep #$00
|
||||||
|
rep #$ff
|
||||||
|
|
||||||
|
; confirm emulation behavior
|
||||||
|
mx %00 ;long regs
|
||||||
|
lda #$feed ;check it
|
||||||
|
sec
|
||||||
|
xce ;emulation mode
|
||||||
|
lda #$ff ;check it
|
||||||
|
rep #$30 ;should have no effect...
|
||||||
|
mx %11 ;...but Merlin32 doesn't know that
|
||||||
|
lda #$ff
|
||||||
|
clc
|
||||||
|
xce ;back to native, should set M/X=1
|
||||||
|
lda #$ff ;check it
|
||||||
|
|
||||||
|
; try one long, one short
|
||||||
|
rep #$20 ;long a
|
||||||
|
sep #$10 ;short x/y
|
||||||
|
mx %01
|
||||||
|
lda #$0000
|
||||||
|
ldx #$01
|
||||||
|
ldy #$02
|
||||||
|
|
||||||
|
sep #$20 ;short a
|
||||||
|
rep #$10 ;long x/y
|
||||||
|
mx %10
|
||||||
|
lda #$01
|
||||||
|
ldx #$0000
|
||||||
|
ldy #$0000
|
||||||
|
|
||||||
|
; check branch instructions; NVMXDIZC
|
||||||
|
sep #$30
|
||||||
|
mx %11
|
||||||
|
lda #$00
|
||||||
|
pha
|
||||||
|
plp ;without a nearby PHP, flags will be scrambled
|
||||||
|
|
||||||
|
rep #$80
|
||||||
|
bpl ok_bpl
|
||||||
|
brk $00
|
||||||
|
|
||||||
|
ok_bpl sep #$80
|
||||||
|
bpl :bad ;branch never taken
|
||||||
|
bmi ok_bmi
|
||||||
|
:bad brk $00
|
||||||
|
|
||||||
|
ok_bmi rep #$40
|
||||||
|
bvc ok_bvc
|
||||||
|
brk $00
|
||||||
|
|
||||||
|
ok_bvc sep #$40
|
||||||
|
bvs ok_bvs
|
||||||
|
brk $00
|
||||||
|
|
||||||
|
ok_bvs rep #$01
|
||||||
|
bcc ok_bcc
|
||||||
|
brk $00
|
||||||
|
|
||||||
|
ok_bcc sep #$01
|
||||||
|
bcs ok_bcs
|
||||||
|
brk $00
|
||||||
|
|
||||||
|
ok_bcs rep #$02
|
||||||
|
bne ok_bne
|
||||||
|
brk $00
|
||||||
|
|
||||||
|
ok_bne sep #$02
|
||||||
|
beq ok_beq
|
||||||
|
brk $00
|
||||||
|
|
||||||
|
ok_beq
|
||||||
|
|
||||||
|
; check NZ flags set by immediate load
|
||||||
|
sep #$ff ;set all
|
||||||
|
mx %11
|
||||||
|
lda #$01
|
||||||
|
bne ok_nzero
|
||||||
|
brk $db
|
||||||
|
ok_nzero
|
||||||
|
lda #$00
|
||||||
|
beq ok_zero
|
||||||
|
brk $db
|
||||||
|
ok_zero
|
||||||
|
bpl ok_pos
|
||||||
|
brk $db
|
||||||
|
ok_pos
|
||||||
|
lda #$80
|
||||||
|
bmi ok_neg
|
||||||
|
brk $db
|
||||||
|
ok_neg
|
||||||
|
|
||||||
|
; check NZ flags set by immediate AND
|
||||||
|
lda #$ff
|
||||||
|
and #$00
|
||||||
|
beq ok_andZ1
|
||||||
|
brk $db
|
||||||
|
ok_andZ1
|
||||||
|
lda #$00
|
||||||
|
and #$ff
|
||||||
|
beq ok_andZ1A
|
||||||
|
brk $db
|
||||||
|
ok_andZ1A
|
||||||
|
lda #$ff
|
||||||
|
and #$7f
|
||||||
|
bne ok_andZ0
|
||||||
|
brk $db
|
||||||
|
ok_andZ0
|
||||||
|
bpl ok_andN0
|
||||||
|
brk $db
|
||||||
|
ok_andN0
|
||||||
|
lda #$ff
|
||||||
|
and #$80
|
||||||
|
bmi ok_andN1
|
||||||
|
brk $db
|
||||||
|
ok_andN1
|
||||||
|
|
||||||
|
; check NZ flags set by immediate ORA
|
||||||
|
lda #$00
|
||||||
|
ora #$00
|
||||||
|
beq ok_oraZ1
|
||||||
|
brk $db
|
||||||
|
ok_oraZ1
|
||||||
|
ora #$01
|
||||||
|
bne ok_oraZ0
|
||||||
|
brk $db
|
||||||
|
ok_oraZ0
|
||||||
|
lda #$00
|
||||||
|
ora #$7f
|
||||||
|
bpl ok_oraN0
|
||||||
|
brk $db
|
||||||
|
ok_oraN0
|
||||||
|
ora #$80
|
||||||
|
bmi ok_oraN1
|
||||||
|
brk $db
|
||||||
|
ok_oraN1
|
||||||
|
|
||||||
|
; check rol/ror
|
||||||
|
:foo lda :foo ;scramble N/V
|
||||||
|
sec
|
||||||
|
ror A ;rotates the carry into the hi bit (N)
|
||||||
|
bmi ok_ror1
|
||||||
|
brk $dc
|
||||||
|
ok_ror1
|
||||||
|
clc
|
||||||
|
ror A ;now try with carry clear
|
||||||
|
bpl ok_ror2
|
||||||
|
brk $dc
|
||||||
|
ok_ror2
|
||||||
|
lda #$00 ;set Z=1
|
||||||
|
sec
|
||||||
|
rol A ;set Z=0 (could also set C=0)
|
||||||
|
bne ok_rol1
|
||||||
|
brk $dc
|
||||||
|
ok_rol1
|
||||||
|
|
||||||
|
; simple php/plp pair test
|
||||||
|
clc
|
||||||
|
php
|
||||||
|
sec
|
||||||
|
plp ;should restore cleared carry
|
||||||
|
bcc ok_plp
|
||||||
|
brk $00
|
||||||
|
ok_plp
|
||||||
|
|
||||||
|
; regression test for bug in analyzer
|
||||||
|
sec ;here carry is clear
|
||||||
|
bcs flg2
|
||||||
|
flg1 clc
|
||||||
|
|
||||||
|
flg2 lda $33
|
||||||
|
beq flg1
|
||||||
|
bcs flg3 ;this should NOT be branch-always
|
||||||
|
lda $44
|
||||||
|
flg3 nop
|
||||||
|
|
||||||
|
; test tracking across subroutine calls
|
||||||
|
rep #$20 ;long a
|
||||||
|
sep #$10 ;short x/y
|
||||||
|
mx %01
|
||||||
|
jsr long_subr ;confirm flag propagation
|
||||||
|
|
||||||
|
rep #$30
|
||||||
|
mx %00
|
||||||
|
jsr ambig_subr
|
||||||
|
|
||||||
|
sep #$30
|
||||||
|
mx %11
|
||||||
|
jsr ambig_subr
|
||||||
|
|
||||||
|
rep #$20 ;long a
|
||||||
|
sep #$10 ;short x/y
|
||||||
|
mx %01
|
||||||
|
jsr long_subr ;call it again
|
||||||
|
|
||||||
|
|
||||||
|
; leave the main routine with short flags set
|
||||||
|
sep #$30
|
||||||
|
mx %11
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
; only called with longm/shortx
|
||||||
|
mx %01
|
||||||
|
long_subr
|
||||||
|
lda #$1234
|
||||||
|
ldx #$ff
|
||||||
|
rts
|
||||||
|
|
||||||
|
; this is called with different values for M/X, so it defaults to short
|
||||||
|
mx %11
|
||||||
|
ambig_subr
|
||||||
|
lda #$ff
|
||||||
|
ldx #$ee
|
||||||
|
ldy #$dd
|
||||||
|
rts
|
||||||
|
|
49
testdata/1004-data-recognition.S
vendored
Normal file
49
testdata/1004-data-recognition.S
vendored
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
; Copyright 2018 faddenSoft. All Rights Reserved.
|
||||||
|
; See the LICENSE.txt file for distribution terms (Apache 2.0).
|
||||||
|
;
|
||||||
|
; Assembler: Merlin 32
|
||||||
|
|
||||||
|
org $1000
|
||||||
|
|
||||||
|
lda zsplit
|
||||||
|
ora esplit
|
||||||
|
rts
|
||||||
|
|
||||||
|
asc3 asc '333' ;no match
|
||||||
|
dfb $80
|
||||||
|
asc4 asc '4444' ;run of 4, as ASCII
|
||||||
|
dfb $80
|
||||||
|
asc5 asc '55555' ;run of 5, as ASCII
|
||||||
|
dfb $80
|
||||||
|
ascM asc 'MMMMMMMMMM' ;run of 62, as ASCII
|
||||||
|
asc 'MMMMMMMMMM'
|
||||||
|
asc 'MMMMMMMMMM'
|
||||||
|
asc 'MMMMMMMMMM'
|
||||||
|
asc 'MMMMMMMMMM'
|
||||||
|
asc 'MMMMMMMMMM'
|
||||||
|
asc 'MM'
|
||||||
|
dfb $80
|
||||||
|
ascL asc 'LLLLLLLLLL' ;run of 63, as fill
|
||||||
|
asc 'LLLLLLLLLL'
|
||||||
|
asc 'LLLLLLLLLL'
|
||||||
|
asc 'LLLLLLLLLL'
|
||||||
|
asc 'LLLLLLLLLL'
|
||||||
|
asc 'LLLLLLLLLL'
|
||||||
|
asc 'LLL'
|
||||||
|
|
||||||
|
dfb $81
|
||||||
|
|
||||||
|
zero ds 3 ;no match
|
||||||
|
dfb $81
|
||||||
|
ds 4 ;no match
|
||||||
|
dfb $81
|
||||||
|
ds 5 ;fill of 5
|
||||||
|
dfb $81
|
||||||
|
|
||||||
|
; The auto-label should split these in half.
|
||||||
|
ds 8
|
||||||
|
zsplit ds 8
|
||||||
|
|
||||||
|
hex 8282828282828282
|
||||||
|
esplit hex 8282828282828282
|
||||||
|
|
9
testdata/2000-allops-value-6502.S
vendored
Normal file
9
testdata/2000-allops-value-6502.S
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
; Copyright 2018 faddenSoft. All Rights Reserved.
|
||||||
|
; See the LICENSE.txt file for distribution terms (Apache 2.0).
|
||||||
|
;
|
||||||
|
; Assembler: Merlin 32
|
||||||
|
|
||||||
|
ZP EQU $FF
|
||||||
|
ABS EQU $FEFF
|
||||||
|
|
||||||
|
PUT allops-common-6502.S
|
9
testdata/2001-allops-zero-6502.S
vendored
Normal file
9
testdata/2001-allops-zero-6502.S
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
; Copyright 2018 faddenSoft. All Rights Reserved.
|
||||||
|
; See the LICENSE.txt file for distribution terms (Apache 2.0).
|
||||||
|
;
|
||||||
|
; Assembler: Merlin 32
|
||||||
|
|
||||||
|
ZP EQU $00
|
||||||
|
ABS EQU $0000
|
||||||
|
|
||||||
|
PUT allops-common-6502.S
|
9
testdata/2002-allops-value-65C02.S
vendored
Normal file
9
testdata/2002-allops-value-65C02.S
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
; Copyright 2018 faddenSoft. All Rights Reserved.
|
||||||
|
; See the LICENSE.txt file for distribution terms (Apache 2.0).
|
||||||
|
;
|
||||||
|
; Assembler: Merlin 32
|
||||||
|
|
||||||
|
ZP EQU $FF
|
||||||
|
ABS EQU $FEFF
|
||||||
|
|
||||||
|
PUT allops-common-65C02.S
|
9
testdata/2003-allops-zero-65C02.S
vendored
Normal file
9
testdata/2003-allops-zero-65C02.S
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
; Copyright 2018 faddenSoft. All Rights Reserved.
|
||||||
|
; See the LICENSE.txt file for distribution terms (Apache 2.0).
|
||||||
|
;
|
||||||
|
; Assembler: Merlin 32
|
||||||
|
|
||||||
|
ZP EQU $00
|
||||||
|
ABS EQU $0000
|
||||||
|
|
||||||
|
PUT allops-common-65C02.S
|
52
testdata/2004-numeric-types.S
vendored
Normal file
52
testdata/2004-numeric-types.S
vendored
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
; Copyright 2018 faddenSoft. All Rights Reserved.
|
||||||
|
; See the LICENSE.txt file for distribution terms (Apache 2.0).
|
||||||
|
;
|
||||||
|
; Assembler: Merlin 32
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
dfb $11 ;.dd1
|
||||||
|
dw $1122 ;.dd2
|
||||||
|
adr $112233 ;.dd3
|
||||||
|
adrl $11223344 ;.dd4
|
||||||
|
|
||||||
|
dfb $11 ;.dbd1
|
||||||
|
ddb $1122 ;.dbd2
|
||||||
|
dfb $11,$22,$33 ;.dbd3
|
||||||
|
dfb $11,$22,$33,$44 ;.dbd4
|
||||||
|
|
||||||
|
ds 2 ;.fill
|
||||||
|
dfb $80
|
||||||
|
ds 3 ;.fill
|
||||||
|
dfb $80
|
||||||
|
ds 4 ;.fill
|
||||||
|
dfb $80
|
||||||
|
ds 5 ;.fill
|
||||||
|
dfb $80
|
||||||
|
ds 256 ;.fill
|
||||||
|
dfb $80
|
||||||
|
|
||||||
|
ds 257,$cc ;.fill
|
||||||
|
|
||||||
|
hex 11 ;.bulk
|
||||||
|
dfb $80
|
||||||
|
hex 11223344556677889900 ;.bulk
|
||||||
|
dfb $80
|
||||||
|
hex 00112233445566778899aabbccddeeff ;4 lines .bulk
|
||||||
|
hex 00112233445566778899aabbccddeeff ;add a comment
|
||||||
|
hex 00112233445566778899aabbccddeeff
|
||||||
|
hex ffeeddccbbaa99887766554433221100
|
||||||
|
dfb $80
|
||||||
|
|
||||||
|
; align to 256-byte boundary
|
||||||
|
ds \,$aa ;.junk, align 256
|
||||||
|
dfb $81
|
||||||
|
ds 63,$00 ;.junk, align 64
|
||||||
|
dfb $81
|
||||||
|
ds 31,$ab ;.junk, align 32
|
||||||
|
hex 0000000000000001 ;.junk (should become .dense)
|
||||||
|
dfb $81
|
||||||
|
hex 1000000000000000 ;.junk (should become .dense)
|
||||||
|
dfb $81
|
||||||
|
hex dddd ;EDIT FILE: give this a bogus alignment
|
||||||
|
ds \,$00 ;.junk, align 256
|
147
testdata/2005-string-types.S
vendored
Normal file
147
testdata/2005-string-types.S
vendored
Normal file
@ -0,0 +1,147 @@
|
|||||||
|
; Copyright 2018 faddenSoft. All Rights Reserved.
|
||||||
|
; See the LICENSE.txt file for distribution terms (Apache 2.0).
|
||||||
|
;
|
||||||
|
; Assembler: Merlin 32
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
* simple strings
|
||||||
|
* High-ASCII quoted text uses embedded high-ascii double-quotes, mostly to
|
||||||
|
* test Merlin's behavior. Note that a mix of high- and low-ASCII won't be
|
||||||
|
* handled as a single string.
|
||||||
|
asc 'low ASCII str'
|
||||||
|
dfb $80
|
||||||
|
asc "high ASCII str"
|
||||||
|
dfb $80
|
||||||
|
asc 27,'low',27,'quoted',222727,'text'
|
||||||
|
dfb $80
|
||||||
|
asc A2,"high",A2,"quoted",A7A2A2,"text"
|
||||||
|
dfb $80
|
||||||
|
asc '01234567890123456789012345678901234567890123456789012345678901234567890123456789' ; 80 chars
|
||||||
|
dfb $80
|
||||||
|
|
||||||
|
* edge cases for 64-char operand, single-quote delimiter (primarily for Merlin 32)
|
||||||
|
asc '0123456789012345678901234567890123456789012345678901234567',272727
|
||||||
|
dfb $80
|
||||||
|
asc '01234567890123456789012345678901234567890123456789012345678',272727
|
||||||
|
dfb $80
|
||||||
|
asc '012345678901234567890123456789012345678901234567890123456789',272727
|
||||||
|
dfb $80
|
||||||
|
asc '0123456789012345678901234567890123456789012345678901234567890',272727
|
||||||
|
dfb $80
|
||||||
|
asc '01234567890123456789012345678901234567890123456789012345678901',272727
|
||||||
|
dfb $80
|
||||||
|
|
||||||
|
* edge cases for 64-char operand, double-quote delimiter (primarily for cc65)
|
||||||
|
asc '012345678901234567890123456789012345678901234567890167',222222
|
||||||
|
dfb $80
|
||||||
|
asc '0123456789012345678901234567890123456789012345678901678',222222
|
||||||
|
dfb $80
|
||||||
|
asc '01234567890123456789012345678901234567890123456789016789',222222
|
||||||
|
dfb $80
|
||||||
|
asc '012345678901234567890123456789012345678901234567890167890',222222
|
||||||
|
dfb $80
|
||||||
|
asc '0123456789012345678901234567890123456789012345678901678901',222222
|
||||||
|
|
||||||
|
dfb $81
|
||||||
|
|
||||||
|
* 62 high-ASCII underscores. Should be one line.
|
||||||
|
asc "********************************"
|
||||||
|
asc "******************************"
|
||||||
|
|
||||||
|
dfb $80
|
||||||
|
|
||||||
|
* 96 high-ASCII underscores. Might be converted to "fill".
|
||||||
|
asc "********************************"
|
||||||
|
asc "********************************"
|
||||||
|
asc "********************************"
|
||||||
|
|
||||||
|
dfb $81
|
||||||
|
|
||||||
|
* reverse strings; cannot intersperse hex
|
||||||
|
rev 'low ASCII rev'
|
||||||
|
dfb $80
|
||||||
|
rev "high ASCII rev"
|
||||||
|
dfb $80
|
||||||
|
rev 'No man is an island, entire of itself; every man is a piece of the continent, a part of the main. If a clod be washed away by the sea, Europe is the less. As well as if a promontory were. As well as if a manor of thy friends or of thine own were. Any mans death diminishes me, because I am involved in mankind, and therefore never send to know for whom the bell tolls; it tolls for thee.' ; 389 chars
|
||||||
|
|
||||||
|
dfb $81
|
||||||
|
|
||||||
|
* null-terminated strings
|
||||||
|
dfb $00 ;empty string, requires project edit
|
||||||
|
dfb $80
|
||||||
|
asc 'low ASCII strz',00
|
||||||
|
dfb $80
|
||||||
|
asc "high ASCII strz",00
|
||||||
|
dfb $80
|
||||||
|
asc 27,'low',27,'quoted',222727,'text',00
|
||||||
|
dfb $80
|
||||||
|
asc A2,"high",A2,"quoted",A7A2A2,"text",00
|
||||||
|
dfb $80
|
||||||
|
asc '012345678901234567890123456789012345678901234567890123456789',27272700
|
||||||
|
dfb $80
|
||||||
|
asc '01234567890123456789012345678901234567890123456789012345678901234567890123456789',00
|
||||||
|
|
||||||
|
dfb $81
|
||||||
|
|
||||||
|
* string with leading length byte
|
||||||
|
str '' ;requires project edit
|
||||||
|
dfb $80
|
||||||
|
str 'low ASCII str1'
|
||||||
|
dfb $80
|
||||||
|
str "high ASCII str1"
|
||||||
|
dfb $80
|
||||||
|
str 27,'low',27,'quoted',222727,'text'
|
||||||
|
dfb $80
|
||||||
|
str A2,"high",A2,"quoted",A7A2A2,"text"
|
||||||
|
dfb $80
|
||||||
|
str '012345678901234567890123456789012345678901234567890123456789',272727
|
||||||
|
dfb $80
|
||||||
|
str '01234567890123456789012345678901234567890123456789012345678901234567890123456789'
|
||||||
|
|
||||||
|
dfb $81
|
||||||
|
|
||||||
|
* string with leading length word
|
||||||
|
strl '' ;requires project edit
|
||||||
|
dfb $80
|
||||||
|
strl 'low ASCII str2'
|
||||||
|
dfb $80
|
||||||
|
strl "high ASCII str2"
|
||||||
|
dfb $80
|
||||||
|
strl 27,'low',27,'quoted',222727,'text'
|
||||||
|
dfb $80
|
||||||
|
strl A2,"high",A2,"quoted",A7A2A2,"text"
|
||||||
|
dfb $80
|
||||||
|
strl '012345678901234567890123456789012345678901234567890123456789',272727
|
||||||
|
dfb $80
|
||||||
|
strl '01234567890123456789012345678901234567890123456789012345678901234567890123456789'
|
||||||
|
dfb $80
|
||||||
|
strl 'No man is an island, entire of itself; every man is a piece of the continent, a part of the main. If a clod be washed away by the sea, Europe is the less. As well as if a promontory were. As well as if a manor of thy friends or of thine own were. Any mans death diminishes me, because I am involved in mankind, and therefore never send to know for whom the bell tolls; it tolls for thee.' ; 389 chars
|
||||||
|
|
||||||
|
dfb $81
|
||||||
|
|
||||||
|
* DCI (dextral character inverted)
|
||||||
|
dci 'low ASCII dci'
|
||||||
|
dfb $80
|
||||||
|
dci "high ASCII dci"
|
||||||
|
dfb $80
|
||||||
|
dci 27,'low',27,'quoted',222727,'text'
|
||||||
|
dfb $80
|
||||||
|
dci A2,"high",A2,"quoted",A7A2A2,"text"
|
||||||
|
dfb $80
|
||||||
|
dci '012345678901234567890123456789012345678901234567890123456789',272727
|
||||||
|
dfb $80
|
||||||
|
dci '01234567890123456789012345678901234567890123456789012345678901234567890123456789'
|
||||||
|
|
||||||
|
dfb $81
|
||||||
|
|
||||||
|
* reverse DCI (deprecated, requires project edit)
|
||||||
|
asc F2,'icd IICSA wol'
|
||||||
|
dfb $80
|
||||||
|
asc 72,"icd IICSA hgih"
|
||||||
|
dfb $80
|
||||||
|
asc B9,'8765432109876543210987654321098765432109876543210987654321098765432109876543210' ; 80 chars
|
||||||
|
dfb $80
|
||||||
|
asc AE,'eeht rof sllot ti ;sllot lleb eht mohw rof wonk ot dnes reven erofereht dna ,dniknam ni devlovni ma I esuaceb ,em sehsinimid htaed snam ynA .erew nwo eniht fo ro sdneirf yht fo ronam a fi sa llew sA .erew yrotnomorp a fi sa llew sA .ssel eht si eporuE ,aes eht yb yawa dehsaw eb dolc a fI .niam eht fo trap a ,tnenitnoc eht fo eceip a si nam yreve ;flesti fo eritne ,dnalsi na si nam oN'
|
||||||
|
|
||||||
|
dfb $81
|
86
testdata/2006-operand-formats.S
vendored
Normal file
86
testdata/2006-operand-formats.S
vendored
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
; Copyright 2018 faddenSoft. All Rights Reserved.
|
||||||
|
; See the LICENSE.txt file for distribution terms (Apache 2.0).
|
||||||
|
;
|
||||||
|
; Assembler: Merlin 32
|
||||||
|
|
||||||
|
org $1000
|
||||||
|
|
||||||
|
; 65816 with short regs
|
||||||
|
clc
|
||||||
|
xce
|
||||||
|
sep #$30
|
||||||
|
mx %11
|
||||||
|
|
||||||
|
; Basic operand formats. Show first set as hex, second as decimal,
|
||||||
|
; third as binary.
|
||||||
|
lda $01
|
||||||
|
lda $0102
|
||||||
|
ldal $010203
|
||||||
|
|
||||||
|
lda $01
|
||||||
|
lda $0102
|
||||||
|
ldal $010203
|
||||||
|
|
||||||
|
lda $01
|
||||||
|
lda $0102
|
||||||
|
ldal $010203
|
||||||
|
|
||||||
|
bra :skipdata
|
||||||
|
|
||||||
|
; Now hex/decimal/binary, 1-2-3-4 bytes, in data area.
|
||||||
|
hex 01010201020301020304
|
||||||
|
hex 01010201020301020304
|
||||||
|
hex 01010201020301020304
|
||||||
|
|
||||||
|
:skipdata
|
||||||
|
|
||||||
|
; Convert these to ASCII; requires editing file. The code generator
|
||||||
|
; should display some of these as hex.
|
||||||
|
lda #$68
|
||||||
|
lda $68
|
||||||
|
lda: $0068
|
||||||
|
ldal $000068
|
||||||
|
|
||||||
|
lda #$1f
|
||||||
|
lda #$20
|
||||||
|
lda #$22
|
||||||
|
lda #$27
|
||||||
|
lda #$7e
|
||||||
|
lda #$7f
|
||||||
|
lda #$80
|
||||||
|
lda #$9f
|
||||||
|
lda #$a0
|
||||||
|
lda #$a2
|
||||||
|
lda #$a7
|
||||||
|
lda #$fe
|
||||||
|
lda #$ff
|
||||||
|
|
||||||
|
; Switch to long regs, continue with ASCII.
|
||||||
|
rep #$30
|
||||||
|
mx %00
|
||||||
|
|
||||||
|
lda #$0068
|
||||||
|
lda #$00c8
|
||||||
|
lda #$6868
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
; Continuing with ASCII
|
||||||
|
:ascii
|
||||||
|
dfb $68
|
||||||
|
dfb $80
|
||||||
|
dw $6868
|
||||||
|
dfb $80
|
||||||
|
|
||||||
|
|
||||||
|
; Format first set as address, second set as symbol.
|
||||||
|
dw :skipdata
|
||||||
|
adr :skipdata
|
||||||
|
dfb >:skipdata,:skipdata ;format as big-endian address
|
||||||
|
|
||||||
|
dfb :ascii
|
||||||
|
dfb >:ascii
|
||||||
|
dw :ascii
|
||||||
|
adr :ascii
|
||||||
|
dfb >:ascii,:ascii ;format as big-endian symbol
|
||||||
|
|
232
testdata/2007-labels-and-symbols.S
vendored
Normal file
232
testdata/2007-labels-and-symbols.S
vendored
Normal file
@ -0,0 +1,232 @@
|
|||||||
|
; Copyright 2018 faddenSoft. All Rights Reserved.
|
||||||
|
; See the LICENSE.txt file for distribution terms (Apache 2.0).
|
||||||
|
;
|
||||||
|
; Assembler: Merlin 32
|
||||||
|
|
||||||
|
absl equ $1029
|
||||||
|
absh equ $feed
|
||||||
|
zip equ $cd
|
||||||
|
biggie equ $123456
|
||||||
|
thirty2 equ $12345678
|
||||||
|
|
||||||
|
org $012345
|
||||||
|
|
||||||
|
start ;set this label
|
||||||
|
clc
|
||||||
|
xce
|
||||||
|
|
||||||
|
; load 8/16/24-bit symbols in different ways
|
||||||
|
sep #$30
|
||||||
|
mx %11
|
||||||
|
lda #zip
|
||||||
|
lda #zip+16
|
||||||
|
lda #zip+64
|
||||||
|
|
||||||
|
lda #<absh
|
||||||
|
lda #>absh
|
||||||
|
lda #<absh+64
|
||||||
|
lda #>absh+64
|
||||||
|
|
||||||
|
lda #<absl
|
||||||
|
lda #>absl
|
||||||
|
lda #<absl-64
|
||||||
|
lda #>absl-64
|
||||||
|
|
||||||
|
lda #<start
|
||||||
|
lda #>start
|
||||||
|
lda #^start
|
||||||
|
|
||||||
|
pea absh ;leave as default
|
||||||
|
pea start
|
||||||
|
pea ^start
|
||||||
|
pea biggie
|
||||||
|
pea ^biggie
|
||||||
|
pea absh ;convert to symbol
|
||||||
|
pea start
|
||||||
|
pea ^start
|
||||||
|
pea biggie
|
||||||
|
pea ^biggie
|
||||||
|
|
||||||
|
lda zip+1
|
||||||
|
lda: zip+1
|
||||||
|
ldal zip+1
|
||||||
|
lda absh-1
|
||||||
|
ldal absh-1
|
||||||
|
lda absh+1
|
||||||
|
ldal absh+1
|
||||||
|
lda start+1
|
||||||
|
ldal start+1
|
||||||
|
lda start-1
|
||||||
|
ldal start-1
|
||||||
|
lda biggie+1
|
||||||
|
ldal biggie+1
|
||||||
|
lda biggie-1
|
||||||
|
ldal biggie-1
|
||||||
|
|
||||||
|
rep #$30
|
||||||
|
mx %00
|
||||||
|
lda #zip
|
||||||
|
lda #zip+16
|
||||||
|
lda #zip+64
|
||||||
|
|
||||||
|
lda #<absl
|
||||||
|
lda #>absl
|
||||||
|
lda #<absl-$1000
|
||||||
|
lda #>absl-$1000
|
||||||
|
lda #^absl-$1000
|
||||||
|
|
||||||
|
lda #<absh
|
||||||
|
lda #>absh
|
||||||
|
lda #<absh+$1000
|
||||||
|
lda #>absh+$1000
|
||||||
|
lda #^absh+$1000
|
||||||
|
|
||||||
|
lda #<start
|
||||||
|
lda #>start
|
||||||
|
lda #^start
|
||||||
|
|
||||||
|
lda #<biggie ;note: constant, not a label
|
||||||
|
lda #>biggie
|
||||||
|
lda #^biggie
|
||||||
|
|
||||||
|
bra :skipdata
|
||||||
|
|
||||||
|
; reference 16/24-bit symbol in data statements
|
||||||
|
dfb zip
|
||||||
|
dfb <absh
|
||||||
|
dfb >absh
|
||||||
|
dfb <start
|
||||||
|
dfb >start
|
||||||
|
dfb ^start
|
||||||
|
|
||||||
|
dw zip
|
||||||
|
dw <absl
|
||||||
|
dw >absl
|
||||||
|
dw <absl-$1000
|
||||||
|
dw >absl-$1000
|
||||||
|
dw <absh
|
||||||
|
dw >absh
|
||||||
|
dw <absh+$1000
|
||||||
|
dw >absh+$1000
|
||||||
|
dw <start
|
||||||
|
dw >start
|
||||||
|
dw ^start
|
||||||
|
dw <start+1
|
||||||
|
dw >start+1
|
||||||
|
dw ^start+1
|
||||||
|
|
||||||
|
dfb >absh ;format as 16-bit big-endian
|
||||||
|
dfb <absh
|
||||||
|
|
||||||
|
adr zip
|
||||||
|
adr <absh
|
||||||
|
adr >absh
|
||||||
|
adr <start
|
||||||
|
adr >start
|
||||||
|
adr ^start
|
||||||
|
|
||||||
|
adrl zip
|
||||||
|
adrl <absh
|
||||||
|
adrl >absh
|
||||||
|
adrl <start-1
|
||||||
|
adrl >start-1
|
||||||
|
adrl ^start-1
|
||||||
|
|
||||||
|
:skipdata
|
||||||
|
lda #$11 ;format as biggie
|
||||||
|
mvn biggie,start ;format w/symbols
|
||||||
|
mvp start,biggie
|
||||||
|
mvn biggie,start ;format as decimal
|
||||||
|
mvp start,biggie ;format as binary
|
||||||
|
per :skipdata
|
||||||
|
brl :forward
|
||||||
|
:forward jml nextchunk
|
||||||
|
|
||||||
|
org $1000
|
||||||
|
nextchunk
|
||||||
|
nop ;leave this as auto-label
|
||||||
|
nop ;label this L1000
|
||||||
|
nop ;label this L1000_0
|
||||||
|
sep #$30
|
||||||
|
mx %11
|
||||||
|
|
||||||
|
plataddr equ $3000 ;address only in platform file
|
||||||
|
projover equ $3100 ;replaced by proj symbol w/same name, diff addr (no match)
|
||||||
|
projalso equ $3200 ;also in project, twice w/different name +/- alpha; low should win
|
||||||
|
nosym equ $3300 ;should not match anything
|
||||||
|
|
||||||
|
lda plataddr
|
||||||
|
lda projover
|
||||||
|
lda projalso
|
||||||
|
lda nosym
|
||||||
|
|
||||||
|
bra :next
|
||||||
|
|
||||||
|
target0 nop
|
||||||
|
target1 nop ;point everything here
|
||||||
|
target2 nop
|
||||||
|
|
||||||
|
|
||||||
|
t0 per target0
|
||||||
|
per target1
|
||||||
|
per target2
|
||||||
|
jsr target0
|
||||||
|
jsr target1
|
||||||
|
jsr target2
|
||||||
|
t1a bra target0
|
||||||
|
t1b bra target1
|
||||||
|
t1c bra target2
|
||||||
|
t2a brl target0
|
||||||
|
t2b brl target1
|
||||||
|
t2c brl target2
|
||||||
|
t3a jmp target0
|
||||||
|
t3b jmp target1
|
||||||
|
t3c jmp target2
|
||||||
|
t4a jml target0
|
||||||
|
t4b jml target1
|
||||||
|
t4c jml target2
|
||||||
|
|
||||||
|
:next
|
||||||
|
jsr t0
|
||||||
|
jsr t1a
|
||||||
|
jsr t1b
|
||||||
|
jsr t1c
|
||||||
|
jsr t2a
|
||||||
|
jsr t2b
|
||||||
|
jsr t2c
|
||||||
|
jsr t3a
|
||||||
|
jsr t3b
|
||||||
|
jsr t3c
|
||||||
|
jsr t4a
|
||||||
|
jsr t4b
|
||||||
|
jsr t4c
|
||||||
|
|
||||||
|
brl :skiphex
|
||||||
|
|
||||||
|
hex 808182838485868788898a8b8c8d8e8f ;add label and comment
|
||||||
|
hex 808182838485868788898a8b8c8d8e8f
|
||||||
|
hex 808182838485868788898a8b8c8d8e8f
|
||||||
|
hex 808182838485868788898a8b8c8d8e8f
|
||||||
|
hex 808182838485868788898a8b8c8d8e8f
|
||||||
|
hex 808182838485868788898a8b8c8d8e8f
|
||||||
|
hex 808182838485868788898a8b8c8d8e8f
|
||||||
|
|
||||||
|
asc 'This is a long string. Put a label and comment '
|
||||||
|
asc 'on it to confirm that the label and comment only '
|
||||||
|
asc 'appear on the first line. The quick brown fox '
|
||||||
|
asc 'jumps over the lazy dogs.'
|
||||||
|
|
||||||
|
:skiphex
|
||||||
|
|
||||||
|
; extract bytes from 32-bit value with short regs
|
||||||
|
lda #<thirty2 + 2
|
||||||
|
lda #>thirty2 + 768
|
||||||
|
lda #^thirty2
|
||||||
|
rep #$30
|
||||||
|
mx %00
|
||||||
|
lda #<thirty2 + 3
|
||||||
|
lda #>thirty2 + 1024
|
||||||
|
lda #^thirty2
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
116
testdata/2008-address-changes.S
vendored
Normal file
116
testdata/2008-address-changes.S
vendored
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
; Copyright 2018 faddenSoft. All Rights Reserved.
|
||||||
|
; See the LICENSE.txt file for distribution terms (Apache 2.0).
|
||||||
|
;
|
||||||
|
; Assembler: Merlin 32
|
||||||
|
|
||||||
|
org $1000
|
||||||
|
clc
|
||||||
|
xce
|
||||||
|
sep #$ff ;set all flags
|
||||||
|
mx %11
|
||||||
|
jsr one
|
||||||
|
jsr three_p ;should land inside one
|
||||||
|
jmp nextthing
|
||||||
|
|
||||||
|
org $1100
|
||||||
|
one bit one
|
||||||
|
one_p lda #$11
|
||||||
|
ldx #$11
|
||||||
|
ldy #$11
|
||||||
|
per one_p
|
||||||
|
bra one_p
|
||||||
|
|
||||||
|
org $1100
|
||||||
|
two bit two
|
||||||
|
lda #$22
|
||||||
|
two_p ldx #$22
|
||||||
|
ldy #$22
|
||||||
|
per two_p
|
||||||
|
jmp two_p
|
||||||
|
|
||||||
|
org $1100
|
||||||
|
three bit three
|
||||||
|
lda #$33
|
||||||
|
ldx #$33
|
||||||
|
three_p ldy #$33
|
||||||
|
per three_p
|
||||||
|
bra three_p
|
||||||
|
|
||||||
|
|
||||||
|
org $2000
|
||||||
|
nextthing
|
||||||
|
bit nextthing
|
||||||
|
beq :fwd-8 ;should just appear as hex since it's outside
|
||||||
|
bra :fwd ;BRA across org segments
|
||||||
|
|
||||||
|
org $2020
|
||||||
|
:fwd bit :fwd
|
||||||
|
beq offend ;branch off the end of the address area into dead space
|
||||||
|
brl endcheck ; (which wouldn't be dead without the org)
|
||||||
|
nop
|
||||||
|
offend
|
||||||
|
|
||||||
|
org $2080
|
||||||
|
endcheck
|
||||||
|
bit endcheck
|
||||||
|
lda offend-1 ;touch bytes at the ends, and one byte before/after
|
||||||
|
jsr offend-1
|
||||||
|
lda offend
|
||||||
|
jsr offend
|
||||||
|
lda endcheck-1
|
||||||
|
jsr endcheck-1
|
||||||
|
lda endcheck
|
||||||
|
jsr endcheck
|
||||||
|
|
||||||
|
lda $00
|
||||||
|
beq :midinst
|
||||||
|
dfb $ad ;LDA abs
|
||||||
|
org $2100
|
||||||
|
:midinst dfb $ea,$ea
|
||||||
|
|
||||||
|
jmp pastdata
|
||||||
|
|
||||||
|
org $2800
|
||||||
|
dw *
|
||||||
|
ds 16 ;EDIT: put an org change in the middle
|
||||||
|
org $2820
|
||||||
|
ds 16
|
||||||
|
|
||||||
|
org $3000
|
||||||
|
pastdata
|
||||||
|
bit pastdata
|
||||||
|
lda #$44
|
||||||
|
ldx #$44
|
||||||
|
ldy #$44
|
||||||
|
brl :fwd
|
||||||
|
dfb $00 ;put user label here or next inst
|
||||||
|
:datend dfb $01
|
||||||
|
|
||||||
|
org $3100
|
||||||
|
dfb $02 ;data target should NOT get merged with previous user label
|
||||||
|
:fwd
|
||||||
|
bit :fwd
|
||||||
|
lda :datend-1
|
||||||
|
lda :datend
|
||||||
|
lda :datend+1
|
||||||
|
lda :datend+2
|
||||||
|
lda :fwd-1
|
||||||
|
beq :more
|
||||||
|
|
||||||
|
dfb $ea,$ea ;EDIT: mark as inline data
|
||||||
|
|
||||||
|
org $3180
|
||||||
|
dfb $00,$01
|
||||||
|
:more bit :more
|
||||||
|
|
||||||
|
; xref edge case test: make sure adjustment shown is based on address
|
||||||
|
lda label1
|
||||||
|
lda label2 ;EDIT: set operand to sym=label1
|
||||||
|
lda label3 ;EDIT: set operand to sym=label1
|
||||||
|
bra label3
|
||||||
|
label1 nop
|
||||||
|
label2 nop
|
||||||
|
org $3200
|
||||||
|
label3 bit label3
|
||||||
|
|
||||||
|
dfb $00,$01 ;EDIT: mark as inline data to test execution off end
|
81
testdata/2009-branches-and-banks.S
vendored
Normal file
81
testdata/2009-branches-and-banks.S
vendored
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
; Copyright 2018 faddenSoft. All Rights Reserved.
|
||||||
|
; See the LICENSE.txt file for distribution terms (Apache 2.0).
|
||||||
|
;
|
||||||
|
; Assembler: cc65
|
||||||
|
;
|
||||||
|
; Both cc65 (2.17) and Merlin32 (1.0) have problems computing branches that
|
||||||
|
; wrap around a bank (e.g. from $0010 to $ffd0). cc65 is slightly less
|
||||||
|
; egregious in that a workaround is possible: if you specify a label that
|
||||||
|
; is in range, and then an offset, it will generate code.
|
||||||
|
|
||||||
|
.setcpu "65816"
|
||||||
|
|
||||||
|
symlong = $123456
|
||||||
|
|
||||||
|
|
||||||
|
.org $1000
|
||||||
|
clc
|
||||||
|
xce
|
||||||
|
sep #$30
|
||||||
|
.a8
|
||||||
|
.i8
|
||||||
|
jmp zero
|
||||||
|
|
||||||
|
.org $0000
|
||||||
|
zero: bit a:zero
|
||||||
|
low: lda zero
|
||||||
|
lda low
|
||||||
|
bne low-$40 ;reference symbol
|
||||||
|
bmi low-$40 ;EDIT: format as hex
|
||||||
|
per low-$40
|
||||||
|
bvs more
|
||||||
|
brl more1
|
||||||
|
lodat: .byte $00,$01,$02 ;EDIT: set label
|
||||||
|
more: lda more-2
|
||||||
|
brl zero-$40 ;branch to high
|
||||||
|
|
||||||
|
.org $0080
|
||||||
|
more1: bit a:more1
|
||||||
|
jml bank44
|
||||||
|
|
||||||
|
.org $ffc0
|
||||||
|
high:
|
||||||
|
bit high
|
||||||
|
brl high+$43 ;branch to low
|
||||||
|
|
||||||
|
.org $440000
|
||||||
|
bank44: cmp f:bank44
|
||||||
|
low44: lda bank44
|
||||||
|
lda a:bank44 & $ffff
|
||||||
|
lda z:bank44 & $ffff ;DP ref, should resolve to "zero"
|
||||||
|
bmi low44
|
||||||
|
per low44-$40
|
||||||
|
bne low44-$40 ;branch to high44
|
||||||
|
brl bank44-$40 ;branch to late44
|
||||||
|
|
||||||
|
dat44: ;EDIT: set label
|
||||||
|
.addr dat44 ;EDIT: format as 16-bit Address
|
||||||
|
.faraddr dat44 ;EDIT: format as 24-bit Address
|
||||||
|
|
||||||
|
.org $44ffc0
|
||||||
|
late44: cmp f:late44
|
||||||
|
high44: beq cont44 ;EDIT: set label
|
||||||
|
bmi late44+$44 ;branch to low44
|
||||||
|
brl late44+$44 ;branch to low44
|
||||||
|
|
||||||
|
cont44: jml twok
|
||||||
|
|
||||||
|
.org $2000
|
||||||
|
twok: bit twok
|
||||||
|
pea dat44 & $ffff ;EDIT: set symbol=dat44
|
||||||
|
pea dat44 >> 16 ;EDIT: set symbol=dat44
|
||||||
|
bne skip
|
||||||
|
jmp [lodat]
|
||||||
|
|
||||||
|
skip: nop
|
||||||
|
j1: jsr j2 ;EDIT: set symbol=j2 for all, confirm auto-labels vanish
|
||||||
|
j2: jsr j3 ;EDIT: set label
|
||||||
|
j3: jsr j1
|
||||||
|
|
||||||
|
jsl symlong
|
||||||
|
rts
|
8
testdata/2009-branches-and-banks.cfg
vendored
Normal file
8
testdata/2009-branches-and-banks.cfg
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
MEMORY {
|
||||||
|
MAIN: file=%O, start=%S, size=65536;
|
||||||
|
}
|
||||||
|
SEGMENTS {
|
||||||
|
CODE: load=MAIN, type=rw;
|
||||||
|
}
|
||||||
|
FEATURES {}
|
||||||
|
SYMBOLS {}
|
105
testdata/2010-target-adjustment.S
vendored
Normal file
105
testdata/2010-target-adjustment.S
vendored
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
; Copyright 2018 faddenSoft. All Rights Reserved.
|
||||||
|
; See the LICENSE.txt file for distribution terms (Apache 2.0).
|
||||||
|
;
|
||||||
|
; Assembler: Merlin 32
|
||||||
|
|
||||||
|
org $1000
|
||||||
|
|
||||||
|
load11 lda #$11 ;EDIT: set label=load11
|
||||||
|
load22 ldx #$22
|
||||||
|
load33 ldy #$33 ;EDIT: set label=load33
|
||||||
|
load44 lda #$44
|
||||||
|
predat bra skipdat ;EDIT: set label=predat
|
||||||
|
|
||||||
|
dat0 dw $0123
|
||||||
|
dat1 dw $4567 ;EDIT: set label=dat1
|
||||||
|
dat2 dw $89ab
|
||||||
|
dat3 dw $cdef
|
||||||
|
dat4 dw $0011
|
||||||
|
dat5 dw $2233
|
||||||
|
dfb $80
|
||||||
|
asc 'The quick brown fox'
|
||||||
|
dfb $80
|
||||||
|
dw skipdat ;EDIT: format these as addresses
|
||||||
|
dw skipdat-1
|
||||||
|
dw skipdat+1
|
||||||
|
fill0 ds 4 ;EDIT: set label=fill0
|
||||||
|
fill1 ds 4
|
||||||
|
fill2 ds 4
|
||||||
|
fill3 ds 4
|
||||||
|
postfill dfb $80
|
||||||
|
|
||||||
|
skipdat ;EDIT: set label=skipdat
|
||||||
|
lda dat0 ;this should get mapped to predat+2
|
||||||
|
lda postfill
|
||||||
|
|
||||||
|
asl dat1 ;these should coalesce to dat1
|
||||||
|
rol dat2
|
||||||
|
ror dat3 ;these should be auto-labeled
|
||||||
|
and dat4
|
||||||
|
ora dat5
|
||||||
|
|
||||||
|
lda fill0 ;EDIT: set all labels to fill0
|
||||||
|
sta fill1 ; and confirm that auto-labels vanish
|
||||||
|
lda fill2 ; and we get a single 16-byte .fill
|
||||||
|
sta fill3
|
||||||
|
|
||||||
|
jsr load22 ;should get auto label
|
||||||
|
lda load44 ;should get auto label
|
||||||
|
|
||||||
|
; PEA/PER may want to push addr-1; make sure that works
|
||||||
|
caddr
|
||||||
|
pea caddr-1 ;should base off caddr
|
||||||
|
per caddr-1 ;should base off caddr
|
||||||
|
lda caddr+1 ;should base off caddr
|
||||||
|
lda caddr+2 ;should base off caddr
|
||||||
|
|
||||||
|
; self-referential, self-modifying code (edge case for xrefs)
|
||||||
|
lda #$ea
|
||||||
|
srop1 sta srop1
|
||||||
|
srop2 sta srop2+1
|
||||||
|
srop3 sta srop3+2 ;EDIT: set operand to non-existent symbol
|
||||||
|
brl skipdat1
|
||||||
|
|
||||||
|
dfb $80
|
||||||
|
dat81 dfb $81 ;EDIT: set label dat81
|
||||||
|
|
||||||
|
org $2000
|
||||||
|
dat82 dfb $82
|
||||||
|
dfb $83
|
||||||
|
|
||||||
|
skipdat1
|
||||||
|
bit skipdat1
|
||||||
|
lda dat81
|
||||||
|
lda dat82 ;this should NOT use dat81
|
||||||
|
|
||||||
|
;
|
||||||
|
; Test the precise extent to which we associate a label with nearby elements.
|
||||||
|
;
|
||||||
|
bra skipmore
|
||||||
|
|
||||||
|
dfb $7c
|
||||||
|
dfb $7d
|
||||||
|
dfb $7e
|
||||||
|
dfb $7f
|
||||||
|
nearby dfb $80 ;EDIT: label this
|
||||||
|
dfb $81
|
||||||
|
dfb $82
|
||||||
|
dfb $83
|
||||||
|
dfb $84
|
||||||
|
dfb $85
|
||||||
|
dfb $86
|
||||||
|
|
||||||
|
skipmore
|
||||||
|
lda nearby-4
|
||||||
|
lda nearby-3
|
||||||
|
lda nearby-2
|
||||||
|
lda nearby-1
|
||||||
|
lda nearby
|
||||||
|
lda nearby+1
|
||||||
|
lda nearby+2
|
||||||
|
lda nearby+3
|
||||||
|
lda nearby+4
|
||||||
|
lda nearby+5
|
||||||
|
lda nearby+6
|
||||||
|
rts
|
68
testdata/2011-hinting.S
vendored
Normal file
68
testdata/2011-hinting.S
vendored
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
; Copyright 2018 faddenSoft. All Rights Reserved.
|
||||||
|
; See the LICENSE.txt file for distribution terms (Apache 2.0).
|
||||||
|
;
|
||||||
|
; Assembler: Merlin 32
|
||||||
|
|
||||||
|
; NOTE: set assembler to 6502, undocumented instructions disabled
|
||||||
|
; NOTE: add 2011-hinting.cs to extension scripts
|
||||||
|
|
||||||
|
; It may be necessary to review the analyzer output to verify certain things.
|
||||||
|
|
||||||
|
MAGIC equ $2456 ;recognized by extension script
|
||||||
|
|
||||||
|
org $1000
|
||||||
|
|
||||||
|
dfb $03 ;undocumented (SLO), will halt analyzer
|
||||||
|
dfb $02
|
||||||
|
|
||||||
|
entry bit entry ;EDIT: add code hint to first byte
|
||||||
|
bit $11a9 ;EDIT: add code hint to middle byte (a9); creates embedded instr
|
||||||
|
|
||||||
|
nop
|
||||||
|
embed dfb $2c
|
||||||
|
innerd ldx #$ff ;EDIT: add data hint to middle byte (a2); will be ignored
|
||||||
|
nop
|
||||||
|
jsr innerd ;analyzer should follow this path
|
||||||
|
|
||||||
|
nop
|
||||||
|
dfb $2c
|
||||||
|
inneri ldx #$ff ;EDIT: add inline data hint to middle byte (a2); will be ignored
|
||||||
|
nop
|
||||||
|
jsr inneri ;analyzer should follow this path
|
||||||
|
|
||||||
|
jsr MAGIC ;next 4 bytes are inline data tagged by the
|
||||||
|
magic11 lda #$11 ; extension script -- if they show up as
|
||||||
|
ldx #$22 ; LDA/LDX, the script isn't working
|
||||||
|
|
||||||
|
jsr magic11 ;analyzer should ignore this path
|
||||||
|
|
||||||
|
jsr magic33 ;analyzer will add this path, but the target will be inline
|
||||||
|
jsr MAGIC ; data before it gets to it
|
||||||
|
magic33 lda #$33
|
||||||
|
ldx #$44
|
||||||
|
|
||||||
|
; We want to call into part2 before part1 to establish that part2 is code before the
|
||||||
|
; extension script tries to change it to inline data. The code analyzer currently uses
|
||||||
|
; a stack, so we call part 1 first, which means it will be called last.
|
||||||
|
jsr part1
|
||||||
|
jsr part2
|
||||||
|
|
||||||
|
nop
|
||||||
|
|
||||||
|
lda MAGIC ;EDIT: hint as data, format as dense hex, remove hint
|
||||||
|
|
||||||
|
jsr dataolap
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
part1 jsr MAGIC
|
||||||
|
part2 lda #$55
|
||||||
|
ldx #$66
|
||||||
|
rts
|
||||||
|
|
||||||
|
; Make sure that data descriptors that overlap with code are ignored.
|
||||||
|
hex 818283 ;EDIT: format as 4-byte int, so it overlaps with dataolap
|
||||||
|
dataolap lda #$99
|
||||||
|
rts
|
||||||
|
|
83
testdata/2012-label-localizer.S
vendored
Normal file
83
testdata/2012-label-localizer.S
vendored
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
; Copyright 2018 faddenSoft. All Rights Reserved.
|
||||||
|
; See the LICENSE.txt file for distribution terms (Apache 2.0).
|
||||||
|
;
|
||||||
|
; Assembler: Merlin 32
|
||||||
|
|
||||||
|
; NOTE: select CPU=65C02
|
||||||
|
|
||||||
|
EXTSYM equ $8888 ;EDIT: give this a long label
|
||||||
|
|
||||||
|
org $1000
|
||||||
|
|
||||||
|
nop
|
||||||
|
start lda :local1
|
||||||
|
lda nextglob
|
||||||
|
lda pastglob
|
||||||
|
lda :local2
|
||||||
|
|
||||||
|
:local1 nop
|
||||||
|
:local2 nop
|
||||||
|
nextglob nop ;EDIT: mark label as global
|
||||||
|
pastglob nop
|
||||||
|
|
||||||
|
lda nlocal
|
||||||
|
nlocal lda #$11 ;EDIT: mark label as global
|
||||||
|
|
||||||
|
reach1G nop ;EDIT: mark label as global
|
||||||
|
:local lda :local ;EDIT: edit operand to symbol=reach1G
|
||||||
|
|
||||||
|
lda reach4 ;EDIT: set operand to symbol=reach2; should stay local
|
||||||
|
reach2 nop
|
||||||
|
reach3G nop ;EDIT: mark label as global
|
||||||
|
reach4 nop
|
||||||
|
lda reach2 ;EDIT: edit operand to symbol=reach4; should stay local
|
||||||
|
|
||||||
|
lda $00
|
||||||
|
beq :local ;should be local
|
||||||
|
jsr reach4 ;should be local
|
||||||
|
jsr start ;should be global
|
||||||
|
:local lda #$22
|
||||||
|
|
||||||
|
lda gtest2
|
||||||
|
gtest1 nop ;EDIT: mark label as global
|
||||||
|
lda gtest3
|
||||||
|
gtest2 nop ;...which forces this to be global
|
||||||
|
gtest3 nop ;...and then this is forced to be global
|
||||||
|
|
||||||
|
lda #$33
|
||||||
|
|
||||||
|
lda midlocal ;EDIT: reformat as hex
|
||||||
|
topglob nop ;EDIT: mark label as global
|
||||||
|
lda farlocal ;should be local label ref
|
||||||
|
midlocal nop ;auto-label here should vanish
|
||||||
|
nop
|
||||||
|
farlocal nop
|
||||||
|
|
||||||
|
lda #$44
|
||||||
|
globalnm jsr :local2 ;EDIT: mark label as global
|
||||||
|
:local1 nop
|
||||||
|
:local2 nop
|
||||||
|
:local3 nop
|
||||||
|
nglobal nop ;should get marked as global
|
||||||
|
globlat jsr nglobal ;EDIT: mark label as global
|
||||||
|
|
||||||
|
bra cont
|
||||||
|
cont nop ;EDIT: mark label as global
|
||||||
|
lda EXTSYM
|
||||||
|
|
||||||
|
; test localizer uniquification
|
||||||
|
; only relevant for 64tass, which uses a leading '_' to indicate local labels
|
||||||
|
_uname nop
|
||||||
|
X_uname11 nop
|
||||||
|
X_uname1 nop
|
||||||
|
X_uname nop
|
||||||
|
|
||||||
|
; test labels with opcode names (not really a localization thing)
|
||||||
|
; EDIT: set these names, mark as global to prevent localization
|
||||||
|
lda #$00
|
||||||
|
ANDl bne ANDl ;leave label local
|
||||||
|
JMPg bne JMPg ;make label global
|
||||||
|
jmpg bne jmpg ;lower case name
|
||||||
|
TSBg bne TSBg
|
||||||
|
XCEg bne XCEg ;should be allowed
|
||||||
|
rts
|
35
testdata/2013-notes-and-comments.S
vendored
Normal file
35
testdata/2013-notes-and-comments.S
vendored
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
; Copyright 2018 faddenSoft. All Rights Reserved.
|
||||||
|
; See the LICENSE.txt file for distribution terms (Apache 2.0).
|
||||||
|
;
|
||||||
|
; Assembler: Merlin 32
|
||||||
|
|
||||||
|
; Everything of interest is in the notes and comments. We're just
|
||||||
|
; providing some anchor points.
|
||||||
|
|
||||||
|
plataddr equ $3000 ;defined in TestSyms
|
||||||
|
|
||||||
|
org $1000
|
||||||
|
|
||||||
|
lda #$01
|
||||||
|
lda #$02
|
||||||
|
lda #$03
|
||||||
|
lda #$04
|
||||||
|
lda #$05
|
||||||
|
lda #$06
|
||||||
|
lda #$07
|
||||||
|
lda #$08
|
||||||
|
lda #$09
|
||||||
|
lda #$0a
|
||||||
|
lda #$0b
|
||||||
|
lda #$0c
|
||||||
|
lda #$0d
|
||||||
|
lda #$0e
|
||||||
|
lda #$0f
|
||||||
|
|
||||||
|
bit plataddr
|
||||||
|
rts
|
||||||
|
|
||||||
|
hex 000102030405060708090a0b0c0d0e0f
|
||||||
|
hex 000102030405060708090a0b0c0d0e0f
|
||||||
|
hex 000102030405060708090a0b0c0d0e0f
|
||||||
|
hex 000102030405060708090a0b0c0d0e0f
|
19
testdata/2014-label-dp.S
vendored
Normal file
19
testdata/2014-label-dp.S
vendored
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
; Copyright 2018 faddenSoft. All Rights Reserved.
|
||||||
|
; See the LICENSE.txt file for distribution terms (Apache 2.0).
|
||||||
|
;
|
||||||
|
; Assembler: Merlin 32
|
||||||
|
|
||||||
|
ZP equ $80 ;must NOT be "$0080"
|
||||||
|
|
||||||
|
MV0 EQU $83
|
||||||
|
MV1 EQU $84
|
||||||
|
|
||||||
|
PUT allops-common-65816.S
|
||||||
|
|
||||||
|
org $0080
|
||||||
|
bit _ZP
|
||||||
|
_ZP bit _ZP
|
||||||
|
bit _ZP
|
||||||
|
ABS bit: ABS
|
||||||
|
LONG ldal LONG
|
||||||
|
|
153
testdata/2016-char-encoding.S
vendored
Normal file
153
testdata/2016-char-encoding.S
vendored
Normal file
@ -0,0 +1,153 @@
|
|||||||
|
; Copyright 2019 faddenSoft. All Rights Reserved.
|
||||||
|
; See the LICENSE.txt file for distribution terms (Apache 2.0).
|
||||||
|
;
|
||||||
|
; Assembler: ACME (for the PETSCII/screen code support)
|
||||||
|
|
||||||
|
!cpu 65816
|
||||||
|
* = $1000
|
||||||
|
|
||||||
|
clc
|
||||||
|
xce
|
||||||
|
sep #$30
|
||||||
|
!as
|
||||||
|
!rs
|
||||||
|
|
||||||
|
; Single-byte operand
|
||||||
|
lda #'A' ;format as low ASCII
|
||||||
|
lda #'A' | $80 ;format as high ASCII
|
||||||
|
lda #'A' | $80 ;format as PETSCII
|
||||||
|
lda #'A' ;format as screen code
|
||||||
|
|
||||||
|
ldx #'a' ;format as low ASCII
|
||||||
|
ldx #'a' | $80 ;format as high ASCII
|
||||||
|
ldx #'a' - $20 ;format as PETSCII
|
||||||
|
ldx #$01 ;format as screen code
|
||||||
|
|
||||||
|
lda #$7f ;EDIT: force to low ASCII
|
||||||
|
lda #$7f ;EDIT: force to high ASCII
|
||||||
|
lda #$7f ;EDIT: force to PETSCII
|
||||||
|
lda #$7f ;EDIT: force to screen code
|
||||||
|
|
||||||
|
lda #$0d ;verify the instruction operand editor only allows C64SC
|
||||||
|
|
||||||
|
; Single letter in a 16-bit immediate
|
||||||
|
rep #$30
|
||||||
|
!al
|
||||||
|
!rl
|
||||||
|
lda #'B'
|
||||||
|
lda #'B' | $80
|
||||||
|
lda #'B' | $80
|
||||||
|
lda #'B'
|
||||||
|
|
||||||
|
sep #$30
|
||||||
|
!as
|
||||||
|
!rs
|
||||||
|
rts
|
||||||
|
|
||||||
|
; Single-byte data items
|
||||||
|
!byte 'C'
|
||||||
|
!byte 'C' | $80
|
||||||
|
!byte 'C' | $80
|
||||||
|
!byte 'C'
|
||||||
|
|
||||||
|
; Double-byte data items
|
||||||
|
!byte 'd', 0
|
||||||
|
!byte 'd' | $80, 0
|
||||||
|
!byte 'd' - $20, 0
|
||||||
|
!byte $04, 0
|
||||||
|
|
||||||
|
; Double-byte big-endian data items
|
||||||
|
!byte 0, 'E'
|
||||||
|
!byte 0, 'E' | $80
|
||||||
|
!byte 0, 'E' | $80
|
||||||
|
!byte 0, 'E'
|
||||||
|
|
||||||
|
; Start with the basics
|
||||||
|
!byte $80
|
||||||
|
!text "low ASCII str"
|
||||||
|
; !byte $80 ; let them run together to test scan / dialog behavior
|
||||||
|
!xor $80 {
|
||||||
|
!text "high ASCII str"
|
||||||
|
}
|
||||||
|
!byte $80
|
||||||
|
!pet "PETSCII str"
|
||||||
|
!byte $80
|
||||||
|
!scr "Screen Code str"
|
||||||
|
|
||||||
|
; Get a bit fancy
|
||||||
|
!byte $82
|
||||||
|
!text $07,"Low ASCII CRLF",$0d,$0a
|
||||||
|
!byte $82
|
||||||
|
!xor $80 {
|
||||||
|
!text $07,"High ASCII CRLF",$0d,$0a
|
||||||
|
}
|
||||||
|
!byte $82
|
||||||
|
!pet $93,"PETSCII with ",$96,"control",$05," codes",$0d
|
||||||
|
; no control chars in screen code
|
||||||
|
|
||||||
|
; Test the ASCII $20-7e range.
|
||||||
|
!byte $83
|
||||||
|
!text " !",$22,"#$%&'()*+,-./0123456789:;<=>?"
|
||||||
|
!text "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_"
|
||||||
|
!text "`abcdefghijklmnopqrstuvwxyz{|}~"
|
||||||
|
!byte $83
|
||||||
|
!xor $80 {
|
||||||
|
!text " !",$22,"#$%&'()*+,-./0123456789:;<=>?"
|
||||||
|
!text "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_"
|
||||||
|
!text "`abcdefghijklmnopqrstuvwxyz{|}~"
|
||||||
|
}
|
||||||
|
!byte $83
|
||||||
|
!pet " !",$22,"#$%&'()*+,-./0123456789:;<=>?"
|
||||||
|
!pet "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_"
|
||||||
|
!pet "`abcdefghijklmnopqrstuvwxyz{|}~"
|
||||||
|
!byte $83
|
||||||
|
!scr " !",$22,"#$%&'()*+,-./0123456789:;<=>?"
|
||||||
|
!scr "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_"
|
||||||
|
!scr "`abcdefghijklmnopqrstuvwxyz{|}~"
|
||||||
|
|
||||||
|
; The 2005 test exercises low/high ASCII strings, so no need to do that here.
|
||||||
|
; Do a quick test with C64 characters. Note Screen Code can't be null-terminated
|
||||||
|
; by definition.
|
||||||
|
!byte $84
|
||||||
|
!pet "IICSTEP esrever" ;format as StringReverse
|
||||||
|
!byte $84
|
||||||
|
!pet "null term PETSCII",0 ;format as StringNullTerm
|
||||||
|
!byte $84
|
||||||
|
!pet "This null-terminated string is too long to fit on a single line, and will be split.",0
|
||||||
|
!byte $84
|
||||||
|
!pet 19,"PETSCII with length" ;format as StringL8
|
||||||
|
!byte $84
|
||||||
|
!pet 20,0,"PETSCII with length2" ;format as StringL16
|
||||||
|
!byte $84
|
||||||
|
!pet "pet dcI" ;format as StringDCI
|
||||||
|
|
||||||
|
!byte $84
|
||||||
|
!scr "edoC neercS esrever" ;format as StringReverse
|
||||||
|
!byte $84
|
||||||
|
!scr 23,"Screen Code with length" ;format as StringL8
|
||||||
|
!byte $84
|
||||||
|
!scr 24,0,"Screen Code with length2" ;format as StringL16
|
||||||
|
!byte $84
|
||||||
|
!scr "Screen Code DC",$c9 ;format as StringDCI
|
||||||
|
!byte $84
|
||||||
|
|
||||||
|
!byte $85
|
||||||
|
|
||||||
|
; All bytes, from 00-ff. Handy for seeing what the auto-scanner picks up.
|
||||||
|
allbytes
|
||||||
|
!hex 000102030405060708090a0b0c0d0e0f
|
||||||
|
!hex 101112131415161718191a1b1c1d1e1f
|
||||||
|
!hex 202122232425262728292a2b2c2d2e2f
|
||||||
|
!hex 303132333435363738393a3b3c3d3e3f
|
||||||
|
!hex 404142434445464748494a4b4c4d4e4f
|
||||||
|
!hex 505152535455565758595a5b5c5d5e5f
|
||||||
|
!hex 606162636465666768696a6b6c6d6e6f
|
||||||
|
!hex 707172737475767778797a7b7c7d7e7f
|
||||||
|
!hex 808182838485868788898a8b8c8d8e8f
|
||||||
|
!hex 909192939495969798999a9b9c9d9e9f
|
||||||
|
!hex a0a1a2a3a4a5a6a7a8a9aaabacadaeaf
|
||||||
|
!hex b0b1b2b3b4b5b6b7b8b9babbbcbdbebf
|
||||||
|
!hex c0c1c2c3c4c5c6c7c8c9cacbcccdcecf
|
||||||
|
!hex d0d1d2d3d4d5d6d7d8d9dadbdcdddedf
|
||||||
|
!hex e0e1e2e3e4e5e6e7e8e9eaebecedeeef
|
||||||
|
!hex f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff
|
159
testdata/2019-local-variables.S
vendored
Normal file
159
testdata/2019-local-variables.S
vendored
Normal file
@ -0,0 +1,159 @@
|
|||||||
|
; Copyright 2019 faddenSoft. All Rights Reserved.
|
||||||
|
; See the LICENSE.txt file for distribution terms (Apache 2.0).
|
||||||
|
;
|
||||||
|
; Assembler: Merlin 32
|
||||||
|
|
||||||
|
; EDIT: add __ENABLE_LABEL_LOCALIZATION to project symbols
|
||||||
|
|
||||||
|
org $1000
|
||||||
|
|
||||||
|
; Define these as project symbols.
|
||||||
|
PROJ_ZERO equ $00
|
||||||
|
PROJ_ONE equ $01
|
||||||
|
CONST_ZERO equ $f0
|
||||||
|
CONST_ONE equ $f1
|
||||||
|
PTR_2 equ $f8 ;used to test uniqifier later on
|
||||||
|
|
||||||
|
ldy PROJ_ZERO
|
||||||
|
lda (PROJ_ONE),y
|
||||||
|
sta $03 ;undefined yet
|
||||||
|
ldx $04 ;undefined yet
|
||||||
|
lda CONST_ZERO,S ;explicitly set symbol
|
||||||
|
sta CONST_ONE,S ;leave as default (hex)
|
||||||
|
|
||||||
|
; TABLE - test redefinition of project symbol values
|
||||||
|
]VAR_ZERO equ $00 ;2b
|
||||||
|
]VAR_TWO equ $02 ;1b
|
||||||
|
]VAR_THREE equ $03 ;1b
|
||||||
|
]CONST_ZERO equ $f0 ;1b const
|
||||||
|
|
||||||
|
ldy PROJ_ZERO ;should become ]VAR_ZERO
|
||||||
|
lda (PROJ_ONE),y ;should become ]VAR_ZERO+1
|
||||||
|
sta $03 ;should become ]VAR_THREE
|
||||||
|
ldx $04 ;undefined yet
|
||||||
|
lda CONST_ZERO,S ;should become ]CONST_ZERO
|
||||||
|
sta CONST_ONE,S ;leave as default (hex)
|
||||||
|
|
||||||
|
eor $00 ;explicitly format as decimal
|
||||||
|
ora $f0,S ;explicitly format as decimal
|
||||||
|
|
||||||
|
; TABLE - test redefinition of symbol labels
|
||||||
|
]PROJ_ZERO equ $10 ;EDIT: rename to PROJ_ZERO
|
||||||
|
]DPCODE equ $80 ;EDIT: rename to DPCODE
|
||||||
|
|
||||||
|
lda $00
|
||||||
|
lda $01
|
||||||
|
lda $02
|
||||||
|
lda $03
|
||||||
|
lda $04
|
||||||
|
lda $10
|
||||||
|
lda $11
|
||||||
|
lda $80
|
||||||
|
|
||||||
|
; TABLE/CLEAR - empty table
|
||||||
|
ldx $00
|
||||||
|
ldx $01
|
||||||
|
ldx $02
|
||||||
|
|
||||||
|
; confirm that hidden tables are skipped over
|
||||||
|
dfb $2c
|
||||||
|
; TABLE (hidden)
|
||||||
|
]HIDDEN0 equ $00
|
||||||
|
]HIDDEN1 equ $01
|
||||||
|
lda #$ff
|
||||||
|
ldy $00
|
||||||
|
ldy $01
|
||||||
|
ldy $02
|
||||||
|
|
||||||
|
dfb $2c
|
||||||
|
; TABLE (not hidden)
|
||||||
|
]NH0 equ $00
|
||||||
|
]NH1 equ $01
|
||||||
|
:label lda #$fe
|
||||||
|
beq :label
|
||||||
|
ldy $00
|
||||||
|
ldy $01
|
||||||
|
ldy $02
|
||||||
|
|
||||||
|
nop
|
||||||
|
|
||||||
|
; TABLE
|
||||||
|
]PTR0 equ $10 ;2b
|
||||||
|
]CONST0 equ $10 ;4b
|
||||||
|
lda ]PTR0
|
||||||
|
ldx ]PTR0+1
|
||||||
|
ldy ]PTR0+2 ;should be hex
|
||||||
|
lda (]CONST0,S),y
|
||||||
|
sta (]CONST0+3,S),y
|
||||||
|
|
||||||
|
; test redefinition of name
|
||||||
|
|
||||||
|
; TABLE
|
||||||
|
]PTR equ $20 ;2b
|
||||||
|
ldx ]PTR
|
||||||
|
; TABLE
|
||||||
|
]PTR equ $22 ;2b
|
||||||
|
ldx ]PTR
|
||||||
|
; TABLE
|
||||||
|
]PTR equ $24 ;2b
|
||||||
|
ldx ]PTR
|
||||||
|
|
||||||
|
; define user label to try to trip up the uniqifier
|
||||||
|
PTR_1 nop
|
||||||
|
|
||||||
|
|
||||||
|
; test redefinition of value
|
||||||
|
; TABLE/CLEAR
|
||||||
|
]PTR_A equ $20 ;2b
|
||||||
|
ldy ]PTR_A ;PTR_A
|
||||||
|
]PTR_B equ $1f ;2b
|
||||||
|
ldy ]PTR_A ;PTR_B+1
|
||||||
|
]PTR_C equ $1d ;4b
|
||||||
|
ldy ]PTR_A ;PTR_C+3
|
||||||
|
]PTR_D equ $21 ;1b
|
||||||
|
ldy ]PTR_A ;should come up as hex
|
||||||
|
|
||||||
|
; TABLE
|
||||||
|
]VAL0 equ $30 ;1b
|
||||||
|
]VAL1 equ $31 ;1b
|
||||||
|
]VAL2 equ $32 ;1b
|
||||||
|
]VAL3 equ $33 ;1b
|
||||||
|
]VAL4 equ $34 ;1b
|
||||||
|
]VAL5 equ $35 ;1b
|
||||||
|
and ]VAL0
|
||||||
|
and ]VAL1
|
||||||
|
and ]VAL2
|
||||||
|
and ]VAL3
|
||||||
|
and ]VAL4
|
||||||
|
and ]VAL5
|
||||||
|
; TABLE
|
||||||
|
]VAL14 equ $31 ;4b
|
||||||
|
and ]VAL0
|
||||||
|
and ]VAL1 ;these four become ]VAL14
|
||||||
|
and ]VAL2
|
||||||
|
and ]VAL3
|
||||||
|
and ]VAL4
|
||||||
|
and ]VAL5
|
||||||
|
|
||||||
|
|
||||||
|
; TABLE - test direct page label vs. variable
|
||||||
|
]DPNOP equ $80
|
||||||
|
lda ]DPNOP
|
||||||
|
jsr DPCODE
|
||||||
|
rts
|
||||||
|
|
||||||
|
org $0080
|
||||||
|
DPCODE nop
|
||||||
|
lda DPCODE ;should be DPNOP
|
||||||
|
lda |DPCODE ;should be DPCODE
|
||||||
|
lda >DPCODE ;should be DPCODE
|
||||||
|
|
||||||
|
; Local label test. ca65 v2.18 erases cheap local label scope when it
|
||||||
|
; encounters a constant or .set.
|
||||||
|
LOCAL1 lda #$2c ;EDIT: format as ASCII
|
||||||
|
ldx $1234 ;put variable table here with one arbitrary entry
|
||||||
|
beq LOCAL1
|
||||||
|
LOCAL2 lda $2c ;EDIT: format as ASCII
|
||||||
|
ldx $5678 ;put empty variable table here
|
||||||
|
beq LOCAL2
|
||||||
|
rts
|
80
testdata/2020-cycle-counts-65816.S
vendored
Normal file
80
testdata/2020-cycle-counts-65816.S
vendored
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
; Copyright 2019 faddenSoft. All Rights Reserved.
|
||||||
|
; See the LICENSE.txt file for distribution terms (Apache 2.0).
|
||||||
|
;
|
||||||
|
; Assembler: Merlin 32
|
||||||
|
|
||||||
|
; Exercise cycle counting. We use 65816 to test the behavior with variable-
|
||||||
|
; width registers. This means we're not testing the 65C02 D-flag behavior
|
||||||
|
; or some other non-65816 quirks. If that becomes an issue we'll need to
|
||||||
|
; create additional tests.
|
||||||
|
;
|
||||||
|
; Very little editing required. Just set the initial ORG and add
|
||||||
|
; "__ENABLE_CYCLE_COUNTS" to the list of project symbols.
|
||||||
|
|
||||||
|
org $10f0
|
||||||
|
start sec
|
||||||
|
xce
|
||||||
|
mx %11
|
||||||
|
bra cont ;crosses page boundary
|
||||||
|
ds 20
|
||||||
|
|
||||||
|
cont bra near
|
||||||
|
near
|
||||||
|
|
||||||
|
lda #$00
|
||||||
|
beq next ;always (3 cycles)
|
||||||
|
brk $00
|
||||||
|
next bne next ;never (2 cycles)
|
||||||
|
lda $1234
|
||||||
|
beq maybe ;sometimes (2+ cycles)
|
||||||
|
brk $01 ;(7 cycles)
|
||||||
|
maybe lda $22,S
|
||||||
|
trb $02
|
||||||
|
asl $03,x
|
||||||
|
|
||||||
|
clc
|
||||||
|
xce
|
||||||
|
rep #$30
|
||||||
|
mx %00
|
||||||
|
|
||||||
|
lda #$11
|
||||||
|
ldy #$22
|
||||||
|
trb $04 ;should be +2 cycles
|
||||||
|
asl $05,x ;should be +2 cycles
|
||||||
|
ldx $1235
|
||||||
|
beq maybe2
|
||||||
|
brk $02 ;(8 cycles)
|
||||||
|
maybe2 lda $33,S
|
||||||
|
beq maybe3
|
||||||
|
bra start ;crosses page boundary, no + when E=0
|
||||||
|
maybe3
|
||||||
|
|
||||||
|
rep #$20
|
||||||
|
sep #$10
|
||||||
|
sta $10
|
||||||
|
stx $11
|
||||||
|
sty $12
|
||||||
|
rep #$10
|
||||||
|
sep #$20
|
||||||
|
sta $11
|
||||||
|
stx $12
|
||||||
|
sty $13
|
||||||
|
rep #$30
|
||||||
|
|
||||||
|
; On the 65816, the setting of the decimal flag should NOT have any effect.
|
||||||
|
lda $1234
|
||||||
|
adc #$66
|
||||||
|
adc $1235
|
||||||
|
sed
|
||||||
|
adc #$77
|
||||||
|
adc $1236
|
||||||
|
|
||||||
|
sec
|
||||||
|
xce
|
||||||
|
sbc #$88
|
||||||
|
sbc $1237
|
||||||
|
cld
|
||||||
|
sbc #$99
|
||||||
|
sbc $1238
|
||||||
|
rts
|
||||||
|
|
169
testdata/2021-external-symbols.S
vendored
Normal file
169
testdata/2021-external-symbols.S
vendored
Normal file
@ -0,0 +1,169 @@
|
|||||||
|
; Copyright 2019 faddenSoft. All Rights Reserved.
|
||||||
|
; See the LICENSE.txt file for distribution terms (Apache 2.0).
|
||||||
|
;
|
||||||
|
; Assembler: Merlin 32
|
||||||
|
|
||||||
|
; EDIT: the project must include the three platform symbol files.
|
||||||
|
|
||||||
|
org $1000
|
||||||
|
|
||||||
|
; make sure platform symbols don't get set for file data
|
||||||
|
; DO NOT set a user label here
|
||||||
|
Start lda Start-1 ;CodeWrap+255
|
||||||
|
ldx Start ;(auto)
|
||||||
|
ldy Start+1 ;(auto+1)
|
||||||
|
lda END ;(auto)
|
||||||
|
lda END+1 ;CodeWrap+X
|
||||||
|
lda END+8 ;CodeWrap+Y
|
||||||
|
|
||||||
|
nop
|
||||||
|
|
||||||
|
; test overlapping labels (multiple sym files)
|
||||||
|
lda $1ffe ;(no sym)
|
||||||
|
lda $1fff ;should be SameName1-1
|
||||||
|
lda $2000 ;should be SameName1
|
||||||
|
|
||||||
|
lda $200f ;(no sym)
|
||||||
|
lda $2010 ;should be SameName2-1
|
||||||
|
lda $2011 ;should be SameName2
|
||||||
|
lda $2012 ;(no sym)
|
||||||
|
|
||||||
|
lda $201f ;(no sym)
|
||||||
|
lda $2020 ;(no sym)
|
||||||
|
lda $2021 ;should be sym-1
|
||||||
|
lda $2022 ;should be SameName3
|
||||||
|
|
||||||
|
nop
|
||||||
|
|
||||||
|
; test overlapping values (multiple sym files)
|
||||||
|
lda $2100 ;should be SameValA_A
|
||||||
|
lda $2110 ;should be SameValB_A
|
||||||
|
lda $2120 ;should be SameValC_C
|
||||||
|
|
||||||
|
nop
|
||||||
|
|
||||||
|
; test overlap with project symbol
|
||||||
|
; EDIT: define project symbols ProjSym1 at $2202(4b) and ProjSim2 at $220a(1b)
|
||||||
|
lda $21fe ;(no sym)
|
||||||
|
lda $21ff ;SYM-1
|
||||||
|
lda $2200 ;ChkProj1
|
||||||
|
lda $2201 ;ChkProj1+1
|
||||||
|
lda $2202 ;ProjSym
|
||||||
|
lda $2203 ;ProjSym1+1
|
||||||
|
lda $2204 ;ProjSym1+2
|
||||||
|
lda $2205 ;ProjSym1+3
|
||||||
|
lda $2206 ;ChkProj2+2
|
||||||
|
lda $2207 ;ChkProj2+3
|
||||||
|
lda $2208 ;(no sym)
|
||||||
|
lda $2209 ;ProjSym2-1
|
||||||
|
lda $220a ;ProjSym2
|
||||||
|
lda $220b ;(no sym)
|
||||||
|
|
||||||
|
nop
|
||||||
|
|
||||||
|
; test overlapping regions, single file
|
||||||
|
lda $2ffe ;(no sym)
|
||||||
|
lda $2fff ;Over1-1
|
||||||
|
lda $3000 ;Over1
|
||||||
|
lda $3001 ;Over1+1
|
||||||
|
lda $3002 ;Over2
|
||||||
|
lda $3003 ;Over2+1
|
||||||
|
lda $3004 ;Over2+2
|
||||||
|
lda $3005 ;Over2+3
|
||||||
|
lda $3006 ;Over2a
|
||||||
|
lda $3007 ;Over3+1
|
||||||
|
lda $3008 ;Over3+2
|
||||||
|
lda $3009 ;Over3+3
|
||||||
|
lda $300a ;Over3+4
|
||||||
|
lda $300b ;Over3+5
|
||||||
|
lda $300c ;Over3+6
|
||||||
|
lda $300d ;Over1+13
|
||||||
|
lda $300e ;Over1+14
|
||||||
|
lda $300f ;Over1+15
|
||||||
|
lda $3010 ;(no sym)
|
||||||
|
|
||||||
|
nop
|
||||||
|
|
||||||
|
; test overlapping regions, multiple platform files
|
||||||
|
lda $30fe ;(no sym)
|
||||||
|
lda $30ff ;SepOver1-1
|
||||||
|
lda $3100 ;SepOver1
|
||||||
|
lda $3101 ;SepOver1+1
|
||||||
|
lda $3102 ;SepOver1+2
|
||||||
|
lda $3103 ;SepOver1+3
|
||||||
|
lda $3104 ;SepOver2+2
|
||||||
|
lda $3105 ;SepOver2+3
|
||||||
|
lda $3106 ;(no sym)
|
||||||
|
|
||||||
|
nop
|
||||||
|
|
||||||
|
; test overlap with local variable
|
||||||
|
; EDIT: create variable LocalVar at $41(2b)
|
||||||
|
ldx $3e ;(no sym)
|
||||||
|
ldx $3f ;should be OverVar-1
|
||||||
|
ldx $40 ;should be OverVar
|
||||||
|
ldx $41 ;should be LocalVar
|
||||||
|
ldx $42 ;should be LocalVar+1
|
||||||
|
ldx $43 ;should be OverVar+3
|
||||||
|
ldx $44 ;(no sym)
|
||||||
|
|
||||||
|
nop
|
||||||
|
|
||||||
|
lda $3fff ;EDIT: change to "FatConst"
|
||||||
|
lda $4000 ;(no sym)
|
||||||
|
lda $4001 ;(no sym)
|
||||||
|
|
||||||
|
; test bank wrap
|
||||||
|
lda $fff8 ;should be BankWrap+8
|
||||||
|
lda $08 ;should be BankWrap+24 or <BankWrap-232
|
||||||
|
|
||||||
|
nop
|
||||||
|
|
||||||
|
; test I/O direction
|
||||||
|
Dir equ $5000
|
||||||
|
lda Dir
|
||||||
|
lda Dir+1
|
||||||
|
ldx Dir+2
|
||||||
|
ldy Dir+3
|
||||||
|
sta Dir
|
||||||
|
sta Dir+1
|
||||||
|
stx Dir+2
|
||||||
|
sty Dir+3
|
||||||
|
|
||||||
|
nop
|
||||||
|
|
||||||
|
; test MULTI_MASK stuff
|
||||||
|
bit $c000 ;should all be AlsoMultiZero
|
||||||
|
bit $c010 ;<-- except this NonMultiOver
|
||||||
|
bit $c020
|
||||||
|
bit $c0f0
|
||||||
|
nop
|
||||||
|
bit $c001 ;should all be MultiOne
|
||||||
|
bit $c011
|
||||||
|
bit $c021
|
||||||
|
nop
|
||||||
|
bit $c002 ;should all be hex
|
||||||
|
bit $c012
|
||||||
|
bit $c022
|
||||||
|
nop
|
||||||
|
lda $c003
|
||||||
|
lda $c004 ;MultiRead
|
||||||
|
lda $c005 ;MultiRead+1
|
||||||
|
lda $c006 ;MultiRead+2
|
||||||
|
lda $c007
|
||||||
|
sta $c004
|
||||||
|
sta $c005 ;MultiWrite
|
||||||
|
sta $c006 ;MultiWrite+1
|
||||||
|
sta $c007 ;MultiWrite+2
|
||||||
|
sta $c008
|
||||||
|
nop
|
||||||
|
jsr $c005 ;MultiRead+1
|
||||||
|
nop
|
||||||
|
bit $c100 ;should all be MoreMultiZero
|
||||||
|
bit $c110 ;<-- except this AlsoMoreMultiZero
|
||||||
|
bit $c120
|
||||||
|
bit $c1f0
|
||||||
|
|
||||||
|
nop
|
||||||
|
|
||||||
|
END rts
|
111
testdata/2022-extension-scripts.S
vendored
Normal file
111
testdata/2022-extension-scripts.S
vendored
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
; Copyright 2019 faddenSoft. All Rights Reserved.
|
||||||
|
; See the LICENSE.txt file for distribution terms (Apache 2.0).
|
||||||
|
;
|
||||||
|
; Assembler: Merlin 32
|
||||||
|
|
||||||
|
; EDIT: the project must include the platform symbol file and extension script
|
||||||
|
|
||||||
|
PrintInlineL1String equ $011000
|
||||||
|
PrintInlineL2String equ $012000
|
||||||
|
PrintInlineDciString equ $013000 ;EDIT: add to project symbols
|
||||||
|
|
||||||
|
org $1000
|
||||||
|
|
||||||
|
clc
|
||||||
|
xce
|
||||||
|
sep #$30
|
||||||
|
mx %11
|
||||||
|
|
||||||
|
; check basics
|
||||||
|
jsr PrintInline8String
|
||||||
|
asc '01234567'
|
||||||
|
jsr PrintInlineRev8String
|
||||||
|
asc '76543210'
|
||||||
|
jsr PrintInlineNullString
|
||||||
|
asc 'null-term string',00
|
||||||
|
|
||||||
|
jsl PrintInlineL1String
|
||||||
|
str 'string with length/1'
|
||||||
|
jsl PrintInlineL2String
|
||||||
|
strl 'string with length/2'
|
||||||
|
jsl PrintInlineDciString
|
||||||
|
dci 'DCI string'
|
||||||
|
|
||||||
|
; check errors
|
||||||
|
jsr broken
|
||||||
|
jsr off_end
|
||||||
|
jsr too_long
|
||||||
|
|
||||||
|
; check block formatting
|
||||||
|
brk $01
|
||||||
|
dw data01
|
||||||
|
|
||||||
|
brk $02
|
||||||
|
dw data02
|
||||||
|
|
||||||
|
; Handle an edge case where the inline formatting gets thrown out.
|
||||||
|
; Two paths: BIT $A9 / BRK $85 / inline $FF/EA goes first, then
|
||||||
|
; LDA $00 / STA $FF / NOP goes. When we get to the STA we notice
|
||||||
|
; that it's marked as inline data, so we remove it from $85 $ff
|
||||||
|
; but not from $ea.
|
||||||
|
;
|
||||||
|
; If we try to walk through the file, advancing offset by the anattrib
|
||||||
|
; length, we will traverse the first path, which (with 2-byte BRKs)
|
||||||
|
; runs into the $FF, which is marked as an instruction but not an
|
||||||
|
; instruction start.
|
||||||
|
;
|
||||||
|
; Switching to 1-byte BRKs makes the $85 an inline data item rather
|
||||||
|
; than an instruction. When we come back through, we LDA $00 and
|
||||||
|
; then skip over the next 3 bytes. No conflict.
|
||||||
|
nop
|
||||||
|
jsr edge1 ;alt path, evaluated later
|
||||||
|
dfb $24 ;1: BIT dp
|
||||||
|
edge1 dfb $a9 ;2: LDA imm
|
||||||
|
brk ;1: BRK <op>
|
||||||
|
dfb $85 ;2: STA imm
|
||||||
|
dfb $ff ;1: address $eaff
|
||||||
|
nop ;2:
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
PrintInline8String rts ;EDIT: set label
|
||||||
|
PrintInlineRev8String rts ;EDIT: set label
|
||||||
|
PrintInlineNullString rts ;EDIT: set label
|
||||||
|
|
||||||
|
data01 ;EDIT: set label
|
||||||
|
dw $1122 ;should be little-endian
|
||||||
|
dw $4433 ;should be big-endian
|
||||||
|
hex 55667788 ;32-bit
|
||||||
|
hex 99887766 ;32-bit big-endian
|
||||||
|
dfb 'f' ;ASCII
|
||||||
|
dfb "F" ;high ASCII
|
||||||
|
hex 40C142C344C546C7 ;bad DCI string
|
||||||
|
hex 002001 ;24-bit addr
|
||||||
|
dw data02 ;by symbol
|
||||||
|
|
||||||
|
dfb $80
|
||||||
|
|
||||||
|
data02 ;EDIT: set label, must be "data02"
|
||||||
|
dw data03
|
||||||
|
dfb $80
|
||||||
|
|
||||||
|
data03 ;EDIT: set label
|
||||||
|
asc "AllEight"
|
||||||
|
|
||||||
|
|
||||||
|
; check address split across string
|
||||||
|
broken jsr PrintInlineNullString
|
||||||
|
asc 'broken ',01
|
||||||
|
org $1100 ;EDIT: split address
|
||||||
|
asc 'string',00
|
||||||
|
rts
|
||||||
|
|
||||||
|
too_long jsl PrintInlineL2String
|
||||||
|
dw END-*+1 ;should be 1 byte over; want it to be rejected by
|
||||||
|
rts ; function in .cs (otherwise code overlap race)
|
||||||
|
|
||||||
|
; MUST be last
|
||||||
|
off_end jsr PrintInlineNullString
|
||||||
|
nonterm asc 'end'
|
||||||
|
|
||||||
|
END equ *
|
283
testdata/allops-common-6502.S
vendored
Normal file
283
testdata/allops-common-6502.S
vendored
Normal file
@ -0,0 +1,283 @@
|
|||||||
|
; Copyright 2018 faddenSoft. All Rights Reserved.
|
||||||
|
; See the LICENSE.txt file for distribution terms (Apache 2.0).
|
||||||
|
;
|
||||||
|
; Assembler: Merlin 32
|
||||||
|
|
||||||
|
ORG $1000
|
||||||
|
|
||||||
|
JSR PostBRK
|
||||||
|
JSR PostH02
|
||||||
|
JSR PostH12
|
||||||
|
JSR PostH22
|
||||||
|
JSR PostH32
|
||||||
|
JSR PostRTI
|
||||||
|
JSR PostH42
|
||||||
|
JSR PostH52
|
||||||
|
JSR PostRTS
|
||||||
|
JSR PostH62
|
||||||
|
JSR PostJMPI
|
||||||
|
JSR PostH72
|
||||||
|
JSR PostH92
|
||||||
|
JSR PostHB2
|
||||||
|
JSR PostHD2
|
||||||
|
JSR PostHF2
|
||||||
|
NOP
|
||||||
|
NOP
|
||||||
|
NOP
|
||||||
|
BRK ZP ;$00
|
||||||
|
PostBRK ORA (ZP,X)
|
||||||
|
DFB $02
|
||||||
|
PostH02 DFB $03,ZP
|
||||||
|
DFB $04,ZP
|
||||||
|
ORA ZP
|
||||||
|
ASL ZP
|
||||||
|
DFB $07,ZP
|
||||||
|
PHP
|
||||||
|
ORA #ZP
|
||||||
|
ASL
|
||||||
|
DFB $0B,ZP
|
||||||
|
DFB $0C,#<ABS,#>ABS
|
||||||
|
ORA: ABS
|
||||||
|
ASL: ABS
|
||||||
|
DFB $0F,#<ABS,#>ABS
|
||||||
|
BPL PostBPL ;$10
|
||||||
|
PostBPL ORA (ZP),Y
|
||||||
|
DFB $12
|
||||||
|
PostH12 DFB $13,ZP
|
||||||
|
DFB $14,ZP
|
||||||
|
ORA ZP,X
|
||||||
|
ASL ZP,X
|
||||||
|
DFB $17,ZP
|
||||||
|
CLC
|
||||||
|
ORA: ABS,Y
|
||||||
|
DFB $1A
|
||||||
|
DFB $1B,#<ABS,#>ABS
|
||||||
|
DFB $1C,#<ABS,#>ABS
|
||||||
|
ORA: ABS,X
|
||||||
|
ASL: ABS,X
|
||||||
|
DFB $1F,#<ABS,#>ABS
|
||||||
|
JSR ABS ;$20
|
||||||
|
AND (ZP,X)
|
||||||
|
DFB $22
|
||||||
|
PostH22 DFB $23,ZP
|
||||||
|
BIT ZP
|
||||||
|
AND ZP
|
||||||
|
ROL ZP
|
||||||
|
DFB $27,ZP
|
||||||
|
PLP
|
||||||
|
AND #ZP
|
||||||
|
ROL
|
||||||
|
DFB $2B,ZP
|
||||||
|
BIT: ABS
|
||||||
|
AND: ABS
|
||||||
|
ROL: ABS
|
||||||
|
DFB $2F,#<ABS,#>ABS
|
||||||
|
BMI PostBMI ;$30
|
||||||
|
PostBMI AND (ZP),Y
|
||||||
|
DFB $32
|
||||||
|
PostH32 DFB $33,ZP
|
||||||
|
DFB $34,ZP
|
||||||
|
AND ZP,X
|
||||||
|
ROL ZP,X
|
||||||
|
DFB $37,ZP
|
||||||
|
SEC
|
||||||
|
AND: ABS,Y
|
||||||
|
DFB $3A
|
||||||
|
DFB $3B,#<ABS,#>ABS
|
||||||
|
BIT: ABS,X
|
||||||
|
AND: ABS,X
|
||||||
|
ROL: ABS,X
|
||||||
|
DFB $3F,#<ABS,#>ABS
|
||||||
|
RTI ;$40
|
||||||
|
PostRTI EOR (ZP,X)
|
||||||
|
DFB $42
|
||||||
|
PostH42 DFB $43,ZP
|
||||||
|
DFB $44,ZP
|
||||||
|
EOR ZP
|
||||||
|
LSR ZP
|
||||||
|
DFB $47,ZP
|
||||||
|
PHA
|
||||||
|
EOR #ZP
|
||||||
|
LSR
|
||||||
|
DFB $4B,ZP
|
||||||
|
JMP PostJMP
|
||||||
|
PostJMP EOR: ABS
|
||||||
|
LSR: ABS
|
||||||
|
DFB $4f,#<ABS,#>ABS
|
||||||
|
BVC PostBVC ;$50
|
||||||
|
PostBVC EOR (ZP),Y
|
||||||
|
DFB $52
|
||||||
|
PostH52 DFB $53,ZP
|
||||||
|
DFB $54,ZP
|
||||||
|
EOR ZP,X
|
||||||
|
LSR ZP,X
|
||||||
|
DFB $57,ZP
|
||||||
|
CLI
|
||||||
|
EOR: ABS,Y
|
||||||
|
DFB $5A
|
||||||
|
DFB $5B,#<ABS,#>ABS
|
||||||
|
DFB $5C,#<ABS,#>ABS
|
||||||
|
EOR: ABS,X
|
||||||
|
LSR: ABS,X
|
||||||
|
DFB $5F,#<ABS,#>ABS
|
||||||
|
RTS ;$60
|
||||||
|
PostRTS ADC (ZP,X)
|
||||||
|
DFB $62
|
||||||
|
PostH62 DFB $63,ZP
|
||||||
|
DFB $64,ZP
|
||||||
|
ADC ZP
|
||||||
|
ROR ZP
|
||||||
|
DFB $67,ZP
|
||||||
|
PLA
|
||||||
|
ADC #ZP
|
||||||
|
ROR
|
||||||
|
DFB $6B,ZP
|
||||||
|
JMP (ABS)
|
||||||
|
PostJMPI ADC: ABS
|
||||||
|
ROR: ABS
|
||||||
|
DFB $6F,#<ABS,#>ABS
|
||||||
|
BVS PostBVS ;$70
|
||||||
|
PostBVS ADC (ZP),Y
|
||||||
|
DFB $72
|
||||||
|
PostH72 DFB $73,ZP
|
||||||
|
DFB $74,ZP
|
||||||
|
ADC ZP,X
|
||||||
|
ROR ZP,X
|
||||||
|
DFB $77,ZP
|
||||||
|
SEI
|
||||||
|
ADC: ABS,Y
|
||||||
|
DFB $7A
|
||||||
|
DFB $7B,#<ABS,#>ABS
|
||||||
|
DFB $7C,#<ABS,#>ABS
|
||||||
|
ADC: ABS,X
|
||||||
|
ROR: ABS,X
|
||||||
|
DFB $7F,#<ABS,#>ABS
|
||||||
|
DFB $80,ZP ;$80
|
||||||
|
STA (ZP,X)
|
||||||
|
DFB $82,ZP
|
||||||
|
DFB $83,ZP
|
||||||
|
STY ZP
|
||||||
|
STA ZP
|
||||||
|
STX ZP
|
||||||
|
DFB $87,ZP
|
||||||
|
DEY
|
||||||
|
DFB $89,ZP
|
||||||
|
TXA
|
||||||
|
DFB $8B,ZP
|
||||||
|
STY: ABS
|
||||||
|
STA: ABS
|
||||||
|
STX: ABS
|
||||||
|
DFB $8F,#<ABS,#>ABS
|
||||||
|
BCC PostBCC ;$90
|
||||||
|
PostBCC STA (ZP),Y
|
||||||
|
DFB $92
|
||||||
|
PostH92 DFB $93,ZP
|
||||||
|
STY ZP,X
|
||||||
|
STA ZP,X
|
||||||
|
STX ZP,Y
|
||||||
|
DFB $97,ZP
|
||||||
|
TYA
|
||||||
|
STA: ABS,Y
|
||||||
|
TXS
|
||||||
|
DFB $9B,#<ABS,#>ABS
|
||||||
|
DFB $9C,#<ABS,#>ABS
|
||||||
|
STA: ABS,X
|
||||||
|
DFB $9E,#<ABS,#>ABS
|
||||||
|
DFB $9F,#<ABS,#>ABS
|
||||||
|
LDY #ZP ;$A0
|
||||||
|
LDA (ZP,X)
|
||||||
|
LDX #ZP
|
||||||
|
DFB $A3,ZP
|
||||||
|
LDY ZP
|
||||||
|
LDA ZP
|
||||||
|
LDX ZP
|
||||||
|
DFB $A7,ZP
|
||||||
|
TAY
|
||||||
|
LDA #ZP
|
||||||
|
TAX
|
||||||
|
DFB $AB,ZP
|
||||||
|
LDY: ABS
|
||||||
|
LDA: ABS
|
||||||
|
LDX: ABS
|
||||||
|
DFB $AF,#<ABS,#>ABS
|
||||||
|
BCS PostBCS ;$B0
|
||||||
|
PostBCS LDA (ZP),Y
|
||||||
|
DFB $B2
|
||||||
|
PostHB2 DFB $B3,ZP
|
||||||
|
LDY ZP,X
|
||||||
|
LDA ZP,X
|
||||||
|
LDX ZP,Y
|
||||||
|
DFB $B7,ZP
|
||||||
|
CLV
|
||||||
|
LDA: ABS,Y
|
||||||
|
TSX
|
||||||
|
DFB $BB,#<ABS,#>ABS
|
||||||
|
LDY: ABS,X
|
||||||
|
LDA: ABS,X
|
||||||
|
LDX: ABS,Y
|
||||||
|
DFB $BF,#<ABS,#>ABS
|
||||||
|
CPY #ZP ;$C0
|
||||||
|
CMP (ZP,X)
|
||||||
|
DFB $C2,ZP
|
||||||
|
DFB $C3,ZP
|
||||||
|
CPY ZP
|
||||||
|
CMP ZP
|
||||||
|
DEC ZP
|
||||||
|
DFB $C7,ZP
|
||||||
|
INY
|
||||||
|
CMP #ZP
|
||||||
|
DEX
|
||||||
|
DFB $CB,ZP
|
||||||
|
CPY: ABS
|
||||||
|
CMP: ABS
|
||||||
|
DEC: ABS
|
||||||
|
DFB $CF,#<ABS,#>ABS
|
||||||
|
BNE PostBNE ;$D0
|
||||||
|
PostBNE CMP (ZP),Y
|
||||||
|
DFB $D2
|
||||||
|
PostHD2 DFB $D3,ZP
|
||||||
|
DFB $D4,ZP
|
||||||
|
CMP ZP,X
|
||||||
|
DEC ZP,X
|
||||||
|
DFB $D7,ZP
|
||||||
|
CLD
|
||||||
|
CMP: ABS,Y
|
||||||
|
DFB $DA
|
||||||
|
DFB $DB,#<ABS,#>ABS
|
||||||
|
DFB $DC,#<ABS,#>ABS
|
||||||
|
L11FC CMP: ABS,X
|
||||||
|
DEC: ABS,X
|
||||||
|
DFB $DF,#<ABS,#>ABS
|
||||||
|
CPX #ZP ;$E0
|
||||||
|
SBC (ZP,X)
|
||||||
|
DFB $E2,ZP
|
||||||
|
DFB $E3,ZP
|
||||||
|
CPX ZP
|
||||||
|
SBC ZP
|
||||||
|
INC ZP
|
||||||
|
DFB $E7,ZP
|
||||||
|
INX
|
||||||
|
SBC #ZP
|
||||||
|
NOP
|
||||||
|
DFB $EB,ZP
|
||||||
|
CPX: ABS
|
||||||
|
SBC: ABS
|
||||||
|
INC: ABS
|
||||||
|
DFB $EF,#<ABS,#>ABS
|
||||||
|
BEQ PostBEQ ;$F0
|
||||||
|
PostBEQ SBC (ZP),Y
|
||||||
|
DFB $F2
|
||||||
|
PostHF2 DFB $F3,ZP
|
||||||
|
DFB $F4,ZP
|
||||||
|
SBC ZP,X
|
||||||
|
INC ZP,X
|
||||||
|
DFB $F7,ZP
|
||||||
|
SED
|
||||||
|
SBC: ABS,Y
|
||||||
|
DFB $FA
|
||||||
|
DFB $FB,#<ABS,#>ABS
|
||||||
|
DFB $FC,#<ABS,#>ABS
|
||||||
|
SBC: ABS,X
|
||||||
|
INC: ABS,X
|
||||||
|
DFB $FF,#<ABS,#>ABS
|
||||||
|
|
276
testdata/allops-common-65816.S
vendored
Normal file
276
testdata/allops-common-65816.S
vendored
Normal file
@ -0,0 +1,276 @@
|
|||||||
|
; Copyright 2018 faddenSoft. All Rights Reserved.
|
||||||
|
; See the LICENSE.txt file for distribution terms (Apache 2.0).
|
||||||
|
;
|
||||||
|
; Assembler: Merlin 32
|
||||||
|
|
||||||
|
ORG $1000
|
||||||
|
|
||||||
|
SEC
|
||||||
|
XCE
|
||||||
|
JSR L101F
|
||||||
|
JSR L10AB
|
||||||
|
JSR L10F2
|
||||||
|
JSR L1106
|
||||||
|
JSR L1109
|
||||||
|
JSR L112C
|
||||||
|
JSR L11F9
|
||||||
|
JSR L11FC
|
||||||
|
NOP
|
||||||
|
NOP
|
||||||
|
NOP
|
||||||
|
BRK ZP
|
||||||
|
L101F ORA (ZP,X)
|
||||||
|
COP ZP
|
||||||
|
ORA ZP,S
|
||||||
|
TSB ZP
|
||||||
|
ORA ZP
|
||||||
|
ASL ZP
|
||||||
|
ORA [ZP]
|
||||||
|
PHP
|
||||||
|
ORA #ZP
|
||||||
|
ASL
|
||||||
|
PHD
|
||||||
|
TSB: ABS
|
||||||
|
ORA: ABS
|
||||||
|
ASL: ABS
|
||||||
|
ORAL LONG
|
||||||
|
BPL L1041
|
||||||
|
L1041 ORA (ZP),Y
|
||||||
|
ORA (ZP)
|
||||||
|
ORA (ZP,S),Y
|
||||||
|
TRB ZP
|
||||||
|
ORA ZP,X
|
||||||
|
ASL ZP,X
|
||||||
|
ORA [ZP],Y
|
||||||
|
CLC
|
||||||
|
ORA: ABS,Y
|
||||||
|
INC
|
||||||
|
TCS
|
||||||
|
TRB: ABS
|
||||||
|
ORA: ABS,X
|
||||||
|
ASL: ABS,X
|
||||||
|
ORAL LONG,X
|
||||||
|
JSR ABS
|
||||||
|
AND (ZP,X)
|
||||||
|
JSL LONG
|
||||||
|
AND ZP,S
|
||||||
|
BIT ZP
|
||||||
|
AND ZP
|
||||||
|
ROL ZP
|
||||||
|
AND [ZP]
|
||||||
|
PLP
|
||||||
|
AND #ZP
|
||||||
|
ROL
|
||||||
|
PLD
|
||||||
|
BIT: ABS
|
||||||
|
AND: ABS
|
||||||
|
ROL: ABS
|
||||||
|
ANDL LONG
|
||||||
|
BMI L1089
|
||||||
|
L1089 AND (ZP),Y
|
||||||
|
AND (ZP)
|
||||||
|
AND (ZP,S),Y
|
||||||
|
BIT ZP,X
|
||||||
|
AND ZP,X
|
||||||
|
ROL ZP,X
|
||||||
|
AND [ZP],Y
|
||||||
|
SEC
|
||||||
|
AND: ABS,Y
|
||||||
|
DEC
|
||||||
|
TSC
|
||||||
|
BIT: ABS,X
|
||||||
|
AND: ABS,X
|
||||||
|
ROL: ABS,X
|
||||||
|
ANDL LONG,X
|
||||||
|
RTI
|
||||||
|
L10AB EOR (ZP,X)
|
||||||
|
WDM ZP
|
||||||
|
EOR ZP,S
|
||||||
|
MVP MV1,MV0
|
||||||
|
EOR ZP
|
||||||
|
LSR ZP
|
||||||
|
EOR [ZP]
|
||||||
|
PHA
|
||||||
|
EOR #ZP
|
||||||
|
LSR
|
||||||
|
PHK
|
||||||
|
JMP L10C2
|
||||||
|
L10C2 EOR: ABS
|
||||||
|
LSR: ABS
|
||||||
|
EORL LONG
|
||||||
|
BVC L10CE
|
||||||
|
L10CE EOR (ZP),Y
|
||||||
|
EOR (ZP)
|
||||||
|
EOR (ZP,S),Y
|
||||||
|
MVN MV1,MV0
|
||||||
|
EOR ZP,X
|
||||||
|
LSR ZP,X
|
||||||
|
EOR [ZP],Y
|
||||||
|
CLI
|
||||||
|
EOR: ABS,Y
|
||||||
|
PHY
|
||||||
|
TCD
|
||||||
|
JML L10E7
|
||||||
|
L10E7 EOR: ABS,X
|
||||||
|
LSR: ABS,X
|
||||||
|
EORL LONG,X
|
||||||
|
RTS
|
||||||
|
L10F2 ADC (ZP,X)
|
||||||
|
PER $0FF6 ;TODO: change
|
||||||
|
ADC ZP,S
|
||||||
|
STZ ZP
|
||||||
|
ADC ZP
|
||||||
|
ROR ZP
|
||||||
|
ADC [ZP]
|
||||||
|
PLA
|
||||||
|
ADC #ZP
|
||||||
|
ROR
|
||||||
|
RTL
|
||||||
|
L1106 JMP (ABS)
|
||||||
|
L1109 ADC: ABS
|
||||||
|
ROR: ABS
|
||||||
|
ADCL LONG
|
||||||
|
BVS L1115
|
||||||
|
L1115 ADC (ZP),Y
|
||||||
|
ADC (ZP)
|
||||||
|
ADC (ZP,S),Y
|
||||||
|
STZ ZP,X
|
||||||
|
ADC ZP,X
|
||||||
|
ROR ZP,X
|
||||||
|
ADC [ZP],Y
|
||||||
|
SEI
|
||||||
|
ADC: ABS,Y
|
||||||
|
PLY
|
||||||
|
TDC
|
||||||
|
JMP (ABS,X)
|
||||||
|
L112C ADC: ABS,X
|
||||||
|
ROR: ABS,X
|
||||||
|
ADCL LONG,X
|
||||||
|
BRA L1138
|
||||||
|
L1138 STA (ZP,X)
|
||||||
|
BRL L113D
|
||||||
|
L113D STA ZP,S
|
||||||
|
STY ZP
|
||||||
|
STA ZP
|
||||||
|
STX ZP
|
||||||
|
STA [ZP]
|
||||||
|
DEY
|
||||||
|
BIT #ZP
|
||||||
|
TXA
|
||||||
|
PHB
|
||||||
|
STY: ABS
|
||||||
|
STA: ABS
|
||||||
|
STX: ABS
|
||||||
|
STAL LONG
|
||||||
|
BCC L115B
|
||||||
|
L115B STA (ZP),Y
|
||||||
|
STA (ZP)
|
||||||
|
STA (ZP,S),Y
|
||||||
|
STY ZP,X
|
||||||
|
STA ZP,X
|
||||||
|
STX ZP,Y
|
||||||
|
STA [ZP],Y
|
||||||
|
TYA
|
||||||
|
STA: ABS,Y
|
||||||
|
TXS
|
||||||
|
TXY
|
||||||
|
STZ: ABS
|
||||||
|
STA: ABS,X
|
||||||
|
STZ: ABS,X
|
||||||
|
STAL LONG,X
|
||||||
|
LDY #ZP
|
||||||
|
LDA (ZP,X)
|
||||||
|
LDX #ZP
|
||||||
|
LDA ZP,S
|
||||||
|
LDY ZP
|
||||||
|
LDA ZP
|
||||||
|
LDX ZP
|
||||||
|
LDA [ZP]
|
||||||
|
TAY
|
||||||
|
LDA #ZP
|
||||||
|
TAX
|
||||||
|
PLB
|
||||||
|
LDY: ABS
|
||||||
|
LDA: ABS
|
||||||
|
LDX: ABS
|
||||||
|
LDAL LONG
|
||||||
|
BCS L11A0
|
||||||
|
L11A0 LDA (ZP),Y
|
||||||
|
LDA (ZP)
|
||||||
|
LDA (ZP,S),Y
|
||||||
|
LDY ZP,X
|
||||||
|
LDA ZP,X
|
||||||
|
LDX ZP,Y
|
||||||
|
LDA [ZP],Y
|
||||||
|
CLV
|
||||||
|
LDA: ABS,Y
|
||||||
|
TSX
|
||||||
|
TYX
|
||||||
|
LDY: ABS,X
|
||||||
|
LDA: ABS,X
|
||||||
|
LDX: ABS,Y
|
||||||
|
LDAL LONG,X
|
||||||
|
CPY #ZP
|
||||||
|
CMP (ZP,X)
|
||||||
|
REP #$00
|
||||||
|
CMP ZP,S
|
||||||
|
CPY ZP
|
||||||
|
CMP ZP
|
||||||
|
DEC ZP
|
||||||
|
CMP [ZP]
|
||||||
|
INY
|
||||||
|
CMP #ZP
|
||||||
|
DEX
|
||||||
|
WAI
|
||||||
|
CPY: ABS
|
||||||
|
CMP: ABS
|
||||||
|
DEC: ABS
|
||||||
|
CMPL LONG
|
||||||
|
BNE L11E5
|
||||||
|
L11E5 CMP (ZP),Y
|
||||||
|
CMP (ZP)
|
||||||
|
CMP (ZP,S),Y
|
||||||
|
PEI ZP
|
||||||
|
CMP ZP,X
|
||||||
|
DEC ZP,X
|
||||||
|
CMP [ZP],Y
|
||||||
|
CLD
|
||||||
|
CMP: ABS,Y
|
||||||
|
PHX
|
||||||
|
STP
|
||||||
|
L11F9 JML [ABS]
|
||||||
|
L11FC CMP: ABS,X
|
||||||
|
DEC: ABS,X
|
||||||
|
CMPL LONG,X
|
||||||
|
CPX #ZP
|
||||||
|
SBC (ZP,X)
|
||||||
|
SEP #$00
|
||||||
|
SBC ZP,S
|
||||||
|
CPX ZP
|
||||||
|
SBC ZP
|
||||||
|
INC ZP
|
||||||
|
SBC [ZP]
|
||||||
|
INX
|
||||||
|
SBC #ZP
|
||||||
|
NOP
|
||||||
|
XBA
|
||||||
|
CPX: ABS
|
||||||
|
SBC: ABS
|
||||||
|
INC: ABS
|
||||||
|
SBCL LONG
|
||||||
|
BEQ L122A
|
||||||
|
L122A SBC (ZP),Y
|
||||||
|
SBC (ZP)
|
||||||
|
SBC (ZP,S),Y
|
||||||
|
PEA ABS
|
||||||
|
SBC ZP,X
|
||||||
|
INC ZP,X
|
||||||
|
SBC [ZP],Y
|
||||||
|
SED
|
||||||
|
SBC: ABS,Y
|
||||||
|
PLX
|
||||||
|
XCE
|
||||||
|
JSR (ABS,X)
|
||||||
|
SBC: ABS,X
|
||||||
|
INC: ABS,X
|
||||||
|
SBCL LONG,X
|
271
testdata/allops-common-65C02.S
vendored
Normal file
271
testdata/allops-common-65C02.S
vendored
Normal file
@ -0,0 +1,271 @@
|
|||||||
|
; Copyright 2018 faddenSoft. All Rights Reserved.
|
||||||
|
; See the LICENSE.txt file for distribution terms (Apache 2.0).
|
||||||
|
;
|
||||||
|
; Assembler: Merlin 32
|
||||||
|
|
||||||
|
ORG $1000
|
||||||
|
|
||||||
|
JSR PostBRK
|
||||||
|
JSR PostRTI
|
||||||
|
JSR PostRTS
|
||||||
|
JSR PostJMPI
|
||||||
|
JSR PostJMPX
|
||||||
|
NOP
|
||||||
|
NOP
|
||||||
|
NOP
|
||||||
|
BRK ZP ;$00
|
||||||
|
PostBRK ORA (ZP,X)
|
||||||
|
DFB $02,ZP
|
||||||
|
DFB $03
|
||||||
|
TSB ZP
|
||||||
|
ORA ZP
|
||||||
|
ASL ZP
|
||||||
|
DFB $07
|
||||||
|
PHP
|
||||||
|
ORA #ZP
|
||||||
|
ASL
|
||||||
|
DFB $0B
|
||||||
|
TSB: ABS
|
||||||
|
ORA: ABS
|
||||||
|
ASL: ABS
|
||||||
|
DFB $0F
|
||||||
|
BPL PostBPL ;$10
|
||||||
|
PostBPL ORA (ZP),Y
|
||||||
|
ORA (ZP)
|
||||||
|
DFB $13
|
||||||
|
TRB ZP
|
||||||
|
ORA ZP,X
|
||||||
|
ASL ZP,X
|
||||||
|
DFB $17
|
||||||
|
CLC
|
||||||
|
ORA: ABS,Y
|
||||||
|
INC
|
||||||
|
DFB $1B
|
||||||
|
TRB: ABS
|
||||||
|
ORA: ABS,X
|
||||||
|
ASL: ABS,X
|
||||||
|
DFB $1F
|
||||||
|
JSR ABS ;$20
|
||||||
|
AND (ZP,X)
|
||||||
|
DFB $22,ZP
|
||||||
|
DFB $23
|
||||||
|
BIT ZP
|
||||||
|
AND ZP
|
||||||
|
ROL ZP
|
||||||
|
DFB $27
|
||||||
|
PLP
|
||||||
|
AND #ZP
|
||||||
|
ROL
|
||||||
|
DFB $2B
|
||||||
|
BIT: ABS
|
||||||
|
AND: ABS
|
||||||
|
ROL: ABS
|
||||||
|
DFB $2F
|
||||||
|
BMI PostBMI ;$30
|
||||||
|
PostBMI AND (ZP),Y
|
||||||
|
AND (ZP)
|
||||||
|
DFB $33
|
||||||
|
BIT ZP,X
|
||||||
|
AND ZP,X
|
||||||
|
ROL ZP,X
|
||||||
|
DFB $37
|
||||||
|
SEC
|
||||||
|
AND: ABS,Y
|
||||||
|
DEC
|
||||||
|
DFB $3B
|
||||||
|
BIT: ABS,X
|
||||||
|
AND: ABS,X
|
||||||
|
ROL: ABS,X
|
||||||
|
DFB $3F
|
||||||
|
RTI ;$40
|
||||||
|
PostRTI EOR (ZP,X)
|
||||||
|
DFB $42,ZP
|
||||||
|
DFB $43
|
||||||
|
DFB $44,ZP
|
||||||
|
EOR ZP
|
||||||
|
LSR ZP
|
||||||
|
DFB $47
|
||||||
|
PHA
|
||||||
|
EOR #ZP
|
||||||
|
LSR
|
||||||
|
DFB $4B
|
||||||
|
JMP PostJMP
|
||||||
|
PostJMP EOR: ABS
|
||||||
|
LSR: ABS
|
||||||
|
DFB $4F
|
||||||
|
BVC PostBVC ;$50
|
||||||
|
PostBVC EOR (ZP),Y
|
||||||
|
EOR (ZP)
|
||||||
|
DFB $53
|
||||||
|
DFB $54,ZP
|
||||||
|
EOR ZP,X
|
||||||
|
LSR ZP,X
|
||||||
|
DFB $57
|
||||||
|
CLI
|
||||||
|
EOR: ABS,Y
|
||||||
|
PHY
|
||||||
|
DFB $5B
|
||||||
|
DFB $5C,<ABS,>ABS
|
||||||
|
EOR: ABS,X
|
||||||
|
LSR: ABS,X
|
||||||
|
DFB $5F
|
||||||
|
RTS ;$60
|
||||||
|
PostRTS ADC (ZP,X)
|
||||||
|
DFB $62,ZP
|
||||||
|
DFB $63
|
||||||
|
STZ ZP
|
||||||
|
ADC ZP
|
||||||
|
ROR ZP
|
||||||
|
DFB $67
|
||||||
|
PLA
|
||||||
|
ADC #ZP
|
||||||
|
ROR
|
||||||
|
DFB $6B
|
||||||
|
JMP (ABS)
|
||||||
|
PostJMPI ADC: ABS
|
||||||
|
ROR: ABS
|
||||||
|
DFB $6F
|
||||||
|
BVS PostBVS ;$70
|
||||||
|
PostBVS ADC (ZP),Y
|
||||||
|
ADC (ZP)
|
||||||
|
DFB $73
|
||||||
|
STZ ZP,X
|
||||||
|
ADC ZP,X
|
||||||
|
ROR ZP,X
|
||||||
|
DFB $77
|
||||||
|
SEI
|
||||||
|
ADC: ABS,Y
|
||||||
|
PLY
|
||||||
|
DFB $7B
|
||||||
|
JMP (ABS,X)
|
||||||
|
PostJMPX ADC: ABS,X
|
||||||
|
ROR: ABS,X
|
||||||
|
DFB $7F
|
||||||
|
BRA PostBRA ;$80
|
||||||
|
PostBRA STA (ZP,X)
|
||||||
|
DFB $82,ZP
|
||||||
|
DFB $83
|
||||||
|
STY ZP
|
||||||
|
STA ZP
|
||||||
|
STX ZP
|
||||||
|
DFB $87
|
||||||
|
DEY
|
||||||
|
BIT #ZP
|
||||||
|
TXA
|
||||||
|
DFB $8B
|
||||||
|
STY: ABS
|
||||||
|
STA: ABS
|
||||||
|
STX: ABS
|
||||||
|
DFB $8F
|
||||||
|
BCC PostBCC ;$90
|
||||||
|
PostBCC STA (ZP),Y
|
||||||
|
STA (ZP)
|
||||||
|
DFB $93
|
||||||
|
STY ZP,X
|
||||||
|
STA ZP,X
|
||||||
|
STX ZP,Y
|
||||||
|
DFB $97
|
||||||
|
TYA
|
||||||
|
STA: ABS,Y
|
||||||
|
TXS
|
||||||
|
DFB $9B
|
||||||
|
STZ: ABS
|
||||||
|
STA: ABS,X
|
||||||
|
STZ: ABS,X
|
||||||
|
DFB $9F
|
||||||
|
LDY #ZP ;$A0
|
||||||
|
LDA (ZP,X)
|
||||||
|
LDX #ZP
|
||||||
|
DFB $A3
|
||||||
|
LDY ZP
|
||||||
|
LDA ZP
|
||||||
|
LDX ZP
|
||||||
|
DFB $A7
|
||||||
|
TAY
|
||||||
|
LDA #ZP
|
||||||
|
TAX
|
||||||
|
DFB $AB
|
||||||
|
LDY: ABS
|
||||||
|
LDA: ABS
|
||||||
|
LDX: ABS
|
||||||
|
DFB $AF
|
||||||
|
BCS PostBCS ;$B0
|
||||||
|
PostBCS LDA (ZP),Y
|
||||||
|
LDA (ZP)
|
||||||
|
DFB $B3
|
||||||
|
LDY ZP,X
|
||||||
|
LDA ZP,X
|
||||||
|
LDX ZP,Y
|
||||||
|
DFB $B7
|
||||||
|
CLV
|
||||||
|
LDA: ABS,Y
|
||||||
|
TSX
|
||||||
|
DFB $BB
|
||||||
|
LDY: ABS,X
|
||||||
|
LDA: ABS,X
|
||||||
|
LDX: ABS,Y
|
||||||
|
DFB $BF
|
||||||
|
CPY #ZP ;$C0
|
||||||
|
CMP (ZP,X)
|
||||||
|
DFB $C2,ZP
|
||||||
|
DFB $C3
|
||||||
|
CPY ZP
|
||||||
|
CMP ZP
|
||||||
|
DEC ZP
|
||||||
|
DFB $C7
|
||||||
|
INY
|
||||||
|
CMP #ZP
|
||||||
|
DEX
|
||||||
|
DFB $CB
|
||||||
|
CPY: ABS
|
||||||
|
CMP: ABS
|
||||||
|
DEC: ABS
|
||||||
|
DFB $CF
|
||||||
|
BNE PostBNE ;$D0
|
||||||
|
PostBNE CMP (ZP),Y
|
||||||
|
CMP (ZP)
|
||||||
|
DFB $D3
|
||||||
|
DFB $D4,ZP
|
||||||
|
CMP ZP,X
|
||||||
|
DEC ZP,X
|
||||||
|
DFB $D7
|
||||||
|
CLD
|
||||||
|
CMP: ABS,Y
|
||||||
|
PHX
|
||||||
|
DFB $DB
|
||||||
|
DFB $DC,<ABS,>ABS
|
||||||
|
CMP: ABS,X
|
||||||
|
DEC: ABS,X
|
||||||
|
DFB $DF
|
||||||
|
CPX #ZP ;$E0
|
||||||
|
SBC (ZP,X)
|
||||||
|
DFB $E2,ZP
|
||||||
|
DFB $E3
|
||||||
|
CPX ZP
|
||||||
|
SBC ZP
|
||||||
|
INC ZP
|
||||||
|
DFB $E7
|
||||||
|
INX
|
||||||
|
SBC #ZP
|
||||||
|
NOP
|
||||||
|
DFB $EB
|
||||||
|
CPX: ABS
|
||||||
|
SBC: ABS
|
||||||
|
INC: ABS
|
||||||
|
DFB $EF
|
||||||
|
BEQ PostBEQ ;$F0
|
||||||
|
PostBEQ SBC (ZP),Y
|
||||||
|
SBC (ZP)
|
||||||
|
DFB $F3
|
||||||
|
DFB $F4,ZP
|
||||||
|
SBC ZP,X
|
||||||
|
INC ZP,X
|
||||||
|
DFB $F7
|
||||||
|
SED
|
||||||
|
SBC: ABS,Y
|
||||||
|
PLX
|
||||||
|
DFB $FB
|
||||||
|
DFB $FC,<ABS,>ABS
|
||||||
|
SBC: ABS,X
|
||||||
|
INC: ABS,X
|
||||||
|
DFB $FF
|
1
testdata/qasm
vendored
Symbolic link
1
testdata/qasm
vendored
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../qasm
|
Loading…
Reference in New Issue
Block a user