Codage des caractères sur carte perforée
Le codage des caractères sur carte perforée est la pratique consistant à associer à chaque caractère un ensemble différent de perforations, ce qui permet par exemple d'y enregistrer un texte.
Histoire
Aux États-unis, vers 1890, Herman Hollerith invente un moyen d'enregistrer les données du recensement sur un support qu'une machine peut relire, en mettant au point un marquage sur carte par perforation après avoir utilisé des bandes de papier[1] - [2].
La correspondance entre les perforations et les caractères ainsi que la taille de la carte ne sont pas normalisées à cette époque. Il existe donc divers formats de cartes perforées pour divers usages.
Codage sur un nombre de bits fixe
Le codage de caractères sur un nombre de bits fixe apparaît dans le code Baudot, ainsi que la notion de séquence d'échappement.
Le codage de caractères sur un nombre de bits fixe est repris dans un contexte industriel sur des cartes perforées.
En raison de l'existence de brevets, le codage Hollerith d’IBM n'est pas utilisé par Bull. Ce manque d'interopérabilité fragmenta le marché entre "clients IBM" et "clients Bull".
Le codage Bull n'utilise que onze lignes de perforation, soit une de moins qu'IBM tout en codant autant de caractères[3]. En Bull, les chiffres de zéro à neuf sont utilisés pour le numérique. Les doubles combinaisons utilisées pour les lettres sont différentes et portent sur les bits 9, 8 et 7. Ainsi le A était représenté par les combinaisons de perforations 7 et 11, B par 7 et 0, C par 7 et 1 etc.
Vers le changement de siècle, un codage performant sur cartes perforées a été développé pour le recensement étatique. Le produit fut ensuite commercialisé par la Tabulating Machine Co.[4].
- Western Union en utilisa une version modifiée jusque dans les années 1950. L'espace et la sonnerie avaient été ajoutés.
- Dans les années 1930, le CCITT a introduit le code International Telegraph Alphabet No. 2 (ITA2) comme standard international, basé sur le code Western Union modifié. Les États-Unis ont standardisé une version de l'ITA2 avec le code American Teletypewriter (USTTY) qui était basé sur des codes teletypewriter de 5-bits jusqu'aux débuts de l'ASCII 7-bits en 1963.
- RADIX-50 (1959) : composé 40 codes, stocke 3 caractères dans un mot de 16 bits en big endian (PDP-11)
Illustrations
1964
Cette carte de 1964 fait apparaître la correspondance entre les caractères et leur représentation binaire de l'époque.
Programmation des mainframes
Le Fortran est l'un des premiers langages de programmation pour les mainframes, où les cartes perforées permettaient l'entrée des lignes d'instructions analysées par le compilateur.
Le langage de programmation COBOL a également utilisé les cartes perforées pour programmer les mainframes.
L'utilisation des cartes perforées ne permettant pas d'écrire de lettres en minuscules et explique le fait que les noms et mots-clés dans ces deux langages de programmation soient en lettres capitales.
Standard 5081
Carte cyrillique
Les cartes cyrilliques soviétiques utilisaient le même principe de codage que les cartes anglaises ou américaines ; les caractères ne correspondant pas bénéficiaient de perforations supplémentaires.
IBM 96 caractères
Lorsque la perforation n'était plus une opération compliquée, il est devenu possible de perforer plus de bits simultanément pour un même caractère, comme cela se faisait déjà depuis longtemps dans le code Baudot. IBM l'a fait en convertissant le codage précédent pour les lettres et les chiffres.
- Chaque perforation de chiffre 0 à 9 des cartes perforées précédentes devenait codée en décimal codé binaire (DCB/BCD), il s'agit des lignes de bits 1, 2, 4 et 8 sur la carte, offrant 10 valeurs.
- Les deux perforations supérieures restantes offrent quatre possibilités[6] . Les mêmes caractères qui étaient auparavant codés sur douze bits n'étaient dès lors plus codés que sur six bits.
La carte perforée comporte 3 groupes de 32 caractères, soit 96 caractères au total, chacun sur 6 bits. Il y avait donc 64 caractères possibles. Ce type de carte était également utilisé pour encoder des caractères sur 8 bits en EBCDIC : le groupe du haut combiné avec 2 bits du groupe du bas, ainsi que le groupe du milieu avec 2 autres bits du groupe inférieur formaient 2 groupes de 32 caractères sur 8 bits, soit 64 caractères 8 bits par carte perforée[7].
Notes et références
- http://www.kerleo.net/computers/mecanographie.htm
- Frank da Cruz, « Herman Hollerith », sur Columbia University Computing History, Columbia University, 2019a (consulté le )
- http://yves.cornil.free.fr/cartep.htm
- http://tronweb.super-nova.co.jp/characcodehist.html
- IBM Corporation, 704 electronic data-processing machine: manual of operation, (lire en ligne) p. 35
- The Punched card
- Dik T Winter, « 96-column Punched Card Code » [archive du ] (consulté le )