Merge pull request #345 from SvOlli/release

migrated opcodes tests for assembler from testcode to test...
This commit is contained in:
Oliver Schmidt
2016-09-07 10:11:47 +02:00
committed by GitHub
23 changed files with 1612 additions and 615 deletions

View File

@@ -40,12 +40,14 @@ $(WORKDIR)/bdiff$(EXE): bdiff.c | $(WORKDIR)
dotests: mostlyclean continue
continue: $(WORKDIR)/bdiff$(EXE)
@$(MAKE) -C assembler all
@$(MAKE) -C val all
@$(MAKE) -C ref all
@$(MAKE) -C err all
@$(MAKE) -C misc all
mostlyclean:
@$(MAKE) -C assembler clean
@$(MAKE) -C val clean
@$(MAKE) -C ref clean
@$(MAKE) -C err clean

3
test/assembler/.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
*.o
*.bin
*.lst

Binary file not shown.

View File

@@ -0,0 +1,278 @@
.setcpu "4510"
brk
ora ($05,x)
cle
see
tsb $02
ora $02
asl $02
rmb0 $02
php
ora #$01
asl
tsy
tsb $1234
ora $1234
asl $1234
bbr0 $02,*+$34
bpl *+$32
ora ($06),y
ora ($07),z
lbpl *+$3133 ; bpl *+$3133
trb $02
ora $03,x
asl $03,x
rmb1 $02
clc
ora $1456,y
inc
inz
trb $1234
ora $1345,x
asl $1345,x
bbr1 $02,*+$34
jsr $1234
and ($05,x)
jsr ($2345)
jsr ($2456,x)
bit $02
and $02
rol $02
rmb2 $02
plp
and #$01
rol
tys
bit $1234
and $1234
rol $1234
bbr2 $02,*+$34
bmi *+$32
and ($06),y
and ($07),z
lbmi *+$3133 ; bmi *+$3133
bit $03,x
and $03,x
rol $03,x
rmb3 $02
sec
and $1456,y
dec
dez
bit $1345,x
and $1345,x
rol $1345,x
bbr3 $02,*+$34
rti
eor ($05,x)
neg
asr
asr $02
eor $02
lsr $02
rmb4 $02
pha
eor #$01
lsr
taz
jmp $1234
eor $1234
lsr $1234
bbr4 $02,*+$34
bvc *+$32
eor ($06),y
eor ($07),z
lbvc *+$3133 ; bvc *+$3133
asr $03,x
eor $03,x
lsr $03,x
rmb5 $02
cli
eor $1456,y
phy
tab
map
eor $1345,x
lsr $1345,x
bbr5 $02,*+$34
rts
adc ($05,x)
rtn #$09
bsr *+$3133
stz $02
adc $02
ror $02
rmb6 $02
pla
adc #$01
ror
tza
jmp ($2345)
adc $1234
ror $1234
bbr6 $02,*+$34
bvs *+$32
adc ($06),y
adc ($07),z
lbvs *+$3133 ; bvs *+$3133
stz $03,x
adc $03,x
ror $03,x
rmb7 $02
sei
adc $1456,y
ply
tba
jmp ($2456,x)
adc $1345,x
ror $1345,x
bbr7 $02,*+$34
bra *+$32
sta ($05,x)
sta ($0f,s),y
sta ($0f,sp),y
lbra *+$3133 ; bra *+$3133
sty $02
sta $02
stx $02
smb0 $02
dey
bit #$01
txa
sty $1345,x
sty $1234
sta $1234
stx $1234
bbs0 $02,*+$34
bcc *+$32
sta ($06),y
sta ($07),z
lbcc *+$3133 ; bcc *+$3133
sty $03,x
sta $03,x
stx $04,y
smb1 $02
tya
sta $1456,y
txs
stx $1456,y
stz $1234
sta $1345,x
stz $1345,x
bbs1 $02,*+$34
ldy #$01
lda ($05,x)
ldx #$01
ldz #$01
ldy $02
lda $02
ldx $02
smb2 $02
tay
lda #$01
tax
ldz $1234
ldy $1234
lda $1234
ldx $1234
bbs2 $02,*+$34
bcs *+$32
lda ($06),y
lda ($07),z
lbcs *+$3133 ; bcs *+$3133
ldy $03,x
lda $03,x
ldx $04,y
smb3 $02
clv
lda $1456,y
tsx
ldz $1345,x
ldy $1345,x
lda $1345,x
ldx $1456,y
bbs3 $02,*+$34
cpy #$01
cmp ($05,x)
cpz #$01
dew $02
cpy $02
cmp $02
dec $02
smb4 $02
iny
cmp #$01
dex
asw $1234
cpy $1234
cmp $1234
dec $1234
bbs4 $02,*+$34
bne *+$32
cmp ($06),y
cmp ($07),z
lbne *+$3133 ; bne *+$3133
cpz $02
cmp $03,x
dec $03,x
smb5 $02
cld
cmp $1456,y
phx
phz
cpz $1234
cmp $1345,x
dec $1345,x
bbs5 $02,*+$34
cpx #$01
sbc ($05,x)
lda ($0f,s),y
lda ($0f,sp),y
inw $02
cpx $02
sbc $02
inc $02
smb6 $02
inx
sbc #$01
eom
nop
row $1234
cpx $1234
sbc $1234
inc $1234
bbs6 $02,*+$34
beq *+$32
sbc ($06),y
sbc ($07),z
lbeq *+$3133 ; beq *+$3133
phd #$089a
phw #$089a
sbc $03,x
inc $03,x
smb7 $02
sed
sbc $1456,y
plx
plz
phd $1234
phw $1234
sbc $1345,x
inc $1345,x
bbs7 $02,*+$34

Binary file not shown.

View File

@@ -0,0 +1,257 @@
.setcpu "6502"
brk
ora ($12,x)
.byte $02
.byte $03
.byte $04
ora $12
asl $12
.byte $07
php
ora #$12
asl a
.byte $0B
.byte $0C
ora $3456
asl $3456
.byte $0F
bpl *+122
ora ($12),y
.byte $12
.byte $13
.byte $14
ora $12,x
asl $12,x
.byte $17
clc
ora $3456,y
.byte $1A
.byte $1B
.byte $1C
ora $3456,x
asl $3456,x
.byte $1F
jsr $3456
and ($12,x)
.byte $22
.byte $23
bit $12
and $12
rol $12
.byte $27
plp
and #$12
rol a
.byte $2B
bit $3456
and $3456
rol $3456
.byte $2F
bmi *+122
and ($12),y
.byte $32
.byte $33
.byte $34
and $12,x
rol $12,x
.byte $37
sec
and $3456,y
.byte $3A
.byte $3B
.byte $3C
and $3456,x
rol $3456,x
.byte $3F
rti
eor ($12,x)
.byte $42
.byte $43
.byte $44
eor $12
lsr $12
.byte $47
pha
eor #$12
lsr a
.byte $4B
jmp $3456
eor $3456
lsr $3456
.byte $4F
bvc *+122
eor ($12),y
.byte $52
.byte $53
.byte $54
eor $12,x
lsr $12,x
.byte $57
cli
eor $3456,y
.byte $5A
.byte $5B
.byte $5C
eor $3456,x
lsr $3456,x
.byte $5F
rts
adc ($12,x)
.byte $62
.byte $63
.byte $64
adc $12
ror $12
.byte $67
pla
adc #$12
ror a
.byte $6B
jmp ($3456)
adc $3456
ror $3456
.byte $6F
bvs *+122
adc ($12),y
.byte $72
.byte $73
.byte $74
adc $12,x
ror $12,x
.byte $77
sei
adc $3456,y
.byte $7A
.byte $7B
.byte $7C
adc $3456,x
ror $3456,x
.byte $7F
.byte $80
sta ($12,x)
.byte $82
.byte $83
sty $12
sta $12
stx $12
.byte $87
dey
.byte $89
txa
.byte $8B
sty $3456
sta $3456
stx $3456
.byte $8F
bcc *+122
sta ($12),y
.byte $92
.byte $93
sty $12,x
sta $12,x
stx $12,y
.byte $97
tya
sta $3456,y
txs
.byte $9B
.byte $9C
sta $3456,x
.byte $9E
.byte $9F
ldy #$12
lda ($12,x)
ldx #$12
.byte $A3
ldy $12
lda $12
ldx $12
.byte $A7
tay
lda #$12
tax
.byte $AB
ldy $3456
lda $3456
ldx $3456
.byte $AF
bcs *+122
lda ($12),y
.byte $B2
.byte $B3
ldy $12,x
lda $12,x
ldx $12,y
.byte $B7
clv
lda $3456,y
tsx
.byte $BB
ldy $3456,x
lda $3456,x
ldx $3456,y
.byte $BF
cpy #$12
cmp ($12,x)
.byte $C2
.byte $C3
cpy $12
cmp $12
dec $12
.byte $C7
iny
cmp #$12
dex
.byte $CB
cpy $3456
cmp $3456
dec $3456
.byte $CF
bne *+122
cmp ($12),y
.byte $D2
.byte $D3
.byte $D4
cmp $12,x
dec $12,x
.byte $D7
cld
cmp $3456,y
.byte $DA
.byte $DB
.byte $DC
cmp $3456,x
dec $3456,x
.byte $DF
cpx #$12
sbc ($12,x)
.byte $E2
.byte $E3
cpx $12
sbc $12
inc $12
.byte $E7
inx
sbc #$12
.byte $EB
cpx $3456
sbc $3456
inc $3456
.byte $EF
beq *+122
sbc ($12),y
.byte $F2
.byte $F3
.byte $F4
sbc $12,x
inc $12,x
.byte $F7
sed
sbc $3456,y
.byte $FA
.byte $FB
.byte $FC
sbc $3456,x
inc $3456,x
.byte $FF

Binary file not shown.

View File

@@ -0,0 +1,258 @@
.setcpu "6502X"
brk
ora ($12,x)
jam
slo ($12,x)
nop $12
ora $12
asl $12
slo $12
php
ora #$12
asl a
anc #$12
nop $3456
ora $3456
asl $3456
slo $3456
bpl *+122
ora ($12),y
.byte $12 ; jam
slo ($12),y
nop $12,x
ora $12,x
asl $12,x
slo $12,x
clc
ora $3456,y
.byte $1a ; nop
slo $3456,y
nop $3456,x
ora $3456,x
asl $3456,x
slo $3456,x
jsr $3456
and ($12,x)
.byte $22 ; jam
rla ($12,x)
bit $12
and $12
rol $12
rla $12
plp
and #$12
rol a
.byte $2b ; anc #$12
bit $3456
and $3456
rol $3456
rla $3456
bmi *+122
and ($12),y
.byte $32 ; jam
rla ($12),y
.byte $34,$12 ; nop $12,x
and $12,x
rol $12,x
rla $12,x
sec
and $3456,y
.byte $3a ; nop
rla $3456,y
.byte $3c,$56,$34 ; nop $3456,x
and $3456,x
rol $3456,x
rla $3456,x
rti
eor ($12,x)
.byte $42 ; jam
sre ($12,x)
.byte $44,$12 ; nop $12
eor $12
lsr $12
sre $12
pha
eor #$12
lsr a
alr #$12
jmp $3456
eor $3456
lsr $3456
sre $3456
bvc *+122
eor ($12),y
.byte $52 ; jam
sre ($12),y
.byte $54,$12 ; nop $12,x
eor $12,x
lsr $12,x
sre $12,x
cli
eor $3456,y
.byte $5a ; nop
sre $3456,y
nop $3456,x
eor $3456,x
lsr $3456,x
sre $3456,x
rts
adc ($12,x)
.byte $62 ; jam
rra ($12,x)
.byte $64,$12 ; nop $12
adc $12
ror $12
rra $12
pla
adc #$12
ror a
arr #$12
jmp ($3456)
adc $3456
ror $3456
rra $3456
bvs *+122
adc ($12),y
.byte $72 ; jam
rra ($12),y
.byte $74,$12 ; nop $12,x
adc $12,x
ror $12,x
rra $12,x
sei
adc $3456,y
.byte $7a ; nop
rra $3456,y
.byte $7c,$56,$34 ; nop $3456,x
adc $3456,x
ror $3456,x
rra $3456,x
nop #$12
sta ($12,x)
.byte $82,$12 ; nop #$12
sax ($12,x)
sty $12
sta $12
stx $12
sax $12
dey
.byte $89,$12 ; nop #$12
txa
.byte $8b,$12 ; xaa #$12
sty $3456
sta $3456
stx $3456
sax $3456
bcc *+122
sta ($12),y
.byte $92 ; jam
.byte $93,$12 ; ahx ($12),y
sty $12,x
sta $12,x
stx $12,y
sax $12,y
tya
sta $3456,y
txs
tas $3456,y
shy $3456,x
sta $3456,x
shx $3456,y
.byte $9f,$56,$34 ; ahx $3456,y
ldy #$12
lda ($12,x)
ldx #$12
lax ($12,x)
ldy $12
lda $12
ldx $12
lax $12
tay
lda #$12
tax
lax #$12
ldy $3456
lda $3456
ldx $3456
lax $3456
bcs *+122
lda ($12),y
.byte $b2 ; jam
lax ($12),y
ldy $12,x
lda $12,x
ldx $12,y
lax $12,y
clv
lda $3456,y
tsx
las $3456,y
ldy $3456,x
lda $3456,x
ldx $3456,y
lax $3456,y
cpy #$12
cmp ($12,x)
.byte $c2,$12 ; nop #$12
dcp ($12,x)
cpy $12
cmp $12
dec $12
dcp $12
iny
cmp #$12
dex
axs #$12
cpy $3456
cmp $3456
dec $3456
dcp $3456
bne *+122
cmp ($12),y
.byte $d2 ; jam
dcp ($12),y
.byte $d4,$12 ; nop $12,x
cmp $12,x
dec $12,x
dcp $12,x
cld
cmp $3456,y
.byte $da ; nop
dcp $3456,y
.byte $dc,$56,$34 ; nop $3456,x
cmp $3456,x
dec $3456,x
dcp $3456,x
cpx #$12
sbc ($12,x)
.byte $e2,$12 ; nop #$12
isc ($12,x)
cpx $12
sbc $12
inc $12
isc $12
inx
sbc #$12
nop
.byte $eb ; nop
cpx $3456
sbc $3456
inc $3456
isc $3456
beq *+122
sbc ($12),y
.byte $f2 ; jam
isc ($12),y
.byte $f4,$12 ; nop $12,x
sbc $12,x
inc $12,x
isc $12,x
sed
sbc $3456,y
.byte $fa ; nop
isc $3456,y
.byte $fc,$56,$34 ; nop $3456,x
sbc $3456,x
inc $3456,x
isc $3456,x

Binary file not shown.

View File

@@ -0,0 +1,258 @@
.setcpu "65C02"
brk
ora ($12,x)
.byte $02
.byte $03
tsb $12
ora $12
asl $12
rmb0 $12
php
ora #$12
asl a
.byte $0B
tsb $3456
ora $3456
asl $3456
bbr0 $12,*+122
bpl *+122
ora ($12),y
ora ($12)
.byte $13
trb $12
ora $12,x
asl $12,x
rmb1 $12
clc
ora $3456,y
inc a
.byte $1B
trb $3456
ora $3456,x
asl $3456,x
bbr1 $12,*+122
jsr $3456
and ($12,x)
.byte $22
.byte $23
bit $12
and $12
rol $12
rmb2 $12
plp
and #$12
rol a
.byte $2B
bit $3456
and $3456
rol $3456
bbr2 $12,*+122
bmi *+122
and ($12),y
and ($12)
.byte $33
bit $12,x
and $12,x
rol $12,x
rmb3 $12
sec
and $3456,y
dec a
.byte $3B
bit $3456,x
and $3456,x
rol $3456,x
bbr3 $12,*+122
rti
eor ($12,x)
.byte $42
.byte $43
.byte $44
eor $12
lsr $12
rmb4 $12
pha
eor #$12
lsr a
.byte $4B
jmp $3456
eor $3456
lsr $3456
bbr4 $12,*+122
bvc *+122
eor ($12),y
eor ($12)
.byte $53
.byte $54
eor $12,x
lsr $12,x
rmb5 $12
cli
eor $3456,y
phy
.byte $5B
.byte $5C
eor $3456,x
lsr $3456,x
bbr5 $12,*+122
rts
adc ($12,x)
.byte $62
.byte $63
stz $12
adc $12
ror $12
rmb6 $12
pla
adc #$12
ror a
.byte $6B
jmp ($3456)
adc $3456
ror $3456
bbr6 $12,*+122
bvs *+122
adc ($12),y
adc ($12)
.byte $73
stz $12,x
adc $12,x
ror $12,x
rmb7 $12
sei
adc $3456,y
ply
.byte $7B
jmp ($3456,x)
adc $3456,x
ror $3456,x
bbr7 $12,*+122
bra *+122
sta ($12,x)
.byte $82
.byte $83
sty $12
sta $12
stx $12
smb0 $12
dey
bit #$12
txa
.byte $8B
sty $3456
sta $3456
stx $3456
bbs0 $12,*+122
bcc *+122
sta ($12),y
sta ($12)
.byte $93
sty $12,x
sta $12,x
stx $12,y
smb1 $12
tya
sta $3456,y
txs
.byte $9B
stz $3456
sta $3456,x
stz $3456,x
bbs1 $12,*+122
ldy #$12
lda ($12,x)
ldx #$12
.byte $A3
ldy $12
lda $12
ldx $12
smb2 $12
tay
lda #$12
tax
.byte $AB
ldy $3456
lda $3456
ldx $3456
bbs2 $12,*+122
bcs *+122
lda ($12),y
lda ($12)
.byte $B3
ldy $12,x
lda $12,x
ldx $12,y
smb3 $12
clv
lda $3456,y
tsx
.byte $BB
ldy $3456,x
lda $3456,x
ldx $3456,y
bbs3 $12,*+122
cpy #$12
cmp ($12,x)
.byte $C2
.byte $C3
cpy $12
cmp $12
dec $12
smb4 $12
iny
cmp #$12
dex
.byte $CB
cpy $3456
cmp $3456
dec $3456
bbs4 $12,*+122
bne *+122
cmp ($12),y
cmp ($12)
.byte $D3
.byte $D4
cmp $12,x
dec $12,x
smb5 $12
cld
cmp $3456,y
phx
.byte $DB
.byte $DC
cmp $3456,x
dec $3456,x
bbs5 $12,*+122
cpx #$12
sbc ($12,x)
.byte $E2
.byte $E3
cpx $12
sbc $12
inc $12
smb6 $12
inx
sbc #$12
nop
.byte $EB
cpx $3456
sbc $3456
inc $3456
bbs6 $12,*+122
beq *+122
sbc ($12),y
sbc ($12)
.byte $F3
.byte $F4
sbc $12,x
inc $12,x
smb7 $12
sed
sbc $3456,y
plx
.byte $FB
.byte $FC
sbc $3456,x
inc $3456,x
bbs7 $12,*+122

Binary file not shown.

View File

@@ -0,0 +1,258 @@
.setcpu "65SC02"
brk
ora ($12,x)
.byte $02
.byte $03
tsb $12
ora $12
asl $12
.byte $07
php
ora #$12
asl a
.byte $0B
tsb $3456
ora $3456
asl $3456
.byte $0F
bpl *+122
ora ($12),y
ora ($12)
.byte $13
trb $12
ora $12,x
asl $12,x
.byte $17
clc
ora $3456,y
inc a
.byte $1B
trb $3456
ora $3456,x
asl $3456,x
.byte $1F
jsr $3456
and ($12,x)
.byte $22
.byte $23
bit $12
and $12
rol $12
.byte $27
plp
and #$12
rol a
.byte $2B
bit $3456
and $3456
rol $3456
.byte $2F
bmi *+122
and ($12),y
and ($12)
.byte $33
bit $12,x
and $12,x
rol $12,x
.byte $37
sec
and $3456,y
dec a
.byte $3B
bit $3456,x
and $3456,x
rol $3456,x
.byte $3F
rti
eor ($12,x)
.byte $42
.byte $43
.byte $44
eor $12
lsr $12
.byte $47
pha
eor #$12
lsr a
.byte $4B
jmp $3456
eor $3456
lsr $3456
.byte $4F
bvc *+122
eor ($12),y
eor ($12)
.byte $53
.byte $54
eor $12,x
lsr $12,x
.byte $57
cli
eor $3456,y
phy
.byte $5B
.byte $5C
eor $3456,x
lsr $3456,x
.byte $5F
rts
adc ($12,x)
.byte $62
.byte $63
stz $12
adc $12
ror $12
.byte $67
pla
adc #$12
ror a
.byte $6B
jmp ($3456)
adc $3456
ror $3456
.byte $6F
bvs *+122
adc ($12),y
adc ($12)
.byte $73
stz $12,x
adc $12,x
ror $12,x
.byte $77
sei
adc $3456,y
ply
.byte $7B
jmp ($3456,x)
adc $3456,x
ror $3456,x
.byte $7F
bra *+122
sta ($12,x)
.byte $82
.byte $83
sty $12
sta $12
stx $12
.byte $87
dey
bit #$12
txa
.byte $8B
sty $3456
sta $3456
stx $3456
.byte $8F
bcc *+122
sta ($12),y
sta ($12)
.byte $93
sty $12,x
sta $12,x
stx $12,y
.byte $97
tya
sta $3456,y
txs
.byte $9B
stz $3456
sta $3456,x
stz $3456,x
.byte $9F
ldy #$12
lda ($12,x)
ldx #$12
.byte $A3
ldy $12
lda $12
ldx $12
.byte $A7
tay
lda #$12
tax
.byte $AB
ldy $3456
lda $3456
ldx $3456
.byte $AF
bcs *+122
lda ($12),y
lda ($12)
.byte $B3
ldy $12,x
lda $12,x
ldx $12,y
.byte $B7
clv
lda $3456,y
tsx
.byte $BB
ldy $3456,x
lda $3456,x
ldx $3456,y
.byte $BF
cpy #$12
cmp ($12,x)
.byte $C2
.byte $C3
cpy $12
cmp $12
dec $12
.byte $C7
iny
cmp #$12
dex
.byte $CB
cpy $3456
cmp $3456
dec $3456
.byte $CF
bne *+122
cmp ($12),y
cmp ($12)
.byte $D3
.byte $D4
cmp $12,x
dec $12,x
.byte $D7
cld
cmp $3456,y
phx
.byte $DB
.byte $DC
cmp $3456,x
dec $3456,x
.byte $DF
cpx #$12
sbc ($12,x)
.byte $E2
.byte $E3
cpx $12
sbc $12
inc $12
.byte $E7
inx
sbc #$12
nop
.byte $EB
cpx $3456
sbc $3456
inc $3456
.byte $EF
beq *+122
sbc ($12),y
sbc ($12)
.byte $F3
.byte $F4
sbc $12,x
inc $12,x
.byte $F7
sed
sbc $3456,y
plx
.byte $FB
.byte $FC
sbc $3456,x
inc $3456,x
.byte $FF

30
test/assembler/Makefile Normal file
View File

@@ -0,0 +1,30 @@
# makefile for the assembler regression tests
BINDIR = ../../bin
#WORKDIR := ../../testwrk
WORKDIR := .
TARGETS = 6502 6502x 65sc02 65c02
#TARGETS += 65816
TARGETS += 4510
TARGETS += huc6280
#TARGETS += m740
all: $(addprefix $(WORKDIR)/, $(addsuffix -opcodes.bin, $(TARGETS)))
@#
.PHONY: all clean $(addprefix $(WORKDIR)/, $(addsuffix -opcodes.bin, $(TARGETS)))
clean:
rm -f *.o *.bin *.lst
define build
$$(WORKDIR)/$(1)-opcodes.bin: $(1)-opcodes.s
@$$(BINDIR)/cl65 --cpu $(1) -t none -l $$(WORKDIR)/$(1)-opcodes.lst --obj-path $$(WORKDIR) -o $$@ $$<
@diff -q $(1)-opcodes.ref $$@ || (cat $$(WORKDIR)/$(1)-opcodes.lst ; exit 1)
@echo ca65 --cpu $(1) ok
endef
$(foreach target,$(TARGETS),$(eval $(call build,$(target))))

29
test/assembler/README Normal file
View File

@@ -0,0 +1,29 @@
Assembler Testcases
===================
These testcases are inspired by the ones now removed from test/assembler.
The main purpose is to have each possible opcode generated at least once,
either by an assembly instruction or a ".byte"-placeholder. Typically
generated by disassembling a binary dump that contains data in the form
of the pattern that each opcode is stated once in order followed by easy
to recognise:
00 00 EA 00
01 00 EA 00
02 00 EA 00
[...]
fe 00 EA 00
ff 00 EA 00
The disassembly is then put in a better readable form by replacing the
leftover dummy opcode parameters with something more recognizable.
The testcases for 6502, 6502x, 65sc02, 65c02, 4510, and huc6280 have been
put together by Sven Oliver ("SvOlli") Moll, as well as a template for the
m740 instructions set.
Still to do is to find a way to implement a testcase for the 65816
processor, since it's capable of executing instructions with an 8-bit and
a 16-bit operator alike, only distinguished by one processor flag.

Binary file not shown.

View File

@@ -0,0 +1,258 @@
.setcpu "huc6280"
brk
ora ($12,x)
sxy
st0 #$12
tsb $12
ora $12
asl $12
rmb0 $12
php
ora #$12
asl a
.byte $0B
tsb $3456
ora $3456
asl $3456
bbr0 $12,*+122
bpl *+122
ora ($12),y
ora ($12)
st1 #$12
trb $12
ora $12,x
asl $12,x
rmb1 $12
clc
ora $3456,y
inc a
.byte $1B
trb $3456
ora $3456,x
asl $3456,x
bbr1 $12,*+122
jsr $3456
and ($12,x)
sax
st2 #$12
bit $12
and $12
rol $12
rmb2 $12
plp
and #$12
rol a
.byte $2B
bit $3456
and $3456
rol $3456
bbr2 $12,*+122
bmi *+122
and ($12),y
and ($12)
.byte $33
bit $12,x
and $12,x
rol $12,x
rmb3 $12
sec
and $3456,y
dec a
.byte $3B
bit $3456,x
and $3456,x
rol $3456,x
bbr3 $12,*+122
rti
eor ($12,x)
say
tma #$02
bsr *+122
eor $12
lsr $12
rmb4 $12
pha
eor #$12
lsr a
.byte $4B
jmp $3456
eor $3456
lsr $3456
bbr4 $12,*+122
bvc *+122
eor ($12),y
eor ($12)
tam #$12
csl
eor $12,x
lsr $12,x
rmb5 $12
cli
eor $3456,y
phy
.byte $5B
.byte $5C
eor $3456,x
lsr $3456,x
bbr5 $12,*+122
rts
adc ($12,x)
cla
.byte $63
stz $12
adc $12
ror $12
rmb6 $12
pla
adc #$12
ror a
.byte $6B
jmp ($3456)
adc $3456
ror $3456
bbr6 $12,*+122
bvs *+122
adc ($12),y
adc ($12)
tii $3333,$7373,$1111
stz $12,x
adc $12,x
ror $12,x
rmb7 $12
sei
adc $3456,y
ply
.byte $7B
jmp ($3456,x)
adc $3456,x
ror $3456,x
bbr7 $12,*+122
bra *+122
sta ($12,x)
clx
tst #$12,$EA
sty $12
sta $12
stx $12
smb0 $12
dey
bit #$12
txa
.byte $8B
sty $3456
sta $3456
stx $3456
bbs0 $12,*+122
bcc *+122
sta ($12),y
sta ($12)
tst #$12,$EAEA
sty $12,x
sta $12,x
stx $12,y
smb1 $12
tya
sta $3456,y
txs
.byte $9B
stz $3456
sta $3456,x
stz $3456,x
bbs1 $12,*+122
ldy #$12
lda ($12,x)
ldx #$12
tst #$12,$EA,x
ldy $12
lda $12
ldx $12
smb2 $12
tay
lda #$12
tax
.byte $AB
ldy $3456
lda $3456
ldx $3456
bbs2 $12,*+122
bcs *+122
lda ($12),y
lda ($12)
tst #$12,$EAEA,x
ldy $12,x
lda $12,x
ldx $12,y
smb3 $12
clv
lda $3456,y
tsx
.byte $BB
ldy $3456,x
lda $3456,x
ldx $3456,y
bbs3 $12,*+122
cpy #$12
cmp ($12,x)
cly
tdd $3333,$C3C3,$1111
cpy $12
cmp $12
dec $12
smb4 $12
iny
cmp #$12
dex
.byte $CB
cpy $3456
cmp $3456
dec $3456
bbs4 $12,*+122
bne *+122
cmp ($12),y
cmp ($12)
tin $3333,$D3D3,$1111
.byte $D4
cmp $12,x
dec $12,x
smb5 $12
cld
cmp $3456,y
phx
.byte $DB
.byte $DC
cmp $3456,x
dec $3456,x
bbs5 $12,*+122
cpx #$12
sbc ($12,x)
.byte $E2
tia $3333,$E3E3,$1111
cpx $12
sbc $12
inc $12
smb6 $12
inx
sbc #$12
nop
.byte $EB
cpx $3456
sbc $3456
inc $3456
bbs6 $12,*+122
beq *+122
sbc ($12),y
sbc ($12)
tai $3333,$F3F3,$1111
.byte $F4
sbc $12,x
inc $12,x
smb7 $12
sed
sbc $3456,y
plx
.byte $FB
.byte $FC
sbc $3456,x
inc $3456,x
bbs7 $12,*+122

View File

@@ -0,0 +1,260 @@
.setcpu "65C02"
; copy of 65c02, comments note changes to the m740 according to
; http://documentation.renesas.com/doc/products/mpumcu/rej09b0322_740sm.pdf
brk
ora ($12,x)
.byte $02,$00,$00 ; jsr zp,ind
.byte $03,$00,$00 ; bbs 0,a
tsb $12 ; .byte $04
ora $12
asl $12
rmb0 $12 ; bbs 0,zp
php
ora #$12
asl a
.byte $0B,$00,$00 ; seb 0,a
tsb $3456 ; .byte $0c
ora $3456
asl $3456
bbr0 $12,*+122 ; seb 0,zp
bpl *+122
ora ($12),y
ora ($12) ; clt
.byte $13,$00,$00 ; bbc 0,a
trb $12 ; .byte $14
ora $12,x
asl $12,x
rmb1 $12 ; bbc 0,zp
clc
ora $3456,y
inc a
.byte $1B,$00,$00 ; clb 0,a
trb $3456 ; .byte $1c
ora $3456,x
asl $3456,x
bbr1 $12,*+122 ; clb 0,zp
jsr $3456
and ($12,x)
.byte $22,$00,$00 ; jsr sp
.byte $23,$00,$00 ; bbs 1,a
bit $12
and $12
rol $12
rmb2 $12 ; bbs 1,zp
plp
and #$12
rol a
.byte $2B,$00,$00 ; seb 1,a
bit $3456
and $3456
rol $3456
bbr2 $12,*+122 ; seb 1,zp
bmi *+122
and ($12),y
and ($12) ; set
.byte $33,$00,$00 ; bbc 1,a
bit $12,x ; .byte $34
and $12,x
rol $12,x
rmb3 $12 ; bbc 1,zp
sec
and $3456,y
dec a
.byte $3B,$00,$00 ; clb 1,a
bit $3456,x ; ldm zp
and $3456,x
rol $3456,x
bbr3 $12,*+122 ; clb 1,zp
rti
eor ($12,x)
.byte $42,$00,$00 ; stp
.byte $43,$00,$00 ; bbs 2,a
.byte $44,$00,$00 ; com zp
eor $12
lsr $12
rmb4 $12 ; bbs 2,zp
pha
eor #$12
lsr a
.byte $4B,$00,$00 ; seb 2,a
jmp $3456
eor $3456
lsr $3456
bbr4 $12,*+122 ; seb 2,zp
bvc *+122
eor ($12),y
eor ($12) ; .byte $52
.byte $53,$00,$00 ; bbc 2,a
.byte $54,$00,$00
eor $12,x
lsr $12,x
rmb5 $12 ; bbc 2,zp
cli
eor $3456,y
phy
.byte $5B,$00,$00 ; clb 2,a
.byte $5C,$00,$00
eor $3456,x
lsr $3456,x
bbr5 $12,*+122 ; clb 2,zp
rts
adc ($12,x)
.byte $62,$00,$00 ; mul zp,x
.byte $63,$00,$00 ; bbs 3,a
stz $12 ; tst zp
adc $12
ror $12
rmb6 $12 ; bbs 3,zp
pla
adc #$12
ror a
.byte $6B,$00,$00 ; seb 3,a
jmp ($3456)
adc $3456
ror $3456
bbr6 $12,*+122 ; seb 3,zp
bvs *+122
adc ($12),y
adc ($12) ; .byte $72
.byte $73,$00,$00 ; bbc 3,a
stz $12,x ; .byte $74
adc $12,x
ror $12,x
rmb7 $12 ; bbc 3,zp
sei
adc $3456,y
ply
.byte $7B,$00,$00 ; clb 3,a
jmp ($3456,x) ; .byte $7c
adc $3456,x
ror $3456,x
bbr7 $12,*+122 ; clb 3,zp
bra *+122
sta ($12,x)
.byte $82,$00,$00 ; rrf zp
.byte $83,$00,$00 ; bbs 4,a
sty $12
sta $12
stx $12
smb0 $12 ; bbs 4,zp
dey
bit #$12
txa
.byte $8B,$00,$00 ; seb 4,a
sty $3456
sta $3456
stx $3456
bbs0 $12,*+122 ; seb 4,zp
bcc *+122
sta ($12),y
sta ($12) ; .byte $92
.byte $93,$00,$00 ; bbc 4,a
sty $12,x
sta $12,x
stx $12,y
smb1 $12 ; bbc 4,zp
tya
sta $3456,y
txs
.byte $9B,$00,$00 ; clb 4,a
stz $3456 ; .byte $9c
sta $3456,x
stz $3456,x ; .byte $9e
bbs1 $12,*+122 ; clb 4,zp
ldy #$12
lda ($12,x)
ldx #$12
.byte $A3,$00,$00 ; bbs 5,a
ldy $12
lda $12
ldx $12
smb2 $12 ; bbs 5,zp
tay
lda #$12
tax
.byte $AB,$00,$00 ; seb 5,a
ldy $3456
lda $3456
ldx $3456
bbs2 $12,*+122 ; seb 5,zp
bcs *+122
lda ($12),y
lda ($12) ; .byte $b2
.byte $B3,$00,$00 ; bbc 5,a
ldy $12,x
lda $12,x
ldx $12,y
smb3 $12 ; bbc 5,zp
clv
lda $3456,y
tsx
.byte $BB,$00,$00 ; clb 5,a
ldy $3456,x
lda $3456,x
ldx $3456,y
bbs3 $12,*+122 ; clb 5,zp
cpy #$12
cmp ($12,x)
.byte $C2,$00,$00 ; wit
.byte $C3,$00,$00 ; bbs 6,a
cpy $12
cmp $12
dec $12
smb4 $12 ; bbs 6,zp
iny
cmp #$12
dex
.byte $CB,$00,$00 ; seb 6,a
cpy $3456
cmp $3456
dec $3456
bbs4 $12,*+122 ; seb 6,zp
bne *+122
cmp ($12),y
cmp ($12) ; .byte $d2
.byte $D3,$00,$00 ; bbc 6,a
.byte $D4,$00,$00
cmp $12,x
dec $12,x
smb5 $12 ; bbc 6,zp
cld
cmp $3456,y
phx
.byte $DB,$00,$00 ; clb 6,a
.byte $DC,$00,$00
cmp $3456,x
dec $3456,x
bbs5 $12,*+122 ; clb 6,zp
cpx #$12
sbc ($12,x)
.byte $E2,$00,$00 ; div zp,x
.byte $E3,$00,$00 ; bbs 7,a
cpx $12
sbc $12
inc $12
smb6 $12 ; bbs 7,zp
inx
sbc #$12
nop
.byte $EB,$00,$00 ; seb 7,a
cpx $3456
sbc $3456
inc $3456
bbs6 $12,*+122 ; seb 7,zp
beq *+122
sbc ($12),y
sbc ($12) ; .byte $f2
.byte $F3,$00,$00 ; bbc 7,a
.byte $F4,$00,$00
sbc $12,x
inc $12,x
smb7 $12 ; bbc 7,zp
sed
sbc $3456,y
plx
.byte $FB,$00,$00 ; clb 7,a
.byte $FC,$00,$00
sbc $3456,x
inc $3456,x
bbs7 $12,*+122 ; clb 7,zp