6502

El MOS Technology 6502 es un procesador de 8 bits diseñado por un reducido equipo de desarrollo para MOS Technology. Dicho equipo había trabajado previamente en Motorola, concretamente en el proyecto del 6800, procesador similar a este, pero menos potente y más caro de producir.

Cuando se introdujo en 1975, el 6502 era el microprocesador menos costoso del mercado por un margen sustancial, vendiéndose por alrededor de un sexto del coste de los diseños que competían con el mismo, como el Motorola 6800 ya mencionado o el Intel 8080. A causa de ello, los precios de los procesadores empezaron a decrementar progresivamente. Por otra parte, junto al Zilog Z80, el 6502 dio vida a una serie de proyectos que resultarían en la revolución de los ordenadores domésticos a comienzos de los años 80.

Numerosas consolas y ordenadores domésticos populares en los 80 y comienzos de los 90 emplearon su arquitectura, entre los que podemos nombrar la Atari 2600, el Apple II, la Nintendo Entertainment System, el Commodore 64 o el BBC Micro. Sin embargo, poco después de que el 6502 saliese al mercado, MOS Technology fue adquirido por Commodore International, lo que obligó a ciertos fabricantes, que competían con Commodore, a modificar levemente ciertos aspectos de la arquitectura, como eliminar el soporte para BCD, Binary Coded Decimal, a fin de evitar conflictos legales.

En 1981, Western Design Center comenzó el desarrollo de una versión CMOS, el 65C02, que continúa siendo usado en sistemas empotrados, con una producción anual de cientos de millones de chips.

Instrucciones

A pesar de la simpleza de su conjunto de instrucciones, la arquitectura se considera CISC debido a que el tamaño de las mismas no es siempre igual. En función del modo de direccionamiento, varían entre 1 y 3 bytes (de 8 a 24 bits).

  • Aritmético-lógicas: 15 instrucciones (ADC, AND, ASL, DEC, DEX, DEY, EOR, INC, INX, INY, LSR, ORA, ROL, ROR, SBC) que permiten modificar el contenido de los registros o la memoria empleando la ALU. Todas ellas cambian el estado del procesador de modo que no sea necesario realizar comparaciones a posteriori con los valores obtenidos.
  • Salto condicional: 8 instrucciones (BPL, BMI, BVC, BVS, BCC, BCS, BNE, BEQ) que permiten realizar saltos en función del registro de estado del procesador. No actualizan dicho estado y el número de ciclos que requieren varía en función de si el salto se toma y si se cruza a otra página de memoria.
  • Salto incondicional: 2 instrucciones (JSR, JMP) que permiten modificar el flujo de ejecución del programa. La diferencia entre ellas es que una almacena el registro contador de programa en la pila (JSR), para posibilitar el regreso al código inicial, y la otra no lo hace (JMP).
  • Manipulación de la pila: 4 instrucciones (PHA, PHP, PLA, PLP) que permiten añadir y eliminar valores de la pila, almacenada en RAM.
  • Carga y almacenamiento en memoria: 6 instrucciones (LDA, LDX, LDY, STA, STX, STY) que permiten leer y almacenar datos en posiciones arbitrarias de la memoria direccionable por la CPU.
  • Modificación de estado: 7 instrucciones (CLC, CLD, CLI, CLV, SEC, SED, SEI) que permiten alterar el registro de estado del procesador.
  • Transferencia: 6 instrucciones (TAX, TAY, TSX, TXA, TXS, TYA) que permiten copiar el contenido de un registro en otro.
  • Misceláneas: Además de las mencionadas, existen algunas otras instrucciones con propósitos muy específicos, como causar interrupciones (BRK), retornar de las mismas (RTI) o de subrutinas (RTS), no hacer nada (NOP) o realizar una operación que permita modificar el estado del procesador, descartando el resultado posteriormente (BIT).
  • Referencia adicional

    Existen numerosas webs de referencia para aquellos interesados en el funcionamiento de sus instrucciones, modos de direccionamiento u otras particularidades del hardware como las lecturas y escrituras nulas (cada ciclo es de acceso a memoria), o quienes busquen desarrollar un emulador para alguno de los sistemas que empleen la arquitectura, como el Commodore 64 o la Nintendo Entertainment System.

    Cabe destacar dos páginas en concreto: 6502.org y Masswerk.at