Articulo de referencia

WDC 65C02

El microprocesador Western Design Center (WDC) 65C02 es una versión CMOS mejorada del popular MOS Technology 6502 de 8 bits basado en nMOS . Consume menos energía que el 6502 or...

El microprocesador Western Design Center (WDC) 65C02 es una versión CMOS mejorada del popular MOS Technology 6502 de 8 bits basado en nMOS . Consume menos energía que el 6502 original, corrige varios problemas y añade nuevas instrucciones y modos de direccionamiento. Su consumo energético es entre 10 y 20 veces menor que el del 6502 original funcionando a la misma velocidad; [ 1 ] su reducido consumo lo ha hecho útil en aplicaciones de computadoras portátiles y sistemas de microcontroladores industriales . El 65C02 también se ha utilizado en algunas computadoras domésticas , así como en aplicaciones integradas , incluyendo dispositivos médicos implantables.

El desarrollo del WDC 65C02 comenzó en 1981 [ a ] con muestras publicadas a principios de 1983. [ b ] El 65C02 se publicó oficialmente poco después. [ 2 ] WDC licenció el diseño a Synertek , NCR , GTE Microcircuits y Rockwell Semiconductor . El principal interés de Rockwell era el mercado de sistemas embebidos y solicitó que se añadieran varios comandos nuevos para ayudar en este papel. Estos se copiaron posteriormente a la versión base, momento en el que WDC añadió dos nuevos comandos propios para crear el W65C02 . Sanyo también licenció el diseño más tarde, y Seiko Epson produjo una versión modificada adicional como el HuC6280 .

Las primeras versiones utilizaban encapsulados DIP de 40 pines y estaban disponibles en  versiones de 1, 2 y 4 MHz, con velocidades similares a las de las versiones nMOS originales. Las versiones posteriores se fabricaron en encapsulados PLCC y QFP , así como en PDIP, y con velocidades de reloj mucho mayores. La versión actual de WDC, la W65C02S-14, cuenta con un núcleo totalmente estático y funciona oficialmente a velocidades de hasta 14  MHz con una alimentación de 5 voltios.

Introducción y características

El 65C02 es un microprocesador de 8 bits de bajo costo y propósito general ( registros y bus de datos de 8 bits ) con un contador de programa y bus de direcciones de 16 bits . El conjunto de registros es pequeño, con un único acumulador de 8 bits (A), dos registros de índice de 8 bits (X e Y), un registro de estado de 8 bits (P) y un contador de programa de 16 bits (PC). Además del único acumulador, los primeros 256 bytes de RAM, la "página cero" ( a ), permiten un acceso más rápido a través de modos de direccionamiento que utilizan una dirección de memoria de 8 bits en lugar de una de 16 bits. La pila se encuentra en los siguientes 256 bytes, página uno ( a ), y no se puede mover ni extender. La pila crece hacia abajo con el puntero de pila (S o SP) comenzando en $01FF y decrementándose con cada byte que se inserta. [ 3 ] El 65C02 tiene un conjunto de instrucciones de longitud variable , que varía entre uno y tres bytes por instrucción. [ 1 ]$0000$00FF$0100$01FF

La arquitectura básica del 65C02 es idéntica a la del 6502 original y puede considerarse una implementación de bajo consumo de ese diseño. A 1  MHz, la velocidad más popular para el 6502 original, el 65C02 requiere solo 20  mW, mientras que el original utiliza 450  mW, una reducción de más de veinte veces. [ 4 ] El núcleo optimizado manualmente y el bajo consumo de energía tienen como objetivo que el 65C02 sea idóneo para diseños de sistemas en chip (SoC) de bajo consumo. [ 1 ]

Existe un modelo de descripción de hardware Verilog disponible para diseñar el núcleo W65C02S en un circuito integrado de aplicación específica (ASIC) o una matriz de puertas programables en campo (FPGA). [ 5 ] Como es habitual en la industria de semiconductores, WDC ofrece un sistema de desarrollo que incluye una placa de desarrollo , un emulador en circuito (ICE) y un sistema de desarrollo de software. [ 6 ]

La versión W65C02S6T es la versión de producción a partir de 2025.y está disponible en paquetes PDIP-40 , PLCC-44 y QFP-44 . La velocidad de reloj Ø2 (primaria) máxima oficialmente admitida es de 14 MHz cuando se opera a 5 voltios, indicada por un sufijo de número de pieza -14 (los aficionados han desarrollado sistemas caseros 65C02 que funcionan significativamente más rápido que la clasificación oficial). La designación "S" indica que la pieza tiene un núcleo completamente estático , una característica que admite detener el reloj Ø2 en cualquiera de las fases sin pérdida de estado. [ 7 ]   Los microprocesadores típicos no implementados en CMOS tienen núcleos dinámicos y perderán estado (y por lo tanto fallarán) si no se les sincroniza continuamente a una velocidad entre algunos valores mínimos y máximos especificados. 

La designación "6T" indica la geometría del proceso (0,6 µ) y que Taiwan Semiconductor Manufacturing Company (TSMC) es la fundición que produce las obleas de WDC .

Características de lógica general

Fotografía del chip de un microcontrolador Sitronix ST2064B que muestra el núcleo W65C02S integrado en la parte superior derecha.

Características lógicas

Características eléctricas

  • Tensión de alimentación especificada entre 1,71 V y 5,25 V.
  • Consumo de corriente (núcleo) de 0,15 y 1,5 mA por MHz a 1,89 V y 5,25 V respectivamente.
  • El conjunto de instrucciones de longitud variable, que permite optimizar el tamaño del código en comparación con los procesadores con conjuntos de instrucciones de longitud fija, se traduce en un ahorro de energía.
  • El núcleo totalmente estático permite detener el reloj para ahorrar energía.

Características de reloj

El W65C02S puede funcionar con cualquier voltaje de alimentación (VDD) conveniente entre 1,8 y 5 voltios (±5%). La tabla de características de CA de la hoja de datos muestra las características operativas a 5  V a 14  MHz, 3,3  V o 3  V a 8  MHz, 2,5  V a 4  MHz y 1,8  V a 2  MHz. Esta información podría ser un vestigio de una hoja de datos anterior, ya que un gráfico indica que los dispositivos típicos son capaces de operar a velocidades superiores a las sugeridas por la tabla de características de CA, y que  se debería lograr fácilmente un funcionamiento fiable a 20 MHz con VDD a 5 voltios, siempre que el hardware compatible lo permita.

El soporte del W65C02S para frecuencias de reloj arbitrarias le permite usar un reloj que funcione a una frecuencia ideal para alguna otra parte del sistema, como 13,5  MHz (frecuencia de muestreo de luminancia de SDTV digital), 14,31818  MHz (frecuencia portadora de color NTSC × 4), 14,75  MHz (píxeles cuadrados PAL), 14,7456 (cristal de velocidad de bits en serie), etc., siempre que V DD sea suficiente para soportar la frecuencia. El diseñador Bill Mensch ha señalado que F MAX se ve afectado por factores externos al chip, como la carga capacitiva en los pines del microprocesador. Minimizar la carga usando pistas de señal cortas y la menor cantidad de dispositivos ayuda a aumentar F MAX . Los encapsulados PLCC y QFP tienen menos capacitancia pin a pin que el encapsulado PDIP y son más económicos en el uso del espacio de la placa de circuito impreso .

WDC ha informado de que las implementaciones en FPGA del W65C02S han funcionado con éxito a 200  MHz.

Comparación con el NMOS 6502

Arquitectura básica

Aunque el 65C02 puede considerarse principalmente una versión de bajo consumo del 6502, también corrige varios errores del original y añade nuevas instrucciones, modos de direccionamiento y funciones que ayudan al programador a escribir programas más pequeños y de ejecución más rápida. Se estima que un programa promedio en lenguaje ensamblador para el 6502 puede reducirse entre un 10 y un 15 por ciento en el 65C02, obteniendo una mejora similar en el rendimiento, principalmente gracias a la reducción de accesos a memoria mediante el uso de menos instrucciones para realizar una tarea determinada. [ 1 ]

Se eliminaron las instrucciones no documentadas.

El 6502 original tiene 56 instrucciones que, al combinarse con diferentes modos de direccionamiento, producen un total de 151 códigos de operación de los 256 patrones posibles de códigos de operación de 8 bits. Los 105 códigos de operación restantes no se utilizan; el conjunto de códigos con 4 bits de orden inferior (3, 7, B o F) permanece completamente sin usar, y el código con 2 de orden inferior tiene un único código de operación. [ 8 ]

En el 6502, algunos de estos códigos residuales realizan cálculos. Debido al funcionamiento del decodificador de instrucciones del 6502, simplemente al modificar ciertos bits del código de operación se ejecuta parte del procesamiento de la instrucción. Algunos de estos códigos de operación bloquean inmediatamente el procesador, mientras que otros realizan funciones útiles e incluso recibieron mnemónicos no oficiales en lenguaje ensamblador por parte de algunos programadores. [ 9 ]

El 65C02 añade nuevos códigos de operación que utilizan algunas de estas ranuras de instrucciones previamente no documentadas. Por ejemplo, $FF se utiliza para la nueva BBSinstrucción. Aquellas que permanecen realmente sin usar son equivalentes a NOPs. Los programas 6502 que utilicen esos códigos de operación no funcionarán en el 65C02. [ 1 ]

Corrección de errores

Un fallo presente en todas las variantes NMOS del 6502 afecta a la instrucción de salto cuando se utiliza el direccionamiento indirecto . En este modo de direccionamiento, la dirección de destino de la JMPinstrucción se obtiene de la memoria, el vector de salto, en lugar de ser un operando de la JMPinstrucción. Por ejemplo, JMP ($1234)se obtendrían los valores de las ubicaciones de memoria $1234 (byte menos significativo) y $1235 (byte más significativo) y se cargarían esos valores en el contador de programa , lo que provocaría que el procesador continuara la ejecución en la dirección almacenada en el vector.

El fallo, que algunos consideran un error, aparece cuando la dirección del vector termina en $FF , que es el límite de una página de memoria . En este caso, se obtendrá el byte más significativo de la dirección de destino desde $00 de la página original en lugar de $00 de la nueva página. Por lo tanto, se obtendría el byte menos significativo de la dirección de destino en $12FF y el byte más significativo de la dirección de destino desde $1200 en lugar de $1300 . La documentación original del 6502 no indica que la dirección cruce páginas de esta manera, por lo que no se puede considerar un error propiamente dicho . Pero muchos usuarios del 6502 percibieron esta complicación como una debilidad, por lo que se eliminó en el 65C02 a costa de gastar un ciclo adicional para actualizar el puntero. [ 1 ]JMPJMP ($12FF)

Otra debilidad de diseño que se corrigió a petición popular, el estado del indicador (D)ecimal en el registro de estado del NMOS 6502 es indefinido después de un reinicio o interrupción . Esto significa que los programadores tienen que establecer el indicador a un valor conocido para evitar errores aleatorios causados ​​por operaciones aritméticas realizadas en un modo distinto al previsto, lo que constituye errores de software. Como resultado, se encuentra una CLDinstrucción (CLear Decimal) en casi todos los manejadores de interrupciones del 6502 , así como al principio del código de reinicio. El 65C02 borra automáticamente este indicador después de colocar el registro de estado en la pila en respuesta a cualquier interrupción o en respuesta a un reinicio de hardware, volviendo así al procesador en modo aritmético binario. [ 10 ] Esto suele ahorrar unos pocos bytes en el software y elimina la posibilidad de un error de programación común, a costa de aumentar el tamaño del código que se ejecuta en modo decimal, ya que los programadores tienen que recordarlo SEDen lugares donde antes asumían que todavía estaría establecido.

Durante la aritmética en modo decimal , el NMOS 6502 coloca los indicadores (N)negativo, sobreflujo y cero en estados oficialmente indefinidos. Los programadores descubrieron que la CPU actualiza estos tres indicadores para reflejar el resultado de la aritmética binaria subyacente, es decir, los indicadores reflejan un resultado calculado antes de que el procesador realice la corrección decimal. En contraste, el 65C02 establece estos indicadores de acuerdo con el resultado de la aritmética decimal, a costa de un ciclo de reloj adicional por instrucción aritmética. [ 10 ] Algunos autores afirman que el indicador V en el 65C02 sigue siendo incorrecto en modo decimal, pero el indicador también puede considerarse sin sentido porque la aritmética decimal siempre es sin signo.

Al ejecutar una instrucción de lectura-modificación-escritura (RMW), como , todas las variantes NMOS realizarán una doble escritura en addr , reescribiendo primero el valor actual encontrado en addr y luego escribiendo el valor modificado. Este comportamiento puede generar errores difíciles de resolver si addr es un registro de hardware. Esto puede ocurrir si el hardware está monitoreando los cambios en el valor del registro y luego realiza una acción; en este caso, realizará dos acciones, una con el valor original y otra con el nuevo valor. El 65C02, en cambio, realiza una doble lectura de addr , seguida de una sola escritura.INC addr

Al realizar el direccionamiento indexado, si la indexación cruza un límite de página, todas las variantes NMOS leerán desde una dirección no válida antes de acceder a la dirección correcta. Al igual que con una instrucción RMW, este comportamiento puede causar problemas al acceder a los registros de hardware mediante indexación. El 65C02 solucionó este problema realizando una lectura ficticia del código de operación de la instrucción cuando la indexación cruza un límite de página. Sin embargo, esta solución introdujo un nuevo error que ocurre cuando la dirección base está en un límite de página par (lo que significa que la indexación nunca cruzará a la página siguiente). Con el nuevo error, se realiza una lectura ficticia en la dirección base antes de la indexación, de modo que se realizará una lectura ficticia en $1200 antes de que el valor de X se sume a $1200 . Nuevamente, si se indexa en direcciones de registros de hardware, este error puede resultar en un comportamiento indefinido.LDA $1200,X

Si un NMOS 6502 está buscando un código de operación BRK (interrupción por software) al mismo tiempo que se produce una interrupción por hardware, el BRK se ignorará, ya que el procesador reacciona a la interrupción por hardware. El 65C02 gestiona correctamente esta situación atendiendo la interrupción y luego ejecutando el BRK.

Nuevos modos de direccionamiento

El 6502 tiene dos modos de direccionamiento indirecto que desreferencian a través de direcciones de 16 bits almacenadas en la página cero:

  • Acceso indirecto indexado , por ejemplo : agrega el registro X a la dirección de página cero antes de leer el vector de 16 bits. En este ejemplo, si X es 5, la dirección de 16 bits se lee desde las posiciones $15/$16. Esto resulta útil cuando hay un array de punteros en la página cero.LDA($10,X)
  • Por ejemplo, indexación indirecta . Agrega el registro Y al vector de 16 bits leído desde la dirección cero de la página. En este ejemplo, si Y es 5 y las ubicaciones $10/$11 contienen el vector $1000 , la dirección de lectura será $1005 . Esto realiza un direccionamiento por desplazamiento de puntero.LDA($10),Y

Una desventaja de este modelo es que si no se necesita indexación pero la dirección está en la página cero, uno de los registros de índice debe establecerse a cero y usarse en una de estas instrucciones. Por lo tanto, el 65C02 agrega un modo de direccionamiento indirecto no indexado, por ejemplo , a todas las instrucciones que pueden usar modos indirectos indexados e indirectos indexados. Esto deja los registros de índice libres para otros usos. [ 11 ]LDA($10)

La instrucción JMP del 6502 tiene un modo de direccionamiento único (entre las instrucciones del 6502) conocido como "indirecto absoluto", que lee un valor de 16 bits de una dirección de memoria determinada y luego salta a la dirección contenida en ese valor de 16 bits. Por ejemplo, si la ubicación de memoria $A000 contiene $34 y $A001 contiene $12 , leerá esos dos bytes, construirá el valor $1234 y luego saltará a esa ubicación.JMP($A000)

Un uso común del direccionamiento indirecto es la creación de tablas de ramificación , una lista de puntos de entrada para subrutinas a las que se puede acceder mediante un índice. Por ejemplo, un controlador de dispositivo podría listar los puntos de entrada para OPEN , CLOSE , READ , etc., en una tabla en $A000 . READ es la tercera entrada, indexada desde cero, y cada dirección requiere 16 bits, por lo que para llamar a READ se usaría algo similar a . Si el controlador se actualiza y el código de la subrutina se mueve en la memoria, cualquier código existente seguirá funcionando siempre que la tabla de punteros permanezca en $A000 .JMP($A004)

El 65C02 añade el nuevo modo "indexed absolute indirect" que facilita el uso de tablas de ramificación. Este modo suma el valor del registro X a la dirección absoluta y toma la dirección de 16 bits de la ubicación resultante. Por ejemplo, para acceder a la función READ de la tabla anterior, se almacena 4 en X y luego se ejecuta . Este estilo de acceso hace que el acceso a las tablas de ramificación sea más simple ya que se usa una sola dirección base junto con un desplazamiento de 8 bits. [ 11 ] Lo mismo se puede lograr en la versión NMOS usando el modo indexed indirect, pero solo si la tabla está en la página cero, un recurso limitado. Permitir que estas tablas se construyan fuera de la página cero no solo disminuye la demanda de este recurso sino que también permite que las tablas se coloquen en la ROM.JMP($A000,X)

Instrucciones nuevas y modificadas

Además de los nuevos modos de direccionamiento, el "modelo base" 65C02 también añade un conjunto de nuevas instrucciones. [ 12 ]

  • INCy DECsin parámetros ahora incrementa o decrementa el acumulador. Esto fue un extraño descuido en el conjunto de instrucciones original, que solo incluía INX/ DEX, INY/ DEY, y / . Algunos ensambladores usan las formas alternativas / o / . [ 12 ]INC addrDEC addrINADEAINC ADEC A
  • STZ addr, STore Zero in addr , reemplaza la necesidad de LDA #0; y no requiere cambiar el valor del acumulador. Como esta tarea es común en la mayoría de los programas, usar puede reducir el tamaño del código, tanto al eliminar como cualquier código necesario para guardar el valor del acumulador, normalmente un par. [ 13 ]STA addrSTZLDAPHAPLA
  • PHX, PLX, PHY, PLYempuja y extrae los registros X e Y hacia y desde la pila. Anteriormente, solo el acumulador y el registro de estado ( P ) tenían instrucciones de empuje y extracción. X e Y solo podían apilarse moviéndolos primero al acumulador con o , cambiando así el contenido del acumulador, y luego usando . [ 14 ]TXATYAPHA
  • BRALa bifurcación siempre funciona como una bifurcación, JMPpero utiliza una dirección relativa de 1 byte como otras bifurcaciones (que son todas condicionales), ahorrando un byte. La velocidad suele ser la misma que la absoluta de 3 ciclos, JMPa menos que se cruce una página, lo que haría que la BRAversión tardara 1 ciclo más (4 ciclos). [ 15 ] Como la dirección es relativa, también es útil al escribir código reubicable. [ 13 ]

Instrucciones para la manipulación de bits

Both WDC and Rockwell contributed improvements to the bit testing and manipulation functions in the 65C02. WDC added new addressing modes to the BIT instruction that was present in the 6502, as well two new instructions for convenient manipulation of bit fields, a common activity in device drivers.

BIT en el 65C02 agrega direccionamiento en modo inmediato, indexado por página cero mediante X y direccionamiento absoluto indexado por X. [ 12 ] El direccionamiento en modo inmediato es particularmente conveniente ya que es completamente no destructivo. Por ejemplo:

LDA$1234
BIT#%00010000

puede utilizarse en lugar de:

LDA$1234
AND#%00010000

La operación AND modifica el valor del acumulador, por lo que se pierde el valor original cargado desde $1234. El uso de BIT deja el valor del acumulador sin cambios, lo que permite que el código posterior realice comprobaciones adicionales con respecto al valor original, evitando así tener que recargarlo desde la memoria.

Además de las mejoras en la instrucción BIT , WDC añadió dos instrucciones diseñadas para manipular convenientemente los campos de bits:

  • TSB addry , Bits de prueba y configuración y Bits de prueba y reinicio.TRB addr
Una máscara en el acumulador ( .A) se combina lógicamente con la memoria en addr , cuya ubicación puede ser la página cero o absoluta. El indicador Z en el registro de estado se condiciona según el resultado del AND lógico; ningún otro indicador del registro de estado se ve afectado. Además, los bits en addr se establecen (TSB) o se borran (TRB) según la máscara en . Después del AND lógico , TSB realiza un OR lógico de con el byte de memoria y almacena el resultado en addr , mientras que TRB realiza un AND lógico de con el byte de memoria y almacena el resultado en addr . En ambos casos, el indicador Z en el registro de estado indica el resultado de antes de que cambie el contenido de addr . Los demás indicadores no se ven afectados. TRB y TSB reemplazan así una secuencia de instrucciones, combinando esencialmente la instrucción BIT con pasos adicionales para guardar los cambios computacionales, pero sin que los pasos adicionales afecten a los indicadores, y sin afectar al indicador V como lo hace BIT . [ 1 ].A.ANOT .A.A AND addr

Las modificaciones de Rockwell añadieron más instrucciones de manipulación de bits para cualquier bit en la página cero, permitiendo establecer o restablecer directamente un bit con una instrucción de 2 bytes, o comprobar y bifurcar un bit con una única instrucción de 3 bytes. Estas nuevas instrucciones estaban disponibles desde el principio en la familia R65C00 de Rockwell, [ 16 ] pero no formaban parte de la especificación original 65C02 ni se encontraban en las versiones fabricadas por WDC u otros licenciatarios. Posteriormente, se reincorporaron al diseño base y estuvieron disponibles en versiones posteriores de WDC.

Las instrucciones específicas de Rockwell son:

  • SMBbit#zpy . Establecer o restablecer (borrar) el número de bit en el byte de página cero zp .RMBbit#zpbit#
RMB y SMB se utilizan para borrar ( RMB ) o establecer ( SMB ) bits individuales en un campo de bits, reemplazando cada uno una secuencia de tres instrucciones. Dado que RMB y SMB solo permiten el direccionamiento de la página cero, estas instrucciones tienen una utilidad limitada y son principalmente valiosas en sistemas donde los registros de dispositivos están presentes en la página cero. El componente bit# de la instrucción es parte del código de operación y a menudo se escribe como parte del mnemónico, como que establece el bit 1 en la dirección de página cero $12 (también conocida como dirección $0012 ). Algunos ensambladores tratan bit# como parte del operando de la instrucción, por ejemplo, , lo que tiene la ventaja de permitir que se reemplace por un nombre de variable o un número calculado. [ 13 ]SMB1 $12SMB 1,$12
  • BBSbit#zp,addry . Ramificación al establecer/restablecer el bit.BBRbit#zp,addr
Se aplican las mismas limitaciones y direccionamiento de página cero que RMB y SMB , pero estas instrucciones prueban, en lugar de asignar, el bit seleccionado del byte de página cero zp y luego saltan a addr si ese bit está desactivado ( BBR ) o activado ( BBS ). También como con RMB y SMB anteriores, el componente bit# de la instrucción a menudo se escribe como parte del mnemónico, como que salta a la etiqueta de dirección addr si el bit 1 del byte en la dirección de página cero $12 está activado. Nuevamente, algunos ensambladores tratan bit# como parte del operando de la instrucción, por ejemplo, , con la ventaja de permitir que se reemplace por un nombre de variable o un número calculado. [ 13 ]BBS1 $12,addrBBS 1,$12,addr

Cada una de las instrucciones RMB , SMB , BBR y BBS reemplaza una secuencia de tres instrucciones. [ 13 ]

Modos de baja potencia

Además de los nuevos comandos mencionados anteriormente, WDC también agregó las STPinstrucciones WAIpara admitir modos de bajo consumo.

STPLa opción "Detener el procesador" detiene todo el procesamiento hasta que se realiza un reinicio del hardware. Esto se puede usar para poner un sistema en modo de suspensión y luego reactivarlo rápidamente mediante un reinicio.

WAItiene un efecto similar, deteniendo todo el procesamiento, pero esta instrucción reanuda la ejecución normal al recibir una interrupción. Sin esta instrucción, esperar una interrupción de hardware generalmente implica ejecutar un bucle que suspende el programa hasta que el procesamiento de la interrupción sale del bucle, a veces conocido como " girar ". Esto significa que el procesador se ejecuta durante todo el proceso, usando energía mientras no hace (casi) nada, incluso cuando no se producen interrupciones. En el 65C02, el código de interrupción se puede escribir teniendo un WAIseguido inmediatamente de un JSRo JMPal manejador. Cuando WAIse encuentra el, el procesamiento se detiene y el procesador entra en modo de bajo consumo. Cuando se recibe una interrupción, el procesador ejecuta inmediatamente el JSRy maneja la solicitud.

Esto tiene la ventaja añadida de mejorar ligeramente el rendimiento. En el caso de bucle infinito, la interrupción podría llegar en medio de una de las instrucciones del bucle, y para permitir que se reinicie después de regresar del manejador, el procesador gasta tres ciclos para guardar su ubicación. Con WAI, el procesador entra en el estado de bajo consumo en una ubicación conocida donde se garantiza que todas las instrucciones se completarán, por lo que cuando llega la interrupción no puede interrumpir una instrucción y la respuesta a la interrupción puede ser inmediata. Además, dado que el programa espera la interrupción, el procesador puede continuar de forma segura sin gastar tiempo guardando el estado; el programa es responsable de realizar cualquier guardado de estado necesario antes de la WAI.

65SC02

El 65 SC 02 es una variante del WDC 65C02 sin WAI, STP ni instrucciones de bits. [ 17 ] [ 18 ]

Usos

Ordenadores domésticos

consolas de videojuegos

Otros productos

Véase también

Notas

  1. Algunas fuentes, incluidas versiones anteriores de este artículo, afirman que fue en 1978. Esta fue la fecha en que Bill Mensch, el diseñador principal, fundó WDC. En un artículo de 1984, Mensch especifica que la fecha de inicio fue 1981.
  2. El artículo de Wagner de junio de 1983 menciona que estuvo disponible durante "varios meses". Dados los retrasos típicos en las publicaciones en aquella época, esto podría situarlo a finales de 1982. Otra fuente apunta a 1980; véase la página de discusión.

Referencias

Citas

  1. 1 2 3 4 5 6 7 Wagner 1983 , pág. 204.
  2. "Softalk" . Softalk Publishing . Vol.  3, n.º  10. Junio ​​de 1983. pág.  199. Consultado el 24 de mayo de 2022 .
  3. Koehn, Philipp (2 de marzo de 2018). "6502 Stack" (PDF) .
  4. Taylor y Watford 1984 , pág. 174.
  5. "Proyectos de CPU 6502 en HDL (para FPGA)" .
  6. "Placa de desarrollo W65C02DB" .
  7. "W65C02S-14" .
  8. Parker, Neil. "El conjunto de instrucciones 6502/65C02/65C816 decodificado" . Página de Apple II de Neil Parker .
  9. Vardy, Adam (22 de agosto de 1995). "Instrucciones adicionales de la CPU de la serie 65XX" .
  10. 1 2 "Diferencias entre NMOS 6502 y CMOS 65c02" . Consultado el 27 de febrero de 2018. Los indicadores N, V ​​y Z eran incorrectos después de la operación decimal (pero C estaba bien).
  11. 1 2 Clark, Bruce. "Códigos de operación 65C02" .
  12. 1 2 3 Wagner 1983 , pág. 200.
  13. 1 2 3 4 5 Wagner 1983 , pág. 203.
  14. Wagner 1983 , págs .
  15. "Hoja de datos W65C02S" (PDF) .
  16. Wagner 1983 , pág. 199.
  17. GTE Microcircuits Data Book . GTE Microcircuits. 1984. pág. 1–3 . Consultado el 2 de mayo de 2024 . 
  18. ^ Zaks, Rodnay (1983). Programando el 6502 . Síbex. pag. 348.ISBN  0895881357.
  19. "8-El Apple IIc" . Historia del Apple II . 23 de junio de 2010. Consultado el 31 de octubre de 2023 .
  20. "BBC Master Acorn Computer" . www.old-computers.com . Consultado el 31 de octubre de 2023 .
  21. "Tecnología de vídeo LASER 128 / 128EX / 128EX2" . www.old-computers.com . Consultado el 31 de octubre de 2023 .
  22. "HuC6280 - Píxeles Arcaicos" .

Bibliografía

  • Wagner, Robert (junio de 1983). "Líneas de montaje" . Softtalk . págs. 199–204 . 
  • Taylor, Simon; Watford, Bob (julio de 1984). "El resurgimiento del 6502" . Personal Computer World . págs. 174–175 . 

Lecturas adicionales

  • Hoja de datos 65C02 ; Western Design Center; 32 páginas; 2018.
  • Programación del 65816 , incluyendo los modelos 6502, 65C02 y 65802 ; 1.ª edición; David Eyes y Ron Lichty; Prentice Hall; 636 páginas; 1986; ISBN 978-0893037895. (archivo)
  • Página web 65C02 - Centro de Diseño Occidental
  • Diferencias entre 65xx/65Cxx/65SCxx - CPU World
  • Descifrado del conjunto de instrucciones de los modelos 6502/65C02/65C816 – De la página de Apple II de Neil Parker