Le microprocesseur 6800 et kit MK6800 D2
Je reconstitue avec cette page un parcours initiatique à la pratique des microprocesseurs dans les années 70.
J'ai d'abord tourné autour d’articles de « Popular Electronics ». On y trouvait des sujets
présentant les premiers micro-ordinateurs en kit à base de microprocesseurs 8080 ou 6800. Par exemple, ceux de
la famille des « Altair ».
On trouvera sur cette
page Wikipedia un aperçu de l'histoire de cette revue et de son fondateur.Ci-contre, un extrait d’un n° de 1975.
Motorola proposera en 1976 un kit d’initiation, le MEK6800D2 qui est au centre de cette article. Les péripéties de la vie font que je ne possède plus ce matériel. Avant d'essayer d'en retrouver un exemplaire, j'essaye de rassembler documents et souvenirs.
Motorola proposera en 1976 un kit d’initiation, le MEK6800D2 qui est au centre de cette article. Les péripéties de la vie font que je ne possède plus ce matériel. Avant d'essayer d'en retrouver un exemplaire, j'essaye de rassembler documents et souvenirs.
A cette époque, j'ai eu la chance de fréquenter un club de passionnés qui disposaient
d'un local et d'un peu de matériel mis à disposition par le CNET. Cela se passait à Issy-les-Moulinaux près de Paris.
On y trouvait, un outil de développement : l'EXORCISER, permettant de produire un code pour le microprocesseur 6800.
Celui-ci comportait, aussi, un programmeur d'UVPROM permettant de créer ou modifier une ROM BIOS.
Ce type d'appareil est introuvable pour un prix raisonnable. Il sera remplacé par un PC/Intel sous MSDOS ou sous Linux ou MAC OS X sur lesquels on fera tourner un cross assembleur (logiciel Open Source).
Les programmeurs d'eprom valait une belle somme. Aujourd'hui, en passant par la Chine, on trouve pour un prix dérisoire le matériel nécessaire (voir plus bas).
Ce type d'appareil est introuvable pour un prix raisonnable. Il sera remplacé par un PC/Intel sous MSDOS ou sous Linux ou MAC OS X sur lesquels on fera tourner un cross assembleur (logiciel Open Source).
Les programmeurs d'eprom valait une belle somme. Aujourd'hui, en passant par la Chine, on trouve pour un prix dérisoire le matériel nécessaire (voir plus bas).
2. Le Kit d'initiation MEK6800D2 Motorola
La première démarche consiste à retrouver, sur Internet, les documentations fournies avec le kit MEK6800D2. Elles sont ici :
Ensuite, trouver un assembleur croisé c.a.d. tournant sur PC/intel et produisant du code 6800. On trouve sur le net les sources en langage C de tels assembleurs produisant du code pour les 6800, 01, 05, 09, 11. Il faut, une fois récupéré, exécuter ces sources sur le PC choisi (Mac, Lunix ou Windons)pour obtenir un exécutable adapté au PC utilisé.
- MEK 6800D2 Manual - Motorola
- M6800 Programming Reference Manual - Motorola
- M6800 Application Manual - Motorola
Ensuite, trouver un assembleur croisé c.a.d. tournant sur PC/intel et produisant du code 6800. On trouve sur le net les sources en langage C de tels assembleurs produisant du code pour les 6800, 01, 05, 09, 11. Il faut, une fois récupéré, exécuter ces sources sur le PC choisi (Mac, Lunix ou Windons)pour obtenir un exécutable adapté au PC utilisé.
- Une version tournant sous MSDOS/XP est disponible ici : ASM68-00-09-142.zip
- Une version tournant sous Mac OSX 10+ est disponible ici :XXXXXXXXXXXX
3. Description du Kit MEK6800D2 Motorola

- la carte CPU est au format Exorciser avec un bus système de 2x43 broches compatible avec le fond de panier Exorciser. elle est équipée de 2 bus périphériques,
- la carte d'interface équipée d'un mini-clavier, de 6 afficheurs hexadécimaux, d'une une interface Audio
qui permettait d'enregistrer et relire au standard était aussi connu comme la "norme BYTE".
Développé en 1975, il utilise un codage où un '0' est représenté par 4 cycles sinusoïdaux de 1200Hz et un '1' de 8 cycles de 2400Hz. Le débit de données est de 300 bits par seconde.
Ce dispositif fut utilisé dans les systèmes à base de S100, Acorn ATOM et bien d'autres

Enregistreur
Les blocs de code étaient encapsulés dans des trames au format S1/S9 Motorola. Le protocole
interface KansasCity et le format S1/S9 étaient au coeur de la mécanique. A cette époque, les logiciels pouvaient
être échangés et vendus via des K7 audio.
En 1978, la revue "le Haut-Parleur" publiait une série d'articles, sous la plume de Christian Tavernier, qui décrivaient
la construction
d'un clone de ce dispositif. Ce dernier était composé de 3 cartes : une carte CPU, une carte mémoire et un carte interface
clavier/Afficheur/interfache Audio KansasCity.
Ici un lecteur/enregistreur de K7-audio, très populaire dans les années 70. Les 0 et 1 étaient codés par un signal analogique prenant 2 valeurs (1200 et 2400 Hz) pour représenter les 0 et 1.
Ici un lecteur/enregistreur de K7-audio, très populaire dans les années 70. Les 0 et 1 étaient codés par un signal analogique prenant 2 valeurs (1200 et 2400 Hz) pour représenter les 0 et 1.
Le MEK6800D2 est conçu pour fonctionner en toute autonomie. Seule est nécessaire une alimentation de :
- 5V/1A pour la logique TTL
- +12V et -12V pour l'UART étaient nécessaires. Aujourd'hui des composants comme le MAX232, produisent eux-même en internes ces tensions à partir du +5V.
Qté Device ----------------------------------------------------------------------- 1 MC6800 MPU 1 ROM MCM6830 avec JBUG Monitor (SCM44520P) 3 MCM6810 RAM (128 x 8) 2 MC6820 adaptateur d'interface périphérique (PIA) 1 adaptateur MC6850 Asynchronous Communications Interface (ACIA) 1 Générateur d'horloge MC6871B
4. Programmation et exécution de programme
A cette époque, sans outil d'assemblage, je faisais mes programmes de la facon suivante :
Supposons que l'on veuille effectuer les opérations suivantes :
Le code machine de l'instruction ADD est 8BYY. Il occupe 2 octets (8BH et YYH)
Le code machine de l'instruction BRA (Branche) vers ETIQUETTE est 20ZZ. Il occupe 2 octets et consiste a reculer de 6 octets (PC = PC - 6)
XX vaut 26 en décimal ou 1A en hexadécimal
YY vaut 31 en décimal ou 1F en hexadécimal
ZZ vaut -6 soit en notation en complément à 1 : 256-6 = 250 en décimal et FA en hexa
Donc les instructions mnémoniques correspondent en langage machine à
DEBUT 26 -> A A + 31 -> A (résultat : A vaut 57) recommence depuis le DEBUT FINqu'on peut produire comme suit
DEBUT ORG 0 Origine de l'espace mémoire DEBUT LDA #26 A vaut 26 ADD #31 A+B dans A BRA DEBUT bloucle indéfiniment en 0000 ENDLe code machine de l'instruction LDA est 86XX . Il occupe donc 2 octets (86H et XXH)
Le code machine de l'instruction ADD est 8BYY. Il occupe 2 octets (8BH et YYH)
Le code machine de l'instruction BRA (Branche) vers ETIQUETTE est 20ZZ. Il occupe 2 octets et consiste a reculer de 6 octets (PC = PC - 6)
XX vaut 26 en décimal ou 1A en hexadécimal
YY vaut 31 en décimal ou 1F en hexadécimal
ZZ vaut -6 soit en notation en complément à 1 : 256-6 = 250 en décimal et FA en hexa
Donc les instructions mnémoniques correspondent en langage machine à
MNEMONIQUE CODE Program Couter PC -------------------------------------------- LDA #26 86 1A 0000 ADD #31 8B 1F 0002 BRA 0 20 FA 0004 0006Dans l'espage mémoire le code machine va se repartir comme suit ::
0000 0001 0002 0003 0004 0005 0006 86 1A 8B 1F 20 FACe genre d'exercice était bien fastidieux, bien que très formateur. Très vite on éprouve le besoin de disposer d'un outil d'édition/assemblage. A l'époque, l'Exorciser , évoqué plus haut, remplissait ces fonctions. Aujourd'hui cela sera un PC.
5. Le format S1/S9
Un fichier SREC est composé de lignes de caractères exclusivement ASCII. Il est donc totalement lisible sous éditeur de texte.
Les adresses et les données qu'il contient sont représentées en HEXADECIMAL au format
Big Endian. Une ligne d'enregistrement est composée comme suit :
Il y a 8 types de d'enregistrement :
- Start code, le caractère S Début d'une ligne d'enregistrement.
- Record type, un digit numérique, 0 to 9, défint le type du champ de données à suivre.
- Byte count, deux digits hexa, indique le nombre de nombre de bytes (donc de paires de digits) à suivre dans le reste de l'enregitrement, comprenant : adresse, données et checksum).
- Address, 4, 6, ou 8 digits hexa indiquant l'adresse en mémoire du premier octet de la ligne d'enregistrement. La encore l'adresse est au format big endian
- Data, une séquence of 2n digits hexa, pour n octets de données.
- Checksum, 2 digits hexa issus de l'octet de poids faible du complément à 1 de la somme des octets (representés en paires de digits hexa) des champs : adresse et données.

Type Description Octets d'adresse Séquence de données ----------------------------------------------------------------------- S0 Block header 2 Yes S1 Data sequence 2 Yes S2 Data sequence 3 Yes S3 Data sequence 4 Yes S5 Record count 2 No S7 End of block 4 No S8 End of block 3 No S9 End of block 2 No
- L'enregistrement de type S0 contient des données du fournisseur plutôt que des éléments de programme. La chaîne de caractères peut contenir un nom de programme et/ou des informations de version.
- Les suites de données, avec une indication de la taille des adresses mémoire. S1 pour un système 16-bit/64K, S2 pour un système d'adressage sur 24-bit et S3 pour un système 32-bit.
- S5 porte un compteur de ligne d'enregistrement stocké sur 2 octets.
- Les champs d'adresse S7, S8, ou S9 peuvent contenir l'adresse de démarrage du programme.
Liens internes
7. Bibliographie
[ 2] Daves Old Computers - ALTAIR 8800 - Documentation (Dave Dunfield.)
[ 3] Home Computer & Video Game Museum
[ 4] The Missing 6809 UniFLEX Archive (K. R. Lewis)
[ 5] Un ensemble très intéressant de documents