Le calculateur

IBM 1620

--ooOoo--

          Le calculateur IBM 1620, orienté cartes et rubans perforées, était la machine installée au Bureau d'Etudes de l'usine de SUD AVIATION quand j'ai été embauché comme programmeur débutant. Je ne dissimule d'ailleurs pas mon plaisir à décrire cette machine qui fut mon vrai premier contact avec l'informatique d'entreprise.

           Dans trois armoires, cette machine se composait des 5 éléments suivants  :

      1. l'unité de mémoire tout derrière IBM 1623,
      2. l'unité centrale IBM 1620 avec son pupitre plein de lumières !..,
      3. le clavier de clés et de boutons-poussoirs,
      4. la console KSR 33 à ruban perforé
      5. le lecteur/perforateur de cartes IBM 1622.

          L'ensemble était complété de deux types de machines auxiliaires :

      1. de 3 perforatrices de cartes IBM 029,
      2. d'une trieuse IBM 82.

La perforatrice IBM 029

La trieuse IBM 82

          Une unité qui me tînt à coeur et que j'ai fini par enfin obtenir fut le traceur de courbes IBM 1627 ci-dessous dont je parlerais dans le traitement de la fabrication des moules de pales en fibres synthétiques :

              

I - Le calculateur proprement dit :

L'unité de mémoire :

          L'unité de mémoire, avec plein de lampes comme on pouvait en voir dans les anciens poste de radio, était une armoire quasiment remplie par les blocs de mémoire à tores de ferrite, si je me souviens bien, qui dégageait une intense chaleur refroidie par deux énormes ventilateurs situés de chaque côté.

         La taille de cette mémoire était de 20000 positions décimales en code BCD (Binary Coded Décimal) qui devait contenir programme et données.

Anecdote :

l'été, par fortes chaleurs, la ventilation interne ne suffisant pas, il nous arrivait d'ouvrir ses entrailles en dirigeant vers les blocs de mémoire le souffle de deux gros ventilateurs à travers de gros tuyaux de carton récupéré que nous nous confectionnions nous-mêmes !... Absolument récalcitrante sans cela, c'était le seul moyen de faire tourner la machine. A l'époque, il était hors de question d'installer une climatisation adaptée.


L'unité centrale :

          L'unité centrale était un bloc posé sur une table montrant en façade, quand le calculateur travaillait, tout un ensemble de lumières clignotantes qui affichait les différents registres de la machine et en particulier son registre d'état avec son compteur ordinal.

          Pour donner un aperçu, j'ai retrouvé les caractéristiques de performances de la machine au cycle de base de 21 µsecondes :

Opérations sur les entiers
Addition ou soustraction (5 digits) : 560 µsecondes
Multiplication (5 digits par 5 digits) : 4.96 millisecondes
Division (quotient de 5-digits ) : 16.86 millisecondes
   
Opérations sur les réels
longueur variable (2 à 100 digits) et 2 digits d'exposant (-99 à +99)
Pour une mantisse de 8 digits, normalisation comprise :
Addition ou soustraction : 1,2 millisecondes
Multiplication : 12 millisecondes
Division : 41,7 millisecondes

Le clavier de clés et de boutons-poussoirs :

          Grâce aux clés (photographie ci-dessus), nous pouvions pré-initialiser ses registres avant d'appuyer sur le bouton "Start" pour démarrer le programme à exécuter.
          C'est aussi grâce à ces boutons et ces clés que nous pouvions "debugguer" le programme avec l'aide de la console un KSR 33 que nous voyons ci-après.

La console KSR 33 à ruban perforé :

          Cette télétype permettait de concevoir des programmes conversationnels. Elle imprimait jusqu'à 10 caractères par seconde et elle avait un clavier pour saisir du texte alphanumérique. C'est tout simplement le mode console que l'on voit aujourd'hui sur les calculateurs et qui est une reconduction de la fonctionnalité.

          Par ailleurs, j'ai eu l'occasion aussi de m'en servir pour générer des bandes de programmes de commandes numériques.

Le lecteur/perforateur de cartes :

          Cette unité d'entrées/sorties identifiée IBM 1622 utilisait des cartes au format 80 colonnes ci-contre. La vitesse nominale de lecture était de l'ordre de 600 cartes à la minute et la vitesse nominale de perforation était de l'ordre de 300 cartes à la minute. Ce sont des chiffres de mémoire.
          Cette unité et la télétype KSR33 étaient les seuls moyen de communication avec le calculateur, en dehors des clés du pupitre. Le lecteur/perforateur de cartes étant de loin le plus pratique, elles servaient toutes deux de mémoire de masse :

 

II - Les unités auxiliaires  :

          Ces unités nous permettaient de préparer les programmes en vue de les exécuter sur le calculateur. Le langage de programmation était le Fortran II, un langage scientifique. Ces unités étaient de deux types :

La perforatrice de cartes :

          Cette unité IBM 029, aux nombre de 3, nous servait  :

          A l 'une de ces unités était connectée une KSR 33. Elle nous permettait d'imprimer sur papier, en offline, les données que nous perforions sur cartes, sources des programmes, résultats de calculs pour laisser libre le calculateur alors à la disposition d'autres utilisateurs.

La trieuse de cartes :

          Cette unité IBM 82 nous servait  :

 

III - Le traceur de courbes :

          Grâce à l'appui des ingénieurs du département recherche qui étaient responsables de la conception puis de la mise en fabrication des moules de pales, nous pûmes convaincre ma hiérachie de la nécessité d'acquérir un traceur de courbes pour le développement de l'application et de la communication avec les différentes équipes concernées par ce projet, très riche à plusieurs titres, relationnels, techniques et organisationnels.

 

III - L'utilisation du calculateur :

          La faible taille de la mémoire et la vitesse relativement lente du calculateur nous amenait à réaliser des procédures assez laborieuses. Pour donner une petite idée,

          En faisant un petit compte, à raison d'une heure par personne en moyenne, il était difficile de prétendre à plus d'un passage par jour compte tenu qu'il y avait en plus des calculs de production à effectuer en priorité. Aussi, pour ne pas gâcher son tour, nous voyions et revoyions nos programmes-source que nous pouvions imprimer sur un lecteur 029 connecté à une télétype KSR 33.

Procédure pour exécuter un programme :

          Vu la taille de la mémoire, un programme était un paquet ne dépassant pas 300 à 350 cartes de 80 colonnes qu'il nous fallait monter en mémoire. Voici donc la procédure pour lancer l'exécution d'un programme, procédure qui, aujourd'hui, est automatique. Il fallait :

  1. remettre le hardware dans un état initial stable. Pour ce faire, de tête, nous devions :

  2. placer ensuite le paquet de cartes exécutable précédé de deux cartes qui constituaient le "LOADER" et suivi la plupart du temps des données lues,

  3. appuyer sur la touche "LOAD" pour lancer le chargement

  4. appuyer sur la touche "START" pour lancer l'exécution du programme.

          La procédure avec le lecteur de ruban était plus rare car beaucoup moins pratique. J'ai peut-être été le seul à m'en servir pour produire des programmes destinés aux machines à commandes numériques.

          Aujourd'hui, la technique est toujours la même. Seulement avec l'évolution des moyens, mémoires, disques, etc... la procédure explicitée ici est complètement automatisée et masquée par le système.

Procédure pour compiler un programme :

          A cause de la faible la taille de la mémoire, le compilateur Fortran 2, le seul que nous avions, était découpé en 2 phases soient deux modules qu'il fallait enchaîner. Ces deux modules correspondaient et correspondent toujours aujourd'hui aux deux phases du compilateur, une troisième maintenant étant celle de l'optimisation :

          Donc, pour compiler un programme-source, on va retrouver la procédure d'exécution pour les deux phases. Il fallait :

  1. remettre le hardware dans un état initial stable :

  2. placer ensuite le paquet de cartes de la phase 1 précédé des deux cartes "LOADER" et suivi du langage-source du programme à compiler,

  3. appuyer sur la touche "LOAD" pour lancer le chargement de la phase 1

  4. appuyer sur la touche "START" pour lancer l'exécution de la phase 1. La machine commençait alors à travailler et nous voyions très bien titiller toutes les lumières. Suivant le nombre de cartes du programme-source, après un temps de calcul entre 5 et 10 minutes, la machine se mettait à perforer un paquet de cartes, résultat de la phase 1. Un message sur la console KSR 33 nous indiquait qu'il fallait charger la phase 2,

         Il fallait alors :

  5. placer le paquet de cartes de la phase 2 précédé des deux cartes "LOADER" et suivi du paquet de cartes résultat de la phase 1,

  6. appuyer sur la touche "LOAD" pour lancer le chargement de la phase 2,

  7. appuyer sur la touche "START" pour lancer l'exécution de la phase 2. La machine se mettait alors à travailler. Suivant le nombre de cartes du paquet résultat de la phase 2, après un temps de calcul aussi entre 5 et 10 minutes, la machine se mettait à perforer un paquet de cartes, résultat de la phase 2. Un message sur la console KSR 33 nous indiquait que la compilation du programme était terminée.

          C'est ce dernier paquet de cartes qui constituait le module intermédiaire du programme.

Procédure pour construire l'exécutable d'un programme :

          Pour construire un exécutable, il fallait un programme particulier fourni avec la distribution du système "l'éditeur de liens". Pour ce faire, il fallait :

  1. remettre le hardware dans un état initial stable :

  2. placer ensuite le paquet de cartes de l'éditeur de lien précédé des deux cartes "LOADER" et suivi dans l'ordre :

  3. appuyer sur la touche "LOAD" pour lancer le chargement de l'éditeur de liens

  4. appuyer sur la touche "START" pour lancer l'exécution de l'éditeur de liens. La machine commençait alors à travailler. Suivant le nombre de cartes du programme intermédiaire, après un temps de calcul entre 5 et 10 minutes, la machine se mettait à perforer un paquet de cartes, le module exécutable du programme de l'utilisateur.. Un message sur la console KSR 33 nous indiquait que le module exécutable était construit et utilisable suivant la même procédure qui vient d'être décrite.

IV - Mon premier contact avec un assembleur :

          Nous avions chacun un passage par jour. Cette situation nous était à tous assez pesante. De plus, elle était accentuée car il arrivait parfois que, personne n'étant prêt pour tester son programme d'une part et n'ayant pas momentanément d'autres calculs de production à effectuer d'autre part, la machine restât quelques temps sans travailler. Avec mon collègue Genoux, qui en avait déjà quelques notions, nous nous sommes mis à "potasser" l'assembleur de la machine, le SPS. Comme mon chef de service m'avait refusé une petite formation de quatre jours chez IBM pour l'apprendre - trop cher -, et nous avait interdit à tous les deux de l'étudier dans la journée pendant certains temps vides, qu'à cela ne tienne !... je prenais les brochures chaque jour et me formais tout doucettement à la programmation en PSP.... à la maison... Mais dans quel but finalement ?

--ooOoo--