В процессе ввода перфокарт БЭСМ-6, из-за бытования на ней в разное время в общей сложности четырёх с лишним кодировок п/к, приходилось решать задачу распознавания образов.
На глаз это тоже легко удаётся:
ГОСТ/УПП - построчная, по 10 байтов в строке,, с нечетным числом единиц каждый, неиспользованные конечные байты - нулевые. Программа распечатки п/к (2048, зона 113) почему-то считает не-концевые нулевые байты не ГОСТ "0" с ошибкой в чётности, а пробелом.
IBM/CDC - поколонная, латинские буквы используют 2 пробивки, русские - 3, отличия между IBM и CDC - в некоторых знаках пунктуации. Во избежание разночтений режим можно было переключать с помощью магических карт
⁷⁄₉IBM и
⁷⁄₉CDC, где
⁷⁄₉ - колонка с пробивками в строках 7 и 9, непредставимая в ISO, насколько я понимаю. Можно ли было в МС "Дубна" переключать перфорацию в текстовом формате (*LP в редакторе EDIT) между IBM и CDC, неясно. Была ещё и ICT, упомянутая у Мазного, но в Мониторе-80 она не поддерживается.
УПДК - поколонная, с существенно большим средним числом пробивок на символ, за исключением цифр, по которым совпадает с IBM/CDC. Перекодируется в ГОСТ почти регулярным образом.
И есть ещё кодировка М-20, которую умеет и программа распечатки п/п, и зачем-то Монитор-80. Она позволяет разместить вплоть до 72 символов ГОСТ на карте.
Формат: в каждой строке позиции 1-16, 19-25, 32-33, 38, 43, 48, 53, 58, 63, 68, 73, 78-80 - пустые.
Из оставшихся 44 позиций, 17-18 - четность, остальные - 6 семибитных байтов кодировки ГОСТ, причем символ 0 записывается кодом 140, а код 0, наравне с кодом 017 - пробел (с точки зрения распечатки п/к, Монитор-80 не согласен).
Каждая строка дополняется до четного числа пробивок или в 18-й позиции, или в 17-й и 18-й.
Полностью пустая строка игнорируется.
Насколько я понимаю, в большинстве организаций формат М-20 был совершенно неактуален; зачем бы в Мониторе-80 он продолжал поддерживаться до самого конца, неясно.
Leo