Липатов выложил на стол чистый лист и педантично выровнял авторучку по краю. Иван Михайлович еще с утра предупредил об открытом визите по академической линии — в лаборатории ждали коллег-ученых.
На столе стояла базовая «Сфера-82» из первой малой партии. Светло-серый корпус, дисплей в текстовом режиме, дисковод с откинутым флажком, а на отдельной тумбе — массивное АЦПУ с заправленным рулоном широкой бумаги.
С проходной позвонили пять минут назад: делегация получила разовые пропуска и поднялась на этаж. Дверь приоткрылась, впуская троих гостей и запах мартовского мороза.
Впереди шагал мужчина с кожаным портфелем под мышкой. Из-за его плеча выглянула девушка с картонным тубусом, вытянув шею и рассматривая светящийся экран. Замыкал троицу парень в распахнутой штормовке, на ходу растирающий красные от холода руки.
— Доброе утро! — Мужчина торопливо стянул колючий шарф. — Институт электрохимии, лаборатория кинетики. Я Дмитрий Ковалёв, старший научный сотрудник. Это Ирина, аспирантка, и Роман, инженер-экспериментатор. Иван Михайлович много рассказывал о вашем проекте, да и академическое сарафанное радио не молчит. Нам интересно посмотреть на ЭВМ как на рабочий инструмент для лаборатории.
Михалыч поднялся и приветственно развел руками.
— Вешалки справа, — Морозов указал на деревянную панель у двери. — Алексей Морозов, ведущий инженер.
— Читали вашу со Смирновой книгу, Алексей! — Ковалёв пристроил пальто на крючок и в два шага оказался у стола. Он внимательно окинул взглядом дисковод и мерцающий экран. — В академической среде новости разлетаются быстрее ведомственных отчетов. Мы приехали с конкретным интересом: ищем небольшую рабочую ЭВМ для лаборатории, чтобы обсчитывать ряды измерений прямо на месте, и хотим понять, потянет ли она наши задачи.
Громов, привычно полулежавший на стуле с вытянутыми ногами, даже не пошевелился. Только скептически прищурился.
— Смотря чего вы от нее ждете, — проворчал он. — Если хотите посчитать орбиту Юпитера с учетом гравитационных возмущений от всех астероидов, то мы забьем массивами все шестьдесят четыре килобайта, а машинного времени не хватит до конца века. А если что-то земное, то вполне.
Ирина положила тубус на край стола и достала из кармана сложенный вчетверо лист миллиметровки.
— Нам не нужен Юпитер, — она развернула бумагу со стертыми на сгибах краями. — И заменять большую ЭВМ мы не хотим. Сложные теоретические расчеты нас не интересуют. У нас другая беда.
Она расправила лист рядом с клавиатурой. Поле пересекала кривая — ломаная линия, выстроенная по карандашным точкам. Внизу шла шкала напряжения, сбоку — тока. Местами график срывался в резкие пики, затем спадал. Бумага посерела от частых стираний ластиком.
— Вольтамперометрия, — пояснил Роман, подходя ближе. — Рутинный процесс. Меняем напряжение на электроде по заданному закону, фиксируем ток. По форме этой кривой можно судить, что происходит в растворе. Какие примеси, какова скорость реакции, не начал ли разрушаться сам электрод.
Дмитрий провел пальцем по самому высокому зубцу на графике.
— Опыт длится полчаса. А дальше начинается самое муторное: мы получаем ленту самописца или столбцы цифр с цифрового вольтметра, если повезет. Чтобы понять результат, нужно вычесть фоновый ток электролита, затем сгладить шумы — видите, как кривую дергает? Следом найти точное значение максимума и вычислить площадь под пиком. Это заряд.
Морозов рассматривал чертеж. Первичная обработка измерений — то, для чего малые машины и предназначались.
— И сейчас вы обсчитываете это вручную? — спросил Алексей.
— Вручную, — кивнула Ирина. — С карандашом, логарифмической линейкой и арифмометром. Если измерений много, набиваем колоду перфокарт и несем в институтский вычислительный центр. Там очередь, машинное время БЭСМ расписано, теоретики забирают львиную долю. В лучшем случае распечатку отдают через три дня.
— А раствор не живет три дня, — Дмитрий оперся ладонями о край стола. — Температура меняется, реактивы стареют. Если через трое суток после обсчета выяснится, что у нас медленно поплыл базовый фон, отравился электрод или пик сместился из-за микроскопической примеси, всю серию придется выкинуть. ЭВМ нужна нам для понимания результатов опыта в тот же день, до того, как я солью электролит в раковину.
Липатов, до этого молча слушавший, придвинул к себе чистый лист.
— Подождите, — он примирительно поднял авторучку. — Вылитый в раковину раствор мы потом переведем на язык, понятный высокому начальству. А сейчас давайте разложим вашу химию на три простых этапа: входные данные, алгоритм обработки и вывод результата. Что конкретно у вас на входе? Как выглядит один ряд измерений?
— Пары чисел, — быстро ответила Ирина. — Мы меняем напряжение с заданным шагом и фиксируем ток.
— Токи мизерные, — добавил Роман. — Сплошные доли микроампера, кривая часто уходит в минус. Нам критически важен третий-четвертый знак после запятой. Машина с такими мелкими дробями справится? Как у нее с точностью и скоростью расчета?
Громов перестал раскачиваться на стуле и подался к столу.
— В интерпретатор вшита программная работа с плавающей запятой, — ответил он. — Шести знаков мантиссы вам хватит с запасом. Считать будет не так мгновенно, как целые числа, но справится. Какой объем одного опыта? Сколько точек?
— Триста, — Роман пожал плечами. — Максимум пятьсот. Длинные опыты мы просто бьем на несколько серий.
Евгений почесал подбородок, прикидывая раскладку в памяти.
— Пятьсот пар чисел, — резюмировал Громов. — Это копейки, пара килобайт. Влезет куда угодно, еще и место под интерпретатор и переменные останется. Но для спокойной лабораторной работы лучше сразу ставить память на шестьдесят четыре килобайта, чтобы потом с буферами вывода не жаться, когда аппетиты вырастут. А дисковод пойдет исключительно под архив. Во время счета дергать дискету не придется, всё ляжет в оперативку.
— Отлично, — Липатов вывел на бумаге первую строку. — Исходные данные: одномерные массивы до тысячи элементов. Обработка: вычитание константы, скользящее среднее. Что на выходе? Что машина должна выдать, чтобы вы считали результат полученным?
Ирина посмотрела на громоздкий корпус АЦПУ.
— Распечатку. Очищенную от фона таблицу значений, которую можно вклеить в лабораторный журнал. И расчет пары-тройки контрольных цифр: площадь пика, наклон кривой на начальном участке. Если она еще и покажет график на экране, чтобы мы глазом ловили аномалии — будет совсем замечательно. Но без бумаги результата нет.
Морозов слушал Ирину. В голове выстраивалась привычная технологическая цепочка из его времени. Там массивы измерений уходили бы с прибора прямо в компьютер, мгновенно обрастая графиками, цифровыми фильтрами и готовыми отчетами. В восемьдесят первом этот конвейер предстояло собирать вручную, увязывая вместе малую ЭВМ, ручной ввод чисел, дисплей и бумажную печать, чтобы позже дойти до прямого съема данных через платы преобразователей.
— Женя, — Морозов повернулся к программисту. — Набросаешь для наглядности? Загнать в цикл десяток значений, вычесть фон и кинуть на печать.
Громов придвинул к себе ЭВМ. Корпус коротко стукнул по столешнице.
— Сразу предупреждаю, — сказал он, опуская пальцы на клавиши. — Готового научного пакета у меня в кармане нет. Покажу только принцип: вашим массивам хватает памяти, процессор тянет цикл сглаживания, а на выходе печатается осмысленный результат.
Он загрузил МикроБейсик. На экране замигал квадратный курсор, и Громов начал вбивать короткие строки: DIM U(500), INPUT F.
— МикроБейсик, — коротко пояснил он гостям. — Тот же самый, что работает на наших прошлых машинах, чтобы не плодить зоопарк языков. Для вычислений с плавающей запятой его за глаза хватит.
— Вычитаем постоянную величину? — спросила Ирина, наклоняясь ближе к дисплею. — У нас фон иногда меняется вместе с напряжением, идет почти как наклонная прямая. Одной константы тут мало. Сможете задать зависимость от напряжения?
— Легко, если дадите формулу, — отозвался Громов. Клавиши сухо и ритмично щелкали под его пальцами. — Но для быстрой демонстрации вычтем константу. Диктуйте с миллиметровки первый десяток значений. Я вобью их прямо в код через DATA. Отдельный файл заводить не будем.
Роман усмехнулся, глядя на бегущие светлые символы.
— Наш лабораторный самописец такую таблицу не выдаст. Он просто рисует кривую на ленте, а мы потом ползаем по ней с линейкой.
— А площадь пика эта штука посчитает? — спросил Дмитрий. — Интегрирование потянет?
— Интегрирование — слишком гордое слово для восьмиразрядного процессора, — хмыкнул Громов. — За высокой математикой — это к БЭСМ-6. У нас тут обычная арифметика. Напишу вам сумму трапеций, для оценки хватит.
Стук клавиш ускорился. Громов печатал сериями: быстрая очередь ударов, короткая пауза на обдумывание цикла, снова очередь. Через три минуты он откинулся на спинку стула.
— Поехали. — Евгений нажал клавишу запуска.
Текст на экране сдвинулся вверх, оставив короткий запрос: ВВОД ФОНА.
Громов заглянул в измятую миллиметровку Ирины и набрал число. По темному полю дисплея тут же побежали ровные столбцы цифр: исходное напряжение, измеренный ток, очищенные значения, сглаженный ряд. В самом низу замерла итоговая сумма — та самая примитивная площадь.
Дмитрий подался вперед, вглядываясь в экран. Ирина тихо хмыкнула, узнав в верхних строках свои контрольные расчеты.
— Порядок, — сказал Громов. — Теперь делаем копию для лабораторного журнала.
Он вбил короткую команду. Механизм АЦПУ включился с резким металлическим лязгом. Внутри загудел электромотор, разгоняя литерную цепь, и блок стальных молоточков с оглушительным треском ударил по красящей ленте. Пахнуло нагретой бумажной пылью и машинным маслом. Широкий рулон дергался, построчно перенося экранные данные на бумагу.
Дождавшись тишины, Громов нажал кнопку прогона, оторвал лист о зубчатый край и протянул гостю.
— Скучная вещь, — констатировал программист. — Никакой магии: программа взяла числа, вычла и распечатала.
Дмитрий принял бумагу. Он переводил взгляд со светящегося экрана на густые чернильные колонки.
— Скучная вещь нам и нужна, — кивнул Дмитрий, передавая бумагу Ирине. — Нам не надо обгонять вычислительный центр по скорости. Дело в другом.
— В задержке, — подсказал Липатов. Он сидел с краю и быстро записывал тезисы.
— Да, — согласился Дмитрий. — В сокращении времени между выключением установки и результатом. Если аспирант не бежит через полгорода с бланком и не ждет очереди до завтра, мы успеваем сделать три серии замеров за смену. И можем сразу вылить испорченный раствор, если расчет пошел не туда.
Иван Михайлович сделал шаг вперед и вклинился в полукруг химиков, обступивших стол с машиной.
— Выходит, — пробасил начальник КБ, — мы говорим о нормальной лабораторной комплектации. Полноценное рабочее место вплотную к экспериментальной установке. Питание, дисплей, дисковод под архив замеров, устройство печати. И чтобы технику можно было безопасно держать на одном столе с вашими реактивами.
— Именно так, — ответила Ирина, сворачивая миллиметровку. — Нам нужен обычный, утилитарный прибор, вроде осциллографа или pH-метра. Лаборант подошел, ввел с бланка свои сто точек, нажал кнопку, получил таблицу.
Липатов провел под записями черту.
— «Сокращение задержки между опытом и решением о повторе», — проговорил он, вписывая фразу в нижнюю треть листа. — Если ваш институт изложит это в официальном письме, приложив типовые задачи и примеры вычислений, мы получим веский довод для министерства.
Морозов слушал и понимал, что запрос от реальной лаборатории сработает надежнее любых внутренних планов КБ. Проекту требовались люди, которым машина нужна для ежедневной рутины.
Алексей оперся о край стола.
— Если рабочее место со «Сферой» действительно будет стоять рядом с экспериментальной установкой, — негромко начал он, — то следующим шагом станет отказ от ручного ввода. Зачем переписывать цифры с вольтметра на бумагу, а потом с бумаги вбивать в память?
Роман настороженно прищурился.
— А как?
— Забирать сигнал прямо с установки. Через плату аналого-цифрового преобразователя. С проводов.
Громов с хрустом потянулся на стуле.
— И вот там начнется настоящая веселуха.
Химики перевели взгляд на программиста.
— Преобразователь — железка бесхитростная, — с явным удовольствием пояснил Громов. — Плата переведёт в двоичный код любое напряжение на входе: вашу полезную кривую, дрейф нуля, наводку от соседнего термостата и искру в коридорном выключателе. А когда в распечатке вместо долей микроампера вылезут случайные скачки до тысяч единиц, мы будем часами искать крайнего. Гадать, где ошибка: в математике программы, в плохом экранировании провода или в том, что у вас электрод растворился.
Романа перспектива не испугала. Наоборот, он заметно оживился.
— Мы с этим нулем и так каждый день воюем. Зато если получится — мы перестанем работать писарями!
— Точно, — подхватила Ирина. — Если выкинуть из цепочки уставшего лаборанта с шариковой ручкой, мы избавимся от половины ошибок переписывания еще до начала расчетов.
Липатов дважды стукнул авторучкой по столешнице.
— Стоп. Фиксирую это исключительно как туманную перспективу. — Он решительно обвел пару строк на своем листе. — Иначе завтра вы потребуете стыковку с каким-нибудь хроматографом. Для начала — только ручной перенос. Прямой съем данных пойдет как тема для отдельной разработки.
— Справедливо, — кивнул Дмитрий. Он щелкнул замком портфеля. — Нам пока и ручного ввода за глаза хватит. Главное — машина рядом с вытяжным шкафом. Что от нас нужно, чтобы всё это не осталось просто разговором? Мы ведь сами заинтересованы.
Иван Михайлович шагнул ближе.
— Официальное письмо от вашего института, — произнес он. — Максимально предметное. Какие именно расчеты вы проводите, сколько опытов ставите за неделю, какая реальная задержка набегает из-за очередей к большой ЭВМ. Прямо к заявке приложите типовые ряды измерений и рабочие формулы.
Он помолчал и добавил:
— Напишите так, чтобы было ясно, сколько дней теряет лаборатория в ожидании машинного времени. Чтобы я мог положить это на стол и сказать: вот здесь расчеты стоят неделю, а с нашей техникой результат будет готов к вечеру. Сделаете?
— Сделаем, — кивнул Дмитрий. — Завтра набросаем обоснование, а к концу недели добьемся подписи зама по науке. Нам эта машина действительно нужна.
Гости попрощались и ушли, на ходу обсуждая, какие именно массивы стоит приложить к заявке. Шаги на лестнице быстро стихли.
Липатов взял свежий лист, снял колпачок с авторучки и вывел в самом верху крупными печатными буквами: «Открытое применение. Научная лаборатория. Табличная обработка измерений».
Громов качнулся на стуле и со стуком опустил передние ножки на линолеум.
— Для заявки формулируй как можно уже, Серёжа. Машина у нас универсальная, спору нет, но чиновникам лозунги не нужны. Напишешь в обосновании про решение любых научных задач — утонем в согласованиях. Нужны конкретные цифры.
Липатов аккуратно подчеркнул заголовок двойной линией.
— Пишу строго по делу. Область применения: локальные опыты, ряды измерений, печать результатов. Без замаха на всесоюзный масштаб.
Иван Михайлович склонился над столом, пробегая глазами ровные чернильные строки.
— Вот с таким документом, Лёша, — он обернулся к Морозову, — уже можно пробивать открытую серию. Здесь понятный пользователь и живая, измеримая задача. Сокращение расчетов с недели до одного вечера — лучший аргумент для производства.
Морозов смотрел на стоявшую на столе «Сферу-82» и белеющую над валиком печатающего устройства бумагу с колонками цифр. Лабораторный вариант нельзя было ограничивать одной платой аналого-цифрового преобразователя. Химикам понадобится снимать показания с одних установок, физикам — с других.
— Нам не хватит одного измерительного блока, — произнес Морозов. — Для разных институтов потребуются разные приборы и своя периферия. Значит, нужен отдельный лабораторный вариант машины. С выведенными наружу разъемами и защищенными портами ввода-вывода.
Громов смахнул с металлической гребенки обрезки бумажной ленты.
— Главное — не выводить системную шину наружу напрямую, — сказал он. — Дело не в людях, а в чужих приборах и разных электрических режимах. На лабораторных установках могут быть наводки, гуляющий общий провод. Без буферов на вход легко придет помеха или аварийное напряжение, и процессор вылетит. Придется ставить буферные микросхемы, делать гальваническую развязку и надежную защиту входов. И писать понятное описание для каждого контакта.
Липатов добавил новую строчку в нижнюю часть своего листа.
— Фиксирую для заявки: лабораторный вариант «Сферы-82» с защищенными цифровыми линиями для внешних устройств. Сфера-82Л.