información general | |
---|---|
Lanzado | 1978 ( 1978 ) |
Fabricante común | |
Actuación | |
Ancho de datos | 8 |
Ancho de dirección | 16 |
Arquitectura y clasificación | |
Conjunto de instrucciones | 6809 |
Número de instrucciones | 59 |
Especificaciones físicas | |
Transistores |
|
Paquete |
|
El Motorola 6809 (" sesenta y ocho-cero-nueve ") es un microprocesador de 8 bits con algunas características de 16 bits . Fue diseñado por Terry Ritter y Joel Boney de Motorola y presentado en 1978. Aunque compatible en origen con el Motorola 6800 anterior , el 6809 ofrecía mejoras significativas con respecto a este y a sus contemporáneos de 8 bits como el MOS Technology 6502 , incluida una instrucción de multiplicación de hardware, aritmética de 16 bits, registros de pila de usuario y sistema que permiten código reentrante, interrupciones mejoradas , código independiente de la posición y una arquitectura de conjunto de instrucciones ortogonal con un conjunto completo de modos de direccionamiento.
El 6809 fue uno de los procesadores de 8 bits más potentes (y más caros) de su época. En 1981, un 6809 en cantidades unitarias costaba 37 dólares, en comparación con los 9 dólares de un Zilog Z80 y los 6 dólares de un 6502. [1] Se lanzó cuando una nueva generación de procesadores de 16 bits estaba llegando al mercado, como el Intel 8086 , y los diseños de 32 bits estaban en el horizonte, incluido el propio 68000 de Motorola . No competía en características con los diseños más nuevos ni en precio con los más antiguos.
El 6809 se utiliza en la computadora en color TRS-80 , Dragon 32/64 , SuperPET , ENER 1000 , Fujitsu FM-7 , Cybernex LC3 y las computadoras hogareñas Thomson MO/TO , la consola de juegos Vectrex y los videojuegos arcade de principios de la década de 1980, incluidos Star Wars , Defender , Robotron: 2084 , Joust y Gyruss . Las máquinas de pinball Williams de la década de 1990 están equipadas con placas controladoras de la serie WPC basadas en 68B09. [2] La Serie II de la estación de trabajo de audio digital Fairlight CMI y el juego arcade Time Pilot '84 de Konami usan procesadores 6809 duales. [3] Hitachi fue un usuario importante del 6809 y luego produjo una versión actualizada como Hitachi 6309 .
El Motorola 6800 fue diseñado a principios de 1971 y lanzado en 1974. En términos generales de diseño, tiene un gran parecido con otras CPU que fueron diseñadas desde el principio como diseños de 8 bits, como el Intel 8080. [ a] Inicialmente se fabricó utilizando la lógica NMOS temprana , que normalmente requería varios voltajes de suministro de energía diferentes. Una característica clave era un duplicador de voltaje en chip que le permitía funcionar con un soloAlimentación de +5 V , una gran ventaja sobre sus competidores como el Intel 8080 que requería-5 V ,+5 V ,-12 V y tierra . [4]
El 6800 se fabricó inicialmente utilizando el proceso de litografía de contacto que se utilizaba en ese momento . En este proceso, la fotomáscara se coloca en contacto directo con la oblea , se expone y luego se levanta. Había una pequeña posibilidad de que parte del material de grabado quedara en la oblea cuando se levantara, lo que provocaría que los futuros chips con el patrón de la máscara fallaran. En el caso de los diseños complejos con múltiples patrones, como una CPU, esto provocó que aproximadamente el 90% de los chips fallaran durante las pruebas. Para obtener ganancias con la pequeña cantidad de chips que funcionaban, los precios de los modelos que funcionaban tenían que ser bastante altos, del orden de cientos de dólares en pequeñas cantidades. [5]
Algunos de los diseñadores del 6800 estaban convencidos de que un sistema de menor costo sería clave para una aceptación generalizada. Entre ellos se destacó Chuck Peddle , quien fue enviado a viajes de ventas y vio a los posibles clientes rechazar repetidamente el diseño por ser demasiado caro para los usos previstos. Comenzó un proyecto para producir un diseño mucho menos costoso, pero la gerencia de Motorola demostró no estar interesada y finalmente le dijo que dejara de trabajar en él. Peddle y algunos otros miembros del equipo del 6800 dejaron Motorola para MOS Technology y presentaron este diseño en 1975 como MOS Technology 6502. [ 6]
El 6800 se vendió inicialmente a 360 dólares en cantidades unitarias, [7] pero luego se redujo a 295 dólares . El 6502 se introdujo a 25 dólares , [8] y Motorola redujo inmediatamente el precio del 6800 a 125 dólares. Continuó sin ser competitivo y las perspectivas de venta se atenuaron. La introducción del Micralign en las líneas de Motorola permitió más reducciones y en 1981 el precio del 6800P, entonces vigente, era ligeramente inferior al del 6502 equivalente, al menos en cantidades unitarias. [1] Sin embargo, para ese momento, el 6502 había vendido decenas de millones de unidades y el 6800 había quedado prácticamente olvidado.
Mientras que el 6502 empezó a apoderarse del mercado del 6800, Intel estaba experimentando el mismo problema cuando el advenedizo Zilog Z80 empezó a robarle ventas al Intel 8080. Tanto Motorola como Intel comenzaron nuevos ciclos de diseño para superar esos diseños. Intel respondió introduciendo rápidamente una pequeña pero práctica actualización del 8080 como el 8085 , lo que lo hizo menos costoso de usar y más competitivo con el Z80. También comenzaron a diseñar una serie de procesadores de 16 bits, que surgieron como el Intel 8086 en 1978. Motorola también comenzó el diseño de un diseño de alta gama similar, en el proyecto MACSS, [9] pero inicialmente no consideró un diseño mejorado de 8 bits. Pero cuando encuestaron a sus clientes existentes del 6800, descubrieron que muchos no estaban dispuestos a pagar por un diseño de 16 bits para sus necesidades simples. Esto llevó a la decisión de producir un diseño de 8 bits muy mejorado pero compatible que se convirtió en el 6809. [10] : 20, 26
El análisis del código 6800 demostró que las cargas y los almacenamientos eran la gran mayoría de todo el tiempo en términos de CPU, lo que representa el 39% de todas las operaciones en el código que examinaron. En contraste, las operaciones matemáticas eran relativamente raras, solo el 2,8% del código. Sin embargo, un examen cuidadoso de las cargas y los almacenamientos observó que muchas de estas se combinaban con sumas y restas, lo que revelaba que una cantidad significativa de esas operaciones matemáticas se realizaban en valores de 16 bits. Esto llevó a la decisión de incluir matemáticas básicas de 16 bits en el nuevo diseño: carga, almacenamiento, suma y resta. De manera similar, los incrementos y decrementos representaban solo el 6,1% del código, pero estos casi siempre ocurrían dentro de bucles donde cada uno se realizaba muchas veces. Esto llevó a la adición de modos de post-incremento y pre-decremento utilizando los registros de índice . [10] : 26
El objetivo principal del nuevo diseño era soportar código independiente de la posición . El mercado de Motorola estaba compuesto principalmente por sistemas integrados y sistemas similares de propósito único, que a menudo ejecutaban programas que eran muy similares a los de otras plataformas. El desarrollo para estos sistemas a menudo tomaba la forma de recopilar una serie de subrutinas predefinidas y combinarlas entre sí. Sin embargo, como el lenguaje ensamblador generalmente se escribe comenzando en una dirección base , la combinación de módulos preescritos normalmente requería un largo proceso de cambio de constantes (o ecuaciones) que apuntaban a ubicaciones clave en el código. [10] : 20, 24
La idea de Motorola era eliminar esta tarea y hacer que el concepto de bloques de construcción fuera mucho más práctico. Los integradores de sistemas simplemente combinarían código estándar en ROM para manejar tareas comunes. Las bibliotecas de rutinas comunes como aritmética de punto flotante , primitivas gráficas, compresión Lempel-Ziv , etc. estarían disponibles para licencia, combinarlas junto con código personalizado y grabarlas en ROM. [10] : 20, 24 [b]
En los diseños de procesadores anteriores, incluido el 6800, había una mezcla de formas de hacer referencia a las ubicaciones de memoria. Algunas de ellas eran relativas a la ubicación actual en la memoria o a un valor en un registro de índice, mientras que otras eran absolutas, un valor de 16 bits que hacía referencia a una ubicación física en la memoria. El primer estilo permite mover el código porque la dirección a la que hace referencia se moverá junto con el código. Las ubicaciones absolutas no lo hacen; el código que utiliza este estilo de direccionamiento tendrá que volver a compilarse si se mueve. Para solucionar esto, el 6809 completó sus códigos de operación de instrucciones para que hubiera más instancias de direccionamiento relativo donde fuera posible. [11] : 1.2
Como ejemplo, el 6800 incluye un modo de direccionamiento directo que se utiliza para hacer que el código sea más pequeño y más rápido; en lugar de que una dirección de memoria tenga 16 bits y, por lo tanto, requiera dos bytes para almacenarse, las direcciones directas tienen solo 8 bits de longitud. La desventaja es que solo puede hacer referencia a la memoria dentro de una ventana de 256 bytes, la página directa , que normalmente está en la parte inferior de la memoria; el 6502 se refiere a esto como direccionamiento de página cero . El 6809 agregó un nuevo registro DP de 8 bits, para la página directa. El código que anteriormente tenía que estar en la página cero ahora se puede mover a cualquier parte de la memoria siempre que se cambie el DP para que apunte a su nueva ubicación. [11] : 1.2
El uso de DP resolvió el problema de hacer referencia a direcciones dentro del código, pero los datos generalmente se encuentran a cierta distancia del código, fuera de la ROM. Para resolver el problema de hacer referencia fácilmente a los datos sin depender de la posición, el 6809 agregó una variedad de nuevos modos de direccionamiento. Entre ellos se encontraba el direccionamiento relativo al contador de programa, que permitía hacer referencia a cualquier ubicación de memoria por su ubicación relativa a la instrucción. Además, la pila se usó más ampliamente, de modo que un programa en ROM podía apartar un bloque de memoria en RAM, establecer el SP como base del bloque y luego hacer referencia a los datos dentro de él utilizando valores relativos. [11] : 2.1–2.4
Para facilitar este tipo de acceso, el 6809 renombró el SP a U para "usuario", y agregó un segundo puntero de pila, S, para "sistema". [11] : 1.3 La idea era que los programas de usuario usarían U mientras que la CPU misma usaría S para almacenar datos durante las llamadas a subrutinas . Esto permitió que el código del sistema se pudiera llamar fácilmente cambiando S sin afectar a ningún otro programa en ejecución. Por ejemplo, un programa que llama a una rutina de punto flotante en ROM colocaría sus datos en la pila U y luego llamaría a la rutina, que luego podría realizar los cálculos utilizando datos en su propia pila privada apuntada por S, y luego regresar, dejando la pila U intacta. [11] : 1.3
Otra razón para el acceso expandido a la pila fue soportar código reentrante , código que puede ser llamado desde varios programas diferentes simultáneamente sin preocuparse por la coordinación entre ellos, o que puede llamarse recursivamente a sí mismo. [10] : 30 Esto hace que la construcción de sistemas operativos sea mucho más fácil; el sistema operativo tenía su propia pila, y el procesador podía cambiar rápidamente entre una aplicación de usuario y el sistema operativo simplemente cambiando el puntero de pila que estaba usando. Esto también hace que el servicio de interrupciones sea mucho más fácil por la misma razón. [11] : 4 El 6809 agrega una interrupción de solicitud de interrupción rápida (FIRQ) que guarda solo el contador de programa y el registro de código de condición antes de llamar al código de interrupción, mientras que la interrupción IRQ guarda todos los registros, tomando ciclos adicionales, y luego más para desenrollar la pila al salir. [11] : 1.9
El 6809 incluye uno de los primeros multiplicadores de hardware dedicados. [10] : 36 Toma números de 8 bits en los acumuladores A y B y produce un resultado en A:B, conocido colectivamente como D. [11] : 1.1
Gran parte del diseño se había basado en el concepto de mercado de código de bloques de construcción. Pero el mercado de módulos ROM prefabricados nunca se materializó: el único ejemplo lanzado por Motorola fue la ROM de punto flotante MC6839. La industria en su conjunto resolvió el problema de integrar módulos de código de fuentes separadas mediante el uso de enlazadores y cargadores de reubicación automática , que es la solución que se utiliza en la actualidad. [12] Sin embargo, las decisiones tomadas por el equipo de diseño permitieron sistemas operativos multiusuario y multitarea como OS-9 y UniFlex .
Las características añadidas del 6809 eran costosas; la CPU tenía aproximadamente 9.000 transistores en comparación con los 4.100 del 6800 o los 3.500 del 6502. Si bien las mejoras de proceso significaron que se podía fabricar a un menor precio que el 6800 original, esas mismas mejoras se estaban aplicando a los otros diseños y, por lo tanto, el costo relativo seguía siendo el mismo. Tal era el caso en la práctica; en 1981, el 6809 se vendió en cantidades unitarias por aproximadamente seis veces el precio de un 6502. [1] Para aquellos sistemas que necesitaban algunas de sus características especiales, como el multiplicador de hardware, el sistema podía justificar su precio, pero en la mayoría de los casos, se pasaba por alto.
Otro factor que influyó en su bajo uso fue la presencia de nuevos diseños con prestaciones significativamente superiores, entre los que se encontraba el Intel 8086 , lanzado el mismo año, y su versión de menor coste, el Intel 8088 de 1979. Una idea del problema se puede ver en los resultados del lenguaje ensamblador Byte Sieve frente a otros diseños comunes de la época (tomados de 1981 [13] y 1983 [14] ):
Procesador | Artículos de segunda clase | Total de relojes (millones) |
---|---|---|
6502 1 MHz | 13.9 | 13.9 |
Z80 4 MHz | 6.8 | 27.2 |
6809 2 MHz | 5.1 | 10.2 |
8086 8 MHz | 1.9 | 15.2 |
68000 8 MHz | 0,49 | 3.92 |
Aunque el 6809 ofrecía una mejora en el rendimiento en comparación con modelos como el 6502 [c] y el Z80, la mejora no estaba en línea con el aumento de precio. Para aquellos en los que el precio no era la preocupación principal, sino el rendimiento en sí, los nuevos diseños lo superaban en un orden de magnitud .
Incluso antes de que saliera al mercado el 6809, en 1976 Motorola había lanzado su propio proyecto de CPU avanzada, conocido entonces como proyecto Motorola Advanced Computer System on Silicon o MACSS. Aunque era demasiado tarde para ser elegido para el proyecto IBM PC , cuando MACSS apareció como Motorola 68000 en 1979, despertó el interés restante en el 6809. Motorola pronto anunció que sus futuros sistemas de 8 bits funcionarían con versiones reducidas del 68000 en lugar de versiones mejoradas del 6809.
Su primer uso importante fue en la computadora a color TRS-80 , lo que sucedió en gran parte por accidente. A Motorola se le había pedido que diseñara una terminal de computadora con capacidad para reproducir colores para un proyecto de ayuda agrícola en línea, un sistema conocido como "AgVision". Tandy ( Radio Shack ) fue contratado como socio minorista y los vendió bajo el nombre de "VideoTex", pero el proyecto finalmente se canceló poco después de su introducción en 1980. [15] Luego, Tandy reelaboró el diseño para producir una computadora doméstica , que se convirtió en uno de los logros de diseño más notables del 6809. [16]
En busca de una plataforma de programación de bajo costo para estudiantes de informática , la Universidad de Waterloo desarrolló un sistema que combinaba una computadora en tarjeta basada en 6809 con una PET de Commodore existente , incluyendo varios lenguajes de programación y editores de programas en ROM. El resultado fue posteriormente adoptado por Commodore, que lo vendió como SuperPET o MicroMainframe en Europa. Estos fueron relativamente populares a mediados de la década de 1980 antes de que la introducción del mercado de clones de PC asumiera el papel de la programación para la mayoría de los usuarios.
Otros usos populares de las computadoras domésticas incluyen la Fujitsu FM-7 , la Canon CX-1, la Dragon 32/64 y la serie Thomson TO7 . También estaba disponible como una opción en las computadoras Acorn System 2 , 3 y 4. La mayoría de los diseños de bus SS-50 que se habían construido alrededor del 6800 también tenían opciones para el 6809 o cambiaron a él exclusivamente. Los ejemplos incluyen máquinas de SWTPC , Gimix , Smoke Signal Broadcasting , etc. Motorola también construye una serie de sistemas de desarrollo EXORmacs y EXORset.
Hitachi produjo sus propias máquinas basadas en el 6809, la MB-6890 y más tarde la S1. Estas máquinas estaban destinadas principalmente al mercado japonés, pero algunas se exportaron y vendieron en Australia , donde la MB-6890 recibió el nombre de "Peach", probablemente en referencia al Apple II . La S1 se destacó por contener hardware de paginación que ampliaba el rango de direccionamiento nativo de 64 kilobytes del 6809 a 1 megabyte completo en páginas de 4 KB. En esto era similar a las máquinas producidas por SWTPC, Gimix y varios otros proveedores. TSC produjo un sistema operativo similar a Unix, uniFlex, que se ejecutaba solo en dichas máquinas. OS-9 Level II también aprovechó estas funciones de administración de memoria. La mayoría de las otras computadoras de la época con más de 64 KB de direccionamiento de memoria estaban limitadas a la conmutación de bancos, donde gran parte, si no la totalidad, de los 64 KB se intercambiaban simplemente por otra sección de memoria, aunque en el caso del 6809, Motorola ofreció su propio diseño de MMU MC6829 que mapeaba 2 megabytes en páginas de 2 KB. [17]
El 6809 también se utilizó en varios sistemas de videojuegos . Entre ellos, destacable en la encarnación 68A09, la exclusiva máquina de videojuegos doméstica Vectrex basada en gráficos vectoriales . También se utilizó en el sistema Milton Bradley Expansion (MBX) (una consola arcade para la computadora doméstica TI-99/4A ) y en una serie de juegos arcade lanzados a principios y mediados de la década de 1980. Williams Electronics fue un usuario prolífico del procesador, que se implementó en Defender , Stargate , Joust , Robotron: 2084 , Sinistar y otros juegos. La CPU 6809 forma el núcleo del exitoso Williams Pinball Controller . El KONAMI-1 es un 6809 modificado utilizado por Konami en Roc'n Rope , Gyruss y Los Simpsons . [18]
La serie II del Fairlight CMI (instrumento musical informático) utilizaba dos CPU 6809 con sistema operativo OS-9 y también utilizaba una CPU 6809 por tarjeta de voz. El 6809 se empleaba a menudo en sintetizadores musicales de otros fabricantes, como Oberheim ( Xpander , Matrix 6/12/1000 ), PPG (Wave 2/2.2/2.3, Waveterm A) y Ensoniq ( sampler Mirage , SDP-1, ESQ-1 , SQ-80 ). Este último utilizaba el 6809E como CPU principal. La versión (E) se utilizaba para sincronizar el reloj del microprocesador con el chip de sonido (Ensoniq 5503 DOC) en esas máquinas; en el ESQ-1 y el SQ-80 se utilizaba el 68B09E, que requería una lógica de arbitraje dedicada para garantizar una temporización de bus de 1 MHz al acceder al chip DOC.
A diferencia de los productos Motorola anteriores, el 6809 no se utilizó ampliamente en el campo de los microcontroladores . Se utilizó en controladores de señales de tráfico fabricados en la década de 1980 por varios fabricantes diferentes [19] , así como en los controladores centrales troncalizados SMARTNET y SMARTZONE de Motorola (denominados así "controlador 6809"). Estos controladores se utilizaron como procesadores centrales en muchos de los sistemas de comunicaciones por radio bidireccionales troncalizados de Motorola. [20]
Mitel utilizó el 6809 como procesador principal en su sistema telefónico de oficina SX20.
El Motorola 6809 se fabricó originalmente en velocidades de 1 MHz, 1,5 MHz (68A09) y 2 MHz (68B09). Hitachi produjo versiones más rápidas más tarde. Con poco que mejorar, el 6809 marca el final de la evolución de los procesadores de 8 bits de Motorola; Motorola pretendía que los futuros productos de 8 bits se basaran en una versión de bus de datos de 8 bits del 68000 (el 68008 ). Una versión de microcontrolador con un conjunto de instrucciones ligeramente modificado, el 6811 , se dejó de fabricar en la segunda década del siglo XXI.
El Hitachi 6309 es una versión mejorada del 6809 con registros e instrucciones adicionales, que incluyen movimiento de bloques, instrucciones de multiplicación adicionales y división.
Motorola escindió su división de microprocesadores en 2004. La división cambió su nombre a Freescale y posteriormente fue adquirida por NXP .
Ni Motorola ni Hitachi producen más procesadores 6809 o derivados. Los núcleos 6809 están disponibles en VHDL y se pueden programar en un FPGA y utilizar como procesador integrado con índices de velocidad de hasta 40 MHz. [ cita requerida ] Algunos códigos de operación 6809 también siguen vivos en los procesadores integrados de Freescale . En 2015, Freescale autorizó a Rochester Electronics a comenzar a fabricar el MC6809 una vez más como reemplazo directo y copia del dispositivo NMOS original. Freescale proporcionó a Rochester la base de datos de diseño físico GDSII original . A fines de 2016, el MC6809 de Rochester (incluidos el MC68A09 y el MC68B09) está completamente calificado y disponible en producción.
El desarrollador australiano John Kent ha sintetizado la CPU Motorola 6809 en lenguaje de descripción de hardware (HDL). [21] Esto ha hecho posible el uso del núcleo 6809 a velocidades de reloj mucho más altas que las disponibles con el 6809 original. CoCo3FPGA de Gary Becker ejecuta el núcleo Kent 6809 a 25 MHz. [22] Matchbox CoCo de Roger Taylor funciona a 7,16 MHz. CoCoDEV de Dave Philipsen funciona a 25 MHz. [23]
El diseño interno del 6809 se acerca más a los diseños de CPU más simples, sin microcodificación . Como la mayoría de los microprocesadores de 8 bits, la implementación del 6809 es una máquina de nivel de transferencia de registros , que utiliza un PLA central para implementar gran parte de la decodificación de instrucciones, así como partes de la secuenciación.
Al igual que el 6800 y el 6502, el 6809 utiliza un reloj de dos fases para controlar los pestillos. Este ciclo de reloj de dos fases se utiliza como un ciclo de máquina completo en estos procesadores. Las instrucciones simples se pueden ejecutar en tan solo dos o tres de estos ciclos. El 6809 tiene un generador de reloj de dos fases interno (que solo necesita un cristal externo), mientras que el 6809E necesita un generador de reloj externo. Existen variantes como el 68A09(E) y el 68B09(E); la letra interna indica la velocidad de reloj nominal del procesador.
El sistema de reloj del 6800, 6502 y 6809 difiere de otros procesadores de la época. Por ejemplo, el Z80 utiliza un solo reloj externo y los pasos internos del proceso de instrucción continúan en cada transición. Esto significa que el reloj externo generalmente funciona mucho más rápido; los diseños 680x generalmente funcionaban a 1 o 2 MHz, mientras que el Z80 generalmente funcionaba a 2 o 4. Internamente, el 680x dividía la frecuencia del reloj externo por cuatro para crear el reloj del sistema; por lo tanto, un 6809 de 1 MHz tendría un cristal o señal de reloj de 4 MHz. Por lo general, en una base de instrucción por instrucción, funcionaban aproximadamente el doble de rápido, al comparar los relojes externos con otros microprocesadores.
La ventaja del acceso al estilo 680x era que los chips de RAM dinámica de la época generalmente funcionaban a 2 MHz. Debido a la sincronización del ciclo, había períodos del reloj interno en los que se garantizaba que el bus de memoria estaba libre. Esto permitía al diseñador de computadoras intercalar el acceso a la memoria entre la CPU y un dispositivo externo, por ejemplo, un controlador de acceso directo a memoria o, más comúnmente, un chip gráfico . Al ejecutar ambos chips a 1 MHz y hacerlos funcionar uno después del otro, podían compartir el acceso a la memoria sin ninguna complejidad o circuito adicional. Dependiendo de la versión y el grado de velocidad, aproximadamente el 40-60% de un solo ciclo de reloj suele estar disponible para el acceso a la memoria en un 6800, 6502 o 6809.
El 6800 original incluía dos acumuladores de 8 bits , A y B, un único registro de índice de 16 bits , X, un contador de programa de 16 bits, PC, un puntero de pila de 16 bits , SP, y un registro de estado de 8 bits . El 6809 añadió un segundo registro de índice, Y, un segundo puntero de pila, U (aunque renombró el original S), y permitió que los registros A y B se trataran como un único acumulador de 16 bits, D. También añadió otro registro de 8 bits, DP, para establecer la dirección base de la página directa. Estas adiciones eran invisibles para el código 6800, y el 6809 era 100% compatible en código fuente con el código anterior. [11] : 1.1
Otra adición significativa fue el direccionamiento relativo al contador del programa para todas las instrucciones de manipulación de datos. Esta fue una adición clave para el código independiente de la posición , ya que permite hacer referencia a los datos en relación con la instrucción, y siempre que exista la ubicación de memoria resultante, las instrucciones se pueden mover en la memoria libremente. El sistema también mantuvo sus modos de direccionamiento anteriores, aunque en el nuevo lenguaje ensamblador , lo que antes eran instrucciones separadas ahora se consideraban modos de direccionamiento diferentes en otras instrucciones. Esto redujo el número de instrucciones de las 78 instrucciones del 6800 a las 59 del 6809. Estos nuevos modos tenían los mismos códigos de operación que la instrucción previamente separada, por lo que estos cambios solo eran visibles para el programador que trabajaba en el nuevo código. [11] : 1.2
El conjunto de instrucciones y el complemento de registros son altamente ortogonales , lo que hace que el 6809 sea más fácil de programar que sus contemporáneos. Al igual que el 6800, el 6809 incluye una instrucción de prueba de bus de direcciones no documentada que llegó a ser apodada Halt and Catch Fire (HCF) . [24] [25]