MiniForth68K V0.6

© F.BROTON Janvier 2002

http ://fbroton.free.fr/MiniForth.html
 
 
 
 

un émulateur de la carte
 
 
 
 

Mini système FORTH V2.10

© JPB.FORTH Janvier 2002

http ://jpb.forth.free.fr.



 
 
 
 

Ce programme est un démonstrateur/émulateur/débogueur de la carte Mini Système Forth 68000 présentée sur le site http ://jpb.forth.free.fr.

Il permet donc d'évaluer cette carte, avant de la construire, et de faire quelques petits programmes en FORTH. Néanmoins un certain nombre de différences existe et le comportement réel sera parfois différent. Le but n’a pas été de coller au plus près de la carte (car le hard de cette carte peut évoluer selon les choix de réalisation et le budget de chacun) mais de donner une bonne idée de ce que l’on pouvait en attendre. Le plus gros des restrictions et différences est détaillé ci-dessous, au fil du texte.

Cet émulateur a été conçu pour tourner sur tout PC équipé d’un Windows 32 bits. Il a déjà été essayé sous 95, 98 et 2000 et doit probablement fonctionner sous Millenium et NT, voire XP. Il nécessite une machine au moins à 100 MHz et a été testé sur des PC à 350, 700 MHz et 1,2 GHz. Avec une dégradation notable des performances, il peut également tourner sur un iMac avec un émulateur PC supportant Windows.

L’émulation en exécution est assez fidèle à partir d’un PC à 350 MHz qui permet à peu près d’égaler la vitesse de la vraie carte à seulement 8 MHz. Cet écart de fréquence est dû aux contrôles supplémentaires effectués par l’émulateur, à son intégration dans un environnement graphique complexe (Windows) qui fait déjà pas mal de chose et enfin à son écriture en langage évolué.

La base de ce démonstrateur est un émulateur de CPU 68000. En plus du CPU, une émulation de la mémoire et des périphériques existant sur la carte a été faite, notamment pour assurer les entrées/sorties (de base un terminal série). Le programme peut se suffire à lui seul, mais on peut aussi connecter des terminaux sur les ports du PC, le PC émulant alors seulement le fonctionnement de la carte.
 
 
 
 

1) Table des matières
 

1) Table des matières
2) Installation

3) L’émulateur de terminal

4) L'émulateur de 68000

5) L'émulateur de mémoire ROM

6) L'émulateur de mémoire RAM

7) L'émulateur de 68681

8) L'émulateur de circuit reset

9) L’émulateur de ports 8574 et 8574A

10) L’émulateur de mémoire EEPROM 24C512

11) Séquencement et performances de la carte

12) Principes généraux de l'interface graphique

13) Le menu Terminal

14) Le menu Emulateur

15) Le menu Débogueur

16) Le menu ?

17) Historique et évolutions

18) Compatibilité, version et bugs

19) Chiffres, remerciements, projets et copyrights
 
 


 
 

2) Installation

Créez un répertoire temporaire sur le disque dur (ou servez vous du c:\Temp de Windows) et recopiez les fichiers setup.exe, MiniFort.001 et MiniFort.002 (kit de distribution) dedans.

Lancez le setup.exe et modifiez éventuellement le chemin d'installation (par défaut c:\MiniForth68k) MiniForth68k Directory.

Détruisez le répertoire temporaire et lancez MiniForth68k.exe.

Utilisez toujours le kit de distribution. La recopie des fichiers de l’application (MiniForth68k.exe et MiniForth68k.uir) ne suffit pas. Vous pouvez déplacer ces 2 fichiers sur votre machine dans un autre répertoire si vous voulez mais pour les installer sur un autre PC, utilisez le kit, car d’autres fichiers (dll,…) sont aussi installés.

Tous les réglages utilisateurs sont stockés dans un fichier MiniForth68k.ini qui est créé s’il n’existe pas. Si le programme a un comportement anormal, commencez par supprimer ce fichier. Il sera recréé avec des valeurs par défaut qui doivent satisfaire le plus grand nombre et qui de plus sont stables. Faites de même si vous n’arrivez plus à atteindre certaines fenêtres. Un quatrième fichier MiniForth68k.epr est également automatiquement créé pour conserver l’état de l’EEPROM 24C512. Il peut être détruit car il n’est pas vital.

Les seuls fichiers vitaux sont donc l’exécutable MiniForth68k.exe, le fichier de ressources graphiques MiniForth68k.uir, et le fichier image de la ROM 16Ko de JPB FORTH MiniForth68k.bin, que l’on peut aussi récupérer sur l’internet.

Sous Windows NT vous devrez être administrateur lors de la toute première installation sur une machine (ce n’est plus vrai pour les installations ultérieures).

Lors d’une réinstallation, il n’est pas nécessaire de désinstaller la précédente, par contre il est vivement conseillé d’effacer le fichier MiniForth68k.ini afin d’éviter des troubles.
 
 
 
 

3) L’émulateur de terminal

Cet émulateur a été conçu pour pouvoir se passer d’un programme annexe de type HyperTerminal (qui est livré avec Windows et qui n’est d’ailleurs pas un exemple de stabilité !). Il a pour avantage d’être intégré et donc d’être sous contrôle. Il n’a pas un nombre de colonnes prédéfini et s’adapte à la largeur que vous donnerez à la fenêtre (rappel en bas à gauche) (ici 54 colonnes par 16 lignes).

Dans le menu Terminal/Réglages on peut librement changer les couleurs du fond d’écran et du texte. Si on active le menu Terminal/Verrouillage Majuscule, tous les caractères alphabétiques seront mis en majuscule à la saisie avant d’être envoyé au FORTH, qui est un grand adepte des majuscules.

Le menu Terminal/Efface Terminal nettoie entièrement l’écran de façon irrémédiable. Il est possible d’enregistrer une image texte de l’écran y compris l’historique (lignes au dessus de l’écran, accessibles par l’ascenseur) dans un fichier par le menu Terminal/Sauve Terminal.

Une LED jaune VOYANT clignotant deux fois par seconde indique que le multitache fonctionne.

Une LED bleue SDA clignote lors des échanges sur le bus I2C.

Une LED verte 68000 oscillante indique que le 68000 tourne bien. Elle devient rouge en cas d’erreur de fonctionnement ou d’arrêt du CPU.

La saisie d’une ligne FORTH ne gère en sus des caractères que les touches Suppr, Backspace, flèche droite/gauche, tabulation (convertie en espace) et Echap. Le reste est non géré. En dehors de la saisie intégrale des commandes au clavier, plusieurs façons existent pour se simplifier la tache :

Pour augmenter les performances d’affichage, celui-ci ne se fait pas en continu mais lors des périodes de rafraîchissement de toutes les fenêtres, à savoir une fois toutes les Emulateur/Réglages/Intervalle Affichage périodes HTR. Pour ne pas avoir un affichage trop saccadé on prendra soin de ne pas mettre une valeur trop grande dans ce champ (restez en dessous des 200 millisecondes pour le produit Intervalle Période x Intervalle Affichage).

Les restrictions actuelles de l'émulateur sont:

4) L'émulateur de 68000
 
 

L'émulateur qui a été écrit spécialement pour ce programme est un émulateur dégraissé de 68000, c'est à dire que tout le 68000 n'est pas émulé. Certains CODEOPS ne sont pas présents, certains modes d'adressage non plus. De plus il n'émule que le mode superviseur du 68000. Il a été écrit comme on dit couramment " from scratch " et un autre émulateur (Basilisk II de Christian Bauer [référence trouvée dans le groupe de discussion de JPB FORTH]) m’a servi de référence pour les points délicats comme le positionnement des FLAGS du 68000.

Le but de mon implémentation était d'avoir le minimum vital pour faire tourner la carte FORTH et non pas d'avoir une émulation parfaite du CPU. Mon deuxième but était d’avoir un code compact qui ait un bon taux de réutilisation (certes un peu plus lent). Mon émulateur de 68000 non complet fait 1500 lignes de C écrit à la main contre 43000 pour celui de Basilisk qui ont été générées automatiquement !

Non complet, donc il se peut que dans le noyau FORTH actuel ou dans d'éventuels développements futurs, des opcodes ou modes d'adressages non émulés soient utilisés. Dans ces cas là, l'émulateur s'arrêtera de lui même et affichera une erreur. Il suffira de faire un reset quelconque (chaud ou froid) de la carte et de ne pas utiliser ces instructions.

L’émulateur 68000 fonctionne en mode normal (RUNNING), peut être suspendu (menu Emulateur/Arrêt) ou passer en mode trace RUNNING (liste toutes les instructions exécutées et registres) ou enfin en mode trace pas à pas (permet de surprendre la naissance d’une bogue).

Lors d’un RESET froid ou très froid, tous les registres sont réinitialisés.

A l’affichage tous les registres sont affichés en hexadécimal.

Voir la documentation abondante sur le thème du 68000 sur le net et sur l’utilisation qui en est faite sur la carte 68000 sur le site JPB FORTH (notamment l’utilisation des registres).

Les restrictions actuelles de l'émulateur sont:

Malgré toutes ces limitations, ca ne marche pas trop mal pour seulement 1500 lignes !

En plus de l'émulateur, le programme contient un désassembleur 68000, de plus orienté FORTH (recherche

des noms de fonctions).
 
 

5) L'émulateur de mémoire ROM

La ROM peut être de 3 modèles: 16k, 32k ou 64k. Pour émuler la carte actuelle, il faut impérativement choisir 16k sinon le FORTH ne démarrera pas. Les autres choix sont réservés pour de futurs développements du noyau.

Dans le kit d’installation, pour des raisons de facilité, une ROM copie de la v210_128.bin est intégrée (ROM de référence pour ce développement). La ROM utilisée doit impérativement s’appeler MiniForth68k.bin. Chaque utilisateur est ensuite libre de récupérer ou de se faire des versions différentes et de les renommer pour pouvoir être prises en compte par l’émulateur.

Au RESET (froid ou très froid), la ROM est branchée à partir de 0 (et pour la 16k se termine donc en $3FFF). Sur la vraie carte, pour des raisons d’économies hardware, elle est ensuite répliquée de façon infinie dans la zone ROM de la carte (de $0 a $3FFFFF). Dans l'émulateur elle n'est répliquée que 4 fois, ce qui est suffisant pour que la ROM actuelle du FORTH s’initialise. C'est pour une raison de contrôles plus stricts que cela a été fait. Après la séquence d'initialisation, l’espace ROM se retrouve de $400000 a $7FFFFF, mais n’est plus jamais utilisé.

On peut changer la taille de la mémoire ROM à la volée sans arrêter l’émulateur, bien que cela n’ait pas d’utilité connue.

Les restrictions actuelles de l'émulateur sont:

6) L'émulateur de mémoire RAM

La RAM peut être choisie entre 128ko et 4Mo selon une suite géométrique. La capacité de 128ko n'est pas compatible avec une utilisation nominale de la carte bien que la ROM FORTH démarre. Les tailles préconisées par JPB FORTH sont 256ko ou 1Mo. Si l'on envisage d'utiliser l'assembleur 68000, il faudra choisir 256Ko redondé, 1Mo ou 4Mo redondé ou non, l'assembleur se logeant en haut de la mémoire pour ne pas encombrer. Les différentes tailles mémoires permettent aux économes de faire tourner une application dans peu de RAM et de vérifier avant de faire leur carte qu'elle peut fonctionner dans un espace réduit.

Au RESET la RAM est branchée à partir de $400000. Pour des raisons d’économies hardware, elle est ensuite répliquée de façon infinie dans la zone RAM de la carte (de $400000 à $7FFFFF).

Pour des raisons de contrôles plus stricts, la RAM peut ne pas être répliquée dans l’émulateur, à l'inverse de ce qui se passe sur la vraie carte (cela dépend de la valeur de l’objet Emulateur/Réglages/Redondance). Pour être compatible avec la carte, il faut cocher cet objet. Dans le cas inverse, de petits dysfonctionnements peuvent apparaître (avec l'assembleur 68000 et la gestion de l'allocation de la mémoire dynamique). Il est à noter que sur la vraie carte actuelle, cette fonctionnalité n'existe pas. Après la séquence d'initialisation, l’espace RAM se retrouve de $000000 a $3FFFFF.

Au RESET très froid toute la mémoire est effacée et remplie avec le motif présent dans l’objet Emulateur/Réglages/Motif RAM Reset Très Froid (par défaut à 0). A noter que ce motif est impérativement défini sur 32 bits. Ceci permet de voir quelles adresses sont écrasées par le système au démarrage ou par la suite. Il est à noter que sur la vraie carte actuelle, cette fonctionnalité n'existe pas.

Dans l’émulateur, la RAM réservée est en permanence de la taille maximum (4Mo). Seul l’accès est contrôlé et doit être conforme à la taille choisie dans l’émulateur. Cela explique que l’on peut écrire et lire dans cet espace de 4Mo en permanence avec les menus Emulateur/Charge Mémoire et Sauve Mémoire et que l’on peut retrouver des choses en RAM quand on augmente la taille mémoire.

On peut changer la taille de la mémoire RAM à la volée sans arrêter l’émulateur (attention cela peut perturber le noyau FORTH s'il gère l'allocation de la mémoire dynamique).

Les restrictions actuelles de l'émulateur sont:

7) L'émulateur de 68681

Ce circuit est le seul périphérique de la carte réelle. Il est branché à partir de $800000 sur les octets impairs, et ce sur les 32 premiers octets de la zone. Pour des raisons d’économies hardware, elle est ensuite répliquée de façon infinie dans la zone 68681 de la carte (de $800000 a $BFFFFF). Pour des raisons de contrôles plus stricts, la zone 68681 n'est pas répliquée, à l'inverse de ce qui se passe sur la vraie carte. A noter qu’à l’inverse des zones RAM et ROM qui changent d’adresse, cette zone est fixe.

L'émulation de ce circuit est faite (comme pour le 68000) de façon allégée pour assurer le strict nécessaire avec la carte FORTH. Les accès aux UART sont détournés et renvoyés soit vers le terminal intégré soit vers une ou plusieurs liaison série du PC. Les 2 UARTS sont par contre gérés. Les liaisons séries sont tamponnées par l'émulateur en entrée et en sortie par des espaces de 100 Ko.

Lors d’un RESET froid ou très froid, tous les registres sont réinitialisés.

A l’affichage tous les registres sont affichés en binaire et hexadécimal. Certains registres sont internes et ne peuvent être lus ou relus par le CPU. Les ports d’entrée/sortie sont également visualisés par des LEDS. Les vitesses des liaisons séries sont décodées en clair en rouge. Les ports d’entrée peuvent être forcés à l’aide d’interrupteurs. L’état allumé représente un 1.

Les restrictions actuelles de l'émulateur sont:

8) L'émulateur de circuit reset

Sur la vraie carte, au RESET la ROM occupe la zone $0 à $3FFFFF et la RAM de $400000 à $7FFFFF. Après la séquence d'initialisation (notamment après une écriture dans la zone 68681), la RAM se retrouve de $0 à $3FFFFF et la ROM de $400000 à $7FFFFF. Le re-basculement se produit après l’application d’un RESET. L'émulateur est conforme à ce principe.

Pas de restriction actuelle de l'émulateur.
 
 
 
 

9) L’émulateur de ports 8574 et 8574A

Il permet de simuler un périphérique I2C de type PCF8574 ou 8574A (8 ports d'entrées/sorties). Ce périphérique a une adresse comprise entre 0 et 7 (ce qui permet d’en placer 8 différents sur le bus I2C de la vraie carte) et qui est fixée dans la réalité par la mise à 0 ou à 1 de trois broches (A0, A1 et A2) du circuit. Sur le simulateur on fixe cette adresse dans le champs Adresse I2C.

On peut simuler la connexion physique du circuit au bus I2C de la carte par le bouton Connexion. Quand ce bouton est sorti, c'est comme si le circuit n'était pas connecté au bus de la carte, enfoncé, il est connecté.

Le port s'initialise systématiquement à $FF au démarrage ou lors d’un RESET très froid, comme dans la réalité. En sortie, les LEDS (dont la couleur est réglable dans Emulateur/Réglages/Couleur Leds 8574) visualisent l'état 1 de chaque bit (si l'interrupteur est en position HiZ). En entrée, les interrupteurs permettent d'imposer un 0 avec la position 0. Pour imposer un 1, il faut être en position HiZ et écrire un 1. Cela est un peu tordu, mais reflète le comportement réel de ce circuit.

Le champ Donnée Ecrite indique la valeur que la carte a écrit dans le circuit, mais n’est pas modifiable par l’utilisateur. Le champ Donnée Lue peut être écrit par l’utilisateur pour simuler l’entrée d’un octet (c’est une autre façon de forcer la valeur à relire qui n’existe pas dans la réalité ou la seule façon est avec les interrupteurs). Un $FF est alors automatiquement placé dans Donnée Ecrite.

Il existe 2 types de 8574 le A et le pas A. Ils diffèrent uniquement par leur adresse I2C. On peut donc avoir au maximum (8x8574)+(8x8574A) sur un bus I2C réel. Voici les mots de commandes à envoyer sur le bus I2C selon le type de circuit, son adresse et le mode d'écriture/lecture. Ce calcul est par exemple fait dans les routines I2C_PCF8574_C! et I2C_PCF8574A_C!.
 

Adresse I2C
8574 en lecture
8574 en écriture
8574A en lecture
8574A en écriture
0
$41
$40
$71
$70
1
$43
$42
$73
$72
2
$45
$44
$75
$74
3
$47
$46
$77
$76
4
$49
$48
$79
$78
5
$4B
$4A
$7B
$7A
6
$4D
$4C
$7D
$7C
7
$4F
$4E
$7F
$7E

Les restrictions actuelles de l'émulateur sont:

10) L’émulateur de mémoire EEPROM 24C512

Il permet de simuler un périphérique I2C de type 24C512 (EEPROM ou mémoire morte reprogrammable de 64Ko). De plus petites capacités (donc moins chères) peuvent aussi être mises sur la vraie carte, le protocole étant le même pour toute la famille (à quelques subtilités près). Ce périphérique a une adresse comprise entre 0 et 7 (ce qui permet d’en placer 8 différents sur le bus I2C de la vraie carte) et qui est fixée dans la réalité par la mise à 0 ou a 1 de trois broches (A0, A1 et A2) du circuit. Sur le simulateur on fixe cette adresse dans le champs Adresse I2C.

On peut simuler la connexion physique du circuit au bus I2C de la carte par le bouton Connexion. Quand ce bouton est sorti, c'est comme si le circuit n'était pas connecté au bus de la carte, enfoncé, il est connecté.

On peut simuler la protection contre les écritures qui existe sur le composant (broche WC) par le bouton Protection Ecriture. Quand ce bouton est sorti, c'est comme si le circuit n'était pas protégé contre les écritures, enfoncé, il est protégé.

L’interface permet de visualiser tous les 64 Ko en modifiant l’adresse de base en hexadécimal en haut à gauche. Pour déplacer la zone visualisée on peut utiliser Page Haut/Page Bas ou Flèche Haut/ Flèche Bas.

La mémoire s'initialise systématiquement à $FF la première fois, comme dans la réalité. A chaque sortie du logiciel, un fichier MiniForth68k.epr contenant l’image des 64Ko de l’EEPROM est écrit. A chaque lancement du logiciel, l’EEPROM est réinitialisée avec le contenu de ce fichier. Si l’on supprime ce fichier entre deux exécutions, le contenu sera remis à $FF lors du démarrage suivant. L’utilisateur peut se constituer une librairie de fichiers EEPROM, mais un seul sera utilisé par l’émulateur, celui qui s’appelle MiniForth68k.

Le système JPB FORTH gère l’EEPROM d’adresse 0 pour charger (s’il est présent) un applicatif FORTH compilé dès le démarrage. Voir sur le site de JPB FORTH la mise en oeuvre avec l’exemple eeprom.txt.

Voici les mots de commandes à envoyer sur le bus I2C selon son adresse et le mode d'écriture/lecture. Ce calcul est par exemple fait dans la routine I2C_24CXXX_! .
 

Adresse I2C
24C512 en lecture
24C512 en écriture
0
$A1
$A0
1
$A3
$A2
2
$A5
$A4
3
$A7
$A6
4
$A9
$A8
5
$AB
$AA
6
$AD
$AC
7
$AF
$AE

 

Les restrictions actuelles de l'émulateur sont:

11) Séquencement et performances de la carte

Sur la vraie carte, une interruption HTR (horloge temps réel) a lieu toutes les millisecondes, ce qui permet de compter le temps écoulé et de basculer d'une tâche à une autre. Deux autres interruptions permettent de traiter les caractères à émettre et à recevoir sur la liaison série vers un terminal assurant les entrées/sorties.

L'émulateur utilise une pseudo HTR qui peut être aussi rapide que 1 milliseconde (limite basse de Windows). Néanmoins cette base de temps peut être réglée plus lente par l'utilisateur par pas de 1 milliseconde. Sur les PC lents (100 MHz) l'utilisateur aura peut-être intérêt à ralentir cette base de temps s’il constate que le PC n’a plus le temps de tout faire. Sur les PC plus rapides, cette base de temps peut être laissée à 1 milliseconde. Cette base de temps est modifiable dans Emulateur/Réglages/Intervalle Période HTR.

A la différence de la vraie carte, un PC doit garder du temps pour gérer toutes les applications Windows. Aussi le principe retenu est d'exécuter un nombre d'instructions 68000 lors de chaque HTR avant de redonner la main au système et avant la prochaine HTR. Ce nombre d'instructions peut aussi être réglé dans Emulateur/Réglages/Nombre Instructions 68k par HTR (sa valeur minimale est de 800 et la valeur conseillée de 1600 instructions). Cette valeur est un nombre maximal d’instructions que le CPU exécutera, mais si celui-ci se place en attente d’interruption, ce nombre ne sera jamais atteint et il passera à la HTR suivante sans rien faire de plus. Si la valeur mise est trop grande, on aura un glissement du temps réel, étant donné que dans l’émulateur, la HTR n’est pas plus prioritaire. Plus le PC sera rapide, plus on peut mettre un grand nombre d'instructions, et plus le 68000 virtuel que l’on aura sera rapide.
 
 

Fréquence du PC
Nb max d’instructions 68k ne provoquant pas de glissement de la HTR (réglée à 1ms)
Intervalle Période HTR conseillé en ms
Nb max d’instructions 68k conseillé
100 MHz
300
4
1200
300 MHz
900
2
1600
500 MHz
1500
1
1500
750 MHz
2200
1
2200
1 GHz
3000
1
3000
1,5 GHz
4000
1
4000
2 GHz
6000
1
6000

Un système de calibrage automatique aurait pu être fait. J'ai, pour l'instant, vu l'optique du programme, préféré laisser le contrôle total à l'utilisateur (quitte à ce qu’il puisse faire des bêtises !). Cela permet de régler artificiellement plus ou moins la puissance de la carte (Mips).

Les interruptions pour les entrées/sorties sont quand à elles gérées entre 2 HTR pour optimiser les transferts et des différences avec la carte sont à prévoir (en mieux ou en moins bien) sur les flux réception et émission. Aujourd’hui un débit maximum voisin du 9600 bauds original est assuré.

En guise de performances voici les temps d’exécution relevés pour le calcul de l’animation GIF bruit trapézoïdal gauche du programme GIF.FOR (choix 3,8) sur la vraie carte et sur différents PC avec le couple HTR/NbInstructions:
 

Fréquence 
Durée du calcul
Intervalle Période HTR en ms
Nb max d’instructions 68k 
IMac G3 400 MHz émulation VPC 4.0
1 h 30 mn
1
1600
68000 8MHz
46 mn
1
n.a
68030 50 MHz
14 mn
1
n.a
PII 350 MHz
43 mn
1
3000
Duron 700 MHz
14 mn 35 sec
1
4000
Athlon 1,2 GHz
8 mn 55 sec
1
5000

 
 
 

12) Principes généraux de l'interface graphique

La fenêtre principale rassemble un émulateur de terminal texte et par l’intermédiaire d’une barre des menus donne accès à tous les émulateurs et outils intégrés. Dans les menus un chevron indique que l'option est active ou que la fenêtre correspondante est déjà ouverte. Une deuxième sélection fait alors réapparaître cette dernière en avant-plan. Ceci est vrai sauf pour la fenêtre Trace qui a un comportement différent. Le deuxième clic ferme cette fenêtre. Cela est dû au fait que l'on ne peut fermer cette fenêtre système de la même façon que les autres fenêtres de l'application.

Les réglages que l'on fait sont immédiatement pris en compte. Ca simplifie le code (ca évite les variables temporaires), ca dynamise le code (on voit tout de suite ce qu'on fait), par contre quand on fait une erreur on se ramasse plus vite aussi. Quand on saisit une valeur, il faut faire un appui sur Entrée pour que la valeur soit prise en compte. Tous les réglages utilisateurs sont stockés dans le fichier MiniForth68k.ini. Si le programme a un comportement anormal, commencez par effacer ce fichier. Il sera recréé avec des valeurs par défaut qui doivent satisfaire le plus grand nombre et qui sont stables.

Quand le programme est quitté normalement (s’il n'y a pas de plantage), il sauvegarde tous ses réglages, conserve la position des fenêtres et si elles sont ouvertes. Bien que cela soit géré, il se peut que certaines fenêtres ne soient plus accessibles. Dans ce cas là, détruire le fichier MiniForth68k.ini permet de s'en sortir. Certains réglages annexes ne sont par contre pas mémorisés, c'est normal.

Les affichages des différents outils (qui n'existent pas sur la carte, ou qui sont du hard externe) sont tous dynamiques (changent au fil du temps) mais cependant ils ne sont pas rafraîchis en temps réel pour ne pas dégrader les performances de l’émulateur. En règle générale, tous les affichages sont faits lors d'une HTR, une HTR sur n. L’utilisateur peut régler la vitesse d’affichage dans Emulateur/Réglages/Intervalle Affichage (un nombre faible indique une vitesse de réaffichage élevée impliquant une vitesse d’émulation de la carte ralentie : la somme affichage+émulation étant constante si l’une augmente, l’autre baisse). Ce système peut générer des effets stroboscopiques (la donnée change mais l’affichage ne voit qu’un changement sur n).

Les commandes accessibles par les menus sont réparties dans 3 groupes : un menu pour les commandes relatives à la fenêtre principale (le Terminal) ; un menu pour les commandes relatives aux fenêtres des différents émulateurs ; un menu pour les commandes relatives aux outils d’investigation, le débogueur. Ces menus correspondent en fait au niveau de l’utilisateur. L’utilisateurnovice se contentera du menu Terminal. Au bout d’un moment d’utilisation, l’utilisateur habitué pourra utiliser également le menu Emulateur. Enfin pour les utilisateurs avancés qui voudront laisser traîner leurs yeux en mémoire ou mettre leur nez dans le code 68000, il existe le menu Débogueur.
 
 
 
 

13) Le menu Terminal

Toutes les commandes de ce menu agissent sur le terminal intégré. Elles ne fonctionneront donc pas sur un terminal externe du genre HyperTerminal.

Charge Terminal: permet de recopier dans le terminal intégré un fichier texte FORTH, de la même façon que l'on ferait avec un CTRL C, CTRL V dans la fenêtre d’un l'HyperTerminal sur un PC. C’est la méthode officielle pour télécharger tous les programmes sur la carte. Le transfert peut alors être interrompu par CTRL C, X, Q, ou S. CTRL L est un raccourci clavier pour cette commande. L’extension par défaut de ce type de fichier est FOR.

Sauve Terminal: sauvegarde tout le contenu du terminal intégré (soit au maximum les dernières 2048 lignes) dans un fichier texte sur le PC. Cela permet de garder une trace de l'exécution ou des erreurs. L’extension par défaut de ce type de fichier est TRM.

Efface Terminal: nettoie la fenêtre du terminal intégré (soit au maximum 2048 lignes). Impossible de revenir en arrière.

Charge Xmodem: permet de charger des données dans la carte à partir d’un fichier selon le protocole Xmodem. Seuls les programmes FORTH utilisant XMODEM.FOR peuvent être utilisés. Pendant ce temps les entrées/sorties ne partent plus dans le terminal intégré. A l’initialisation du chargement, le programme FORTH dispose de 30 secondes pour se synchroniser. Une fois le transfert entamé, le programme doit au moins recevoir une trame toutes les 100 secondes. L’exemple type est le programme EVOLUTIO.FOR qui permet de tester une nouvelle ROM. Lancez d’abord ce programme, puis le menu Charge Xmodem avec un fichier binaire d’une version de fichier ROM différente. Sur le terminal 3 compteurs apparaissent. Le premier (ESSAIS) indique le nombre d’essais restant avant d’abandonner en cas de transfert difficile. Le deuxième (ACK) indique le nombre de blocs de 128 octets correctement transférés. Le troisième (NACK) indique le nombre blocs erronés et qui ont dû être réémis. Il n’y a pas d’extension par défaut pour ce type de fichier.

Sauve Xmodem: permet de sauvegarder les données envoyées par la carte dans un fichier selon le protocole Xmodem. Seuls les programmes FORTH utilisant XMODEM.FOR peuvent être utilisés. Pendant ce temps les entrées/sorties ne partent plus dans le terminal intégré. A l’initialisation de la sauvegarde, le programme FORTH dispose de 30 secondes pour se synchroniser. Une fois le transfert entamé, le programme doit au moins émettre une trame toutes les 100 secondes. Au delà la commande s’annule. CTRL X est un raccourci clavier pour cette commande. L’exemple type est le programme GIF.FOR (nécessite le chargement préalable de XMODEM.FOR) qui permet de générer des fichiers GIF. Lancez d’abord ce programme, puis à l’invite le menu Sauve Xmodem sur un nouveau fichier GIF. Sur le terminal les 3 compteurs, avec à peu près la même signification que pour Charge Xmodem, apparaissent. Il n’y a pas d’extension par défaut pour ce type de fichier. Le transfert s’arrête tout seul de façon nominale ou en cas d’erreur. Pour l’arrêter en force, faire un RESET quelconque.

Verrouillage Majuscule: tous les caractères alphabétiques seront mis en majuscule à la saisie dans le terminal intégré avant d’être envoyé au FORTH, qui est un grand adepte des majuscules.

Réglages: contient tous les réglages relatifs au menu Terminal. Permet de définir si on utilise le terminal intégré ou si on utilise un terminal externe branché sur un port série du PC (ce peut aussi être grâce à un rebouclage du COM1 vers COM2 du PC, l'HyperTerminal de Windows). Les entrées/sorties peuvent être routées vers 0, 1, plusieurs ou toutes les interfaces. Attention de ne pas en abuser. Permet de définir les couleurs de texte et de fond du terminal intégré. Permet de fixer la tabulation courante pour les sorties écran (non encore gérée par le noyau FORTH). Permet de définir la langue du logiciel (anglais ou français). Affiche la vitesse des ports série quand ils sont actifs.

Quitter: permet de sortir définitivement du logiciel. Tous les réglages sont sauvegardés automatiquement. Un clic dans le coin supérieur droit de la fenêtre principale aboutit au même résultat.
 
 
 
 

14) Le menu Emulateur

Les opérations communes à tous les RESETS sont :

Reset Très Froid: cette action est équivalente au RESET froid (voir ci-dessous) à ceci près que toute la mémoire est préalablement effacée et remplie avec le motif de RESET réglable dans l’objet Emulateur/Réglages/Motif RAM Reset Très Froid (voir le chapitre sur la mémoire RAM).

Reset Froid: cette action entraîne le RESET du 68000 et de ses périphériques et donc de la carte. Dans le cas où le 68000 est arrêté suite à une erreur ou un arrêt volontaire, il est remis en fonction. Toutes les fonctions qui avaient été compilées sont perdues. Même si elles sont encore en partie présentes en mémoire, les pointeurs qui les gèrent sont réinitialisés. La mémoire qui n'est pas initialisée par JPB FORTH n'est pas altérée, ce qui permet d'y stocker des choses. Le contenu de cette mémoire est par contre perdu définitivement dès que l'on quitte l’émulateur. On peut par contre la sauvegarder/recharger par les menus Sauve Mémoire/Charge Mémoire ci-dessous.

Reset Chaud: le RESET chaud permet de ne perdre aucune définition, par contre dans certains cas de plantage, il ne permet pas de reprendre la main, ou il reprend la main avec une mémoire qui n’est pas très propre. Il ne faut donc pas en abuser. Le RESET chaud permet de redémarrer à une adresse configurable dans l’objet Emulateur/Réglages/Adresse Reset A Chaud. Par défaut c'est l'adresse de la fonction ABORT qui est en $AD4C dans la version 2.10 du binaire. Pour d'autres versions du logiciel, c’est de la responsabilité de l’utilisateur que de renseigner ce vecteur (il suffit de faire un HEX FIND ABORT .) et de mettre l'adresse dans le champs mentionné ci dessus pour s'assurer un fonctionnement correct. Pour aider l’utilisateur, en cas d’effacement du fichier MiniForth68k.ini, un système de recherche automatique de ce vecteur est intégré au code (mais il se peut qu’il ne marche pas avec toutes les versions ultérieures de la ROM). Il est à noter que sur la vraie carte actuelle, cette fonctionnalité n'existe pas.

Arrêt: le 68000 est gelé (la LED 68000 passe au rouge). Permet de quasiment suspendre le temps. Seul le 68681 continue de tourner. On peut sortir de cette situation en re-sélectionnant Arrêt, en faisant un RESET ou en quittant le logiciel.

Registres 68000: permet d'afficher le contenu des registres du MC68000 en pseudo temps réel. Un clic dans le coin supérieur droit de cette fenêtre la ferme. Le registre USP, non utilisé, est toujours à 0 (voir aussi le chapitre sur l’émulateur de 68000).

Registres 68681: permet d'afficher le contenu des registres du MC68681 en pseudo temps réel. Un clic dans le coin supérieur droit de cette fenêtre la ferme (voir aussi le chapitre sur l’émulateur de 68681).

Registres 8574: permet d'afficher le contenu des registres d’un PCF8574 en pseudo temps réel. Un clic dans le coin supérieur droit de cette fenêtre la ferme (voir aussi le chapitre sur l’émulateur de ports 8574/8574A).

Registres 8574A: permet d'afficher le contenu des registres d’un PCF8574A en pseudo temps réel. Un clic dans le coin supérieur droit de cette fenêtre la ferme (voir aussi le chapitre sur l’émulateur de ports 8574/8574A).

Registres 24C512: permet d'afficher le contenu des registres d’une mémoire 24C512 (soit un vidage de la mémoire) en pseudo temps réel. Un clic dans le coin supérieur droit de cette fenêtre la ferme (voir aussi le chapitre sur l’émulateur de mémoire EEPROM 24C512).

Charge Mémoire: permet de mettre dans la mémoire de la carte un fichier du PC contenant par exemple des données à traiter. Attention: tout le fichier est chargé et cette commande travaille dans le plan RAM de 4Mo sans redondance (quels que soient les réglages des objets longueur et redondance de la RAM). L’adresse destination en mémoire est demandée en hexadécimal. Si le fichier déborde de l’espace RAM , il est tronqué (pas de rebouclage en début de RAM). Cette fonctionnalité n’existe pas sur la vraie carte où tous les transferts de données se font par XMODEM. Il n’y a pas d’extension par défaut pour ce type de fichier.

Sauve Mémoire: permet de mettre une image de la mémoire de la carte dans un fichier du PC contenant par exemple des résultats traités. Attention: cette commande travaille dans le plan RAM de 4Mo sans redondance (quels que soient les réglages des objets longueur et redondance de la RAM). L’ adresse source en mémoire et la longueur sont demandées en hexadécimal. Si la zone déborde de l’espace RAM , le fichier est tronqué (pas de rebouclage en début de RAM). Cette fonctionnalité n’existe pas sur la vraie carte où tous les transferts de données se font par XMODEM. Il n’y a pas d’extension par défaut pour ce type de fichier.

Réglages: contient tous les réglages relatifs au menu Emulateur. Permet de spécifier l’intervalle de la période HTR et le nombre d’instructions 68000 par HTR (voir ci-dessus le séquencement de la carte). Permet de choisir l’intervalle d’affichage en HTR (voir ci-dessus Principe généraux de l’interface graphique), le motif écrit dans la RAM lors d’un RESET très froid, l’adresse de branchement lors d’un RESET chaud. Permet de définir les longueurs et type de ROM/RAM. Définit la couleur des LEDS des fenêtres Registres 8574 et 8574A.
 
 

15) Le menu Débogueur

Ce menu est réservé aux utilisateurs avancés. Ne vous y aventurez que quand vous aurez une bonne maîtrise du logiciel et une bonne connaissance de ce document, du 68000 et de la carte. En règle générale, les outils de ce menu n’ont hélas pas d’équivalent sur la vraie carte.

Vidage Mémoire:

Permet d’afficher une fenêtre visualisant le vidage du plan mémoire (c’est à dire ce que voit le 68000) en pseudo temps réel. L’interface permet de visualiser tous les 4Go d’espace adressable sur 32 bits en modifiant l’adresse de base en hexadécimal en haut à gauche. Pour déplacer la zone visualisée on peut utiliser Page Haut/Page Bas ou Flèche Haut/ Flèche Bas. Comme le 68000 n’a que 16Mo d’espace adressable (le bus ne sort qu’en 24 bits), le reste de l’espace consiste en une réplication de cette zone de 16Mo, selon le même principe que la RAM redondante de la carte dans son espace de 4Mo.

Quand il y a des valeurs ? ?, cela signifie qu’il n’y a rien dans le plan mémoire à cette adresse (ni RAM, ni ROM, ni périphérique) et qu’un accès avec le FORTH à cette adresse se soldera par une erreur bus rattrapée par le logiciel qui arrêtera l’émulateur 68000. L’affichage est dynamique et permet de voir les compteurs évoluer, les zones mémoires se remplir, il permet aussi de voir l’effet du changement de la taille RAM et de la redondance. Le seul manque de cet outil est qu’il permette également d’éditer la mémoire. Mais ce serait dangereux et le FORTH est là qui permet de le faire de façon on ne peut plus simple.

Sauve Vidage: sauvegarde tout le contenu de la fenêtre de vidage mémoire telle qu’il est affiché, dans un fichier texte sur le PC. Cela permet de garder l’image d’une zone mémoire comme référence pour faire une comparaison ultérieure. L’extension par défaut de ce type de fichier est DUM.

Désassemblage Mémoire:

Permet d’afficher une fenêtre visualisant le désassemblage du plan mémoire (c’est à dire ce que voit le 68000) en pseudo temps réel. L’interface permet de visualiser tous les 4Go d’espace adressable sur 32 bits en modifiant l’adresse de base en hexadécimal en haut à gauche. Pour déplacer la zone visualisée on peut utiliser Page Haut/Page Bas ou Flèche Haut/ Flèche Bas.

Quand il y a des valeurs ? ? dans la zone vidage, cela signifie qu’il n’y a rien dans le plan mémoire à cette adresse (ni RAM, ni ROM, ni périphérique) et qu’un accès avec le FORTH à cette adresse se soldera par une erreur bus. L’affichage est dynamique et permet de voir le code se construire ou changer.

C’est un désassembleur 68000 classique auquel une zone FORTH a été adjointe pour présenter le nom de la routine FORTH sur laquelle un JSR ou BSR pointe. On distingue 6 zones dans l’exemple de désassemblage de la fonction FORTH BELL:

Adresse Mnémonique Opérande FORTH Vidage Ascii

00008E8E SUB.W #$454C,D2 04 42 45 4C .BEL

00008E92 MULS.L D0,D7:D2 4C 00 2D 07 L.-.

00008E96 MOVEQ #$07,D7 7E 07 ~.

00008E98 BSR $00008DBE (EMIT) 61 00 FF 24 a.ÿ$

00008E9C RTS 4E 75 Nu

On peut ainsi aisément décompiler cette fonction (les deux premières lignes ne sont pas significatives) et obtenir :

: BELL 7 EMIT ;

Mais le but de cet outil n’est pas de ressourcer tout le JPB FORTH, c’est seulement pour quand on a un doute, de vérifier que le travail de compilation a été bien fait.

Sauve Désassemblage: sauvegarde tout le contenu de la fenêtre de désassemblage mémoire telle qu’il est affiché, dans un fichier texte sur le PC. Cela permet de lister un morceau de code. L’extension par défaut de ce type de fichier est DES.

Trace: permet d'afficher le contenu de la fenêtre système de trace. Pour fermer cette fenêtre il faut impérativement recliquer sur le menu Trace. Cette fenêtre sert en partenariat avec le menu suivant Réglages qui fixe les conditions, à stocker la trace des instructions 68000 (contenu des registres+OPCODES). Pour sauver cette trace on peut faire un copier coller vers une autre fenêtre d’un éditeur de texte Windows (par exemple WordPad). Voici par exemple ce que l’on obtient si on trace la routine BELL vu ci-dessus :

====== TRACE PC=$00008E94 ==================== 24-01-2002 23:04:03 ======

Pas 0

D0=0000FFFF 00000000 F20CF93E 00000000 00000283 00000327 00000000 00000000

A0=00004000 0040C000 00000000 00000000 00000501 00008E8E 00003004 00003FE8

SSP=00003FE8 USP=00000000 SR=2004 PC=00008E94 MOVE.L D7,-(A6)

Pas 1

D0=0000FFFF 00000000 F20CF93E 00000000 00000283 00000327 00000000 00000000

A0=00004000 0040C000 00000000 00000000 00000501 00008E8E 00003000 00003FE8

SSP=00003FE8 USP=00000000 SR=2004 PC=00008E96 MOVEQ #$07,D7

On obtient les conditions de déclenchement, la date et pour chaque pas du 68000, son numéro, le vidage de tous les registres du 68000 et enfin le désassemblage de l’instruction (non encore exécutée, elle le sera lors du passage au pas suivant).

Efface Trace: nettoie la fenêtre de trace. Impossible de revenir en arrière.

Réglages:

Permet de spécifier les conditions de déclenchement de la trace.

Pour rester simple le critère de déclenchement est soit quand le PROGRAM COUNTER du 68000 atteint une certaine adresse sur 32 bits (quand Et Registre vaut Aucun), soit une double condition sur la valeur du PC sur 32 bits et sur la valeur d’un registre 68000 sur 16 bits (quand Et Registre vaut le nom d'un des 16 registres du 68000). Pour passer en mode trace pas à pas lors de l’appel de la fonction BELL renseignez la fenêtre Réglages Débogueur comme ci-dessus ( pour trouver l’adresse de la fonction BELL dans votre ROM, il suffit de faire HEX FIND BELL . ) puis taper BELL et valider. Vous obtiendrez quelque chose comme la trace ci-dessus. Noter que le bouton d’armement ressort lorsque le critère de déclenchement est rencontré et que l’on passe du mode normal au mode trace. On rebascule vers le mode normal quand le nombre d’instructions 68000 prévu (ici 5) est déroulé. Ce nombre d’instructions est modifiable même une fois en mode trace.

C’est une trace en mode pas à pas, c’est à dire que vous devez valider chaque pas en appuyant sur le bouton Pas (la LED 68000 est passée en rouge pour indiquer que le 68000 est arrêté). C’est très pratique pour suivre le 68000.

Vous pouvez également faire une trace en mode running en appuyant sur le bouton Exécution avant d’armer la trace. C’est pratique quand le nombre de pas à faire et grand et que vous ne savez pas trop ce que vous cherchez. Vous ferez alors du dépouillage.

Vous pouvez enfin passer du mode trace pas à pas au mode trace en mode running en appuyant sur le bouton Exécution une fois que vous êtes entrés en mode trace pas à pas (l’inverse n’est pas faisable).

L’utilisation d’un registre en plus du PC pour le déclenchement n’a rien de sorcier si ce n’est qu’il faut savoir quelle valeur chercher et par quel registre elle va transiter (se reporter au site de JPB FORTH pour connaître l’utilisation des registres).

Statistiques:

Permet d’afficher une statistique sur les CODEOPS utilisés depuis le dernier RESET et de voir l’activité du CPU.

Les 65536 CODEOPS sont représentés par des barres verticales comptant le nombre d’exécution de chaque CODEOP (ce nombre étant codé sur 32 bits, il ne peut dépasser les 4 milliards). Quand on clique sur le sommet d’une barre, le nombre de fois où elle a été exécutée et l’instruction s’affichent en haut (ici BCS). Par la suite, le nombre de fois est continuellement rafraîchi. Deux échelles verticales sont disponibles, linéaire et logarithmique. Cette statistique est réinitialisée lors des RESETS et lorsque l’on clique sur le menu Efface Statistiques. Remarquez que le sommet des barres en jaune qui indique le delta entre deux affichages successifs. Naturellement ce delta semble plus grand après un RESET du fait du peu d’instructions. En gardant le doigt appuyé sur CTRL et en cliquant à la souris à droite ou à gauche dans ce graphique on peut zoomer, mais ca n'a pas un grand intérêt.

Le deuxième écran plus classique indique quel pourcentage du temps le 68000 est actif. Notez ici sur l’exemple d’un téléchargement puis compilation que cette dernière sollicite le CPU à 100%, ce qui n’est pas le cas du téléchargement. On notera aussi l’impact sur le niveau de repos quand on modifie le nombre max d’instructions 68k par HTR (prenez par exemple une valeur qui fasse que le niveau de repos n’excède pas 25%). Il existe un programme intitulé G_TACHES.FOR qui a le même objectif. Mais comme les méthodes de calculs sont assez différentes, n’essayez pas de tirer des conclusions sur l’un ou l’autre. Tout ce qui est sûr, c’est qu’ils voient les mêmes pics quand il y en a.

Les couleurs des 3 courbes sont réglables dans Débogueur/Réglages/Couleur Opcodes, Nouveaux Opcodes, Activité.

La vitesse générale de réaffichage (l’intervalle d’affichage en HTR) a également un impact sur les affichages de cet écran.

Efface Statistique: remet à 0 les compteurs d’instructions d’OPCODES. Impossible de revenir en arrière.
 
 
 
 

16) Le menu ?

A propos de MiniForth68k: donne la version courante de l’émulateur et l'adresse du site de JPB FORTH. Un clic dans le coin supérieur droit de cette fenêtre la ferme.
 
 
 
 
 
 

17) Historique et évolutions

V0.5 : le 27 janvier 2002 première version en béta test envoyée à tous les membres du groupe de discussion pour une première évaluation.

V0.6 : le 1 février 2002 ajout des menus Charge Xmodem et Sauve Xmodem ce qui permet d’utiliser le programme de création d’images GIF.FOR. Le CTRL X est maintenant affecté à la fonction Sauve Xmodem. Ajout d’un module de statistiques permettant de voir l’activité du CPU.
 
 

18) Compatibilité, version et bugs

NOYAU V2.10:

MiniForth68k a été conçu et débogué face à la ROM 16Ko du 10/12/2000 de JPB FORTH. Très peu de bogue ont été trouvés à ce jour dans cette version ne gérant pas en natif l'allocation de la mémoire dynamique. A savoir :
Décalage de 4 octets des vecteurs d’interruption 24 à 31 (criticité nulle) ;
Passage à 1 du bit OP4 du 68681 (Osda) lors de l’exécution de la fonction RS232_INIT (criticité mineure) ;
(bogues corrigées dans les versions suivantes).

TELECHAR.FOR V1.02:
Pas de problème mais ne sert pas car déjà intégré à la ROM V2.10.

MEMOIRE.FOR V1.01:
Pas de problème.

G_TACHES.FOR V1.10:
Pas de problème.

XMODEM.FOR V2.00:
Pas de problème.

EVOLUTIO.FOR V1.00:
La première trame xmodem est systématiquement nackée (criticité mineure) (corrigée dans les versions suivantes).
Fonctionne néanmoins.

BAUDRATE.FOR V2.00:
Le changement de vitesse ne se voit qu’en passant par un port COM réel.
Pas de problème.

PCF8574.FOR V1.00:
Utiliser le menu Emulateur/Registres 8574 pour en voir l'effet et ajouter le programme TEST_I2C.FOR.
Pas de problème.

PCF8574A.FOR V1.00:
Utiliser le menu Emulateur/Registres 8574A pour en voir l'effet.
Pas de problème.

TEST_I2C.FOR V1.00:
Nécessite la compilation préalable de PCF8574.FOR.
Utiliser le menu Emulateur/Registres 8574A pour en voir l'effet.
Pas de problème.

EEPROM.FOR V1.00:
Utiliser le menu Emulateur/Registres 24C512 pour en voir l'effet.
Bogue dans certains cas très rares selon la longueur de ce qui est écrit dans l’EEPROM (corrigée dans les versions suivantes).
Fonctionne nominalement dans les autres cas.

ASM68000.FOR V1.00:
Prendre impérativement le modèle mémoire RAM 256 Ko redondante ou le modèle 1Mo redondante ou non.
Effacer l’assembleur (FORGET_ASSEMBLEUR) quand on claque une EEPROM et qu’on a utilisé l’assembleur.
Pas de problème.

SQRT.FOR V1.00:
Pas de problème.

RS232B.FOR V1.00:
Non testé.

INTERCO.FOR V1.00:
Non testé.

FLOTTANT.FOR V1.11:
Nécessite la compilation préalable de ASM68000.FOR.
Bogue non critique d’interprétation de la norme IEEE sur l’exposant (corrigée dans les versions suivantes).
Fonctionne néanmoins.

FLOTMATH.FOR V1.00:
Nécessite la compilation préalable de FLOTTANT.FOR.
Bogue sur les sinus, cosinus (il manque un modulo 2PI) (corrigée dans les versions suivantes).
Fonctionne néanmoins.

CALCULET.FOR V1.00:
Nécessite la compilation préalable de FLOTMATH.FOR.
Bogue non critique sur le changement de signe d’un nombre commençant par 0.xx.
Fonctionne néanmoins.

VT100.FOR V1.00:
Nécessite un terminal externe convenablement configuré (le terminal intégré ne supportant pas le protocole VT100).
Pas de problème.

GESTMEM.FOR V1.00:
Pas de problème.

GIF.FOR V1.20:
Nécessite la compilation préalable de XMODEM.FOR.
Pas de problème.
Voir le paragraphe intitulé Séquencement et performances de la carte pour avoir une idée des temps d’exécution.
Voir aussi dans le paragraphe sur le menu Terminal, le menu Sauve Xmodem pour la mise en œuvre.
Attention: certains logiciels PC ne savent pas visualiser les GIFS animés (essayez-en plusieurs).
 
 

19) Chiffres, remerciements, projets et copyrights

MiniForth68k a été écrit en langage C à l’aide de LabWindows CVI, un environnement de développement sur PC/SUN issu du monde industriel et que je conseille à tous ceux qui veulent faire de petites applications graphiques sans se prendre la tête avec les API de Windows. Il est basé sur un compilateur C Watcom, est d’une stabilité remarquable et possède un excellent débogueur. Dommage que ce ne soit pas un produit grand public.

Le source fait 6000 lignes de code parfois dense et représente un source de 400 Ko. L’émulateur 68000 représente 1/3 du volume, les autres émulateurs 1/3 et la gestion de l’interface graphique le dernier 1/3. Il a été écrit " from scratch " en un mois et demi et à peu près 350 heures de codage/debug/test, sans bière, ni café, mais le FORTH était avec moi !

Tout d’abord merci à Charles H. MOORE pour avoir créé ce langage semi-compilé si original à la fin des années 60.

Ensuite merci à JPB d’avoir apporté les éclaircissements techniques sur le fonctionnement interne de sa machine et de ses programmes quand ma compréhension faisait défaut. Merci à lui aussi pour avoir assuré la phase d’alpha tests.

Enfin merci à Motorola d’avoir fabriqué le 68000 qui a animé tant de machines et supporté tant de langages. Ecrire de l’assembleur sur ce CPU était un plaisir.

Utilisez le groupe de discussion de JPB FORTH pour communiquer sur les sujets qui pourront intéresser les autres membres au sujet de l’émulateur (questions, points à éclaircir dans la documentation, bogues trouvées, évolutions proposées) et proposer vos projets d’applications tant matériels que logiciels (ca fera toujours plaisir à JPB):

jpb_forth@yahoogroups.com

Pour toute remarque plus personnelle ou nécessitant une réponse plus rapide, vous pouvez aussi me joindre sur fbroton @ free.fr.

Rendez-vous à la prochaine version et bon FORTH d’ici là.
 
 
 
 
 
 
 
 
 
 
 
 

L’émulateur Basilisk II est copyright Christian Bauer.

LabWindows CVI est une marque déposée de National Instruments Corporation.

Windows 95, 98, 2000, NT, Millenium, HyperTerminal, WordPad sont des marques déposés de Microsoft Corporation.

MC68000, MC68681 sont des marques déposées de Motorola Inc..

PCF8574 et PCF8574A sont des marques déposées de Philips Semiconductors.