- MOS 6510
-
El MOS Technology 6510 es un microprocesador diseñado por MOS Technology, Inc., y es el sucesor directo del célebre 6502.
El principal cambio respecto del 6502 es la incorporación de un puerto de Entrada/Salida de 8 bits de propósito general (solo seis pines I/O están disponibles en la versión más común del 6510). Además, el bus de direcciones podía hacerse triestado.
El 6510 fue usado ampliamente en el ordenador doméstico Commodore 64 y, en cantidades significativamente más pequeñas, en el Commodore SX-64 (una versión portátil del C64). En ambos casos los pines extra del procesador se utilizaron para controlar el mapa de memoria del ordenador, y en el C64, para controlar el motor eléctrico del Commodore Datassette, la lectograbadora dedicada de casete. Era posible, escribiendo la correcta máscara de bits al procesador en la dirección $01, mapear la totalidad de los 64K de RAM del C64, no dejando mapeados ni la ROM ni los puertos de entrada/salida.
Contenido
Variantes
En 1985 MOS produjo el 8500, una versión HMOS del 6510. Aparte del cambio del proceso de fabricación, era idéntico a la versión NMOS del 6510. Aunque el 8500 se diseñó principalmente para utilizarlo en el Commodore 64C, una versión modernizada del C64 en carcasa tipo Commodore 128, cantidades limitadas del 8500 se utilizaron en viejos C64 con base NMOS.
Componentes
Program Counter: Elemento que una vez proporcionada la primera instrucción, basta que sea incrementado en una unidad para que proporcione la dirección de la segunda instrucción.
Registros índices X e Y: Sirven para llevar a cabo un modo de direccionamiento, denominado indexado con el que la localización del operando de una instrucción se busca en la MEM añadiendo el contenido de estos registros a la dirección especificada en la instrucción.
Registro de Estados: Registro de 8 bits, 7 son significativos y sirven para señalar una situación provocada en la ejecución que se acaba de realizar.
Stack Pointer: Se trata de un contador programable que direcciona la página 1 de la MEM como si se tratase de una pila LIFO. Para simplificar la localización de las posiciones de MEM se lee la estructura en forma de páginas, cada una de las cuales consta de varias líneas o posiciones. Así, una MEM de 64K posiciones, se puede dividir en 256 páginas de 256 líneas cada una.
Bus de direcciones: Comprende las 16 líneas del bus de direcciones, de carácter unidireccional.
Bus de Datos: Consta de 8 líneas bidireccionales, por las que se transfieren los datos y las instrucciones, en sus salidas hay buffers amplificadores capaces de soportar una carga.
Características y Mnemotécnicos
A partir de un código creado en C para emular el funcionamiento se obtiene:
Definiendo los tipos word de tamaño de 16 bits (2 bytes) y byte (8 bits) Un struct cpu:
word cpu.PC, cpu.MAR byte cpu.A, cpu.X, cpu.Y, cpu.IR, cpu.SP, cpu.MBR, cpu.FLAGS
funciones "void":
memoria() cmp() fetch_dato() cpx() fetch_codigo() cpy() poner_dato() dec() fetch_dir() eor() carry() inc() negative() lsr() zero() pop() overflow() push() adc() rol() and() ror() asl() sbc() brach() cilco_ejec()
El switch (cpu.IR) contendrá 85 opcodes (codop) de los 256 disponibles (0..255) ya que solo hay definidos 151 de ellos y se utilizan 105.
Los cases del swich son los siguientes y a cada uno le corresponde un opcode:
ADC 0x69
0x6D
0x7D
0x69PHA 0x48 AND 0x29
0x2d
0x3D
0x39PHP 0x08 ASL 0x0A
0x0E
0x1EPLA 0x68 Branch 0x90
0xB0
0xF0
0x30
0xD0
0x10PLP 0x28 Clear 0x18
0xB8ROL 0x2A
0x2E
0x3ECMP 0xC9
0xCD
0xDD
0xD9
0xE0
0xEC
0xC0
0xCCROR 0x6A
0x6E
0x7EDEC 0xCE
0xDE
0xCA
0x88SBC 0xE9
0xED
0xFD
0xF9DEX
DEY0xCA
0x88SEC 0x38
0xF8
0x78EOR 0x49
0x4D
0x5D
0x59STA 0x8D
0x9D
0x99INC 0xEE
0xFE
STX
STY0x8E
0x8CINX
INY0xE8
0xC8TAX
TAY0xAA
0xA8JMP 0x4C TXA
TYA0x8A
0x98JSR 0x20 TXS
TSX0x9A
0xBALDX 0xA2
0xAE
0xBELDA 0xA9
0xAD
0xBD
0xB9LDY 0xA0
0xAC
0xBCLSR 0x4A
0x4E
0x5EORA 0x09
0x0D
0x1D
0x19RTS 0x60
Se definieron banderas como constantes:NFLAG 0x80 10000000 Bandera de negativo VFLAG 0x40 01000000 Bandera de overflow DFLAG 0x08 00001000 Bandera de modo decimal IFLAG 0x04 00000100 Bandera de interrupt VFLAG 0x02 00000010 Bandera de cero CFLAG 0x01 00000001 Bandera de carry Enlaces externos
- MOS 6510 datasheet (formato GIF, zip)
- MOS 6510 datasheet (formato PDF)
- MOS 6510 datasheet (Nov. 1982, formato PDF)
- Emulador MOS 6510 creado por Angélica Partida Hanon
Categorías:- Microprocesadores
- Circuitos integrados MOS
Wikimedia foundation. 2010.