Lo standard ASCII è stato adottato nel 1963, e oggi difficilemente qualcuno utilizza una codifica i cui primi 128 caratteri differiscano dall'ASCII. Tuttavia, fino alla fine del secolo scorso è stata ampiamente utilizzata l'EBCDIC, che è la codifica standard per i mainframe IBM e i loro cloni sovietici EC EMV. L'EBCDIC rimane la codifica principale in z/OS, il sistema operativo standard per i moderni mainframe IBM Z.
Ciò che salta immediatamente all'occhio guardando l'EBCDIC è che le lettere non sono disposte in sequenza: tra I e J e tra R e S sono rimaste posizioni non utilizzate (sugli EC EMV in questi intervalli i simboli cirillici). Chi mai avrebbe potuto pensare di codificare le lettere con spazi non uniformi tra lettere adiacenti?

Il nome stesso EBCDIC ("Extended BCDIC") suggerisce che questa codifica, a differenza dell'ASCII, non è stata creata ex novo, ma si basa sulla codifica BCDIC a sei bit, utilizzata a partire da (1954):

Non c'è compatibilità retroattiva diretta: una caratteristica comoda del BCDIC, persa con la transizione all'EBCDIC, era che ai numeri corrispondono i codici 0-9. Tuttavia, c'erano già lacune di sette codici tra 0—9 e lacune di otto codici tra I e J nel BCDIC. Da dove sono venuti? R e S La storia dell'(E)BCDIC inizia simultaneamente con la storia dell'IBM, molto prima dei computer elettronici. L'IBM è stata fondata a seguito della fusione di quattro aziende, la più tecnologicamente avanzata delle quali era la "Tabulating Machine Company", fondata nel 1896 da Herman Hollerith, l'inventore
del tabulatore di tabulatori decimali. Ogni scheda per il tabulatore decimale consisteva in campi di lunghezza variabile, e i numeri registrati in questi campi nella consueta forma decimale venivano sommati su tutta la pila. La suddivisione della scheda in campi era definita dalla connessione dei fili nel pannello di commutazione del tabulatore. Ad esempio, su questa scheda perforata di Hollerith, conservata I più attenti potrebbero notare che la scheda di Hollerith ha 12 righe per i fori, sebbene per le cifre ne siano sufficienti dieci; e nel BCDIC per ogni valore dei due bit più significativi vengono utilizzati solo 12 codici dei 16 possibili.

I più attenti potrebbero aver notato che nella mappa di Hollerith ci sono 12 righe per i fori, anche se per i numeri bastano dieci; e in BCDIC, per ciascun valore, si usano solo 12 codici su 16 possibili per i due bit più significativi.
Certo, non si tratta di una coincidenza casuale. In origine, Hollerith aveva destinato righe aggiuntive per "segnalazioni speciali", che non venivano sommate, ma semplicemente contate — come nei primi tabulatori. (Oggi li chiameremmo "campi bit") Inoltre, tra le "segnalazioni speciali" si potevano impostare indicatori di gruppo: se nella tabulazione erano richieste non solo somme finali, ma anche intermedie, il tabulatore si fermava quando individuava un cambiamento di uno qualsiasi degli indicatori di gruppo, e l'operatore doveva trascrivere le somme intermedie dal pannello numerico su carta, ripristinare il pannello e riprendere la tabulazione. Ad esempio, nel conteggio dei bilanci aziendali, un gruppo di schede poteva corrispondere a una data o a un contraente.
Nel 1920, quando Hollerith era già andato in pensione, erano entrati in uso i "tabulatori di stampa", che si collegavano al teletipo e potevano stampare autonomamente somme intermedie, senza richiedere l'intervento dell'operatore. La complessità consisteva ora nel determinare a cosa si riferisse ciascun numero stampato. Nel 1931 IBM decise di utilizzare "segnalazioni speciali" per rappresentare lettere: una segnalazione nella 12ª colonna indicava la lettera da A fino a I, la 11ª colonna indicava la lettera da J fino a R, la colonna zero indicava la lettera da S fino a Z. Il nuovo "tabulatore alfabetico" poteva stampare il nome di ogni gruppo di schede insieme alle somme intermedie; in tale contesto, una colonna non perforata si trasformava in uno spazio tra i simboli. Si noti che S è rappresentato dalla combinazione di fori 0+2, mentre la combinazione 0+1 non veniva inizialmente utilizzata per timore che due fori vicini nella stessa colonna potessero causare problemi meccanici nel lettore.

Ora è possibile guardare la tabella BCDIC da una prospettiva leggermente diversa:

A parte il fatto che 0 e spazio sono stati scambiati, i primi due bit determinano la "segnalazione speciale" che dal 1931 veniva perforata nella scheda perforata per il simbolo corrispondente; mentre i quattro bit inferiori determinano la cifra perforata nella parte principale della scheda. Il supporto per i simboli & - / è stata aggiunta nei tabulatori IBM negli anni '30, e la codifica di questi simboli in BCDIC corrisponde alle combinazioni di fori stampabili per essi. Quando è diventato necessario il supporto per un numero ancora maggiore di simboli, per la ‘marcatura speciale’ si è iniziato a perforare una serie di 8 — in questo modo, in una colonna potevano esserci fino a tre fori. Questo formato di schede perforate è rimasto praticamente invariato fino alla fine del secolo. Nell'URSS sono state mantenute le codifiche IBM per il latino e la punteggiatura, mentre per le lettere cirilliche si perforavano subito più ‘marcature speciali’ nelle righe 12, 11, 0 — non limitandosi a tre fori in una colonna.
Quando è stato creato il computer IBM 704, non si è riflettuto a lungo sulla codifica dei simboli per esso: è stata presa la codifica già utilizzata all'epoca nelle schede perforate e solo lo 0 è stato ‘messo al suo posto’. Nel 1964, passando da BCDIC a EBCDIC, i quattro bit inferiori di ogni simbolo sono stati mantenuti invariati, anche se i bit superiori sono stati leggermente riordinati. In questo modo, il formato delle schede perforate scelto da Hollerith all'inizio del secolo scorso ha influenzato l'architettura di tutti i computer IBM, fino all'IBM Z incluso.
Fonte: habr.com
