Путь химика в программирование - ч2
От: Pavel Dvorkin Россия  
Дата: 09.02.05 10:50
Оценка: 147 (16)
#Имя: FAQ.Learningtofly.PavelDvorkin.part2
Продолжаю.

Итак, есть программа для БЭСМ-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
With best regards
Pavel Dvorkin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.