Лентопротяжка. Из записок программиста

 По причине обеденного времени в машинном зале было пусто, и я, сидя на столе, курил одну сигарету за другой, напряженно наблюдая за вращением бобин лентопротяжного механизма специальной вычислительной машины.
Это был военный заказ и военная машина, которая могла эмулировать систему команд множества машин, в том числе довольно распространенной америкнской PDP-11, которую у нас скопировали и выпускали под названием СМ-4.
Поскольку моя задача была технологической, не самой важной, к боевой машине меня не подпускали, и я довольствовался установленной при входе в машинный зал СМ-кой. Думаю, появилась она тогда как раз на всякий случай, и сейчас я ценю  осторожность и прозорливость нашего начальства: не будь ее, может, и не выпутался бы я тогда из этой истории. 
Контрольная сумма - это такое шестнадцатеричное число, длинной 8, 16, 32, 64 символа. Алгоритм ее вычисления гарантирует с какой-то невероятной вероятностью, что, даже если произойдет изменение одного бита информации в файле любой длины, например, 0 перепрыгнет в 1 или наооборот, не говоря о чем-то похуже, то значение контрольной суммы изменится.
*
Да, так вот, именно такую программу, относящуюся к классу программно-технологической оснастки, я тогда и сделал. Алгоритм мне тогда дали ребята из другого отделения, не церемонясь, сунув в курилке кусок листинга с его реализацией на рядовском ассемблере, эдакая проверка на вшивость. В общем, теоретическим обоснованием алгоритма я не занимался. И на том спасибо.
 Существовавшее на то время программное обеспечение СМ-ки для решения подобного рода задач мало подходило. Не существовало  полноэкранного текстового редактора, необходимого для ввода и корректировки программ, не существовало и приемлемого языка программирования. Программа предполагала какой - никакой диалог пользователя, на Фортран-4 его реализовать было почти невозможно, а на Ассемблере достаточно трудоемко.
Тогда я вывернулся, съездив по наводке в МГУ, где на ВМК мне дали полноэкранный текстовый редактор. И то строчный. Вы себе сейчас представьте: для того, чтобы отредактировать одну - единственную строку, вам необходимо было знать более шестидесяти команд-ключей. Вспомнить страшно. Еще тогда я где-то надыбал транслятор с практически нормального языка Фортран-77, где  уже были и "ифы" и "ду вайл", в общем, все, что надо.
Программу я сделал, проверил, погонял. Все норм. И с легким сердцем отдал ее коллегам - у них тогда как раз начали подходить сроки сдачи и контрольное суммирование им требовалось по технологии.
Почти сразу начались неприятности. Контрольные суммы обсчитанных коллегами лент, а программное обеспечение тогда хранилось и распространялось на лентах, после повторного обсчета не совпадали. И никакие уговоры - пацаны, давай просуммируем на моей машине, кой черт разница - здесь не проходили. В институте ходили слухи, что создавшаяся ситуация могла привести к малоприятному разговору с хорошо одетыми ребятами с плохими манерами. И даже говорили. что их вовсе не интересует как все это могло получится, а задавался всего один вопрос:" Зачем ты это сделал?"
*
По разному работать на одинаковых машинах программа не могла, и дело, очевидно, было в самой машине, что вообще представлялось невероятным, но делать было нечего, и я решил начать разбираться с оригинального лентопротяжного механизма. Вот именно поэтому, сейчас, в обеденный перерыв, я сидел на столе, уставившись в лентопротяжку и напряженно всматриваясь в ее работу, курил сигарету за сигаретой. Стресс в нашей профессии - все, топливо профессии.
*
Уже, наверное, в сотый раз за сегодня я зарядил ленту в лентопротяжку и нажал кнопку загрузки. Лента с бешеной скоростью закрутилась. наматываясь на левую -приемную бобину, через пару секунд она остановилась и теперь уже деликатно стала пятиться, ища отскок - серебристую наклейку в двух метрах от физического начала ленты.  Ткнувшись в отскок, она остановилась и, чуть  сдвинувшись назад, зафиксировала магнитную метку. Норм. А вот еще секунду спустя лента, покачавшись на метке, зачем-то опять шагнула вперед, после чего окончательно замерла."Твою дивизию, почему я этого не замечал раньше?" Работу лентопротяжки я понимал вполне отчетливо. Нафига. Зачем она двинулась еще раз вперед? Она же все нашла. Я провел эксперимент еще раз. Да, тут что-то не так.  Ребята не замечали некорректной  работы устройства, поскольку неверная парковка ленты в районе меток им безразлична: пишутся файлы  и слава Богу. Для меня же это было важно, поскольку суммировалась лента целиком со всеми бебихами. Ну, в общем, у меня отлегло. Отлегло по-настоящему. Что делать дальше, я знал.
*
При входе в наш машинный зал, в углу  за стойками, располагалось рабочее место инженера по обслуживанию ЭВМ, прикомандированного институтом- разработчиком. Именно туда я и направился. В закутке уютно пахло канифолью от чадящего под настольной лампой паяльника, на столе разбросаны инструменты, блестел оловом печатной платы и разноцветными проводами маленький радиоприемник без верхней крышки. Саша, так звали инженера, в этот момент, уже отрезав большой кусок белого хлеба и намазав его маслом, любовно раскладывал на нем кружки любительской колбасы. Мне было неловко, но я все же сообщил, что с лентопротяжкой что-то не так. Саша, конечно, был в курсе скандала и обтерев руки о полы белого халата, электронщики отчего-то у нас всегда ходили в белых халатах, двинулся за мной.
*
Подойдя к ленторотяжке я зарядил ленточку и  нажал нужные кнопки. В общем, он увидел то, что увидел и я. Не говоря ни слова, Саша направился  в свой закуток и, пробыв там некоторое время, вернулся с паяльником и двумя обрезками уже залуженного с концов провода. Обойдя устройство, он открыл заднюю крышку. Я всегда с любопытством и неосознанным восторгом рассматривал внутренности любого электронного устройства: эти платы, механизмы, переплетение разноцветных толстых и тонких проводов, проводов, связанных в жгуты, вся эта картина отчего-то напоминала мне картинки из анатомического атласа. Саша уверенно запустил руки в чрево агрегата, разгреб провода и,  потыкав где-то паяльником, быстро их припаял,  и мы опять переместились к фасаду лентопротяжки. Все наши действия происходили в полнейшем молчании. Саша мотнул головой: мол, давай, смотри, и я вновь запустил устройство. На сей раз лента запарковалась без замечаний. Саша не уходил. Оказалось, ему  была интересна вся ситуация целиком, хотя это было вовсе не его дело, и я дважды просуммировал ленту, и , как и ожидал, повторные контрольные суммы совпали с первой. Больше гонять ленту не имело смысла.
*
Дня через два в коридоре меня поймал Эдик, руководитель группы  электронщиков, и, взяв под руку,  повел к себе, по пути объясняя, что необходимо переговорить  с заводом по поводу создавшейся ситуации. В комнате, куда он меня привел, сидело человек пять мужиков среднего возраста, которые, отвернувшись от своих столов, мирно  беседовали о чем-то явно отвлеченном, поскольку при нашем приходе они, смутившись, вернулись к своим делам.  Усадив меня, Эдик подвинул телефон и, набрав какой-то номер, протянул  трубку, взяв при этом параллельную. Неожиданный голос с армянским акцентом вызвал мгновенную улыбку. Я коротко объяснил суть претензий, рассказав и про отскок, и про вроде как неправильное позиционирование.  Молча меня выслушав и согласившись со всем, что я сказал, голос сообщил, что в курсе, и что уже месяца как три  они подослали исправленные ТЭЗы в институт и даже продиктовали номера докуметов, по которым произошла передача. Поблагодарив собеседника и положив трубку, я встал и молча направился к двери, поскольку поднять голову и что-то сказать в этот момент не давало охватившее меня бешенство. Бормоча в адрес электронщиков что-то вроде:" Кормить этих сук не надо, за что им, дармоедам, деньги платят",- я вышел из комнаты.


Рецензии