<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>http://wiki.madrisx.org:80/index.php?action=history&amp;feed=atom&amp;title=MOS_Technology_6510</id>
	<title>MOS Technology 6510 - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.madrisx.org:80/index.php?action=history&amp;feed=atom&amp;title=MOS_Technology_6510"/>
	<link rel="alternate" type="text/html" href="http://wiki.madrisx.org:80/index.php?title=MOS_Technology_6510&amp;action=history"/>
	<updated>2026-04-29T22:52:04Z</updated>
	<subtitle>Historial de revisiones de esta página en la wiki</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>http://wiki.madrisx.org:80/index.php?title=MOS_Technology_6510&amp;diff=4182&amp;oldid=prev</id>
		<title>Museo8bits en 01:31 8 jul 2007</title>
		<link rel="alternate" type="text/html" href="http://wiki.madrisx.org:80/index.php?title=MOS_Technology_6510&amp;diff=4182&amp;oldid=prev"/>
		<updated>2007-07-08T01:31:13Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[imagen:MOS_Technologies_large.jpg|thumb|300px|Imagen de los componentes de un [[Commodore 64]] mostrando algunos de los más importantes chips de MOS Technology : la [[MOS Technology 6510|CPU 6510]] (chip de 40 pines [[Dual in-line package|DIP]], a la izquierda) y el [[MOS Technology SID|6581 SID]] (derecha). La producción Semana/Año (SSAA) de cada chip está debajo de cada nombre.]]&lt;br /&gt;
[[Imagen:6510 CPU Pinout.svg|thumb|300px|Configuración de los pines de la versión más común de la CPU 6510]]&lt;br /&gt;
&lt;br /&gt;
El &amp;#039;&amp;#039;&amp;#039;MOS Technology 6510&amp;#039;&amp;#039;&amp;#039; es un [[microprocesador]] diseñado por [[MOS Technology|MOS Technology, Inc.]], y es el sucesor directo del célebre [[MOS Technology 6502|6502]].&lt;br /&gt;
&lt;br /&gt;
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]].&lt;br /&gt;
&lt;br /&gt;
El 6510 fue solo ampliamente usado en el [[ordenador doméstico]] [[Commodore 64]] y, en cantidades significativamente más pequeñas, en el [[Commodore SX-64]] (una versión portable del C64). En ambos casos los pines extra del procesador se utilizaron para controlar el [[Paginación|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 [[bit|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 [[ROM]] ni puertos de entrada/salida.&lt;br /&gt;
&lt;br /&gt;
==Variantes==&lt;br /&gt;
&lt;br /&gt;
En [[1985]] MOS produjo el &amp;#039;&amp;#039;&amp;#039;8500&amp;#039;&amp;#039;&amp;#039;, una versión [[HMOS]] del 6510. Aparte del cambio del proceso de fabricación, es idéntico a la versión [[NMOS]] del 6510. El 8500 se diseñó principalmente para utilizarlo en el Commodore 64C, una verión modernizada del C64 en carcasa tipo [[Commodore 128]]. Sin embargo en [[1985]], cantidades limitadas del 8500 se utilizaron en viejos C64 con base NMOS. Finalment hizo su aparición oficial en [[1987]], apareciendo en una [[placa base]] que utilizaba el nuevo chipset 85xx HMOS.&lt;br /&gt;
&lt;br /&gt;
La variante &amp;#039;&amp;#039;&amp;#039;7501/8501&amp;#039;&amp;#039;&amp;#039; del 6510 se utilizó en los [[ordenador doméstico|ordenadores domésticos]] [[Commodore 16]], [[Commodore 116]] y [[Commodore Plus/4]], y el [[MOS Technology 8502]], con capacidad  de 2&amp;amp;nbsp;MHz, se utilizó en el [[Commodore 128]]. Todas estas CPUs eran compatibles a nivel de [[opcode|instrucción]] (incluyendo las [[instrucción ilegal|instrucciones no documentadas]]), excepto el 8502, donde se han encontrado diferencias en las instrucciones no documentadas.&lt;br /&gt;
&lt;br /&gt;
La unidad de disco [[Commodore 1551]] utiliza el &amp;#039;&amp;#039;&amp;#039;6510T&amp;#039;&amp;#039;&amp;#039;, una versión del 6510 con ocho líneas de entrada/salida. Las señales [[Interrupción no emascarable|NMI]] y RDY no están disponibles.&lt;br /&gt;
&lt;br /&gt;
==Componentes==&lt;br /&gt;
[[Program Counter:]]&lt;br /&gt;
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.&lt;br /&gt;
 &lt;br /&gt;
[[Registros índices X e Y:]]&lt;br /&gt;
Sirven para llevar a cabo un modo de direccionado, 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.&lt;br /&gt;
 &lt;br /&gt;
[[Registro de Estados:]]&lt;br /&gt;
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.&lt;br /&gt;
 &lt;br /&gt;
[[Stack Pointer:]]&lt;br /&gt;
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.&lt;br /&gt;
Así, una MEM de 64K posiciones, se puede dividir en 256 páginas de 256 líneas cada una.&lt;br /&gt;
 &lt;br /&gt;
[[Bus de direcciones:]]&lt;br /&gt;
Comprende las 16 líneas del bus de direcciones, de carácter unidireccional.&lt;br /&gt;
 &lt;br /&gt;
[[Bus de Datos:]]&lt;br /&gt;
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.&lt;br /&gt;
 &lt;br /&gt;
==Características y Mnemotécnicos==&lt;br /&gt;
 &lt;br /&gt;
A partir de un código creado en C para emular el funcionamiento se obtiene:&lt;br /&gt;
&lt;br /&gt;
Definiendo los tipos word de tamaño de 16 bits (2 bytes) y byte (8 bits)&lt;br /&gt;
Un struct cpu:&lt;br /&gt;
 &lt;br /&gt;
word&lt;br /&gt;
cpu.PC, cpu.MAR&lt;br /&gt;
byte&lt;br /&gt;
cpu.A, cpu.X, cpu.Y, cpu.IR, cpu.SP, cpu.MBR, cpu.FLAGS&lt;br /&gt;
 &lt;br /&gt;
funciones &amp;quot;void&amp;quot;:&lt;br /&gt;
 &lt;br /&gt;
memoria()&lt;br /&gt;
cmp()&lt;br /&gt;
fetch_dato()&lt;br /&gt;
cpx()&lt;br /&gt;
fetch_codigo()&lt;br /&gt;
cpy()&lt;br /&gt;
poner_dato()&lt;br /&gt;
dec()&lt;br /&gt;
fetch_dir()&lt;br /&gt;
eor()&lt;br /&gt;
carry()&lt;br /&gt;
inc()&lt;br /&gt;
negative()&lt;br /&gt;
lsr()&lt;br /&gt;
zero()&lt;br /&gt;
pop()&lt;br /&gt;
overflow()&lt;br /&gt;
push()&lt;br /&gt;
adc()&lt;br /&gt;
rol()&lt;br /&gt;
and()&lt;br /&gt;
ror()&lt;br /&gt;
asl()&lt;br /&gt;
sbc()&lt;br /&gt;
brach()&lt;br /&gt;
cilco_ejec()&lt;br /&gt;
 &lt;br /&gt;
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.&lt;br /&gt;
 &lt;br /&gt;
Los cases del swich son los siguientes y a cada uno le corresponde un opcode:&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;border-collapse: collapse;&amp;quot; id=&amp;quot;AutoNumber4&amp;quot; border=&amp;quot;1&amp;quot; bordercolor=&amp;quot;#111111&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot; align=center&amp;quot;&lt;br /&gt;
|---&lt;br /&gt;
|ADC&lt;br /&gt;
|0x69&amp;lt;br&amp;gt;0x6D&amp;lt;br&amp;gt;0x7D&amp;lt;br&amp;gt;0x69&lt;br /&gt;
|PHA&lt;br /&gt;
|0x48&lt;br /&gt;
|---&lt;br /&gt;
|AND&lt;br /&gt;
|0x29&amp;lt;br&amp;gt;0x2d&amp;lt;br&amp;gt;0x3D&amp;lt;br&amp;gt;0x39&lt;br /&gt;
|PHP&lt;br /&gt;
|0x08&lt;br /&gt;
|---&lt;br /&gt;
|ASL&lt;br /&gt;
|0x0A&amp;lt;br&amp;gt;0x0E&amp;lt;br&amp;gt;0x1E&lt;br /&gt;
|PLA&lt;br /&gt;
|0x68&lt;br /&gt;
|---&lt;br /&gt;
|Branch&lt;br /&gt;
|0x90&amp;lt;br&amp;gt;0xB0&amp;lt;br&amp;gt;0xF0&amp;lt;br&amp;gt;0x30&amp;lt;br&amp;gt;0xD0&amp;lt;br&amp;gt;0x10&lt;br /&gt;
|PLP&lt;br /&gt;
|0x28&lt;br /&gt;
|---&lt;br /&gt;
|Clear&lt;br /&gt;
|0x18&amp;lt;br&amp;gt;0xB8&lt;br /&gt;
|ROL&lt;br /&gt;
|0x2A&amp;lt;br&amp;gt;0x2E&amp;lt;br&amp;gt;0x3E&lt;br /&gt;
|---&lt;br /&gt;
|CMP&lt;br /&gt;
|0xC9&amp;lt;br&amp;gt;0xCD&amp;lt;br&amp;gt;0xDD&amp;lt;br&amp;gt;0xD9&amp;lt;br&amp;gt;0xE0&amp;lt;br&amp;gt;0xEC&amp;lt;br&amp;gt;0xC0&amp;lt;br&amp;gt;0xCC&lt;br /&gt;
|ROR&lt;br /&gt;
|0x6A&amp;lt;br&amp;gt;0x6E&amp;lt;br&amp;gt;0x7E&lt;br /&gt;
|---&lt;br /&gt;
|DEC&lt;br /&gt;
|0xCE&amp;lt;br&amp;gt;0xDE&amp;lt;br&amp;gt;0xCA&amp;lt;br&amp;gt;0x88&lt;br /&gt;
|SBC&lt;br /&gt;
|0xE9&amp;lt;br&amp;gt;0xED&amp;lt;br&amp;gt;0xFD&amp;lt;br&amp;gt;0xF9&lt;br /&gt;
|---&lt;br /&gt;
|DEX&amp;lt;br&amp;gt;DEY&lt;br /&gt;
|0xCA&amp;lt;br&amp;gt;0x88&lt;br /&gt;
|SEC&lt;br /&gt;
|0x38&amp;lt;br&amp;gt;0xF8&amp;lt;br&amp;gt;0x78&lt;br /&gt;
|---&lt;br /&gt;
|EOR&lt;br /&gt;
|0x49&amp;lt;br&amp;gt;0x4D&amp;lt;br&amp;gt;0x5D&amp;lt;br&amp;gt;0x59&lt;br /&gt;
|STA&lt;br /&gt;
|0x8D&amp;lt;br&amp;gt;0x9D&amp;lt;br&amp;gt;0x99&lt;br /&gt;
|---&lt;br /&gt;
|INC&lt;br /&gt;
|0xEE&amp;lt;br&amp;gt;&lt;br /&gt;
0xFE&lt;br /&gt;
|STX&amp;lt;br&amp;gt;STY&lt;br /&gt;
|0x8E&amp;lt;br&amp;gt;0x8C&lt;br /&gt;
|---&lt;br /&gt;
|INX&amp;lt;br&amp;gt;INY&lt;br /&gt;
|0xE8&amp;lt;br&amp;gt;0xC8&lt;br /&gt;
|TAX&amp;lt;br&amp;gt;TAY&lt;br /&gt;
|0xAA&amp;lt;br&amp;gt;0xA8&lt;br /&gt;
|---&lt;br /&gt;
|JMP&lt;br /&gt;
|0x4C&lt;br /&gt;
|TXA&amp;lt;br&amp;gt;TYA&lt;br /&gt;
|0x8A&amp;lt;br&amp;gt;0x98&lt;br /&gt;
|---&lt;br /&gt;
|JSR&lt;br /&gt;
|0x20&lt;br /&gt;
|TXS&amp;lt;br&amp;gt;TSX&lt;br /&gt;
|0x9A&amp;lt;br&amp;gt;0xBA&lt;br /&gt;
|---&lt;br /&gt;
|LDX&lt;br /&gt;
|0xA2&amp;lt;br&amp;gt;0xAE&amp;lt;br&amp;gt;0xBE&lt;br /&gt;
|LDA&lt;br /&gt;
|0xA9&amp;lt;br&amp;gt;0xAD&amp;lt;br&amp;gt;0xBD&amp;lt;br&amp;gt;0xB9&lt;br /&gt;
|---&lt;br /&gt;
|LDY&lt;br /&gt;
|0xA0&amp;lt;br&amp;gt;0xAC&amp;lt;br&amp;gt;0xBC&lt;br /&gt;
|LSR&lt;br /&gt;
|0x4A&amp;lt;br&amp;gt;0x4E&amp;lt;br&amp;gt;0x5E&lt;br /&gt;
|---&lt;br /&gt;
|ORA&lt;br /&gt;
|0x09&amp;lt;br&amp;gt;0x0D&amp;lt;br&amp;gt;0x1D&amp;lt;br&amp;gt;0x19&lt;br /&gt;
|RTS&lt;br /&gt;
|0x60&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se definieron banderas como constantes:&lt;br /&gt;
{|&lt;br /&gt;
|---&lt;br /&gt;
|NFLAG||0x80||10000000||Bandera de negativo&lt;br /&gt;
|---&lt;br /&gt;
|VFLAG||0x40||01000000||Bandera de overflow&lt;br /&gt;
|---&lt;br /&gt;
|DFLAG||0x08||00001000||Bandera de modo decimal&lt;br /&gt;
|---&lt;br /&gt;
|IFLAG||0x04||00000100||Bandera de interrupt&lt;br /&gt;
|---&lt;br /&gt;
|VFLAG||0x02||00000010||Bandera de cero&lt;br /&gt;
|---&lt;br /&gt;
|CFLAG||0x01||00000001||Bandera de carry&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Enlaces externos==&lt;br /&gt;
*[http://www.devili.iki.fi/pub/Commodore/docs/datasheets/CSG/6510-8211_rev_a.zip MOS 6510 datasheet (formato GIF, zip)]&lt;br /&gt;
*[http://www.6502.org/documents/datasheets/mos/mos_6510_mpu.pdf MOS 6510 datasheet (formato PDF)]&lt;br /&gt;
*[http://www.6502.org/documents/datasheets/mos/mos_6510_mpu_nov_1982.pdf MOS 6510 datasheet (Nov. 1982, formato PDF)]&lt;br /&gt;
*[http://www.discereaprender.com/angelica/Telematica/computadora_virtual.htm Emulador MOS 6510] creado por Angélica Partida Hanon&lt;br /&gt;
&lt;br /&gt;
{{wp}}&lt;br /&gt;
[[Categoría:Microprocesadores]]&lt;br /&gt;
&lt;br /&gt;
[[cs:MOS Technology 6510]]&lt;br /&gt;
[[de:MOS Technology 7501]]&lt;br /&gt;
[[en:MOS Technology 6510]]&lt;br /&gt;
[[es:MOS 6510]]&lt;br /&gt;
[[it:MOS Technology 6510]]&lt;br /&gt;
[[nn:MOS Technology 6510]]&lt;br /&gt;
[[pl:MOS Technology 6510]]&lt;br /&gt;
[[sv:MOS Technology 6510]]&lt;/div&gt;</summary>
		<author><name>Museo8bits</name></author>
	</entry>
</feed>