Les processeurs motorola

 

Avant-Propos

     L’évolution des microprocesseurs a été, depuis leur création quelque peu anecdotique, fulgurante. Elle a connu l’euphorie de la jeunesse avec le foisonnement des nouveaux produits. Elle a connu des périodes d’interrogation avec la remise en cause de l’architecture. Elle connaît une période de maturité relative avec la stabilisation de quelques grands concepts (mais cette maturité, ou du moins la stabilité qui en découle, est, selon toute évidence, un état provisoire). Les premiers produits ont ouvert des horizons nouveaux qui ont justifié la profusion. Intel, Motorola, Rockwell, Zilog, Texas, NS, Fairchild et bien d’autres encore, se sont lancés à la conquête du marché. Certains sont devenus (dans le domaine général) marginaux, d’autres ont tout simplement abandonné, d’autres encore se sont spécialisés; deux géants se sont affrontés à coups d’avancées technologiques et d’annonces médiatiques, et ils ont proposé des produits d’un niveau de sophistication tel que l’on conçoit mal de les surpasser sans remettre en cause le principe. Nous avons atteint avec les processeurs Intel et Motorola, l’asymptote du concept CISC (Complex Instruction Set Computer).
     En observant l’évolution des processeurs Motorola depuis le 6800 jusqu’au 68030, et l’évolution parallèle des microcontrôleurs, nous allons tenter de comprendre comment fonctionne le coeur d’une application industrielle. Ce document peut être, à la fois un document de vulgarisation, et un manuel de mise en oeuvre, selon l’importance relative que chacun voudra bien apporter aux différents chapitres. Il est évident que le 6800 appartient au passé et il ne nous semble pas utile de développer son manuel de mise en oeuvre de façon aussi approfondie que celui du 68020 par exemple. Il n’en représente pas moins un point de départ, utile par sa simplicité.

Les composants que nous aborderons seront les suivants :
Pour les processeurs :

6800 - 6802
6809
68000
68020
68030

Pour les circuits de la périphérie :

PIA 6821
ACIA 6850
DUART 68681
USART

Pour les microcontrôleurs

6805
68HC11
68302
68331
68340

     Nous les aborderons plus avec l’oeil du programmeur qu’avec l’oeil de l’électronicien, le but étant avant tout d’en éclairer la philosophie et les caractéristiques d’utilisation.

Remarques concernant la typographie
     Pour faciliter la lecture nous adopterons des fontes de caractères associées à chaque type de paragraphe :
          Le texte courant sera imprimé en utilisant la fonte de caractère Arial.
          Les mots clés seront en caractère gras: Mot clé.
          Les algorithmes seront en Times New Roman Italique :
               Ceci est un exemple de typographie pour les algorithmes
          Les exemples en assembleur seront en gras :
               Ceci est un exemple de typographie pour l’assembleur

 

I- Introduction

A- Qu’est-ce qu’un microprocesseur CISC?

     Dans la foule des types de processeurs actuellement utilisés, les CISC sont apparus les premiers; ils ont comme principale caractéristique de mettre à disposition du programmeur un jeu d’instructions très développé et un choix de modes d’adressage important. C’est le processeur qui s’adapte aux besoins de l’algorithme et non l’inverse (comme ce sera le cas dans la famille RISC).
     On peut définir pour l’ensemble des CISC une architecture de communication (les liens avec l’environnement) et un modèle générique de programmation.

B- Architecture de Communication

1- Les signaux

      Le microprocesseur communique avec son environnement en échangeant avec lui des signaux électriques qui sont les représentations physiques de données binaires. Par exemple (et c’est un cas fréquent) le chiffre binaire 0 est représenté par le niveau électrique 0 V (la ligne électrique correspondante est mise à la masse) et le chiffre binaire 1 est représenté par le niveau électrique 5 V (par rapport à la masse). Le processeur échange des données codées sur n bits, il a donc besoin de faire appel à n lignes électriques pour les véhiculer, ces lignes constituent un ensemble cohérent appelé le bus de données. Nous utiliserons désormais le terme bus pour désigner un ensemble cohérent (pouvant se réduire à 1) de lignes électriques. Le nombre n caractérise ce que l’on a coutume d’appeler la « taille du microprocesseur ». Les données peuvent être envoyées par le processeur vers un périphérique, ou lues par le processeur, en provenance du périphérique; le bus de données est donc bidirectionnel. Toute donnée transite par ce bus unique, le nombre de périphériques qui s’y connecte n’est pas limité. A un instant donné un échange s’opère entre le processeur et un seul d’entre eux, les autres ne doivent pas perturber cet échange, ils doivent donc être déconnectés ou considérés comme tels. 

     Il est évident que les interrupteurs de la figure 1 I-B-1 ne peuvent être qu’électroniques. La déconnexion s’effectue en insérant une impédance très élevée, rendant négligeable le courant circulant dans le brin concerné. Toute borne raccordée au bus doit donc être capable de se mettre en haute impédance.
     Le processeur échange tout périphérique en le considérant comme un emplacement en mémoire. Pour définir quel est l’emplacement avec lequel il dialogue, le processeur doit en fournir l’adresse. L’adresse est unique (tout du moins en première approche), ce qui signifie qu’à une combinaison binaire unique, présente sur le bus d’adresse, un seul emplacement quitte l’état de haute impédance.Figure 2 (I-B-1)

     L’ensemble constitué par le bus de données et le bus d’adresse ne suffit pas à caractériser les échanges de façon complète. En particulier il ne permet pas de définir le sens de l’échange. Un troisième vus appelé bus de contrôle assure le contrôle directionnel, temporel et événementiel des échanges. Au fur et à mesure de l’évolution des microprocesseurs ce bus a pris une importance de plus en plus grande. La fonction directionnelle étant binaire, une ligne suffit à la définir. La fonction temporelle sert essentiellement à synchroniser le processeur et le périphérique avec lequel il dialogue; plusieurs lignes lui sont en général réservées. La fonction événementielle sert à attirer l’attention du processeur sur un périphérique dont l’état vient de changer. Si le processeur engage le dialogue avec ce dernier, il mettra en place un protocole nécessitant souvent plusieurs lignes.
     Un périphérique peut n’être relié qu’à quelques unes des lignes de contrôle (par exemple une mémoire n’est pas susceptible de générer une situation événementielle).
     L’architecture de communication est donc définie par les trois bus et paramétrée par la taille des deux premiers et la nature des signaux du troisième.
Figure 3 (I-B-1) Architecture de communication

2- Le système à microprocesseur

     Un système est une combinaison entre un microprocesseur et divers périphériques. La description de son fonctionnement est faite dans un programme. On distingue deux types de programmes :

Le programme général définissant, entre autres, le fonctionnement des périphériques, qui est figé. Il peut éventuellement contenir la définition des modes d’appel ou de chargement des programmes non liés intrinsèquement à la machine.
Le programme applicatif qui caractérise l’application en cours de fonctionnement sur la machine.

     Pour essayer d’apporter à ces définitions un aspect concret on peut s’appuyer sur l’exemple du micro ordinateur qui, lors de sa mise sous tension va exécuter un programme (intrinsèquement lié au matériel)qui notamment initialise tous les périphériques (et en particulier le contrôleur de disque), ensuite il va charger, depuis le disque, un système d’exploitation ou bien attendre une information de la part de l’utilisateur pour choisir le système d’exploitation à charger. Le premier programme cité est figé, le second est libre.
     Un programme réside dans une mémoire. A chaque type de programme correspond un type de mémoire. Le programme figé est hébergé par une mémoire morte; celle-ci a été programmée de façon définitive, dès qu’elle est alimentée on peut en lire le contenu, celui-ci est immuable. Le programme que l’on va charger pour une application donnée, et ce par tout moyen à disposition du programmeur, est, lui, hébergé dans une mémoire vive qui, lors de sa mise sous tension, a un contenu aléatoire, et qui conserve les éléments qu’on y écrit tant que l’on n’écrit rien d’autre à la place et que l’on maintient son alimentation électrique. On désigne par ROM (Read only memory) la mémoire morte (ou figée) et par RAM (Random access memory) la mémoire vive.
     L’application a besoin de stocker pour une durée au plus égale à son temps d’exécution, des données relatives aux traitements en cours, c’est bien sur dans la mémoire vive qu’elle effectuera ces stockages.
     Le monde extérieur interagit avec l’application en lui envoyant des stimuli (données) et en en recevant d’elle. Le micro ordinateur reçoit des données du clavier, des liaisons série, du contrôleur de disque, et en émet vert les liaisons série, l’écran, le contrôleur de disque, entre autres. Il faut une adaptation électrique formelle et temporelle qui est réalisée par les circuits appelés génériquement Interfaces d’entrée/sortie (on utilise également l’abréviation anglo-saxonne IO qui signifie Input Output).
     Trois types de circuits constituent donc l’environnement applicatif du microprocesseur, ils sont tous reliés, au moins partiellement, au trois bus.
Figure 4 (I-B-2) Système à microprocesseur

C- Le modèle générique de programmation

La programmation est une succession d’appels d’instructions auxquelles on attribue des opérandes :
Instruction Opérande1, Opérande2, ..., Opérande n
     Une instruction est un micro câblage électronique combinatoire dans le microprocesseur, qui délivre en sortie des signaux dépendants des signaux placés à l’entrée. Les entrées sont précisées dans les termes d’opérandes, la destination de la sortie également. L’ensemble des câblages d’instructions est regroupé dans la partie du processeur que l’on nomme l’ALU (Arithmétic and logic unit). Une instruction est repérée par un code que l’on peut considérer en première approximation comme la localisation ligne-colonne du câblage de l’instruction considérée dans L’ALU.

Figure 5 (I-C-1) Structure de l'ALU

     L’exécution d’une instruction fait appel, soit à des données venant d’un périphérique, soit à des résultats intermédiaires (issus d’un calcul précédent). Un processeur CISC possède un unique bus de données, il ne peut donc effectuer l’opération suivante :
     Additionner le contenu de la mémoire d’adresse 100 avec le contenu de l’interface de clavier et mettre le résultat dans l’interface d’écran
     Il lui faudrait, pour pouvoir faire cela, voir simultanément trois emplacements, or il n’en voit qu’un par l’intermédiaire de son bus de données. Il utilise pour résoudre ce problème une mémoire interne qu’on appelle Registre de données. L’instruction ci-dessus est alors décomposée de la manière suivante :
     Transférer le contenu de la mémoire d’adresse 100 dans le registre de données
     Additionner le contenu de l’interface clavier au registre de données
    Copier le contenu du registre de données dans l’interface écran

Un processeur peut posséder plusieurs registres de données.
Supposons maintenant que l’on veuille programmer l’algorithme suivant :

POUR i=2000 A 2100 FAIRE
Copier le contenu de l’adresse i dans l’adresse i+1000
FINFAIRE

     La boucle contient deux définitions d’adresses variables, il est donc nécessaire de pouvoir effectuer le calcul d’une adresse. Dans ce cas l’adresse ne peut pas figurer dans le programme. Celui-ci doit en revanche fournir au processeur le moyen de calculer l’adresse. Pour effectuer le calcul on se place dans un Registre d’adresse.
     Un registre d’adresse présente en outre un avantage certain dans un dialogue avec un périphérique (sous réserve que l’on dispose d’un nombre suffisant de registres d’adresse). Le fait d’affecter à un registre l’adresse du périphérique permet de ne plus avoir besoin d’aller lire l’adresse dans le programme, mais en interne, ce qui constitue un gain de temps appréciable. Vous pouvez comparer le fonctionnement du microprocesseur à votre propre fonctionnement, il est plus rapide d’utiliser une donnée que vous avez en tête que d’aller lire cette donnée dans un livre. Par exemple sur un 68000 on consommera 12 cycles d’horloge pour générer une adresse fournie par le programme, alors qu’une adresse contenue dans un registre d’adresse sera générée en 8 cycles. Il s’agit de registres d’adresse d’usage général, mais le processeur contient également, comme nous allons le voir, des registres d’adresse spécialisés. Ces registres sont de deux types. Un registre unique est appelé Pointeur de programme. Il set à localiser dans la mémoire programme la prochaine instruction à exécuter. La fonction attribuée à l’autre type de registre spécialisé (qui lui n’est pas nécessairement unique) peut se comprendre à l’aide de l’analogie suivante :
     Un employé du bureau d’études est entrain d’effectuer un calcul lorsque son téléphone sonne. Bien sur cet employé ne note pas toutes les étapes de son calcul, il fait appel à sa mémoire. Toutefois s’il répond au téléphone, il ne retiendra pas tout ce qui concerne le calcul et qu’il avait en tête au moment de l’appel; il est fort probable même qu’il ne saura plus à quel stade du calcul il s’était arrêté. Il va donc, avant de décrocher, noter sur son bloc notes tout ce qui lui permettra de reprendre le calcul, et comme le bloc notes est vaste, il va prendre la précaution de noter dans un emplacement unique qu’il connaît (dans le creux de sa main par exemple), à quel endroit sur le bloc-notes sont inscrites ces informations. Il peut maintenant répondre au téléphone en toute sécurité. Au retour il lira dans le creux de sa main l’emplacement de la sauvegarde et pourra ainsi reprendre son calcul.
     Le microprocesseur possède de la mémoire interne (les registres de données et d’adresse dont nous avons déjà parlé). Si un événement le conduit à se dérouter pour traiter un programme relatif à un périphérique, il va utiliser ces registres, il faut donc les sauvegarder auparavant. Il faut aussi sauvegarder le contenu du pointeur de programme qui correspond à la prochaine instruction dans le programme interrompu. Tout cela est sauvegardé dans la mémoire vive, dans une zone réservée à cet usage, appelée la pile. L’adresse de sauvegarde dans la pile est elle-même sauvée dans le registre appelé Pointeur de pile. Sans un tel registre un microprocesseur est incapable de traiter de interruptions et des sous-programmes.
     Enfin un dernier registre est indispensable au fonctionnement. Il permet les prises de décisions associées aux ruptures de conditionnelles séquence.
     L’algorithme suivant représente un cas de prise de décision :

SI condition rempli ALORS
Effectuer traitement 1
SINON
Effectuer traitement 2
FINSI

     Les opérateurs d’évaluation des conditions sont du type <, >, =, >0, <0, etc... Le Status contient des témoins de résultats d’évaluation que l’on va pouvoir tester pour décider de la poursuite en séquence ou de la rupture. Prenons comme exemple l’un de ces témoins (en anglais flag) présent dans tous les microprocesseurs, c’est le témoin de zéro Z. Chaque opération positionne Z.
Copier le contenu d’une adresse dans un registre
positionne Z à 1 si le contenu de l’adresse recopiée est 0.
Soustraire une valeur d’un registre
positionne Z à 1 si le résultat de la soustraction est 0. Dès lors il nous est possible de comparer une valeur calculée (dans un registre) à une autre valeur.
Effectuer un calcul dans un registre
Soustraire la valeur 100 au contenu du registre
SI Z=1 ALORS
Effectuer Traitement 1
SINON
Effectuer traitement 2
FINSI
     Bien sur il faudra décomposer la structure SI en instructions supportées par le processeur concerné. Par exemple les lignes suivantes utilisent un pseudo assembleur :
Brancher à Tr2 SI Z=0
<Traitement 1>
Brancher à FINSI
Tr2: <Traitement 2>
FINSI:
Le jeu d’indicateurs est plus ou moins riche selon le processeur.

      Nous pouvons maintenant donner le modèle générique d’un processeur CISC. Dans le schéma nous utilisons des couleurs différentes (et des densités différentes pour l’impression en noir et blanc) pour les différentes fonctions des éléments du processeur. Nous retrouverons ces couleurs et ces densités dans les schémas ultérieurs. (Figure 6)

 

 

 

 

 

 

 

D- La notion de Microcontrôleur

     L’objectif d’un microcontrôleur est de diminuer les interconnexions de circuits, sources de plus-values et de pannes. Pour cela on va intégrer sur la même puce de silicium le microprocesseur et un certain nombre de périphériques.
     Comme le microcontrôleur universel n’existe pas il est nécessaire de trouver un compromis, il est donc rare qu’une application d’un certain niveau se contente des périphériques internes du microcontrôleur, c’est néanmoins possible dans des applications comme l’électroménager ou la domotique, et dans les applications de très grande diffusion (par exemple les montres) pour lesquelles on n’hésitera pas à fabriquer le microcontrôleur sur mesures.
     Parmi les périphériques que l’on va intégrer on trouve :
             La mémoire RAM
             La mémoire ROM ou plus souvent OTPROM
             La mémoire EEPROM
             Des ports de liaisons parallèles
             Des ports de liaison série
             Des compteurs temporisateurs
             Des convertisseurs numériques analogiques et analogiques numériques
             Des contrôleurs de DMA
             Etc...

II- Les microprocesseurs CISC et les microcontrôleurs de Motorola

 

A- LES CISC

1- Le 6800

     Le premier né, le 6800 a une architecture très simple. Une ALU, deux registres de données sur 8 bits que l’on appelle les accumulateurs A et B, un registre d’adresse sur 16 bits que l’on appelle l’index X, un pointeur de pile sur 16 bits, un pointeur de programme sur 16 bits et un status sur 8 bits dont 6 utiles. Le rôle et le fonctionnement sera détaillé plus loin. L’architecture de communication repose sur :
             Un bus de données sur 8 bits (le processeur est dit « vrai 8 bits) car ses registres de données et sont bus de données sont tous sur 8 bits).
             Un bus d’adresse sur 16 bits.
             Un bus de contrôle comprenant les signaux suivants :

Phase d’horloge F 1
Phase d’horloge F 2
Reset
Interruption non masquable NMI
Arrêt HALT
Interruption masquable IRQ
Contrôle trois états TSC
Bus de données actif DBE
Bus disponible (micro en repli) BA
Adresse mémoire valide VMA
Lecture écriture R/W

     Le signal « Bus disponible » indique à la périphérie qu’un autre processeur peut prendre le contrôle du bus d’adresse. Cela se produit dans deux cas: la ligne HALT a été forcée à l’état actif (par celui qui veut prendre le contrôle) ou le processeur est en attente d’interruption (provoquée par la rencontre de l’instruction WAI). 

2- Le 6802

Il ne diffère du 6800 que par deux points :
            Il contient 128 octets de RAM interne adressée de $00 à $7F.
            Il possède un état de repli en faible consommation (sur batterie ou pile) dans lequel la RAM interne est maintenue.

3- Le 6809

Il réalise un progrès considérable par rapport au 6800. Son architecture interne se compose, vue par le programmeur, de :
             L’ALU
             Un registre de données sur 16 bits pouvant être utilisé comme deux registres sur 8 bits, assurant la compatibilité avec le 6800. On appelle le registre de 16 bits l’accumulateur D et ses deux moitiés l’accumulateur A (octet fort) et l’accumulateur B (octet faible).
             Deux registres d’adresse d’usage général sur 16 bits appelés les index X et Y.
             Un registre d’adresse sur 16 bits pouvant être utilisé soit en usage général, soit comme pointeur de pile.
             Un pointeur de pile dédié sur 16 bits.
             Un pointeur de programme sur 16 bits.
             Un status sur 8 bits tous utilisés.

Son architecture de communication repose sur
             Un bus de données sur 8 bits. On dit de ce fait que le 6809 est un 8/16 bits car il communique sur 8 bits mais travaille en interne sur 16 bits.
             Un bus d’adresse sur 16 bits.
             Un bus de contrôle comprenant, outre les signaux déjà cités sur le 6800 :

Une ligne supplémentaire d’état du bus BS qui combinée avec BA permet de distinguer quatre états.
Une demande d’interruption rapide FIRQ
Une ligne de synchronisation pour les mémoires lentes
Une ligne de requête d’accès externe mémoire DMA

     Les processeurs 6800 6802 et 6809 sont synchrones, c’est à dire que les périphériques doivent se synchroniser sur les signaux délivrés par le microprocesseur. La seule entorse possible est la possibilité d’allonger le cycle du 6809 pour le synchroniser sur une mémoire lente.

3- Le 68000

     Le concept change radicalement, il n’y a plus de compatibilité avec les processeurs antérieurs.
Son modèle de programmation comporte
             L’ALU
             Huit registres de données sur 32 bits (utilisables également sur 16 ou 8 bits)
             Sept registres d’adresse sur 32 bits (dont 24 seulement sont utilisables)
             Deux pointeurs de pile sur 32 bits (dont 24 seulement sont utilisables)
             Un pointeur de programme sur 32 bits (dont 24 seulement sont utilisables)
             Un status sur 16 bits
L’architecture de communication repose sur :
             Un bus de données sur 16 bits (le 68000 est donc un processeur 16/32 bits)
             Un bus d’adresse sur 23 bits permettant d’adresser 223 unités de données, comme les unités vues par le bus de données sont des mots de 16 bits on adresse en fait 224 octets.
             Un bus de contrôle dont les signaux se décomposent en six familles :

- Etat du processeur FC0 FC1 FC2
- Contrôle des périphériques synchrones E VMA VPA
- Contrôle du système Reset Halt BERR
- Contrôle des requêtes d’interruption IPL0 IPL1 IPL2
- Contrôle de l’arbitrage d’accès au bus BR BG BGACK
- Contrôle des dialogues asynchrones AS R/W UDS LDS DTACK

Tout cela sera revu en détail ultérieurement.
     Le processeur est asynchrone, il peut donc se caler sur la vitesse du périphérique avec lequel il dialogue. C’est le premier à posséder une architecture utilisateur / superviseur qui permet de protéger un système d’exploitation des accès intempestifs d’une application. Cette architecture a permis il y a déjà de nombreuses années, deux systèmes d’exploitation robustes, l’un pour la bureautique, le MAC OS (système d’exploitation du premier Mac Intosh) l’autre pour l’industrie, OS9.

4- Le 68010

     Il est passé quelque peu inaperçu alors qu’il apporte par rapport au 68000 des fonctionnalités intéressantes.
Son modèle de programmation comporte trois registres nouveaux par rapport au 68000 :

Un registre de Base Vecteur (VBR) qui définit l’adresse de base de la table des vecteurs d’exception. Ce registre initialisé en 0 est accessible au programmeur. La notion de vecteur sera abordée plus loin. En première approximation un vecteur est un emplacement contenant l’adresse du programme associé à chacune des exceptions (les interruptions par exemple).
Les registres de transfert entre espaces (SFC, DFC) qui sont liés à l’existence des modes utilisateur et superviseur. La encore nous abordons un domaine un peu délicat à expliquer actuellement. Il est possible d’utiliser l’état du processeur pour décoder des adresses de blocs de mémoire, ainsi on peut dire: dans l’état utilisateur l’adresse 1000 est dans un certain pavé de mémoire, dans l’état superviseur elle se trouve dans un autre pavé, l’utilisateur ne peut donc pas voir la mémoire réservée au système d’exploitation. Mais si le système d’exploitation qui a lui tous les droits veut lire des données dans l’espace utilisateur et le recopier dans son propre espace, il doit indiquer dans les registres appropriés à quel espace appartient l’adresse à laquelle il accède faute de quoi il n’accède qu’à son propre espace.

L’architecture de communication est identique à celle du 68000.

5- Le 68020

     C’est un nouveau bond en avant qui est effectué, mais la compatibilité avec le 68000 reste assurée.
Au modèle de programmation du 68010 on ajoute
             Un troisième pointeur de pile
             Deux registres pour contrôler et adresse la mémoire cache.
     L’architecture de communication comporte les même grandes parties mais chacune d’elle est considérablement enrichie.
             Le bus de données est sur 32 bits, le 68020 est donc un vrai 32 bits.
             Le bus d’adresse est sur 32 bits.
             Le bus de contrôle possède beaucoup plus de fonctionnalités pour le contrôle du bus asynchrone.
     La nouveauté repose sur la possibilité de gérer de la mémoire cache, la richesse des modes d’adressage, le registre à barillet qui supprime une contrainte propre au 68000 et les algorithmes internes accélérant les traitements. De plus un nouvel état apparaît. Là ou le 68000 connaissait un état utilisateur et un état superviseur, le 68020 connaît un état utilisateur, un état interruption et un état maître. Ces trois états sont hiérarchisés.

 6- Le 68030

     Il apporte par rapport au 68020 une unité de gestion de mémoire paginée (PMMU) intégrée, un bus synchrone, et une mémoire cache de données interne de 256 octets.
     Ceci concerne la partie visible pour le programmeur. Mais une autre nouveauté invisible celle là apporte des accélérations importantes dans les traitements. Alors que presque tous les CISC ont une architecture Von Neumann, le 68030 a quand à lui une architecture Harvard, c’est à dire en première approximation qu’il accepte un certain parallélisme interne cachant des temps d’exécution (on peut faire simultanément une lecture un calcul et une écriture).
     Son modèle de programmation comporte les mêmes éléments que le 68020 augmentés du registre de contrôle de mémoire paginée et du registre d’adressage de cette même mémoire paginée.

7- Evolution du modèle de programmation

Les schémas des figure 7 et 8 présentent les modèles de tous les processeurs présentés. 

Figure 7 (II-A-7) 6800 6802 6809 68000 68010

Figure 8 (II-A-7) 68020 68030

 

Copyright © 1998 - Tous droits réservés TI-92 Plus
ti92plus@iname.com