К книге
Проект «Сфера-80»: ОлимпиадаГлава 2 Впихнуть невпихуемое
5%
Глава 2 Впихнуть невпихуемое
2

Февральское утро тысяча девятьсот восьмидесятого года выдалось стылым и серым. В лаборатории КБ-3 еще не гудели вентиляторы тяжелых осциллографов, не трещали реле и не звенели надрывные голоса инженеров, спорящих о допусках. Стояло то самое хрупкое затишье, которое бывает только перед сходом лавины. Воздух в лаборатории казался густым и неподвижным, словно застоявшаяся вода.

Алексей Морозов сидел за своим рабочим столом, отодвинув в сторону картонную папку с синей наклейкой «Сфера-80–2» и заветную коробочку с чипом К580. Прямо перед ним высилась гора бумажных конвертов. Обычная утренняя почта. Точнее, то, во что она превратилась после недавней публикации в прессе. Это была всего лишь первая, ознакомительная статья — пара страниц текста об архитектуре их машины да крошечный пример алгоритма. Они даже не давали полных электрических схем. Но эффект превзошел все ожидания.

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

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

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

Следующий. Новосибирск. Школьник умолял объяснить, почему в опубликованном алгоритме возникает ошибка переполнения стека.

Гора конвертов таила в себе колоссальную, еще не осознанную государством энергию. Страна, лишенная массового доступа к вычислительной технике, буквально изголодалась по умным машинам. Люди писали код на бумаге, прокручивая циклы и условные переходы в уме. Этот феномен «бумажного программирования» поражал Морозова до глубины души. В его времени люди не могли сложить два двузначных числа без смартфона, а здесь подростки безошибочно компилировали в головах ассемблерные листинги.

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

Он глубоко вдохнул, медленно выдохнул. Паника — плохой советчик для системного архитектора. Морозов взял карандаш и начал методично, как привык это делать при сортировке бэклога задач, раскладывать письма по категориям. Слева — запросы на документацию. Посередине — дельные технические предложения. Справа — откровенная фантастика и письма от школьников. Именно эта правая стопка, пухнущая на глазах, была самой важной. Аудитория их будущего. Алексей смотрел на неровные почерки, и в его голове начала вырисовываться безумная, грандиозная мысль. Что если… дать им задачу? Провести заочное соревнование? Всесоюзный алгоритмический квест на страницах журнала? Идея была сырой, опасной, но от ее масштаба у Морозова захватило дух. Это могло бы заставить неповоротливую систему признать их право на существование.

Дверь лаборатории с протяжным скрипом отворилась, впустив клуб морозного воздуха из коридора и густой аромат сигарет «Ява».

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

— Леша, я это сделал, — хрипло произнес Громов, игнорируя приветствия. Он прошел к столу Морозова, отодвинул локтем стопку писем из Новосибирска и водрузил коробку на освободившееся место. — Я выжал из этой архитектуры все соки. Клянусь, еще один байт, и машина бы просто лопнула от перенапряжения.

Программист запустил руку в коробку и извлек оттуда тугой рулон бумаги, испещренный дырочками. Следом вытащил стопку широких распечаток с алфавитно-цифрового печатающего устройства ЕС ЭВМ.

— Смотри сюда, — Евгений расстелил листинг прямо поверх конвертов, придавив края граненым стаканом и коробкой с чипом. — Вот наша базовая система. Инициализация, опрос клавиатуры, обработка прерываний телевизионной развертки, вывод на экран. Я оптимизировал циклы так, что базовая система влезла в один килобайт. Осталось буквально байт пятнадцать свободных, и то я их нулями добил для ровного счета. Чистая, дистиллированная логика.

Морозов уважительно кивнул. Упаковать базовый ввод-вывод в такой объем было настоящим искусством, доступным лишь маньякам машинного кода.

— А вот это, — Громов с театральным жестом развернул второй листинг, который оказался раза в три толще первого, — это наш пропуск в светлое будущее. Урезанный интерпретатор микробейсика. Как ты хотел. Не Фокал, не Фортран, не Кобол. Бейсик. Я выкинул из него почти всё, оставил только целочисленную арифметику, базовые операторы, переменные от A до Z и оператор графики. Теперь школьники смогут писать команды буквами, а не вбивать шестнадцатеричные коды, ломая пальцы.

Громов перевел дух и постучал прокуренным пальцем по бумаге.

— Весь бейсик занял почти три килобайта. Итого, Леша, мы имеем ровно четыре килобайта кода. Четыре. Ни байтом меньше. Я не смогу вырезать больше ничего, не нарушив синтаксис языка. Иначе это будет не язык программирования, а невнятная азбука Морзе.

— Четыре килобайта, — задумчиво повторил Морозов, откидываясь на спинку стула. — Это хорошо. Ты молодец, Женя. Грандиозная работа.

— Я-то молодец, — нервно дернул щекой Громов. — Но теперь у нас проблема из реального мира. Куда мы все это физически зальем?

* * *

Громов вытащил из кармана огрызок графитного карандаша и придвинул к себе чистый лист миллиметровки.

— Смотри, какая у нас диспозиция на складе, — начал он, быстро рисуя прямоугольники, обозначающие корпуса микросхем. — Из доступных постоянных запоминающих устройств, которые можно программировать, у нас есть только старые добрые К573РФ1. Емкость одного такого кристалла — один килобайт. Значит, чтобы запихнуть мои четыре килобайта, нам нужно поставить на макетную плату «Сферы-80М» четыре таких корпуса.

Евгений обвел четыре нарисованных прямоугольника жирной линией.

— Выстроим их в ряд, прицепим логику выборки, и дело в шляпе. Да, плата станет чуть больше, но зато мы впишемся в лимиты того, что можно достать у снабженцев.

С соседнего стола донесся отчетливый звук удара ручки отвертки по столу.

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

— Четыре корпуса РФ-первых? — голос Любы звучал тихо, но в нем отчетливо слышалось шипение высокого напряжения. — Женя, ты в своем уме? Ты хоть открывал справочник по питанию этой рухляди?

Громов поморщился, словно у него заболел зуб. Он потянулся к щербатой кружке с давно остывшим, черным как смоль чифиром, и сделал большой глоток.

— Любочка, солнце мое, питание — это ваша епархия. Мое дело — алгоритмы. Ну подведете туда пару лишних проводков, делов-то.

— Пару проводков⁈ — Люба отложила паяльник на подставку так резко, что капля расплавленного припоя отлетела на край стола. Она встала и подошла к их столу. — Я три дня пыталась сдержать свое обещание с планерки! — выпалила она. — Я пересчитала схему вдоль и поперек. Жень, у нас в первой «Сфере» стоит всего одна РФ-первая, и её блок питания на три разных напряжения уже греется так, что на нём можно чайник кипятить! А ты хочешь повесить на шину четыре корпуса! Чтобы прокормить эту гирлянду, мне придется собирать трансформатор размером с обувную коробку. Он будет полыхать, как мартеновская печь. Но это полбеды. Эти микросхемы капризные. Четыре корпуса дадут такую просадку напряжения и такие пульсации тока по шине, что никакие сглаживающие емкости не спасут. Твоя великолепная система будет уходить в перезагрузку каждый раз, когда кто-то в соседнем цехе включит фрезерный станок!

— Поставим еще конденсаторы! — не сдавался Громов. — Зальем все дросселями!

— Это не настольный компьютер получится, а электрообогреватель с функцией калькулятора, — категорично отрезала Люба. — Я не смогу развести плату под этот кошмар, не выходя за габариты корпуса. Физику не обманешь. Ищи способ ужать код в два килобайта. Два корпуса я еще как-нибудь сбалансирую.

Громов аж поперхнулся чифиром.

— Ужать код⁈ Да я там каждую инструкцию вылизал! Я циклы разворачивал, я регистры вместо оперативной памяти использовал! Что мне выкинуть? Графику? Печать на экран? Может, вообще оставим только команду сложения двух чисел, чтобы тебе удобнее было провода паять⁈

Споры между ними случались часто. В будущем, откуда пришел Морозов, противостояние «железячников» и программистов давно сгладилось благодаря гигабайтам дешевой памяти и мощным процессорам. Программисты обленились, упаковывая простейшие программы в сотни мегабайт фреймворков, а инженеры просто ставили блоки питания на тысячу ватт.

Здесь же, в суровом советском 1980 году, каждый байт информации и каждый миллиампер тока были на вес золота. Программист, которому вечно не хватало памяти для полета мысли, насмерть бился со схемотехником, скованным безжалостной физикой перепадов напряжения в отечественных электросетях.

Люба скрестила руки на груди и упрямо поджала губы. Громов сжал кулаки, готовый защищать свой код до последней капли крови.

* * *

— Стоп, — негромко, но веско произнес Морозов.

Он протянул руку и аккуратно извлек огрызок карандаша из подрагивающих пальцев Громова. Затем перевел взгляд на Любу.

— Никто не будет резать код. Женя проделал феноменальную работу. Язык программирования должен остаться полноценным, иначе вся эта затея с народной ЭВМ теряет смысл. Дети должны писать нормальный человеческий «PRINT», а не секретные формулы, как в нашей текущей реализации.

Громов победно ухмыльнулся, но Морозов тут же охладил его пыл.

— И никто не будет городить обогреватель из четырех РФ-первых. Люба абсолютно права. Архитектура устройства должна быть изящной, а питание — стабильным. Если машина будет виснуть, пользователи проклянут и нас, и твой бейсик.

— И как ты предлагаешь впихнуть невпихуемое? — скептически изогнула бровь Ветрова. — Физику не обманешь. Четыре килобайта — это четыре кристалла.

Морозов ничего не ответил. Он встал, подошел к громоздкому металлическому шкафу, стоящему в углу лаборатории, и с лязгом распахнул створку. Порывшись среди пыльных папок с ГОСТами и старых чертежей, он извлек толстый, затрепанный том в темно-синей обложке. Это был отраслевой справочник по микроэлектронике, предназначенный исключительно для служебного пользования, который Михалыч чудом выбил в министерстве в прошлом месяце.

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

— Смотрите сюда, — он прижал страницу пальцем. — Номенклатура компонентов на этот год.

Люба наклонилась ближе, поправляя очки. Громов вытянул шею.

— К573РФ2, — прочитала Ветрова. — Постоянное запоминающее устройство с ультрафиолетовым стиранием. И что? Новая версия?

— Смотри на характеристики, — мягко поправил Морозов.

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

— Емкость… два килобайта? — неуверенно произнесла она. — В одном корпусе?

— Именно, — кивнул Морозов. — Плотность упаковки увеличена вдвое. Чтобы разместить твои четыре килобайта кода, Женя, нам понадобится всего два таких чипа.

— А питание? — тут же спросила Люба, в голосе которой зазвучала надежда.

Алексей улыбнулся одними уголками губ.

— А питание в рабочем режиме, Любовь Анатольевна, у них одноканальное. При чтении — только плюс пять вольт. Никаких минус пяти. Никаких плюс двенадцати. Можете с чистой совестью выкинуть из нашего старого блока питания половину обвязки и забыть про неё, как про страшный сон. Для прошивки повышенное напряжение всё равно понадобится, но это уже задача программатора, а не нашей платы.

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

— Подожди, — нахмурился Громов, быстро прикидывая в уме карту памяти. — Адресное пространство у нас сплошное, а корпуса два. Как вы выборку кристалла организуете? Просто заведете одиннадцатый бит адреса на контакт выбора микросхемы через инвертор, или нормальный дешифратор поставим, чтобы адреса по всей памяти не зеркалились?

— Верный вопрос, — Морозов пододвинул к себе чистый лист ватмана и взял линейку. — Вот тут мы и применяем архитектурный подход. Мы не просто ставим чипы, мы добавляем им регулировщика.

Карандаш Алексея заскользил по бумаге. В его движениях была уверенность человека, который чертил эту схему сотни раз в другой, еще не наступившей жизни.

Он нарисовал центральный процессор, от него вывел параллельные линии шины адреса и шины данных. Затем нарисовал два прямоугольника новых чипов К573РФ2.

— Шину данных запараллеливаем, — комментировал Морозов свои действия. — Младшие адреса от нулевого до десятого заводим на обе микросхемы одинаково. А вот старший, одиннадцатый адресный бит, мы пускаем через маленькую хитрость.

Он дорисовал между процессором и памятью небольшой квадратик, подписав его: «К155ИД4».

— Дешифратор, — выдохнула Люба. На ее лице расцветала совершенно искренняя, светлая улыбка. Она уже видела всю красоту решения.

— Точно, — подтвердил Морозов. — Копеечная микросхема мелкой логики. Она анализирует состояние старшего бита. Если там ноль, дешифратор выдает сигнал выбора кристалла на первую РФ2. ЦУБ читает базовую систему ввода-вывода. Как только программа переходит за границу первых двух килобайт, старший бит становится единицей. Дешифратор мгновенно отключает первую микросхему и активирует вторую. Для ЦУБа это выглядит как единое, непрерывное адресное пространство на четыре килобайта. Никаких конфликтов на шине. Идеальная синхронизация.

Громов уставился на чертеж. Программист внутри него только что осознал, что его код спасен, и ему не придется удалять ни единой строчки.

— Леша… — протянул Евгений, с уважением глядя на Морозова. — Ты шаман. Ты просто взял и помирил программный код с паяльником.

Люба не сказала ни слова. Она просто смотрела на схему. Обычно инженеры ненавидели переделывать готовую работу, особенно если плата уже была наполовину разведена. Но сейчас Ветрова раскрывалась с совершенно иной стороны. Она была не просто ворчливой исполнительницей, следящей за ГОСТами. Она была фанатиком изящной инженерии.

То, что нарисовал Морозов, было элегантно. Это убирало лишнее напряжение, снижало нагрев, уменьшало размер платы и повышало общую надежность системы до индустриальных стандартов. Это была эстетика чистого разума, воплощенная в кремнии и меди.

— Значит так, — Люба решительно сдвинула очки на переносице и выхватила чертеж из-под рук Морозова. — Я иду переразводить плату. Старые посадочные места под РФ1 выпаиваю к чертовой матери. Готовлю панельки под две РФ2 и дешифратор. Блок питания пересчитаю к вечеру, он теперь будет в два раза компактнее. Женя!

Громов вздрогнул от командного тона.

— Ась?

— А где мы их возьмем? — Люба вдруг осеклась, переведя вопросительный взгляд на Морозова. — Это же новейшая номенклатура. Нам их по фондам в лучшем случае к концу года выделят.

Алексей хитро прищурился:

— Михалыч вчера курил со снабженцами. Говорит, соседям из «Луча» по ошибке отгрузили опытную партию РФ-вторых вместо РФ-первых. А они им даром не нужны, у них старые программаторы их не шьют. Женя, это твоя задача.

— Понял, — Евгений радостно потер руки. — Беру наш резервный фонд технического спирта и иду к лучевским кладовщикам на дипломатические переговоры. Завтра два кристалла будут на столе!

* * *

Люба стремительно вернулась к своему рабочему месту. Щелкнул тумблер осциллографа, зеленый луч погас. Она взяла кусачки и с почти физическим наслаждением начала выкусывать с макетной платы толстые провода, которые столько крови попили ей еще на первой версии «Сферы» — линии злосчастных минус пяти и плюс двенадцати вольт.

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

Морозов остался один за своим столом.

Он смотрел на пустую панельку для микросхемы памяти, которую Люба отложила в сторону как ненужную. Макет «Сферы-80М» прямо на глазах обретал законченный, серийно-пригодный вид. У них будет хорошая архитектура. У них будет встроенный язык программирования. Это уже не просто игрушка, это полноценный инструмент.

Алексей закрыл синий справочник. Его взгляд снова упал на гору писем от радиолюбителей.

Холодная мысль, тревожная и будоражащая, коснулась его сознания.

Они решили проблему для единичного прототипа. Громов принесет две микросхемы, Люба спаяет их на макете. Они запишут туда код с помощью огромного лабораторного программатора ЕС ЭВМ, выпросив у вычислительного центра немного машинного времени.

Но что будет завтра?

Предыдущая главаГлава 2 из 44Следующая глава