Musique risquée sur une ancienne imprimante de ligne mainframe IBM

À notre Musée d'histoire de l'ordinateur, nous avons récemment acheté un jeu de cartes perforées pour un programme de musique informatique vieux de 50 ans. La plupart des ordinateurs n'avaient pas de cartes son à l'époque, mais les programmeurs créatifs ont trouvé des moyens de diffuser de la musique à l'aide d'imprimantes linéaires. Nous étions un peu inquiets que ce programme puisse endommager l'imprimante, mais nous avons tout de même risqué de l'exécuter sur l'ancien ordinateur central IBM 1401. Comme vous pouvez vous y attendre, la musique jouée par l'imprimante linéaire semble horrible - mais la mélodie peut être analysée et l'imprimante n'a pas été blessée.


L'ordinateur professionnel IBM 1401 a été introduit en 1959, et il est devenu l'ordinateur le plus vendu au milieu des années 1960 - plus de 10 000 de ces systèmes ont été livrés. Le principal avantage concurrentiel de l'IBM 1401 était l'imprimante de lignes haute vitesse IBM 1403. La chaîne de caractères à rotation rapide permettait à l'imprimante d'imprimer 10 lignes par seconde avec une excellente qualité - on pensait que c'était la meilleure qualité avant l'apparition des imprimantes laser dans les années 1970.


Le circuit imprimé de l'imprimante est 1401. Il a 48 caractères différents, qui sont répétés 5 fois.

Les imprimantes de ligne étaient très bruyantes, mais les programmeurs ont vite découvert que lors de l'impression de certaines lignes de caractères à partir du bruit, certaines fréquences pouvaient être extraites. Il était possible de jouer une note en imprimant les lignes nécessaires. Dans la région de 1970, le spécialiste en informatique Ron Mack a codé plusieurs chansons sur des cartes perforées en utilisant le programme musical existant. Il est récemment tombé sur ses anciens programmes et nous a donné l'occasion de les essayer.

Fonctionnement d'une imprimante linéaire


Pour imprimer des caractères, l'imprimante utilise une chaîne de maillons avec des caractères qui tourne à grande vitesse en face du papier, et il y a un ruban encreur entre le papier et la chaîne. L'imprimante produit des lignes de 132 colonnes, c'est-à-dire que chaque colonne possède son propre marteau et son électroaimant. Au bon moment, lorsque le symbole souhaité passe devant le marteau, l'électroaimant presse le marteau contre le papier, et le papier et la bande heurtent le lien, imprimant le symbole.


Moteur d'impression pour imprimante linéaire IBM 1401 (à partir des instructions)

Pour que ce processus fonctionne, l'imprimante doit calculer soigneusement la durée des opérations. La chaîne tourne à une vitesse de 2,3 m / s, et toutes les 11,1 μs le maillon suivant est en face du marteau. Le circuit de commande a à peine assez de temps pour lire l'emplacement de ce symbole dans la mémoire principale, le comparer avec le symbole situé sous le marteau et frapper le marteau en cas de coïncidence. Pour 132 intervalles de temps, chaque malleus a la capacité d'imprimer un caractère; c'est ce qu'on appelle un «scan». Puisqu'il y a 48 caractères dans l'ensemble (sans majuscules), pour imprimer tous les caractères dans n'importe quelle colonne, vous devez répéter ce processus 48 fois. Pour chaque balayage, la chaîne est décalée d'une seule largeur de caractère.


Le jeu de marteaux de l'imprimante IBM 1403. Voici les points d'impact de 132 marteaux (un par colonne). En haut se trouvent les bobines et les fils de 33 des 132 marteaux.

Au bas de la photo, un marteau est montré. En haut à gauche se trouve une bobine électromagnétique et des fils. Nous avons dû remplacer ce marteau après que la bobine a été surchauffée et fumée - la photo montre sa zone noircie (cela s'est produit il y a longtemps et n'est pas lié à la musique).



Génération de musique


Après avoir compris le fonctionnement de l'imprimante, dont le marteau a la capacité de fonctionner toutes les 11,1 μs, il sera plus facile de comprendre la stratégie d'obtention de la musique. En imprimant du texte soigneusement sélectionné, vous pouvez contrôler le temps de réponse des marteaux. Si les marteaux sont déclenchés à certains intervalles, il sera possible de créer les fréquences nécessaires. Par exemple, une note la (440 Hz) peut être obtenue en imprimant une ligne de texte pour que les maillets fonctionnent tous les 1/440 de seconde. Cela peut être réalisé en tapant 1 dans la 1ère colonne (premier marteau), puis # dans la 14e colonne sur le scan suivant, une virgule dans la 30e colonne, etc. Voici la ligne entière que vous devez imprimer pour créer une note. Vous serez peut-être surpris qu'avec seulement 48 positions, le jeu de caractères comprend des événements étranges tels que ⌑ et ‡.

1 ⌑YC# 0 Q 3, ‡FRT 4 - , IU $7 MV . * 9N ⌑ ZE @ P3 

Le diagramme ci-dessous montre la distribution temporelle des marteaux, une fréquence uniforme de 440 Hz, donnée par la ligne de caractères donnée. L'axe des abscisses représente le temps; chaque caractère imprimé est marqué de barres rouges. Les bandes rouges sont réparties uniformément, à une distance de 1/440 seconde, ce qui donne une note à 440 Hz. Chaque barre est marquée d'un symbole associé et d'une colonne sur la page. Notez que les caractères ne sont pas imprimés dans l'ordre dans lequel ils apparaissent sur la ligne. Il n'y a pas de relation simple entre l'arrangement des caractères dans une chaîne et leur séquence temporelle. Quelques lignes grises sont affichées là où le marteau aurait dû fonctionner, mais le symbole est manquant. À ce stade, le réseau se synchronise, il ne peut donc pas imprimer.


Diagramme de distribution du temps pour la note la.

En tapant une autre ligne, vous pouvez générer une autre note. Ci-dessous est une note si, 987 Hz (plus d'une octave plus haut). Comme prévu, plus de notes nécessitent plus de caractères:

 1 @EQ4S J 8. ND ‡ SH 7 AM Y#2 G- KV . 0 DQSJ 7& ND ‡/4 H AMX0 2 QGJ W. 0 DP‡ S 7&AM ‡/4G * MX0 D 3 


Diagramme de distribution du temps pour la note s.

Ce qui suit est une ligne pour une note aiguë (138 Hz). Au début, il n'était pas clair pour moi pourquoi cette note nécessite l'impression d'une chaîne où tous les caractères sont rassemblés en tas, et non dispersés, comme les autres notes. Il s'avère que 138 Hz coïncide avec les marteaux d'affilée. Et bien que les personnages soient côte à côte, ils sont également répartis dans le temps.

 16#UZKP*E&38 


Diagramme de distribution temporelle pour une note nette.

Quel est le risque de la musique en chaîne


Nous craignions que ce programme musical n'endommage notre imprimante. Il y a beaucoup d'histoires sur la façon dont les gens ont cassé les imprimantes en imprimant une ligne qui fait fonctionner tous les maillets en même temps. Je pense que ce sont principalement des légendes urbaines (1403 maillets tirent à leur tour). Cependant, nous craignions que la musique en chaîne ne surcharge la chaîne de l'imprimante et ne se brise. La photo ci-dessous montre une chaîne cassée lors d'une utilisation normale; des fils déchirés et des liens individuels sont visibles.



Une chaîne pour l'imprimante a été faite en tressant un mince fil en un ruban et en y attachant des blocs avec des lettres. Jusqu'à récemment, ces chaînes étaient rares et ne pouvaient pas être remplacées; si le fil était déchiré, il était impossible de le réparer. Cependant, le Musée Techworks! de Binghamton ont récemment trouvé un moyen de restaurer les circuits imprimés. Par conséquent, notre roi chez IBM 1401, Frank King, a approuvé à contrecœur l'utilisation de la chaîne restaurée pour jouer de la musique. Heureusement, la chaîne a parfaitement survécu à la génération musicale. Après avoir étudié le programme de musique, je suis arrivé à la conclusion qu'il tendait le circuit beaucoup moins que l'impression ordinaire, à moins, bien sûr, qu'une résonance particulièrement malheureuse ne se produise.


Circuit imprimé (à l'envers) à courte portée

Le programme




Le code source du programme est depuis longtemps tombé dans l'oubli, j'ai donc démonté les codes machine des cartes pour comprendre comment cela fonctionne (je liste la liste séparément). Tout d'abord, il lit les «cartes de fréquence» qui déterminent quelle ligne imprimer pour quelle note. Il crée en mémoire un tableau de lignes à imprimer, ainsi qu'un tableau avec les noms des notes et les adresses des lignes à imprimer. Ensuite, le programme lit les notes des chansons, une note par carte (la photo montre que pour certaines chansons, vous devez utiliser beaucoup de cartes). Pour chaque note, le programme recherche la ligne correspondante à imprimer dans le tableau. Il imprime une ligne autant de fois que nécessaire, selon la longueur de la note. Remplit en outre un cycle de silence, de 200 à 2000 fois.


Cartes perforées avec le code machine du programme musical. Pour une raison quelconque, le contenu de chaque carte est imprimé deux fois dessus.

Le code machine 1401 est très différent des ordinateurs modernes. L'une des différences est que le code qui s'autodéterminait auparavant était fréquemment utilisé, mais aujourd'hui de telles pratiques sont condamnées. Par exemple, un tableau de lignes pour l'impression est créé en modifiant les instructions de chargement, où le champ d'adresse change. Même les retours des routines utilisent du code auto-modifiable en plaçant l'adresse de retour dans l'instruction jmp à la fin de la routine. Pour traiter une note, le programme génère à la volée une séquence de trois instructions pour charger une ligne, accédez au code d'impression, puis revenez à la boucle principale. Le code auto-modifiant m'a rendu difficile la compréhension du programme, car le code désassemblé ne correspond pas à celui qui a réellement fonctionné.

Derrière les cartes avec le programme se trouvent des cartes de fréquence qui définissent les lignes de chaque note. Le code prend en charge jusqu'à 20 notes différentes, les cartes de fréquence ont donc été sélectionnées séparément pour chaque chanson. Chaque ligne de 132 caractères est divisée en deux cartes, dont la première détermine le côté droit de la ligne. Le nom de la note et la fréquence sont imprimés sur chaque carte dans le coin droit.


Cartes de fréquence

Le dernier jeu de cartes crée une mélodie et chaque note (ou vide) a sa propre carte. Chaque carte a une note et une durée imprimées dessus. Une longue mélodie peut impliquer des centaines de cartes. Il est facile d'enregistrer une nouvelle mélodie sur les cartes - il vous suffit de frapper des notes sur les cartes. Les notes sont indiquées dans le système de notation américain , où le nom de la note est suivi d'un numéro d'octave. Par exemple, C4 est la moyenne de. Étant donné que seuls certains circuits imprimés ont le symbole #, les objets tranchants sont désignés par la lettre S, c'est-à-dire CS au lieu de C #.


Photo d'une carte avec la mélodie "Silver Bells" en gros plan.

Conclusion


Nous avons joué avec succès de la musique sur une imprimante IBM 1403 en exécutant des programmes que personne n'exécutait depuis près de 50 ans. Bien que la qualité de la musique ne soit pas particulièrement élevée, nous étions heureux que l'imprimante ne se soit pas auto-détruite. La dernière fois que Ron Mack a lancé ces programmes en 1970; par le lien vous trouverez quelques morceaux. La vidéo ci-dessous montre un extrait de la Marseillaise; Dans cette vidéo, vous pouvez regarder l'impression de chaque ligne.


Le Mountain View Museum of Computer History présente IBM 1401 les mercredis et samedis , donc si vous êtes à proximité, je vous recommande de visiter notre exposition.

Source: https://habr.com/ru/post/fr468647/


All Articles