El W65C816S (también conocido como 65C816 o 65816 ) es un microprocesador o CPU de 16 bits desarrollado y comercializado por Western Design Center (WDC). Presentado en 1985, el W65C816S es una versión mejorada de la CPU de 8 bits WDC 65C02 , que a su vez es una mejora CMOS de la venerable CPU NMOS 6502 de MOS Technology . El 65C816 es la CPU del Apple IIGS y, en una versión modificada, de la Super Nintendo Entertainment System .
El número 65 en la designación del componente proviene de su modo de compatibilidad 65C02, y el 816 indica que la MPU tiene registros seleccionables de 8 y 16 bits . Además de la disponibilidad de registros de 16 bits, el W65C816S extiende el direccionamiento de memoria a 24 bits , admitiendo hasta 16 megabytes de memoria de acceso aleatorio . Cuenta con un conjunto de instrucciones mejorado y un puntero de pila de 16 bits , así como varias señales eléctricas nuevas para una mejor gestión del hardware del sistema.
Al reiniciarse , el W65C816S se inicia en "modo de emulación", lo que significa que se comporta prácticamente como un 65C02. Posteriormente, el W65C816S puede cambiarse a "modo nativo" con una secuencia de dos instrucciones, lo que habilita todas las funciones mejoradas, manteniendo a la vez un alto grado de compatibilidad con versiones anteriores de la mayoría del software del 65C02. A diferencia de la versión PDIP40 del 65C02, que es un reemplazo compatible en pines para su predecesor NMOS, el PDIP40 W65C816S no es compatible en pines con ninguna otra MPU de la familia 6502.
El W65C802 o 65802 es totalmente compatible a nivel de software con el 65C816 y también es compatible eléctricamente con el 6502 y el 65C02. Por lo tanto, el W65C802 podría usarse como reemplazo directo en la mayoría de los sistemas equipados con un 6502 o un 65C02. Dado que el W65C802 tiene un número limitado de pines y no utiliza multiplexación, no puede emitir una dirección de 24 bits, lo que limita su espacio de direcciones a 64 KB. El W65C802 ya no se fabrica.
Historia

En 1981, Bill Mensch , fundador y director ejecutivo de WDC, comenzó el desarrollo del 65C02 con sus socios de producción, principalmente Rockwell Semiconductor y Synertek . El objetivo principal del proyecto 65C02 era pasar del proceso NMOS del 6502 original al proceso CMOS, lo que le permitiría funcionar con niveles de potencia mucho más bajos, entre 1/10 y 1/20 a cualquier velocidad de reloj dada. También se buscaba la capacidad de aumentar la velocidad de reloj máxima admitida. El diseño del 65C02 solucionó los errores del chip presentes en el NMOS 6502 (por ejemplo, el infame error) e introdujo nuevas instrucciones y nuevos modos de direccionamiento para algunas instrucciones existentes. [ 4 ]JMP (<addr>)
El desarrollo del W65C816S comenzó en 1982 después de que Mensch asesorara a Apple Computer sobre una nueva versión de la serie de computadoras personales Apple II que, entre otras cosas, tendría gráficos y sonido mejorados. Apple quería una MPU que fuera compatible por software con el 6502 que se usaba entonces en el Apple II, pero con la capacidad de direccionar más memoria y de cargar y almacenar palabras de 16 bits. [ 5 ] El resultado fue el 65C816, terminado en marzo de 1984, con muestras proporcionadas tanto a Apple como a Atari Corporation en la segunda mitad del año y lanzamiento completo en 1985. [ 6 ] Mensch contó con la ayuda de su hermana Kathryn durante el proceso de diseño, quien fue responsable de parte del diseño del dispositivo. [ 5 ]
El mismo proceso también dio lugar al 65C802, que era idéntico internamente al 65C816. Ambos se produjeron en las mismas líneas de fabricación y divergieron únicamente durante las últimas etapas de metalización, cuando el chip se conectaba a los pines externos. En el 65C802, esos pines tenían la misma disposición que el 6502 original, lo que permitía usarlo como reemplazo directo y, al mismo tiempo, permitir el procesamiento de 16 bits de la CPU. Sin embargo, como utilizaba la distribución de pines original, solo tenía 16 pines de direccionamiento y, por lo tanto, solo podía acceder a 64 KB de memoria externa. [ 7 ] Normalmente, cuando los fabricantes de hardware diseñaban un proyecto desde cero, utilizaban el 65C816 en lugar del 65C802, lo que provocó que este último fuera retirado de la producción.
Apple integró el 65C816 en la computadora Apple IIGS . El diseño básico del 65C816 fue obtenido por terceros proveedores como VLSI Technology , [ 8 ] GTE , Sanyo y otros desde mediados hasta finales de la década de 1980 hasta principios de la década de 1990.
En la década de 1990, tanto el 65C816 como el 65C02 se convirtieron en núcleos completamente estáticos , lo que permitió detener por completo el reloj Ø2 del procesador sin pérdida de datos en los registros. Esta característica, junto con el uso de memoria RAM estática asíncrona , posibilitó la creación de diseños que consumían una cantidad mínima de energía en estado de espera.
A partir de abril de 2025 El W65C816S está disponible en WDC en encapsulados PDIP de 40 pines , PLCC44 o TQFP de 44 pines , como MCU a través del W65C265, [ 9 ] y como núcleos IP para integración ASIC [ 10 ] [ 11 ] (por ejemplo, la serie W55V9x de circuitos integrados de entretenimiento educativo para TV de Winbond [ 12 ] ).

Características
Características del WDC 65C816:
- El diseño CMOS totalmente estático ofrece un bajo consumo de energía (300 µA a 1 MHz ) y una mayor inmunidad al ruido.
- Amplio rango de voltaje de funcionamiento : de 1,8 V a 5,0 V ± 5 %.
- Amplio rango de frecuencia de funcionamiento , oficialmente un máximo de 14 MHz a 5 voltios (20 MHz en SuperCPU ), utilizando una fuente de reloj monofásica.
- El modo de emulación permite una compatibilidad de software sustancial con los chips NMOS 6502 y CMOS 65C02, a excepción de los códigos de operación no documentados . Los 256 códigos de operación del 65C816 funcionan en ambos modos de operación.
- El direccionamiento de memoria de 24 bits proporciona acceso a 16 MB de espacio de memoria .
- ALU de 16 bits , acumulador (
C), puntero de pila (SP) y registros de índice (XyY). - Registro de página directa de 16 bits (también conocido como página cero) (
DP). DBRegistros de banco de datos ( ) y banco de programa ( ) de 8 bitsPB, que generan los bits 16 a 23 de direcciones de código y datos de 24 bits. Los registros de banco de programa y de datos separados permiten la segmentación del programa y el direccionamiento lineal de datos de 16 MB.- Las direcciones de datos válidas (
VDA) y las direcciones de programa válidas (VPA) controlan las salidas para la calificación de memoria, la caché dual y la implementación de DMA con robo de ciclo . - Vector pull (
VPB) controla la salida para indicar cuándo se está obteniendo un vector de interrupción . - La entrada Abort (
ABORTB) y el vector asociado admiten reparaciones del procesador de condiciones de error del bus, como fallas de página y violaciones de acceso a la memoria. - El direccionamiento directo de registros de página y de pila proporciona capacidad para la programación reentrante , recursiva y reubicable .
- 24 modos de direccionamiento : 13 modos originales del 6502 con 92 instrucciones que utilizan 256 códigos de operación , incluyendo la mayoría de los nuevos códigos de operación implementados en el 65C02.
- Instrucciones de copia de bloques (
MVNyMVP), que permiten copiar rápidamente estructuras de datos de un área de RAM a otra con un código mínimo. - Las instrucciones Wait-for-Interrupt (
WAI) y Stop-the-Clock (STP) reducen aún más el consumo de energía , disminuyen la latencia de interrupción y permiten la sincronización con eventos externos. - La instrucción Co-Processor (
COP) con vector asociado admite configuraciones de coprocesador, por ejemplo, procesadores de punto flotante . - Instrucción de "escape" reservada (
WDM) para futuros códigos de operación de dos bytes y un enlace a diseños futuros (WDM son las iniciales del diseñador de W65C816S, William D. Mensch ).
Comparación con modelos anteriores
Dos modos
El 65C816 tiene dos modos de funcionamiento: "modo de emulación", en el que las operaciones de 16 bits son invisibles (los registros de índice se fuerzan a ocho bits) y el chip parece muy similar al 6502, con los mismos tiempos de ciclo para los códigos de operación; y "modo nativo", que expone todas las nuevas características. La CPU entra automáticamente en modo de emulación al encenderse o reiniciarse, lo que permite reemplazar un 65(C)02, siempre que se realicen los cambios de circuito necesarios para adaptar la diferente disposición de pines. [ 4 ]
Registros de 16 bits
El cambio más evidente en el 65C816 cuando se ejecuta en modo nativo es la expansión de los distintos registros de 8 bits a 16 bits. Esta mejora afecta al acumulador ( A), los registros de índiceX y , y el puntero de pila ( ). No afecta al contador de programa ( ), que siempre ha sido de 16 bits. [ 13 ]YSPPC
Cuando se ejecuta en modo nativo, dos bits en el registro de estado cambian su significado. En el 6502 original, los bits 4 y 5 no se utilizaban, aunque el bit 4 se denomina bindicador de interrupción ( ). En modo nativo, el bit 4 se convierte en el xindicador y el bit 5 en el mindicador . Estos bits controlan si los registros de índice ( x) y el acumulador/memoria ( m) tienen un tamaño de 8 o 16 bits. Los ceros en estos bits establecen tamaños de 16 bits, los unos establecen tamaños de 8 bits. Estos bits se bloquean en unos cuando el procesador se enciende o se reinicia, pero se vuelven modificables cuando el procesador cambia a modo nativo. [ 13 ]
En el modo de operación nativo, los registros acumulador e índice pueden configurarse a 16 u 8 bits a discreción del programador mediante las REPinstrucciones SEPpara manipular los bits de mlos xregistros de estado. Esta función permite al programador realizar operaciones con datos de tamaño palabra o byte. Dado que los tamaños de los registros acumulador e índice se pueden configurar de forma independiente, es posible, por ejemplo, configurar el acumulador a ocho bits y los registros índice a 16 bits, lo que permite al programador manipular bytes individuales en un rango de 64 KB sin necesidad de realizar aritmética de punteros.
Cuando el tamaño de los registros se establece en 16 bits, un acceso a memoria buscará o almacenará dos bytes contiguos a una velocidad de un byte por ciclo de reloj. Por lo tanto, una instrucción de lectura-modificación-escritura, como ROR <addr>, cuando se usa con el acumulador establecido en 16 bits, afectará a dos bytes contiguos de memoria, no a uno, y consumirá más ciclos de reloj que cuando el acumulador se establece en ocho bits. De manera similar, todas las operaciones aritméticas y lógicas serán operaciones de 16 bits. [ 14 ]
Direccionamiento de 24 bits
Otro cambio importante en el sistema mientras se ejecuta en modo nativo es que el modelo de memoria se expande a un formato de 24 bits desde el formato original de 16 bits del 6502. El 65C816 utiliza dos registros de 8 bits, el registro del banco de datos ( DB) y el registro del banco de programa ( PB), para establecer los bits 16-23 de la dirección, generando efectivamente direcciones de 24 bits. En ambos casos, "banco" se refiere a un segmento contiguo de memoria de 64 KB que está delimitado por el rango de direcciones $xx0000–$xxFFFF, donde xxes la dirección del banco, es decir, los bits 16-23 de la dirección efectiva. Tanto DBcomo PBse inicializan a $00al encender o reiniciar. [ 15 ]
Durante un ciclo de búsqueda de código de operación u operando , PBse antepone al contador de programa ( PC) para formar la dirección efectiva de 24 bits. Si se PCproduce un "retorno" (vuelve a cero), PBno se incrementará. Por lo tanto, un programa está limitado por los límites del banco en el que se está ejecutando. Este modelo de memoria implica que los destinos de las bifurcaciones y subrutinas deben estar en el mismo banco que la instrucción que realiza la bifurcación o llamada, a menos que se utilicen saltos "largos" o llamadas a subrutinas para ejecutar código en otro banco. Para garantizar la coherencia del código al transferir el control entre bancos, PBsolo se puede cambiar cuando PCtambién se establece al mismo tiempo. [ 16 ] [ 17 ]
Durante un ciclo de búsqueda o almacenamiento de datos, DBse antepone a una dirección de datos de 16 bits para formar la dirección efectiva de 24 bits en la que se accederá a los datos. Esta característica del procesador permite ejecutar correctamente código 6502 o 65C02 que utiliza direcciones de 16 bits para referenciar elementos de datos. DBse puede cambiar bajo control del programa, algo que podría hacerse para acceder a datos más allá de los límites del direccionamiento de 16 bits. Además, DBse incrementará temporalmente si una dirección se indexa más allá de los límites del banco actualmente en DB. DBse ignora si se especifica una dirección de 24 bits como operando de una instrucción de búsqueda/almacenamiento de datos, o si la dirección efectiva está en la página directa (cero) o en la pila de hardware$00 . En este último caso, se utiliza un banco implícito para generar la dirección efectiva. [ 17 ]
Una adición más al conjunto de registros es el registro de página directa de 16 bits ( DP), que establece la dirección base para lo que antes se llamaba página cero , pero ahora se denomina página directa . El direccionamiento de página directa utiliza una dirección de 8 bits, lo que resulta en un acceso más rápido que cuando se utiliza una dirección de 16 o 24 bits. Además, algunos modos de direccionamiento que ofrecen indirección solo son posibles en la página directa. En el 65(c)02, la página directa siempre son los primeros 256 bytes de memoria, de ahí el nombre de "página cero". En modo nativo, el 65C816 puede reubicar la página directa (cero) en cualquier lugar del banco $00(los primeros 64 KB de memoria) escribiendo la dirección inicial de 16 bits en DP. Hay una penalización de acceso de un ciclo si DPno se establece en un límite de página exacto, es decir, si el valor en DPno es $xx00, donde xxes el byte más significativo. [ 18 ]
Cambio entre modos
El modo de operación actual se almacena en el ebit de emulación ( ). Habiendo agregado ya los nuevos bits xy mal conjunto anterior de seis indicadores en el registro de estado ( SR), no quedaban suficientes bits para almacenar el nuevo bit de modo. En su lugar, se utilizó una solución única en la que el bit de modo se dejó "invisible", sin poder ser accedido directamente. La instrucción XCE(e X change Carry with Emulation ) intercambia el valor del bit de emulación con el cbit de acarreo ( ), bit 0 en SR. Por ejemplo, si se desea entrar en modo nativo después de que el procesador haya arrancado, se usaría CLCpara borrar el bit de acarreo y luego XCEpara escribirlo en el bit de emulación. [ 19 ] Para volver al modo de emulación 65c02 se usa SECseguido de XCE. [ 20 ]
Internamente, el 65C816 es un diseño completamente de 16 bits. Los bits y mdeterminan cómo los registros de usuario (acumulador e índice) aparecen para el resto del sistema. Al reiniciarse, el 65C816 arranca en modo de emulación 6502, en el que y están bloqueados a . Por lo tanto, los registros están bloqueados a un tamaño de ocho bits. El byte más significativo (MSB) del acumulador (el -acumulador) no es directamente accesible, pero se puede intercambiar con el byte menos significativo (LSB) del acumulador (el -acumulador) mediante la instrucción . No hay una operación correspondiente para los registros de índice ( y ), cuyos MSB están bloqueados a .xSRmx1BAXBAXY$00
Al cambiar al modo nativo, el bit más significativo (MSB) de Xy Yserá cero, y el Bacumulador permanecerá sin cambios. Si se borra el mbit en , el acumulador se "agrupará" con el acumulador para formar un registro de 16 bits (llamado acumulador ). Una operación de carga/almacenamiento o aritmética/lógica que involucre el acumulador o la memoria será una operación de 16 bits; se requieren dos ciclos de bus para obtener/almacenar un valor de 16 bits.SRBAC
Si se borra el xbit SR, ambos registros de índice se establecerán en 16 bits. Si se utiliza para indexar una dirección, por ejemplo, LDA SOMEWHERE,X, el valor de 16 bits del registro de índice se sumará a la dirección base para formar la dirección efectiva.
Si el mbit en SRestá activado, el acumulador volverá a ser un registro de 8 bits y las operaciones subsiguientes en el acumulador, con algunas excepciones, serán operaciones de 8 bits. El Bacumulador conservará el valor que tenía cuando se configuró a 16 bits. Las excepciones son las instrucciones que transfieren el registro de página directa ( DP) y el puntero de pila ( SP) hacia/desde el acumulador. Estas operaciones siempre son de 16 bits de ancho en modo nativo, independientemente del estado del mbit en SR.
Si el xbit SRestá activado, no solo los registros de índice volverán a ser de 8 bits, sino que se perderá todo lo que estuviera en el MSB cuando tenían un ancho de 16 bits, algo que un programador de lenguaje ensamblador no puede permitirse olvidar. [ 21 ]
Aplicaciones
Sistemas basados en variantes del 65C816:
- Comunicador Acorn
- Apple IIGS
- Mejoras de C-One y SuperCPU para la Commodore 64
- Super Nintendo Entertainment System : la CPU Ricoh 5A22 de la consola (de 1,79 MHz a 3,58 MHz) está basada en el 65C816.
- Además, más de 30 juegos de Super NES incluyen el Nintendo SA1 (10,74 MHz), un chip coprocesador basado en el 65C816, en cada cartucho.
- Modelo Commander X16GS [ 22 ]
- Foenix Retro Systems modelo C256 U/U+ y modelo F256K [ 23 ]
- La interfaz/procesador MIDI AV-USB Mark of the Unicorn MIDI Timepiece utiliza el W65C816 como CPU.
Véase también
Referencias
Citas
- ↑ Mensch, William D. "Un informe sobre el 65c832" . Archivado del original el 7 de abril de 2024. Recuperado el 7 de abril de 2024 .
- ↑ "Información, especificaciones y hoja de datos del W65C832 (marzo de 1990)" (PDF) . ReActive Micro . 6 de septiembre de 2010 [marzo de 1990]. Archivado (PDF) del original el 7 de abril de 2024. Consultado el 7 de abril de 2024 .
- ↑ "Información, especificaciones y hoja de datos del W65C832" (PDF) . 6502.org . Archivado del original (PDF) el 30 de junio de 2023. Consultado el 7 de abril de 2024 .
- 1 2 Eyes & Lichty 1986 , pág. 42.
- 1 2 "Historia oral de William David "Bill" Mensch, Jr." (PDF) . 10/11/2014.
- ↑ Eyes & Lichty 1986 , pág. 44.
- ↑ Eyes & Lichty 1986 , pág. 45.
- ↑ Libro de datos de productos lógicos específicos para aplicaciones 1988. VLSI Technology Inc. 1988. págs. 257–279 . Consultado el 18 de marzo de 2024 .
- ↑ "Microcontrolador de 16 bits W65C265S" . The Western Design Center, Inc. 5 de enero de 2021. Archivado del original el 2 de abril de 2024. Consultado el 12 de abril de 2025 .
- ↑ "Microprocesador W65C816 de 8/16 bits" . The Western Design Center, Inc. 5 de enero de 2021. Archivado del original el 15 de noviembre de 2023. Consultado el 7 de abril de 2024 .
- ↑ "Microcontrolador W65C265S de 8/16 bits" . The Western Design Center, Inc. 5 de enero de 2021. Archivado del original el 7 de abril de 2024. Consultado el 7 de abril de 2024 .
- ↑ "Hoja de datos del controlador de TV-toy W55V92" (PDF) . Arrow Electronics . 2 de mayo de 2006. Consultado el 12 de junio de 2024 .
- 1 2 Eyes & Lichty 1986 , pág. 46.
- ↑ Eyes & Lichty 1986 , pág. 52.
- ↑ Eyes & Lichty 1986 , pág. 53.
- ↑ Eyes & Lichty 1986 , pág. 54.
- 1 2 Eyes & Lichty 1986 , pág. 55.
- ↑ Eyes & Lichty 1986 , pág. 80.
- ↑ Eyes & Lichty 1986 , pág. 64.
- ↑ Eyes & Lichty 1986 , pág. 65.
- ↑ Eyes & Lichty 1986 , pág. 51.
- ↑ "Preguntas frecuentes sobre Commander X16GS" . Github . Consultado el 8 de agosto de 2025 .
- ↑ "F256K" . Foenix Retro Systems .
Bibliografía
- Eyes, David; Lichty, Ron (1986). Programación del 65816, incluyendo el 6502, 65C02, 65802. Prentice Hall. ISBN 978-0893037895.
Lecturas adicionales
- Hoja de datos 65C816 ; Western Design Center; 55 páginas; 2018.
- Eyes, David y Ron Lichty; Programación del 65816: Incluyendo el 6502, 65C02 y 65802 ; Brady Publishing; 636 págs.; 2015
- Fischer, Michael; 65816/65802 Programación en lenguaje ensamblador ; Osborne/McGraw-Hill; 686 págs.; 1986
Enlaces externos
- Página web 65C816 – Centro de Diseño Occidental
- Conjunto de instrucciones 6502/65C02/65C816 decodificado
- Documentos técnicos 65816/65C816 – zophar.net (nota: parte del material contiene errores importantes o es específico de la consola de videojuegos SNES)
- Introducción al 65816 para programadores del 6502 : un artículo de Brett Tabke publicado en Commodore World ; incluye un resumen del conjunto de instrucciones de CMD.
- Investigación de interrupciones en el 65C816 : un análisis exhaustivo del procesamiento de interrupciones en el 65C816.
- microprocesadores 65xx
- Introducciones relacionadas con la informática en 1985
- microprocesadores de 16 bits