MOS Technology 6510
The MOS Technology 6510 is the 8-bit microprocessor used as the central processor in the Commodore 64 (C64).[1][2] It retains the 6502 programming model and instruction compatibility while adding an on-chip, bit-programmable parallel port.[3][4] In the C64, that port is not a general-purpose extra for applications: its lower lines participate in selecting the CPU-visible memory configuration, and its other connected lines support the cassette interface.[5][4]
6502-compatible design
[edit | edit source]The 6510 belongs to the 6502 line in the practical sense that software written for the documented 6502 instruction architecture can execute on it without the port changing the instruction set.[3][4] It has an 8-bit data bus and a 16-bit address bus, so its processor-visible address space comprises 65,536 byte locations.[3][2] This combination is why C64 machine-language programming is ordinarily described with 6502 registers, addressing modes, and instructions even though the installed processor is a 6510.[3][4]
The port is the material architectural addition for the C64. The generic manufacturer sheet describes an eight-bit port and shows related package variants, whereas the C64 documentation and C64-specific pinout accounts show six connected processor-port lines, P0–P5.[3][5][2] This should be read as a distinction between family-level documentation and the C64's implemented package and wiring, rather than as evidence for two incompatible C64 designs.[3][5][4] The C64 processor operates near one megahertz, with the precise nominal rate differing between PAL and NTSC machines.[1][2]
Place in the Commodore 64
[edit | edit source]The C64 combines 64 KiB of RAM with BASIC ROM, KERNAL ROM, character ROM, I/O devices, and possible cartridge resources, but the processor can present only a 64 KiB address space at one time.[1][4][6] The system therefore uses overlays: at certain address ranges, the selected responder can be RAM, ROM, or I/O rather than a permanently unique physical memory device.[4][6] The 6510's port supplies three of the control signals that the C64's programmable logic array (PLA) combines with address and cartridge signals to make those selections.[5][4]
This arrangement makes the 6510 part of the C64's memory-management mechanism, even though it has no separate memory-management unit. Port line P0 is associated with LORAM, P1 with HIRAM, and P2 with CHAREN; through the PLA, these signals govern the usual visibility of BASIC ROM at $A000–$BFFF, KERNAL ROM at $E000–$FFFF, and I/O versus character ROM in the $D000–$DFFF window.[5][2][6] Cartridge control lines can also influence the result, so the same processor-port bit pattern is not the whole memory map in every hardware configuration.[4][6] The CPU's role is consequently both conventional—fetching and executing instructions—and configurational, because a program can change what later CPU reads and writes reach.[3][4]
The ordinary C64 configuration is therefore a selected view, not a claim that the ROM and I/O areas displace the machine's RAM permanently. With the customary settings, firmware and I/O are convenient to use, while changing the port can expose RAM in areas that normally respond as BASIC ROM, KERNAL ROM, or the $D000 window.[2][6] This is a board-level selection process: the port does not copy data between memories, and the PLA rather than the 6510 alone performs the decoding that enables a selected responder.[5][4] Consequently, a memory address in a C64 program names a location within a configuration, not necessarily one unchanging physical chip.[4][6]
On-chip port and registers
[edit | edit source]The port is controlled through two special locations at the start of the CPU address space. Address $0000 is the data-direction register and $0001 is the port data register; direction is individually selectable by bit.[3][2][4] Programs must distinguish those registers: writing a bit value to $0001 does not drive a port line unless the corresponding direction bit has been configured as an output.[3][2] On the C64, only the low six bits are significant for the processor-port connections described by the board documentation.[5][2]
The three low lines are shared system controls rather than spare user I/O. Altering them can reveal RAM beneath a ROM or I/O overlay, select the character ROM for CPU reads, or restore the ordinary firmware-and-I/O layout.[2][6] Because I/O registers and character ROM occupy the same CPU address window under different selections, code that switches the window away from I/O cannot simultaneously use the device registers located there.[4][6] A temporary configuration change thus needs to preserve enough executable code and data in the selected view to return safely to the desired configuration.[3][4]
The remaining connected lines serve the cassette subsystem. C64-specific references identify P3 as cassette data output, P4 as cassette switch sense, and P5 as cassette motor control.[2][4] The board schematic independently places these processor-port connections on the cassette-related circuitry, while the lower three lines lead to the PLA inputs.[5][4] Tape input timing is not handled by the port alone: the C64OS schematic analysis traces the cassette read path through CIA 1 and its interrupt path, so the CPU port should not be mistaken for the complete cassette interface.[5][4]
Bus participation and programming consequences
[edit | edit source]The 6510 also has an address-enable control input. When that signal is inactive, the processor's address, data, and read/write outputs enter a high-impedance state; the manufacturer describes this as support for direct memory access and shared-bus systems.[3][2] In the C64, the board-level account identifies this capability as the means by which the CPU can be decoupled while another chip takes control of the bus.[5][2] This is important in a graphics computer because CPU operation is coordinated with other chips rather than occurring on an electrically private bus.[5][2]
For programmers, the lasting significance of the 6510 is that $0000 and $0001 are live hardware state, not ordinary scratch bytes.[3][6] Software that changes the port must account for the data-direction register, the selected memory view, cartridge inputs where relevant, and the need to restore a configuration expected by firmware or a caller.[4][6] The 6510 therefore preserves 6502-compatible programming while binding that programming model tightly to the C64's ROM, I/O, cassette, and bus-sharing design.[3][5][4]
See also
[edit | edit source]- Commodore 64
- Commodore 64 memory map
- MOS Technology 6502
- KERNAL
- Commodore 64 BASIC
- VIC-II
- SID
- MOS Technology 6526 CIA
- Commodore 64 cartridge
- Datassette
- Zero page
References
[edit | edit source]- ↑ 1.0 1.1 1.2 “Commodore 64 Microcomputer”. Smithsonian National Museum of American History. Description. Accessed 2026-09-21.
- ↑ 2.00 2.01 2.02 2.03 2.04 2.05 2.06 2.07 2.08 2.09 2.10 2.11 2.12 2.13 “CPU 6510 / 8500”. MJK's Commodore 64 & LCD Page, University of Waterloo. “Technical data” and “Technical info”. Accessed 2026-09-21.
- ↑ 3.00 3.01 3.02 3.03 3.04 3.05 3.06 3.07 3.08 3.09 3.10 3.11 3.12 “6510 Microprocessor with I/O”. Commodore Semiconductor Group. pp. 1, 6, 10. Accessed 2026-09-21.
- ↑ 4.00 4.01 4.02 4.03 4.04 4.05 4.06 4.07 4.08 4.09 4.10 4.11 4.12 4.13 4.14 4.15 4.16 4.17 4.18 4.19 “The 6510 Processor Port”. C64 OS(2019-05-10). opening discussion and “What is a Port?”. Accessed 2026-09-21.
- ↑ 5.00 5.01 5.02 5.03 5.04 5.05 5.06 5.07 5.08 5.09 5.10 5.11 “Service Manual, Model C64 Computer, Feb. 1985, PN-314001-02”. Commodore Business Machines; archived by Zimmers.NET. schematic 251138, sheets 1–2; 6510 and PLA pinouts. Accessed 2026-09-21.
- ↑ 6.00 6.01 6.02 6.03 6.04 6.05 6.06 6.07 6.08 6.09 “C64 Memory Map”. Ultimate Commodore 64 Reference. $0000 and $0001 entries; overview of address-space allocation. Accessed 2026-09-21.
Automation and sourcing note
[edit | edit source]This candidate was independently synthesized from the cited sources under c64.wiki publication policy. It contains no copied manual prose, scans, images, screenshots, or source-code extracts; historical manuals and schematics are cited as evidence only.