Стандарт программных файлов имитатора Д3-28

Текст программы, распечатанный на термобумаге из программы ЭТ-10 после 30 лет гаражного хранения
Текст программы, распечатанный на обычной бумаге из программы СПП-8 МХТИ после 30 лет гаражного хранения

Введение в задачу
Доступные нам сейчас программы Д3-28 находятся, в основном, в виде носителей, которые пережили плохое и длительное хранение.
Это кассеты МК-60 с частично размагниченной, частично обсыпавшейся поверхностью, иногда даже перезаписанные поверх. Это разного качества распечатки (смотрите выше). И если распечатки на обычной бумаге еще как-то читаются, то термобумажные читаются в основном плохо. Но чаще все же читаются.
Это дает нам надежду на восстановление программного кода даже с таких носителей. То есть, коды программ надо «набрать» — превратить в файл текстового формата, который понимает имитатор.

Стандартный формат файла для имитатора Д3-28

Что понимает имитатор
Имитатору нужны команды в десятичной нотации (как в «Справочнике программиста Д3-28», табл.23), размещенные в текстовом файле по одному байту в строке. При этом имеют место следующие особенности:
— пробелы между символами команды не допускаются,
— двухбайтовая команда размещается в двух строках,
— если команда начинается с нулей, то их можно опустить, но можно и не опускать, Команда из четырех нулей может быть записана одним нулем,
— пробелы в начале и в конце строки игнорируются имитатором,
— перевод строки делается клавишей Enter.
Перевод строки правильно распознается имитатором, независимо, в какой операционной системе производился набор.
Изложенные особенности представляют собой стандарт входного файла программы для имитатора Д3-28.

Шестнадцатеричная нотация команд Д3-28

Почему встал вопрос унификации, если уже есть стандарт
1. Исходники (распечатки ассемблерные) часто представлены, кроме десятичной нотации, также в шестнадцатеричной (например, в СПП-8 МХТИ, см. вверху страницы).  Вкусность шестнадцатеричной в том, что набираемый текстовый файл программы в два раза короче, чем при десятичной нотации, то есть быстрее набирать.
2. Набирать любую нотацию команд удобнее по методу «что вижу, то и пишу». Так ошибок меньше. Поэтому целесообразно использовать обе.
3. Можно также набирать голосом (надиктовывать), с помощью системы распознавания речи. Там вообще на выходе набора получаются коды, разделенные пробелом в длинной-длинной строке.
4. А для аналоговой записи на «живую» кассету необходимы байты в одну строку без пробелов, переносов строки и иных служебных символов.

Вывод: в деле унификации надо предусмотреть:
— возможность набора в удобном для человека формате и любым, именно ему удобным, способом,
— возможность преобразования без больших усилий набранного текста к стандарту имитатора. Эта задача легко решается программами-перекодировщиками, но для них тоже нужна унификация формата набираемых данных.

Унифицированные форматы набора
Предлагается придерживаться следующих форматов и правил набора:
1. Стандартный (с ведущими нулями и без них).
2. То же, шестнадцатеричная нотация. Ведущие нули обязательны.
3. Формат из нескольких байт в одной строке, разделенных пробелами. Количество байт в строке и количество строк допускается любое, без ограничений.
4. Смешение десятичной и шестнадцатеричной нотации в пределах одного файла не допускается.

Рекомендации по набору (вводу) программ Д3-28 в кодах:
1. Ручной ввод с распечатки можно делать в любом удобном текстовом редакторе, который умеет экспортировать в чисто текстовый формат. Удобно набирать в редакторе с возможностью автонумерации строк. В каком из описанных выше форматов набирать каждый решит сам.
2. Можно надиктовывать коды команд в систему распознавания речи с помощью микрофона компьютера. Один из вариантов этой работы таков — перейдите по ссылке в интернете https://speechpad.ru/ и действуйте по инструкции на этой странице. Все очень просто, немного потренируетесь и можно работать.
Советы: в десятичной нотации диктуем код «48 12» как «сорок восемь двенадцать» (введется «48 12», с пробелом), а код «4812» как «четыре тысячи восемьсот двенадцать» (тогда введется без пробела «4812»). Паузу делайте между байтами — она вводится, как пробел. И помним, что байт пробелом разрывать нельзя — система поймет две цифры, как байт с двумя ведущими нулями.
И еще — для голосового ввода нужна тишина в помещении. Экспериментируйте.
3. Есть вариант распознавания текстов с помощью OCR (FineReader, например). Но нужны очень качественные сканы с хороших бумажных носителей. Сейчас такое редкость. И есть в распознавании одна засада — в распечатках того времени нули были «программистскими», то есть перечеркнутыми для отличия от буквы «О». OCR часто распознает их как восьмерку, давая большой процент ошибок. Так что, не советуем этот способ.
4. Самый лучший способ получения кодов программ для имитатора — это воспроизведение с кассеты на обычном магнитофоне с записью на компьютер в обычный (несжатый) аудиофайл. Формат файла WAV. Далее этот файл распознается программно и превращается в текстовый с кодами Д3-28 в формате имитатора. Кому интересно, объявитесь любым способом и Вам помогут на этом сайте.