Subject: Re: 6502 false references?
From: [email-masked] (David E A Wilson)
Date: 22 Oct 1995 12:04:19 +1000
Newsgroups: comp.emulators.apple2,comp.sys.apple2,comp.sys.apple2.programmer

>In article <[email-masked]>,
>   [email-masked] (Colin Klipsch) wrote:
>>My question is: which 6502 instructions generate double references?  More
>>specifically, which instructions will hit the speaker twice instead of
>>once, when applied to the speaker I/O addresses?  I've looked in
>>Leventhal's and Zak's 6502 books, but didn't find this information.

From MOS Microcomputers Hardware Manual (publication number 6500-10A) Jan 1976:

ASL,CLC,CLD,CLI,CLV,DEX,DEY,INX,INY,LSR,NOP,ROL,SEC,SED,SEI,
TAX,TAY,TSX,TXA,TXS,TYA
single byte instruction
	false read of following opcode

ADC,AND,BIT,CMP,CPX,CPY,EOR,LDA,LDX,LDY,ORA,SBC
indirect,x
	false read of 00nn before x is added to nn
absolute,x or absolute,y
	false read if page crossing occurs
zp,x or zp,y
	false read of 00nn before x/y is added to nn
indirect,y
	false read if page crossing occurs

STA,STX,STY
indirect,x
	false read of 00nn before x is added to nn
absolute,x or absolute,y
	false read
zp,x or zp,y
	false read of 00nn before x/y is added to nn
indirect,y
	false read

ASL,DEC,INC,LSR,ROL,ROR
zp or absolute
	false write of old data
zp,x or abs,x
	false read of 00nn before x is added to nn
	false write of old data

PHP,PHA
	false read of following opcode

PLP,PLA
	false read of following opcode
	false read of stack (before stkptr incremented)

JSR
	false read of stack

BRK
	false read of following opcode

RTI
	false read of following opcode
	false read of stack

RTS
	false read of following opcode
	false read of stack
	false read of byte before next instruction to execute

Bxx
	false read of PC+2+offset (no carry) if page crossed

Hope this helps. Let me know if you need the full cycle by cycle details.
-- 
David Wilson	Dept CompSci Uni Wollongong Australia	[email-masked]