mirror of
https://github.com/marketideas/qasm.git
synced 2026-04-21 22:16:43 +00:00
moving some test scripts around
This commit is contained in:
Vendored
+28
@@ -0,0 +1,28 @@
|
||||
lst
|
||||
xc
|
||||
xc
|
||||
org $018200
|
||||
|
||||
bank02 equ $020000
|
||||
bank03 equ $030000
|
||||
dp equ $A5
|
||||
long equ $020304
|
||||
|
||||
mx %00
|
||||
start nop
|
||||
pea ^start
|
||||
pea start
|
||||
mvn bank02,bank03
|
||||
mvp bank03,bank02
|
||||
lda dp
|
||||
lda <dp
|
||||
lda >dp
|
||||
lda ^dp
|
||||
lda |dp
|
||||
lda #long
|
||||
lda #<long
|
||||
lda #>long
|
||||
lda #^long
|
||||
lda #|long
|
||||
|
||||
lst off
|
||||
Vendored
+429
@@ -0,0 +1,429 @@
|
||||
;lst off
|
||||
*
|
||||
* main.s
|
||||
* Merlin32 Test
|
||||
*
|
||||
* Created by Lane Roathe on 8/26/19.
|
||||
* Copyright B) 2019 Ideas From the Deep. All rights reserved.
|
||||
*
|
||||
//]XCODESTART ; Keep this at the start and put your code after this
|
||||
|
||||
xc off
|
||||
xc
|
||||
xc
|
||||
mx %00
|
||||
|
||||
|
||||
*==========================================================
|
||||
* monitor addresses
|
||||
|
||||
TEXT = $FB39 ;Reset text window
|
||||
TABV = $FB5B ;Complete vtab, using contents of 'A'
|
||||
MONBELL = $FBE4 ;random bell noise!
|
||||
HOME = $FC58 ;Clear text window
|
||||
WAIT = $FCA8 ;delay routine
|
||||
CROUT = $FD8E ;Print a CR
|
||||
PRBYTE = $FDDA ;Print 'A' as a hex number
|
||||
PRHEX = $FDE3 ;as above, but bits 0-3 only
|
||||
COUT = $FDED ;Monitor char out
|
||||
MOVE = $FE2C ;memory move routine
|
||||
INVERSE = $FE80 ;Print in inverse
|
||||
NORMAL = $FE84 ;Normal print
|
||||
|
||||
* Jump Vectors
|
||||
CONNECT = $3EA ;Connect DOS
|
||||
DOSWARM = $3D0 ;exit to DOS prompt
|
||||
RSTVEC = $3F2 ;reset vector
|
||||
|
||||
TSTADDR = $1000 ;absolute address for testing
|
||||
|
||||
*==========================================================
|
||||
* Data Index DUM section test
|
||||
|
||||
DUM 0
|
||||
dum0 ds 1 ;fractional byte
|
||||
dum1 ds 1
|
||||
dumSize = *
|
||||
DEND
|
||||
;lst off
|
||||
|
||||
*==========================================================
|
||||
* zero page (all zp var names are prefixed with _)
|
||||
|
||||
DUM 0
|
||||
|
||||
_ptr ds 2
|
||||
_tmp ds 2
|
||||
|
||||
_num1 ds dumSize ;first and second operand values
|
||||
|
||||
; test ORG with DUM section
|
||||
|
||||
ORG $20
|
||||
|
||||
_LFT ds 1 ;Window edge 0..39
|
||||
|
||||
DEND
|
||||
|
||||
*==========================================================
|
||||
* Program Entry
|
||||
|
||||
;Issue #26 - This should start at the ORG in the linkscript, not at the last ORG in the DUM sections.
|
||||
START
|
||||
|
||||
; PUT current issue here, so it's the first thing assembled.
|
||||
; The rest below are unit tests to make sure future changes don't break existing code!
|
||||
|
||||
|
||||
; START OF TESTS KNOWN TO HAVE PASSED IN PREVIOUS BUILDS
|
||||
|
||||
; --- Test all instructions in all their modes, with as many variants as possible ---
|
||||
|
||||
|
||||
|
||||
|
||||
;adc (ZP,x)
|
||||
adc (0,x)
|
||||
|
||||
|
||||
adc ($80,x)
|
||||
adc (_tmp,x)
|
||||
adc (_tmp+0,x)
|
||||
adc (_tmp+$10,x)
|
||||
adc ($10+_tmp,x)
|
||||
adc (_tmp+dum0,x)
|
||||
adc (_tmp+dum1,x)
|
||||
adc (_tmp+dum1+1,x)
|
||||
adc (_tmp+dum0+dum1,x)
|
||||
|
||||
adc 0
|
||||
adc $80
|
||||
adc _tmp
|
||||
adc #0
|
||||
adc #$1111
|
||||
adc $1111
|
||||
|
||||
; --- Other tests that have proven helpful ---
|
||||
|
||||
; Tests regarding issues with math and zp,x
|
||||
sta TSTADDR+dum0
|
||||
sta TSTADDR+_num1+dum0
|
||||
sta TSTADDR+_num1+dum0,x
|
||||
|
||||
lda _num1+dum0
|
||||
adc _num1+dum1
|
||||
sbc _num1+dum1
|
||||
bit _num1+dum0
|
||||
sta _num1+dum0 ;(FIXED): can't use sta _num1+dum0
|
||||
stz _num1+dum0
|
||||
|
||||
lda _num1+dum0,x
|
||||
adc _num1+dum0,x
|
||||
sbc _num1+dum0,x
|
||||
bit _num1+dum0,x
|
||||
sta _num1+dum0,x
|
||||
stz _num1+dum0,x
|
||||
|
||||
lda _num1+dum0,y ;these assemble to abs accesses: lda $00C0,y
|
||||
adc _num1+dum0,y
|
||||
sbc _num1+dum0,y
|
||||
sta _num1+dum0,y
|
||||
|
||||
; Label & branching tests
|
||||
GetKey ldx $C000
|
||||
bpl GetKey
|
||||
]loop
|
||||
dex
|
||||
bne ]loop
|
||||
|
||||
tya
|
||||
and #1
|
||||
beq :err
|
||||
|
||||
tya
|
||||
and #1
|
||||
bne :good
|
||||
:err
|
||||
lda #0
|
||||
:good
|
||||
bne myQuit
|
||||
nop
|
||||
hex 2C ;bit
|
||||
lda #1
|
||||
myQuit
|
||||
jmp DOSWARM
|
||||
|
||||
; --- Tests used when addressing issues opened against Merlin32 ---
|
||||
|
||||
;Issue #26 (lroathe) - ORG in DUM section is ignored, but can't mess up code ORG
|
||||
|
||||
org $2000
|
||||
|
||||
lda _LFT
|
||||
ldx #_LFT
|
||||
cpx #$20
|
||||
|
||||
org ;return to ongoing address
|
||||
|
||||
lda $FF
|
||||
;Issue #16 (fadden) - Byte reference modifiers are ignored (no way to force DP)
|
||||
lda <$fff0 ;zp
|
||||
lda >$fff0 ;ABS (lo word)
|
||||
lda ^$fff0 ;ABS (hi word)
|
||||
lda |$fff0 ;ABS (long in 65816 mode)
|
||||
|
||||
lda $08
|
||||
lda $0008
|
||||
lda $FFFF-$FFF7
|
||||
lda $FFF0+24
|
||||
ldaz $FFF0+24 ; forced DP
|
||||
|
||||
|
||||
ldaz $FFFF ; forced DP
|
||||
lda: $FFFF ; forced ABS (any char but 'L', 'D', and 'Z"
|
||||
ldal $FFFF ; forced long abs (3 byte address)
|
||||
|
||||
ldaz $05
|
||||
lda: $05
|
||||
ldal $05
|
||||
|
||||
lda $45
|
||||
lda $2345
|
||||
lda $012345
|
||||
ldaz $2345
|
||||
lda: $45
|
||||
ldal $012345
|
||||
ldal $2345
|
||||
ldal $45
|
||||
lda <$2345
|
||||
lda >$2345
|
||||
lda <$012345
|
||||
lda >$012345
|
||||
lda ^$012345
|
||||
lda |$012345
|
||||
|
||||
ora $45
|
||||
ora $2345
|
||||
ora $012345
|
||||
oraz $2345
|
||||
ora: $45
|
||||
oral $012345
|
||||
oral $2345
|
||||
oral $45
|
||||
ora <$2345
|
||||
ora >$2345
|
||||
ora <$012345
|
||||
ora >$012345
|
||||
ora ^$012345
|
||||
ora |$012345
|
||||
|
||||
and $45
|
||||
and $2345
|
||||
and $012345
|
||||
andz $2345
|
||||
and: $45
|
||||
andl $012345
|
||||
andl $2345
|
||||
andl $45
|
||||
and <$2345
|
||||
and >$2345
|
||||
and <$012345
|
||||
and >$012345
|
||||
and ^$012345
|
||||
and |$012345
|
||||
|
||||
eor $45
|
||||
eor $2345
|
||||
eor $012345
|
||||
eorz $2345
|
||||
eor: $45
|
||||
eorl $012345
|
||||
eorl $2345
|
||||
eorl $45
|
||||
eor <$2345
|
||||
eor >$2345
|
||||
eor <$012345
|
||||
eor >$012345
|
||||
eor ^$012345
|
||||
eor |$012345
|
||||
|
||||
adc $45
|
||||
adc $2345
|
||||
adc $012345
|
||||
adcz $2345
|
||||
adc: $45
|
||||
adcl $012345
|
||||
adcl $2345
|
||||
adcl $45
|
||||
adc <$2345
|
||||
adc >$2345
|
||||
adc <$012345
|
||||
adc >$012345
|
||||
adc ^$012345
|
||||
adc |$012345
|
||||
|
||||
sta $45
|
||||
sta $2345
|
||||
sta $012345
|
||||
staz $2345
|
||||
sta: $45
|
||||
stal $012345
|
||||
stal $2345
|
||||
stal $45
|
||||
sta <$2345
|
||||
sta >$2345
|
||||
sta <$012345
|
||||
sta >$012345
|
||||
sta ^$012345
|
||||
sta |$012345
|
||||
|
||||
cmp $45
|
||||
cmp $2345
|
||||
cmp $012345
|
||||
cmpz $2345
|
||||
cmp: $45
|
||||
cmpl $012345
|
||||
cmpl $2345
|
||||
cmpl $45
|
||||
cmp <$2345
|
||||
cmp >$2345
|
||||
cmp <$012345
|
||||
cmp >$012345
|
||||
cmp ^$012345
|
||||
cmp |$012345
|
||||
|
||||
sbc $45
|
||||
sbc $2345
|
||||
sbc $012345
|
||||
sbcz $2345
|
||||
sbc: $45
|
||||
sbcl $012345
|
||||
sbcl $2345
|
||||
sbcl $45
|
||||
sbc <$2345
|
||||
sbc >$2345
|
||||
sbc <$012345
|
||||
sbc >$012345
|
||||
sbc ^$012345
|
||||
sbc |$012345
|
||||
|
||||
;asll $1234
|
||||
|
||||
lda <$fff0+24 ;zp
|
||||
lda >$fff0+24 ;ABS (lo word)
|
||||
lda ^$fff0+24 ;ABS (hi word)
|
||||
lda |$fff0+24 ;ABS (long in 65816 mode)
|
||||
|
||||
mx %11
|
||||
|
||||
lda #<$fff0+24 ;byte
|
||||
lda #>$fff0+24 ;page
|
||||
lda #^$fff0+24 ;bank
|
||||
|
||||
lda #<$1234 ;byte
|
||||
lda #>$1234 ;page
|
||||
lda #^$1234 ;bank
|
||||
lda #^$A51234 ;bank
|
||||
|
||||
|
||||
mx %00
|
||||
|
||||
lda #<$fff0+24 ;byte
|
||||
lda #>$fff0+24 ;page
|
||||
lda #^$fff0+24 ;bank
|
||||
|
||||
lda #<$1234 ;byte
|
||||
lda #>$1234 ;page
|
||||
lda #^$1234 ;bank
|
||||
lda #^$A51234 ;bank
|
||||
|
||||
|
||||
mx MX
|
||||
|
||||
lda $0008 ;ZP
|
||||
lda $08 ;ZP
|
||||
lda $ffff-$fff7 ;ZP
|
||||
lda $fff0+24 ;ABS (long in 65816 mode)
|
||||
|
||||
|
||||
;Issue #8 fadden) - STX zp,y fails to assemble
|
||||
org $bc
|
||||
|
||||
L00BC bit L00BC
|
||||
|
||||
org
|
||||
|
||||
stx $bc,y
|
||||
|
||||
ldx L00BC,y
|
||||
stx L00BC,y
|
||||
|
||||
* Data Storage Tests
|
||||
|
||||
hex ;no error
|
||||
hex 11,22,33,44,55,66,77,88,99
|
||||
hex 112233445566778899F
|
||||
hex 112233445I566778899FF
|
||||
|
||||
hex aabb,CC,0123456789abcdefABCDEF,ff
|
||||
|
||||
ds 36
|
||||
da $A55A
|
||||
da $A55A,$1234
|
||||
dw $A55A
|
||||
dw $A55A,$1234
|
||||
ddb $A55A
|
||||
ddb $A55A,$1234
|
||||
dfb $A55A
|
||||
dfb $A55A,$1234
|
||||
db $A55A
|
||||
db $A55A,$1234
|
||||
adr $01A55A
|
||||
adr $01A55A,$011234
|
||||
adrl $01A55A
|
||||
adrl $01A55A,$011234
|
||||
|
||||
dw >$01A55A,>$011234
|
||||
dw <$01A55A,<$011234
|
||||
dw ^$01A55A,^$011234
|
||||
dw |$01A55A,|$011234
|
||||
|
||||
db >$01A55A,>$011234
|
||||
db <$01A55A,<$011234
|
||||
db ^$01A55A,^$011234
|
||||
db |$01A55A,|$011234
|
||||
|
||||
asc 02,15,"123456"
|
||||
asc 02,15,z123456z
|
||||
asc 0215,"123456"
|
||||
asc 02,15,'123456'
|
||||
asc 02,15,!123456!
|
||||
asc 02,15,@123456@
|
||||
asc 02,15,#123456#
|
||||
asc 02,15,$123456$
|
||||
asc 02,15,%123456%
|
||||
asc 02,15,^123456^
|
||||
asc 02,15,&123456&
|
||||
asc 02,15,*123456*
|
||||
asc 02,15,(123456(
|
||||
asc 02,15,)123456)
|
||||
asc 02,15,/123456/
|
||||
asc 02,15,?123456?
|
||||
asc 02,15,>123456>
|
||||
asc 02,15,<123456<
|
||||
asc 02,15,05,"123456"
|
||||
asc 02,15,"123456"
|
||||
asc 0215"1234"1502
|
||||
|
||||
|
||||
lst
|
||||
lup_start:
|
||||
lup 0
|
||||
db 0 ; outside
|
||||
--^
|
||||
|
||||
|
||||
;lst off
|
||||
//]XCODEEND ; Keep this at the end and put your code above this
|
||||
;lst off
|
||||
|
||||
Vendored
+312
@@ -0,0 +1,312 @@
|
||||
;lst off
|
||||
xc off
|
||||
xc
|
||||
xc
|
||||
|
||||
MXX = %00
|
||||
|
||||
mx MXX
|
||||
org $4000
|
||||
|
||||
dp = $A5
|
||||
expr = $0405
|
||||
lexpr = $010203
|
||||
immed = $123456
|
||||
neg equ -16
|
||||
|
||||
]var1 = v1234
|
||||
|
||||
;lst off
|
||||
start00
|
||||
brk ;$00
|
||||
ora (dp,x)
|
||||
cop $BA
|
||||
ora $BC,S
|
||||
tsb dp
|
||||
ora dp
|
||||
asl dp
|
||||
ora [dp]
|
||||
php
|
||||
ora #immed
|
||||
asl
|
||||
phd
|
||||
tsb expr
|
||||
ora expr
|
||||
asl expr
|
||||
oral lexpr
|
||||
;end
|
||||
|
||||
start10
|
||||
bpl start10
|
||||
ora (dp),y
|
||||
ora (dp)
|
||||
ora (dp,s),y
|
||||
trb dp
|
||||
ora dp,x
|
||||
asl dp,x
|
||||
ora [dp],y
|
||||
clc
|
||||
ora expr,y
|
||||
inc
|
||||
tcs
|
||||
trb expr
|
||||
ora expr,x
|
||||
asl expr,x
|
||||
oral lexpr,x
|
||||
|
||||
start20
|
||||
jsr expr
|
||||
and (dp,x)
|
||||
jsl lexpr
|
||||
and dp,s
|
||||
bit dp
|
||||
and dp
|
||||
rol dp
|
||||
and [dp]
|
||||
plp
|
||||
and #immed
|
||||
rol
|
||||
pld
|
||||
bit expr
|
||||
and expr
|
||||
rol expr
|
||||
andl lexpr
|
||||
|
||||
start30
|
||||
bmi start30
|
||||
and (dp),y
|
||||
and (dp)
|
||||
and (dp,s),y
|
||||
bit dp,x
|
||||
and dp,x
|
||||
rol dp,x
|
||||
and [dp],y
|
||||
sec
|
||||
and expr,y
|
||||
dec
|
||||
tsc
|
||||
bit expr,x
|
||||
and expr,x
|
||||
rol expr,x
|
||||
andl lexpr,x
|
||||
|
||||
start40
|
||||
rti
|
||||
eor (dp,x)
|
||||
wdm $01
|
||||
eor dp,s
|
||||
mvp dp,dp+1
|
||||
eor dp
|
||||
lsr dp
|
||||
eor [dp]
|
||||
pha
|
||||
eor #immed
|
||||
lsr
|
||||
phk
|
||||
jmp expr
|
||||
eor expr
|
||||
lsr expr
|
||||
eorl lexpr
|
||||
|
||||
start50
|
||||
bvc start50
|
||||
eor (dp),y
|
||||
eor (dp)
|
||||
eor (dp,s),y
|
||||
mvn dp,dp+1
|
||||
eor dp,x
|
||||
lsr dp,x
|
||||
eor [dp],y
|
||||
cli
|
||||
eor expr,y
|
||||
phy
|
||||
tcd
|
||||
jml lexpr
|
||||
eor expr,x
|
||||
lsr expr,x
|
||||
eorl lexpr,x
|
||||
|
||||
start60
|
||||
rts
|
||||
adc (dp,x)
|
||||
per start60
|
||||
adc dp,s
|
||||
stz dp
|
||||
adc dp
|
||||
ror dp
|
||||
adc [dp]
|
||||
pla
|
||||
adc #immed
|
||||
ror
|
||||
rtl
|
||||
jmp (expr)
|
||||
adc expr
|
||||
ror expr
|
||||
adcl lexpr
|
||||
|
||||
start70
|
||||
bvs start70
|
||||
adc (dp),y
|
||||
adc (dp)
|
||||
adc (dp,s),y
|
||||
stz dp,x
|
||||
adc dp,x
|
||||
ror dp,x
|
||||
adc [dp],y
|
||||
sei
|
||||
adc expr,y
|
||||
ply
|
||||
tdc
|
||||
jmp (expr,x)
|
||||
adc expr,x
|
||||
ror expr,x
|
||||
adcl expr,x
|
||||
|
||||
start80
|
||||
bra start80
|
||||
sta (dp,x)
|
||||
brl start80
|
||||
sta dp,s
|
||||
sty dp
|
||||
sta dp
|
||||
stx dp
|
||||
sta [dp]
|
||||
dey
|
||||
bit #immed
|
||||
txa
|
||||
phb
|
||||
sty expr
|
||||
sta expr
|
||||
stx expr
|
||||
stal lexpr
|
||||
|
||||
start90
|
||||
bcc start90
|
||||
sta (dp),y
|
||||
sta (dp)
|
||||
sta (dp,s),y
|
||||
sty dp,x
|
||||
sta dp,x
|
||||
stx dp,y
|
||||
sta [dp],y
|
||||
tya
|
||||
sta expr,y
|
||||
txs
|
||||
txy
|
||||
stz expr
|
||||
sta expr,x
|
||||
stz expr,x
|
||||
stal lexpr,x
|
||||
|
||||
startA0
|
||||
ldy #immed
|
||||
lda (dp,x)
|
||||
ldx #immed
|
||||
lda dp,s
|
||||
ldy dp
|
||||
lda dp
|
||||
ldx dp
|
||||
lda [dp]
|
||||
tay
|
||||
lda #immed
|
||||
tax
|
||||
plb
|
||||
ldy expr
|
||||
lda expr
|
||||
ldx expr
|
||||
ldal lexpr
|
||||
|
||||
startB0
|
||||
bcs startB0
|
||||
lda (dp),y
|
||||
lda (dp)
|
||||
lda (dp,s),y
|
||||
ldy dp,x
|
||||
lda dp,x
|
||||
ldx dp,y
|
||||
lda [dp],y
|
||||
clv
|
||||
lda expr,y
|
||||
tsx
|
||||
tyx
|
||||
ldy expr,x
|
||||
lda expr,x
|
||||
ldx expr,y
|
||||
ldal lexpr,x
|
||||
|
||||
startC0
|
||||
cpy #immed
|
||||
cmp (dp,x)
|
||||
rep #$FF
|
||||
mx MXX
|
||||
cmp dp,s
|
||||
cpy dp
|
||||
cmp dp
|
||||
dec dp
|
||||
cmp [dp]
|
||||
iny
|
||||
cmp #immed
|
||||
dex
|
||||
wai
|
||||
cpy expr
|
||||
cmp expr
|
||||
dec expr
|
||||
cmpl lexpr
|
||||
|
||||
startD0
|
||||
bne startD0
|
||||
cmp (dp),y
|
||||
cmp (dp)
|
||||
cmp (dp,s),y
|
||||
pei dp
|
||||
cmp dp,x
|
||||
dec dp,x
|
||||
cmp [dp],y
|
||||
cld
|
||||
cmp expr,y
|
||||
phx
|
||||
stp
|
||||
jml [lexpr]
|
||||
cmp expr,x
|
||||
dec expr,x
|
||||
cmpl lexpr,x
|
||||
|
||||
startE0
|
||||
cpx #immed
|
||||
sbc (dp,x)
|
||||
sep #$FF
|
||||
mx MXX
|
||||
sbc dp,s
|
||||
cpx dp
|
||||
sbc dp
|
||||
inc dp
|
||||
sbc [dp]
|
||||
inx
|
||||
sbc #immed
|
||||
nop
|
||||
xba
|
||||
cpx expr
|
||||
sbc expr
|
||||
inc expr
|
||||
sbcl lexpr
|
||||
|
||||
startF0
|
||||
beq startF0
|
||||
sbc (dp),y
|
||||
sbc (dp)
|
||||
sbc (dp,s),y
|
||||
pea startF0
|
||||
sbc dp,x
|
||||
inc dp,x
|
||||
sbc [dp],y
|
||||
sed
|
||||
sbc expr,y
|
||||
plx
|
||||
xce
|
||||
jsr (expr,x)
|
||||
sbc expr,x
|
||||
inc expr,x
|
||||
sbcl lexpr,x
|
||||
lst off
|
||||
sav ./test.bin
|
||||
|
||||
Vendored
+25
@@ -0,0 +1,25 @@
|
||||
lst
|
||||
xc
|
||||
xc
|
||||
|
||||
mx %00
|
||||
org $4000
|
||||
|
||||
getkey = $FF00
|
||||
|
||||
]myvar = getkey
|
||||
|
||||
start nop
|
||||
ldy #$00
|
||||
]loop sta $800,y
|
||||
dey
|
||||
;dw ]loop;]loop2
|
||||
;bne ]myvar;
|
||||
|
||||
bcs ]loop
|
||||
bpl ]loop
|
||||
rts
|
||||
|
||||
;use var
|
||||
lst on
|
||||
|
||||
Reference in New Issue
Block a user