Movatterモバイル変換


[0]ホーム

URL:


Ir al contenido
WikipediaLa enciclopedia libre
Buscar

MOS 6510

De Wikipedia, la enciclopedia libre
Imagen de los componentes de unCommodore 64 mostrando algunos de los más importantes chips de MOS Technology : laCPU 6510 (chip de 40 pinesDIP, a la izquierda) y el6581 SID (derecha). La producción Semana/Año (SSAA) de cada chip está debajo de cada nombre.
Configuración de los pines de la versión más común de la CPU 6510.

ElMOS Technology 6510 es unmicroprocesador diseñado porMOS Technology, Inc., y es el sucesor directo del célebre6502.

El principal cambio respecto del 6502 es la incorporación de un puerto deEntrada/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 hacersetriestado.

El 6510 fue usado ampliamente en elordenador domésticoCommodore 64 y, en cantidades significativamente más pequeñas, en elCommodore SX-64 (una versión portátil del C64). En ambos casos los pines extra del procesador se utilizaron para controlar elmapa de memoria del ordenador, y en el C64, para controlar elmotor eléctrico delCommodore Datasette, la lectograbadora dedicada decasete. Era posible, escribiendo la correctamáscara de bits al procesador en la dirección $01, mapear la totalidad de los 64K deRAM del C64, no dejando mapeados ni laROM ni los puertos de entrada/salida.

Variantes

[editar]
MOS 6510

MOS 8500

[editar]

En 1985 MOS produjo el8500, una versiónHMOS del 6510. Aparte del cambio del proceso de fabricación, era idéntico a la versiónNMOS del 6510. Aunque el 8500 se diseñó principalmente para utilizarlo en el Commodore 64C, una versión modernizada del C64 en carcasa tipoCommodore 128, cantidades limitadas del 8500 se utilizaron en viejos C64 con base NMOS. Hizo su debut oficial en 1987, aparciendo en una placa madre con el nuevo chipset HMOS 85xx.

MOS 7501/8501

[editar]

La variante7501/8501 del 6510 fue introducida en 1984.[1]​ Comparado con el 6510, esta variante amplía el número de pines del puerto de E/S de 6 a 8, pero omite los pines para la interrupción no enmascarable y la salida de reloj.[2]​ Fue usado en los ordenadores domésticosC16,C116 yPlus/4 de Commodore, donde el puerto de E/S controla no sólo elDatasette, sino también la interfaz delCBM Bus. La principal diferencia entre las CPU 7501 y 8501 es que se fabricaron con procesos ligeramente diferentes: el 7501 con procesoHMOS-1 y el 8501 con HMOS-2.[1]

MOS 8502

[editar]

La variante8502 capaz de correr a 2 MHz fue usada en elCommodore 128. Todas estas CPU eran compatibles a nivelopcode (incluyendoopcodes no documentados).[3]

MOS 6510T

[editar]

La unidad de discoCommodore 1551 usaba el6510T, una versión del 6510 con ocho líneas de E/S. Las señales deNMI y RDY no están disponibles.

Componentes

[editar]
  • 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 unapilaLIFO. 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

[editar]

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:

wordcpu.PC, cpu.MARbytecpu.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á 85opcodes (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:

ADC0x69
0x6D
0x7D
0x69
PHA0x48
AND0x29
0x2d
0x3D
0x39
PHP0x08
ASL0x0A
0x0E
0x1E
PLA0x68
Branch0x90
0xB0
0xF0
0x30
0xD0
0x10
PLP0x28
Clear0x18
0xB8
ROL0x2A
0x2E
0x3E
CMP0xC9
0xCD
0xDD
0xD9
0xE0
0xEC
0xC0
0xCC
ROR0x6A
0x6E
0x7E
DEC0xCE
0xDE
0xCA
0x88
SBC0xE9
0xED
0xFD
0xF9
DEX
DEY
0xCA
0x88
SEC0x38
0xF8
0x78
EOR0x49
0x4D
0x5D
0x59
STA0x8D
0x9D
0x99
INC0xEE

0xFE

STX
STY
0x8E
0x8C
INX
INY
0xE8
0xC8
TAX
TAY
0xAA
0xA8
JMP0x4CTXA
TYA
0x8A
0x98
JSR0x20TXS
TSX
0x9A
0xBA
LDX0xA2
0xAE
0xBE
LDA0xA9
0xAD
0xBD
0xB9
LDY0xA0
0xAC
0xBC
LSR0x4A
0x4E
0x5E
ORA0x09
0x0D
0x1D
0x19
RTS0x60


Se definieron banderas como constantes:

NFLAG0x8010000000Bandera de negativo
VFLAG0x4001000000Bandera de overflow
DFLAG0x0800001000Bandera de modo decimal
IFLAG0x0400000100Bandera de interrupt
VFLAG0x0200000010Bandera de cero
CFLAG0x0100000001Bandera de carry

Referencias

[editar]
  1. abhttp://plus4world.powweb.com/hardware/MOS_75018501 Hardware – MOS 7501/8501
  2. https://ist.uwaterloo.ca/~schepers/MJK/7501.html CPU 7501 / 8501
  3. Graham.«6502/6510/8500/8502 Opcodes».www.oxyron.de. 

Enlaces externos

[editar]
Control de autoridades

Obtenido de «https://es.wikipedia.org/w/index.php?title=MOS_6510&oldid=163160249»
Categoría:

[8]ページ先頭

©2009-2026 Movatter.jp