Интерквадро

Инвариант
В то время много всего появилось странного: кооперативы, совместные предприятия, молодежные центры под эгидой райкомов комсомола... Interquadro было одной из таких химер: совместное советско-франко-итальянское предприятие. Злые языки поговаривали, что папа-миллионер учредил фирму специально для сына: "на поиграться". Возможно и так, но функцию свою она выполняла исправно: отсюда качала валюту, сюда - старую технику.

У нашего центра был договор с местным отделением о разработке системы "под ключ": АРМ'ы врачей, этажные бриджи, центральный сервер, база пациентов, регистратура, отчетность. На них же лежало и гарантийное обслуживание в течение первого года с возможностью продления договора. Отдел АСУ еще только формировался, а само здание центра - строилось. Еще до отделочников мы пришли туда укладывать коаксиал - оформили как бригадный подряд, но большую половину денег забрал босс, назначивший себя бригадиром. Утешало, что без него и этого приработка мы бы не увидели.

Пока строился центр, мы временно на пяти XT Turbo ютились в двух крохотных кабинетах поликлиники: босс и все остальные. В один из дней босс решил, что нам пора познакомиться с разработчиками и начальник отдела, прихватив меня, отправился на "смотрины". Разговор шел дружеский, иногда, даже, по-мужски вольный: рассказывая о вирусной профилактике, например, хозяева вручили нам пачку презервативов. Все весело посмеялись.

А надо сказать, что в то наивное время, ни начальник, ни я ни одного вируса никогда "вживую" не видели и, мало того, всего пару лет как утихли споры о том, возможно ли, вообще, существование самовоспроизводящихся программ ("компьютерных вирусов"). Несмотря на то, что деструктивные программы (типа "бои в памяти") уже были разработаны и описаны в компьютерных журналах, большинство экспертов склонялось к тому, что "реальное - в дикой природе" самовоспроизведение невозможно. Тем не менее, компьютерные вирусы действительно появились - и в журналах об этом уже писали, но видели их также редко, как следы снежного человека. И то сказать, в России модем тогда был гораздо большей диковиной, чем, скажем, спутниковый телефон сегодня, название протокола "Kermit" произносилось с не меньшим почтением, чем "Abracadabra" в древних магических культах, и почти единственным средством обмена информацией на PC были отвратительно вонявшие краской пятидюймовые дискеты ГМД-130 - следовало немало поколдовать, чтобы они прочитались. Служили они тоже недолго - магнитный слой осыпался с них, как штукатурка со старого дома.

Разговор уже подходил к концу, начальник, далекий по прежнему опыту от программирования, больше помалкивал, а я совершенно не знал ни Novell, ни баз данных, чтобы уточнять детали. "Квадровцы" благожелательно улыбались и уверяли, что со временем и мы освоимся в новых для себя приложениях. Среди прочего, вытащена была из сейфа книжечка Брябрина "Программное обеспечение персональных ЭВМ". Я вздохнул с облегчением: - Ну, уж Брябрина-то я наизусть знаю. Как ни странно, но хозяева в ответ нахмурились. В тот момент я не придал этому значения.

На следующей неделе босс, заглянув по какому-то делу, попросил меня выйти с ним. Завел в пустой кабинет. Спросил, давно ли я знаю ребят из Interquadro. - Ну, как давно?, - удивился я. С прошлой недели. Первый раз увидел. - А, вот они говорят, что тебя знают. - Может и знают, меня по учебе пол-института знает: на факультете в редколлегии стенгазеты был, в колхоз как-то деканат, как бывшего служивого, летом на прополку на месяц комиссаром отряда отправил, народ со всех кафедр был... - Нет, - перебил меня босс, - не по институту. - Ну, может по работе где-то пересеклись? - Я и в медицинском работал, и на ВЦ в трех местах, и на физике, и на электротехнике, в двух НИИ, в горячем цехе автоматику монтировал... - Нет, - снова перебил меня босс. - Не по работе. Они про другое говорят... Лучше, если ты сам скажешь. Все равно со временем все откроется. - Откроется? Что откроется? - поразился я. Знают - пусть скажут. Я их первый раз видел. И каяться мне не в чем. Спорили мы еще долго. Видимо, моя уверенность на него как-то подействовала. - Ну, смотри, - пригрозил он мне, - если что всплывет... И срезал оклад на червонец.

Я переживал недели две, потом утихло - за текучкой. Висела на мне еще и сигнализация - сдавали компьютеры под вневедомственную охрану. Через раз не срабатывала - значит, жди ремонтника - и пока доберется. Часто приезжал уже за полночь. В таких случаях, до дома меня, обычно, подбрасывали на той же машине.

И вот, засел в памяти один эпизод. Приехали поздно, возились долго, истоптали все стулья, времени второй час ночи, везут домой, я по центру на заднем сиденье. Проезжаем перекресток, уже почти у дома и тут на каком-то магазине срабатывает тревожная сигнализация. Педаль тормоза в пол, я чуть не падаю головой в просвет передних кресел. И пока, потирая шишку, обдумываю, должен ли и я выйти наружу, оба моих попутчика - слева и справа - уже колотятся в дверь магазина. Почти тут же выясняется - сработка была ложной. Они усаживаются. Через пять минут я дома. А вот эта их безрассудная автоматическая готовность броситься и бежать навстречу опасности навсегда осталась в памяти.

На Interquadro я затаил обиду. Вспоминал как они нахмурились в ответ на мою фразу. Чем им могло навредить мое знание книги Брябрина? Или, может быть, им мешал вообще любой человек, знакомый с программированием? Вскоре, это стало очевидно.

Правда, до этого случилось еще несколько мелких неприятностей. Одна хорошо запомнилась: стала клинить кнопка "Reset". Программы висли часто и пользоваться этой кнопкой приходилось не реже, чем клавишами клавиатуры. С тех еще времен, у меня выработался рефлекс: при каждой паузе в работе нажимать "Save". Сделал заявку на обслуживание. Пришел Женька - сервисный инженер. С порога, едва поздоровавшись, подбежал к моему компьютеру и, не сказав ни слова, нажал "Reset". Весь несохраненный текст пропал. Не так много, на самом деле, но он не мог этого знать. - Ну, вот! - а ты говорил: "Не работает" - осклабился Женька. - Через раз, - огрызнулся я, глядя на черный экран и появившуюся янтарную рамку меню загрузки.

Иронично, но через пару лет мы встретились в киббуце. Он - в поисках лучшей жизни, а я - уже наевшись ей досыта. В отличие от меня, он приехал с семьей. И отвечал за всех. Внешность у Женьки была классическая - не усомнишься. А вот жена - светленькая. И дети в нее - белобрысые. В киббуце их травили. Слышал, что и в городе он потом не прижился - вернулся.

Я вспомнил, вдруг, что видел его как-то в ОВИР - когда оформлял собственные документы. Они сидели рядом в длинной очереди, но мне тогда и в голову не пришло, что это его жена. Да и не до него было. В маленьком зале было очень тесно, смешались два больших потока: туристы и на постоянное, я искал места - заполнить документы, но все столики были полностью заняты. Оглядевшись, заметил, что пока свободен единственный подоконник и стал пробиваться к нему. Какая-то очень ухоженная хорошо одетая молодая женщина, приткнувшая свою сумочку как раз на край подоконника, с интересом смотрела, как я это делаю. На Бельмондо я не похож, женщины в мою сторону на улице не оборачиваются, и, переведя взгляд, я тут же забыл про нее. Добрался, наконец, до подоконника, начал заполнять бумаги. И, на беду, кончился стержень в ручке. Я поднял глаза - женщина все также пристально смотрела на меня. - У вас не будет ручки? - без особой надежды спросил я, сомневаясь, захочет ли она, вообще, мне ответить. На удивление, она поспешно полезла в свою сумочку и протягивая мне красивую заграничную ручку внезапно спросила: - Миша, ты меня не узнаешь?

- Узнаешь? О чем это? Кого я должен узнать? Таких дорогих женщин у меня никогда не было. И тут, словно старую фотокарточку, память выкидывает цветной кадр: пустой класс, мы вдвоем, она у доски, я за партой - попросила помочь с химией. Субботник только что кончился. Я в стоптанных кирзачах, на ней какие-то ультрамодные сапожки леопардовой расцветки. За восемьдесят рублей, как весь субботник шипели девчонки. Высокая тонкая фигурка. Бежевая курточка и заправленные в сапоги коричневые брючки. Узкая обтянутая попка. Я сглатываю слюну и диктую уравнение реакции окиси алюминия с серной кислотой. Требуется расставить коэффициенты.

- Н... ?, - выпаливаю я. Почему-то фамилию. Имя не могу вспомнить. Она смеется: - Наверное, учителя часто по фамилии называли, когда ругали. Я ведь двоечницей была. - Где сейчас? - В Венгрии, замужем за - она называет какую-то должность, что-то в посольстве - здесь в отпуске, гостит у родителей. Я с благодарностью возвращаю ручку, прощаемся.

На чужбине, с Женькой мы поладили. Понятно, не обошлось без общих воспоминаний. Среди прочего, я рассказал, в каком непотребном виде Interquadro вернуло нам компьютеры при расторжении договора. - Можно подумать, на них баб трахали, - со злостью произнес я. - Трахали, трахали. Я точно знаю, - с готовностью подтвердил Женька.

И еще был забавный эпизод, тоже про бывших коллег. Чем-то они обидели его перед отъездом, не помню уже. - А мне по фигу, - сказал Женька. Не так, правда, - жестче сказал. И помолчав, добавил: - Вот жаль только, они об этом не узнают...

Но тогда еще будущее представлялось совсем безоблачным. Осваивали Novell, изучали DR DOS, присматривались к FoxBASE. В дефиците было все: компьютеры и комплектующие - покупали за валюту, дискеты - где-то доставали, всяческие утилиты - воровали и обменивались краденым, скудная документация была только для лицензионного софта, почти вся на английском. Это составляло отдельную проблему - после суммарно десяти лет обучения: школа плюс институт, наших навыков не хватало на несложный технический текст. Едва появившиеся компьютерные словари, такие как Jinn и первые версии Lingvo от BIT Software охватывали всего несколько тысяч ходовых слов. Я взломал все, что попало в руки и вытащил оттуда словники, в надежде создать максимально полный словарь. В итоге, новая база была вновь зашифрована и всунута в старую глючную оболочку Lingvo, но этого все равно было безнадежно мало для работы.

На все остальное, документации не было вовсе. Попадали изредка в руки перепечатки статей из зарубежных компьютерных журналов - отечественных, кажется, еще не было, кроме Мир ПК - российской версии PC World и электронного - на нечитаемых дискетах - Softpanorama от Николая Безрукова. Не могу сказать, что она была особо полезна: то советы к программам, которых у нас в провинции никогда не было, то урезанные версии, но, все-таки, именно с ней до нас дошли потом ранние варианты Aidstest, опознававшие, судя по рекламе, сто с чем-то компьютерных вирусов.

Был в договоре с Interquadro один пункт, на который никто сначала не обратил никакого внимания: все гарантии аннулировались в случае вирусного заражения. Для нас это звучало также, как отмена гарантий в случае вторжения с Марса. Оказалось, зря.

Месяца через три, приперлись неурочно несколько инженеров Interquadro, один всунул дискету в компьютер, тот запищал, по экрану побежали надписи: В файле ... Обнаружен вирус... Вирус... Особо опасный вирус... Они пересели за другие компьютеры: Обнаружен вирус... Вирус... Для нас это было шоком.

Через несколько дней босс собрал совещание. Вопрос, откуда взялись вирусы почти не обсуждался: могли и "враги" подкинуть и сами занести: с дискетами бегали все - и мы и врачи, каждый тащил что мог - и к нам, и от нас, любой файл мог оказаться зараженным, а мы были слишком наивны, чтобы думать об этом. Проблема была в другом: Interquadro отказывалось не только от гарантий, но и от разработки, изрядно к тому времени забуксовавшей. Случайно ли, преднамеренно ли, но вирусная атака была для для них лучшим - без потери лица - выходом из ситуации.

Иное дело, для нас. Центр планировалось открыть уже осенью. Придут пациенты. Требовались регистратура, отчеты, архив, АРМ'ы врачей, работающие коммуникации - ничто не было готово полностью и ни у кого из нас не было опыта в разработке такого рода. Вариантов было два: перезаключение договора на новых, совершенно кабальных условиях или полный разрыв с Interquadro и разработка собственными силами.

Мы были молоды и уверенны в себе. В обмен на отказ от судебного преследования, Interquadro согласилось на передачу нам всех исходных текстов программ. На самом деле, они так рады были от нас избавиться, что поспешно вернули нам даже больше чем все: на жестких дисках предназначенного под сервер компьютера, мы нашли и исходники того самопального антивируса, которым они проверяли наши компьютеры, и их внутреннюю бухгалтерию, поразившую нас и числом кормившихся вокруг бездельников и размером их премий.

Их антивирус, к слову, детектировал ровно те три вируса (Vienna-648, Microsof-532 и что-то еще резидентное, кажется, Jerusalem), которые обнаружились в наших компьютерах, что только укрепило наши подозрения об источнике заражения.

Большая часть кода была написана на FoxBASE, но к тому времени уже появился FoxPro и, естественно, мы решили все переписать на нем. Проблем было две: не было совершенно никакой документации, кроме встроенной справки и код, исправно работавший в старом FoxBASE, внезапно, переставал работать после переноса в FoxPro.

И если со второй проблемой мы боролись очень долго и мучительно (частично, она решилась тем, что АРМ'ы врачей были переписаны сначала на C, а потом на Assembler'е), то решение первой оказалось неожиданно простым - у нас появилась документация.

Было это так: под вечер уже, пришел с дискеткой Ленька из политеха и сообщил, что выпросил - на сутки - у одного своего знакомого документацию по FoxPro - тот купил ее в метро в Москве. Проблема была в том, что база с текстом (продукция какого-то кооператива) была зашифрована и читалась только с этой самой ключевой дискеты, которую он поклялся беречь и вернуть в целости и сохранности к следующему вечеру. Дело было безотлагательное: даже при условии, что саму базу скопировать ничего не стоило, был риск, что без ключевой дискеты расшифровка может не получиться вовсе.

Мы скооперировались с "политехниками", образовав две команды: одна занялась клонированием ключевой дискеты (форматирование там оказалось нестандартным, но на низком уровне решаемым), вторая - расшифровкой собственно базы. Обе стратегии оказались успешны, к финишу мы пришли почти одновременно, дискета была возвращена ничего не подозревавшему владельцу (который, видимо, так и продолжил с ней мучиться), а у нас появилась вполне прилично переведенная документация, что сильно облегчило дальнейшую разработку.