VSS 1 40 RES
RDY 2 39 Phase2 (Out)
Phase1 (Out) 3 38 SO
IRQ 4 37 Phase0 (In)
Not connected 5 36 Not connected
NMI 6 35 Not connected
Sync 7 34 R/W
VCC 8 33 DB0
AB0 9 32 DB1
AB1 10 31 DB2
AB2 11 30 DB3
AB3 12 29 DB4
AB4 13 28 DB5
AB5 14 27 DB6
AB6 15 26 DB7
AB7 16 25 AB15
AB8 17 24 AB14
AB9 18 23 AB13
AB10 19 22 AB12
AB11 20 21 VSS
Pin Nombre Dir Descripción Pin Nombre Dir Descripción
1 VSS --- Masa 40 /RES <--; Reset
2 RDY   Memory ready signal 39 02 --> Sync / Clock out
3 01 --> Clock out (02 invertido) 38 SO   Set Overflow flag
4 /IRQ --> Interrupt request signal 37 00 <--; Clock in
5 NC   No conectado 36 NC   No conectado
6 /NMI --> Interrupcion no enmascarable 35 NC   No conectado
7 SYNC     34 R//W    
8 Vdd --- Alimentación 33 D0 <-> Data Bus 0
9 A0 --> Adress Bus 0 32 D1 <-> Data Bus 1
10 A1 --> Adress Bus 1 31 D2 <-> Data Bus 2
11 A2 --> Adress Bus 2 30 D3 <-> Data Bus 3
12 A3 --> Adress Bus 3 29 D4 <-> Data Bus 4
13 A4 --> Adress Bus 4 28 D5 <-> Data Bus 5
14 A5 --> Adress Bus 5 27 D6 <-> Data Bus 6
15 A6 --> Adress Bus 6 26 D7 <-> Data Bus 7
16 A7 --> Adress Bus 7 25 A15 --> Adress Bus 15
17 A8 --> Adress Bus 8 24 A14 --> Adress Bus 14
18 A9 --> Adress Bus 9 23 A13 --> Adress Bus 13
19 A10 --> Adress Bus 10 22 A12 --> Adress Bus 12
20 A11 --> Adress Bus 11 21 VSS --- Masa

El MOS Technology 6502 es un microprocesador de 8 bits diseñado por MOS Technology en 1975. Cuando se introduce en el mercado es la CPU completa más barata de lejos, a 1/6 o menos del precio de sus competidoras los gigantes Intel y Motorola. Es además mucho más rápida, y con el Zilog Z80, serán el motor de numerosos desarrollos informáticos que devendrán en la revolución del ordenador doméstico de los 80. El diseño del 6502 es vendido a Rockwell y Synertek (MOS sigue fabricándolo) y licenciado más adelante a numerosas compañías. Todavía se usa en diseños embebidos

Historia y uso
El 6502 es diseñado por el mismo equipo que creó el Motorola 6800. Tras abandonar Motorola en masa, diseñaron rápidamente el 6501, un nuevo diseño pero pin-compatible con el 6800. Motorola les demandado inmediatamente, y aunque el caso se habría solucionado por acuerdo, el daño a MOS es tan grave para que acuerden parar la producción del 6501.

El resultado es el "legalmente-compatible" 6502, que se diferencia sólo por un cambio del pinout que lo hace inutilizable en una placa base 6800; Motorola no parece más interesado. Sin embargo esto deja a MOS con el problema de conseguir nuevos desarrollos para el sistema, por lo que el ingeniero Chuck Peddle diseña el KIM-1, un ordenador monotarjeta. Para su sorpresa, el Kim-1 tiene ventas muy numerosas a los aficionados, así como al mercado previsto de ingenieros. El Rockwell AIM 65, un sistema de control/entrenamiento/desarrollo se vende también bien. Otr diseño similar es el Synertek Sym-1 .

El 6502 se lanza al mercado en Septiembre de 1975 a $25, mientras que los 6800 e Intel 8008 se vendían a $179. Al principio mucha gente pensaba que era algún tipo de engaño pero antes de que se monte una demostración, Motorola e Intel reducen sus precios a $79. En vez del ahorro, el 6502 estaba ahora legitimado y comenzaron a vender por centenares.

El 6502 tiene una característica que lo hace ideal para los sistemas de ordenadores domésticos, un pequeño retraso en el que se garantiza que no tiene acceso al bus. El hardware de video puede utilizar ese período para leer una línea de la pantalla sin tener que pausar el 6502 mientras esto ocurre. En términos generales esto acelera el funcionamiento de un sistema 6502 en un 25%.

Una de los primeros usos es la consola de videojuegos Atari 2600. La 2600 utilizan un vástago del 6502 llamado 6507 , que tiene menos pines y por ello sólo puede direccionar 8 Kb de RAM. Se venderán millones. El siguiente uso del 6502 es la familia Apple II , y tras ello aparecen rápidamente varios ordenadores de Commodore, Atari, el BBC micro (y toda la serie atómica de Acorn), y un número enorme de otro diseños ahora perdidos en la historia.

Otro uso importante del 6502 es la Nintendo Famicom , una consola de videojuegos japonesa. Su equivalente norteamericano y europeo es la NES ( Nintendo Entertainment System ) El 6502 usado en la NES es una versión modificada que fue producida solamente para Nintendo , llamada 2A03. El 2A03 carece del modo decimal 6502 pero agrega 23 registros mapeados en memoria para generar sonido, dibujo de objetos, y la lectura del joypad.

El eficiente diseño de los 6502 también inspira a los diseñadores del procesador del RISC ARM, y así la herencia de los 6502 se puede de decir para superar al procesador original (familia) puesto que su espíritu vive en el diseño del ARM, usado en varias computadoras de escritorio así como en numerosos PDAs, ordenadores de mano, teléfonos móviles y sistemas embebidos, y se vende como un bloque IP que se usa en sistemas todo-en-un-chip.

Descripción
El 6502 es un procesador 8-bit con un bus de direcciones de 16-bits . La lógica interna funciona a la misma velocidad que la frecuencia del reloj externo, pero las velocidades de reloj aparentemente lentas, típicamente 1 Mhz , eran realmente competitivas con otras CPUs que funcionaban cuatro veces más rápidas porque es un procesador pipelined estáticamente, y los otros de su tiempo fueron microcodificados y tenían velocidades internas comparables con los 6502 (el reloj interno del Z80, por ejemplo, está dividido por cuatro). Aunque esto puede sonar como un truco, tenía el efecto secundario de reducir la velocidad requerida para los periférico unidos a la CPU, reduciendo así el coste total del sistema; un factor importante para producir diseños ganadores para el muy sensible mercado de las consolas y ordenadores domésticos.

A diferencia del Intel 8080 y microprocesadores similares, el 6502 tiene muy pocos registros. Cuando la RAM es más rápida que la CPU, tiene sentido optimizar el acceso a RAM más que aumentan el número de registros en un chip. Dentro hay un registro acumulador de 8 bits (A), dos registros de índice de 8 bits (X e Y), un registro de estado de 8 bits (SR), un puntero de pila de 8 bits (SP), y un contador de programa de 16 bits (PC). La subrutina call/scratchpad de la pila de direcciones está direccionada por hard a la página $01 , es decir el rango $0100 - $01FF ( 256 - 511 ) de la memoria. El acceso del software a la pila se hace mediante cuatro instrucciones de direccionamiento cuya función es poner o quitar el acumulador o el registro del estado del procesador.

El chip utiliza el índice y los registros de pila con eficacia con varios modos de direccionamiento, incluyendo un rápido "página directa" o modo "página cero" que accede a las posiciones de memoria las posiciones de memoria de la dirección 0 a 255 con una sola dirección de 8 bits (no necesita traer un segundo octeto para la dirección) El código para el 6502 utiliza la página cero mucho pues el código para otros procesadores hubiera utilizado los registros. Por razones obvias, en la mayoría de los microordenadores basados en 6502 con un sistema operativo el OS en sí mismo casi utiliza la página cero entera, dejando apenas un puñado de las direcciones para el usuario.

Modos de dirección también incluyen implicados (instrucciones de 1 octeto); absoluto (3 octetos); relativo (2 octetos); acumulador (1); indirecto, x e indirecto, y (2); e inmediato (2). El modo absoluto era un modo de uso general. Relativo es usado para los saltos de rama condicionales, que pueden mover el contador de programa hasta 128 octetos adelante o atrás. El modo del acumulador utiliza el acumulador como direccionamiento efectivo, y no necesita ningun dato de operando. El modo inmediato utiliza un operando literal 8-bit.

Los modos indirectos son útiles para procesar arrays y otros bucles. Con el modo indirecto, y el registro de 8 bits Y es añadido a una base de 16 bits situada en la pagina cero de la memoria (un byte en el opcode denota la localización de la página cero). Los registros de 8 bits X e Y son utilizados más como calificadores de desplazamiento que su uso ' normal ' de registros de índice. Incrementando X o Y para recorrer el array es una operación de dos ciclos de 8 bits, incluso si el array está situado en cualquier lugar de las direcciones de 16 bits (dado que la base 16-bits se lee en la página cero). Aquí es donde los 6502 se diferencian más del Motorola 6800. Un vistazo superficial a las especificaciones del 6502 que dicen que hay solamente registros de índice de 8 bits indice a error.

Un ejemplo simple pero característico del lenguaje ensamblador 6502 sería :

    MSG:   .ASCIIZ "Hello, world!"
            LDX    #0
            LDA    MSG,X    ; load initial char
    @LP:    JSR    $FFD2    ; chrout
            INX
            LDA    MSG,X
            BNE    @LP
            RTS

Características dudosas
El 6502 es notorio por tener una variedad de instrucciones indocumentadas, que varían de un diseño al siguiente. El decodificado de instrucciones en los 6502 es implementada en un array de lógica hardware (similar a un Programmable Logic Array ) que se define solamente para los opcodes válidos. Los 32 opcodes indocumentados accionan varias instrucciones válidas a la vez, dando resultados inesperados.

La instrucción de salto indirecto en el 6502, JMP (xxxx) , está quebrada. Si la dirección hexadecimal fuera xxFF , el procesador no tendrá acceso a la dirección almacenada en xxFF y xxFF+1 , sino a xxFF y a xx00. Los 6510 no fijaron este bug, ni es fijado en cualquiera de las otras versiones NMOS de los 6502 como los 8502 y el 2A03. Bill Mensch, del Western Design Center es el primero en fijarlo, en la versión 65C02 CMOS; entonces se decidió diseñar el procesador 65C816 , un sucesor 16-bit del 65C02.

Anecdotario 6502

  • En la película de Ciencia-Ficcion Terminator (1984), protagonizada por Arnold Schwarzenegger como el Terminator T100, en determinados momentos se ve a través del ojo robótico del Terminator donde un programa en ensablador 6502 hace scroll hacia abajo. El código muestra un checksum de un programa para el Apple II publicada en la revista Nibble.
  • Bender, el impagable robot protagonista de Futurama, teóricamente fabricado en 2998, muestra tener un 6502 de CPU al ser escaneado por rayos en el episodio Fry y la fábrica de de Slurm.
  • Los Furbys tienen en su cuerpo adorable de peluche un corazón 6502.
    Esta página ha sido visitada  veces desde el 1 de Septiembre del 2.000
    © Miguel Durán 1996 - con licencia Licencia de Creative Commons