Продолжаю.
Итак, есть программа для БЭСМ-6. Листинг то есть. Надо ее заставить работать на этой самой М-220. С чего начать — не знаю, да и вообще, откровенно, говоря, ничего я в этих ЭВМ с программированием вместе не понимаю. И спросить не у кого — реальное руководство нами, как я уже писал, фактически прекратилось. Интернета тоже нет
А программа, между прочим, большая, строк 800-1000
. Мне до сих пор программы длиной больше чем в 50 строк писать не приходилось.
Пошел в библиотеку, перерыл там все, что удалось найти, и обнаружил одну книгу по этой самой БЭСМ-6. Прочитал ее и волосы дыбом стали. Оказывается, у этой БЭСМ-6 аж 32768 48-битных ячеек — ровно в 8 раз больше, чем на моей несчастной М-220, да и ячейки чуть побольше (ну это ладно). М-даа...
Но делать что-то надо. Одно по крайней мере хоть ясно — массивы уменьшать надо, т.е размерность задачи (что такое массивы, я уже хорошо понимал
. Но все же надо куда-то и код впихнуть, придется, значит, на части резать, а как — не понимаю, да и просто ничего не понимаю. Темный лес.
Тут меня надоумили — прочитай, говорят, документацию
. Пошел в библиотеку опять, взял книгу (как сейчас ее помню), "Математическое обеспечение Вычислительного Центра ТГУ". В предисловии была примерно такая фраза
"Настоящая книга составлена по разным источникам, в том числе записям, сделанным неизвестными авторами".
Чтение книги мало что дало. Проще говоря, я там ничего не понял. Какой-то автокод (это ассемблер тогда так называли), какие-то адреса (а что это такое, в руководстве по Алголу ни о каких адресах не говорилось
, какие-то системы ИС-2 и ИС-22, которые мне может, и нужны, да только непонятно, что с ними делать. В общем, темный лес опять.
Ну думаю, ничего не остается, как начать набирать программу, а там видно будет. Может, у кого-то проконсультироваться удастся. Тем более, что мой научный руководитель все же обещал организовать консультацию, если понадобится. Но на консультауию надо идти с какими-то вопросами, а не со словами "помогите, вообще не знаю, что делать".
Хорошо сказать — набирать. Сам я ее набирать не могу. В подвале стоит единственный перфоратор, и к нему всегда очередь в 5-6 человек, а поэтому время, отводимое каждому, не более 5 минут. Отперфорировал несколько карт — и в конец очереди. Так я и за месяцы ничего
не сделаю.
Можно отдать на перфорацию. Девочки там сидят и перфорируют. Им надо текст на бланках дать и строго по клеточкам разметить, иначе они не так наберут. Это тоже быстро не будет, но сотни две перфокарт они все же за неделю сделают
. Ладно, переписываю текст с распечатки на эти бланки, отдаю им, хоть есть время для раздумий о своей несчастной судьбе. И занесла меня нелегкая в это дело!
Наконец первая часть отперфорирована (как разделить на части, я все же догадался, и как организовать взаимодействие — тоже — то есть понял, какие массивы надо сохранить после i-той части и загрузить в i+1-ю, только вот где сохранять и как — пока что совершенно неясно). Ладно, авось кривая вывезет.
Тут и колода перфокарт подоспела. Обложил я ее с обеих сторон какими-то стандартными перфокартами, точного назначения которых никто не знал, но класть их надо. Положил я все это в ящик и стал с трепетом ждать следующего дня.
Не зря я его с трепетом ждал. Потому что на следующее утро в ящике лежала моя колода , к ней прилагалась распечатка программы, а на самой колоде были написаны странные слова
Останов в Эфиопе. КРА 1234.
Распечатка же содержала текст моей программы как он был, а в конце ее шел набор каких-то непонятных (как потом выяснилось, восьмеричных) чисел, довольно много.
Жаль, никого с фотоаппаратом тогда поблизости не было, запечатлеть бы этот момент для истории.
Ну и что мне с этим эфиопом делать прикажете ?
Нашел все же человека, которого попросил объяснить все это. Оказалось, что эфиоп — это просто начальный блок транслятора (компилятора), что всего таких блоков 24, и в каждом могут быть свои остановы. КРА — это командный регистр адреса (EIP, иными словами), а странные числа в конце — это не что иное, как текст моей программы, точнее, тот ее кусок, где и произошел несчастный останов в эфиопе из-за синтаксической ошибки. По КРА можно понять тип ошибки (для этого надо взять книгу и поискать в ней этот КРА, там будет объяснение), а чтобы найти место в программе, надо расшифровывать эти восьмеричные числа по специальной таблице.
И точно, помогло. Нашел я этот КРА, расшифровал восьмеричные числа, понял, где ошибка, заменил перфокарты и отдал обратно.
На следующее утро меня вновь ждала распечатка, но на колоде были написаны уже другие слова
Останов в первом блоке. КРА 4321.
Восьмеричные числа прилагались.
Тут я сразу почувствовал себя крупным специалистом. Все стало ясным. Эфиоп — это, оказывается, нулевой блок, значит, я уже его прошел, а теперь надо пройти первый блок. Впереди всего 22, и с трансляцией дело будет сделано
.
Начинаю расшифровывать восьмеричные числа — что-то не то получается. То есть я, конечно, весь текст программы не помню, но такое я не писал. Такое я вообще не мог писать. Нельзя такое в здравом уме и твердой памяти писать. Бред это сивой кобылы.
Оказалось, что этот подлый транслятор при переходе от эфиопа к первому блоку перекодировал мою программу. Для ее расшифровки теперь надо другую таблицу брать.
Оптимизм мой резко поубавился, мне стало сразу ясно, что на крупного специалиста я пока не тяну, но все же расшифровать и исправить ошибки я смог.
Далее были остановы в 3 блоке, причем довольно упорные. Т.е. после того, как я исправлял ошибку, возникал новый остангов в 3 блоке, с другим КРА и другими восьмеричными числами. Надо ли объяснять, что при переходе к 3 блоку транслятор опять перекодировал текст!
Наконец и 3 блок был пройден. Но тут меня поджидал сильнейший удар. Очередное сообщение было таким
Останов в 17 блоке. КРА 2345.
Восьмеричные числа к этому КРА не полагались. В справочнике такого КРА не оказалось.
Конечно, хорошо, что не было остановов в 4,5 ... 16 блоке, но что теперь-то делать ?
Пришлось пойти в группу математического обеспечения ВЦ с просьбой помочь. Был там один специалист, звали его Володей. Объяснил я ему, что вот такой у меня КРА (это слово я уже научился говорить c видом специалиста), и что же мне с этим КРА делать ?
Володя достал из шкафа руководство и начал при мне листать. Я заглянул туда. Там были одни числа. Восьмеричные коды. Листал он долго. Распечатку моей программы он смотреть не стал. Наконец он листать прекратил и книгу захлопнул. Я посмотрел на ее название. "Транслятор Альфа". Это не было руководством по транслятору. Это был сам транслятор. Точнее, его машинные коды. Что там Володя хотел найти и как — не знаю. Но он так ничего и не нашел. После этого он дал мне бесподобный совет.
"В общем, поищи, посмотри сам. Если найдешь — обязательно запиши в книгу".
Тут я вспомнил насчет "по разным источникам, в том числе записям, сделанным неизвестными авторами", и все стало ясно.
Ошибку я в конце концов нашел. Оказывается, вместо СП0187 было отперфорировано СП1087. Скорее всего, девочки неправильно отперфорировали. СП, как выяснилось были функциями (Стандартными Процедурами) из этой самой ИС-22, и я, значит, вызывал, несуществующую процедуру. В общем, unresolved external образца 1975 года.
Продолжение следует (не сегодня)
With best regards
Pavel Dvorkin