This page is at least 11 years old !
|
Le microcontrôleur
Le microcontrôleur utilisé dans la dictée magique est un TMC0270, dérivé du TMS1000, un microcontrôleur 4 bits assez en vogue à l'époque, à en voir tous les appareils qui l'utilisent (notamment dans les calculatrices, l’usage pour lequel il a été conçu). Il possède suffisamment d'entrées pour lire un clavier, et suffisamment de sorties pour piloter des afficheurs à LED ou directement des VFD grâce aux broches "O" supportant la tension négative des segments. Les broches "K" sont les entrées et les broches "R" les sorties logiques. Son programme est en mask ROM interne, et s'étale sur 2048 mots de 9 bits, repartis en 16 pages de 128 instructions. Chacune de ces instructions prend un mot et 6 cycles pour s'exécuter. L'instruction set du TMS1000 (identique) est trouvable ici. Sa RAM intégrée est formée de 8+1 pages de 16 mots de 4 bits (la page 8 est un peu spéciale, voir plus loin...). Il possède 3 registres : un registre de travail A sur 4 bits, et 2 registres d'adressage X sur 4 bits également. L'adressage en RAM se fait avec les registres X pour la page (0 à 8), et Y pour l'index dans cette page (0 a 15). En parlant de flags, il n'y a qu'un seul flag d'état : le status bit. Qui est par défaut à 1 et passe à 0 quand une condition n'est pas validée. Il repasse à 1 automatiquement après une instruction. Le registre PA (Page Address) contient le numéro de la page de ROM actuelle, sur 4 bits. On ne peut pas y accéder directement. Après un reset, PC est fixe à 0 et PA à 15 (première instruction de la dernière page). Le stack d'appel n'est pas des plus profonds : on ne dispose que d'un étage constitué de 11 bits (7 de PC et 4 pour la page). Un PLA (Programmable Logic Array) permet de pouvoir convertir une valeur numérique en un ensemble d'états sur les sorties "O", ceci permet de faire la conversion en hardware d'une valeur alphanumérique vers celle nécessaire pour allumer les bons segments de l'afficheur. Le TMS1000 avait un PLA 4 bits vers 8 bits car il ne fallait afficher que des chiffres sur un afficheur a 8 segments. Par exemple en mettant la valeur 7 en entrée du PLA, les sorties O correspondant aux segments A, B et C passent à -12V, allumant les bons segments pour afficher un "7". La modification apportée au TMS1000 consiste principalement en l'augmentation du nombre d'entrées (5 au lieu de 4, pour pouvoir lire 8x5 = 40 touches), et de sorties du PLA qui accepte maintenant 6 bits en entrée et 16 bits en sortie (16 segments du VFD). Afin de pouvoir fixer cette valeur avec des registres 4 bits, un "hack" a été arrangé pour écrire dans le PLA avec toujours une seule instruction ("TDO") : on écrit les 4 LSB avec le status bit à 0, puis les 2 MSB avec le status bit à 1. Sachant que le status bit repasse à 1 automatiquement, il suffit de le forcer à 0 puis de faire deux TDO. Les codes des caractères pour le PLA sont les suivants :
|