Так как в машинном слове БЭСМ-6 было 48 разрядов, использовались как 8-битные, так и 6-битные кодировки символов. Преимущественно использовались стандартные 8-битные байты, а 6-битная кодировка TEXT использовалась в таблицах символов в мониторной системе "Дубна", позволяя различать до 8 значащих символов во внешних именах объектных модулей.
Было несколько 8-битных кодировок:
Кодировке ГОСТ/УПП и будет посвящён остаток этой страницы.
В отличие от IBM-овской кодировки перфокарт, использовавшей одну колонку - 12 бит - на символ, что требовало нетривиального преобразования во внутреннее байтовое представление, кодировка ГОСТ/УПП была восьмибитной (точнее, семибитной с битом четности, дополнявшим до нечетного), "горизонтальной", совпадала (после отбрасывания бита четности) со внутренним представлением символов, и позволяла помещать на одной перфокарте до 120 символов.
Порядок бит в байте на перфокарте был естественным - старший бит слева, поэтому было довольно легко читать перфокарты, глядя на конфигурации пробивок. Это умение было весьма полезным, поскольку было единственным способом узнать содержимое карты, не пропуская ее через компьютер - в отличие от IBM-овских перфокарт, на которых могла быть надпечатка у каждой колонки, горизонтальное размещение символов такого не позволяло.
Как видно из таблицы ниже, код 0 задействован под символ 0, и на перфокарте он представлялся с четностью в виде байта 200 (восьмеричное). Байт со значением 000 - единственный допустимый с "четной" четностью - игнорировался. Пробел обозначался кодом УПП 217 (ГОСТ 017).
Русские и латинские буквы с одинаковым начертанием (включая Y/У) не различались.
Вот таблица кодировки ГОСТ (УПП - с восьмым битом до нечетности). Наведите курсор мыши на цветную ячейку таблицы, чтобы увидеть описание символа (некоторые символы в белых ячейках тоже описаны):
Условные обозначения | ||||||||
---|---|---|---|---|---|---|---|---|
символы с точным соответствием в ASCII/ISO | ||||||||
символы с традиционным соответствием в ASCII/ISO | ||||||||
символы без соответствия в ASCII/ISO | ||||||||
символы ASCII/ISO с принятыми неофициальными соответствиями в ГОСТ | ||||||||
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |
00 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
01 | 8 | 9 | + | - | / | , | . | ␣ |
02 | ⏨ | ↑ | ( | ) | × | = | ; | [ |
03 | ] | * | ` | ' | ≠ | < | > | : |
04 | A | Б | B | Г | Д | E | Ж | З |
05 | И | Й | K | Л | M | H | O | П |
06 | P | C | T | У | Ф | X | Ц | Ч |
07 | Ш | Щ | Ы | Ь | Э | Ю | Я | D |
10 | F | G | I | J | L | N | Q | R |
11 | S | U | V | W | Z | ¯ | ≤ | ≥ |
12 | ∨ | ∧ | ⊃ | ¬ | ÷ | ≡ | % | ◊ |
13 | | | — | _ | ! | " | Ъ | ° | ′ |
14 | NUL | BS | ||||||
15 | ||||||||
16 | FF | |||||||
17 | EOT | CR | \ |
Как нетрудно видеть, набор символов сильно перекошен в математическую сторону: настолько, что даже нет вопросительного знака! Такое впечатление, что у разработчики кодировки не догадались, что знак факториала 0133 - это еще и восклицательный знак, и что неплохо бы добавить и вопросительный знак тоже.