Формат COSY
2023-03-29 23:36На БЭСМ-6 при записи текстовых файлов на диск применялось простое кодирование, позволявшее сэкономить пространство. Формат назывался COSY: сокращение от "Compressed Symbolic". Идею подсмотрели в документации от фирмы CDC, оттуда же и название. Цитата из COSY_MASTER_Mar67.pdf:
1. Разбиваем входной файл на строки. Каждую строку обрабатываем отдельно.
2. Из каждой строки берем первые 80 символов. Лишние игнорируем.
3. Преобразуем в кодировку КОИ-7. В википедии она приведена под названием КОИ-7 Н2. Присутствуют большие латинские и большие русские буквы. Символы с кодом меньше пробела не допускаются.
4. Дополняем строку справа пробелами до 83 символов.
5. Последовательности из одного и больше пробелов заменяем одним символом:
7. Если число символов в строке получилось кратным 6 - оставляем как есть. Иначе добавляем несколько байтов, чтобы стало кратно 6:
К примеру, строка "abc" таким образом превращается в "ABC\320\12\12".
COSY compresses card images by inserting special BCD characters for two or more sequential blanks. Octal numbers 16, 17, 35, 36, 37, 55, 56 and 57 represent two through nine consecutive blanks. If a card image contains more than nine consecutive blanks, 76xx (octal) is used; the 6-bit number xx is ten (decimal) less than the number of blanks. If the image contains more than 73 blanks, 7677 (octal) is used with one of the above special octal numbers. The character 12 (octal) indicates the end of a compressed card image. If the user employs any of the special characters above, COSY replaces it by 15 (octal); this restricts the character set available to the COSY user.Опишу формат, как он был реализован в текстовом редакторе Волкова и мониторной системе Дубна.
1. Разбиваем входной файл на строки. Каждую строку обрабатываем отдельно.
2. Из каждой строки берем первые 80 символов. Лишние игнорируем.
3. Преобразуем в кодировку КОИ-7. В википедии она приведена под названием КОИ-7 Н2. Присутствуют большие латинские и большие русские буквы. Символы с кодом меньше пробела не допускаются.
4. Дополняем строку справа пробелами до 83 символов.
5. Последовательности из одного и больше пробелов заменяем одним символом:
- один пробел заменяется на символ \201
- два пробела → \202
- три пробела → \203
- ... и так далее ...
- 83 пробела → \323
7. Если число символов в строке получилось кратным 6 - оставляем как есть. Иначе добавляем несколько байтов, чтобы стало кратно 6:
- если нужен один байт - добавляем \012
- если нужно два байта - добавляем \040 \012
- если нужно три байта - добавляем \040 \040 \012
- если нужно четыре байта - добавляем \040 \040 \040 \012
- если нужно пять байтов - добавляем \040 \040 \040 \040 \012
К примеру, строка "abc" таким образом превращается в "ABC\320\12\12".

no subject
Date: 2023-03-30 07:56 (UTC)Да, смешно было возиться с адресацией не по байтам. На СМ-1 драйвер монитора, если посылал строку с нечетным числом символов, то делал таки четное, и добавлял 0 в конце (баг такой был).
no subject
Date: 2023-03-30 11:00 (UTC)no subject
Date: 2023-03-30 11:28 (UTC)О это да. Меня это особенно злило в форте, что Агамирзян написал. Специфично.
no subject
Date: 2023-03-30 19:08 (UTC)no subject
Date: 2023-03-30 19:26 (UTC)эх молодость молодость
Date: 2023-03-30 13:59 (UTC)Система периодически рушилась, после перезапуска все запускали recovery на своих терминалах и уходили курить пока на каждом терминале редактор проигрывал сессии клавиша за клавишей. Это выглядело как матрица или грядущее будущее ИИ: людей нет только десяток другой машин самостоятельно редактирующих содержимое экранов.
Re: эх молодость молодость
Date: 2023-03-30 17:41 (UTC)no subject
Date: 2023-03-30 14:53 (UTC)no subject
Date: 2023-03-30 17:37 (UTC)no subject
Date: 2023-04-01 00:19 (UTC)no subject
Date: 2023-04-01 01:26 (UTC)Сейчас бы как раз твоя отсканированная книжка пригодилась. У Ильина так себе копия.
Моя новая dubna вполне уже фунциклирует. Мадлен и фортран работают как положено. Можно пытаться остальные штучки из Мазного оживлять. Первое на очереди - динамический заказ лент через *tape.
no subject
Date: 2023-04-01 08:01 (UTC)Странно, что не догадались сделать соглашение, что концевые пробелы не хранятся. Видимо, формат придумывали тогда, когда у большинства строк последние 8 символов были заняты нумерацией, поэтому об этом просто не подумали.
Что-то у меня сканер плохо работал, каждые несколько страниц получалось порченое изображение, и я через пару десятков страниц бросил.
no subject
Date: 2023-04-02 18:47 (UTC)Я наблюдал глюки сканера, когда подключал левым кабелем через USB-хаб. Попробуй родным кабелем напрямую к компьютеру. Тогда всё стабильно.