Deus ex machina
А придумал я следующую штуку. Один из военных компьютеров будет основным. Он берет на себя роль командира между ЭВМ и остальными компьютерами бойцов-операторов. У него будет свое ПЗУ, а у операторских оно будет вообще минимальное — никакого автономного режима и так далее. После включения операторских компьютеров, они загружают свою программу через запись с магнитофона, что сократит время простоя в полтора раза.
Кроме того, в основной компьютер можно загрузить пароли для подчиненных компьютеров, каждому свой. И их может вводить другой человек, а сверять результаты — оператор основного, то есть он паролей не знает.
Передача частот передается от ЭВМ на основной компьютер в устном режиме, а потом передается на подчиненные компьютеры уже при помощи сигнала.
Декодирование данных идет в визуально шифрованном режиме, когда оператор подчиненного компьютера наблюдает, что его дисплей очищается от «мусора», — он жмет пробел для инициации передачи. Кстати, оператор вообще не нужен, потому что можно автоматизировать этот процесс, но это уже отдельная задача, которую я один не реализовал.
Все это я описывал очень простыми словами, старательно рисовал кружки и линии на доске. Наверное, со стороны казалось, что учителя принимают экзамен, только все почему-то в военной форме.
— Что тебе нужно из обеспечения, человеческой силы и времени? — спросил, наконец, начальник военчасти.
— Шесть месяцев, запись модифицированного ПЗУ, магнитофон, детали для усилителя, провода.
— А для автоматизации дешифровки?
— Дополнительные ПЗУ со статическими данными по типичным наборам последовательностей, которые представляют собой наиболее часто встречающиеся слова. И их дополнительная обработка.
— Сделаешь за четыре месяца. Потом со мной в центр поедешь — за последовательностями и на повышение. Понятно, товарищ лейтенант?
— Так точно! Рад стараться! Служу Советскому Союзу! Ой...
— Отставить «ой». Мы с тобой оба все еще служим государству, которого уже нет.
Это была правда. СССР уже не существовал, а оскудевший поток финансирования показывал, что и независимой Украине мы сами не особо нужны.
Что будет со мной на гражданке, я представлял весьма смутно, а потому решил делать то, что мне было интересно — писать код для ПЗУ. Формально для двух, но код подчиненного компьютера был куцым обрубком гражданского ПЗУ, от которого мне было только и надо, что загрузка через магнитофон. Наступало время интересной работы.
Однако прежде чем писать код ПЗУ, мне надо было решить более приземленный вопрос — а как же будет происходить обмен данными? В плане у меня получалась своеобразная локальная сеть, и нужно было иметь некое устройство, которое отловит сигнал от нужного компьютера и соединит его с основным. А как быть, если сразу несколько захотят передавать данные? Это уже блокиратор придется паять.
Сразу скажу — хаб на отечественной базе у меня так и не получился. Слишком многого я захотел и слишком рукожопым я был. Так что все ограничилось парой усилков, которые передавали сигналы с магнитофона на подчиненные компьютеры. Заодно я спаял автоматическое управление Маяком, что позволило нажатием одного тумблера включать передачу, запускать воспроизведение кассеты, а потом прокручивать ее назад и, собственно, все. Звучит примитивно, но зато делать было интересно
А с коммутацией я решил сделать все вручную. Благо, теперь я мог выпросить под это нужные рюхи со склада. В поисках панели связи у меня была альтернатива между сломанным пультом управления ракетным комплексом и нерабочими телефонными станциями «Псков». И там, и там мне нужны были только клавиши, так как у меня тупо аналоговая коммутация — каждая клавиша подключала провода к выбранному компьютеру. Но у Пскова была еще и телефонная трубка, что мне очень подходило. Кроме того, их было несколько, а значит, я мог подключить намного больше компьютеров — тут пульт управления проигрывал.
Псковы мне выдали, предупредив, что они «пустые». Потом, обсудив все нововведения, я решил, что стоит упростить схему: у оператора основного компьютера будет стоять один Псков, а на столе у операторов подчиненных компьютеров — другой. Между собой Псковы будут подключены только для переговорной линии, она же будет использоваться для передачи данных: каждый подчиненный компьютер был подключен к личной кнопке, при нажатии сигнал поступал из компьютера через один Псков на другой, а от него — к основному компьютеру.
Это все выглядело так: один из операторов поднимает руку, я снимаю трубку, он подходит и берет свою тоже:
— Четырнадцатый просит команду на передачу данных.
— Передачу данных разрешаю.
Он бросает трубку, нажимает кнопку подключения своего компьютера, подходит к нему и уже там жмет пробел для передачи данных, а в это время я у себя переключаю в режим получения данных. По окончании передачи происходит сверка:
— Передача данных завершена, контрольная сумма 11AA
— Подтверждаю, линия свободна (или ошибка в сумме — повторить передачу).
Сейчас это очень смешно и наивно, но тогда... я ощущал себя диспетчером, нет, даже не авиа, а космических войск! Что характерно — серьезны были все. А если кто-то зевал и пытался снять трубку без команды линия свободна — его легко могли послать драить сортиры!
Я тогда распечатал всякие глупые бумажки и наклеил их у себя над нерабочими клавишами — «Старт на Луну», «Десант на Марс» и тому подобное. Не обошлось без «Ракеты на Америку».
Как-то полковник Андрущенко зашел и стал читать надписи. Стал хохотать, а потом дошел до «Ракеты на Америку» и погрустнел:
— А это убери. С Америкой мы больше не враги, да и ракет у нас нет.
— Как это? Не может быть! Как нет ракет?
— Пусковые шахты бетоном заливают...
— Все?!
— Все.
Для меня это было потрясением. Газет я тогда не читал, радио не слушал — все свободное время отдавалось работе или сну.
В то, что мы с Америкой не враги, я был готов легко поверить. Но в то, что страна остается без защиты, потому что ракеты — это не для войны, а наоборот — чтоб ее не было, — вот в это поверить было тяжело. Стало очень грустно, и мне теперь стало понятно, что никуда мы не полетим — ни на Луну, ни на Марс.
Все бумажки я потом поубирал.
Под основной компьютер отгородили приличный угол, обшили его фанерой и плексигласом, поставили дверь с замком, внутри повесили огнетушитель и аптечку. Суровый дядька из отдела безопасности потребовал, чтоб питание и связь шли из зала с ЭВМ и отключались там с помощью тумблера, а на стену, которая выходит в комнату с подчиненными компьютерами, — динамик для громкой связи. Идея мне понравилась, я добавил лампу, для которой прикрутил кожух с надписью «Линяя свободна».
Пришла пора делать свое ПЗУ. Основная проблема, для решения которой и был сделан автономный режим, — то, что прошьешь программатором — не исправишь монитором. В смысле программист ПЗУ ошибается раз на ПЗУ. Но это меня не пугало, так как я имел все навыки саперного программирования и отладки с помощью тетради с ручкой.
Между прочим, теперь распознание шло в графическом режиме. Каждый сигнал передавался битами — 00: пауза, 01: точка:, 10: тире, 11 — конец блока. Четыре сигнала формировали яркость точки на монохромном дисплее — бит. В остальном я пользовался вызовами оригинальной программы от ЭВМ — с помощью стрелок курсора менялись системы декодирования, если была выбрана правильная — экран очищался и можно было передавать текст. Не видя его самого, текст отображался у меня на дисплее, а я уже передавал его дальше, если все было нормально. Это позволяло здорово экономить память и работать с длинными передачами.
Начальник военчасти все осмотрел и остался доволен. Теперь осталось вызвать специалиста по безопасности из центра, и мое детище будет использоваться в реальной разведке. А еще мне было велено подготовиться к доступу к гостайне — заполнить анкету, договор о неразглашении и прочие бюрократические штуки.
Первую неделю я ждал спецбезопасника, мне даже снилось, что он пришел проверять, а у меня зажевалась кассета. На следующую неделю, по совету Андрущенко, я начал делать свой дембельский альбом. Сразу скажу — с собой мне его не отдали. Слишком много секретных объектов, на фоне которых я снимался, да еще все подписи делал то в шестнадцатеричных кодах, то морзе. А на подложке иголкой наколол инициацию ПЗУ в бинарном формате: на память.
Зато я и не заметил, как прошло время и внезапно ко мне явился тот самый специалист по безопасности. Он был совсем не страшным, а уставшим и раздражительным. Быстро осмотрев все мое творение, он спросил, а почему я выбрал такую допотопную связь. Я смутился и честно ответил, что пытался спаять автоматический коммутатор, но у меня не вышло.
Спецбезопасник посмотрел на меня как на идиота и раздраженно сказал:
Надо было выписать селектор, потому что белые люди давно уже перешли на IBM PC-совместимое и коаксиальную сеть, а старое оборудование никому не нужно, кроме таких дикарей, которые живут в прошлом и даже серпасто-молоткастый герб еще не успели поменять на тризуб.
Он быстро оформил нужные бумаги и свалил, потому что ему еще надо было попасть на Староконный рынок, а оттуда успеть на автобус с автовокзала. Мне кажется, что основной целью и было посещение Староконки, а я — досадной помехой на этом пути. В итоге пустышкой получался я и мой труд. Потому что я — неандерталец. Человекообразное. Занимался разработкой того, что уже устарело, и через десять, даже не десять, а пять лет станет никому не нужным.
Впрочем, начальнику военчасти было покласть с прибором на все чувства. Раз по документам все прошло, в срок я уложился, точнее даже немного раньше срока, то я, безусловно, герой, совершивший военный подвиг, пусть и в мирное время. Медалей, конечно, мне никаких не дадут, но вот подвиг будем отмечать прямо по пути в центр, где мне выдадут ту самую гостайну. Моя печень интуитивно содрогнулась.
Гостайна, которой нет
На ЖД вокзале стояли трое: начальник военчасти, полковник и лейтенант. Начальник что-то сказал, дал денег и остался в одиночестве — полковник с лейтенантом пошли покупать пару ящиков водки и закуску. Не ради пьянство окаянного, а... Кого мы обманывали? Конечно, ради пьянства. Полковник сразу велел купить только две бутылки и закуску и остался ждать меня за углом. Потом мы выжидали, когда поезд начнет давать пары, бегом бежали и заскакивали на последнем моменте
Потный и запыхавшийся полковник сообщил, что кругом дефицит и достать удалось только две бутылки, по одной в руки, зато холодные. Вернув неизрасходованные деньги, полковник отправился на поиски прекрасных дам, а мне выпала честь сервировать стол.
Вернувшись без дам, полковник философски заметил, что от женщин одни неприятности. И мы начали отмечать мой подвиг. Я отметился примерно в 150 грамм, полковник в 200 грамм, остальное моментально употребил начальник военчасти и заснул, громко храпя от обиды на недоперепой. Мы готовились встречать Киев.
Получение гостайны я представлял совершенно не таким, да и мое командование тоже. Конечно, никаких салютов и подземных бункеров я и не воображал, но думал, что данные будут разложены по папкам с грифами и печатями. В реальности оказалось все прозаично.
Во-первых, большинство декодированных передач уже было оцифровано, а оставшиеся были еще с доисторических времен.
Во-вторых, оцифрованные передачи хранились в базе данных.
В-третьих, база обрабатывалась самыми настоящими американскими компьютерами. С цветными дисплеями и огромными жесткими дисками на невероятные 240Mb!
Я объяснил, что мне нужно записать самые повторяющиеся фразы из передач. Желательно в виде морзянки, упакованной по два бита. В ответ я получил вопрос, который меня поставил в тупик:
— В какой операционке работаешь?
— Эээ... ни в какой. Я данные переведу в сжатый формат и запишу в ПЗУ. Для быстрого сравнения в автоматическом режиме.
— А сколько у тебя там памяти?
— Много, целых 32k ОЗУ и 32k ПЗУ, правда 8 уходит под код и знакогенератор, но все равно хватит.
— Понятно. Для нормальной работы тебе понадобится 386 или выше, принеси пачку дискет — запишу операционку на них, сам поставишь, я думаю. Если что, запроси у руководства — вышлем, у нас есть лишние. А базу я тебе скину в архиваторе, потом распакуешь на жесткий и вольешь в базу, оттуда сможешь экспортировать в нужном тебе формате.
— Разрешите поинтересоваться — вмешался начальник военчасти — А вот это у вас считается нормальным, хранить такую информацию на враждебном оборудовании, да еще и передавать на дискетах?
— А у вас считается нормальным, что у моей жены зарплата стала в долларовом эквиваленте меньше пятнадцати баксов?
— Да при чем тут это!
— При том. Сейчас у нас других проблем хватает, а компьютеры не враждебные. Их нам американцы подарили. И у вас, наверное, скоро тоже будут такие. Не фирменные, конечно, но IBM-совместимые, на отечественной базе. Про компьютер «Поиск» слышали?
— Никак нет!
— Пройдитесь по магазинам, посмотрите. Все равно вам потребуется нормальный компьютер для работы с базой данных. И диск сразу на 240 метров как минимум берите.
Командование было мрачнее тучи. Во-первых, денег хватило только на коробку дискет, которые мне молча выдали из неизрасходованных «водочных» средств. Во-вторых, пятнадцать баксов тоже сыграли роль. А в третьих, совершенно понятно, что купить айтишку было нереально, и придется ее доставать. Перспективы не самые радужные.
Я же получил наказ: записать на дискеты операционку для работы с базой, взять документацию и выучить все, что надо, потому что доставать компьютер мне будут по частям, а это займет время.
Обратно мы ехали серьезные и трезвые. Командование обсуждало методы относительно честного добывания дисплея, жесткого и прочих компьютерных потрошков, которые я предусмотрительно записал в тетрадку. Я же начал читать руководство, которое оказалось на английском языке, что, впрочем, меня особо не смутило. Кто дампы в армии дизассеблировал — тот операционку одной левой освоить сможет. Руководство пугало безумно непонятным названием «Introduction to Sco’s Unix System V/386». Заканчивалась эпоха хакинга ПЗУ, и начиналась эпоха программирования в «Скотине».
Что мне нравится в нашей армии, так это умение «доставать» и «рожать». Все что угодно — от пачки сигарет до компьютера. Последний собирался мной по частям прямо в кабинете полковника. Сначала появилась материнка с процем, но без памяти, потом блок питания, кабели, клавиатура и так далее. В результате у меня оказалась троечка, с четырьмя метрами памяти и огромным жестким диском — на 320 метров. На диске стояла 95-я винда, и весь диск был забит картинками с порнухой. Как я потом узнал — раньше он использовался в Одесском институте сухопутных войск.
Победитель
Скотину я установил и окунулся в глубокий и неизведанный мир командного интерфейса Unix. К старому компьютеру интерЭВМ угасал, но все же я реализовал задуманное.
Наборы популярных фраз и самые частые слова из передач я ужал до бинарного формата, выкинув паузы. Этими данными прошили ПЗУ. Точно такую операцию я проводил с блоком памяти декодированной передачи для сравнения. Звучит непонятно? Показываю пример.
Предположим, у нас есть фраза «экстренный вызов», которая будет в виде морзянки записана так: ··—·· —·— ··· — ·—· · —· —· —·—— ·——— —···— ·—— —·—— ——·· ——— ·——
Выкидываем все паузы и получаем: ··—··—·—···—·—··—·—·—·——·————···—·———·————··———·——
Переводим в сжатый бинарный формат (0 — точка, тире — 1): 00100101000101001010101101111000101110111100111011
Что, в свою очередь, будет представлять набор байтов со значением 9452ADE2EF3B.
В ПЗУ была таблица адресов таких последовательностей с их размерами. Программа проверяла сначала первый байт по таблице, потом второй и, если последовательность совпадала, значит, смещение выбрано верно, и дальше шла попытка автоматически декодировать текст. Если все получалось — экран светлел (вычитались единички), и оператор мог приступать к передаче текста. Роль его была чисто утилитарная — если бы мне удалось автоматизировать коммутацию, то человек был бы не нужен. Впрочем, следует сказать, что автоматическое декодирование не всегда работало чисто — очень велик фактор ошибок, причем на многих уровнях.
Командование осталось очень довольным, я продолжал грызть премудрости Скотины, срок моей службы подходил к завершению. Продолжать карьеру военного в мои планы не входило, так что все шло своим чередом.
Меня хвалили перед строем, за неоценимый подвиг, настолько секретный, что мне даже никакая награда не полагалась, потому что я научил компьютер мыслить, и теперь все радиопередачи у нас как на ладони.
Потом я долго искал работу, пока не понял, что никому я не нужен со своим знанием Unix, а нужны бухгалтеры со знанием 1С.
Адаптировал свои игры под гражданский вариант ПК-01 и писал новые, пытаясь продавать их. Покупали мало — компьютер отжил свое.
По знакомству меня устроили работать кладовщиком на промрынке «Седьмой километр», где стоял компьютер, и мне разрешалось на нем работать. Собственно, ради этого я и пошел, так как денег было мало, хотя на вторую же зарплату я купил свой жесткий диск для опытов. Я много работал в бетонной каморке и заработал ревматизм в правом колене, так как обогреватель грел только слева. Потом я как-то купил журнал CHIP, в котором был диск с Linux Caldera, наследником Sco Unix, который и поставил на своем жестком диске, и проводил с ним время в свободные от работы часы.
Затем я, наконец, нашел более престижную, хотя и менее оплачиваемую работу, на которой у меня появлялся доступ к Linux серверу, да еще и с неограниченным подключением к интернету. Где я за полтора года победил его полностью, досконально изучив все аспекты.
Говорят, что человек со временем теряет способность к обучению. Вероятно, что тот брейнфакинг, который я сам себе устроил в армии, был своего рода «закалкой» мозга, поэтому я не прекращаю осваивать новое, хотя не редко чувствую себя полным идиотом. Наверное, мне просто повезло, так как я не был сломан или оболванен службой, а наоборот — провел время с пользой, тренировал мозг и набрался новых знаний. Иногда чудеса случаются.