Instructions

6502 CPU Failed Tests

Instruction

ApplePy

Arbne

JSnes

Py3NES

Py65

Pyntendo

6502js

adc immediate with bcd

NOT

NOT

NOT

NOT

OK

OK

OK

bcc

OK

NOT

OK

OK

OK

OK

OK

beq

OK

OK

NOT

OK

OK

OK

OK

bne

OK

OK

NOT

OK

OK

OK

OK

brk

NOT

NOT

NOT

NOT

OK

OK

OK

irq interrupt

NOT

NOT

NOT

NOT

NOT

NOT

NOT

jsr

NOT

NOT

NOT

OK

NOT

OK

NOT

jsr stack pointer

NOT

OK

NOT

OK

NOT

OK

NOT

jsr with illegal opcode

NOT

OK

OK

NOT

OK

NOT

NOT

nmi interrupt

NOT

NOT

NOT

NOT

NOT

NOT

NOT

php

OK

OK

NOT

OK

OK

OK

OK

pla

OK

OK

OK

OK

OK

OK

NOT

pla n flag set

OK

OK

OK

OK

OK

OK

NOT

pla z flag set

OK

OK

OK

OK

OK

OK

NOT

plp

NOT

NOT

NOT

NOT

NOT

NOT

NOT

rst interrupt

NOT

NOT

NOT

NOT

NOT

NOT

NOT

rti

OK

OK

NOT

OK

OK

OK

NOT

rts

OK

OK

NOT

OK

OK

OK

NOT

sbc immediate with bcd

NOT

OK

OK

OK

OK

OK

OK

tsx

OK

OK

NOT

OK

OK

OK

OK

txs

OK

OK

NOT

OK

OK

OK

OK

6502 CPU All Tests

Instruction

ApplePy

Arbne

JSnes

Py3NES

Py65

Pyntendo

6502js

adc absolute

OK

OK

OK

OK

OK

OK

OK

adc absolute x

OK

OK

OK

OK

OK

OK

OK

adc absolute y

OK

OK

OK

OK

OK

OK

OK

adc c flag set

OK

OK

OK

OK

OK

OK

OK

adc c flag unset

OK

OK

OK

OK

OK

OK

OK

adc immediate

OK

OK

OK

OK

OK

OK

OK

adc immediate with bcd

NOT

NOT

NOT

NOT

OK

OK

OK

adc indirect x

OK

OK

OK

OK

OK

OK

OK

adc indirect y

OK

OK

OK

OK

OK

OK

OK

adc n flag set

OK

OK

OK

OK

OK

OK

OK

adc n flag unset

OK

OK

OK

OK

OK

OK

OK

adc v flag set

OK

OK

OK

OK

OK

OK

OK

adc v flag unset

OK

OK

OK

OK

OK

OK

OK

adc z flag set

OK

OK

OK

OK

OK

OK

OK

adc z flag unset

OK

OK

OK

OK

OK

OK

OK

adc zeropage

OK

OK

OK

OK

OK

OK

OK

adc zeropage x

OK

OK

OK

OK

OK

OK

OK

and absolute

OK

OK

OK

OK

OK

OK

OK

and absolute x

OK

OK

OK

OK

OK

OK

OK

and absolute y

OK

OK

OK

OK

OK

OK

OK

and immediate

OK

OK

OK

OK

OK

OK

OK

and indirect x

OK

OK

OK

OK

OK

OK

OK

and indirect y

OK

OK

OK

OK

OK

OK

OK

and n flag set

OK

OK

OK

OK

OK

OK

OK

and n flag unset

OK

OK

OK

OK

OK

OK

OK

and z flag set

OK

OK

OK

OK

OK

OK

OK

and z flag unset

OK

OK

OK

OK

OK

OK

OK

and zeropage

OK

OK

OK

OK

OK

OK

OK

and zeropage x

OK

OK

OK

OK

OK

OK

OK

asl absolute

OK

OK

OK

OK

OK

OK

OK

asl absoluteX

OK

OK

OK

OK

OK

OK

OK

asl accumulator

OK

OK

OK

OK

OK

OK

OK

asl c flag set

OK

OK

OK

OK

OK

OK

OK

asl c flag unset

OK

OK

OK

OK

OK

OK

OK

asl n flag set

OK

OK

OK

OK

OK

OK

OK

asl n flag unset

OK

OK

OK

OK

OK

OK

OK

asl z flag set

OK

OK

OK

OK

OK

OK

OK

asl z flag unset

OK

OK

OK

OK

OK

OK

OK

asl zeroPage

OK

OK

OK

OK

OK

OK

OK

asl zeropage x

OK

OK

OK

OK

OK

OK

OK

bcc

OK

NOT

OK

OK

OK

OK

OK

bcs

OK

OK

OK

OK

OK

OK

OK

beq

OK

OK

NOT

OK

OK

OK

OK

bit absolute

OK

OK

OK

OK

OK

OK

OK

bit n flag set

OK

OK

OK

OK

OK

OK

OK

bit n flag unset

OK

OK

OK

OK

OK

OK

OK

bit v flag set

OK

OK

OK

OK

OK

OK

OK

bit v flag unset

OK

OK

OK

OK

OK

OK

OK

bit z flag set

OK

OK

OK

OK

OK

OK

OK

bit z flag unset

OK

OK

OK

OK

OK

OK

OK

bit zeropage

OK

OK

OK

OK

OK

OK

OK

bmi

OK

OK

OK

OK

OK

OK

OK

bne

OK

OK

NOT

OK

OK

OK

OK

bpl

OK

OK

OK

OK

OK

OK

OK

brk

NOT

NOT

NOT

NOT

OK

OK

OK

bvc

OK

OK

OK

OK

OK

OK

OK

bvs

OK

OK

OK

OK

OK

OK

OK

clc

OK

OK

OK

OK

OK

OK

OK

cld

OK

OK

OK

OK

OK

OK

OK

cli

OK

OK

OK

OK

OK

OK

OK

clv

OK

OK

OK

OK

OK

OK

OK

cmp absolute

OK

OK

OK

OK

OK

OK

OK

cmp absolute x

OK

OK

OK

OK

OK

OK

OK

cmp absolute y

OK

OK

OK

OK

OK

OK

OK

cmp c flag set

OK

OK

OK

OK

OK

OK

OK

cmp c flag unset

OK

OK

OK

OK

OK

OK

OK

cmp immediate

OK

OK

OK

OK

OK

OK

OK

cmp indirect x

OK

OK

OK

OK

OK

OK

OK

cmp indirect y

OK

OK

OK

OK

OK

OK

OK

cmp n flag set

OK

OK

OK

OK

OK

OK

OK

cmp n flag unset

OK

OK

OK

OK

OK

OK

OK

cmp z flag set

OK

OK

OK

OK

OK

OK

OK

cmp z flag unset

OK

OK

OK

OK

OK

OK

OK

cmp zeropage

OK

OK

OK

OK

OK

OK

OK

cmp zeropage x

OK

OK

OK

OK

OK

OK

OK

cpx C flag unset

OK

OK

OK

OK

OK

OK

OK

cpx absolute

OK

OK

OK

OK

OK

OK

OK

cpx c flag set

OK

OK

OK

OK

OK

OK

OK

cpx immediate

OK

OK

OK

OK

OK

OK

OK

cpx n flag set

OK

OK

OK

OK

OK

OK

OK

cpx n flag unset

OK

OK

OK

OK

OK

OK

OK

cpx z flag set

OK

OK

OK

OK

OK

OK

OK

cpx z flag unset

OK

OK

OK

OK

OK

OK

OK

cpx zeropage

OK

OK

OK

OK

OK

OK

OK

cpy absolute

OK

OK

OK

OK

OK

OK

OK

cpy c flag set

OK

OK

OK

OK

OK

OK

OK

cpy c flag unset

OK

OK

OK

OK

OK

OK

OK

cpy immediate

OK

OK

OK

OK

OK

OK

OK

cpy n flag set

OK

OK

OK

OK

OK

OK

OK

cpy n flag unset

OK

OK

OK

OK

OK

OK

OK

cpy z flag set

OK

OK

OK

OK

OK

OK

OK

cpy z flag unset

OK

OK

OK

OK

OK

OK

OK

cpy zeroPage

OK

OK

OK

OK

OK

OK

OK

dec absolute

OK

OK

OK

OK

OK

OK

OK

dec absolute x

OK

OK

OK

OK

OK

OK

OK

dec n flag set

OK

OK

OK

OK

OK

OK

OK

dec n flag unset

OK

OK

OK

OK

OK

OK

OK

dec z flag set

OK

OK

OK

OK

OK

OK

OK

dec z flag unset

OK

OK

OK

OK

OK

OK

OK

dec zeroPage

OK

OK

OK

OK

OK

OK

OK

dec zeropage x

OK

OK

OK

OK

OK

OK

OK

dex

OK

OK

OK

OK

OK

OK

OK

dex n flag set

OK

OK

OK

OK

OK

OK

OK

dex n flag unset

OK

OK

OK

OK

OK

OK

OK

dex z flag set

OK

OK

OK

OK

OK

OK

OK

dex z flag unset

OK

OK

OK

OK

OK

OK

OK

dey

OK

OK

OK

OK

OK

OK

OK

dey n flag set

OK

OK

OK

OK

OK

OK

OK

dey n flag unset

OK

OK

OK

OK

OK

OK

OK

dey z flag set

OK

OK

OK

OK

OK

OK

OK

dey z flag unset

OK

OK

OK

OK

OK

OK

OK

eor absolute

OK

OK

OK

OK

OK

OK

OK

eor absolute x

OK

OK

OK

OK

OK

OK

OK

eor absolute y

OK

OK

OK

OK

OK

OK

OK

eor immediate

OK

OK

OK

OK

OK

OK

OK

eor indirect x

OK

OK

OK

OK

OK

OK

OK

eor indirect y

OK

OK

OK

OK

OK

OK

OK

eor n flag set

OK

OK

OK

OK

OK

OK

OK

eor n flag unset

OK

OK

OK

OK

OK

OK

OK

eor z flag set

OK

OK

OK

OK

OK

OK

OK

eor z flag unset

OK

OK

OK

OK

OK

OK

OK

eor zeropage

OK

OK

OK

OK

OK

OK

OK

eor zeropage x

OK

OK

OK

OK

OK

OK

OK

inc absolute

OK

OK

OK

OK

OK

OK

OK

inc absolute x

OK

OK

OK

OK

OK

OK

OK

inc n flag set

OK

OK

OK

OK

OK

OK

OK

inc n flag unset

OK

OK

OK

OK

OK

OK

OK

inc z flag set

OK

OK

OK

OK

OK

OK

OK

inc z flag unset

OK

OK

OK

OK

OK

OK

OK

inc zeroPage

OK

OK

OK

OK

OK

OK

OK

inc zeropage x

OK

OK

OK

OK

OK

OK

OK

inx

OK

OK

OK

OK

OK

OK

OK

inx n flag set

OK

OK

OK

OK

OK

OK

OK

inx n flag unset

OK

OK

OK

OK

OK

OK

OK

inx z flag set

OK

OK

OK

OK

OK

OK

OK

inx z flag unset

OK

OK

OK

OK

OK

OK

OK

iny

OK

OK

OK

OK

OK

OK

OK

iny n flag set

OK

OK

OK

OK

OK

OK

OK

iny n flag unset

OK

OK

OK

OK

OK

OK

OK

iny z flag set

OK

OK

OK

OK

OK

OK

OK

iny z flag unset

OK

OK

OK

OK

OK

OK

OK

irq interrupt

NOT

NOT

NOT

NOT

NOT

NOT

NOT

jmp absolute

OK

OK

OK

OK

OK

OK

OK

jmp indirect

OK

OK

OK

OK

OK

OK

OK

jsr

NOT

NOT

NOT

OK

NOT

OK

NOT

jsr stack pointer

NOT

OK

NOT

OK

NOT

OK

NOT

jsr with illegal opcode

NOT

OK

OK

NOT

OK

NOT

NOT

lda absolute

OK

OK

OK

OK

OK

OK

OK

lda absolute x

OK

OK

OK

OK

OK

OK

OK

lda absolute x 2

OK

OK

OK

OK

OK

OK

OK

lda absolute y

OK

OK

OK

OK

OK

OK

OK

lda imediate

OK

OK

OK

OK

OK

OK

OK

lda indirect x

OK

OK

OK

OK

OK

OK

OK

lda indirect y

OK

OK

OK

OK

OK

OK

OK

lda n flag set

OK

OK

OK

OK

OK

OK

OK

lda n flag unset

OK

OK

OK

OK

OK

OK

OK

lda z flag set

OK

OK

OK

OK

OK

OK

OK

lda z flag unset

OK

OK

OK

OK

OK

OK

OK

lda zero page x

OK

OK

OK

OK

OK

OK

OK

lda zeropage

OK

OK

OK

OK

OK

OK

OK

ldx absolute

OK

OK

OK

OK

OK

OK

OK

ldx absolute y

OK

OK

OK

OK

OK

OK

OK

ldx immediate

OK

OK

OK

OK

OK

OK

OK

ldx n flag set

OK

OK

OK

OK

OK

OK

OK

ldx n flag unset

OK

OK

OK

OK

OK

OK

OK

ldx z flag set

OK

OK

OK

OK

OK

OK

OK

ldx z flag unset

OK

OK

OK

OK

OK

OK

OK

ldx zero page

OK

OK

OK

OK

OK

OK

OK

ldx zeropage y

OK

OK

OK

OK

OK

OK

OK

ldy absolute

OK

OK

OK

OK

OK

OK

OK

ldy absolute x

OK

OK

OK

OK

OK

OK

OK

ldy immediate

OK

OK

OK

OK

OK

OK

OK

ldy n flag set

OK

OK

OK

OK

OK

OK

OK

ldy n flag unset

OK

OK

OK

OK

OK

OK

OK

ldy z flag set

OK

OK

OK

OK

OK

OK

OK

ldy z flag unset

OK

OK

OK

OK

OK

OK

OK

ldy zeropage

OK

OK

OK

OK

OK

OK

OK

ldy zeropage x

OK

OK

OK

OK

OK

OK

OK

lsr absolute

OK

OK

OK

OK

OK

OK

OK

lsr absolute x

OK

OK

OK

OK

OK

OK

OK

lsr accumulator

OK

OK

OK

OK

OK

OK

OK

lsr c flag set

OK

OK

OK

OK

OK

OK

OK

lsr c flag unset

OK

OK

OK

OK

OK

OK

OK

lsr n flag unset

OK

OK

OK

OK

OK

OK

OK

lsr z flag set

OK

OK

OK

OK

OK

OK

OK

lsr z flag unset

OK

OK

OK

OK

OK

OK

OK

lsr zeroPage

OK

OK

OK

OK

OK

OK

OK

lsr zeropage x

OK

OK

OK

OK

OK

OK

OK

nmi interrupt

NOT

NOT

NOT

NOT

NOT

NOT

NOT

ora absolute

OK

OK

OK

OK

OK

OK

OK

ora absolute x

OK

OK

OK

OK

OK

OK

OK

ora absolute y

OK

OK

OK

OK

OK

OK

OK

ora immediate

OK

OK

OK

OK

OK

OK

OK

ora indirect x

OK

OK

OK

OK

OK

OK

OK

ora indirect y

OK

OK

OK

OK

OK

OK

OK

ora n flag set

OK

OK

OK

OK

OK

OK

OK

ora n flag unset

OK

OK

OK

OK

OK

OK

OK

ora z flag set

OK

OK

OK

OK

OK

OK

OK

ora z flag unset

OK

OK

OK

OK

OK

OK

OK

ora zeropage

OK

OK

OK

OK

OK

OK

OK

ora zeropage x

OK

OK

OK

OK

OK

OK

OK

pha

OK

OK

OK

OK

OK

OK

OK

php

OK

OK

NOT

OK

OK

OK

OK

pla

OK

OK

OK

OK

OK

OK

NOT

pla n flag set

OK

OK

OK

OK

OK

OK

NOT

pla n flag unset

OK

OK

OK

OK

OK

OK

OK

pla z flag set

OK

OK

OK

OK

OK

OK

NOT

pla z flag unset

OK

OK

OK

OK

OK

OK

OK

plp

NOT

NOT

NOT

NOT

NOT

NOT

NOT

rol absolute

OK

OK

OK

OK

OK

OK

OK

rol absolute x

OK

OK

OK

OK

OK

OK

OK

rol accumulator

OK

OK

OK

OK

OK

OK

OK

rol c flag set

OK

OK

OK

OK

OK

OK

OK

rol c flag unset

OK

OK

OK

OK

OK

OK

OK

rol n flag set

OK

OK

OK

OK

OK

OK

OK

rol n flag unset

OK

OK

OK

OK

OK

OK

OK

rol z flag set

OK

OK

OK

OK

OK

OK

OK

rol z flag unset

OK

OK

OK

OK

OK

OK

OK

rol zeropage

OK

OK

OK

OK

OK

OK

OK

rol zeropage x

OK

OK

OK

OK

OK

OK

OK

ror absolute

OK

OK

OK

OK

OK

OK

OK

ror absolute x

OK

OK

OK

OK

OK

OK

OK

ror accumulator

OK

OK

OK

OK

OK

OK

OK

ror c flag set

OK

OK

OK

OK

OK

OK

OK

ror c flag unset

OK

OK

OK

OK

OK

OK

OK

ror n flag set

OK

OK

OK

OK

OK

OK

OK

ror n flag unset

OK

OK

OK

OK

OK

OK

OK

ror z flag set

OK

OK

OK

OK

OK

OK

OK

ror z flag unset

OK

OK

OK

OK

OK

OK

OK

ror zeropage

OK

OK

OK

OK

OK

OK

OK

ror zeropage x

OK

OK

OK

OK

OK

OK

OK

rst interrupt

NOT

NOT

NOT

NOT

NOT

NOT

NOT

rti

OK

OK

NOT

OK

OK

OK

NOT

rts

OK

OK

NOT

OK

OK

OK

NOT

sbc absolute

OK

OK

OK

OK

OK

OK

OK

sbc absolute x

OK

OK

OK

OK

OK

OK

OK

sbc absolute y

OK

OK

OK

OK

OK

OK

OK

sbc c flag set

OK

OK

OK

OK

OK

OK

OK

sbc c flag unset

OK

OK

OK

OK

OK

OK

OK

sbc immediate

OK

OK

OK

OK

OK

OK

OK

sbc immediate with bcd

NOT

OK

OK

OK

OK

OK

OK

sbc indirect x

OK

OK

OK

OK

OK

OK

OK

sbc indirect y

OK

OK

OK

OK

OK

OK

OK

sbc n flag set

OK

OK

OK

OK

OK

OK

OK

sbc n flag unset

OK

OK

OK

OK

OK

OK

OK

sbc v flag set

OK

OK

OK

OK

OK

OK

OK

sbc v flag unset

OK

OK

OK

OK

OK

OK

OK

sbc z flag set

OK

OK

OK

OK

OK

OK

OK

sbc z flag unset

OK

OK

OK

OK

OK

OK

OK

sbc zeroPage

OK

OK

OK

OK

OK

OK

OK

sbc zeropage x

OK

OK

OK

OK

OK

OK

OK

sec

OK

OK

OK

OK

OK

OK

OK

sed

OK

OK

OK

OK

OK

OK

OK

sei

OK

OK

OK

OK

OK

OK

OK

sta absolute

OK

OK

OK

OK

OK

OK

OK

sta absolute x

OK

OK

OK

OK

OK

OK

OK

sta absolute y

OK

OK

OK

OK

OK

OK

OK

sta indirect x

OK

OK

OK

OK

OK

OK

OK

sta indirect y

OK

OK

OK

OK

OK

OK

OK

sta zeropage

OK

OK

OK

OK

OK

OK

OK

sta zeropage x

OK

OK

OK

OK

OK

OK

OK

stx absolute

OK

OK

OK

OK

OK

OK

OK

stx zeropage

OK

OK

OK

OK

OK

OK

OK

stx zeropage y

OK

OK

OK

OK

OK

OK

OK

sty absolute

OK

OK

OK

OK

OK

OK

OK

sty zeropage

OK

OK

OK

OK

OK

OK

OK

sty zeropage y

OK

OK

OK

OK

OK

OK

OK

tax

OK

OK

OK

OK

OK

OK

OK

tax n flag set

OK

OK

OK

OK

OK

OK

OK

tax n flag unset

OK

OK

OK

OK

OK

OK

OK

tax z flag set

OK

OK

OK

OK

OK

OK

OK

tax z flag unset

OK

OK

OK

OK

OK

OK

OK

tay

OK

OK

OK

OK

OK

OK

OK

tsx

OK

OK

NOT

OK

OK

OK

OK

txa

OK

OK

OK

OK

OK

OK

OK

txs

OK

OK

NOT

OK

OK

OK

OK

tya

OK

OK

OK

OK

OK

OK

OK