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.

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).

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é.

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.

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.
La carte CPU comprend les composants principaux suivants:
                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 :
				DEBUT
					26 -> A
					A + 31 -> A (résultat : A vaut 57)
					recommence depuis le DEBUT
				FIN
		
qu'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
				END  
		
Le 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
						0006
		
Dans l'espage mémoire le code machine va se repartir comme suit ::
			0000 	0001 	0002 	0003 	0004 	0005 	0006
			86 	1A 	8B 	1F 	20 	FA
		
Ce 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 :
  1. Start code, le caractère S Début d'une ligne d'enregistrement.
  2. Record type, un digit numérique, 0 to 9, défint le type du champ de données à suivre.
  3. 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).
  4. 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
  5. Data, une séquence of 2n digits hexa, pour n octets de données.
  6. 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.
Il y a 8 types de d'enregistrement :
		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.
Le 6800 ayant une plage d'adressage de 64Ko, les adresses seront codées sur 16 bits, donc 2 octets. Le format S1/S9 sera donc préférés aux deux autres (S2, S3) plutôt réservés aux programmes 32 bits des processeurs MC68000.

Liens internes

7. Bibliographie

[ 1] Ouvrage sur la programmation du CPU Motorola 6800 (documents sont issus du site de Chris Federico)

[ 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

[ 6] Réglages de l'ACIA MC6850

[ 7] Instructions du MC6800