mirror of
				https://github.com/larsbrinkhoff/awesome-cpus
				synced 2025-10-31 08:16:02 +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
 | ||
| 
 | ||
| 
 | 
