vak: (Default)
[personal profile] vak posting in [community profile] besm6
В форматной печати языка Фортран есть интересная особенность: если первый символ строки это '+', то строка печатается поверх предыдущей. Переход на новую строку не происходит. Эта штука работала и на БЭСМ-6.

К примеру, программа на Фортране:
        print 1000
1000 format(' --' / '+foobar')
напечатает одну строку с минусами поверх букв OO:
FO̵O̵BAR
Симулятор dispak с флагом --native, то есть с реализацией экстракода Э64, взятой в бинарниках из кода Диспак, выдаст максимально возможное подобие: две строки, где первая заканчивается символом '\', означающим наложение.

Выдача dispak --native:
  F--\
OOBAR
Заметьте, что буква F "проваливается" в первую строку. То есть для символов из строки наложения сначала делается попытка поместить их в первую строку, если там пробелы. Если же там занято, то первая строка выводится целиком, и формируется новая строка из оставшихся символов.

Посмотрим, как выглядит поток байтов на уровне экстракода Э64. Интересно, что есть разница между ОС Диспак и ОС Дубна.

Трассировка dispak:
017 017 017 013 013 172
--
017 212 100 056 056 042 040 107 172
FOOBAR
Трассировка dubna:
017 017 017 013 013 231
--
212 017 100 056 056 042 040 107 231
FOOBAR
Видим, что режим наложения задаётся символом '212'. В Дубне он стоит в первой позиции, за ним пробел '017'. В Диспаке символ '212' стоит на второй позиции, и пробел перед ним. Странно.

Читаем диспаковское описание Э64:
Наложение (212b) - обеспечивает наложение той строки, в которой данный код использован, на предыдущую строку; для этого код 212b должен содержаться во второй (при нумерации с единицы) позиции; при печати он будет заменен пробелом.
Должен содержаться во второй позиции! Я пробовал ставить '212' в первой или третьей позициях - действительно, наложения не происходит. Вместо этого делается "прыжок" на 12-ю позицию текущей строки.

Похоже на багу в диспаковской реализации Э64. Причём в Дубне этой баги нету, поэтому там символ наложения прекрасно отрабатывает с первой позиции. А в Диспаке решили багу не править, вместо этого документировать и превратить в фичу. 😀
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

Сообщество любителей БЭСМ-6

December 2025

S M T W T F S
 123456
78910111213
14151617181920
21222324252627
282930 31   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 15th, 2026 07:00 am
Powered by Dreamwidth Studios