Продолжаю. Итак, есть программа для БЭСМ-6. Листинг то есть. Надо ее заставить работать на этой самой М-220. С чего начать — не знаю, да и вообще, откровенно, говоря, ничего я в этих ЭВМ с программированием вместе не понимаю. И спросить не у кого — реальное руководство нами, как я уже писал, фактически прекратилось. Интернета тоже нет ![]() А программа, между прочим, большая, строк 800-1000 ![]() Пошел в библиотеку, перерыл там все, что удалось найти, и обнаружил одну книгу по этой самой БЭСМ-6. Прочитал ее и волосы дыбом стали. Оказывается, у этой БЭСМ-6 аж 32768 48-битных ячеек — ровно в 8 раз больше, чем на моей несчастной М-220, да и ячейки чуть побольше (ну это ладно). М-даа... Но делать что-то надо. Одно по крайней мере хоть ясно — массивы уменьшать надо, т.е размерность задачи (что такое массивы, я уже хорошо понимал ![]() Тут меня надоумили — прочитай, говорят, документацию ![]()
Чтение книги мало что дало. Проще говоря, я там ничего не понял. Какой-то автокод (это ассемблер тогда так называли), какие-то адреса (а что это такое, в руководстве по Алголу ни о каких адресах не говорилось ![]() Ну думаю, ничего не остается, как начать набирать программу, а там видно будет. Может, у кого-то проконсультироваться удастся. Тем более, что мой научный руководитель все же обещал организовать консультацию, если понадобится. Но на консультауию надо идти с какими-то вопросами, а не со словами "помогите, вообще не знаю, что делать". Хорошо сказать — набирать. Сам я ее набирать не могу. В подвале стоит единственный перфоратор, и к нему всегда очередь в 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 |