Жили-были два отдела
Mar. 22nd, 2024 04:09 pmВ ИТМиВТ ОСами для Эльбруса-Б занимались два отдела: Шебанова (ДВС) и Тюрина (Диспак). Обоим нужно было пользоваться одной и той же кросс-системой разработки, которая уже использовала кодировку КОИ-8, но для подготовки текстов использовались разные средства. В отделе Шебанова редактировали исходные тексты на писишках и передавали на СВС в кодировке КОИ-8, а в отделе Тюрина работали по-старинке, отчего требовалось автоматизировать перекодировку текстов из ISO (КОИ-7) перед запуском ассемблера.
Для этого была написана на Паскале специальная программа АРАП, двоичный код которой сохранился на образах дисков. Его-то я сейчас и декомпилирую. В отличие от двух предыдущих декомпилированных программ, для которых дополнительные фичи компилятора (указание абсолютного адреса переменных, явное приведение типов и т.п.) уже реализованы, для этой нужна ещё и операция сдвига (например, "слово shr 8"). Это потребует несколько более существенных изменений, чем уже были сделаны.
Заодно удалось понять смысл одного доселе неясного куска компилятора (см. "badop" в https://github.com/besm6/pascal-re/blob/master/pascompl.b6), что в компиляторе пытались сделать встроенную функцию pow(x, y), но то ли обломались, то ли решили, что игра не стоит свеч. В рантайм-библиотеке, впрочем, неиспользуемая функция P/RR, в теле которой делаются умножения, присутствует.
Если её выпилить, то должно поместиться.
Для этого была написана на Паскале специальная программа АРАП, двоичный код которой сохранился на образах дисков. Его-то я сейчас и декомпилирую. В отличие от двух предыдущих декомпилированных программ, для которых дополнительные фичи компилятора (указание абсолютного адреса переменных, явное приведение типов и т.п.) уже реализованы, для этой нужна ещё и операция сдвига (например, "слово shr 8"). Это потребует несколько более существенных изменений, чем уже были сделаны.
Заодно удалось понять смысл одного доселе неясного куска компилятора (см. "badop" в https://github.com/besm6/pascal-re/blob/master/pascompl.b6), что в компиляторе пытались сделать встроенную функцию pow(x, y), но то ли обломались, то ли решили, что игра не стоит свеч. В рантайм-библиотеке, впрочем, неиспользуемая функция P/RR, в теле которой делаются умножения, присутствует.
Если её выпилить, то должно поместиться.