Les processeurs motorola
Avant-Propos
Lévolution des microprocesseurs a
été, depuis leur création quelque peu anecdotique, fulgurante. Elle a connu
leuphorie de la jeunesse avec le foisonnement des nouveaux produits. Elle a connu
des périodes dinterrogation avec la remise en cause de larchitecture. 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 dautres encore, se sont lancés à la conquête du marché.
Certains sont devenus (dans le domaine général) marginaux, dautres ont tout
simplement abandonné, dautres encore se sont spécialisés; deux géants se sont
affrontés à coups davancées technologiques et dannonces médiatiques, et
ils ont proposé des produits dun niveau de sophistication tel que lon
conçoit mal de les surpasser sans remettre en cause le principe. Nous avons atteint avec
les processeurs Intel et Motorola, lasymptote du concept CISC (Complex
Instruction Set Computer).
En observant lévolution des processeurs Motorola depuis le
6800 jusquau 68030, et lévolution parallèle des microcontrôleurs, nous
allons tenter de comprendre comment fonctionne le coeur dune application
industrielle. Ce document peut être, à la fois un document de vulgarisation, et un
manuel de mise en oeuvre, selon limportance 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 nen 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 loeil du
programmeur quavec loeil de lélectronicien, le but étant avant tout
den éclairer la philosophie et les caractéristiques dutilisation.
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 lassembleur
I- Introduction
A- Quest-ce quun 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 dinstructions très
développé et un choix de modes dadressage important. Cest le processeur qui
sadapte aux besoins de lalgorithme et non linverse (comme ce sera le cas
dans la famille RISC).
On peut définir pour lensemble des CISC une architecture
de communication (les liens avec lenvironnement) 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 cest 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 lon a coutume dappeler 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 sy connecte nest pas limité. A un instant donné un
échange sopère entre le processeur et un seul dentre 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 seffectue 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 lemplacement avec lequel il
dialogue, le processeur doit en fournir ladresse. Ladresse est unique (tout du
moins en première approche), ce qui signifie quà une combinaison binaire unique,
présente sur le bus dadresse, un seul emplacement quitte létat de
haute impédance. Figure 2
(I-B-1)
Lensemble constitué par le bus de
données et le bus dadresse 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 lattention 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 nest pas susceptible de
générer une situation événementielle).
Larchitecture 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 dappel ou de chargement des programmes non liés intrinsèquement à la
machine.
Le programme applicatif qui caractérise lapplication en cours de fonctionnement sur
la machine.
Pour essayer dapporter à ces
définitions un aspect concret on peut sappuyer sur lexemple 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
dexploitation ou bien attendre une information de la part de lutilisateur pour
choisir le système dexploitation à 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 quelle est
alimentée on peut en lire le contenu, celui-ci est immuable. Le programme que lon
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 quon y écrit tant que
lon nécrit rien dautre à la place et que lon 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.
Lapplication a besoin de stocker pour une durée au plus
égale à son temps dexécution, des données relatives aux traitements en cours,
cest bien sur dans la mémoire vive quelle effectuera ces stockages.
Le monde extérieur interagit avec lapplication en lui
envoyant des stimuli (données) et en en recevant delle. 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 dentrée/sortie (on utilise également
labréviation anglo-saxonne IO qui signifie Input Output).
Trois types de circuits constituent donc lenvironnement
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 dappels dinstructions
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 à lentrée. Les entrées sont précisées dans les termes
dopérandes, la destination de la sortie également. Lensemble des câblages
dinstructions est regroupé dans la partie du processeur que lon nomme
lALU (Arithmétic and logic unit). Une instruction est repérée par un code que
lon peut considérer en première approximation comme la localisation ligne-colonne
du câblage de linstruction considérée dans LALU.

Figure 5 (I-C-1) Structure de l'ALU
Lexécution dune instruction fait
appel, soit à des données venant dun périphérique, soit à des résultats
intermédiaires (issus dun calcul précédent). Un processeur CISC possède un
unique bus de données, il ne peut donc effectuer lopération suivante :
Additionner le contenu de la mémoire dadresse 100
avec le contenu de linterface de clavier et mettre le résultat dans
linterface décran
Il lui faudrait, pour pouvoir faire cela, voir
simultanément trois emplacements, or il nen voit quun par
lintermédiaire de son bus de données. Il utilise pour résoudre ce problème une
mémoire interne quon appelle Registre de données. Linstruction ci-dessus est
alors décomposée de la manière suivante :
Transférer le contenu de la mémoire dadresse 100
dans le registre de données
Additionner le contenu de linterface clavier au registre de
données
Copier le contenu du registre de données dans linterface écran
Un processeur peut posséder plusieurs registres de données.
Supposons maintenant que lon veuille programmer lalgorithme suivant :
POUR i=2000 A 2100 FAIRE
Copier le contenu de ladresse i dans ladresse i+1000
FINFAIRE
La boucle contient deux définitions
dadresses variables, il est donc nécessaire de pouvoir effectuer le calcul
dune adresse. Dans ce cas ladresse ne peut pas figurer dans le programme.
Celui-ci doit en revanche fournir au processeur le moyen de calculer ladresse. Pour
effectuer le calcul on se place dans un Registre dadresse.
Un registre dadresse présente en outre un avantage certain
dans un dialogue avec un périphérique (sous réserve que lon dispose dun
nombre suffisant de registres dadresse). Le fait daffecter à un registre
ladresse du périphérique permet de ne plus avoir besoin daller lire
ladresse 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 dutiliser une donnée que vous avez en tête que
daller lire cette donnée dans un livre. Par exemple sur un 68000 on consommera 12
cycles dhorloge pour générer une adresse fournie par le programme, alors
quune adresse contenue dans un registre dadresse sera générée en 8 cycles.
Il sagit de registres dadresse dusage général, mais le processeur
contient également, comme nous allons le voir, des registres dadresse
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 à lautre type de registre spécialisé (qui
lui nest pas nécessairement unique) peut se comprendre à laide de
lanalogie suivante :
Un employé du bureau détudes est entrain deffectuer
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 sil répond au
téléphone, il ne retiendra pas tout ce qui concerne le calcul et quil avait en
tête au moment de lappel; il est fort probable même quil 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 quil
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 lemplacement de la sauvegarde
et pourra ainsi reprendre son calcul.
Le microprocesseur possède de la mémoire interne (les registres
de données et dadresse 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. Ladresse 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.
Lalgorithme 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 lon va pouvoir tester pour décider de
la poursuite en séquence ou de la rupture. Prenons comme exemple lun de ces
témoins (en anglais flag) présent dans tous les microprocesseurs, cest le témoin
de zéro Z. Chaque opération positionne Z.
Copier le contenu dune adresse dans un registre
positionne Z à 1 si le contenu de ladresse recopiée est 0.
Soustraire une valeur dun 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 dindicateurs est plus ou moins riche selon le processeur.

Nous pouvons maintenant donner le
modèle générique dun processeur CISC. Dans le schéma nous utilisons des couleurs
différentes (et des densités différentes pour limpression 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
Lobjectif dun 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 nexiste pas il est
nécessaire de trouver un compromis, il est donc rare quune application dun
certain niveau se contente des périphériques internes du microcontrôleur, cest
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 nhésitera pas à fabriquer le microcontrôleur sur mesures.
Parmi les périphériques que lon 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 lon appelle les
accumulateurs A et B, un registre dadresse sur 16 bits que lon appelle
lindex 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. Larchitecture 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
dadresse sur 16 bits.
Un bus de
contrôle comprenant les signaux suivants :
Phase dhorloge F 1
Phase dhorloge 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 quun autre processeur peut prendre le contrôle du bus
dadresse. 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 dinterruption (provoquée par la rencontre de linstruction 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 :
LALU
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 laccumulateur D et
ses deux moitiés laccumulateur A (octet fort) et laccumulateur B (octet
faible).
Deux registres
dadresse dusage général sur 16 bits appelés les index X et Y.
Un registre
dadresse 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
dadresse 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 dinterruption rapide FIRQ
Une ligne de synchronisation pour les mémoires lentes
Une ligne de requête daccès externe mémoire DMA
Les processeurs 6800 6802 et 6809 sont
synchrones, cest à 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é
dallonger le cycle du 6809 pour le synchroniser sur une mémoire lente.
3- Le 68000
Le concept change radicalement, il ny a
plus de compatibilité avec les processeurs antérieurs.
Son modèle de programmation comporte
LALU
Huit registres de
données sur 32 bits (utilisables également sur 16 ou 8 bits)
Sept registres
dadresse 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
Larchitecture de communication repose sur :
Un bus de
données sur 16 bits (le 68000 est donc un processeur 16/32 bits)
Un bus
dadresse sur 23 bits permettant dadresser 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 dinterruption IPL0 IPL1 IPL2
- Contrôle de larbitrage daccè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. Cest le premier à posséder une
architecture utilisateur / superviseur qui permet de protéger un système
dexploitation des accès intempestifs dune application. Cette architecture a
permis il y a déjà de nombreuses années, deux systèmes dexploitation robustes,
lun pour la bureautique, le MAC OS (système dexploitation du premier Mac
Intosh) lautre pour lindustrie, OS9.
4- Le 68010
Il est passé quelque peu inaperçu alors
quil 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 ladresse de base
de la table des vecteurs dexception. 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 ladresse du programme associé à chacune des
exceptions (les interruptions par exemple).
Les registres de transfert entre espaces (SFC, DFC) qui sont liés à lexistence des
modes utilisateur et superviseur. La encore nous abordons un domaine un peu délicat à
expliquer actuellement. Il est possible dutiliser létat du processeur pour
décoder des adresses de blocs de mémoire, ainsi on peut dire: dans létat
utilisateur ladresse 1000 est dans un certain pavé de mémoire, dans létat
superviseur elle se trouve dans un autre pavé, lutilisateur ne peut donc pas voir
la mémoire réservée au système dexploitation. Mais si le système
dexploitation qui a lui tous les droits veut lire des données dans lespace
utilisateur et le recopier dans son propre espace, il doit indiquer dans les registres
appropriés à quel espace appartient ladresse à laquelle il accède faute de quoi
il naccède quà son propre espace.
Larchitecture de communication est identique à celle du 68000.
5- Le 68020
Cest 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.
Larchitecture de communication comporte les même grandes
parties mais chacune delle est considérablement enrichie.
Le bus de
données est sur 32 bits, le 68020 est donc un vrai 32 bits.
Le bus
dadresse 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 dadressage, 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, cest à dire en première approximation
quil accepte un certain parallélisme interne cachant des temps dexé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
dadressage 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
|