Introduction

Le kit d'évaluation MEK6800D2 était proposé dans les années 70 (1976) pour une iniation au microprocesseur Motorola MC6800. Il ne nécessitait qu'une alimentation 5V et si besoin un magnétophone à cassette audio pour enregister ou uploader les programmes. Une carte clavier/6-afficheurs assurait l'interface homme/machine. Son bus principal était à la norme Exorciser (Motorola) et permettait via une carte de fond de panier doté de connecteur 86 broches (2 x 43), de lui ajouter des cartes periphériques. De base, il était doté de :
  • une carte CPU avec :
    • un microprocesseur MC6800 cadencé à une fréquence de 614.4 Khz. Alors que ce dernier supporte un cadencement de 1MHz, cette fréquence a été choisie car multiple de 4800Hz (÷128) et utilisée par la chaîne ACIA-Interface magnétophone.
    • une ROM moniteur (MC6830) nommée JBUG de 1Ko contenant les fonctions de gestion de clavier - afficheur - ...
    • 3 RAM (MC6810) de 128 octets chacune.
    • 1 ACIA (MC6850) assurant le transfert série des données allant et venant au/du magnétophone.
    • 2 PIA (MC6821 ou MC6820). L'un servant au contôle du clavier et de l'afficheur 7-segments. L'autre est libre. Ses sorties parallèles sont disponibles sur un bus secondaire de 50 broches (2x25).
    • 2 sockets libres pour UVPROMS de 1 ou 2Ko chacune.
    • 2 sockets pour RAM statiques (MC6810) de 128 octets chacune. L'ajout optionnel de ces RAM portent l'espace Ram de 256 octets à 512; sans compter la RAM de 128 octets de gestion de la pile (STACK).
  • une carte d'interface clavier/afficheur - magnétophone, très bien déscite dans le manuel d'utilisation donné plus bas. Elle ne sera pas décrite ici, car il s'agit de s'en passer.

Mise en boitier

La carte CPU a une dimension HT de ~ (9.75" x 6.15") soit (25.4 cm x 16 cm).

Galerie

Les choix du constructeur

L'interface homme/machine à base d'un clavier (1 bloc de 16 chiffres hexadécimaux + 8 touches de fonctions) était d'un bon rapport (facilité d'utilisation)/(prix). En effet, l'alternative industielle était le telescripteur doté d'un lecteur/puncher de bandes papier pour lire/écrire les programmes d'un prix largement supérieur à celui du kit. Par ailleurs de nombreux constructeur de micro-ordinateurs ont suivi le principe de lecture/enregistrement sur cassettes audio basé sur un codage "Kansas-City". Les programmes (Jeux, Editeur, Assembleur, Basic, Fortran, ...) étaient fournis sur cassettes magnétiques très répendues à l'époque.

Modernisation

La configuration de base ne permet pas une agilité des développements. 3 points faibles sont à pointer :
  • le passage par le support cassette magnétique.
  • la faible taille de la RAM de travail sur la carte CPU (512 octets max).
  • l'interface homme/machine un peu laborieuse à une heure où on peut connecter un terminal virtuel à base de PC
Mon idée est d'améliorer ces points à faibles coûts. Dans les grandes lignes, les solutions d'amélioration sont :
  • installer 32Ko (voir plus) de RAM statiques sur la zone de wrapping.
  • intaller 2 ou 4Ko de ROM moniteur à la place du moniteur JBUG.
  • utiliser l'ACIA pour communiquer avec un terminal virtuel TTY (compatible VT-100). La vitesse de communication sera égale ou supérieure à 4800 bauds.
  • Installer sur un PC (Win, Mac ou Linux)
    • un émulateur de terminal TTY
    • un éditeur de texte et un cross-assembleur 6800.
    • le moyen d'uploader simplement un fichier S19 produit par le cross-assembleur.
Dans ces conditions, le développeur devra passer par les étapes suivantes :
  1. éditer un fichier source .ASM (mnémonique 6800).
  2. cross-assmbler le fichier source et produire un fichier binaire au format Motorola S19.
  3. copier le contenu du fichier S19 dans le presse-papier.
  4. se connecter à la carte CPU MEKD2 via un émulateur de TTY. Puis taper la commande L pour LOAD.
  5. Faire un Crtl-V ou un clic droit et laisser l'upload se faire.
  6. lancer le programme uploadé à l'adresse XXXX avec la commande G XXXX
Les étapes 3 et 5 sont rustiques. Un émulateur plus sophistiqué permettra de mieux contrôler cette partie de la chaîne.

Cartographie mémoire

La carte CPU produit 7 signaux de mapping (cartographie) :
  • /RAM pour séléctionner les RAM statiques MC6810 de travail.
  • /STACK pour sélectionner la RAM de gestion de la pile (stack).
  • /2/3 destiné pour un adressage externe à la carte CPU. Sans doute de la RAM dynamique externe.
  • /4/5 destiné pour un adressage externe à la carte CPU.
  • /PROM0 pour sélectionner une EPROM optionnelle.
  • /PROM1 pour sélectionner l'autre EPROM optionnelle.
  • /I/O pour sélectionner l'ACIA et/ou les 2 PIA.
  • /ROM pour sélectionner la ROM JBUG;

ADRESSES / I/O /PROM0 /PROM1 /ROM /RAM /STACK
0000 1 1 1 1 0 1
007F 1 1 1 1 0 1
0080 1 1 1 1 0 1
00FF 1 1 1 1 0 1
0100 1 1 1 1 0 1
017F 1 1 1 1 0 1
0180 1 1 1 1 0 1
01FF 1 1 1 1 0 1
2000 1 1 1 1 1 1
3FFF 1 1 1 1 1 1
4000 1 1 1 1 1 1
5FFF 1 1 1 1 1 1
6000 1 1 0 1 1 1
7FFF 1 1 0 1 1 1
ADRESSES / I/O /PROM0 /PROM1 /ROM /RAM /STACK
8004 0 1 1 1 1 1
8007 0 1 1 1 1 1
8008 0 1 1 1 1 1
8009 0 1 1 1 1 1
8020 0 1 1 1 1 1
8023 0 1 1 1 1 1
A000 1 1 1 1 1 0
A07F 1 1 1 1 1 0
C000 1 0 1 1 1 1
C3FF 1 0 1 1 1 1
E000 1 1 1 0 1 1
E3FF 1 1 1 0 1 1

Nouvelle cartographie

En créant le signal /RAM32K = /VMA + /A15 on obtient le signal de sélection d'une RAM statique de 32Ko allant de 0000 à $7FFF. En appliquant ce signal sur la broche /CS de la RAM additionnelle de 32K (ex. HM62256BLP-7). Il faut bien sûr oter les 2 RAM MC6810 pour éviter le conflit.
Maintenant, il faut installer une nouvelle ROM Moniteur pour ne plus utiliser la carte clavier/afficheur. Pour cela, il faut :
  • oter la ROM JBUG (MC6830) de son support.
  • couper liaison /PROM0 broche 20 du socket U10
  • relier le signal /ROM à la broche 20 du socket U10
  • pour que le socket U10 puisse accueillir une UVPROM de type soit 2716 (2Ko), soit 2732 (4Ko), il faire les brachanchements montrer sur la figure ci-avant.

JHLBUG Moniteur

Les changements décrits ici nécessitent un nouveau moniteur. Celui décrit ici est nommé JHLBUG. Il est inspiré des moniteurs MIKBUG et MINIBUG II.
Il offre les commandes et fonctions suivantes :

Commandes
  • M AAAA DD NN : permet de modifier le contenu de (AAAA) avec la valeur DD. L'ancienne valeur est DD.
  • G AAAA : excute le programme commençant en AAAA.
  • L : attend un fichier S19 et place son contenu en mémoire.
  • R : affiche les registres après une interruption.
Wrapper
Un wrapper est installé en tête de ROM. Il offre un serie de fonction d'entrées/sorties qui ne nécessite pas de connaissance du matériel, ni la position des devices.
	f000                            ORG     $F000                        
	                        * WRAPPER : FEW FUNCTIONS WITH INVARIANT POSITION
	f000 7e f0 74           VSTART  JMP     START   RESTART POINT
	f003 7e f0 93           VCNTRL  JMP     CONTRL  NO RESTART ACIA, DISPLAY PROMPT
	f006 7e f0 4d           VINCH   JMP     INCH    IN A-REG
	f009 7e f0 57           VOUTCH  JMP     OUTCH   PRINT A-REG
	f00c 7e f0 6f           VPSTRNG JMP     PDATA   PRINT STRING (X) ZERO EOT
	f00f 7e f0 18           SETIRQ  JMP     SETVIRQ SET VIRQ WITH X
	f012 7e f0 1c           SETNMI  JMP     SETVNMI SET VNMI WITH X
	f015 7e f0 20           SETSWI  JMP     SETVSWI SET VSWI WITH X
Exemple d'utilisation :
* SET IRQ ADDRESS AT $5678
	LDX #$5678
	JMP $F00F SET A NEW ADDRESS FOR IRQ HANDLER

* PRINT CHAR; 'Z'
	LDAA #'Z
	JMP $F009 PRINT CHAR FROM A-REG.

Cohabitation JBUG - JHLBUG

Si on veut faire cohabiter le ROM JBUG et la nouvelle ROM JHLBUG ou autre, pour mettre au point les travaux décirts ici, on peut effecuter le cablage suivant en placant un quadruple switch s1-4.

Modification de vitesse de l'ACIA

Il s'agit ici de modifer la vitesse de communication série de l'ACIA avec un "terminal+puncher" qui permettra de transférer de programmes développés sur PC vers la mémoire RAM du Kit MEKD2. Nativement, l'ACIA est prévu pour communiquer à 300Bds avec l'interface magnétophone. Maintenant, que nous passons par un émulateur de terminal VT100 on peut augmenter cette vietesse à 38400Bds. Soit 128 fois plus rapide. Pour cela, il faire effectuer quelques modifications sur la carte CPU.
  • Relier le broche 3 et 4 de l'ACIA
  • Couper le liaison entre la broche 13 du MC4040 et la ligne "4800Hz"
  • Relier la broche 9 du MC4040 et la ligne "4800Hz".

MC4040    
Pin
Vitesse
Bauds
1475
12150
13300
4600
21200
32400
54800
69600
719200
938400

Ajout de 32KB de RAM

Au mieux, la carte supporte 512 octets de RAM statique. On peut facilement porter cette RAM à 32KB en plaçant un botier CY62256N dans la zone de wrapping en haut à gauche de la carte CPU. La sélection du boitier se fait en reliant :
CY62256N 6800
/CE A15
/WE /WR
/OE /VMA
O0-O7 D0-D7
A0-A14 A0-A14

CY62256N 6800Sig.
28VCCVcc
14GNDGnd
2734WE
2613A4
2512A3
2411A2
2310A1
225OE
219A0
2025CE
1926D7
1827D6
1728D5
1629D4
1530D3
1331D2
1232D1
1133D0
1024A14
923A13
822A12
720A11
619A10
518A9
417A8
316A7
215A6
114A5
Pour éviter tout conflit, il faut bien sûr retirer les 4 boitiers RAM MC6810 de la carte CPU qui occupent 0000 - $00FF. Ne pas oter le boitier de RAM occupant la la zone de "stack" (A000 - A07F).

Sources et références

[ 1] Kit MEK 6800 D2 Manual - Motorola (1976)

[ 2] Schéma de la carte CPU du kit MEK6800D2 - Motorola (1976)

[ 3] Bus Exorciser - Pinout - Motorola

[ 4] Ouvrages sur la programmation du CPU Motorola 6800 (ces documents sont issus du site de Chris Federico

[ 5] Réglages de l'ACIA MC6850

[ 6] Instructions du MC6800

[ 7] UVPROM M2716

[ 8] UVPROM M2732A

[ 9] RAM statique 32K x 8

[10] ACIA MC6850 Motorola

[11] PIA MC6821 Motorola

[12] Microprocesseur MC6800 Motorola

[13] Baud-rate Generator MC14411 Motorola

[14] Ram statique 62256 32K x 8bits

[15] Ram statique K6x08008 32K x 8bits

[16] JHLBUG - Listing

[17] JHLBUG - Binaire - S19