Unidad central de procesamiento MOS 6502 | |
---|---|
El procesador MOS 6502 en un paquete DIL-40 de plástico . | |
Producto | 1975 |
Diseñada por | Tecnología MOS |
Aplicaciones | computadora de casa , sala de juegos |
Especificaciones técnicas | |
Frecuencia de la CPU | 1 MHz / 2 MHz |
Conjunto de instrucciones | MOS 6502 |
microarquitectura | 8 bits |
Paquete | DIP40 |
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]
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]
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]
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]
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]
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.
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.
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.
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
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.
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 , $ 00Con 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:
Del 6502, se produjeron varias variantes y chips derivados:
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]
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]
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.
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
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]
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 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]
Atari 2600 (1977)
( Estaba equipado con la versión debilitada MOS 6507 )
Comodoro VIC-20 (1981)
Micro de la BBC (1982)
Manzana IIe (1983)
Nintendo Entertainment System (1983)
(equipado con una CPU derivada de 6502)
Atari 800XL (1983)
( 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". |
( 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 ) |
( 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 ) |
( 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 ) |
( 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". |
( 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". |
( 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". |
( 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". |
( 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 ) |
( 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) ) |
( 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 ) |
( 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ó". |