Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

WDC 65C816: Difference between revisions

Content deleted Content added
Citation bot (talk | contribs)
Altered pages. Removed parameters. Formatted dashes. | Use this bot. Report bugs. | Suggested by Abductive | Category:Articles containing potentially dated statements from April 2024 | #UCB_Category 475/957
 
(7 intermediate revisions by 6 users not shown)
Line 19:
|pack2 = 44-pin [[Plastic leaded chip carrier|PLCC]], others
|variant = {{plainlist|
* W65C802 (pin-compatablecompatible with W65C02)
* W65C265 (MCU)}}
|predecessor = {{plainlist|
Line 29:
The '''W65C816S''' (also '''65C816''' or '''65816''') is a 16-bit [[microprocessor]] (MPU) developed and sold by the [[Western Design Center]] (WDC). Introduced in 1983,<ref>[https://web.archive.org/web/20100206192831/http://processortimeline.info/proc1980.htm Chronology of Microprocessors (1980–1989)]</ref> the W65C816S is an enhanced version of the [[WDC 65C02]] [[8-bit computing|8-bit]] MPU, itself a [[CMOS]] enhancement of the venerable [[MOS Technology]] [[MOS Technology 6502|6502]] [[NMOS logic|NMOS]] MPU. The 65C816 is the CPU for the [[Apple IIGS]] and, in modified form, the [[Super Nintendo Entertainment System]].
 
The ''65'' in the part's designation comes from its 65C02 compatibility mode, and the ''816'' signifies that the MPU has selectable 8- and [[16-bit computing|16-bit]] [[processor register|register]] sizes. In addition to the availability of 16-bit registers, the W65C816S extends [[memory address]]ing to [[24-bit computing|24 bit]]s, supporting up to 16 [[megabyte]]s of [[random-access memory]]. It has an enhanced instruction set and a 16-bit [[StackCall (abstract data type)stack|stack pointer]], as well as several new electrical signals for improved system hardware management.
 
At [[reset (computing)|reset]], the W65C816S starts in "emulation mode", meaning it substantially behaves as a 65C02. Thereafter, the W65C816S may be switched to "native mode" with a two instruction sequence, causing it to enable all enhanced features, yet still maintain a substantial degree of [[backward compatibility]] with most 65C02 software. However, unlike the [[PDIP|PDIP40]] version of the 65C02, which is a [[pin-compatible]] replacement for its NMOS ancestor, the PDIP40 W65C816S is not pin-compatible with any other 6502 family MPU.
Line 47:
In the 1990s, both the 65C816 and 65C02 were converted to a fully [[static core]], which made it possible to completely stop the [[clock signal|processor's Ø2 clock]] without loss of register contents. This feature, along with the use of [[static RAM|asynchronous static RAM]], made it possible to produce designs that used minimal power when in a standby state.
 
{{As of|April 2024}}, the W65C816S is available from WDC in 40 pin [[PDIP]], [[plastic leaded chip carrier|PLCC44]], or 44-pin [[Quad flat package#PQFP|TQFP]] packaging, as an [[microcontroller|MCU]] through the W65C265,<ref>{{Cite web |date=5 Jan 2021 |title=W65C265S 16-bit Microcontroller |url=https://www.westerndesigncenter.com/wdc/w65c265s-chip.php |url-status=live |archive-url=https://web.archive.org/web/20240402205917/https://www.westerndesigncenter.com/wdc/w65c265s-chip.php |archive-date=2 Apr 2024 |access-date=7 Apr 2024 |website=The Western Design Center, Inc.}}</ref> and as IP cores for [[Application-specific integrated circuit|ASIC]] integration<ref>{{Cite web |date=5 Jan 2021 |title=W65C816 8/16-bit Microprocessor |url=https://www.westerndesigncenter.com/wdc/w65c816s-core.php |url-status=live |archive-url=https://web.archive.org/web/20231115050721/https://www.westerndesigncenter.com/wdc/w65c816s-core.php |archive-date=15 Nov 2023 |access-date=7 Apr 2024 |website=The Western Design Center, Inc.}}</ref><ref>{{Cite web |date=5 Jan 2021 |title=W65C265S 8/16-bit Microcontroller |url=https://www.westerndesigncenter.com/wdc/w65c265s-core.php |url-status=live |archive-url=https://web.archive.org/web/20240407131630/https://www.westerndesigncenter.com/wdc/w65c265s-core.php |archive-date=7 Apr 2024 |access-date=7 Apr 2024 |website=The Western Design Center, Inc.}}</ref> (for example [[Winbond]]'s W55V9x series of TV [[Edutainment]] [[integrated circuit|IC]]s<ref>{{citationCite web needed|date=April2 May 2006 |title=W55V92 TV-toy Controller Data Sheet |url=https://static6.arrow.com/aropdfconversion/5557b1c0d4895012527b1add354b861f938e4daa/w55v92a1.7.pdf |access-date=12 June 2024 |website=Arrow Electronics}}</ref>).
 
[[File:WDC W65C802P 4 1.jpg|thumb|W65C802P]]
Line 158:
| style="text-align:center;"| '''z'''
| style="text-align:center;"| '''c'''
| style="background:white; color:black" | [[Status register|'''SP'''tatusrogram '''R'''egisterstatus register]]
|- style="background:silver;color:black"
| style="text-align:center; background:white" colspan="23" |
| style="text-align:center;"| '''e'''
| style="background:white; color:black" | '''SP'''tatusrogram '''R'''egisterstatus register [[WDC 65C816#Switching between modes|mode flag]]
|}
|}
Line 195:
The most obvious change to the 65C816 when running in native mode is the expansion of the various registers from 8-bit to 16-bit sizes. This enhancement affects the accumulator (<code>A</code>), the <code>X</code> and <code>Y</code> [[index register]]s, and the [[stack pointer]] (<code>SP</code>). It does not affect the [[program counter]] (<code>PC</code>), which has always been 16-bit.{{sfn|Eyes|Lichty|1986|p=46}}
 
When running in native mode, two bits in the status register change their meaning. In the original 6502, bits 4 and 5 were not used, although bit 4 is referred to as the break (<code>b</code>) flag. In native mode, bit 4 becomes the <code>x</code> flag and bit 5 becomes the <code>m</code> flag. These bits control whether or not the [[index register]]s (<code>x</code>) and/or accumulator/memory (<code>m</code>) are 8-bit or 16-bit in size. Zeros in these bits set 16-bit sizes, ones set 8-bit sizes. These bits are locked at ones when the processor is powered on or reset, but become changeable when the processor is switched to native mode.{{sfn|Eyes|Lichty|1986|p=46}}
 
In native mode operation, the accumulator and index registers may be set to 16- or 8-bit sizes at the programmer’s discretion by using the <code>REP</code> and <code>SEP</code> instructions to manipulate the <code>m</code> and <code>x</code> status register bits. This feature gives the programmer the ability to perform operations on either word- and byte-size data. As the accumulator and index register sizes are independently settable, it is possible, for example, to have the accumulator set to eight bits and the index registers set to 16 bits, giving the programmer the ability to manipulate individual bytes over a 64KB range without having to perform pointer arithmetic.
Line 217:
Internally, the 65c816 is a fully 16-bit design. The <code>m</code> and <code>x</code> bits in <code>SR</code> determine how the user registers (accumulator and index) appear to the rest of the system. Upon reset, the 65c816 starts in 6502 emulation mode, in which <code>m</code> and <code>x</code> are locked to <code>1</code>. Hence the registers are locked to eight-bit size. The most significant byte (MSB) of the accumulator (the <code>B</code>-accumulator) is not directly accessible but can be swapped with the least significant byte (LSB) of the accumulator (the <code>A</code>-accumulator) by using the <code>XBA</code> instruction. There is no corresponding operation for the index registers (<code>X</code> and <code>Y</code>), whose MSBs are locked at <code>$00</code>.
 
Upon being switched to native mode, the MSB of <code>X</code> and <code>Y</code> will be zero, and the <code>B</code>-accumulator will be unchanged. If the <code>m</code> bit in <code>SR</code> is cleared, the <code>B</code>-accumulator will be “ganged”"ganged" to the <code>A</code>-accumulator to form a 16-bit register (called the <code>C</code>-accumulator). A load/store or arithmetic/logical operation involving the accumulator and/or memory will be a 16-bit operation—two bus cycles are required to fetch/store a 16-bit value.
 
If the <code>x</code> bit in <code>SR</code> is cleared, both index registers will be set to 16 bits. If used to index an address, e.g., <code>LDA SOMEWHERE,X</code>, the 16-bit value in the index register will be added to the base address to form the effective address.
Line 249:
{{See also|MOS Technology 6502#Further reading|l1=List of books about 65xx microprocessor families}}
* ''[http://www.westerndesigncenter.com/wdc/documentation/w65c816s.pdf 65C816 Datasheet]''; Western Design Center; 55 pages; 2018.
* Eyes, David and Ron Lichty; ''Programming the 65816: Including the 6502, 65C02, and 65802''; Brady Publishing; 636 pg; 2015
* Fischer, Michael; ''65816/65802 assembly language programming''; Osborne/McGraw-Hill; 686 pg; 1986
 
==External links==