MOS 6502

Unidad central de procesamiento MOS 6502
El procesador MOS 6502 en un paquete DIL-40 de plástico .
Producto1975
Diseñada porTecnología MOS
Aplicacionescomputadora de casa , sala de juegos
Especificaciones técnicas
Frecuencia de la CPUMHz / 2  MHz
Conjunto de instruccionesMOS 6502
microarquitectura8 bits
PaqueteDIP40

El MOS 6502 es un microprocesador de 8 bits presentado por MOS Technology en septiembre de 1975 .

Junto con el Zilog Z80 de julio de 1976 se utilizó en muchos productos comercializados a finales de los setenta y ochenta , como juegos arcade y consolas domésticas , ordenadores personales y domésticos , como el Apple II y el Commodore VIC-20 . [1] Fue producido bajo licencia por muchas compañías, incluidas Rockwell International y Synertek . Varios procesadores se derivan del MOS 6502, incluido el MOS 6507 , utilizado en la consola Atari 2600 , el MOS 6509 , utilizado en la línea de computadoras Commodore CBM , y el MOS 6510 , utilizado como CPU Commodore 64 . [2] [3]

Historia

Los orígenes y el proyecto en Motorola

El chip fue diseñado por el mismo grupo que había desarrollado el MOS 6501 y que incluía a varios de los ingenieros que habían trabajado en el Motorola 6800 desde 1971 , incluidos Chuck Peddle y Bill Mensch , quienes fueron lanzados masivamente por Motorola en 1974 . [4]

Peddle había promocionado comercialmente el 6800 y había visitado a muchos clientes potenciales para presentarles el microprocesador, diseñado para su uso en sistemas integrados. A pesar de las impresiones favorables, el procesador no se vendía como se esperaba porque el precio de lanzamiento de $ 360 se consideró demasiado alto; muchos clientes consideraron justo un precio de $ 25 por chip. Por lo tanto, Peddle propuso que Motorola desarrollara una versión debilitada del 6800 que pudiera venderse a ese precio, pero la gerencia no aceptó su sugerencia. [5] [6] [7]

A pesar de la falta de interés de la alta dirección, Peddle comenzó a trabajar en esa idea por su cuenta. El nuevo procesador era similar al 6800: así usaba pocos registros pero tenía un solo acumulador (el 6800 tenía 2: registros A y B). En comparación con el 6800, el 6502 introdujo varios modos de direccionamiento nuevos, lo que permitió utilizar sus registros de índice y la pila de manera muy eficiente: por ejemplo, con la pila era posible acceder a las celdas de memoria ubicadas en el rango de direcciones 256-511 (hexadecimal: $ 100- $ 1FF), mientras que algunas instrucciones podían acceder directamente a celdas de memoria en el rango 0-255 (hexadecimal: $ 00- $ FF), la llamada " página cero ", utilizando solo 1 byte como dirección. [8] El nuevo chip también era capaz de realizar aritmética BCD ( decimal codificado en binario ) [9] y tenía un generador de reloj interno . [10]

A pesar de la desaprobación de la alta dirección de Motorola, el grupo liderado por Peddle continuó trabajando en el proyecto, mientras que al mismo tiempo crecía el descontento por la falta de apoyo que recibían. Eventualmente, la gerencia decidió detener el desarrollo del nuevo chip. En respuesta, Peddle y varios de sus colegas abandonaron Motorola en busca de una compañía que estuviera interesada en fabricar dicho chip. [6]

Los desarrolladores de 6800 pasan a la tecnología MOS

Peddle se puso en contacto con MOS Technology , un pequeño fabricante de circuitos integrados en ese momento, fundado por Allen-Bradley para producir procesadores de calculadoras electrónicas en nombre de Texas Instruments , pero que también se había volcado a la producción de otros tipos de chips cuando este último, en Para reducir los costos de sus productos, había comenzado a producir sus propios productos integrados. Uno de los productos más populares de MOS Technology fue una réplica de un solo chip del popular juego Pong . En agosto de 1974, Peddle y otros 7 ingenieros de Motorola se unieron a MOS Technology: Bill Mensch , Harry Bawcum, Ray Hirt, Terry Holdt, Mike James, Will Mathis y Rod Orgill. [4]

Peddle y su grupo terminaron el desarrollo de su idea que se concretó en 2 nuevos microprocesadores compatibles con los chips periféricos de Motorola: el MOS 6501 , diseñado por Rod Orgill, que podía insertarse en los sockets 6800 porque era compatible a nivel de pinout con este último, y el MOS 6502, diseñado por Bill Mensch, similar al anterior pero con pinout diferente y un circuito generador de reloj integrado. Estos chips no podían ejecutar programas escritos para el 6800 porque tenían una arquitectura y un conjunto de instrucciones diferentes.

Los nuevos procesadores fueron ampliamente publicitados en varias revistas de la industria: apareció un anuncio en la edición de julio de Electronics [11] , otro en la edición de agosto de EE Times , [12] ; Siguieron otros anuncios en EDN (20/09/1975), Electronic News (03/11/1975) y Byte (noviembre de 1975). Anuncios del 6501 aparecieron en varias publicaciones durante el mes de agosto de 1975: MOS Technology anunciaba la presentación del chip en la feria de electrónica WESCON de San Francisco , que se realizaría del 16 al 19 de septiembre de 1975, donde sería posible comprar el microprocesador por $ 25. [13] En septiembre los anuncios también fueron para el 6502, que también se anunció disponible durante la WESCON por $ 25 mientras que el 6501 fue revaluado en $ 20. [14]

La presentación del 6502

En WESCON, el 6502 tenía un precio de $ 25. MOS Technology tenía un stand con un gran contenedor lleno de chips. Como no había podido traer suficientes especímenes de trabajo, decidió llenar el contenedor con los chips defectuosos y poner los de trabajo encima, dando así la impresión de que sus fábricas ya estaban en condiciones de hacer frente a la producción industrial. . [15] En la misma feria, el 6800 y el Intel 8080 estaban a la venta por $ 179. [16] El MOS 6502 salió a la venta, a un precio de $ 25, [14] era la CPU más barata disponible en el mercado, costando menos de una sexta parte de los modelos de la competencia: por ejemplo, el Motorola 6800 se vendió por $ 175. [17] Al principio, la gente pensó que el precio del 6502 era incorrecto o que había una estafa detrás, pero durante el programa vieron que ambos Motorola e Intel rebajaron el precio de sus chips a 69 dólares. [18] [19]

Esta rebaja de precio legitimó el 6502, que empezó a venderse por cientos de unidades. [15]

La demanda entre Motorola y MOS Technology

Después de que Motorola mencionara la tecnología WESCON MOS en noviembre de 1975: [20] este último afirmó que sus 8 ex empleados habían utilizado información técnica desarrollada en sus oficinas para diseñar los microprocesadores 6501 y 6502. citando al patrocinador de MOS Technology , Allen-Bradley , considerando también que La otra área de interés de MOS Technology, los chips de calculadora, no iba bien debido a una guerra de precios que libraba Texas Instruments contra otros fabricantes, decidió limitar posibles pérdidas y vendió sus acciones a los fundadores de la empresa. [4]

La demanda se resolvió en mayo de 1976 con MOS Technology, quien decidió eliminar el chip 6501 que se podía montar en los zócalos 6800 y comprar las licencias de chips periféricos de Motorola. [21] [22]

El MOS KIM-1

Con los problemas legales resueltos y una buena respuesta de WESCON, MOS tuvo que pensar en cómo hacer que los desarrolladores probaran su nuevo procesador 6502. Peddle luego desarrolló una minicomputadora llamada MDT-650 (de "Terminal de desarrollo de microcomputadoras") mientras otro grupo diseñó el KIM-1 . El KIM-1 fue puesto en el mercado y, ante el asombro de sus diseñadores, fue comprado no solo por ingenieros y profesionales sino también por muchos aficionados . Otros sistemas similares, como el SYM-1 de Synertek y el AIM 65 más flexible de Rockwell (ambos produjeron el 6502 bajo licencia), disfrutaron del mismo éxito comercial.

Uso y uso

Informática

Uno de los primeros usos del nuevo procesador fue como CPU para la computadora Apple I presentada en 1976 por la incipiente Apple , una empresa fundada por Steve Jobs y Steve Wozniak . El 6502 se usó más tarde en el Commodore PET y el Apple II de 1977 , y en varias otras computadoras de 8 bits , incluida la familia de computadoras Atari de 8 bits , la serie BBC Micro derivada de los sistemas de 8 bits de Acorn Computers , el Commodore VIC . -20 y computadoras de Ohio Scientific y Oric . [23] El Commodore 64 usaba un derivado del 6502, el MOS 6510 , pero su unidad de disco modelo 1541 usaba un 6502 a 2 MHz para ejecutar el código DOS integrado en la unidad y tenía que ser rápido (el doble de la unidad de CPU C64 ) para satisfacer las necesidades temporales de transferencia de datos desde el disquete.

Industria

Además de los usos civiles y recreativos, hubo una producción considerable de sistemas de control, incluso industriales, dada la ausencia de microcontroladores de calidad (el mediocre 8048 data de 1976 y muchas veces tenía un rendimiento inadecuado). Hoy en día todavía se fabrica como un procesador de sistema integrado por Western Design Center , una empresa fundada por Bill Mensch , uno de los diseñadores del chip original.

Videojuegos

Otro uso importante de 6502 y sus derivados fue en aparatos de videojuegos. El primer dispositivo de este tipo que usó un chip de la familia 6502 fue la consola Atari 2600 : usó el MOS 6507 , una versión debilitada del 6502 con un bus de direcciones reducido y un paquete resultante con solo 28 pines. Debido a esta limitación, el 6507 solo podía manejar 8 KB de memoria, pero el paquete reducido redujo su tamaño y costo. A pesar de esto, el Atari 2600 se vendió en 30 millones de unidades, cada una con un 6507.

Otra consola basada en un chip derivado del 6502 fue la popular Nintendo Famicom , presentada por Nintendo en 1983 : Ricoh produjo la versión para la consola que, en comparación con el diseño original, no manejaba la aritmética BCD pero ofrecía 22 registros adicionales ( memoria mapeada) para gestión de sonido, lectura de gamepad y acceso directo a memoria para sprites . Este chip, llamado 2A03 en sistemas NTSC y 2A07 en sistemas PAL (la diferencia estaba en el diferente divisor de reloj interno utilizado para generar la imagen y el sonido debido a la diferente frecuencia de las señales PAL y NTSC), fue producido exclusivamente para Nintendo.

Los mismos salones recreativos , muy populares en ese momento, estaban equipados con uno o más procesadores, a menudo el 6502, y Atari utilizaba casi exclusivamente esta CPU aunque a algunos como el Tempest o el Battlezone les añadían un coprocesador basado en AMD Am2900 bit slices debido a la insuficiente potencia de cálculo del 6502 al tener que operar en tiempo real

Descripción

El 6502 es un procesador de 8 bits con un bus de direcciones de 16 bits , por lo que es capaz de direccionar directamente hasta 64 KB de memoria. Internamente funciona a la misma velocidad establecida por el reloj externo, normalmente de 1 a 2 MHz : por ejemplo, el Zilog Z80 divide internamente el reloj externo por 4. A pesar del reloj más bajo, su rendimiento es comparable al de otras CPU con frecuencias más altas. : esto se debe a la particular arquitectura interna adoptada, basada en un pipeline estático y en el hecho de que opera con un ciclo de 2 fases y no cuenta ciclos de reloj. Como muchas otras CPU de la época, la lógica 6502 NMOS no está secuenciada por un microcódigo residente en la ROM , sino que utiliza un PLA preprogramado a nivel de máscara (que ocupa aproximadamente el 15 % de la superficie del chip) para decodificar y secuenciar las instrucciones . Al igual que otros microprocesadores de 8 bits, el 6502 realiza una superposición limitada de búsqueda y ejecución de instrucciones.

La baja frecuencia de reloj redujo las limitaciones en la velocidad de los periféricos conectados a la CPU, ya que solo el 50 % del ciclo de reloj estaba disponible para el acceso a la memoria (debido al diseño asíncrono de la CPU, este porcentaje varía mucho entre las diferentes versiones del chip). ). Esto fue importante en un momento en que las memorias confiables tenían tiempos de acceso en el rango de 450-250 ns. El 6502 fue diseñado para ser simple y económico, y la reducción de los costos de todo el sistema fue un factor muy importante para competir en los mercados de consolas de videojuegos y computadoras domésticas.

Al igual que su predecesor, el Motorola 6800 , el 6502 tenía pocos registros : en el momento en que se diseñó el 6502, la cantidad de transistores contenidos en un IC afectó en gran medida su costo y mantenerlos bajos ayudó a mantener los costos bajos. Además, la RAM externa era más rápida que una CPU, por lo que tenía sentido optimizar la arquitectura para el acceso a la memoria en lugar de aumentar la cantidad de registros en el chip. El 6502 fue diseñado con el objetivo de ser muy económico: por ello se utilizaron unos 4.000 transistores frente a los aproximadamente 2.300 del Intel 4004 de 1971 y los aproximadamente 8.500 del Z80 . [24]

El diseño original del 6800 preveía una superficie de silicio de 4.572 mm de lado igual a 20,9 mm² convertido en 5,4 mm igual a 29 mm² [25] mientras que el diseño del 6502 preveía 3,9 x 4,3 mm igual a 16,6 mm².

Los registros 6502 incluyen:

La pila se asigna en la memoria en la página 1 (direcciones de $0100a $01FF, 256- 511). El software accede a la pila a través de 4 instrucciones que le permiten insertar ( PUSH) o recuperar ( PULL) el valor del acumulador o del registro de estado. La misma pila es utilizada por las instrucciones de manejo de subrutinas JSR ( Jump to SubRoutine ) y RTS( ReTurn from Subroutine ), así como por las rutinas de manejo de interrupciones .

El 6502 utiliza el registro de pila y los registros de índice con diferentes modos de direccionamiento , incluido un modo rápido llamado "página directa" o "página cero", similar al del PDP-8 , que permite acceder a las ubicaciones de memoria de la página cero. ( direcciones $0000- $00FF, 0- 255) con el uso de una dirección que consta de solo 8 bits, ahorrando el ciclo normalmente requerido para cargar el byte alto de la dirección en el registro de índice. Gran parte del código escrito para el 6502 a menudo explota esta peculiaridad y usa estas ubicaciones de memoria de la misma manera que se usan los registros internos en otras CPU. En algunas computadoras basadas en 6502, como la Commodore VIC-20, el sistema operativo usó casi todas las ubicaciones de página cero, dejando algunas libres para el usuario. [26]

Los modos de direccionamiento también están "implícitos", contribuyendo con 1 byte al tamaño de la instrucción. Son (entre paréntesis la ocupación total de memoria):

El modo absoluto es un modo de propósito general: las instrucciones de salto usan una dirección de 8 bits con signo en el rango -128 / +127, lo que indica una dirección de hasta 128 bytes antes o 127 bytes después de la instrucción de direccionamiento (que se traduce en el rango - 126 / +129 con respecto a la celda de inicio de la instrucción de salto). En cambio, el modo acumulador utiliza el acumulador como una dirección real y no requiere ningún dato como operando. El modo inmediato utiliza un operando literal de 8 bits.

Los modos indirectos son útiles para iterar y procesar matrices de datos . Con el modo "(indirecto), y" en 5/6 ciclos, el registro Y de 8 bits se agrega a una dirección de 16 bits en la página cero indicada por solo 1 byte seguido del código de operación . El registro Y es, por lo tanto, un registro de "índice" en el sentido de que se utiliza para almacenar el "índice" actual, a diferencia del registro X del 6800, donde se almacena directamente una dirección base y al que un desplazamiento puede acceder directamente). Solo se necesitan 2 ciclos más para incrementar el registro de índice e iterar la matriz byte por byte. En el modo infrecuente "(indirecto), x", la dirección real para la operación se encuentra en la página cero en la dirección compuesta al agregar el segundo byte de la instrucción al contenido del registro X. Usando modos indexados, la página cero opera como un conjunto de 128 registros de índice adicionales.

El 6502 es capaz de operaciones de suma y resta binarias y BCD . Al colocar la CPU en modo BCD con la instrucción SED, los resultados de las operaciones se expresan en formato decimal: por ejemplo, la suma $99 + $01regresa $00con el indicador de resto que se establece en 1, mientras que en modo binario (instrucción CLD) la misma operación regresa $9Acon el indicador de descanso que se establece en 0. Aparte de Atari BASIC , este modo rara vez se usaba en las computadoras domésticas.

El 6502 también fue mencionado como uno de los primeros procesadores RISC ", [27] [28] debido a su conjunto de instrucciones eficiente, simple y casi ortogonal (muchas instrucciones pueden operar con diferentes modos de direccionamiento), así como a sus 256 "registros". en la página cero El 6502 técnicamente no es un procesador RISC de todos modos, ya que las operaciones matemáticas pueden leer cualquier celda de memoria (no solo las de la página cero) y varias instrucciones (como INC, ROLetc.) también modifican la memoria, contrariamente a la filosofía RISC de "cargar/almacenar" . Además, la ortogonalidad de las instrucciones también se asocia a menudo con " CISC ". usó un reloj mucho más alto (típicamente 3.5-4 MHz) y al 6502 se le atribuye ser el inspirador de los procesadores RISC como los ARM , [28] aunque esta inspiración se limitó a una implementación simple en lugar de arquitectura, que es muy diferente a la de los ARM.

Ejemplo de código

El siguiente es el clásico programa Hola mundo escrito en código ensamblador 6502 para computadoras con KERNAL Commodore :

A_CR = $ 0D , retorno de carro BSOUT = $ FFD2 , escritura de la rutina Kernal ROM en el dispositivo de salida ; LDX # $ 00; inicializa el índice en el registro X ; LOOP LDA MSG , X , leer mensaje de texto BEQ LOOPEND , fin de mensaje ; JSR BSOUT ; imprime un carácter INX BNE LOOP ; repite ; LOOPEND RTS , salir de la subrutina ; MSG .BYT ' ¡Hola , mundo ! ' , A_CR , $ 00

Interfaces dedicadas

Con la excepción del MOS 6522 y algunos otros componentes, la tecnología MOS utilizó chips periféricos derivados de los de la familia 6800:

  • MOS 6520 PIA (adaptador de interfaz paralela): casi un clon del Motorola 6821 Motorola: tiene 2 puertos de 8 bits con direccionalidad de bits
  • MOS 6522 VIA (Adaptador de interfaz versátil): es el 6520 con la adición de puertos serie, temporizadores y otras mejoras notables. En su momento costaba alrededor de ¼ del Motorola 6821
  • MOS 6526 CIA (adaptador de interfaz compleja): evolución del 6522, se usó en el Commodore 64 para interfaces externas y para administrar el teclado
  • MOS 6545 CRTC (controlador CRT) - puerto de video con extensiones muy leves en comparación con el Motorola 6845 (como siempre por razones legales)
  • MOS 6551 ACIA (adaptador de interfaz de comunicaciones asíncronas): derivado de Motorola 6850, realiza servicios UART y administra el protocolo RS-232

Variantes y derivados

Del 6502, se produjeron varias variantes y chips derivados:

  • MOS 6507 : presentaba un pequeño bus de direcciones capaz de direccionar solo 8 KB. Este chip solo se usó en la consola Atari 2600 . [29]
  • MOS 6509 : el bus de direcciones se amplió a 20 bits. Con la integración en el chip de la circuitería para la gestión de la conmutación bancaria , el 6509 podría direccionar hasta 1 MB de memoria. Se usó solo en el Commodore CBM-II . [30]
  • MOS 6510 : se utilizó como CPU del popular Commodore 64 . En comparación con el 6502, tenía un puerto de E / S adicional y un pin para la salida de la señal del reloj.
  • WDC 65C02 : fabricado por Western Design Center , era un 6502 en tecnología CMOS con más opcodes y algunos bugs del proyecto original corregidos (como algunos flags que no eran, contrariamente a la documentación, actualizados tras ciertas operaciones).
  • Ricoh 2A03 : variante de la 6502 sin modo BCD, utilizada exclusivamente en la consola Nintendo Entertainment System . [31]

MOS 6512

El MOS 6512 es una variante que funciona con un reloj externo: el 6502 original usa un generador interno para crear las señales de reloj "Fase 1" (Φ1) y "Fase 2" (Φ2). Se usó en la BBC Micro B+ 64 , donde el uso del reloj externo permitía que la CPU trabajara normalmente a 2 MHz, para llevarla a 1 MHz cuando tenía que acceder a periféricos lentos como el bus de expansión, el ADC ( Convertidor analógico a digital) y VIA. [32]

Derivados de 16 bits

Western Design Center también diseñó una versión de 16 bits del 65C02, el WDC 65C816 , así como el WDC 68C082 , una versión híbrida basada en un núcleo 65C816 capaz de direccionar 64 KB de memoria y con un pinout compatible con el del 6502 / 65C02: podía sustituir a este último y funcionaba como un 65C02 normal pero también podía configurarse mediante software para trabajar con los registros internos "A" y "X" de 16 bits. El 65C802 no tuvo mucha difusión y ya no está en producción. El 65C816 se usó en la consola Super Nintendo Entertainment System y Apple IIGS y todavía está en producción. [33]

Mitsubishi construyó el 65816, un microcontrolador con una arquitectura similar a la del 65C816, aunque no 100% compatible con él.

Synertek publicó la ficha técnica del SY6516 , una versión de 16 bits del 6502 que, sin embargo, nunca salió al mercado. [34]

Problemas en el proyecto

Se sabe que el diseño original del 6502 y sus derivados tienen una serie de instrucciones no documentadas, que varían mucho de un chip a otro según el fabricante. En 6502 la decodificación de las instrucciones se implementa en una lógica programable (similar a un PLA ) que define solo 151 de los 256 códigos de operación posibles: los 105 restantes provocan efectos extraños e impredecibles (por ejemplo, el bloqueo inmediato del procesador, la ejecución de varias operaciones válidas al mismo tiempo) o simplemente no hacer nada. Eastern House Software desarrolló el "Trap65", un dispositivo que podría insertarse entre el procesador y su zócalo para capturar estos códigos de operación no documentados y convertirlos en instrucciones BRK(que generan una interrupción de software ). Algunos programadores utilizaron esta función para ampliar el conjunto de instrucciones 6502 escribiendo rutinas de código de operación no documentadas que se ejecutaban interceptando vectores de instrucciones BRK, colocados en la dirección $FFFE. En cambio, Western Design Center reemplazó en su 65C02 todos los códigos de operación ilegales con instrucciones NOP, incluso con tiempos de ejecución y ocupación en diferentes bytes.

La instrucción de salto indirecto tiene un caso en el que no funciona como se esperaba: si el byte bajo de la dirección contiene el valor (por lo tanto, cada dirección en el formato ), el procesador no ejecutará la instrucción en la dirección almacenada en / sino en el uno almacenado en / . Este error afecta a todos los chips en la versión NMOS pero no al 6502 y sus derivados hechos en lógica CMOS. [35]JMP (byte basso dell'indirizzo)$FF$xxFF$xxFF$xxFF+1$xxFF$xx00

El modo de direccionamiento indirecto basado en el registro Y ( (Ind),Y) es parcialmente defectuoso. Si la dirección en la página cero es $FF(es decir, la última ubicación de memoria de la página cero), el procesador no ejecuta los datos de la dirección señalada por $00FFe $0100+ Y, sino por $00FFe $0000+ Y. Todos los chips en la lógica NMOS se ven afectados por esto. error, que se ha solucionado en muchos de los que están en lógica CMOS, excepto en el 65C02.

El modo de direccionamiento indirecto basado en el (Ind),Xregistro X ( ) también falla si la dirección en la página cero es $FF: el problema es idéntico al caso anterior.

El modo de direccionamiento indexado de las versiones NMOS del 6502 presenta un problema en el caso de direcciones en los márgenes de las páginas: en este caso se realiza una lectura adicional de una dirección no válida. Este error puede causar problemas si accede a hardware que funciona durante una lectura (por ejemplo, restablecer un temporizador o indicadores IRQ, enviar una señal de sincronización en una línea de E/S, etc.). Este error se ha solucionado en las versiones CMOS, donde el procesador realiza una lectura adicional del byte de la última instrucción.

Las instrucciones de lectura/modificación/escritura a una dirección en particular realizan 1 ciclo de lectura y 2 ciclos de escritura. Esto puede causar problemas durante el segundo ciclo de escritura si accede al hardware que funciona durante la escritura. Este defecto se solucionó en la versión CMOS del 6502, en la que el procesador realiza 2 ciclos de lectura y 1 de escritura.

Las banderas de estado "N" (resultado negativo), "V" ( señal de desbordamiento ) y "Z" (resultado cero) no son válidas cuando el procesador realiza operaciones aritméticas en modo BCD, ya que estas banderas reflejan el estado de las operaciones en modo binario. y no en modo BCD. Esta limitación se eliminó en las versiones de CMOS. Este error se ha utilizado en el pasado como una prueba para verificar si la CPU estaba en lógica NMOS o CMOS. [36]

Cuando el procesador está en modo BCD mientras se realiza una interrupción de hardware, no vuelve al modo binario. Esta falla puede generar errores difíciles de encontrar en el código de las rutinas de interrupción si no deseleccionan el modo BCD antes de realizar cualquier operación aritmética. Un sistema operativo afectado por este problema fue el KERNAL de Commodore 64 , que no manejó correctamente este defecto del procesador. Esto también se solucionó en las versiones CMOS.

El pin "SO" (Establecer desbordamiento) estaba destinado a ser utilizado en controladores para dispositivos de alta velocidad: cuando se aplicaba un voltaje (señal "ALTO"), el indicador de desbordamiento del procesador "V" se establecía inmediatamente en 1. Si esta función funcionaba bueno, habría eliminado una instrucción de carga del controlador del dispositivo, reduciendo el número de instrucciones en un ciclo de transferencia de datos en un 25%, obviamente revisando el diseño del sistema con mucho cuidado para no alterar el proceso de cálculo. En la práctica, sin embargo, esta característica prácticamente nunca se utilizó.

El conjunto de instrucciones 6502 incluye BRK) (código de operación $00), que técnicamente es una interrupción de software (similar a la instrucción SWIen los procesadores Motorola 6800 y ARM). BRKa menudo se usa para interrumpir la ejecución del programa e iniciar un editor de lenguaje de máquina para probar y depurar durante el desarrollo del software. También se puede usar para enrutar la ejecución del programa usando una tabla de salto simple (similar a cómo Intel 8088 y sus derivados manejan las interrupciones de software a través de un número). Desafortunadamente, si ocurre una interrupción de hardware mientras el procesador está ejecutando una instrucción BRK, el 6502 ignora la instrucción y ejecuta la primera directamente. Este defecto fue corregido en las versiones CMOS del procesador.

Si bien no es realmente un error, los comportamientos de las instrucciones JSR(Jump to SubRoutine) y RTS(ReTurn from Subroutine) pueden sorprenderlo. La dirección del punto de salto insertado en la pila por JSRy luego recuperado por RTSpara reanudar la ejecución es el del último byte de la misma instrucción JSRy no el de la dirección de la siguiente instrucción. Esto sucede porque la copia del valor (del registro "PC" a la pila y viceversa) se realiza antes de que se incremente automáticamente el registro del puntero del programa "PC", que se realiza al final de cada instrucción. Sin embargo, esta forma de operar no afecta la correcta ejecución del salto porque la dirección almacenada previamente en la pila se actualiza con un incremento de 1 al final de la instrucción RTS. [37] Esta característica generalmente no se nota a menos que extraiga la dirección de retorno para obtener parámetros en el flujo de código (una práctica común en la programación del 6502). Todos los derivados del 6502 exhiben este comportamiento.

Una limitación de la pila es el hecho de que su puntero "S" es de 8 bits, por lo que la pila solo puede contener 256 valores.

Clones en el bloque soviético

En el bloque soviético se produjeron una gran cantidad de microprocesadores clonados a partir de los occidentales y entre estos el CM630 o CM630P era un clon puro del 6502 fabricado por MICRO ELEKTRONIKA BULGARIA

Aceleradores

Varios usuarios comenzaron a buscar formas de acelerar sus computadoras. Dado que el 6502 dibuja el reloj desde el exterior, aumentar la velocidad fue más fácil que buscar un chip más rápido que fuera compatible. Muchos fabricantes comenzaron a fabricar dispositivos "aceleradores" que consisten en una pequeña cantidad de RAM de alta velocidad y los circuitos necesarios para sincronizar el 6502 "acelerado" con la RAM y los periféricos originales de la computadora. Por ejemplo, la disquetera del Apple II tenía tiempos de acceso muy precisos, sincronizados a través de la gestión directa de los registros de E/S del procesador: por eso los aceleradores del Apple II devolvían la frecuencia de la CPU al valor original de 1 MHz durante el disco. operaciones de acceso.

Los primeros aceleradores se fabricaron como tarjetas complementarias, pero varios aceleradores que aparecieron más tarde integraron no solo el 6502 sino también todos los circuitos accesorios en un paquete del tamaño del chip original. Un ejemplo de este tipo de aceleradores es el Zip Chip para Apple II, que en un solo paquete insertable en el socket 6502 en formato DIP40 integraba la CPU y 350 circuitos accesorios. El Zip Chip elevó la frecuencia del 6502 a 4 u 8 MHz, según el modelo. [38] [39]

Simuladores

El grupo visual6502.org construyó un simulador de trabajo del 6502 en JavaScript utilizando la técnica de ingeniería inversa. De hecho, los dibujos técnicos originales del MOS se dibujaron a mano y se han perdido. El grupo dirigido por Michael Steil ha conseguido obtener imágenes en alta definición de las distintas capas del procesador mediante ácidos y fotografiarlas mediante microfotografía. Todo fue presentado en la vigésima séptima edición del Chaos Communication Congress en Berlín. [40] [41] [42] [43]

En la cultura de masas

En la película de ciencia ficción Terminator ( 1984 ) en un momento determinado se proyecta en la pantalla lo que el robot T-800 ve a través de sus ojos artificiales: la imagen aparece superpuesta al código ensamblador 6502 , que proviene de unos programas para Apple II, uno del cual apareció en una revista de informática llamada Nibble . [44]

En la comedia de situación animada Futurama , el coprotagonista Bender , un robot androide del cuarto milenio, afirma en un episodio que posee un 6502 como "cerebro". David X. Cohen , productor de televisión y autor principal de la serie, dijo que él y sus amigos David Borden y David Schiminovich escribieron un compilador ensamblador 6502 para un lenguaje de su propia creación (llamado "FLEET") durante el horario escolar Apple II Plus , lo que lo llevó a incluir esa cita en la comedia de situación. [45]

Galería de imágenes

Notas

  1. ^ Longley, Shain , pág. 147 .
    ( ES )

    "Hasta hace poco, las máquinas de 8 bits estaban dominadas por dos microprocesadores: el Z80 y el 6502"

    ( ES )

    "Hasta hace poco, las máquinas de 8 bits estaban dominadas por 2 microprocesadores: el Z80 y el 6502".

  2. ^ MOS 6510 , en cpu-collection.de . Consultado el 24 de septiembre de 2015 .
    ( ES )

    «El MOS6510 es un 6502 con un puerto de E/S bidireccional adicional de 6 bits. (...) El 6510 que se construyó en el C64 corría a 1 Mhz (...)"

    ( ES )

    “El MOS 6510 es un 6502 con un puerto I/O adicional de 6 bits. (...) El 6510 que estaba incluido en el C64 trabajaba a 1 MHz (...)"

    ( Cpu-collection.de )
  3. ^ Hoja de datos de MOS 6510 , Commodore Semiconductor Group.
    ( ES )

    "La arquitectura del procesador interno es idéntica a la del Commodore Semiconductor Group 6502 para brindar compatibilidad de software".

    ( ES )

    "La arquitectura interna del procesador es idéntica a la del Commodore Semiconductor Group 6502 para garantizar la compatibilidad del software".

    ( Grupo de Semiconductores Commodore )
  4. ^ a b c Brian Bagnall, 1 y 2 , en On the Edge: The Spectacular Rise And Fall of Commodore , Winnipeg, Manitoba, Variant Press, 2006, págs. 9-12, ISBN  0-9738649-0-7 .
  5. ^ Historia oral de Motorola 6800 , computerhistory.org , 2008, p. 18. Consultado el 7 de febrero de 2011 (archivado desde el original el 2 de abril de 2012) .
  6. ^ a b Ian Matthews, The Rise of MOS Technology & The 6502 , en commodore.ca , 26 de junio de 2006. Consultado el 6 de febrero de 2011 (archivado desde el original el 4 de octubre de 2018) .
  7. ^ Robert Sugarman, ¿Necesita el país un buen microprocesador de $ 20? ( PDF ), en Electronic Engineering Times , 25 de agosto de 1975, p. 25. Consultado el 6 de febrero de 2011 (archivado desde el original el 3 de febrero de 2007) .
  8. ^ Sección uno: Antes de la gran nube oscura - Parte V: El 650x, Otra dirección (1975)... , en cpushack.com , CPU Shack. Consultado el 25 de septiembre de 2015 .
    ( ES )

    "A diferencia del 8080 y los de su tipo, el 6502 (y el 6800) tenían muy pocos registros. Era un procesador de 8 bits, con bus de direcciones de 16 bits. Dentro había un registro de datos de 8 bits, dos registros de índice de 8 bits y un puntero de pila de 8 bits (la pila estaba predeterminada desde la dirección 256 ($ 100 hexadecimal) a 511 ($ 1FF)). Usó estos registros de índice y pila de manera efectiva, con más modos de direccionamiento, incluido un modo rápido de página cero que accedió a direcciones de memoria desde la dirección 0 a 255 ($ FF) con una dirección de 8 bits que aceleró las operaciones (no tenía que hacerlo). obtener un segundo byte para la dirección). "

    ( ES )

    “A diferencia del [Intel] 8080 y chips similares, el 6502 (y el 6800) tenían muy pocos registros. Era un procesador de 8 bits, con un bus de direcciones de 16 bits. Dentro había un registro de datos de 8 bits, 2 registros de índice de 8 bits y un puntero de pila de 8 bits (la pila estaba preestablecida desde la dirección 256 (hex $ 100) a 511 ($ 1FF)). Usó estos registros de índice y los apiló de manera efectiva, con múltiples modos de direccionamiento, incluido un modo de página cero que accedió a las direcciones de memoria 0 a 255 ($ FF) con una dirección de 8 bits que aceleró las operaciones (no tuvo que cargar un segundo byte para la dirección)."

    ( Casco de la CPU )
  9. ^ Modo decimal , en 6502.org._ _ _ Consultado el 25 de septiembre de 2015 .
  10. ^ ( EN ) 6500 microprocesadores , Commodore Semiconductor Group.
  11. ^ La línea de microprocesadores ofrece 4, 8,16 bits , en Electrónica , vol. 48, núm. 15, Nueva York, McGraw-Hill, 24 de julio de 1975, pág. 118.
  12. ^ Robert Sugarman, ¿Necesita el país un buen microprocesador de $ 20? ( PDF ), en EE Times , Manhasset, Nueva York, CMP Publications, 25 de agosto de 1975, p. 25. Consultado el 6 de febrero de 2011 (archivado desde el original el 3 de febrero de 2007) .
  13. ^ El microprocesador MOS 6501 los supera a todos , en Electronics , vol. 48, núm. 16, Nueva York, McGraw-Hill, 7 de agosto de 1975, págs. 60–61.
  14. ^ a b MOS 6502, el segundo de una familia de microprocesadores de bajo costo y alto rendimiento ( JPG ), en Computer , vol. 8, núm. 9, IEEE Computer Society, septiembre de 1975, págs. 38–39, DOI : 10.1109/CM.1975.219074 .
  15. ^ a b Brian Bagnall, On the Edge: The Spectacular Rise and Fall of Commodore , Variant Press, 2005, p. 24
  16. ^ James, Anuncio de James , en Popular Electronics , vol. 8, núm. 3, septiembre de 1975, pág. 107.
    ( ES )

    «James ahora es Jameco Electronics. La CPU 8080 costaba $ 149,95, la CPU 8008 costaba 29,95. Una RAM estática de 2102 1K bits costaba $ 4.95. Su precio por una CPU 8080A era de 37,95 en la edición de junio de 1976".

    ( ES )

    “James ahora es Jameco Electronics. La CPU 8080 estaba a $ 149.95, la CPU 8008 estaba a $ 29.95. Un chip de RAM estática 2102 de 1Kbit costaba $ 4.95. Su precio para el 8080A fue de $ 37,95 en la edición de junio de 1976".

  17. ^ Motorola, Todo esto y microprocesador de $69 desagregado ( JPG ), en Electronics , vol. 48, núm. 22, McGraw-Hill, 30 de octubre de 1975, pág. 11
  18. ^ Motorola, Todo esto y microprocesador de $69 desagregado ( JPG ), en Electronics , vol. 48, núm. 22, McGraw-Hill, 30 de octubre de 1975, pág. 11
    ( ES )

    "El precio de cantidad uno para el MC6800 se redujo de $ 179 a $ 69. El precio anterior de 50 a 99 unidades era de $125”.

    ( ES )

    "El precio de un solo MC6800 se redujo de $ 179 a $ 69. El precio anterior para cantidades de 50 a 99 chips era de $ 125 cada uno".

  19. ^ Digi-Key, Publicidad de Digi-Key , en Popular Electronics , vol. 8, núm. 6, diciembre de 1975, pág. 124.
    ( ES )

    «La CPU 8080A costaba 69,50 dólares. Una RAM estática de 2102 1K bits costaba $ 3.50. El precio de Digi-Key para un 8080A fue de $34,95 en la edición de junio de 1976".

    ( ES )

    “La CPU 8080A estaba en $69.50. Un chip RAM estático 2102 de 1Kbit costaba $3.50. El precio de Digi-Key para un 8080A fue de $34,95 en la edición de junio de 1976".

  20. ^ Motorola Sues MOS Technology ( PDF ), en Microcomputer Digest , vol. 2, núm. 6, Cupertino CA, Microcomputer Associates, diciembre de 1975, pág. 11. Consultado el 6 de febrero de 2011 (archivado desde el original el 4 de julio de 2009) .
  21. ^ MOS Technology Drops 6501 ( PDF ), en Microcomputer Digest , vol. 2, núm. 11, Cupertino CA, Microcomputer Associates, mayo de 1976, pág. 4. Consultado el 18 de enero de 2011 (archivado desde la URL original el 8 de enero de 2011) .
  22. ^ Mike Teener, Política e intriga , en SCCS Interface , vol. 1, no. 6, Los Ángeles, Sociedad de Computación del Sur de California, mayo de 1976, p. 58.
    ( ES )

    "Así que Motorola demandó y recientemente ganó un acuerdo extrajudicial en el que MOS Technology paga $ 200,000 y detiene la producción del 6501".

    ( ES )

    "Entonces, Motorola demandó y recientemente ganó un caso sin juicio en el que MOS Technology pagó $ 200,000 y puso fin a la producción del 6501".

  23. ^ Inside the Atari 2600 , hardwaresecrets.com , 14 de mayo de 2012. Consultado el 24 de septiembre de 2015 .
    ( ES )

    "El 6502 fue ampliamente utilizado en ese momento en varias microcomputadoras, como Apple II, Atari 400, Atari 800, Commodore VIC-20 y Commodore 64, solo por nombrar las más famosas"

    ( ES )

    "El 6502 fue ampliamente utilizado en ese momento en varias microcomputadoras, como Apple II, Atari 400, Atari 800, Commodore VIC-20 y Commodore 64, solo por nombrar las más famosas".

    ( Dentro del Atari 2600 )
  24. ^ "¿Cuántos transistores hay en el procesador 6502?" , en classiccmp.org , 5 de mayo de 2001. Consultado el 7 de febrero de 2011 (archivado desde el original el 25 de septiembre de 2010) .
  25. ^ Historia oral de Motorola 6800 (2008), p. 10
  26. ^ Mapa de memoria Commodore VIC-20 ( TXT ), en zimmers.net . Consultado el 6 de febrero de 2011 .
  27. ^ Arqueología de chips , compukituk101.blogspot.com , Compukit-101, 18 de febrero de 2009. Consultado el 7 de febrero de 2011 .
  28. ^ a b Richard Murray, RISC vs CISC , heyrick.co.uk , 2002. Consultado el 7 de febrero de 2011 .
  29. ^ Inside the Atari 2600 , hardwaresecrets.com , 14 de mayo de 2012. Consultado el 24 de septiembre de 2015 .
    ( ES )

    «El Atari 2600 estaba basado en un microprocesador MOS Technology 6507. Esta CPU era una versión simplificada del microprocesador 6502, limitada a acceder solo a 8 KB de memoria frente a los 64 KB del 6502 y sin líneas de interrupción; de lo contrario, eran la misma CPU".

    ( ES )

    «El Atari 2600 se basó en el microprocesador MOS Technology 6507. Esta CPU era una versión reducida del microprocesador 6502, con acceso limitado a solo 8 KB de memoria en comparación con los 64 KB del 6502 y sin las líneas de interrupción; aparte de eso eran la misma CPU".

    ( Dentro del Atari 2600 (HardwareSecrets.com) )
  30. ^ Comodoro CBM-II , en 6502.org . Consultado el 24 de septiembre de 2015 .
  31. ^ Información de la CPU NES Ricoh 2A03 , en wiki.nesdev.com , NESdev.com . Consultado el 24 de septiembre de 2015 .
    ( ES )

    "El núcleo de la CPU de NES se basa en el procesador 6502 (...) Está fabricado por Ricoh y carece del modo decimal del MOS6502".

    ( ES )

    "El núcleo de la CPU de la NES se basa en el procesador 6502 (...) Lo fabrica Ricoh y no tiene el modo decimal del MOS 6502".

    ( Especificaciones de Ricoh 2A03 )
  32. ^ Biblioteca de dominio público de la BBC y Master Computer: dentro de la BBC B + , en 8bs.com , software de 8 bits. Consultado el 7 de febrero de 2011 .
  33. ^ Especificaciones de WDC 65C816 , en westerndesigncenter.com , Western Design Center. Consultado el 7 de febrero de 2011 .
  34. ^ "Syntertek SY6516 - El chip que nunca existió" ( TXT ), en homepage.mac.com , Apple II Things. Consultado el 7 de febrero de 2011 (archivado desde el original el 28 de junio de 2010) .
  35. ^ MOS 6502 , en foldoc.org , Diccionario gratuito en línea de informática. Consultado el 25 de junio de 2014 .
  36. ^ Prueba de verificación CMOS/NMOS para el 6502 , en s-direktnet.de , página en Web.Archive.org. Consultado el 7 de febrero de 2011 (archivado desde el original el 2 de enero de 2008) .
  37. ^ Mark Andrews, 6 , en "Atari Roots: una guía para el lenguaje ensamblador de Atari" , DATAMOST, Inc., 1984, ISBN  0-88190-171-7 .
    ( ES )

    "RTS (" saque la dirección de retorno de la pila y colóquela en la PC e increméntela en uno. "Esto hará que la ejecución continúe donde se quedó)".

    ( ES )

    "RTS (" extrae la dirección de retorno de la pila, la inserta en la PC y la incrementa en 1. "Esto hará que la ejecución se reanude desde donde se quedó".

  38. ^ Manual de usuario de Zip Chip ( PDF ), Tecnología ZIP. Consultado el 7 de febrero de 2011 .
  39. ^ Foto del Zip Chip y su empaque , en nekochan.net . Consultado el 7 de febrero de 2011 (archivado desde el original el 27 de enero de 2011) .
  40. ^ 6502 Imágenes , en visual6502.org . Consultado el 28 de noviembre de 2017 .
  41. ^ CCC | _ _ Inicio , en ccc.de. Consultado el 28 de noviembre de 2017 .
  42. ^ Christiaan008, 27c3: Ingeniería inversa de la CPU MOS 6502 (en) , 10 de enero de 2011. Consultado el 28 de noviembre de 2017 .
  43. ^ Visual 6502 en JavaScript , en visual6502.org . Consultado el 28 de noviembre de 2017 .
  44. ^ "El 6502 en 'Terminator'" , en pagetable.com . Consultado el 7 de febrero de 2011 .
  45. ^ "La verdad sobre el cerebro de Bender" , en espectro.ieee.org , IEEE, 05/2009. Consultado el 7 de febrero de 2011 .

Bibliografía

Monografías en italiano

Monografías en inglés

Capítulos en obras generales

Artículos de revistas

  • Robert Sugarman, ¿ Necesita el país un buen microprocesador de $ 20? ( PDF ), en Electrical Engineering Times , 25 de agosto de 1975, p. 25. Consultado el 8 de febrero de 2011 ( archivado el 3 de febrero de 2007) .
  • ( EN ) Microprocesador de tercera generación ( PDF ), en Microcomputer Digest , vol. 2, núm. 2, Cupertino, California, Microcomputer Associates, 08/1975, págs. 1-3. Consultado el 5 de mayo de 2021 ( archivado el 4 de julio de 2009) .
  • ( ES ) Daniel Fylstra, hijo de Motorola (o el chip de CPU de $ 20) , en BYTE , vol. 1, no. 3, Peterborough, Nueva York, Green Publishing, 11/1975, págs. 56-62.
  • Hablemos un poco de 6502 ( JPG ), en Bit , año 2, n. 5, Milán, Jackson Publishing Group, noviembre/diciembre de 1979, págs. 35-40, ISSN  0392-8837

Enlaces externos

Información general

Características del conjunto de instrucciones

Emuladores y simuladores

Primeras computadoras basadas en 6502

Aceleradores de hardware

Hardware

Otros proyectos