mirror of
				https://github.com/larsbrinkhoff/awesome-cpus
				synced 2025-11-04 18:26:01 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			2585 lines
		
	
	
		
			91 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			2585 lines
		
	
	
		
			91 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
----------------------------------------------------------------------------
 | 
						||
 | 
						||
[GTE]
 | 
						||
 | 
						||
Microcircuits
 | 
						||
 | 
						||
CMOS 8/16-Bit Microprocessor Family
 | 
						||
 | 
						||
65sc802 is both software and pin-to-pin compatible with 6502.
 | 
						||
 | 
						||
G65SC802 / G65SC816 Data Sheets
 | 
						||
 | 
						||
   * Features
 | 
						||
   * AC/DC Characteristics
 | 
						||
   * Functional Description
 | 
						||
   * Addressing Modes
 | 
						||
   * Notes on Instructions
 | 
						||
   * Interrupts
 | 
						||
   * Table 4. List of Mnemonics
 | 
						||
   * Table 5-7. Instructions
 | 
						||
   * Table 8. Opcode Matrix
 | 
						||
   * Table 9. Detailed Instruction Operation
 | 
						||
 | 
						||
   * Figure 1. Block Diagram
 | 
						||
 | 
						||
----------------------------------------------------------------------------
 | 
						||
Jouko Valta (jopi@stekt.oulu.fi).
 | 
						||
 | 
						||
GTE						G 65 SC 802 / G 65 SC 816
 | 
						||
Microcircuits
 | 
						||
 | 
						||
 | 
						||
CMOS 8/16-Bit Microprocessor Family
 | 
						||
 | 
						||
Features
 | 
						||
	Advanced CMOS design for low power consumption and increased
 | 
						||
	  noise immunity
 | 
						||
	Emulation mode for total software compatibility with 6502 designs
 | 
						||
	Full 16-bit ALU, Accumulator, Stack Pointer, and Index Registers
 | 
						||
	Direct Register for ''zero page'' addressing
 | 
						||
	24 addressing modes (including 13 original 6502 modes)
 | 
						||
	Wait for Interrupt (WAI) and Stop the Clock (STP) instructions
 | 
						||
	  for reduced power consumption and decreased interrupt latency
 | 
						||
	91 instructions with 255 opcodes
 | 
						||
	Co-Processor (COP) instruction and associated vector
 | 
						||
	Powerful Block Move instructions
 | 
						||
 | 
						||
Features (G65SC802 Only)
 | 
						||
	8-Bit Mode with both software and hardware (pin-to-pin) compatibility
 | 
						||
	  with 6502 designs (64 KByte memory space)
 | 
						||
	Program selectable 16-bit operation
 | 
						||
	Choice of external or on-board clock generation
 | 
						||
 | 
						||
Features (G65SC816 Only)
 | 
						||
	Full 16-bit operation with 24 address lines for 16 MByte memory
 | 
						||
	Program selectable 8-Bit Mode for 6502 coding compatibility.
 | 
						||
	Valid Program Address (VPA) and Valid Data Address (VDA) outputs
 | 
						||
	  for dual cache and DMA cycle steal implementation
 | 
						||
	Vector Pull (VP) output indicates when interrupt vectors are being
 | 
						||
	  fetched. May be used for vectoring/prioritizing interrupts.
 | 
						||
	Abort interrupt and associated vector for interrupting any instruction
 | 
						||
	  without modifying internal registers
 | 
						||
	Memory Lock (ML) for multiprocessor system implementation
 | 
						||
 | 
						||
 | 
						||
General Description
 | 
						||
 | 
						||
The G65SC802 and G65SC816 are ADV-CMOS (ADVanced CMOS) 16-bit microprocessors
 | 
						||
featuring total software compatibility with 8-bit NMOS and CMOS 6500 series
 | 
						||
microprocessors. The G65SC802 is pin-to-pin compatible with 8-bit 6502 devices
 | 
						||
currently available, while also providing full 16-bit internal operation. The
 | 
						||
G65SC816 provides 24 address lines for 16 MByte addressing, while providing
 | 
						||
both 8-bit and 16-bit operation.
 | 
						||
 | 
						||
Each microprocessor contains an Emulation (E) mode for emulating 8-bit NMOS
 | 
						||
and CMOS 6500-Series microprocessors. A software switch determines whether the
 | 
						||
processor is in the 8-bit ernulation mode or in the Native 16-bit mode.
 | 
						||
This allows existing 8-bit system designs to use the many powerful features of
 | 
						||
the G65SC802 and G65SC816.
 | 
						||
 | 
						||
The G65SC802 and G65SC816 provide the system engineer with many powerful
 | 
						||
features and options. A 16-bit Direct Page Register is provided to augment the
 | 
						||
Direct Page addressing mode, and there are separate Prograrn Bank Registers
 | 
						||
for 24-bit memory addressing.
 | 
						||
Other valuable features Include:
 | 
						||
 * An Abort input which can interrupt the current instruction without
 | 
						||
   modifying internal registers
 | 
						||
 * Valid Data Address (VDA) and Valid Prograrn Address (VPA) output swhich
 | 
						||
   facilitate dual cache memory by indicating whether a data or program
 | 
						||
   segment is being accessed.
 | 
						||
 * Vector modification by simply monitoring the Vector Pull (VP) output.
 | 
						||
 * Block Move Instructions
 | 
						||
 | 
						||
 | 
						||
G65SC802 and G65SC816 microprocessors offer the design engineer a new freedom
 | 
						||
of design and application, and the many advantages of state-of-the-art
 | 
						||
ADV-CMOS technology.
 | 
						||
 | 
						||
This is advanced information and specifications are subject to change without notice.
 | 
						||
 | 
						||
Absolute Maximum Ratings: (Note 1)
 | 
						||
 | 
						||
	Rating			Symbol	Value
 | 
						||
 | 
						||
	Supply Voltage		 VDD	-0.3V to +7.0V
 | 
						||
	Input Voltage		 Vin	-0.3V to VDD +0.3V
 | 
						||
	Operating Temperature	 TA	 0 <20>C to +70 <20>C
 | 
						||
	Storage Temperature	 Ts	-55 <20>C to +150 <20>C
 | 
						||
 | 
						||
This device contains input protection against damage due to high static
 | 
						||
voltages or electric fields; however, precautions should be taken to avoid
 | 
						||
application of voltages higher than the maximum rating.
 | 
						||
 | 
						||
Notes:
 | 
						||
	1. Exceeding these ratings may cause permanent damage. Functional
 | 
						||
	   operation under these conditions is not implied.
 | 
						||
 | 
						||
 | 
						||
 | 
						||
DC Chararacteristics (All Devices): VDD = 5.0V +-5%, VSS = OV, TA = 0 <20>C to +70 <20>C
 | 
						||
 | 
						||
Parameter					Symbol	Min	Max	Unit
 | 
						||
 | 
						||
Input High Voltage				 Vih
 | 
						||
/RES, RDY, /IRQ, Data, /SO, BE				2.0	Vdd+0.3	 V
 | 
						||
/ABORT, /NMI, Phi2 (IN)					0.7Vdd	Vdd+0.3	 V
 | 
						||
 | 
						||
Input Low Voltage				 Vil
 | 
						||
/RES, RDY, /IRQ, Data, /SO, BE				-0.3	0.8	 V
 | 
						||
/ABORT, /NMI, Phi2 (IN)					-0.3	0.2	 V
 | 
						||
 | 
						||
Input Leakage Current (Vin = 0 to VDD)		 Iin
 | 
						||
/RES, /NMI, /IRQ, /SO, BE
 | 
						||
/ABORT (Internal Pullup)				-100	 1	uA
 | 
						||
RDY (Internal Pullup, Open Drain)			-100	10	uA
 | 
						||
Phi2 (IN)						-1	 1	uA
 | 
						||
Address, Data, R/W (Off State, BE = 0)			-10	10	uA
 | 
						||
 | 
						||
Output High Voltage (Ioh = -100 uA)		 Voh
 | 
						||
SYNC, Data, Address, R/W, ML, VP, M/X,
 | 
						||
E, VDA, VPA, Phi1 (out), Phi2 (out)			0.7Vdd	-	 V
 | 
						||
 | 
						||
Output Low Voltage (Ioh = -100 uA)		 Vol
 | 
						||
SYNC, Data, Address, R/W, ML, VP, M/X,
 | 
						||
E, VDA, VPA, Phi1 (out), Phi2 (out)			-	0.4	 V
 | 
						||
 | 
						||
Supply Current (No Load)			 Idd
 | 
						||
	f = 2 MHz					-	10	mA
 | 
						||
	f = 4 MHz					-	20	mA
 | 
						||
	f = 6 MHz					-	30	mA
 | 
						||
	f = 8 MHz					-	40	mA
 | 
						||
 | 
						||
Standby Current (No Load; Data Bus = Vss or VDD)
 | 
						||
Phi2 (in) = /ABORT = /RES = /NMI = /IRQ = /SO = BE = VDD)
 | 
						||
						 Isb	-	10	uA
 | 
						||
 | 
						||
Capasitance (Vin = 0V, TA = 25<32>C, f = 2 MHz)
 | 
						||
Logic, Phi2 (in)				 Cin	-	10	pF
 | 
						||
Address, Data, R/W (Off State)			 Cts	-	15	pF
 | 
						||
 | 
						||
 | 
						||
 | 
						||
AC Chararacteristics (G65SC802): VDD = 5.0V +-5%, VSS = OV, TA = 0 <20>C to +70 <20>C
 | 
						||
 | 
						||
				  2 MHz      4 MHz      6 MHz      8 MHz
 | 
						||
Parameter		Symbol	Min  Max   Min  Max   Min  Max   Min  Max  Unit
 | 
						||
 | 
						||
Cycle Time		tCYC    500  DC    250  DC    167  DC    125  DC    nS
 | 
						||
Clock Pulse Width Low	tPWL   0.240 10   0.120 10   0.080 10   0.060 10    uS
 | 
						||
Clock Pulse Width High	tPWH    240  inf   120  inf   80   inf   60   inf   nS
 | 
						||
Fall Time, Rise Time	tF,tR    -   10     -   10     -    5     -    5    nS
 | 
						||
Delay Time, Ph2 to Ph1	tDphi1   -   40     -   40     -   40     -   40    nS
 | 
						||
Delay Time, Ph2 to Ph2	tDphi2   -   40     -   40     -   40     -   40    nS
 | 
						||
A0-A15 Hold Time	tAH     10    -    10    -    10    -    10    -    nS
 | 
						||
A0-A15 Setup Time	tADS     -   100    -   75     -   60     -   40    nS
 | 
						||
Access Time		tACC    365   -    130   -    87    -    70    -    nS
 | 
						||
Read Data Hold Time	tDHR    10    -    10    -    10    -    10    -    nS
 | 
						||
Read Data Setup Time	tDSR    40    -    30    -    20    -    15    -    nS
 | 
						||
Write Data Delay Time	tMDS     -   100    -   70     -   60     -   40    nS
 | 
						||
Write Data Hold Time	tDHW    10    -    10    -    10    -    10    -    nS
 | 
						||
CPU Control Setup Time	tPCS    40    -    30    -    20    -    15    -    nS
 | 
						||
CPU Control Hold Time	tPCH    10    -    10    -    10    -    10    -    nS
 | 
						||
E,MX Output Hold Time	tEH     10    -    10    -     5    -     5    -    nS
 | 
						||
E,MX Output Setup Time	tES     50    -    50    -    25    -    15    -    nS
 | 
						||
Capacitive Load (Address, Data, and R/W)
 | 
						||
			CEXT    -    100    -   100    -   35     -   35    pF
 | 
						||
 | 
						||
 | 
						||
Timing Notes:
 | 
						||
	1 Typical output load = 100 pF
 | 
						||
	2 Voltage levels are VL < 0.4V, VH > 2.4V
 | 
						||
	3 Timing measurement points are 0.8V and 2.0V
 | 
						||
 | 
						||
 | 
						||
 | 
						||
AC Chararacteristics (G65SC816): VDD = 5.0V +-5%, VSS = OV, TA = 0 <20>C to +70 <20>C
 | 
						||
 | 
						||
				  2 MHz      4 MHz      6 MHz      8 MHz
 | 
						||
Parameter		Symbol	Min  Max   Min  Max   Min  Max   Min  Max  Unit
 | 
						||
 | 
						||
Cycle Time		tCYC    500  DC    250  DC    167  DC    125  DC    nS
 | 
						||
Clock Pulse Width Low	tPWL   0.240 10   0.120 10   0.080 10   0.060 10    uS
 | 
						||
Clock Pulse Width High	tPWH    240  inf   120  inf   80   inf   60   inf   nS
 | 
						||
Fall Time, Rise Time	tF,tR    -   10     -   10     -    5     -    5    nS
 | 
						||
A0-A15 Hold Time	tAH     10    -    10    -    10    -    10    -    nS
 | 
						||
A0-A15 Setup Time	tADS     -   100    -   75     -   60     -   40    nS
 | 
						||
BA0-BA7 Hold Time	tBH     10    -    10    -    10    -    10    -    nS
 | 
						||
BA0-BA7 Setup Time	tBAS     -   100    -   90     -   65     -   45    nS
 | 
						||
Access Time		tACC    365   -    130   -    87    -    70    -    nS
 | 
						||
Read Data Hold Time	tDHR    10    -    10    -    10    -    10    -    nS
 | 
						||
Read Data Setup Time	tDSR    40    -    30    -    20    -    15    -    nS
 | 
						||
Write Data Delay Time	tMDS     -   100    -   70     -   60     -   40    nS
 | 
						||
Write Data Hold Time	tDHW    10    -    10    -    10    -    10    -    nS
 | 
						||
CPU Control Setup Time	tPCS    40    -    30    -    20    -    15    -    nS
 | 
						||
CPU Control Hold Time	tPCH    10    -    10    -    10    -    10    -    nS
 | 
						||
E,MX Output Hold Time	tEH     10    -    10    -     5    -     5    -    nS
 | 
						||
E,MX Output Setup Time	tES     50    -    50    -    25    -    15    -    nS
 | 
						||
Capacitive Load (Address, Data, and R/W)
 | 
						||
			CEXT     -   100    -   100    -   35     -   35    pF
 | 
						||
BE to High Imp. State	tBHZ     -   30     -   30     -   30     -   30    nS
 | 
						||
BE to Valid Data	tBVD     -   30     -   30     -   30     -   30    nS
 | 
						||
 | 
						||
 | 
						||
Timing Notes:
 | 
						||
	1 Typical output load = 100 pF
 | 
						||
	2 Voltage levels are VL < 0.4V, VH > 2.4V
 | 
						||
	3 Timing measurement points are 0.8V and 2.0V
 | 
						||
 | 
						||
 | 
						||
 | 
						||
Functional Description
 | 
						||
 | 
						||
The G65SC802 offers the design engineer the opportunity to utilize both
 | 
						||
existing software programs and hardware configurations, while also
 | 
						||
achieving the added advantages of increased register lengths and faster
 | 
						||
execution times. The G65SC802's "ease of use" design and implementation
 | 
						||
features provide the designer with increased flexibility and reduced
 | 
						||
implementation costs In the Emulation mode, the G65SC802 not only offers
 | 
						||
software compatibility, but is also hardware (pin-to-pin) compatible with
 | 
						||
6502 designs plus it provides the advantages of 16-bit internal operation
 | 
						||
in 6502-compatible applications. The G65SC802 is an excellent direct
 | 
						||
replacement microprocessor for 6502 designs.
 | 
						||
 | 
						||
The G65SC816 provides the design engineer with upward mobility and software
 | 
						||
compatibility in applications where a 16-bit system configuration is desired.
 | 
						||
The G65SC816's 16-bit hardware configuration, coupled with current software
 | 
						||
allows a wide selection of system applications. In the Emulation mode, the
 | 
						||
G65SC816 ofters many advantages, including full software compatibility with
 | 
						||
6502 coding. In addition, the G65SC816's powerful instruction set and
 | 
						||
addressing modes make it an excellent choice for new 16-bit designs.
 | 
						||
 | 
						||
Internal organization of the G65SC802 and G65SC816 can be divided into two
 | 
						||
parts: 1) The Register Section, and 2) The Control Section Instructions
 | 
						||
(or opcodes) obtained from program memory are executed by implementing a
 | 
						||
series of data transfers within the Register Section.
 | 
						||
Signals that cause data transfers to be executed are generated within the
 | 
						||
Control Section. Both the G65SC802 and the G65SC816 have a 16-bit internal
 | 
						||
architecture with an 8-bit external data bus.
 | 
						||
 | 
						||
 | 
						||
Instructlon Register and Decode
 | 
						||
 | 
						||
An opcode enters the processor on the Data Bus, and is latched into the
 | 
						||
Instruction Register during the instruction fetch cycle. This instruction is
 | 
						||
then decoded, along with timing and interrupt signals, to generate the
 | 
						||
various Instruction Register control signals.
 | 
						||
 | 
						||
 | 
						||
Timing Control Unit (TCU)
 | 
						||
 | 
						||
The Timing Control Unit keeps track of each instruction cycle as it is
 | 
						||
executed. The TCU is set to zero each time an instruction fetch is executed,
 | 
						||
and is advanced at the beginning of each cycle for as many cycles as is
 | 
						||
required to complete the instruction Each data transfer between registers
 | 
						||
depends upon decoding the contents of both the Instruction Register and
 | 
						||
the Timing Control Unit.
 | 
						||
 | 
						||
 | 
						||
Arithmetic and Logic Unit (ALU)
 | 
						||
 | 
						||
All arithmetic and logic operations take place within the 16-bit ALU. In
 | 
						||
addition to data operations, the ALU also calculates the effective address
 | 
						||
for relative and indexed addressing modes. The result of a data operation
 | 
						||
is stored in either memory or an internal register. Carry, Negative, Over-
 | 
						||
flow and Zero flags may be updated following the ALU data operation.
 | 
						||
 | 
						||
 | 
						||
Internal Registers (Refer to Figure 2, Programming Model)
 | 
						||
 | 
						||
Accumulator (A)
 | 
						||
The Accumulator is a general purpose register which stores one of the
 | 
						||
operands, or the result of most arithmetic and logical operations. In the
 | 
						||
Native mode (E=0), when the Accumulator Select Bit (M) equals zero, the
 | 
						||
Accumulator is established as 16 bits wide. When the Accumulator Select
 | 
						||
Bit (M) equals one, the Accumulator is 8 bits wide. In this case, the upper
 | 
						||
8 bits (AH) may be used for temporary storage in conjunction with the
 | 
						||
Exchange AH and AL instruction.
 | 
						||
 | 
						||
Data Bank (DB)
 | 
						||
During the Native mode (E=0), the 8-bit Data Bank Register holds the default
 | 
						||
bank address for memory transfers. The 24-bit address is composed of the
 | 
						||
16-bit instruction effective address and the 8-bit Data Bank address. The
 | 
						||
register value is multiplexed with the data value and is present on the
 | 
						||
Data/Address lines during the first half of a data transfer memory cycle for
 | 
						||
the G65SC816. The Data Bank Register is initialized to zero during Reset.
 | 
						||
 | 
						||
Direct (D)
 | 
						||
The 16-bit Direct Register provides an address offset for all instructions
 | 
						||
using direct addressing. The effective bank zero address is formed by adding
 | 
						||
the 8-bit instruction operand address to the Direct Register. The Direct
 | 
						||
Register is initialized to zero during Reset.
 | 
						||
 | 
						||
Index (X and Y)
 | 
						||
There are two Index Registers (X and Y) which may be used as general purpose
 | 
						||
registers or to provide an index value for calculation of the effective
 | 
						||
address. When executing an instruction with indexed addressing, the
 | 
						||
microprocessor fetches the opcode and the base address, and then modifies the
 | 
						||
address by adding the Index Register contents to the address prior to
 | 
						||
performing the desired operation.
 | 
						||
Pre-indexing or postindexing of Indirect addresses may be selected. In the
 | 
						||
Native mode (E=0), both Index Registers are 16 bits wide (providing the Index
 | 
						||
Select Bit (X) equals zero). If the Index Select Bit (X) equals one, both
 | 
						||
registers will be 8 bits wide.
 | 
						||
 | 
						||
Processor Status (P)
 | 
						||
The 8-bit Processor Status Register contains status flags and mode select bits.
 | 
						||
The Carry (C), Negative (N). Overflow (V), and Zero (Z) status flags serve to
 | 
						||
report the status ot most ALU operations. These status flags are tested by use
 | 
						||
of Conditional Branch instructions. The Decimal (D), IRQ Disable (I), Memory,
 | 
						||
Accumuiator (M), and Index (X) bits are used as mode select flags. These flags
 | 
						||
are set by the program to change microprocessor operations.
 | 
						||
 | 
						||
The Emulation (E) select and the Break (B) flags are accessible only through
 | 
						||
the Processor Status Register. The Emulation mode select flag is selected by
 | 
						||
the Exchange Carry and Emulation Bits (XCE) instruction.
 | 
						||
Table 2, G65SC802 and G65SC816 Mode Comparison, illustrates the features of
 | 
						||
the Native (E=0) and Emulation (E=1) modes. The M and X flags are always equal
 | 
						||
to one in the Emulation mode. When an interrupt occurs during the Emulation
 | 
						||
mode, the Break flag is written to stack memory as bit 4 of the Processor
 | 
						||
Status Register.
 | 
						||
 | 
						||
Program Bank (PB)
 | 
						||
The 8-bit Program Bank Register holds the bank address for all instruction
 | 
						||
fetches. The 24-bit address consists of the 16-bit instruction effective
 | 
						||
address and the 8-bit Program Bank address. The register value is multiplexed
 | 
						||
with the data value and presented on the Data/Address lines during the first
 | 
						||
half of a program memory read cycle. The Program Bank Register is initialized
 | 
						||
to zero during Reset.
 | 
						||
 | 
						||
Program Counter (PC)
 | 
						||
The 16-bit Program Counter Register provides the addresses which are used to
 | 
						||
step the microprocessor through sequential program instructions. The register
 | 
						||
is incremented each time an instruction or operand is fetched from program
 | 
						||
memory.
 | 
						||
 | 
						||
Stack Pointer (S)
 | 
						||
The Stack Pointer is a 16-bit register which is used to indicate the next
 | 
						||
available location in the stack memory area. It serves as the effective address
 | 
						||
in stack addressing modes as well as subroutine and interrupt processing. The
 | 
						||
Stack Pointer allows simple implementation of nested subroutines and multiple-
 | 
						||
level interrupts. During the Emulation mode, the Stack Pointer high-order byte
 | 
						||
(SH) is always equal to 01. The Bank Address is 00 for all Stack operations.
 | 
						||
 | 
						||
 | 
						||
Signal Description
 | 
						||
 | 
						||
The following Signal Description applies to both the G65SC802 and the
 | 
						||
SSC816 except as otherwise noted.
 | 
						||
 | 
						||
 | 
						||
Abort (/ABORT) -- G65SC816
 | 
						||
The Abort input prevents modification of any internal registers during
 | 
						||
execution of the current instruction. Upon completion of this instruction,
 | 
						||
an interrupt sequence is initiated. The location of the aborted opcode is
 | 
						||
stored as the return address in Stack memory. The Abort vector address is
 | 
						||
00FFF8, 9 (Emulation mode) or 00FFE8, 9 (Native mode). Abort is asserted
 | 
						||
whenever there is a low level on the Abort input. and the Phi2 clock is high.
 | 
						||
The Abort internal latch is cleared during the second cycle of the interrupt
 | 
						||
sequence. This signal may be used to handle out-of-bounds memory references
 | 
						||
in virtual memory systems.
 | 
						||
 | 
						||
Address Bus (A0-A15)
 | 
						||
These sixteen output lines form the Address Bus for memory and I/O exchange on
 | 
						||
the Data Bus. When using the G65SC816, the address lines may be set to the
 | 
						||
high impedance state by the Bus Enable (BE) signal.
 | 
						||
 | 
						||
Bus Enable (BE)
 | 
						||
The Bus Enable input signal allows external control of the Address and Data
 | 
						||
Buffers, as well as the R/W signal With Bus Enable high, the R/W and Address
 | 
						||
Buffers are active. The Data/Address Buffers are active during the first half
 | 
						||
of every cycle and the second half of a write cycle. When BE is low, these
 | 
						||
buffers are disabled. Bus Enable is an asynchronous signal.
 | 
						||
 | 
						||
Data Bus (D0-D7) -- G65SC802
 | 
						||
The eight Data Bus lines provide an 8-bit bidirectional Data Bus for use
 | 
						||
during data exchanges between the microprocessor and external memory or
 | 
						||
peripherals. Two memory cycles are required for the transfer of 16-bit values.
 | 
						||
 | 
						||
Data/Address Bus (D0/BA0-D7/BA7) -- G65SC816
 | 
						||
These eight lines multiplex bits BAO-BA7 with the data value. The Bank Address
 | 
						||
is present during the first half of a memory cycle, and the data value is read
 | 
						||
or written during the second half of the memory cycle.
 | 
						||
The Bank address external transparent latch should be latched when the Phi2
 | 
						||
clock is high or RDY is low. Two memory cycles are required to transfer 16-bit
 | 
						||
values. These lines may be set to the high impedance state by the Bus Enable
 | 
						||
(BE) signal.
 | 
						||
 | 
						||
Emulation Status (E) -- G65SC816 (Also Applies to G65SC802, 44-Pin Version)
 | 
						||
The Emulation Status output reflects the state of the Emulation (E) mode flag
 | 
						||
in the Processor Status (P) Register. This signal may be thought of an opcode
 | 
						||
extension and used for memory and system management.
 | 
						||
 | 
						||
Interrupt Request (/IRQ)
 | 
						||
The Interrupt Request input signal is used to request that an interrupt
 | 
						||
sequence be initiated. When the IRQ Disable (I) flag is cleared, a low input
 | 
						||
logic level initiates an interrupt sequence after the current instruction is
 | 
						||
completed. The Wait for Interrupt (WAI) instruction may be executed to ensure
 | 
						||
the interrupt will be recognized immediately. The Interrupt Request vector
 | 
						||
address is 00FFFE,F (Emulation mode) or 00FFEE,F (Native mode). Since IRQ is a
 | 
						||
level-sensitive input, an interrupt will occur if the interrupt source was not
 | 
						||
cleared since the last interrupt.
 | 
						||
Also, no interrupt will occur if the interrupt source is cleared prior to
 | 
						||
interrupt recognition.
 | 
						||
 | 
						||
Memory Lock (/ML) -- G65SC816 (Also Applies to G65SC802, 44-Pin Version)
 | 
						||
The Memory Lock output may be used to ensure the integrity of Read-Modify-Write
 | 
						||
instructions in a multiprocessor system. Memory Lock indicates the need to
 | 
						||
defer arbitration of the next bus cycle. Memory Lock is low during the last
 | 
						||
three or five cycles of ASL, DEC, INC, LSR, ROL, ROR, TRB, and TSB memory
 | 
						||
referencing instructions, depending the state of the M flag.
 | 
						||
 | 
						||
Memory/Index Select Status (M/X) -- G65SC816
 | 
						||
This multiplexed output reflects the state ot the Accumulator (M) and index (X)
 | 
						||
select flags (bits 5 and 4 of the Processor Status (P) Register).
 | 
						||
Flag M is valid during the Phi2 clock positive transition. Instructions PLP,
 | 
						||
REP, RTI and SEP may change the state of these bits. Note that the M/X output
 | 
						||
may be invalid in the cycle following a change in the M or X bits. These bits
 | 
						||
may be thought of as opcode extensions and may be used for memory and system
 | 
						||
management.
 | 
						||
 | 
						||
Non-Maskable Interrupt (/NMI)
 | 
						||
A high-to-low transition initiates an intenupt sequence after the current
 | 
						||
instruction is completed. The Wait for Interrupt (WAI) instruction may be
 | 
						||
executed to ensure that the interrupt will be recognized immediately. The
 | 
						||
Non-Maskable Interrupt vector address is 00FFFA,B (Emulation mode) or 00FFEA,B
 | 
						||
(Native mode). Since NMI is an edge-sensitive Input, an interrupt will occur
 | 
						||
if there is a negative transition while servicing a previous interrupt. Also,
 | 
						||
no interrupt will occur if NMI remains low.
 | 
						||
 | 
						||
Phase 1 Out (Phi1 (OUT)) -- G65SC802
 | 
						||
This inverted clock output signal provides timing for external read and write
 | 
						||
operations. Executing the Stop (STP) instruction holds this clock in the low
 | 
						||
state.
 | 
						||
 | 
						||
Phase 2 In (Phi2 (IN))
 | 
						||
This is the system clock input to the microprocessor internal clock generator
 | 
						||
(equivalent to Phi0 (IN) on the 6502). During the low power Standby Mode, Phi2
 | 
						||
(IN) should be held in the high state to preserve the contents of internal
 | 
						||
registers.
 | 
						||
 | 
						||
Phase 2 Out (Phi2 (OUT)) -- G65SC802
 | 
						||
This clock output signal provides timing for external read and write
 | 
						||
operations. Addresses are valid (after the Address Setup Time (TADS))
 | 
						||
following the negative transition of Phase 2 Out. Executing the Stop (STP)
 | 
						||
instruction holds Phase 2 Out in the High state.
 | 
						||
 | 
						||
Read/Write (R/W)
 | 
						||
When the R/W output signal is in the high state, the microprocessor is reading
 | 
						||
data from memory or I/O. When in the low state, the Data Bus contains valid
 | 
						||
data from the microprocessor which is to be stored at the addressed memory
 | 
						||
location. When using the G65SC816, the R/W signal may be set to the high
 | 
						||
impedance state by Bus Enable (BE).
 | 
						||
 | 
						||
Ready (RDY)
 | 
						||
This bidirectional signal indicates that a Wait for Interrupt (WAI) instruction
 | 
						||
has been executed allowing the user to halt operation of the microprocessor.
 | 
						||
A low input logic level will halt the microprocessor in its current state (note
 | 
						||
that when in the Emulation mode, the G65SC802 stops only during a read cycle).
 | 
						||
Returning RDY to the active high state allows the microprocessor to continue
 | 
						||
following the next Phase 2 In Clock negative transition. The RDY signal is
 | 
						||
internally pulled low following the execution of a Wait for Interrupt (WAI)
 | 
						||
instruction, and then returned to the high state when a /RES, /ABORT, /NMI, or
 | 
						||
/IRQ external interrupt is provided. This feature may be used to eliminate
 | 
						||
interrupt latency by placing the WAI instruction at the beginning of the IRQ
 | 
						||
servicing routine. If the IRQ Disable flag has been set, the next instruction
 | 
						||
will be executed when the IRQ occurs. The processor will not stop after a WAI
 | 
						||
instruction if RDY has been forced to a high state. The Stop (STP) instruction
 | 
						||
has no effect on RDY.
 | 
						||
 | 
						||
Reset (/RES)
 | 
						||
The Reset input is used to initialize the microprocessor and start program
 | 
						||
execution. The Reset input buffer has hysteresis such that a simple R-C timing
 | 
						||
circuit may be used with the internal pullup device. The /RES signal must be
 | 
						||
held low for at least two clock cycles after VDD reaches operating voltage.
 | 
						||
Ready (RDY) has no effect while RES is being held low. During this Reset
 | 
						||
conditioning period, the following processor initialization takes place:
 | 
						||
 | 
						||
		   Registers
 | 
						||
 | 
						||
	   D  = 0000		SH = 01
 | 
						||
	   DB = 00		XH = 00
 | 
						||
	   PB = 00		YH = 00
 | 
						||
 | 
						||
		N V M X D I Z C/E
 | 
						||
	   P =  * * 1 1 0 1 * */1
 | 
						||
 | 
						||
		* = Not Initialized
 | 
						||
		STP and WAI instructions are cleared.
 | 
						||
 | 
						||
 | 
						||
	              Signals
 | 
						||
 | 
						||
	   E    = 1		VDA = 0
 | 
						||
	   M/X  = 1		/VP = 1
 | 
						||
	   R/W  = 1		VPA = 0
 | 
						||
	   SYNC = 0
 | 
						||
 | 
						||
 | 
						||
When Reset is brought high, an interrupt sequence is initiated:
 | 
						||
* R/W remains in the high stale during the stack address cycles.
 | 
						||
* The Reset vector address is 00FFFC,D.
 | 
						||
 | 
						||
 | 
						||
Set Overtlow (/SO) -- G65SC802
 | 
						||
A negative transition on this input sets the Overflow (V) flag, bit 6 of the
 | 
						||
Processor Status (P) Register.
 | 
						||
 | 
						||
Synchronlze (SYNC) -- G65SC802
 | 
						||
The SYNC output is provided to identify those cycles during which the
 | 
						||
microprocessor is fetching an opcode. The SYNC signal is high during an opcode
 | 
						||
fetch cycle, and when combined with Ready (RDY), can be used for single
 | 
						||
instruction execution.
 | 
						||
 | 
						||
 | 
						||
Valid Data Address (VDA) and
 | 
						||
Valid Program Address (VPA) -- G65SC816
 | 
						||
These two output signals indicate the type of memory being accessed by
 | 
						||
the address bus. The following coding applies:
 | 
						||
 | 
						||
VDA VPA
 | 
						||
 0   0	Internal Operation -- Address and Data Bus available. Address
 | 
						||
	outputs may be invalid due to low byte additions only.
 | 
						||
 | 
						||
 0   1	Valid program address -- may be used for program cache control.
 | 
						||
 | 
						||
 1   0	Valid data address -- may be used for data cache control.
 | 
						||
 | 
						||
 1   1	Opcode fetch -- may be used for program cache control
 | 
						||
	and single step control.
 | 
						||
 | 
						||
 | 
						||
VDD and Vss
 | 
						||
VDD Vss the positive supply voltage and Vss is system ground. When
 | 
						||
using only one ground on the G65SC802 DIP package, pin 21 preferred.
 | 
						||
 | 
						||
Vector Pull (VP) -- G65SC816 (Also Applies to G65SC802 44-Pin Version)
 | 
						||
The Vector Pull output indicates that a vector location is being addressed
 | 
						||
during an interrupt sequence. /VP is low during the last two interrupt sequence
 | 
						||
cycles, during which time the processor reads the interrupt vector. The /VP
 | 
						||
signal may be used to select and prioritize interrupts from several sources by
 | 
						||
modifying the vector addresses.
 | 
						||
 | 
						||
--------------------------------------------------------------------------
 | 
						||
 | 
						||
8 bits		8 bits		8 bits
 | 
						||
 | 
						||
  DB						DB Data Bank Register
 | 
						||
		  XH		  XL		Index Register (X)
 | 
						||
		  YH		  YL		Index Register (Y)
 | 
						||
  00		  SH		  SL		Stack Pointer  (S)
 | 
						||
		  AH		  AL		Accumulator    (A)
 | 
						||
  PB		  PCH		  PCL		Program Counter (PC)
 | 
						||
						Program Bank Register (PB)
 | 
						||
  00		  DH		  DL		Direct Register (D)
 | 
						||
 | 
						||
		L = Low, H = High
 | 
						||
 | 
						||
 | 
						||
	Processor Status Register (P)
 | 
						||
	____________________________
 | 
						||
	|        1  B           E  |
 | 
						||
	|__________________________|
 | 
						||
	|  N  V  M  X  D  I  Z  C  |
 | 
						||
	|__________________________|
 | 
						||
 | 
						||
	1	Always 1 if E=1
 | 
						||
	B	Break			0 on Stack after interupt if E=1
 | 
						||
	E	Emulation Bit		0= Native mode, 1= 6502 emulation
 | 
						||
 | 
						||
	N	Negative		1= Negative
 | 
						||
	V	Overflow		1= True
 | 
						||
	M	Memory/Acc. Select	1= 8 bit, 0= 16 bit
 | 
						||
	X	Index Register Select	1= 8 bit, 0= 16 bit
 | 
						||
	D	Decimal mode		1= Decimal Mode
 | 
						||
	I	IRQ Disable		1= Disable
 | 
						||
	Z	Zero			1= Result Zero
 | 
						||
	C	Carry			1= True
 | 
						||
 | 
						||
 | 
						||
	Figure 2. Programming model
 | 
						||
 | 
						||
--------------------------------------------------------------------------
 | 
						||
 | 
						||
 | 
						||
Table 1. G65SC802 and G65SC816 Compability
 | 
						||
 | 
						||
   Function			G65SC802/816	G65SC02		NMOS 6502
 | 
						||
				 Emulation
 | 
						||
Decimal Mode:
 | 
						||
* After Interrupts		0 -> D		0 -> D		Not initialized
 | 
						||
* N, Z Flags			Valid		Valid		Undefined
 | 
						||
* ADC, SBC			No added cycle	Add 1 cycle	No added cycle
 | 
						||
 | 
						||
Read-Modify-Write:
 | 
						||
* Absolute Indexed, No Page Crossing
 | 
						||
				7 cycles	6 cycles	7 cycles
 | 
						||
* Write				Last 2 cycles	Last cycle	Last 2 cycles
 | 
						||
* Memory Lock			Last 3 cycles	Last 2 cycles	Not available
 | 
						||
 | 
						||
Jump Indirect:
 | 
						||
* Cycles			5 cycles	6 cycles	5 cycles
 | 
						||
* Jump Address, operand = xxFF	Correct		Correct		Invalid
 | 
						||
 | 
						||
Branch or Index Across Page Boundary
 | 
						||
				Read last	Read last	Read invalid
 | 
						||
				program byte	program byte	address
 | 
						||
 | 
						||
0 -> RDY During Write	G65SC802: Ignored	Processor	Ignored until
 | 
						||
				until read	stops		read
 | 
						||
			G65SC816: Processor
 | 
						||
				stops
 | 
						||
 | 
						||
Write During Reset		No		Yes		No
 | 
						||
 | 
						||
Unused Opcodes			No operation	No operation	Undefined
 | 
						||
 | 
						||
Phi1 (OUT), Phi2 (OUT), /SO, SYNC Signals
 | 
						||
				Available with	Available	Available
 | 
						||
				G65SC802 only
 | 
						||
 | 
						||
RDY Signal			Bidirectional	Input		Input
 | 
						||
 | 
						||
--------------------------------------------------------------------------
 | 
						||
 | 
						||
Table 2. G65SC802 and G65SC816 Mode Comparison
 | 
						||
 | 
						||
   Function		Emulation (E = 1)	Native (E = 0)
 | 
						||
 | 
						||
Stack Pointer (S)	8 bits in page 1	16 bits
 | 
						||
 | 
						||
Direct Index Address	Wrap within page	Crosses page boundary
 | 
						||
 | 
						||
Processor Status (P):
 | 
						||
* Bit 4			Always one, except zero	  X flag (8/16-bit Index)
 | 
						||
			in stack after hardware
 | 
						||
			interrupt
 | 
						||
 | 
						||
* Bit 5			Always one		M flag (8/16-bit Accumulator)
 | 
						||
 | 
						||
 | 
						||
Branch Across Paqe Boundary
 | 
						||
			4 cycles		3 cycles
 | 
						||
 | 
						||
Vector Locations:
 | 
						||
	ABORT		00FFF8,9		00FFF8,9
 | 
						||
	BRK		00FFFE,F		00FFF6,7
 | 
						||
	COP		00FFF4,5		00FFF4,5
 | 
						||
	IRQ		00FFFE,F		00FFFE,F
 | 
						||
	NMI		00FFFA,B		00FFFA,B
 | 
						||
	RES		00FFFC,D		00FFFC,D (1 -> E)
 | 
						||
 | 
						||
 | 
						||
Program Bank (PB) During Interrupt, RTI
 | 
						||
			Not pushed, pulled	Pushed and pulled
 | 
						||
 | 
						||
0 -> RDY During Write
 | 
						||
		G65SC802: Ignored until read	Processor stops
 | 
						||
		G65SC816: Processor stops
 | 
						||
 | 
						||
Write During Read-Modify-Write
 | 
						||
			Last 2 cycles		Last 1 or 2 cycles depending
 | 
						||
						on M flag
 | 
						||
 | 
						||
 | 
						||
G65SC802 and G65SC816
 | 
						||
Microprocessor Addressing modes
 | 
						||
 | 
						||
The G65SC816 is capable of directly addressing 16 MBytes of memory.
 | 
						||
This address space has special significance within certain addressing
 | 
						||
modes, as follows:
 | 
						||
 | 
						||
Reset and Interrupt Vectors
 | 
						||
The Reset and Interrupt vectors use the majority of the fixed addresses
 | 
						||
between 00FFE0 and 00FFFF.
 | 
						||
 | 
						||
Stack
 | 
						||
The Native mode Stack address will always be within the range 000000 to
 | 
						||
00FFFF. In the Emulation mode, the Stack address range is 000100 to 0001FF.
 | 
						||
The following opcodes and addressing modes can increment or decrement beyond
 | 
						||
this range when accessing two or three bytes:
 | 
						||
JSL; JSR (a,x); PEA; PEI; PER; PHD; PLD; RTL; d,s; (d,s),y.
 | 
						||
 | 
						||
Direct
 | 
						||
The Direct addressing modes are often used to access memory registers and
 | 
						||
pointers. The contents of the Direct Register (D) is added to the offset
 | 
						||
contained in the instruction operand to produce an address in the range 000000
 | 
						||
to 00FFFF. Note that in the Emulation mode, [Direct] and [Direct],y addressing
 | 
						||
modes and the PEI instruction will increment from 0000FE or 0000FF into the
 | 
						||
Stack area, even if D=0.
 | 
						||
 | 
						||
Program Address Space
 | 
						||
The Program Bank register is not affected by the Relative, Relative Long,
 | 
						||
Absolute, Absolute Indirect, and Absolute Indexed Indirect addressing modes
 | 
						||
or by incrementing the Program Counter from FFFF. The only instructions that
 | 
						||
affect the Program Bank register are: RTI, RTL, JML, JSL, and JMP Absolute
 | 
						||
Long. Program code may exceed 64K bytes altough code segments may not span
 | 
						||
bank boundaries.
 | 
						||
 | 
						||
Data Address Space
 | 
						||
The data address space is contiguous throughout the 16 MByte address space.
 | 
						||
Words, arrays, records, or any data structures may span 64K byte bank
 | 
						||
boundaries with no compromise in code efficiency. As a result, indexing from
 | 
						||
page FF in the G65SC802 may result in data accessed in page zero. The
 | 
						||
following addressing modes generate 24-bit effective addresses.
 | 
						||
 | 
						||
	* Direct Indexed Indirect (d,x)
 | 
						||
	* Direct Indirect Indexed (d),y
 | 
						||
	* Direct Indirect (d)
 | 
						||
	* Direct Indirect Long [d]
 | 
						||
	* Direct Indirect Indexed Long [d],y
 | 
						||
	* Absolute
 | 
						||
	* Absolute,x
 | 
						||
	* Absolute,y
 | 
						||
	* Absolute long
 | 
						||
	* Absolute long indexed
 | 
						||
	* Stack Relative Indirect Indexed (d,s),y
 | 
						||
 | 
						||
The following addressing mode descriptions provide additional detail as
 | 
						||
to how effective addresses are calculated.
 | 
						||
 | 
						||
Twenty-four addressing modes are available for use with the G65SC802
 | 
						||
and G65SC816 microprocessors. The "long" addressing modes may be
 | 
						||
used with the G65SC802; however, the high byte of the address is not
 | 
						||
available to the hardware. Detailed descriptions of the 24 addressing
 | 
						||
modes are as follows:
 | 
						||
 | 
						||
 | 
						||
1. Immediate Addressing -- #
 | 
						||
The operand is the second byte (second and third bytes when in the 16-bit
 | 
						||
mode) of the instruction.
 | 
						||
 | 
						||
 | 
						||
2. Absolute -- a
 | 
						||
 | 
						||
With Absolute addressing the second and third bytes of the instruction form
 | 
						||
the low-order 16 bits of the effective address. The Data Bank Register
 | 
						||
contains the high-order 8 bits of the operand address.
 | 
						||
 | 
						||
                __________________________
 | 
						||
   Instruction: | opcode | addrl | addrh |
 | 
						||
		~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
						||
   Operand
 | 
						||
   Address:     |  DB    | addrh | addrl |
 | 
						||
 | 
						||
 | 
						||
 | 
						||
3. Absolute Long -- al
 | 
						||
 | 
						||
The second, third, and fourth byte of the instruction form the 24-bit
 | 
						||
effective address.
 | 
						||
 | 
						||
                 __________________________________
 | 
						||
    Instruction: | opcode | addrl | addrh | baddr |
 | 
						||
                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
						||
    Operand
 | 
						||
    Address:     |  baddr | addrh | addrl |
 | 
						||
 | 
						||
 | 
						||
4. Direct -- d
 | 
						||
 | 
						||
The second byte of the instruction is added to the Direct Register
 | 
						||
(D) to form the effective address. An additional cycle is required
 | 
						||
when the Direct Register is not page aligned (DL not equal 0). The
 | 
						||
Bank register is always 0.
 | 
						||
 | 
						||
                 ___________________
 | 
						||
    Instruction: | opcode | offset |
 | 
						||
                 ~~~~~~~~~~~~~~~~~~~
 | 
						||
                          | Direct Register   |
 | 
						||
 | 
						||
                         +         |  offset  |
 | 
						||
                          ---------------------
 | 
						||
    Operand
 | 
						||
    Address:     |  00    | effective address |
 | 
						||
 | 
						||
 | 
						||
5. Accumulator -- A
 | 
						||
This form of addressing always uses a single byte instruction. The
 | 
						||
operand is the Accumulator.
 | 
						||
 | 
						||
 | 
						||
6. Implied -- i
 | 
						||
 | 
						||
Implied addressing uses a single byte instruction. The operand is implicitly
 | 
						||
defined by the instruction.
 | 
						||
 | 
						||
 | 
						||
7. Direct Indirect Indexed -- (d),y
 | 
						||
 | 
						||
This address mode is often referred to as Indirect,Y. The second byte of the
 | 
						||
instruction is added to the Direct Register (D). The 16-bit contents of this
 | 
						||
memory location is then combined with the Data Bank register to form a 24-bit
 | 
						||
base address. The Y Index Register is added to the base address to form the
 | 
						||
effective address.
 | 
						||
 | 
						||
                 ___________________
 | 
						||
    Instruction: | opcode | offset |
 | 
						||
                 ~~~~~~~~~~~~~~~~~~~
 | 
						||
                          | Direct Register   |
 | 
						||
 | 
						||
                         +         |  offset  |
 | 
						||
                          ---------------------
 | 
						||
                 |  00    |  direct address   |
 | 
						||
 | 
						||
 | 
						||
    then:
 | 
						||
                 |  00    | (direct address)  |
 | 
						||
 | 
						||
               + |  DB    |
 | 
						||
                -------------------------------
 | 
						||
                 |         base address       |
 | 
						||
 | 
						||
               +          |        |  Y Reg   |
 | 
						||
                 ------------------------------
 | 
						||
    Operand
 | 
						||
    Address:     |     effective address      |
 | 
						||
 | 
						||
 | 
						||
 | 
						||
8. Direct Indirect Indexed Long -- [d],y
 | 
						||
 | 
						||
With this addressing mode the 24-bit base address is pointed to by
 | 
						||
the sum of the second byte of the instruction and the Direct
 | 
						||
Register The effective address is this 24-bit base address plus the Y
 | 
						||
Index Register
 | 
						||
 | 
						||
                 ___________________
 | 
						||
    Instruction: | opcode | offset |
 | 
						||
                 ~~~~~~~~~~~~~~~~~~~
 | 
						||
                          | Direct Register   |
 | 
						||
 | 
						||
                         +         |  offset  |
 | 
						||
                          ---------------------
 | 
						||
                 |  00    |  direct address   |
 | 
						||
 | 
						||
 | 
						||
    then:
 | 
						||
                 |       (direct address)     |
 | 
						||
 | 
						||
               +          |        |  Y Reg   |
 | 
						||
                 ------------------------------
 | 
						||
    Operand
 | 
						||
    Address:     |     effective address      |
 | 
						||
 | 
						||
 | 
						||
 | 
						||
9. Direct Indexed Indirect -- (d,x)
 | 
						||
 | 
						||
This address mode is often referred to as Indirect X The second
 | 
						||
byte of the Instruction is added to the sum of the Direct Register
 | 
						||
and the X Index Register. The result points to the low-order 16 bits
 | 
						||
of the effective address. The Data Bank Register contains the high-
 | 
						||
order 8 bits of the effective address.
 | 
						||
 | 
						||
                 ___________________
 | 
						||
    Instruction: | opcode | offset |
 | 
						||
                 ~~~~~~~~~~~~~~~~~~~
 | 
						||
                          | Direct Register   |
 | 
						||
 | 
						||
                         +         |  offset  |
 | 
						||
                          ---------------------
 | 
						||
                          |  direct address   |
 | 
						||
 | 
						||
                        + |        |  X Reg   |
 | 
						||
                          ---------------------
 | 
						||
                 |  00    |      address      |
 | 
						||
 | 
						||
 | 
						||
    then:
 | 
						||
                 |  00    |     (address)     |
 | 
						||
 | 
						||
               + |  DB    |
 | 
						||
                -------------------------------
 | 
						||
    Operand
 | 
						||
    Address:     |     effective address      |
 | 
						||
 | 
						||
 | 
						||
 | 
						||
10. Direct Indexed With X -- d,x
 | 
						||
 | 
						||
The second byte of the instruction is added to the sum of the Direct Register
 | 
						||
and the X Index Register to form the 16-bit effective address. The operand is
 | 
						||
always in Bank 0.
 | 
						||
 | 
						||
                 ___________________
 | 
						||
    Instruction: | opcode | offset |
 | 
						||
                 ~~~~~~~~~~~~~~~~~~~
 | 
						||
                          | Direct Register   |
 | 
						||
 | 
						||
                         +         |  offset  |
 | 
						||
                          ---------------------
 | 
						||
                          |  direct address   |
 | 
						||
 | 
						||
                        + |        |  X Reg   |
 | 
						||
                -------------------------------
 | 
						||
    Operand
 | 
						||
    Address:     |  00    | effective address |
 | 
						||
 | 
						||
 | 
						||
 | 
						||
11. Direct Indexed With Y -- d,y
 | 
						||
 | 
						||
The second byte of the instruction is added to the sum of the Direct Register
 | 
						||
and the Y Index Register to form the 16-bit effective address. The operand is
 | 
						||
always in Bank 0.
 | 
						||
 | 
						||
                 ___________________
 | 
						||
    Instruction: | opcode | offset |
 | 
						||
                 ~~~~~~~~~~~~~~~~~~~
 | 
						||
                          | Direct Register   |
 | 
						||
 | 
						||
                         +         |  offset  |
 | 
						||
                          ---------------------
 | 
						||
                          |  direct address   |
 | 
						||
 | 
						||
                        + |        |  Y Reg   |
 | 
						||
                -------------------------------
 | 
						||
    Operand
 | 
						||
    Address:     |  00    | effective address |
 | 
						||
 | 
						||
 | 
						||
 | 
						||
12. Absolute Indexed With X -- a,x
 | 
						||
 | 
						||
The second and third bytes of the instruction are added to the
 | 
						||
X Index Register to form the low-order 16 bits of the ef~ective ad-
 | 
						||
dress The Data Bank Register contains the high-order 8 bits of the
 | 
						||
effective address
 | 
						||
 | 
						||
                 ____________________________
 | 
						||
    Instruction: | opcode | addrl  | addrh  |
 | 
						||
                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
						||
                 |  DB    | addrrh | addrl  |
 | 
						||
 | 
						||
                        + |        |  X Reg |
 | 
						||
                -------------------------------
 | 
						||
    Operand
 | 
						||
    Address:     |     effective address    |
 | 
						||
 | 
						||
 | 
						||
 | 
						||
13. Absolute Indexed With Y -- a,y
 | 
						||
 | 
						||
The second and third bytes of the instruction are added to the
 | 
						||
Y Index Register to form the low-order 16 bits of the eftective ad-
 | 
						||
dress The Data Bank Register contains the high-order 8 bits of tne
 | 
						||
effective address.
 | 
						||
 | 
						||
                 ____________________________
 | 
						||
    Instruction: | opcode | addrl  | addrh  |
 | 
						||
                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
						||
                 |  DB    | addrrh | addrl  |
 | 
						||
 | 
						||
                        + |        |  Y Reg |
 | 
						||
                -------------------------------
 | 
						||
    Operand
 | 
						||
    Address:     |     effective address    |
 | 
						||
 | 
						||
 | 
						||
 | 
						||
14. Absolute Long Indexed With X -- al,x
 | 
						||
 | 
						||
The second third and fourth bytes ot the instruction form a 24-bit base
 | 
						||
address. The effective address is the sum of this 24-bit address and the
 | 
						||
X Index Register.
 | 
						||
 | 
						||
                 ____________________________________
 | 
						||
    Instruction: | opcode | addrl  | addrh  | baddr |
 | 
						||
                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
						||
                 |  baddr | addrrh | addrl  |
 | 
						||
 | 
						||
                        + |        |  X Reg |
 | 
						||
                -------------------------------
 | 
						||
    Operand
 | 
						||
    Address:     |     effective address    |
 | 
						||
 | 
						||
 | 
						||
 | 
						||
15. Program Counter Relative -- r
 | 
						||
 | 
						||
This address mode referred to as Relative Addressing is used only with the
 | 
						||
Branch instructions. If the conditlon being tested is met, the second byte
 | 
						||
of the instruction is added to the Program Counter, which has been updated
 | 
						||
to point to the opcode of the next instruction. The offset is a signed 8-bit
 | 
						||
quantity in the range from -128 to 127 The Program Bank Register is not
 | 
						||
affected.
 | 
						||
 | 
						||
 | 
						||
16. Program Counter Relative Long -- rl
 | 
						||
 | 
						||
This address mode referred to as Relative Long Addressing is used only with
 | 
						||
the Unconditional Branch Long instruction (BRL) and the Push Effective
 | 
						||
Relative instruction (PER). The second and third 2 bytes of the instruction
 | 
						||
are added to the Program Counter which has been updated to point to the opcode
 | 
						||
of the next instruction. With the branch instruction the Program Counter is
 | 
						||
loaded with the result With the Push Effective Relative instruction the result
 | 
						||
is stored on the stack. The offset and result are both an unsigned 16-bit
 | 
						||
quantity in the range 0 to 65535.
 | 
						||
 | 
						||
 | 
						||
17. Absolute Indirect -- (a)
 | 
						||
 | 
						||
The second and third bytes of the instruction form an address to a pointer
 | 
						||
in Bank 0. The Program Counter is loaded with the first and second bytes at
 | 
						||
this pointer With the Jump Long (JML) instruction the Program Bank Register
 | 
						||
is loaded with the third byte of the pointer
 | 
						||
 | 
						||
                 ____________________________
 | 
						||
    Instruction: | opcode | addrl  | addrh  |
 | 
						||
                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
						||
                 |  baddr | addrrh | addrl  |
 | 
						||
 | 
						||
 | 
						||
    Indirect Address = |   00   | addrh  | addrl  |
 | 
						||
 | 
						||
    New PC = (indirect address)
 | 
						||
 | 
						||
 with JML:
 | 
						||
 | 
						||
    New PC = (indirect address)
 | 
						||
 | 
						||
    New PB = (indirect address +2)
 | 
						||
 | 
						||
 | 
						||
 | 
						||
18. Direct Indirect -- (d)
 | 
						||
 | 
						||
The second byte of the instruction is added to the Direct Register to form
 | 
						||
a pointer to the low-order 16 bits of the effective address. The Data Bank
 | 
						||
Register contains the high-order 8 bits of the effective address.
 | 
						||
 | 
						||
 | 
						||
                 ___________________
 | 
						||
    Instruction: | opcode | offset |
 | 
						||
                 ~~~~~~~~~~~~~~~~~~~
 | 
						||
                          | Direct Register   |
 | 
						||
 | 
						||
                         +         |  offset  |
 | 
						||
                          ---------------------
 | 
						||
                 |  00    |  direct address   |
 | 
						||
 | 
						||
 | 
						||
    then:
 | 
						||
                 |  00    | (direct address)  |
 | 
						||
 | 
						||
               + |  DB    |
 | 
						||
                -------------------------------
 | 
						||
    Operand
 | 
						||
    Address:     |     effective address      |
 | 
						||
 | 
						||
 | 
						||
 | 
						||
19. Direct Indirect Long -- [d]
 | 
						||
 | 
						||
The second byte of the instruction is added to the Direct Register to form
 | 
						||
a pointer to the 24-bit effective address.
 | 
						||
 | 
						||
                 ___________________
 | 
						||
    Instruction: | opcode | offset |
 | 
						||
                 ~~~~~~~~~~~~~~~~~~~
 | 
						||
                          | Direct Register   |
 | 
						||
 | 
						||
                         +         |  offset  |
 | 
						||
                          ---------------------
 | 
						||
                 |  00    |  direct address   |
 | 
						||
 | 
						||
 | 
						||
    then:
 | 
						||
                -------------------------------
 | 
						||
    Operand
 | 
						||
    Address:     |       (direct address)     |
 | 
						||
 | 
						||
 | 
						||
 | 
						||
20. Absolute Indexed Indirect -- (a,x)
 | 
						||
 | 
						||
The second and third bytes of the instruction are added to the X Index
 | 
						||
Register to form a 16-bit pointer in Bank 0. The contents of this pointer
 | 
						||
are loaded in the Program Counter. The Program Bank Register is not changed.
 | 
						||
 | 
						||
                 ____________________________
 | 
						||
    Instruction: | opcode | addrl  | addrh  |
 | 
						||
                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
						||
                          | addrrh | addrl  |
 | 
						||
 | 
						||
                        + |        |  X Reg |
 | 
						||
                -------------------------------
 | 
						||
                 |  00    |    address      |
 | 
						||
 | 
						||
    then:
 | 
						||
	PC = (address)
 | 
						||
 | 
						||
 | 
						||
 | 
						||
21. Stack -- s
 | 
						||
 | 
						||
Stack addressing refers to all instructions that push or pull data from the
 | 
						||
stack such as Push, Pull, Jump to Subroutine, Return from Subroutine,
 | 
						||
Interrupts, and Return from Interrupt. The bank address is always 0.
 | 
						||
Interrupt Vectors are always fetched from Bank 0.
 | 
						||
 | 
						||
 | 
						||
22. Stack Relative -- d,s
 | 
						||
 | 
						||
The low-order 16 bits of the effective address is formed from the sum of the
 | 
						||
second byte of the instruction and the Stack Pointer. The high-order 8 bits
 | 
						||
of the effective address is always zero. The relative offset is an unsigned
 | 
						||
8-bit quantity in the range of 0 to 255.
 | 
						||
 | 
						||
                 ___________________
 | 
						||
    Instruction: | opcode | offset |
 | 
						||
                 ~~~~~~~~~~~~~~~~~~~
 | 
						||
                          |   Stack Pointer   |
 | 
						||
 | 
						||
                         +         |  offset  |
 | 
						||
                          ---------------------
 | 
						||
                 |  00    | effective address |
 | 
						||
 | 
						||
 | 
						||
 | 
						||
23. Stack Relative Indirect Indexed -- (d,s),y
 | 
						||
 | 
						||
The second byte of the instruction is added to the Stack Pointer to form
 | 
						||
a pointer to the low-order 16-bit base address in Bank 0. The Data Bank
 | 
						||
Register contains the high-order 8 bits of the base address. The effective
 | 
						||
address is the sum of the 24-bit base address and the Y Index Register.
 | 
						||
 | 
						||
                 ___________________
 | 
						||
    Instruction: | opcode | offset |
 | 
						||
                 ~~~~~~~~~~~~~~~~~~~
 | 
						||
                          |   Stack Pointer   |
 | 
						||
 | 
						||
                         +         |  offset  |
 | 
						||
                          ---------------------
 | 
						||
                 |  00    |     S + offset    |
 | 
						||
 | 
						||
 | 
						||
    then:
 | 
						||
                          |     S + offset    |
 | 
						||
 | 
						||
               + |  DB    |
 | 
						||
                -------------------------------
 | 
						||
                 |         base address       |
 | 
						||
 | 
						||
               +          |        |  Y Reg   |
 | 
						||
                 ------------------------------
 | 
						||
    Operand
 | 
						||
    Address:     |     effective address      |
 | 
						||
 | 
						||
 | 
						||
 | 
						||
24. Block Source Bank, Destination Bank -- xyc
 | 
						||
 | 
						||
This addressing mode is used by the Block Move instructions.
 | 
						||
The second byte of the instruction contains the high-order 8 bits of the
 | 
						||
destination address.
 | 
						||
The Y Index Register contains the low-order 16 bits of the destination
 | 
						||
address. The third byte of the instruction contains the high-order 8 bits
 | 
						||
of the source address.
 | 
						||
The X Index Register contains the low-order 16 bits of the source address.
 | 
						||
The Accumulator contains one less than the number of bytes to move.
 | 
						||
The second byte of the block move instructions is also loaded into the Data
 | 
						||
Bank Register.
 | 
						||
 | 
						||
                 ____________________________
 | 
						||
    Instruction: | opcode | dstbnk | srcbnk |
 | 
						||
                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
						||
 | 
						||
                   dstbnk  -> DB
 | 
						||
 | 
						||
    Source Address:       | scrbnk |      X reg      |
 | 
						||
 | 
						||
    Destination Address:  |   DB   |      Y reg      |
 | 
						||
 | 
						||
 | 
						||
       Increment (MVN) or decrement (MVP) X and Y.
 | 
						||
       Decrement A (if greaterthan zero) then PC-3 -> PC.
 | 
						||
 | 
						||
 | 
						||
Notes on G65SC802/816 Instructions
 | 
						||
 | 
						||
All Opcodes Function in All Modes of Operation
 | 
						||
 | 
						||
It should be noted that all opcodes function in all modes of operation.
 | 
						||
However, some instructions and addressing modes are intended for G65SC816
 | 
						||
24-bit addressing and are therefore less useful for the G65SC802. The
 | 
						||
following is a list of Instructions and addressing modes which are primarily
 | 
						||
intended for G65SC816 use:
 | 
						||
 | 
						||
	JSL; RTL; [d]; [d],y; JMP al; JML; al; al,x
 | 
						||
 | 
						||
The following instructions may be used with the G65SC802 even though a
 | 
						||
Bank Address is not multiplexed on the Data Bus:
 | 
						||
 | 
						||
	PHK; PHB; PLB
 | 
						||
 | 
						||
The following instructions have "limited" use in the Emulation mode.
 | 
						||
 | 
						||
* The REP and SEP instructions cannot modify the M and X bits when in the
 | 
						||
Emulation mode. In this mode the M and X bits will always be high (logic 1).
 | 
						||
 | 
						||
* When in the Emulation mode, the MVP and MVN instructions only move date
 | 
						||
in page zero since X and Y Index Register high byte is zero.
 | 
						||
 | 
						||
 | 
						||
Indirect Jumps
 | 
						||
 | 
						||
The JMP (a) and JML (a) instructions use the direct Bank for indirect
 | 
						||
addressing, while JMP (a,x) and JSR (a,x) use the Program Bank for indirect
 | 
						||
address tables.
 | 
						||
 | 
						||
 | 
						||
Switching Modes
 | 
						||
 | 
						||
When switching from the Native mode to the Emulation mode, the X and M bits
 | 
						||
of the Status Register are set high (logic 1), the high byte of the Stack is
 | 
						||
set to 01, and the high bytes of the X and Y Index Registers are set to 00.
 | 
						||
To save previous values, these bytes must always be stored before changing
 | 
						||
modes. Note that the low byte of the S, X and Y Registers and the low and high
 | 
						||
byte of the Accumulator AL and AH are not affected by a mode change.
 | 
						||
 | 
						||
 | 
						||
WAI Instruction
 | 
						||
 | 
						||
The WAI instruction pulls RDY low and places the processor in the WAI
 | 
						||
"low power" mode. /NMI, /IRQ or /RESET will terminate the WAI condition and
 | 
						||
transfer control to the interrupt handler routine. Note that an /ABORT input
 | 
						||
will abort the WAI instruction, but will not restart the processor. When the
 | 
						||
Status Register I flag is set (IRQ disabled), the IRQ interrupt will cause the
 | 
						||
next instruction (following the WAI instruction) to be executed without going
 | 
						||
to the IRQ interrupt handler. This method results in the highest speed response
 | 
						||
to an IRQ input. When an interrupt is received after an ABORT which occurs
 | 
						||
during the WAI instruction, the processor will return to the WAI instruction.
 | 
						||
Other than RES (highest priority), ABORT is the next highest priority, followed
 | 
						||
by NMI or IRQ interrupts.
 | 
						||
 | 
						||
 | 
						||
STP Instruction
 | 
						||
 | 
						||
The STP instruction disables the Phi2 clock to all circuitry. When disabled,
 | 
						||
the Phi2 clock is held in the high state. In this case, the Data Bus will
 | 
						||
remain in the data transfer state and the Bank address will not be multiplexed
 | 
						||
onto the Data Bus. Upon executing the STP instruction, the /RES signal is the
 | 
						||
only input which can restart the processor. The processor is restarted by
 | 
						||
enabling the Phi2 clock, which occurs on the falling edge of the /RES input.
 | 
						||
Note that the external oscillator must be stable and operating properly before
 | 
						||
RES goes high.
 | 
						||
 | 
						||
 | 
						||
Tranters trom 8-Bit to 16-Bit, or 16-Bit to 8-Bit Registers
 | 
						||
 | 
						||
All transfefs from one register to another will result in a full 16-bit output
 | 
						||
from the source register. The destination register size will determine the
 | 
						||
number of bits actually stored in the destination register and the values
 | 
						||
stored in the processor Status Register. The following are always 16-bit
 | 
						||
transfers, regardless of the accumulator size:
 | 
						||
 | 
						||
	TCS; TSC; TCD; TDC
 | 
						||
 | 
						||
 | 
						||
Stack Transfers
 | 
						||
 | 
						||
When in the Emulation mode, a 01 is forced into SH. In this case, the B
 | 
						||
Accumulator will not be loaded into SH during a TCS instruction. When in the
 | 
						||
Native mode, the B Accumulator is transferred to SH. Note that in both the
 | 
						||
Emulation and Native modes, the full 16 bits of the Stack Register are
 | 
						||
transferred to the Accumulator, regardless of the state of the M bit in the
 | 
						||
Status Register.
 | 
						||
 | 
						||
 | 
						||
	Interrupt Processing Sequence
 | 
						||
 | 
						||
 | 
						||
The interrupt processing sequence is initiated as the direct result of hard-
 | 
						||
vare Abort, Interrupt Request, Non-Maskable Interrupt, or Reset inputs.
 | 
						||
The interrupt sequence can also be initiated as a result of the Break or
 | 
						||
Co-Processor instructions within the software. The following listings
 | 
						||
describe the function of each cycle in the interrupt processing sequence:
 | 
						||
 | 
						||
 | 
						||
Hardware Interrupt /ABORT, /IRQ, /NMI, /RES Inputs
 | 
						||
 | 
						||
Cycle No.
 | 
						||
 E = 0 E = 1 Address  Data   R/W  SYNC VDA VPA  VP Description
 | 
						||
 | 
						||
   1     1    PC        X     1    1    1   1   1  Internal Operation
 | 
						||
   2     2    PC        X     1    0    0   0   1  Internal Operation
 | 
						||
   3    [1]    S       PB     0    0    1   0   1  Write PB to Stack, S-1<>S
 | 
						||
   4     3     S     PCH [2] 0[3]  0    1   0   1  Write PCH to Stack, S-1<>S
 | 
						||
   5     4     S     PCL 12] 0[3]  0    1   0   1  Write PCL to Stack, S-1<>S
 | 
						||
   6     5     S      P [4]  0[3]  0    1   0   1  Write P to Stack, S-1<>S
 | 
						||
   7     6    VL      (VL)    1    0    1   0   0  Read Vector Low Byte,
 | 
						||
							 0->PD, 1->P1, OO->PB
 | 
						||
   8     7    VH      (VH)    1    0    1   0   0  Read Vector High 8yte
 | 
						||
 | 
						||
 | 
						||
Software Interrupt - BRK, COP Instructions
 | 
						||
 | 
						||
Cycle No.
 | 
						||
 E = 0 E = 1 Address  Data   R/W  SYNC VDA VPA  VP Description
 | 
						||
   1     1   PC-2       X     1    1    1   1   1  Opcode
 | 
						||
   2     2   PC-1       X     1    0    0   1   1  Signature
 | 
						||
   3    111    S       PB     0    0    1   0   1  Write PB to Stack, S-1<>S
 | 
						||
   4     3     S       PCH    0    0    1   0   1  Write PCH to Stack, S-1 - S
 | 
						||
   5     4     S       PCL    0    0    1   0   1  Write PCL to Stack, S-1<>S
 | 
						||
   6     5     S        P     0    0    1   0   1  Write P to Stack, S-1<>S
 | 
						||
   7     6    VL      (VL)    1    0    1   0   0  Read Vector Low Byte,
 | 
						||
							 0<>Po, 1<>Pl, 00<30>PB
 | 
						||
   8     7    VH      (VH)    1    0    1   0   0  Read Vector High Byte
 | 
						||
 | 
						||
Notes:
 | 
						||
	[1] Delete this cycle in Emulation mode.
 | 
						||
	[2] Abort writes address of aborted opcode.
 | 
						||
	[3] R/W remains in the high state during Reset.
 | 
						||
	[4] In Emulation mode, bit 4 written to stack is changed to 0.
 | 
						||
 | 
						||
 | 
						||
 | 
						||
	Table 3. Vector Locations
 | 
						||
 | 
						||
				Emulation   Native	Priority
 | 
						||
	Name	Source		(E = 1)	    (E = 0)	Level
 | 
						||
 | 
						||
	ABORT	Hardware	00FFF8,9    00FFE8,9	 2
 | 
						||
	BRK	Software	00FFFE,F    00FFE6,7	N/A
 | 
						||
	COP	Software	00FFF4,5    00FFE4,5	N/A
 | 
						||
	IRQ	Hardware	00FFFE,F    00FFEE,F	 4
 | 
						||
	NMI	Hardware	00FFFA,B    00FFEA,B	 3
 | 
						||
	RES	Hardware	00FFFC.D    00FFFC,D	 1
 | 
						||
 | 
						||
 | 
						||
    Table 4. G65SC802 and G65SC816 Instruction Set -- Alphabetical Sequence
 | 
						||
 | 
						||
	ADC	Add Memory to Accumulator with Carry
 | 
						||
	AND	"AND" Memory with Accumulator
 | 
						||
	ASL	Shift One Bit Left, Memory or Accumulator
 | 
						||
	BCC*	Branch on Carry Clear (Pe = O)
 | 
						||
	BCS*	Branch on Carry Set (Pe = 1)
 | 
						||
	BEQ	Branch if Equal (Pz = 1)
 | 
						||
	BIT	Bit Test
 | 
						||
	BMI	Branch if Result Minus (PN = 1)
 | 
						||
	BNE	Branch if Not Equal (Pz = 0)
 | 
						||
	BPL	Branch if Result Plus (PN = 0)
 | 
						||
	BRA	Branch Always
 | 
						||
	BRK	Force Break
 | 
						||
	BRL	Branch Always Long
 | 
						||
	BVC	Branch on Overflow Clear (Pv = 0)
 | 
						||
	BVS	Branch on Overflow Set (Pv = 1)
 | 
						||
	CLC	Clear Carry Flag
 | 
						||
	CLD	Clear Decimal Mode
 | 
						||
	CLI	Clear Interrupt Disable Bit
 | 
						||
	CLV	Clear Overflow Flag
 | 
						||
	CMP*	Compare Memory and Accumulator
 | 
						||
	COP	Coprocessor
 | 
						||
	CPX	Compare Memory and Index X
 | 
						||
	CPY	Compare Memory and Index Y
 | 
						||
	DEC*	Decrement Memory or Accumulator by One
 | 
						||
	DEX	Decrement Index X by One
 | 
						||
	DEY	Decrement Index Y by One
 | 
						||
	EOR	Exclusive "OR" Memory with Accumulator
 | 
						||
	INC*	Increment Memory or Accumulator by One
 | 
						||
	INX	Increment Index X by One
 | 
						||
	INY	Increment Index Y by One
 | 
						||
	JML**	Jump Long
 | 
						||
	JMP	Jump to New Location
 | 
						||
	JSL**	Jump Subroutine Long
 | 
						||
	JSR	Jump to New Location Saving Return Address
 | 
						||
	LDA	Load Accumulator with Memory
 | 
						||
	LDX	Load Index X with Memory
 | 
						||
	LDY	Load Index Y with Memory
 | 
						||
	LSR	Shift One Bit Right (Memory or Accumulator)
 | 
						||
	MVN	Block Move Negative
 | 
						||
	MVP	Block Move Positive
 | 
						||
	NOP	No Operation
 | 
						||
	ORA	"OR" Memory with Accumulator
 | 
						||
	PEA	Push Effective Absolute Address on Stack (or Push Immediate Data on Stack)
 | 
						||
	PEI	Push Effective Indirect Address on Stack (add one cycle if DL f 0)
 | 
						||
	PER	Push Effective Program Counter Relative Address on Stack
 | 
						||
	PHA	Push Accumulator on Stack
 | 
						||
	PHB	Push Data Bank Register on Stack
 | 
						||
	PHD	Push Direct Register on Stack
 | 
						||
	PHK	Push Program Bank Register on Stack
 | 
						||
	PHP	Push Processor Status on Stack
 | 
						||
	PHX	Push Index X on Stack
 | 
						||
	PHY	Push index Y on Stack
 | 
						||
	PLA	Pull Accumulator from Stack
 | 
						||
	PLB	Pull Data Bank Register from Stack
 | 
						||
	PLD	Pull Direct Register from Stack
 | 
						||
	PLP	Pull Processor Status from Stack
 | 
						||
	PLX	Pull Index X from Stack
 | 
						||
	PLY	Pull Index Y form Stack
 | 
						||
	REP	Reset Status Bits
 | 
						||
	ROL	Rotate One Bit Left (Memory or Accumulator)
 | 
						||
	ROR	Rotate One Bit Right (Memory or Accumulator)
 | 
						||
	RTI	Return from Interrupt
 | 
						||
	RTL	Return from Subroutine Long
 | 
						||
	RTS	Return from Subroutine
 | 
						||
	SBC	Subtract Memory from Accumulator with Borrow
 | 
						||
	SEC	Set Carry Flag
 | 
						||
	SED	Set Decimal Mode
 | 
						||
	SEI	Set Interrupt Disable Status
 | 
						||
	SEP	Set Processor Status Bits
 | 
						||
	STA	Store Accumulator in Memory
 | 
						||
	STP	Stop the Clock
 | 
						||
	STX	Store Index X in Memory
 | 
						||
	STY	Store Index Y in Memory
 | 
						||
	STZ	Store Zero in Memory
 | 
						||
	TAX	Transfer Accumulator to Index X
 | 
						||
	TAY	Transfer Accumulator to Index Y
 | 
						||
	TCD*	Transfer Accumulator to Direct Register
 | 
						||
	TCS*	Transfer Accumulator to Stack Pointer Register
 | 
						||
	TDC*	Transfer Direct Register to Accumulator
 | 
						||
	TRB	Test and Reset Bit
 | 
						||
	TSB	Test and Set Bit
 | 
						||
	TSC*	Transfer Stack Pointer Register to Accumulator
 | 
						||
	TSX	Transfer Stack Pointer Register to Index X
 | 
						||
	TXA	Transfer Index X to Accumulator
 | 
						||
	TXS	Transfer Index X to Stack Polnter Register
 | 
						||
	TXY	Transfer Index X to Index Y
 | 
						||
	TYA	Transfer Index Y to Accumulator
 | 
						||
	TYX	Transfer Index Y to Index X
 | 
						||
	WAI	Wait for Interrupt
 | 
						||
	XBA*	Exchange AH and AL
 | 
						||
	XCE	Exchange Carry and Emulation Bits
 | 
						||
 | 
						||
 | 
						||
	*) Common Mnemonic Aliases
 | 
						||
 | 
						||
		Mnemonic	Alias
 | 
						||
		BCC		BLT
 | 
						||
		BCS		BGE
 | 
						||
		CMP		CPA
 | 
						||
		DEC A		DEA
 | 
						||
		INC A		INA
 | 
						||
		TCD		TAD
 | 
						||
		TCS		TAS
 | 
						||
		TDC		TDA
 | 
						||
		TSC		TSA
 | 
						||
		XBA		SWA
 | 
						||
 | 
						||
	**)	JSL should be recognized as equivalent to JSR
 | 
						||
			when it is specified with long absolute addresses.
 | 
						||
		JML is equivalent to JMP with long addressing forced.
 | 
						||
 | 
						||
 | 
						||
 | 
						||
				-13-
 | 
						||
 | 
						||
 | 
						||
	 Table 5. Arithmetic and Logical Instructions
 | 
						||
 | 
						||
Mne-			  Operation						Addressing Mode							Status
 | 
						||
monic	M/X	E=1 or			E = 0 and	               dir, dir, (dir) (dir, (dir) [dir] abs abs, abs, absl absl d,s (d,s)
 | 
						||
		E=0 and M/X=1		M/X = 0		Immed Accu dir   x    y          x)   ,y               x    y        ,x        ,y	N V M X D I Z C
 | 
						||
 | 
						||
ADC	Pm	AL + B + Pc -> AL	A + W + Pc -> A	 69        65   75         72    61   71    67    6D  7D   79   6F   7F   63   73	N V . . . . Z C
 | 
						||
AND	Pm	AL /\B -> AL		A /\W -> A	 29        25   35         32    21   31    27    2D  3D   39   2F   3F   23   33	N . . . . . Z .
 | 
						||
ASL	Pm	Pc <-B <- 0		Pc <- W <- 0	      0A   06   16				  0E  1E				N . . . . . Z C
 | 
						||
BIT	Pm	AL /\B			A /\W		 89        24   34				  2C  3C				N V . . . . Z .
 | 
						||
 | 
						||
CMP	Pm	AL - B			A - W		 C9        C5   D5         D2    C1   D1    C7    CD  DD   D9   CF   DF   C3   D3	N . . . . . Z C
 | 
						||
CPX	Px	XL - B			X - W		 E0        E4					  EC					N . . . . . Z C
 | 
						||
CPY	Px	YL - B			Y - W		 C0        C4					  CC					N . . . . . Z C
 | 
						||
DEC	Pm	B  - 1 -> B		W - 1 -> W	      3A   C6   D6				  CE  DE				N . . . . . Z .
 | 
						||
 | 
						||
EOR	Pm	AL V- B -> AL		A V- W -> A	 49        45   55         52    41   51    47    4D  5D   59   4F   5F   43   53	N . . . . . Z .
 | 
						||
INC	Pm	B  + 1 -> B		W + 1 -> W	      1A   E6   F6				  EE  FE				N . . . . . Z .
 | 
						||
LDA	Pm	B  -> AL		W -> A		 A9        A5   B5         B2    A1   B1    B7    AD  BD   B9   AF   BF   A3   B3	N . . . . . Z .
 | 
						||
LDX	Px	B  -> XL		W -> X		 A2        A6         B6			  AE       BE				N . . . . . Z .
 | 
						||
 | 
						||
LDY	Px	B  -> YL		W -> Y		 A0        A4   B4				  AC  BC				N . . . . . Z .
 | 
						||
LSR	Pm	0  -> B -> Pc		0 -> W -> Pc	      4A   46   56				  4E  5E				0 . . . . . Z C
 | 
						||
ORA	Pm	AL V B -> AL		A V W -> A	 09        05   15         12    01   11    17    0D  1D   19   0F   1F   03   13	N . . . . . Z .
 | 
						||
ROL	Pm	Pc <- B <- Pc		Pc <- W <- Pc	      2A   26   36				  2E  3E				N . . . . . Z C
 | 
						||
 | 
						||
ROR	Pm	Pc -> B -> Pc		Pc -> W -> Pc	      6A   66   76				  6E  7E				N . . . . . Z C
 | 
						||
SBC	Pm	AL - B - Pc -> AL	A - W - Pc -> A	 E9        E5   F5         F2    E1   F1    F7    ED  FD   F9   EF   FF   E3   F3	N V . . . . Z C
 | 
						||
STA	Pm	AL -> B			A -> W		           85   95         92    81   91    97    8D  9D   99   8F   9F   83   93	. . . . . . . .
 | 
						||
STX	Px	XL -> B			X -> W		           86         96			  8E					. . . . . . . .
 | 
						||
 | 
						||
STY	Px	YL -> B			Y -> W		           84   94				  8C					. . . . . . . .
 | 
						||
STZ	Pm	0  -> B			0 -> W		           64   74				  9C  9E				. . . . . . . .
 | 
						||
TRB	Pm	/AL /\ B -> B		/A /\ W -> W	           14					  1C					. . . . . . Z .
 | 
						||
TSB	Pm	AL V B -> B		A V W -> W	           04					  0C					. . . . . . Z .
 | 
						||
 | 
						||
 | 
						||
 | 
						||
  V	logical OR		  B    byte per effective address
 | 
						||
  /\	logical AND		  W    word per effective address
 | 
						||
  V-	logical exclusive OR      r    relative offset
 | 
						||
  +	arithmetic addition	  A    Accumulator, AL low half of Accumulator
 | 
						||
  -	arithmetic subtraction    X    Index Register, XL low half of X register
 | 
						||
  !=	not equal		  Y    Index Register, YL low half of Y register
 | 
						||
  .	status bit not affected   Pc   carry bit
 | 
						||
  /	negation		  M/X  effective mode bit in Status Register (Pm or Px)
 | 
						||
				  Ws   word per stack pointer
 | 
						||
				  Bs   byte per stack pointer
 | 
						||
 | 
						||
Notes:
 | 
						||
 | 
						||
  BIT instruction does not affect N and V flags when using immediate
 | 
						||
  addressing mode. When using other addressing modes, the N and V flags
 | 
						||
  are respectively set to bits 7 and 6 or 15 and 14 of the addressed memory
 | 
						||
  depending on mode (byte or word).
 | 
						||
 | 
						||
  For all Read/Modify/Write instruction addressing modes except accumulator
 | 
						||
    Add 2 cycles for E=1 or E=0 and Pm=1 (8-bit mode)
 | 
						||
    Add 3 cycles for E=0 and Pm=0 (16-bit mode).
 | 
						||
 | 
						||
  Add one cycle when indexing across page boundary and E=1 except for STA and
 | 
						||
  STZ instructions.
 | 
						||
 | 
						||
  If E=1 then 1 -> SH and XL -> SL If E=0 then X -> S regardless of Pm or Px.
 | 
						||
 | 
						||
  Exchanges the carry (Pc) and E bits. Whenever the E bit is set the following
 | 
						||
  registers and status bits are locked into the indicated state:
 | 
						||
  XH=0, YH=0, SH=1, Pm=1, Px=1.
 | 
						||
 | 
						||
  Add 1 cycle if branch is taken. In Emulation (E= 1 ) mode only --add 1 cycle
 | 
						||
  if the branch is taken and crosses a page boundary.
 | 
						||
 | 
						||
  Add 1 cycle in Emulation mode (E=1) for (dir),y; abs,x; and abs,y addressing
 | 
						||
  modes.
 | 
						||
 | 
						||
  With TSB and TRB instruction, the Z flag is set or cleared by the result
 | 
						||
  of AAB or AAW.
 | 
						||
  For all Read/Modify/Write instruction addressing modes except accumulator --
 | 
						||
    Add 2 cycles for E=1 or E=0 and Pm=1 (8-bit mode)
 | 
						||
    Add 3 cycles for E=0 and Pm=0 (16-bit mode).
 | 
						||
 | 
						||
 | 
						||
 | 
						||
	 Table 6. Branch, Transter, Push, Pull, and Implied Addressing Mode Instructions
 | 
						||
 | 
						||
				   Operation		    Operation					    Status
 | 
						||
Mnemonic Bytes M/X   Cycles  8 Bit		Cycles   16 Bit	    Implied Stack Relative	N V M X D I Z C Mnemonic
 | 
						||
 | 
						||
BCC (6)	  2	-	2    PC+r -> PC		2	PC+r -> PC		    90		. . . . . . . .	BCC
 | 
						||
BCS (6)	  2	-	2    PC+r -> PC		2	PC+r -> PC		    B0		. . . . . . . .	BCS
 | 
						||
BEQ (6)	  2	-	2    PC+r -> PC		2	PC+r -> PC		    F0		. . . . . . . .	BEQ
 | 
						||
BMI (6)	  2	-	2    PC+r -> PC		2	PC+r -> PC		    30		. . . . . . . .	BMI
 | 
						||
 | 
						||
BNE (6)	  2	-	2    PC+r -> PC		2	PC+r -> PC		    D0		. . . . . . . .	BNE
 | 
						||
BPL (6)	  2	-	2    PC+r -> PC		2	PC+r -> PC		    10		. . . . . . . .	BPL
 | 
						||
BRA (6)	  2	-	2    PC+r -> PC		2	PC+r -> PC		    80		. . . . . . . .	BRA
 | 
						||
BVC (6)	  2	-	2    PC+r -> PC		2	PC+r -> PC		    50		. . . . . . . .	BVC
 | 
						||
BVS (6)	  2	-	2    PC+r -> PC		2	PC+r -> PC		    70		. . . . . . . .	BVS
 | 
						||
 | 
						||
CLC	  1	-	2    0 -> Pc		2	0 -> Pc		18			. . . . . . . 0	CLC
 | 
						||
CLD	  1	-	2    0 -> Pd		2	0 -> Pd		D8			. . . . 0 . . .	CLD
 | 
						||
CLI	  1	-	2    0 -> Pi		2	0 -> Pi		58			. . . . . 0 . .	CLI
 | 
						||
CLV	  1	-	2    0 -> Pv		2	O -> Pv		B8			. 0 . . . . . .	CLV
 | 
						||
 | 
						||
DEX	  1	Px	2    XL - 1 -> XL	2	X - 1 -> X	CA			N . . .	. . Z . DEX
 | 
						||
DEY	  1	Px	2    YL - 1 -> YL	2	Y - 1 ->Y	88			N . . .	. . Z . DEY
 | 
						||
INX	  1	Px	2    XL + 1 -> XL	2	X + 1 -> X	E8			N . . . . . Z .	INX
 | 
						||
INY	  1	Px	2    YL + 1 -> YL	2	Y + 1 -> Y	C8			N . . .	. . Z . INY
 | 
						||
 | 
						||
NOP	  1	-	2    no operation	2	no operation	EA			. . . . . . . .	NOP
 | 
						||
PEA	  3	-	5    W->Ws, S-2 ->S	5	same		    F4			. . . . . . . .	PEA
 | 
						||
PEI	  2	-	6    W->Ws, S-2 ->S	6	same		    D4			. . . . . . . .	PEI
 | 
						||
 | 
						||
PER	  3	-	6    W ->Ws, S-2 ->S	6	same		    62			. . . . . . . .	PER
 | 
						||
PHA	  1	Pm	3    AL->Bs, S-1 ->S	4	A ->Ws, S-2 ->S	    48			. . . . . . . .	PHA
 | 
						||
PHB	  1	-	3    DB->Bs, S-1 ->S	3	same		    8B			. . . . . . . .	PHB
 | 
						||
PHD	  1	-	4    D ->Ws, S-2 ->S	4	same		    OB			. . . . . . . .	PHD
 | 
						||
 | 
						||
PHK	  1	-	3    PB->Bs, S-1 ->S		same		    4B			. . . . . . . . PHK
 | 
						||
PHP	  1	-	3    P ->Bs, S-1 ->S	3 	same		    08			. . . . . . . .	PHP
 | 
						||
PHX	  1	Px	3    XL->Bs, S-1 ->S	4	X-Ws, S-2 -> S	    DA			. . . . . . . . PHX
 | 
						||
PHY	  1	Px	3    YL->Bs, S-1 ->S	4	Y ->Ws, S-2 ->S	    5A			. . . . . . . .	PHY
 | 
						||
 | 
						||
PLA	  1	Pm	4    S+1 ->S, Bs -> AL	5	S+2 ->S, Ws->A	    68			N . . . . . Z .	PLA
 | 
						||
PLB	  1	-	4    S+1 ->S, Bs -> DB	4 	same		    AB			N . . . . . Z .	PLB
 | 
						||
PLD	  1	-	5    S+2 ->S, Ws -> D	5 	same		    2B			N . . . . . Z .	PLD
 | 
						||
PLP	  1	-	4    S+1 ->S, Bs -> P	4 	same		    28			N V M X D I Z C	PLP
 | 
						||
 | 
						||
PLX	  1	Px	4    S+1 ->S, Bs -> XL	5	S+2 ->S, Ws->X	    FA			N . . . . . Z .	PLX
 | 
						||
PLY	  1	Px	4    S+1 ->S, Bs -> YL	5	S+2 ->S, Ws->Y	    7A			N . . . . . Z .	PLY
 | 
						||
 | 
						||
SEC	  1	-	2    1 -> Pc		2	1 -> Pc		38			. . . . . . . 1	SEC
 | 
						||
SED	  1	-	2    1 -> Pd		2	1 -> Pd		F8			. . . . 1 . . .	SED
 | 
						||
SEI	  1	-	2    1 -> Pi		2	1 -> Pi		78			. . . . . 1 . .	SEI
 | 
						||
 | 
						||
TAX	  1	Px	2    AL -> XL		2	A -> X		AA			N . . . . . Z .	TAX
 | 
						||
TAY	  1	Px	2    AL -> YL		2	A -> Y		A8			N . . . . . Z .	TAY
 | 
						||
TCD	  1	-	2    A -> D		2	A -> D		5B			N . . . . . Z .	TCD
 | 
						||
 | 
						||
TCS	  1	-	2    A -> S			A -> S		1B			. . . . . . . .	TCS
 | 
						||
TDC	  1	-	2    D -> A		2	D -> A		7B			N . . . . . Z .	TDC
 | 
						||
TSC	  1	-	2    S -> A		2	S -> A		3B			N . . . . . Z .	TSC
 | 
						||
TSX	  1	Px	2    SL -> XL		2	S -> X		BA			N . . . . . Z .	TSX
 | 
						||
 | 
						||
TXA	  1	Pm	2    XL -> AL		2	X -> A		8A			N . . . . . Z .	TXA
 | 
						||
TXS	  1	-	2    see note 4		2	X -> S		9A			. . . . . . . .	TXS
 | 
						||
TXY	  1	Px	2    XL -> YL		2	X -> Y		9B			N . . . . . Z .	TXY
 | 
						||
TYA	  1	Pm	2    YL -> AL		2	Y -> A		98			N . . . . . Z .	TYA
 | 
						||
 | 
						||
TYX	  1	Px	2    YL -> XL		2	Y -> X		BB			N . . . . . Z .	TYX
 | 
						||
XCE	  1	-	2    see note 5		2	see note 5	FB			. . . . . . . C	XCE
 | 
						||
 | 
						||
See Notes on page 13.
 | 
						||
 | 
						||
 | 
						||
 | 
						||
 | 
						||
		Table 7. Other Addressing Mode Instructions
 | 
						||
 | 
						||
 | 
						||
							    Status
 | 
						||
Mnemonic  Addressing Mode	Opcode Cycles Bytes	N V M X D I Z C	   Mnemonic	Function
 | 
						||
 | 
						||
 BRK	stack			  00	7/8	2	. . . . 0 1 . .		BRK	See discussion in Interrupt Processing Sequence section.
 | 
						||
 BRL	relative long		  82	 3	3	. . . . . . . .		BRL	PC+r -> PC where -32768 < r < 32767.
 | 
						||
 COP	stack			  02	7/8	2	. . . . 0 1 . .		COP	See discussion in Interrupt Processing Sequence section.
 | 
						||
 JML	absolute indirect	  DC	 6	3				 	JMLW -> PC, B-PB
 | 
						||
 | 
						||
 JMP	absolute		  4C	 3	3	. . . . . . . .		JMP	W -> PC
 | 
						||
 JMP	absolute indirect	  6C	 5	3	. . . . . . . .		JMP	W -> PC
 | 
						||
 JMP	absolute indexed indirect 7C	 6	3	. . . . . . . .		JMP	W -> PC
 | 
						||
 JMP	absolute long		  5C	 4	4				JMP	W -> PC, B -> PB
 | 
						||
 | 
						||
 JSL	absolute long		  22	 8	4	. . . . . . . .		JSL	PB -> Bs, S-1 -S, PC -> Ws, S-2 -> S, W -> PC,	B -> PB
 | 
						||
 JSR	absolute		  20	 6	3	. . . . . . .		JSR	PC -> Ws, S-2 -> S, W -> PC
 | 
						||
 JSR	absolute indexed indirect FC	 6	3	. . . . . . . .		JSR	PC -> Ws, S-2 -> S, W -> PC
 | 
						||
 MVN	block			  54  7/byte	3	. . . . . . . .		MVN	See discussion in Addressing Mode section
 | 
						||
 MVP	block			  44  7/byte	3	. . . . . . . .		MVP
 | 
						||
 REP	immediate		  C2	 3	2	N V M X D I Z C		REP	P /\ /B -> P
 | 
						||
 RTI	stack			  40	6/7	1	N V M X D I Z C		RTI	S+1 -> S, Bs -> P, S+2 -> S, Ws -> PC,
 | 
						||
											 if E=0 then S+1 -> S, Bs -> PB
 | 
						||
 | 
						||
 RTL	stack			  6B	 6	1	. . . . . . . .		RTL	S+2 -> S, Ws~1 -> PC, S+1 -> S, Bs -> PB
 | 
						||
 | 
						||
 RTS	stack			  60	 6	1	. . . . . . . .		RTS	S+2 -> S, Ws+1 -> PC
 | 
						||
 SEP	immediate		  E2	 3	2	N V M X D I Z C		SEP	PVB -> P
 | 
						||
 STP	implied			  DB	 3+	1	. . . . . . . .		STP	Stop the clock. Requires reset to continue.
 | 
						||
 WAI	implied			  CB	 3+	1	. . . . . . . .		WAI	Wait for inte-rupt. RDY held low until Interrupt.
 | 
						||
 XBA	implied			  EB	 3	1	N . . . . . Z .		XBA	Swap AH and AL. Status bits reflect final condition of AL.
 | 
						||
 | 
						||
Notes on page 13.
 | 
						||
 | 
						||
 | 
						||
 | 
						||
				16
 | 
						||
 | 
						||
 | 
						||
			Table 8. Opcode Matrix
 | 
						||
 | 
						||
 | 
						||
MSD                                                                     LSD                                                                      MSD
 | 
						||
--+-------+--------+--------+----------+--------+--------+--------+---------+-------+--------+-------+-------+--------+--------+--------+---------+--
 | 
						||
  |   0   |    1   |   2    |    3     |    4   |   5    |   6    |    7    |   8   |   9    |   A   |   B   |   C    |   D    |    E   |    F    |
 | 
						||
  |-------+--------+--------+----------+--------+--------+--------+---------+-------+--------+-------+-------+--------+--------+--------+---------|
 | 
						||
0 | BRK s |ORA(d,x)| COP s  | ORA d,s  | TSB d  | ORA d  | ASL d  | ORA [d] | PHP s | ORA #  | ASL A | PHD s | TSB a  | ORA a  | ASL a  | ORA al  | 0
 | 
						||
  |  2 8  |  2 6   |  2 8   |   2 4    |  2 5   |  2 3   |  2 5   |   2 6   |  1 3  |  2 2   |  1 2  |  1 4  |  3 6   |  3 4   |  3 6   |   4 5   |
 | 
						||
  |-------+--------+--------+----------+--------+--------+--------+---------+-------+--------+-------+-------+--------+--------+--------+---------|
 | 
						||
1 | BPL r |ORA(d),y| ORA(d) |ORA(d,s),y| TRB d  | ORA d,x| ASL d,x|ORA [d],y| CLC i | ORA a,y| INC A | TCS i | TRB a  | ORA a,x| ASL a,x| ORA al,x| 1
 | 
						||
  |  2 2  |  2 5   |  2 5   |   2 7    |  2 5   |  2 4   |  2 6   |   2 6   |  1 2  |  3 4   |  1 2  |  1 2  |  3 6   |  3 4   |  3 7   |   4 5   |
 | 
						||
  |-------+--------+--------+----------+--------+--------+--------+---------+-------+--------+-------+-------+--------+--------+--------+---------|
 | 
						||
2 | JSR a |AND(d,x)| JSL al | AND d,s  | BIT d  | AND d  | ROL d  | AND [d] | PLP s | AND #  | ROL A | PLD s | BIT a  | AND a  | ROL a  | AND al  | 2
 | 
						||
  |  3 6  |  2 6   |  4 8   |   2 4    |  2 3   |  2 3   |  2 5   |  2 6    |  1 4  |  2 2   |  1 2  |  1 5  |  3 4   |  3 4   |  3 6   |   4 5   |
 | 
						||
  |-------+--------+--------+----------+--------+--------+--------+---------+-------+--------+-------+-------+--------+--------+--------+---------|
 | 
						||
3 | BMI r |AND(d),y| AND (d)|AND(d,s),y| BIT d,x| AND d,x| ROL d,x|AND [d],y| SEC i | AND a,y| DEC A | TSC i | BIT a,x| AND a,x| ROL a,x| AND al,x| 3
 | 
						||
  |  2 2  |  2 5   |  2 5   |   2 7    |  2 4   |  2 4   |  2 6   |  2 6    |  1 2  |  3 4   |  1 2  |  1 2  |  3 4   |  3 4   |  3 7   |   4 5   |
 | 
						||
  |-------+--------+--------+----------+--------+--------+--------+---------+-------+--------+-------+-------+--------+--------+--------+---------|
 | 
						||
4 | RTI s |EOR(d,x)| reserve| EOR d,s  | MVP xya| EOR d  | LSR d  | EOR [d] | PHA s | EOR #  | LSR A | PHK s | JMP a  | EOR a  | LSR a  | EOR al  | 4
 | 
						||
  |  1 7  |  2 6   |  2 2   |   2 4    |  3 7   |  2 3   |  2 5   |  2 6    |  1 3  |  2 2   |  1 2  |  1 3  |  3 3   |  3 4   |  3 6   |   4 5   |
 | 
						||
  |-------+--------+--------+----------+--------+--------+--------+---------+-------+--------+-------+-------+--------+--------+--------+---------|
 | 
						||
5 | BVC r |EOR(d),y| EOR (d)|EOR(d,s),y| MVN xya| EOR d,x| LSR d,x|EOR [d],y| CLI i | EOR a,y| PHY s | TCD i | JMP al | EORa,x | LSRa,x | EOR al,x| 5
 | 
						||
  |  2 2  |  2 5   |  2 5   |   2 7    |  3 7   |  2 4   |  2 6   |  2 6    |  1 2  |  3 4   |  1 3  |  1 2  |  4 4   |  3 4   |  3 7   |   4 5   |
 | 
						||
  |-------+--------+--------+----------+--------+--------+--------+---------+-------+--------+-------+-------+--------+--------+--------+---------|
 | 
						||
6 | RTS s |ADC(d,x)| PER s  | ADC d,s  | STZ d  | ADC d  | ROR d  | ADC [d] | PLA s | ADC #  | ROR A | RTL s | JMP (a)| ADC a  | ROR a  | ADC al  | 6
 | 
						||
  |  1 6  |  2 6   |  3 6   |   2 4    |  2 3   |  2 3   |  2 5   |  2 6    |  1 4  |  2 2   |  1 2  |  1 6  |  3 5   |  3 4   |  3 6   |   4 5   |
 | 
						||
  |-------+--------+--------+----------+--------+--------+--------+---------+-------+--------+-------+-------+--------+--------+--------+---------|
 | 
						||
7 | BVS r |ADC(d),y| ADC (d)|ADC(d,s),y| STZ d,x| ADC d,x| ROR d,x|ADC [d],y| SEI i | ADC a,y| PLY s | TDC i |JMP(a,x)| ADC a,x| ROR a,x| ADC al,x| 7
 | 
						||
  |  2 2  |  2 5   |  2 5   |   2 7    |  2 4   |  2 4   |  2 6   |  2 6    |  1 2  |  3 4   |  1 4  |  1 2  |  3 6   |  3 4   |  3 7   |   4 5   |
 | 
						||
  |-------+--------+--------+----------+--------+--------+--------+---------+-------+--------+-------+-------+--------+--------+--------+---------|
 | 
						||
8 | BRA r |STA(d,x)| BRL rl | STA d,s  | STY d  | STA d  | STX d  | STA [d] | DEY i | BIT #  | TXA i | PHB s | STY a  | STA a  | STX a  | STA al  | 8
 | 
						||
  |  2 2  |  2 6   |  3 3   |   2 4    |  2 3   |  2 3   |  2 3   |  2 6    |  1 2  |  2 2   |  1 2  |  1 3  |  3 4   |  3 4   |  3 4   |   4 5   |
 | 
						||
  |-------+--------+--------+----------+--------+--------+--------+---------+-------+--------+-------+-------+--------+--------+--------+---------|
 | 
						||
9 | BCC r |STA(d),y| STA (d)|STA(d,s),y| STYd,x | STA d,x| STX d,y|STA [d],y| TYA i | STA a,y| TXS i | TXY i | STZ a  | STA a,x| STZ a,x| STA al,x| 9
 | 
						||
  |  2 2  |  2 6   |  2 5   |   2 7    |  2 4   |  2 4   |  2 4   |  2 6    |  1 2  |  3 5   |  1 2  |  1 2  |  3 4   |  3 5   |  3 5   |   4 5   |
 | 
						||
  |-------+--------+--------+----------+--------+--------+--------+---------+-------+--------+-------+-------+--------+--------+--------+---------|
 | 
						||
A | LDY # |LDA(d,x)|  LDX # | LDA d,s  | LDY d  | LDA d  | LDX d  | LDA [d] | TAY i | LDA #  | TAX i | PLB s | LDY a  | LDA a  | LDX a  | LDA al  | A
 | 
						||
  |  2 2  |  2 6   |  2 2   |   2 4    |  2 3   |  2 3   |  2 3   |  2 6    |  1 2  |  2 2   |  1 2  |  1 4  |  3 4   |  3 4   |  3 4   |   4 5   |
 | 
						||
  |-------+--------+--------+----------+--------+--------+--------+---------+-------+--------+-------+-------+--------+--------+--------+---------|
 | 
						||
B | BCS r |LDA(d),y| LDA (d)|LDA(d,s),y| LDY d,x| LDA d,x| LDX d,y|LDA [d],y| CLV i | LDA a,y| TSX i | TYX i | LDY a,x| LDA a,x| LDX a,y| LDA al,x| B
 | 
						||
  |  2 2  |  2 5   |  2 5   |   2 7    |  2 4   |  2 4   |  2 4   |  2 6    |  1 2  |  3 4   |  1 2  |  1 2  |  3 4   |  3 4   |  3 4   |   4 5   |
 | 
						||
  |-------+--------+--------+----------+--------+--------+--------+---------+-------+--------+-------+-------+--------+--------+--------+---------|
 | 
						||
C | CPY # |CMP(d,x)| REP #  | CMP d,s  | CPY d  | CMP d  | DEC d  | CMP [d] | INY i | CMP #  | DEX i | WAI i | CPY a  | CMP a  | DEC a  | CMP al  | C
 | 
						||
  |  2 2  |  2 6   |  2 3   |   2 4    |  2 3   |  2 3   |  2 5   |  2 6    | 1 2   |  2 2   |  1 2  |  1 3  |  3 4   |  3 4   |  3 4   |   4 5   |
 | 
						||
  |-------+--------+--------+----------+--------+--------+--------+---------+-------+--------+-------+-------+--------+--------+--------+---------|
 | 
						||
D | BNE r |CMP(d),y| CMP (d)|CMP(d,s),y| PEI s  | CMP d,x| DEC d,x|CMP [d],y| CLD i | CMP a,y| PHX s | STP i | JML (a)| CMP a,x| DEC a,x| CMP al,x| D
 | 
						||
  |  2 2  |  2 5   |  2 5   |   2 7    |  2 6   |  2 4   |  2 6   |  2 6    |  1 2  |  3 4   |  1 3  |  1 3  |  3 6   |  3 4   |  3 7   |   4 5   |
 | 
						||
  |-------+--------+--------+----------+--------+--------+--------+---------+-------+--------+-------+-------+--------+--------+--------+---------|
 | 
						||
E | CPX # |SBC(d,x)| SEP #  | SBC d,s  | CPX d  | SBC d  | INC d  | SBC [d] | INX i | SBC #  | NOP i | XBA i | CPX a  | SBC a  | INC a  | SBC al  | E
 | 
						||
  |  2 2  |  2 6   |  2 3   |   2 4    |  2 3   |  2 3   |  2 5   |  2 6    |  1 2  |  2 2   |  1 2  |  1 3  |  3 4   |  3 4   |  3 6   |   4 5   |
 | 
						||
  |-------+--------+--------+----------+--------+--------+--------+---------+-------+--------+-------+-------+--------+--------+--------+---------|
 | 
						||
F | BEQ r |SBC(d),y| SBC (d)|SBC(d,s),y| PEA s  | SBC d,x| INC d,x|SBC [d],y| SED i | SBC a,y| PLX s | XCE i |JSR(a,x)| SBC a,x| INC a,x| SBC al,x| F
 | 
						||
  |  2 2  |  2 5   |  2 5   |   2 7    |  3 5   |  2 4   |  2 6   |   2 6   |  1 2  |  3 4   |  1 4  |  1 2  |  3 6   |  3 4   |  3 7   |   4 5   |
 | 
						||
  |-------+--------+--------+----------+--------+--------+--------+---------+-------+--------+-------+-------+--------+--------+--------+---------|
 | 
						||
  |   0   |    1   |   2    |    3     |    4   |   5    |   6    |    7    |   8   |   9    |   A   |   B   |   C    |   D    |    E   |    F    |
 | 
						||
--+-------+--------+--------+----------+--------+--------+--------+---------+-------+--------+-------+-------+--------+--------+--------+---------+--
 | 
						||
 | 
						||
 | 
						||
 | 
						||
	Symbol		Addressing mode
 | 
						||
 | 
						||
	  #		immediate
 | 
						||
	  A		accumulator
 | 
						||
	  r		program counter relative
 | 
						||
	  rl		program counter relative long
 | 
						||
	  i		implied
 | 
						||
	  s		stack
 | 
						||
	  d		direct
 | 
						||
	  d,x		direct indexed (with x)
 | 
						||
	  d,y		direct indexed (with y)
 | 
						||
	 (d)		direct Indirect
 | 
						||
	 (d,x)		direct indexed Indirect
 | 
						||
	 (d),y		direct Indirect indexed
 | 
						||
	 [d]		direct indirect long
 | 
						||
	 [d],y		direct indirect indexed long
 | 
						||
	  a		absolute
 | 
						||
	  a,x		absolute indexed (with x)
 | 
						||
	  a,y		absolute indexed (with y)
 | 
						||
	  al		absolute long
 | 
						||
	  al,x		absolute indexed long
 | 
						||
	  d,s		stack relative
 | 
						||
	 (d,s),y	stack relative indirect Indexed
 | 
						||
	 (a)		absolute indirect
 | 
						||
	 (a,x)		absoite Indxed Indirect
 | 
						||
	  xya		block move
 | 
						||
 | 
						||
 | 
						||
 | 
						||
	Legend
 | 
						||
		Instruction mnemonic		Addressing mode
 | 
						||
 | 
						||
		Base number of base number	Cycles
 | 
						||
		of bytes
 | 
						||
 | 
						||
 | 
						||
		Table 9. Detailed Instruction Operation
 | 
						||
 | 
						||
  ADDRESS MODE
 | 
						||
		CYCLE /VP /ML VDA VPA	ADDRESS BUS	DATA BUS	R/W
 | 
						||
 | 
						||
 | 
						||
 1 Immediate -- #
 | 
						||
  (LDY,CPY,CPX,LDX,ORA,AND,EOR,ADC,BIT,LDA,CMP,SBC,REP,SEP)
 | 
						||
  (14 Op Codes)
 | 
						||
  (2 and 3 bytes)			
 | 
						||
  (2 and 3 cycles)
 | 
						||
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
		2	1  1   0  1	PBR,PC+1	IDL		1
 | 
						||
		2a	1  1   0  1	PBR,PC+2	IDH		1
 | 
						||
 | 
						||
 | 
						||
 | 
						||
 2a Absolute -- a
 | 
						||
  (BIT,STY,STZ,LDY,CPY,CPX,STX,LDX,ORA,AND,EOR,ADC,STA,LDA,CMP,SBC)
 | 
						||
  (16 Op Codes)
 | 
						||
  (3 bytes)
 | 
						||
  (4 and 5 cycles)	
 | 
						||
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
		2	1  1   0  1	PBR,PC+1	AAL		1
 | 
						||
		3	1  1   0  1	PBR,PC+2	AAH		1
 | 
						||
		4	1  1   1  0	DBR,AA		Data Low	1/0
 | 
						||
	    (1) 4a	1  1   1  0	DBR,AA+1	Data High	1/0
 | 
						||
 | 
						||
 | 
						||
 2b Absolute (R-M-W) -- a
 | 
						||
  (ASL,ROL,LSR,ROR,DEC,INC,TSB,TRB)
 | 
						||
  (8 Op Codes)
 | 
						||
  (3 bytes)
 | 
						||
  (6 and 8 cycles)
 | 
						||
 | 
						||
		1	1  1   1  1	PBA,PC		Op Code		1  
 | 
						||
		2	1  1   0  1	PBR,PC+1	AAL		1
 | 
						||
		3	1  1   0  1	PBR,PC+2	AAH		1
 | 
						||
		4	1  0   1  0	DBR,AA		Data Low	1
 | 
						||
	    (1) 4a	1  0   1  0	DBR,AA+1	Data High	1
 | 
						||
	    (3) 5	1  0   0  0	DBR,AA+2	IO		1
 | 
						||
	    (1) 6a	1  0   1  0	DBR,AA+3	Data Hiqh	0
 | 
						||
		6	1  0   1  0	DBR,AA		Data Low	0
 | 
						||
 | 
						||
	
 | 
						||
 2c Absolute(JUMP) -- a
 | 
						||
  (JMP)(4C)
 | 
						||
  (1 Op Code)
 | 
						||
  (3 bytes)
 | 
						||
  (3 cycles)
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
		2	1  1   0  1	PBR,PC+1	NEW PCL		1
 | 
						||
		3	1  1   0  1	PBR,PC+2	NEW PCH		1
 | 
						||
		1	1  1   1  1	PBR,NEWPC	New Op Code	1
 | 
						||
 | 
						||
 | 
						||
 2d Absolute (Jump to subroutine) -- a
 | 
						||
  (JSR)
 | 
						||
  (1 Op Code)
 | 
						||
  (3 bytes)
 | 
						||
  (6 cycles)
 | 
						||
  (different order from N6502)
 | 
						||
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
		2	1  1   0  1	PBA,PC+1	NEW FCC		1
 | 
						||
		3	1  1   0  1	PBR,PC+2	NEW PCH		1
 | 
						||
		4	1  1   0  0	PBR,PC+2	IO		1
 | 
						||
		5	1  1   1  0	0,S		PCH		0
 | 
						||
		6	1  1   1  0	0,S-1		PCL		0
 | 
						||
		1	1  1   1  1	PBA,NEWPC	New Op Code	1
 | 
						||
 | 
						||
 | 
						||
 | 
						||
 3a Absolute Long -- al
 | 
						||
  (ORA,AND,EOR,ADC,STA,LDA,CMP,SBC)
 | 
						||
  (8 Op Codes)
 | 
						||
  (4 bytes)
 | 
						||
  (5 and 6 cycles)
 | 
						||
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
		2	1  1   0  1	PBR,PC+1	AAL		1
 | 
						||
		3	1  1   0  1	PBR,PC+2	AAH		1
 | 
						||
		4	1  1   0  1	PBR,PC+3	AAB		1
 | 
						||
		5	1  1   1  0	AAB,AA		Data Low	1/0
 | 
						||
	    (1) 5a	1  1   1  0	AAB,AA+1	Data High	1/0
 | 
						||
 | 
						||
 | 
						||
 3b Absolute Long (JUMP) -- al
 | 
						||
  (JMP)
 | 
						||
  (1 Op Code)
 | 
						||
  (4 bytes)
 | 
						||
  (4 cycles)
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
		2	1  1   0  1	PBR,PC+1	NEW PCL		1
 | 
						||
		3	1  1   0  1	PBR,PC+2	NEW PCH		1
 | 
						||
		4	1  1   0  1	PBR,PC+3	NEW BR		1
 | 
						||
		1	1  1   1  1	NEW PBR,PC	New Op Code	1
 | 
						||
 | 
						||
 | 
						||
 3c Absolute Long (Jump to Subroutine Long) -- al
 | 
						||
  (JSL)
 | 
						||
  (1 Op Code)
 | 
						||
  (4 bytes)
 | 
						||
  (7 cycles)
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
		2	1  1   0  1	PBR,PC+1	NEW PCL		1
 | 
						||
		3	1  1   0  1	PBR,PC+2	NEW PCH		1
 | 
						||
		4	1  1   1  0	0,S		PBR		0
 | 
						||
		5	1  1   0  0	0,S		IO		1
 | 
						||
		6	1  1   0  1	PBR,PC+3	NEW PBR		1
 | 
						||
		7	1  1   1  0	0,S-1		PCH		0
 | 
						||
		8	1  1   1  0	0,S-2		FCL		0
 | 
						||
		1	1  1   1  1	NEW PBR,PC	New Op Code	1
 | 
						||
 | 
						||
 | 
						||
 | 
						||
 4a Direct -- d
 | 
						||
  (BIT,STZ,STY,LDY,CPY,CPX,STX,LDX,ORA,AND,EOR,ADC,STA,LDA,CMP,SBC)
 | 
						||
  (16 Op Codes)
 | 
						||
  (2 bytes)
 | 
						||
  (3,4 and 5 cycles)
 | 
						||
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
		2	1  1   0  1	PBR,PC+1	DO		1
 | 
						||
	    (2) 2a	1  1   0  0	PBR,PC+2	IO		1 
 | 
						||
		3	1  1   1  0	0,D+DO		Data Low	1/0
 | 
						||
	    (1) 3a	1  1   1  0	0,D+DO+1	Data High	1/0
 | 
						||
 | 
						||
 | 
						||
 4b Direct (R-M-W) -- d
 | 
						||
   (ASL,ROL,LSR,ROR,DEC,INC,TSB,TRB)
 | 
						||
   (8 Op Codes)
 | 
						||
   (2 bytes)
 | 
						||
   (5,6,7 and 8 cycles)
 | 
						||
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
		2	1  1   0  1	PBR,PC+1	DO		1
 | 
						||
	    (2) 3a	1  1   0  0	PBR,PC+1	IO		1
 | 
						||
		3	1  0   1  0	0,D+DO		Data Low	1
 | 
						||
	    (1) 3a	1  0   1  0	0,D+DO+1	Data High	1
 | 
						||
	    (3) 4	1  0   0  0	0,D+DO+1	IO		1
 | 
						||
	    (1) 5a	1  0   1  0	0,D+D0+1	Data High	0
 | 
						||
		5	1  0   1  0	0,D+DO		Data Low	0
 | 
						||
 | 
						||
 | 
						||
 | 
						||
 5 Accumurator -- A
 | 
						||
   (ASL,INC,ROL,DEC,LSR,ROR)
 | 
						||
   (6 Op Codes)		
 | 
						||
   (1 byte)
 | 
						||
   (2 cycles)
 | 
						||
 | 
						||
		1	1  1   1  1	PBR,PC		Op COde		1
 | 
						||
		2	1  1   0  0	PBR,PC+1	IO		1
 | 
						||
 | 
						||
 | 
						||
	
 | 
						||
 6a Implied -- i
 | 
						||
   (DEY,INY,INX,DEX,NOP,XCE,TYA,TAY,TXA,TXS,TAX,TSX,TCS,TSC,TCD,TDC,
 | 
						||
    TXY,TYX,CLC,SEC,CLI,SEI,CLV,CLD,SED)
 | 
						||
   (25 Op Codes)
 | 
						||
   (1 byte)
 | 
						||
   (2 cycles)
 | 
						||
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
		2	1  1   0  0	PBR,PC+1	IO		1
 | 
						||
 | 
						||
 | 
						||
 *6b Implied -- i
 | 
						||
   (XBA)
 | 
						||
   (1 Op Code)
 | 
						||
   (1 byte)
 | 
						||
   (3 cycles)
 | 
						||
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
		2	1  1   0  0	PBR,PC+1	IO		1
 | 
						||
		3	1  1   0  0	PBR,PC+1	IO		1
 | 
						||
 | 
						||
 | 
						||
 | 
						||
  ADDRESS MODE
 | 
						||
		CYCLE /VP /ML VDA VPA RDY	ADDRESS BUS DATA BUS	R/W
 | 
						||
 | 
						||
 | 
						||
 6c Wait for Interrupt		
 | 
						||
   (WAI)
 | 
						||
   (1 Op Code)
 | 
						||
   (1 byte)
 | 
						||
   (3 cycles)
 | 
						||
 | 
						||
		1	1  1   1   1   1	PBR,PC	  Op Code	1
 | 
						||
	    (9) 2	1  1   0   0   1	PBR,PC+1  IO		1
 | 
						||
		3	1  1   0   0   0	PBR,PC+1  IO		1
 | 
						||
	IRQ,NMI	1	1  1   1   1   1	PBR,PC+1  IRO(BRK)	1
 | 
						||
 | 
						||
 | 
						||
 6d Stop-The-Clock
 | 
						||
   (STP)
 | 
						||
   (1 Op Code)
 | 
						||
   (1 byte)
 | 
						||
   (3 cycles)
 | 
						||
 | 
						||
		1	1  1   1   1   1	PBR,PC	  Op Code	1
 | 
						||
		2	1  1   0   0   1	PBR,PC+1  IO		1
 | 
						||
	RES=1	3	1  1   0   0   1	PBR,PC+1  IO		1
 | 
						||
	RES=0	1c	1  1   0   0   1	PBR,PC+1  RES(BRK)	1
 | 
						||
	RES=0	1b	1  1   0   0   1	PBR,PC+1  RES(BRK)	1
 | 
						||
	RES=1	1a	1  1   0   0   1	PBR,PC+1  RES(BRK)	1
 | 
						||
		1	1  1   1   1   1	PBR,PC+1  BEGIN		1
 | 
						||
 | 
						||
   See 21a Stack (Hardware interrupt)
 | 
						||
 | 
						||
 | 
						||
 | 
						||
  ADDRESS MODE
 | 
						||
		CYCLE /VP /ML VDA VPA	ADDRESS BUS	DATA BUS	R/W
 | 
						||
 | 
						||
 7 Direct Indirect Indexed -- (d),y
 | 
						||
   (ORA,AND,EOR,ADC,STA,LDA,CMP,SBC)
 | 
						||
   (8 Op Codes)
 | 
						||
   (2 bytes)
 | 
						||
   (5,6,7 and 8 cycles)
 | 
						||
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
		2	1  1   0  1	PBR,PC+1	DO		1
 | 
						||
	    (2) 2a	1  1   0  0	PBR,PC+1	IO		1
 | 
						||
		3	1  1   1  0	0,D+DO		AAL		1
 | 
						||
		4	1  1   1  0	0,D+DO+1	AAH		1
 | 
						||
	    (4) 4a	1  1   0  0	DBR,AAH,AAL+YL	IO		1
 | 
						||
		5	1  1   1  0	DBR,AA+Y	Data Low	1/0
 | 
						||
	    (1) 5a	1  1   1  1	DBR,AA+Y+1	Data High	1/0
 | 
						||
 | 
						||
 | 
						||
 | 
						||
 8 Direct Indirect Indexed Long -- [d],y
 | 
						||
  (ORA,AND,EOR,ADC,STA,LDA,CMP,SBC)
 | 
						||
   (8 Op Codes)
 | 
						||
   (2 bytes)
 | 
						||
   (6,7 and 8 cycles)
 | 
						||
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
		2	1  1   0  1	PBR,PC+1	DO		1
 | 
						||
	    (2) 2a	1  1   0  0	PBR,PC+1	IO		1
 | 
						||
		3	1  1   1  0	0,D+DO		AAL		1
 | 
						||
		4	1  1   1  0	0,D+DO+1	AAH		1
 | 
						||
		5	1  1   1  0	0,D+DO+2	AAB		1
 | 
						||
		6	1  1   1  0	AAB,AA+Y	Data Low	1/0
 | 
						||
	    (1) 6a	1  1   1  0	AAB,AA+Y+1	Data High	1/0
 | 
						||
 | 
						||
 | 
						||
 | 
						||
 9 Direct Indexed Indirect -- (d,x)
 | 
						||
   (ORA,AND,EOR,ADC,STA,LDA,CMP,SBC)
 | 
						||
   (8 Op Codes)
 | 
						||
   (2 bytes)
 | 
						||
   (6,7 and 8 cycles)
 | 
						||
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
		2	1  1   0  1	PBR,PC+1	DO		1
 | 
						||
	    (2) 2a	1  1   0  0	PBR,PC+1	IO		1
 | 
						||
		3	1  1   0  0	PBR,PC+1	IO		1
 | 
						||
		a	1  1   1  0	0,D+DO+X	AAL		1
 | 
						||
		5	1  1   1  0	0,D+DO+X+1	AAH		1
 | 
						||
		6	1  1   1  0	DBR,AA		Data Low	1/0
 | 
						||
	    (1) 6a	1  1   1  0	DBR,AA+1	Data High	1/0
 | 
						||
 | 
						||
 | 
						||
 | 
						||
 10a Direct,X -- d,x
 | 
						||
   (BIT,STZ,STY,LDY,ORA,AND,EOR,ADC,STA,LDA,CMP,SBC)
 | 
						||
   (12 Op Codes)
 | 
						||
   (2 bytes)
 | 
						||
   (4,5 and 6 cycles)
 | 
						||
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
		2	1  1   0  1	PBR,PC+1	DO		1
 | 
						||
	    (2) 2a	1  1   0  0	PBR,PC+1	IO		1
 | 
						||
		3	1  1   0  0	PBR,PC+1	IO		1
 | 
						||
		4	1  1   1  0	0,D+DO+X	Data Low	1/0
 | 
						||
	    (1) 4a	1  1   1  0	0,D+DO+X+1	Data High	1/0
 | 
						||
 | 
						||
 | 
						||
 10b Direct,X (R-M-W) -- d,x
 | 
						||
   (ASL,ROL,LSR,ROR,DEC,INC)
 | 
						||
   (6 Op Codes)
 | 
						||
   (2 bytes)
 | 
						||
   (6,7,8 and 9 cycles)
 | 
						||
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
		2	1  1   0  1	PBR,PC+1	DO		1
 | 
						||
	    (2) 2a	1  1   0  0	PBR,PC+1	IO		1
 | 
						||
		3	1  1   0  0	PBR,PC+1	IO		1
 | 
						||
		4	1  0   1  0	0,D+DO+X	Data Low	1
 | 
						||
	    (1) 4a	1  0   1  0	0,D+DO+X+1	Data High	1
 | 
						||
	    (3) 5	1  0   0  0	0,D+DO+X+1	IO		1
 | 
						||
	    (1) 6a	1  0   1  0	0,D+DO+X+1	Data High	0
 | 
						||
		6	1  0   1  0	0,D+DO+X	Data Low	0
 | 
						||
 | 
						||
 | 
						||
 | 
						||
 11 Direct,Y -- d,y
 | 
						||
   (STX,LDX)
 | 
						||
   (2 Op Codes)
 | 
						||
   (2 bytes)
 | 
						||
   (4,5 and 6 cycles)
 | 
						||
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
		2	1  1   0  1	PBR,PC+1	DO		1
 | 
						||
	    (2) 2a	1  1   0  0	PBR,PC+1	IO		1
 | 
						||
		3	1  1   0  0	PBR,PC+1	IO		1
 | 
						||
		4	1  1   1  0	0,D+DO+Y	Data Low	1/0
 | 
						||
	    (1) 4a	1  1   1  0	0,D+DO+Y+1	Data High	1/0
 | 
						||
 | 
						||
 | 
						||
 | 
						||
 12a Absolute,X -- a,x
 | 
						||
   (BlT,LDY,STZ,ORA,AND,EOR,ADC,STA,LDA,CMP,SBC)
 | 
						||
   (11 Op Codes)
 | 
						||
   (3 bytes)
 | 
						||
   (4,5 and 6 cycles)
 | 
						||
 | 
						||
		1	1  1   1  1	PBR,PC		Op code		1
 | 
						||
		2	1  1   0  1	PBR,PC+1	AAL		1
 | 
						||
		3	1  1   0  1	PBR,PC+2	AAH		1
 | 
						||
	    (4) 3a	1  1   0  0	DBR,AAH,AAL+XL	IO		1
 | 
						||
		4	1  1   1  0	DBR,AA+X	Data Low	1/0
 | 
						||
	    (1) 4a	1  1   1  0	DBR,AA+X+1	Data High 	1/0
 | 
						||
 | 
						||
 | 
						||
 12b Absolute,X (R-M-W) -- a,x
 | 
						||
   (ASC,ROL,LSR,ROR,DEC,INC)
 | 
						||
   (6 Op Codes)
 | 
						||
   (3 bytes)
 | 
						||
   (7 and 9 cycles)
 | 
						||
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
		2	1  1   0  1	PBR,PC+1	AAL		1
 | 
						||
		3	1  1   0  1	PBR,PC+2	AAH		1
 | 
						||
		4	1  1   0  0	DBR,AAH,AAL+XL	IO		1
 | 
						||
		5	1  0   1  0	DBR,AA+X	Data Low	1
 | 
						||
	    (1) 5a	1  0   1  0	DBR,AA+X+1	Data High	1
 | 
						||
	    (3) 6	1  0   0  0	DBR,AA+X+1	lO		1
 | 
						||
	    (1) 7a	1  0   1  0	DBR,AA+X+1	Data High	0
 | 
						||
		7	1  0   1  0	DBR,AA+X	Data Low	0
 | 
						||
 | 
						||
 | 
						||
 | 
						||
 *13 Absolute Long,X -- al,x
 | 
						||
   (ORA,AND,EOR,ADC,STA,LDA,CMP,SBC)
 | 
						||
   (8 Op Codes)
 | 
						||
   (4 bytes)
 | 
						||
   (5 and 6 cycles)
 | 
						||
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
		2	1  1   0  1	PBR,PC+1	AAL		1
 | 
						||
		3	1  1   0  1	PBR,PC+7	AAH		1
 | 
						||
		4	1  1   0  1	PBA,PC+3	AAB		1
 | 
						||
		5	1  1   1  0	AAB,AA+X	Data Low	1/0
 | 
						||
	    (1) 5a	1  1   1  0	AAB,AA+X+1	Data High  	1/0
 | 
						||
 | 
						||
 | 
						||
 | 
						||
 14 Absolute,Y -- a,y
 | 
						||
   (LDX,ORA,AND,EOR,ADC,STA,LDA,CMP,SBC)
 | 
						||
   (9 Op Codes)
 | 
						||
   (3 bytes)
 | 
						||
   (4,5 and 6 cycles)
 | 
						||
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
		2	1  1   0  1	PBR,PC+1	AAL		1
 | 
						||
		3	1  1   0  1	PBR,PC+2	AAH		1
 | 
						||
	    (4) 3a	1  1   0  0	DBR,AAH,AAL+YL	IO		1
 | 
						||
		4	1  1   1  0	DBR,AA+Y	Data Low	1/0
 | 
						||
	    (1) 4a	1  1   1  0	DBR,AA+Y+1	Data High	1/0
 | 
						||
 | 
						||
 | 
						||
 | 
						||
 15 Relative -- r
 | 
						||
   (BPL,BMI,BVC,BVS,BCC,BCS,BNE,BEQ,BRA)
 | 
						||
   (9 Op Codes)
 | 
						||
   (2 bytes)
 | 
						||
   (2,3 and 1 cycles)
 | 
						||
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
		2	1  1   0  1	PBR,PC+1	Offset		1
 | 
						||
	    (5) 2a	1  1   0  0	PBR,PC+2	IO		1
 | 
						||
	    (61 2b	1  1   0  0	PBR,PC+2+OFF	IO		1
 | 
						||
		1	1  1   1  1	PBR,NewPC	New Op Code	1
 | 
						||
 | 
						||
 | 
						||
 | 
						||
 *16 Relative Long -- rl
 | 
						||
  (BRL)
 | 
						||
  (1 Op Code)
 | 
						||
  (3 bytes)
 | 
						||
  (4 cycles)
 | 
						||
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
		2	1  1   0  1	PBR,PC+1	Offset Low	1
 | 
						||
		3	1  1   0  1	PBR,PC+2	Offset High	1
 | 
						||
		4	1  1   0  0	PBR,PC+2	IO		1
 | 
						||
		1	1  1   1  1	PBR,NewPC	New Op Code	1
 | 
						||
 | 
						||
 | 
						||
 | 
						||
 17a Absolute Indirect -- (a)
 | 
						||
  (JMP)
 | 
						||
  (1 Op Code)
 | 
						||
  (3 bytes)
 | 
						||
  (5 cycles)
 | 
						||
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
		2	1  1   0  1	PBR,PC+1	AAL		1
 | 
						||
		3	1  1   0  1	PBR,PC+2	AAH		1
 | 
						||
		4	1  1   1  0	0,AA		NEW PCL		1
 | 
						||
		5	1  1   1  0	0,AA+1		NEW PCH		1
 | 
						||
		1	1  1   1  1	PBR,NewPC	New Op Code	1
 | 
						||
 | 
						||
 | 
						||
 *17b Absolute Indirect -- (a)
 | 
						||
  (JML)
 | 
						||
  (1 Op Code)
 | 
						||
  (3 bytes)
 | 
						||
  (6 cycles)
 | 
						||
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
		2	1  1   0  1	PBR,PC+1	AAL		1
 | 
						||
		3	1  1   0  1	PBR,PC+1	AAH		1
 | 
						||
		4	1  1   1  0	0,AA		NEW PCL		1
 | 
						||
		5	1  1   1  0	0,AA+1		NEW PCH		1
 | 
						||
		6	1  1   1  0	0,AA+2		NEW PBR		1
 | 
						||
		1	1  1   1  1	NEW PBR,PC	New Op Code	1
 | 
						||
 | 
						||
 | 
						||
 | 
						||
 **18 Direct Indirect -- (d)
 | 
						||
  (ORA,AND,EOR,ADC,STA,LDA,CMP,SBC)
 | 
						||
  (8 Op Codes)
 | 
						||
  (2 bytes)
 | 
						||
  (5,6 and 7 cycles)
 | 
						||
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
		2	1  1   0  1	PBR,PC+1	DO		1
 | 
						||
	    (2) 2a	1  1   0  0	PBR,PC+1	IO		1
 | 
						||
		3	1  1   1  0	0,D+DO		AAL		1
 | 
						||
		1	1  1   1  0	0,D+DO+1	AAH		1
 | 
						||
		5	1  1   1  0	DBR,AA		Data Low	1/0
 | 
						||
	    (1) 5a	1  1   1  0	DBR,AA+1	Data Low	1/0
 | 
						||
 | 
						||
 | 
						||
 | 
						||
 *19 Direct Indirect Long -- [d]
 | 
						||
  (ORA,AND,EOR,ADC,STA,LDA,CMP,SBC)
 | 
						||
  (8 Op Codes)
 | 
						||
  (2 bytes)
 | 
						||
  (6,7 and 8 cycles)
 | 
						||
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
		2	1  1   0  1	PBR,PC+1	DO		1
 | 
						||
	    (2) 2a	1  1   0  0	PBR,PC+1	IO		1
 | 
						||
		3	1  1   1  0	0,D+DO		AAL		1
 | 
						||
		4	1  1   1  0	0,D+DO+1	AAH		1
 | 
						||
		5	1  1   1  0	0,D+DO+2	AAB		1
 | 
						||
		6	1  1   1  0	AAB,AA		Data Low	1/0
 | 
						||
	    (1) 6a	1  1   1  0	AAB,AA+1	Data High	1/0
 | 
						||
 | 
						||
 | 
						||
 | 
						||
 20a Absolute Indexed Indirect -- (a,x)
 | 
						||
  (JMP)
 | 
						||
  (1 Op Code)
 | 
						||
  (3 bytes)
 | 
						||
  (6 cycles)
 | 
						||
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
		2	1  1   0  1	PBR,PC+1	AAL		1
 | 
						||
		3	1  1   0  1	PBR,PC+2	AAH		1
 | 
						||
		4	1  1   0  0	PBR,PC+2	IO		1
 | 
						||
		5	1  1   0  1	PBR,AA+X	NEW PCL		1
 | 
						||
		6	1  1   0  1	PBR,AA+X+1	NEW PCH		1
 | 
						||
		1	1  1   1  1	PBR,NEWPC	New Op Code	1
 | 
						||
 | 
						||
 | 
						||
 *20b Absolute Indered Indirect (Jump to Subroutine Indexed Indirect) -- (a,x)
 | 
						||
  (JSR)
 | 
						||
  (1 Op Code)
 | 
						||
  (3 bytes)
 | 
						||
  (8 cycles)
 | 
						||
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
		2	1  1   0  1	PBR,PC+1	AAL		1
 | 
						||
		3	1  1   1  0	0,S		PCH		0
 | 
						||
		4	1  1   1  0	0,S-1		PCL		0
 | 
						||
		5	1  1   0  1	PBR,PC+2	AAH		1
 | 
						||
		6	1  1   0  0	PBR,PC+2	IO		1
 | 
						||
		7	1  1   0  1	PBR,AA+X	NEW PCL		1
 | 
						||
		8	1  1   0  1	PBR,AA+X+1	NEW PCH		1
 | 
						||
		1	1  1   1  1	PBR,NEWPC	New Op Code	1
 | 
						||
 | 
						||
 | 
						||
 | 
						||
 21a Stack (Hardware Interrupts) -- s
 | 
						||
  (IRQ,NMI,ABORT,RES)
 | 
						||
  (4 hardware Interrupts)
 | 
						||
  (0 bytes)
 | 
						||
  (7 and 8 cycles)
 | 
						||
 | 
						||
		1	1  1   1  1	PBR,PC		IO		1
 | 
						||
	    (3) 2	1  1   0  0	PBR,PC		IO		1
 | 
						||
	    (7) 3	1  1   1  0	0,S		PBR		0
 | 
						||
	   (10) 4	1  1   1  0	0,S-1		PCH		0
 | 
						||
	   (10) 5	1  1   1  0	0,S-2		PCL		0
 | 
						||
	(10,11) 6	1  1   1  0	0,S-3		P		0
 | 
						||
		7	0  1   1  0	0,VA		AAVL		1
 | 
						||
		8	0  1   1  0	0,VA+1		AAVH		1
 | 
						||
		1	1  1   1  1	0,AAV		New Op Code	1
 | 
						||
 | 
						||
 | 
						||
 21b Stack (Software  Interrupts) -- s
 | 
						||
  (BRK,COP)
 | 
						||
  (2 Op Codes)
 | 
						||
  (2 bytes)
 | 
						||
  (7 and 8 cycles)
 | 
						||
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
	    (3) 2	1  1   0  1	PBR,PC+1	Signature	1
 | 
						||
	    (7) 3	1  1   1  0	0,S		PBR		0
 | 
						||
		4	1  1   1  0	0,S-1		PCH		0
 | 
						||
		5	1  1   1  0	0,S-2		PCL		0
 | 
						||
		6	1  1   1  0	0,S-3  (COP Latches) P		0
 | 
						||
		7	0  1   1  0	0,VA		AAVL		1
 | 
						||
		8	0  1   1  0	0,VA+1		AAVH		1
 | 
						||
		1	1  1   1  1	0,AAV		New Op Code	1
 | 
						||
 | 
						||
 | 
						||
 21c Stack (Return from Interrupt) -- s
 | 
						||
  (RTI)
 | 
						||
  (1 Op Code)
 | 
						||
  (1 byte)
 | 
						||
  (6 and 7 cycles)
 | 
						||
  (different order from N6502)
 | 
						||
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
		2	1  1   0  0	PBR,PC+1	IO		1
 | 
						||
	    (3) 3	1  1   0  0	PBR,PC+1	IO		1
 | 
						||
		4	1  1   1  0	0,S+1		P		1
 | 
						||
		5	1  1   1  0	0,S+2		New PCL		1
 | 
						||
		6	1  1   1  0	0,S+3		New PCH		1
 | 
						||
	    (7)	7	1  1   1  0	0,S+4		PBR		1
 | 
						||
		1	1  1   1  1	PBR,NewPC	New Op Code	1
 | 
						||
 | 
						||
 | 
						||
 21d Stack (Return from Subroutine) -- s
 | 
						||
  (RTS)
 | 
						||
  (1 Op Code)
 | 
						||
  (1 byte)
 | 
						||
  (6 cycles)
 | 
						||
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
		2	1  1   0  0	PBR,PC+1	IO		1
 | 
						||
		3	1  1   0  0	PBR,PC+1	IO		1
 | 
						||
		4	1  1   1  0	0,S+1		New PCL-1	1
 | 
						||
		5	1  1   1  0	0,S+2		New PCH		1
 | 
						||
		6	1  1   0  0	0,S+2		IO		1
 | 
						||
		1	1  1   1  1	PBR,NewPC	New Op Code	1
 | 
						||
 | 
						||
 | 
						||
 *21e Stack (Return from Subroutine Long) -- s
 | 
						||
  (RTL)
 | 
						||
  (1 Op Code)
 | 
						||
  (1 byte)
 | 
						||
  (6 cycles)
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
		2	1  1   0  0	PBR,PC+1	IO		1
 | 
						||
		3	1  1   0  0	PBR,PC+1	IO		1
 | 
						||
		4	1  1   1  0	0,S+1		NEW PCL		1
 | 
						||
		5	1  1   1  0	0,S+2		NEW PCH		1
 | 
						||
		6	1  1   1  0	0,S+3		NEW PBR		1
 | 
						||
		1	1  1   1  1	NEWPBR,PC	New Op Code	1
 | 
						||
 | 
						||
 | 
						||
 21f Stack (Push) -- s
 | 
						||
  (PHP,PHA,PHY,PHX,PHD,PHK,PHB)
 | 
						||
  (7 Op Codes)
 | 
						||
  (1 byte)
 | 
						||
  (3 and 4 cycles)			
 | 
						||
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
		2	1  1   0  0	PBR,PC+1	IO		1
 | 
						||
		3a	1  1   1  0	0,S		Register High	0
 | 
						||
		3	1  1   1  0	0,S-1		Register Low	0
 | 
						||
 | 
						||
 | 
						||
 21g Stack (Pull) -- s
 | 
						||
  (PLP,PLA,PLY,PLX,PLD,PLB)
 | 
						||
  (Different than N6502)
 | 
						||
  (6 Op Codes)
 | 
						||
  (1 byte)
 | 
						||
  (4 and 5 cycles)
 | 
						||
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
		2	1  1   0  0	PBR,PC+1	IO		1
 | 
						||
		3	1  1   0  0	PBR,PC+1	IO		1
 | 
						||
		4	1  1   1  0	0,S+1		Register Low	1
 | 
						||
	    (1) 4a	1  1   1  0	0,S+2		Register High	1
 | 
						||
 | 
						||
 | 
						||
 *21h Stack (Push Effective Indirect Address) -- s
 | 
						||
  (PEI)
 | 
						||
  (1 Op Code)
 | 
						||
  (2 bytes)
 | 
						||
  (6 and 7 cycles)
 | 
						||
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
		2	1  1   0  1	PBR,PC+1	DO		1
 | 
						||
	    (2) 2a	1  1   0  0	PBR,PC+1	IO		1
 | 
						||
		3	1  1   1  0	0,D+DO		AAL		1
 | 
						||
		d	1  1   1  0	0,D+DO+1	AAH		1
 | 
						||
		5	1  1   1  0	0,S		AAH		0
 | 
						||
		6	1  1   1  0	0,S-1		AAL		0
 | 
						||
 | 
						||
 | 
						||
 *21i Stack (Push Effective Absolute Address) -- s
 | 
						||
  (PEA)
 | 
						||
  (1 Op Code)
 | 
						||
  (3 bytes)
 | 
						||
  (5 cycles)
 | 
						||
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
		2	1  1   0  1	PBR,PC+1	AAL		1
 | 
						||
		3	1  1   0  1	PBR,PC+2	AAH		1
 | 
						||
		4	1  1   1  0	0,S		AAH		0
 | 
						||
		5	1  1   1  0	0,S-1		AAL		0
 | 
						||
				
 | 
						||
 | 
						||
 | 
						||
 *21j Stack (Push Effective Program Counter Relative Address) -- s
 | 
						||
  (PER)
 | 
						||
  (1 Op Code)
 | 
						||
  (3 bytes)
 | 
						||
  (6 cycles)
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
		2	1  1   0  1	PBR,PC+1	Offset Low	1
 | 
						||
		3	1  1   0  1	PBR,PC+2	Offset High	1
 | 
						||
		4	1  1   0  0	PBR,PC+2	IO		1
 | 
						||
		5	1  1   1  0	0,S		PCH+Offset+CARRY 0
 | 
						||
		6	1  1   1  0	0,S-1		PCL + Offset	0
 | 
						||
 | 
						||
 | 
						||
 | 
						||
 *22 Stace Relative -- d,s
 | 
						||
  (ORA,AND,EOR,ADC,STA,LDA,CMP,SBC)
 | 
						||
  (8 Op Codes)
 | 
						||
  (2 bytes)
 | 
						||
  (4 and 5 cycles)
 | 
						||
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
		2	1  1   0  1	PBR,PC+1	SO		1
 | 
						||
		3	1  1   0  0	PBR,PC+1	IO		1
 | 
						||
		4	1  1   1  0	0,S+SO		Data Low	1/0
 | 
						||
	    (1) 4a	1  1   1  0	0,S+SO+1	Data High	1/0
 | 
						||
 | 
						||
 | 
						||
	
 | 
						||
 *23 Stack Relative Indirect Indexed -- (d,s),y
 | 
						||
  (8 Op Codes)
 | 
						||
  (2 bytes)
 | 
						||
  (7 and 8 cycles)
 | 
						||
 | 
						||
		1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
		2	1  1   0  1	PBR,PC+1	SO		1
 | 
						||
		3	1  1   0  0	PBR,PC+1	IO		1
 | 
						||
		4	1  1   1  0	0,S+SO		AAL		1
 | 
						||
		5	1  1   1  0	0,S+SO+1	AAH		1
 | 
						||
		6	1  1   0  0	0,S+SO+1	IO		1
 | 
						||
		7	1  1   1  0	DBR,AA+Y	Data Low	1/0
 | 
						||
	    (1) 7a	1  1   1  0	DBR,AA+Y+1	Data High	1/0
 | 
						||
 | 
						||
 | 
						||
 | 
						||
 *24a Block Move Positive (forward) -- xyc
 | 
						||
   (MVP)
 | 
						||
   (1 Op Code)
 | 
						||
   (3 bytes)
 | 
						||
   (7 cycles)
 | 
						||
 | 
						||
	     +-	1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
   	     |	2	1  1   0  1	PBR,PC+1	DBA		1
 | 
						||
	     |	3	1  1   0  1	PBR,PC+2	SBA		1
 | 
						||
	N-2  |	4	1  1   1  0	SBA,X		Source Data	1
 | 
						||
	Byte |	5	1  1   1  0	DBA,Y		Dest Data	0
 | 
						||
	C=2  |	6	1  1   0  0	DBA,Y		IO		1
 | 
						||
	     +-	7	1  1   0  0	DBA,Y		IO		1
 | 
						||
 | 
						||
	     +-	1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
	     |	2	1  1   0  1	PBR,PC+1	DBA		1
 | 
						||
	N-1  |	3	1  1   0  1	PBR,PC+2	SBA		1
 | 
						||
	Byte |	4	1  1   1  0	SBA,X-1		Source Data	1
 | 
						||
	C=1  |	5	1  1   1  0	DBA,Y-1		Dest Data	0
 | 
						||
	     |	6	1  1   0  0	DBA,Y-1		IO		1
 | 
						||
	     +-	7	1  1   0  0	DBA,Y-1		IO		1
 | 
						||
 | 
						||
	     +-	1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
	     |	2	1  1   0  1	PBR,PC+1	DBA		1
 | 
						||
      N Byte |	3	1  1   0  1	PBR,PC+2	SBA		1
 | 
						||
	Last |	4	1  1   1  0	SBA,X-2		Source Data	1
 | 
						||
	C=0  |	5	1  1   1  0	DBA,Y-2		Dest Data	0
 | 
						||
	     |	6	1  1   0  0	DBA,Y-2		IO		1
 | 
						||
	     |	7	1  1   0  0	DBA,Y-2		IO		1
 | 
						||
	     +-	1	1  1   1  1	PBR,PC+3	New Op Code	1
 | 
						||
 | 
						||
   x = Source Address
 | 
						||
   y = Destination
 | 
						||
   c = Number of Bytes to move -1
 | 
						||
   x,y Decrement
 | 
						||
   MVP is used when the destination start address is higher (more positive)
 | 
						||
   than the source start address.
 | 
						||
 | 
						||
   FFFFFF
 | 
						||
     ^	Dest Start
 | 
						||
     |	Source Start
 | 
						||
     |	Dest End
 | 
						||
     |	Source End
 | 
						||
   000000
 | 
						||
 | 
						||
 | 
						||
 *24b, Block Move Negative (backward) -- xyc
 | 
						||
   (MVN)
 | 
						||
   (1 Op Code)
 | 
						||
   (3 bytes)
 | 
						||
   (7 cycles)
 | 
						||
 | 
						||
	     +-	1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
   	     |	2	1  1   0  1	PBR,PC+1	DBA		1
 | 
						||
	     |	3	1  1   0  1	PBR,PC+2	SBA		1
 | 
						||
	N-2  |	4	1  1   1  0	SBA,X		Source Data	1
 | 
						||
	Byte |	5	1  1   1  0	DBA,Y		Dest Data	0
 | 
						||
	C=2  |	6	1  1   0  0	DBA,Y		IO		1
 | 
						||
	     +-	7	1  1   0  0	DBA,Y		IO		1
 | 
						||
 | 
						||
	     +-	1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
	     |	2	1  1   0  1	PBR,PC+1	DBA		1
 | 
						||
	N-1  |	3	1  1   0  1	PBR,PC+2	SBA		1
 | 
						||
	Byte |	4	1  1   1  0	SBA,X+1		Source Data	1
 | 
						||
	C=1  |	5	1  1   1  0	DBA,Y+1		Dest Data	0
 | 
						||
	     |	6	1  1   0  0	DBA,Y+1		IO		1
 | 
						||
	     +-	7	1  1   0  0	DBA,Y+1		IO		1
 | 
						||
 | 
						||
	     +-	1	1  1   1  1	PBR,PC		Op Code		1
 | 
						||
	     |	2	1  1   0  1	PBR,PC+1	DBA		1
 | 
						||
      N Byte |	3	1  1   0  1	PBR,PC+2	SBA		1
 | 
						||
	Last |	4	1  1   1  0	SBA,X+2		Source Data	1
 | 
						||
	C=0  |	5	1  1   1  0	DBA,Y+2		Dest Data	0
 | 
						||
	     |	6	1  1   0  0	DBA,Y+2		IO		1
 | 
						||
	     |	7	1  1   0  0	DBA,Y+2		IO		1
 | 
						||
	     +-	1	1  1   1  1	PBR,PC+3	New Op Code	1
 | 
						||
 | 
						||
   x = Source Address
 | 
						||
   y = Destination
 | 
						||
   c = Number of Bytes to move -1
 | 
						||
   x,y Increment
 | 
						||
   MVN is used when the destination start address is lower (more negative)
 | 
						||
   than the source start address.
 | 
						||
 | 
						||
   FFFFFF
 | 
						||
     |	Source End
 | 
						||
     |	Dest End
 | 
						||
     |	Source Start
 | 
						||
     v	Dest Start
 | 
						||
   000000
 | 
						||
 | 
						||
 | 
						||
 | 
						||
  Notes
 | 
						||
    (1) Add 1 byte (for immediate only) for M=O or X=O (i.e. 16 bit data),
 | 
						||
	 add 1 cycle for M=O or X=0.
 | 
						||
    (2) Add 1 cycle for direct register low (DL) not equal 0.
 | 
						||
    (3) Special case for aborting instruction. This is the last cycle which
 | 
						||
	 may be aborted or the Status, PBR or DBR registers will be updated.
 | 
						||
    (4) Add 1 cycle for indexing across page boundaries, or write, or X=0.
 | 
						||
	 When X=1 or in the emulation mode, this cycle contains invalid
 | 
						||
	 addresses.
 | 
						||
    (5) Add 1 cycle if branch is taken.
 | 
						||
    (6) Add 1 cycle if branch is taken across page boundaries in 6502 emutation
 | 
						||
	 mode (E=1).
 | 
						||
    (7) Subtract 1 cycle for 6502 emulation mode (E=1).
 | 
						||
    (8) Add 1 cycle lor REP, SEP.
 | 
						||
    (9) Wait at cycle 2 for 2 cycles after /NMI or /IRQ active input.
 | 
						||
   (10) R/W remains high during Reset.
 | 
						||
   (11) BRK bit 4 equals "0" in Emulation mode.
 | 
						||
 | 
						||
 | 
						||
  Abbreviations
 | 
						||
	AAB	Absolute Address Bank
 | 
						||
	AAH	Absolute Address High
 | 
						||
	AAL	Absolute Address Low
 | 
						||
	AAVH	Absolute Address Vector High
 | 
						||
	AAVL	Absolute Address Vector Low
 | 
						||
	C	Accumulator
 | 
						||
	D	Direct Register
 | 
						||
	DBA	Destination Bank Address
 | 
						||
	DBR	Data Bank Register
 | 
						||
	DO	Direct Offset
 | 
						||
	IDH	Immediate Data High
 | 
						||
	IDL	Immediate Data Low
 | 
						||
	IO	Internal Operation
 | 
						||
	P	Status Register
 | 
						||
	PBR	Program Bank Register
 | 
						||
	PC	Program Counter
 | 
						||
	R-M-W	Read-Modify-Write
 | 
						||
	S	Stack Address
 | 
						||
	SBA	Source Bank Address
 | 
						||
	SO	Stack Offset
 | 
						||
	VA	Vector Address
 | 
						||
	x, y	Index Registers
 | 
						||
	*	New G65SC816/802 Addressing Modes
 | 
						||
	**	New G65SC02 Addressing Modes
 | 
						||
	Blank	NMOS 6502 Addressing Modes
 | 
						||
 | 
						||
 |