Document fait avec Nvu Document made with Nvu



 

Historique

Description du système à base de 68030
Captures d'écrans
Acquisitions vidéo
Evolution du système

Introduction

L'ancêtre de ce système date de l'époque à laquelle il fallait dépenser une fortune pour disposer d'un système informatique de développement digne de ce nom (années 83/84). Il s'agissait à l'époque de disposer d'un outil de développement pour microcontrôleurs de la famille MOTOROLA (série MC680x pour les connaisseurs) afin de réaliser des "bidouilles" électroniques plus originales que les éternels amplificateurs audio et autres gradateurs publiés dans les revues spécialisées.

Ceci conduisit à la réalisation d'un système à base de MC6809 comportant une carte de mémoire vive de 64 KiloOctets, une carte vidéo compatible Péritel (une télévision faisan office de moniteur vidéo) et une interface magnétophone pour enregistrer les différents programmes. Le logiciel de base était contenu dans une mémoire morte de 2 Koctet (de type 2716 pour les mêmes connaisseurs) et comportai principalement la gestion de l'écran (25 lignes de 40 colonnes), un éditeur de texte et les routines de la liaison série pour le magnétophone. Le premier logiciel enregistré a évidemment été l'assembleur 6809 puis vinren les assembleurs des microcontrôleurs et les différents programmes associés aux différentes applications.

Ensuite, arriva le lecteur de disquette 3"1/2 qui permis de sauvegarder plus facilement les données mais en introduisant une difficulté: la nécessité de disposer d'un logiciel de gestion des fichiers et des répertoires.

Le langage d'assemblage, bien que très efficace pour tirer le maximum de performances d'un microprocesseur quelconque, se révéla vite peu adapté pour le développement de logiciels de plus en plus complexes.

Je me posais alors la question suivante: quel compilateur de langage évolué vais-je devoir développer ?

On parlait alors à l'époque d'un langage semi-compilé facilement implémentable par une seule personne car, contrairement à un assembleur ou autre Pascal et langage C, la compilation ne se fait qu'en une seule passe sans nécessiter la création d'une table d'étiquettes: le FORTH. Autre avantage énorme en ces temps où la taille mémoire était quelque chose de relativement faible, le noyau comprenant le compilateur et l'interpréteur pouvait être contenu dans un espace inférieur à 16 KiloOctets ! Sachant qu'un processeur de type MC6809 ne peut pas gérer directement plus de 64 KiloOctets, ce langage permet d'avoir un système informatique complet dans cet espace.

Mille mercis à Charles MOORE qui inventa ce fabuleux langage au début des années 70 !

Ceci donna une telle souplesse au système qu'il en devint vite le principal sujet des "bidouilles" avec évolution du processeur vers un MC68000 puis un MC68030 et développement de plusieurs interfaces comme une carte graphique VGA 640x480 (dont sont issus les fonds d'écran) et une interface SCSI permettant la connexion d'un disque dur, d'un lecteur ZIP (adieu disquettes 3"1/2) et même d'un lecteur de CDROM!


Description du système à base de 68030

Le système dans son état actuel est architecturé autour d'un MC68030 cadencé à la fréquence d'horloge de 40 Mégahertz. Cette fréquence peu paraître dépassée vis-à-vis des PENTIUMs ou autre G4s frisant le GigaHertz, mais il faut savoir que le FORTH est un langage informatique qui, de par son concept, es très proche du langage d'assemblage, ce qui permet au développeur de logiciel de ne pas se poser trop la question de savoir s'il doit passer en langage machine pour la plupart des applications.

Sans trop entrer dans le détail, on peut décrire les principaux constituants répartis sur plusieurs cartes:

La carte processeur

  • MC68030 à 40 MHz.
  • Mémoire morte de 32 KiloOctets comprenant le noyau temps réel, le compilateur/interpréteur FORTH, les primitives de gestion de la carte graphique avec multi-fenêtre, les routines d'accès aux différents systèmes de fichier pour le démarrage.
  • Mémoire vive à zéro cycle d'attente organisée en 512 KiloMots de 16 bits et destinée à recevoir le contenu de la mémoire morte ainsi que l'ensemble des logiciels dont vous avez vu les aperçus.
  • Mémoire vive à 2 cycles d'attente organisée en 512 KiloOctets et destinée à compléter la précédente pour les programmes moins performants (si la place était insuffisante, les logiciels de jeux pourraient y être installés sans que l'on se rende compte de la différence).
  • Gestion d'un clavier, d'une liaison série RS232 et de la base de temps du noyau temps réel par un circui périphérique compatible 680x0 (MC68681 pour les connaisseurs). Le logiciel peut gérer jusqu'à 64 tâches qui peuvent avoir chacune un niveau de priorité différent (je ne dépasse guère une vingtaine de tâches avec l'ensemble des applications existantes e encore faut-il les activer en ouvrant leurs fenêtres respectives). Chaque tâche est scrutée toutes les millisecondes ce qui donne au système un temps de réaction très rapide.
  • Un bus compatible 6800 pour piloter les autres cartes par l'intermédiaire d'une carte de fond de panier.

La carte interfaces

  • Une interface SCSI-1 (8 bits) permettant de connecter le DISQUE DUR interne, le lecteur de CDROM interne acceptan le format PC, un lecteur ZIP IOMEGA en externe (adieu lecteur de disquettes 3"1/2) et même un SCANNER (Snapscan 310 de AGFA) dont le logiciel est en cours de développemen (on peut encore ajouter 3 autres périphériques sur ce bus).
  • Une interface parallèle CENTRONICS pour l'imprimante (BJC4000 de CANON). Il est à noter que l'impression es gérée en tâche de fond non prioritaire ce qui laisse le maximum de puissance du processeur disponible à tout moment.
  • Une interface pour souris de type ATARI (c'étai les moins chères à l'époque).

La carte vidéo

  • Elle est construite autour du simple circuit de balayage (MC6845 pour les connaisseurs) partageant l'accès à la mémoire d'écran avec le processeur qui exécute toutes les routines graphiques. La fréquence d'horloge est de 25 MHz ce qui permet d'avoir une vidéo compatible VGA en 640x480. Le nombre de couleurs affichées est de 128 ce qui explique le procédé de tramage utilisé pour simuler plus de teinte (matrice de 8x8 pour les connaisseurs).

La carte mémoire vive dynamique

  • Elle utilise 8 barrettes de 1 Méga Octets don 1 est réservé au variables des différents programmes, les 7 autres permettant de disposer d'un disque virtuel pour les fichiers tampons.

La carte d'acquisition vidéo

  • Cette carte dispose d'une mémoire vive statique de 128 KiloOctets permettant de sauvegarder une trame vidéo complète dont les échantillons sont issus d'un convertisseur analogique-numérique 8 bits cadencé à 12 MHz (TDA8708 pour les connaisseurs). Une des applications autre que la saisie d'image peut être le décodage Télétexte.


Il faut quand même insister sur le fait que les performances de ce système ne peuvent atteindre celle des PC ou MAC actuels mais il ne faut pas oublier qu'il a été intégralement conçu par une seule personne. Intégralemen conçu sous-entend la conception du matériel ET du logiciel !


Captures d'écran

Exemple d'un bureau bien occupé:


Logiciel d'animation d'objets filaires en 3 dimensions:


Logiciel de visualisation des lignes vidéo (numéros 1 à 625 en SECAM ou PAL et de 1 à 525 en NTSC):


Acquisitions vidéo

Images SECAM:




Images PAL:




Image NTSC (appareil photo numérique avec sortie vidéo NTSC: VIVITAR Vivicam 2000):





Evolution du système

Suite à une discussion anodine avec des collègues de travail, il se trouve que j'en ai trouvé deux particulièremen intéressés par le système décrit dans ce site:

  • un ingénieur de développement en logiciels DSP dans les radiocommunications, qui s'est proposé pour la réalisation d'un circuit imprimé au format des cartes de PC en cours de réalisation,

  • un ingénieur de développement de code FPGA en langage VHDL et séduit par le langage FORTH, propose tout simplement de construire un processeur FORTH permettant la réalisation des instructions de base en un seul cycle d'horloge. 

J'ai donc créé un site internet afin de faire connaitre le système dans le monde.


Un internaute, attiré par ce système, m'a suggéré d'en faire une version allégée: le mini système FORTH.

Le FORTH étant un langage très proche de la machine, le mieux est de développer un processeur contenan les instructions de base de ce langage comme le coeur FORTH.