[Prev] [Next] [Contents] [Commodore] [New] [Search] [Home]

System Specification for C65Fred BowenMarch 1, 1991

Processor status P register

The Processor status register is an 8-bit register which is used to indicate the status of the microprocessor. It contains 8 processor "flags". Some of the flags are set or reset based on the results of various types of operations. Others are more specific. The flags are ...

FlagNameTypical idication
NNegative result of operation is negative
VOverflow result of add or subtract causes signed overflow
EExtend disables stack pointer extension
BBreak interrupt was caused by BRK opcode
DDecimal perform add/subtract using BCD math
IInterruptdisable IRQ interrupts
ZZero result of operation is zero
CCarry operation caused a carry

Stack Pointer SP

The stack pointer is a 16 bit register that has two modes. It can be programmed to be either an 8-bit page Programmable pointer, or a full 16-bit pointer. The processor status E bit selects which mode will be used. When set, the E bit selects the 8-bit mode. When reset, the E bit selects the 16-bit mode.

Upon reset, the CSG 4502 will come up in the 8-bit page-programmable mode, with the stack page set to 1. This makes it compatible with earlier 6502 products. The programmer can quickly change the default stack page by loading the Y register with the desired page and transferring its contents to the stack pointer high byte, using the TYS,opcode. The 8-bit stack pointer can be set by loading the X register with the desired value, and transferring its contents to the stack pointer low byte, using the TXS opcode.

To select the 16-bit stack poinler mode, the user must execute a CLE (for CLear Extend disable) opcode. Setting the 16-bit pointer is done by loading the X and Y registers with the desired stack pointer low and high bytes, respectively, and then transferring their contents to the stack pointer using TXS and TYS. To return to 8-bit page mode, simple execute a SEE (SEt Extend disable) opcode.


If you are using Non-Maskable-Interrupts, or Interrupt Request is enabled, and you want to change BOTH stack pointer bytes, do not put any code between the TXSsand TYS opcodes Taking this precaution will prevent any interrupt s irom occuring between the setting of the two stack pointer bytes, causing a potential for writing stack data to an unwanted area.

Program Counter PC

The program counter is a 16-bit up-only counter that determines what area of memory that program information will be fetched from. The user generally only modifies it using jumps, branches, subroutine calls, or returns. it is set initially, and by interrupts, from vectors at memory addresses FFFA through FFFF (hex). See "Interrupts" below.

[Prev] [Next] [Contents] [Commodore] [New] [Search] [Home]
This page has been created by Sami Rautiainen.
Read the small print. Last updated July 29, 2002.