moving some test scripts around

This commit is contained in:
marketideas
2019-11-20 10:20:43 -08:00
parent 630ea66623
commit eba951f00f
7 changed files with 38 additions and 5 deletions
+28
View File
@@ -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
+429
View File
@@ -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
+312
View File
@@ -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
+25
View File
@@ -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