Rétrocomputing

Remise en état d’un robot Pierron

J’ai eu la chance durant mes années de primaire d’utiliser la tortue Promobile de Jeulin avec le langage LOGO sur un Apple II. Je n’ai pas la chance d’en avoir trouvé une à un prix abordable mais je me suis procuré un robot Pierron assez similaire dans son principe : deux roues motorisés et un crayon qui peut se relever.

Le robot vue de dessus

Le robot vue de dessous

J’ai eu la déception cependant de constater que la carte électronique avait été bidouillée, et son microcontrôleur retiré. Je n’ai pas réussi à identifier le type de microcontrôleur qui était utilisé. J’ai par contre compris comment fonctionnait la carte de contrôle, et la présence de straps m’a permis d’interfacer un Arduino en lieu et place du µC original.

La carte de contrôle sans son microprocesseur

L’Arduino connecté à la carte de contrôle

La carte est alimentée en 12V et dispose d’un régulateur 5V. Seuls 6 signaux sont utilisés pour piloter le robot par l’Arduino. Pour chaque moteur un signal indique le sens, un autre provoque un pas. Deux sorties supplémentaires sont commandés par deux autres signaux tout ou rien. L’un est connecté au solénoïde du crayon, l’autre était connecté à un électro-aimant. Lorsque j’ai reçu le robot, ces six signaux et l’es deux al’alimentation avaient été pontés sur un connecteur DIN à 8 broches passablement abîmé qui sera changé pour un connecteur DIN 6 broches neuf.

Durant le développement du firmware de l’Arduino j’utilise le port USB, mais à terme je préfère implémenter une liaison série RS232 pour communiquer avec l’Arduino.

La communication ainsi que l’alimentation se font au travers d’un cordon ombilical à 6 broches : 4 pour la liaison série, et 1 pour l’alimentation. Le cordon est composé de deux câbles, l’un blindé à 4 fils en AWG 28, le second non blindé à 2 fils en AWG 22 : le robot consomme presque 10W (0,8A à 12V).

Il à été assez simple de trouver le nombre de pas par centimètre : 20 ainsi que le nombre de pas pour faire une rotation d’un degré : 4. Le crayon se trouve au cente de rotation, pour tourner il faut que les deux moteurs soient dans des sens opposés et effectuent le même nombre de pas. Il y à donc deux sens de rotation possibles.

Avec ces informations, la première version du programme permettait d’avancer ou de reculer d’une certaine distance, de tourner à droite ou à gauche d’un certain angle, de lever et baisser le crayon.

Je me suis attaqué au tracé de cercles et d’arcs. Deux approches étaient possibles, soit faire varier la fréquence des pas de chaque moteur indépendamment, soit effectuer de petits trajets pour s’approcher d’un cercle. J’ai opté pour la seconde solution pour son coté géométrique.

Imaginons que l’on souhaite réduire un arc de 90 degrés à 1 segment, le robot va devoir tourner de 45 degrés, avancer, et tourner à nouveau de 45 degrés.
Avec deux segments le robot devra tourner de 22,5 degrés, avancer, tourner de de 45 degrés, avancer, et enfin tourner à nouveau de 22,5 degrés.
Avec trois segments cela donne tourner de 15 degrés, avancer, tourner de 30 degrés, avancer, tourner de 30 degrés, avancer, puis tourner de 15 degrés.

On constate donc que deux valeurs d’angles sont à calculer, l’angle de départ et d’arrivée que j’appellerai A0, et l’angle à effectuer entre les segments que j’appellerai An. Pour N segments d’un angle A la formule est :

  • A0 = A/2N
  • An = A/N

Les longueurs L des segments pour un cercle de rayon R se calculent ensuite avec la formule :

  • L = R / sin((180-An)/2) * sin(An)

Avec ces données, la fonction « arc » deviens réalisable avec les primitives de déplacement déjà codées, mais le nombre de segments pouvant être important il à fallu revoir l’architecture du programme de manière à mettre en place un buffer de déplacements ainsi qu’un fonctionnement par interruptions.

Voici le code actuel de l’Arduino :

Prochaines étapes : faire la plaquette avec le MAX232, gérer les signaux RTC/CTS, puis enfin le pilotage en LOGO depuis un Apple II !

Remplacement de condensateurs (bis)

J’ai terminé la remise en état du Macintosh Portable rétroéclairé (M5126) à l’aide du un kit de capas de Console5. Ce kit est prévu pour le modèle non rétroéclairé (M5120) mais il contient tous les condensateurs nécessaires à l’exception d’un 4.7µf 25V, que j’avais en stock.

Il est utile d’utiliser une lampe-loupe, ou mieux, pour bien souder les plus petits condensateurs. Ils sont pour certains particulièrement proches de connecteurs en plastique.

Malgré le changement des condensateurs dans le bloc d’alimentation, il ne marche pas : il fournit bien 7.5v à vide mais la moindre charge le fait se mettre en protection. A suivre …

Utilisation du Diagnostic Mode sur Macintosh SE/30

Au cours de mes recherches sur les détails techniques du SE/30, j’ai découvert sur mac68k.info qu’il existait un « Diagnostic Mode » sur certains Macintosh 68k. Ce mode est utilisé par le TechStep, un appareil permettant de tester les divers composants d’un Macintosh.

Une manière simple d’accéder à ce mode est d’utiliser le bouton d’interruption du mac (le « Programmer’s Interrupt switch ») avant que l’ordinateur ne démarre l’OS.

Au delà des possibilités de tester le hardware de la machine, ce mode dispose de deux éléments très intéressants :

  • la commande « *D » permettant de déposer des données, et donc aussi du code, dans la mémoire de l’ordinateur cible
  • la commande « *G » permettant de lancer l’exécution du code sur l’ordinateur cible à une adresse donnée

Ces commandes sont d’ailleurs mises en évidence dans la section « TechStep Requests CPUID on IIsi », sur la page de mac68k.info, où le TechStep envoie un petit programme permettant de récupérer le CPUID de la cible.

J’avais également vu le travail de David Ludwig sur GitHub qui a réalisé une ROM pour Mac Plus en C++ servant à afficher une image à l’écran. J’ai donc pensé à utiliser le « Diagnostic Mode » plutôt que de devoir graver une ROM pour lancer le programme de David.

Bien évidemment il a fallu modifier son code, qui est spécifique à un Mac Plus, et j’ai du adapter la gestion de la pile pour pouvoir retourner au « Diagnostic Mode » après exécution ; il est ainsi possible de faire plusieurs tests sans devoir appuyer de nouveau sur le bouton d’interruption à chaque fois.

Le code source modifié est disponible sur GitHub, il nécessite la suite g++-m68k-linux-gnu.

J’ai crée un outil, stm_send, également disponible sur GitHub, servant à uploader le code dans la mémoire du mac puis à l’exécuter. Le transfert se faisant en hexadécimal à 9600 bauds ce n’est pas très rapide. Les réglages effectués sur le port série sont spécifiques à linux.

Il serait possible d’accélérer les transferts en le faisant en deux temps : envoyer d’abord un programme qui passe le SCC à une vitesse plus élevée avant de rendre la main au « Service Mode », puis envoyer les données.

Pour uploader le binaire sur le mac, après compilation, la procédure est la suivante :

  1. connecter le port série du mac « Modem » à un ordinateur
  2. allumer le mac
  3. lorsque le curseur de la souris apparait appuyer sur le bouton d’interruption
  4. exécuter le programme stm_send

Et voici le résultat :

Au delà de la possibilité d’afficher une photo de Harry, mon chat, je vois deux choses intéressantes qui pourraient voir le jour grâce à cette méthode :

  • créer des disquettes de démarrage en ne disposant que d’une machine sans OS
  • installer un OS de base sur un disque SCSI sans disposer des disquettes d’installation

Pour peu qu’on réussisse à appeler correctement les routines qui sont dans la ROM du Macintosh cela ne devrait pas être trop complexe.

Mon problème pour l’instant est que routines utilisent la convention de passage de paramètres du langage Pascal, que je ne connait pas du tout, et pour l’instant je n’arrive pas à appeler la moindre routine sans faire crasher la machine 🙁

A suivre donc …

 

Remplacement de condensateurs

J’avance bien dans mes remplacement de condensateurs :

  • le Macintosh 128K est terminé et entièrement opérationnel, c’est une machines simple à remettre en état
  • le SE/30 également, mais en l’absence de pile de sauvegarde de la PRAM son fonctionnement est aléatoire, mais après effacement de la PRAM en profondeur à l’aide de TechTool Pro il reviens à la normale, à suivre [22/09 : il y avait une trace coupée, celle du rafraîchissement vertical, qui sert de timing]. La carte réseau fonctionne bien, c’est une machine idéale pour créer les disquettes 400Ko qu’utilise le 128K
  • les Powerbook sont en piteux état, beaucoup de plastique cassé, pas de disque dur, et des condensateurs fuyards, mais ils ont tous deux des extensions de mémoire. Je ne suis pas certain d’avoir envie de m’en occuper, peut-être pourrais-je les échanger si une pièce vient à manquer au cours des restaurations des autres machines…
  • le Lisa donne à nouveau des signes de vie, son électronique est passée au vinaigre blanc, rincée, et à ma surprise je n’ai pas encore trouvé de trace coupée, beaucoup sont cependant abîmées. Je vais avoir encore du boulot sur cette machine …
  • j’ai commandé un kit de pastilles de mousses pour réparer le clavier du Lisa qui ne fonctionne plus

Le Mac SE/30 explorant le « web » des Transmusicales de Rennes, contenu sur un CD de l’époque, avec le navigateur NCSA Mosaic. Vous trouverez une copie du site ici.

Le retour de ma collection

Durant mes vacances j’ai pu accéder au grenier dans lequel, au tournant du siècle, j’avais pu entreposer quelques ordinateurs qui étaient déjà « rétros » à l’époque… Je ne savais plus ce que j’avais stocké ce fut donc une surprise pour moi.

Quelles trouvailles :

  • un Macintosh 128K, avec clavier et pavé numérique
  • un Lisa II, avec son clavier
  • un Macintosh portable rétroéclairé (j’avais déjà ici le modèle non rétroéclairé)
  • un SE/30 avec clavier et souris
  • deux Powerbook, un 165 et un 180

Il reste un équipement que je n’ai pu charger dans la voiture : une station Next complète avec son écran. Il va être indispensable de récupérer cette machine rapidement pour la préserver également.

J’ai commandé quelques éléments pour pouvoir faire fonctionner à nouveau ces machines :

  • sur console5, des kits de condensateurs pour le Macintosh 128 (carte analogique+carte mère), les deux Macintosh portables, et le SE/30 (carte analogique+carte mère)
  • sur Big Mess o’ Wires j’ai commandé un Floppy Emu Model C, il permet de simuler un lecteur de disquettes pour Macintosh et pour Lisa
  • sur la boutique ebay d’Axel Muhr j’ai commandé une ROM « 32 bits clean » pour le SE/30
  • sur la boutique ebay d’Inertial computing j’ai commandé une carte SCSI2SD qui permet de remplacer le bruyant disque dur par une carte SD
  • je me suis procuré auprès de Patrick Schäfer un PCB et les deux composants programmables pour construire un IDEFile, c’est un émulateur de disque dur Profile pour le Lisa
  • pour le SE/30, 4 barrettes de mémoire de 16Mb chez OWC pour passer le SE/30 à 68Mb de RAM, après coup, j’aurai du en prendre 8 pour le passer à 128Mb
  • enfin, une souris apple M0100 sur le bon coin car ni le Lisa ni le Macintosh 128 n’avaient la leur. J’en commanderai une seconde prochainement…

 

(La photo du Lisa a été faite mi septembre, après quelques heures de travail dessus)