К утру следующего дня растр уже стал привычным фактом жизни, как скрип двери в макетную или вечный запах канифоли.
А вот передняя панель стенда — нет.
Алексей стоял у стойки, опираясь ладонями о край. На него тупо смотрели индикаторы, пара лампочек «ПИТАНИЕ» и «ГОТОВ» и аккуратный блок из двадцати кнопок: цифры, «ВВОД», «СБРОС», несколько операций, ещё пара служебных.
Для арифмометра — почти роскошь. Для чего‑то, что претендует называться учебно‑демонстрационной ЭВМ, — костыль.
Он ясно представил, как на этом вводят формулу не из трёх слагаемых, а что‑нибудь человеческое. «ПРЕМИЯ:=ОКЛАД*КОЭФФ». Сначала буквы рисуются в голове, потом — в листинге. Здесь — только цифры, да ещё и по одной, с их табличными кодами.
«Сейчас бы воткнул в USB любую клавиатуру из любого магазина, — мелькнуло. — И забыл про проблему. Но тут USB ещё даже как буквы не придумали. Тут максимум — телефонный диск и пишущая машинка».
Он для чистоты эксперимента нажал «3», «+», «4», «ВВОД». Лампы послушно показали «0007».
Скука.
Пятикурсник в техникуме терпел бы. Пятиклассник — нет.
— Я же говорил, что эта панель — тупик, — сказал сам себе Алексей и отступил, чтобы посмотреть на стенд целиком. Цифровой блок выглядел аккуратно, почти нарядно. Но — как на калькуляторе. Сколько ни перекрашивай корпус, буквы там сами не вырастут.
Дверь хлопнула, и в комнату ввалился Игорь.
Не вошёл — именно ввалился. Под мышкой у него был серый металлический ящик, а другой рукой он волок за собой что‑то тяжёлое на ремне.
— О, — сказал он, увидев Алексея. — А я как раз к тебе. Держи.
Он поставил на стол ящик. Тот глухо бухнул. Следом — второй предмет: низкий, широкий, с клавишами, которые ещё две комнаты назад звенели друг о друга.
Пишущая машинка «Консул». Чуть потрёпанная, без крышки, с облезлой табличкой, но живая. На месте было всё: рычаг возврата каретки, «З», «Ю», цифры, пробел — весь набор.
— Ты что, отдел делопроизводства разгромил? — спросил Алексей.
— Общежитие ДК, — с явной гордостью ответил Игорь. — Списанная машинка, акт, печать, подпись директора. Можем разобрать на органы без риска для социалистической собственности.
Он вытащил из кармана сложенный вчетверо листок и потряс.
— Пожалуйста: «передать в КБ‑3 НИИ „Электронмаш“ для учебно‑демонстрационных работ». Подписано, согласовано. Я теперь почти законный мародёр.
Алексей подошёл ближе. Пальцы сами потянулись к клавишам. Нажал «А» — каретка дёрнулась, головка чиркнула по пустой ленте какой‑то грязной чертой.
Всё‑таки в этих штуках была своя эстетика. Механическая, тяжёлая. Но понятная.
— Идея понятна, — сказал он. — Органы ввода.
— Ну да, — Игорь довольно ухмыльнулся. — Ты же сам жаловался, что «на цифрах ничего нормального не набьёшь». Вот тебе буквы. Латунные, с усилием. Можешь хоть роман печатать, хоть ТЗ.
— Роман мы уже печатаем, — сухо заметил Алексей. — В четырёх экземплярах.
Из угла высунулся Валера.
— Это что за чудо‑юдо? — спросил он, подходя. — КБ воюет с министерством, а нам завозят печатные машинки? Скоро ещё пианино поставите, да?
— Это орган, — серьёзно сказал Игорь. — Орган ввода. Алексей хочет, чтобы его ЭВМ не была глухонемой.
— Она и так слишком много умеет, — проворчал Валера. — Ей бы руки поотрывать, а вы ей пальцы добавляете. Зачем калькулятору буквы?
Алексей мысленно отметил, как легко слово «калькулятор» всё ещё к ним липло. Хоть уже и ВКУ получился, и ЦУБ крутит микрокоманды, и самотест памяти — а для Валеры это пока всё равно «калькулятор».
Отчасти он был прав. Пока они сами не начнут иначе его называть, мир тоже не начнёт.
— Не калькулятор, — устало поправил Алексей. — Учебно‑демонстрационный вычислительный комплекс. И букв ему надо хотя бы для обозначений ячеек. А‑Б‑С, «ИТОГО», «ПРЕМИЯ». Иначе учитель с ума сойдёт между «ячейка номер семь» и «ячейка номер восемнадцать».
— Учитель‑то может и сойдёт, — не сдавался Валера. — А вот рабочий, который будет его чинить, — точно. Там и так проводов как в троллейбусном депо. А вы ещё вот это хотите прикрутить?
Он ткнул пальцем в широкий ряд клавиш.
Алексей посмотрел на машинку. На крышке были выцарапаны чьи‑то инициалы. На пробеле — пятно от чернил. На боковине — наклейка «ДК „Электронмаш“».
«Клавиатуры мы всё равно не избежим, — подумал он. — Либо сейчас, либо через год. Лучше сейчас, пока у нас ещё есть время».
— Валера, — сказал он вслух, — Мы прикрутим всё, что необходимо, и ни одной гайки сверху. Ресурсы по механике я в ТЗ так сформулирую, что это будет «расширение возможностей учебного комплекса по подготовке операторов печатающих устройств».
Валера фыркнул:
— Ладно. Только учти: это плюс ещё полкило железа и полдня сборки. И крышка другая нужна. И я потом на тебя покажу, когда они на совете начнут спрашивать, почему прибор вдруг стал как пианино.
— До того как он станет пианино, — вмешался Игорь, — он хотя бы перестанет быть детским «Феликсом».
Валера вздохнул и махнул рукой:
— Делайте свою клавиатуру. Только я в акт напишу: «по инициативе конструктора Морозова». Чтобы потом ко мне меньше приставали.
— Пиши, — сказал Алексей. — Главное, чтобы рядом с этой фразой была подпись Седых.
Разделительный шов между пишущей машинкой и клавиатурой прошёл по уровню корпуса.
Сначала Валера с Игорем аккуратно сняли каретку — тот самый блок, который бегал вправо‑влево, печатал и звенел колокольчиком в конце строки. Вышло непросто: пружины, тяги, сложный советский механо‑мозг. Но им нужен был только нижний этаж — клавишный механизм.
Педантичный немец в Алексеевой голове тихо рыдал, глядя, как режут конструкцию. Инженер‑практик из 1976‑го только кивал: «Ну а что ты хотел, детали же нужны».
В итоге на стол легла тяжёлая рамка с клавишами. Вверх торчали шляпки «ЙЦУКЕН», вниз — штифты. Каждый ряд — отдельный стержень, каждая клавиша — рычаг, который толкал контактную пластину.
— Вот твоё клавишное устройство ввода, — удовлетворённо сказал Игорь. — Почти как у настоящих.
— Почти? — приподнял бровь Алексей.
— Ну, у настоящих там всё на герконах, а у нас — на соплях, — честно признался Игорь. — Пластинки, контактные пружинки. Зато доступно.
«У настоящих» — это он уже про какие‑то западные конструкции из журналов. Алексей о своих «настоящих» предпочитал не думать, чтобы не расстраиваться слишком сильно.
Он взял в руки схему, которую наскоро накидал. Матрица из строк и столбцов. Дешифратор по строкам, опрос по столбцам. Код — семь бит на символ, хватит на русский алфавит и всякие «плюсы» с «минусами». КОИ-7. Всё по ГОСТу.
— По строкам у нас будут коды, — пояснил он, — по столбцам — уровни. ЦУБ периодически включает одну строку, считывает, какие столбцы замкнулись. Это называется «опросная матрица». Удобно, потому что экономит провода. Не шестьдесят линий, а, условно, восемь плюс восемь.
— Экономишь провода — потом мучаешься с диагностикой, — философски заметил Валера, но спорить не стал.
Сашу подключили немедленно. Он разложил провода по цветам, подписал каждый ряд и каждый столбец карандашом прямо на металле.
— Если что‑то сгорит, — пробормотал он, — я хотя бы буду знать, где.
— Не сгорит, — сказал Алексей. — Если, конечно, ты не перепутаешь «А» и «Ф», как в прошлый раз А3 и А4.
Саша покраснел, но кивнул.
К вечеру всё было готово для первого прогона. Плата матрицы, плата дешифратора, жгут к ЦУБу. На панель повесили пока только одну строку клавиш — верхнюю, с «ЙЦУКЕН».
— Начнём с малого, — сказал Алексей. — Если мы не справимся с «Й», дальше можно не лезть.
Он включил питание через лампу‑ограничитель. Та мелькнула и погасла — хороший признак.
Микропрограмму для теста они с Евгением уже подготовили: вместо обмена с цифровой панелью ЦУБ теперь смотрел в матрицу клавиш и при каждом нажатии должен был выводить на индикатор код нажатой буквы в десятичном виде. Грубо, но наглядно.
— Ну, — сказал Игорь. — Кто будет первым пальцем истории?
— Давай ты, — предложил Алексей. — Ты у нас агрегат добыл.
Игорь подумал — и нажал. Клавиша «Й» мягко ушла вниз, наверное, в миллионный раз в жизни. Где‑то щёлкнули контакты.
Индикаторы вспыхнули.
«0009».
— Девять, — удовлетворённо сказал Алексей. — Как мы и шифровали. Одна буква — один код. Отлично.
— Подожди, — сказал незаметно подошедший Евгений. — Не отпускай «Й».
Игорь держал. ИН‑12 дружно продолжали мигать: «0009», «0009», «0009», «0009»… как пулемёт.
— Это ты так задумал? Быстрый многократный ввод? — спросил Евгений.
— Нет, — поморщился Алексей. — Это дребезг контактов. Наш следующий шаг, маленький, но неприятный.
Он сам нажал «Ц». Быстро, коротко.
На индикаторах проскочило «0010 0010 0010».
— Ну вот, — вздохнул он. — Один удар, три события. Привет, механика.
— Красиво дребезжит, — оценил Игорь. — Для печати протоколов сойдёт. Нажал один раз — получил три буквы. Экономия труда.
— Для протоколов у нас машинка была, — заметил Валера из угла. — Вы её только что располовинили.
Евгений подошёл ближе, закурил, не отводя взгляда от индикаторов.
— Ну что, господин микропрограммист, — сказал он Алексею, — будешь дребезг ловить в железе или в мозгах?
— В твоих? — уточнил Алексей.
— В моих меньше места, чем в твоём ЦУБе, — хмыкнул Евгений. — Но могу и у себя. Только это будет некрасиво. Там же всё и так на грани тактов.
Алексей задумался. В его привычном мире эта задача решалась одним движением: в обработчике нажатия клавиши делаешь задержку в десять–двадцать миллисекунд, пока контакт успокоится, потом ещё раз проверяешь состояние. Всё.
Здесь «задержка» — это либо фильтр по входу, либо цикл микрокода, который «тупит» ЦУБ на месте.
Цепочка по времени на каждую клавишу — это сотни деталей. Цикл микрокода на каждый опрос — это потерянный такт, хоть он у них не гигагерцовый, переживут. Если не переразвести.
— Давайте так, — сказал он, — в железе мы добавим только одно: фиксацию нажатого символа. Опрос матрицы увидел любую замкнутую комбинацию — записал код в регистр, дальше, пока клавиша не отпущена, — опрос не идёт. А в микрокоде добавим цикл «жди отпускания».
— То есть ты хочешь сказать: «нажал — держи, пока машина подумает», — уточнил Евгений.
— Примерно, — кивнул Алексей. — Для человека это будут доли секунды. Для ЦУБа — целая жизнь. Но ему за это платят.
— Кто? — уточнил Игорь.
— Министерство, — невозмутимо ответил Алексей. — Косвенно.
Валера фыркнул.
— Мне понравилось, — сказал он. — Особенно про «жди отпускания». Это как с начальством: нажал — жди, пока отпустят.
— Схему фиксации я нарисую, — продолжил Алексей. — Один регистр на семь бит, один флаг «клавиша нажата». Пока флаг не сброшен — новые коды не принимаем. Сброс — по отпусканию контактов. Саша, сможешь развести?
— Разведу, — уверенно сказал Саша. — Только я буду проверять по десять раз. Мне одной сгоревшей платы хватило.
— Вот и славно, — отозвался Алексей.
— А я проверю, — сказала Люба, — Евгений, не кури тут, пожалуйста.
Евгений затушил сигарету в банке из‑под канифоли.
— А в микрокоде я тебе сделаю такой цикл, — пообещал он, — что дребезг сам исчезнет.
К середине следующего дня, ближе к обеду, схема антидребезга в чистовом виде висела на кульмане.
Алексей нарисовал регистр из двух К155ТМ2 и одного К155ТВ1 — для формирования строба, рядом — небольшой мозг: дешифратор сигналов «новая клавиша», «клавиша отпущена». По ходу дела выкинул пару лишних вентилей, чтобы не ругался Михалыч за избыточную номенклатуру.
— Вот здесь, — он показывал Саше, — будет защёлка. Как только матрица что‑то увидела — защёлка запоминает код и ставит флажок. ЦУБ считывает. Затем ждёт, пока матрица скажет: «всё, отпустили». Только после этого разрешаем новый код.
— А если человек нажмёт другую клавишу, не отпустив первую? — спросил Саша.
— Тогда либо мы считаем это ошибкой, либо делаем приоритет: первая нажатая — главная, — ответил Алексей. — Для печати текста это не страшно. Это не операторский пульт и не телетайп, где каждый знак должен быть безусловным.
— То есть все эти «быстрые машинки» с десятью пальцами — это не к нам? — уточнил Саша.
— Когда к нам придут «быстрые машинки», — отозвался Евгений, — нас уже тут не будет. Расслабься.
Вечером собрали плату. На этот раз лампа‑ограничитель даже не дернулась. Защёлка щёлкала тихо, почти незаметно.
— Ну, — сказал Игорь. — Раунд второй. Й.
Он нажал «Й» и держал. На индикаторах послушно высветилось «0009» — и замерло. Ни пулемёта, ни очереди, один символ, как и положено.
— Отпускай, — скомандовал Алексей.
Игорь отпустил. Индикаторы послушно погасли.
— Теперь нажми ещё раз, — попросил Евгений.
Индикаторы снова честно выдали «0009».
— Работает, — констатировал Алексей. — ЦУБ видит только переход «нет→есть». Повторения не считает.
— А если очень быстро? — не унимался Игорь. Он начал тыкать по очереди «ЙЦУКЕН», как пианист по гамме.
Индикаторы успевали. Цифры сменяли друг друга без пропусков, но и без «залипаний».
— Как по книжке, — уважительно сказал Саша. — Хоть в институт не поступай.
— В институте тебе ещё хуже будет, — буркнул Валера.
Они смеялись, но смех был расслабленным. Большая часть работы была сделана: буквы из механической железки официально дошли до ИН‑12, без удвоений и тройников.
В тот же день заглянул Михалыч. Посмотрел на располовиненную машинку, на новую плату, на жгут к ЦУБу.
— Вы чего тут ещё придумали? — спросил он, но тона «сейчас буду ругаться» не было, был скорее «сейчас посмотрю».
— Клавишное устройство ввода, — спокойно ответил Алексей. — В рамках учебного комплекса. Для обучения операторов печатающих устройств и для ввода буквенных обозначений.
— В ТЗ про это ничего не было, — напомнил Михалыч.
— В ТЗ было «возможность расширения функциональных режимов», — мягко напомнил в ответ Алексей. — Буквенный ввод как раз про расширение. Мы же не говорим про стихийные бедствия, мы говорим про «ПРЕМИЯ» и «ИТОГО».
Михалыч подошёл ближе, ткнул одним пальцем в клавишу «А».
Индикаторы послушно высветили код.
— И это всё ради того, чтобы на лампах видеть номера букв? — скептически уточнил он.
— Это пока тест, — сказал Алексей. — Потом вместо кода будет сам символ на ВКУ. На телевизоре. Уже по нашим схемам.
— Телевизор вы уже мучили, — вздохнул Михалыч. — Теперь ещё и клавиатуру к нему пришьёте. Бедный прибор.
Он постоял, пощёлкал ещё пару клавиш. Дребезга не было.
— Ладно, — наконец сказал он. — Давайте так. В документации это будет называться «клавишное устройство для ввода буквенно‑цифровых обозначений». Никаких «машинописей», «редакторов» и прочей фантазии. И никаких разговоров про «печатную машинку, внедрённую в ЭВМ». Понятно?
— Понятно, — кивнул Алексей.
— И ещё, — добавил Михалыч. — Валерич, корпус под это дело ты сам сварганишь, или меня потом по телефону трепать будут?
— Я сделаю, — устало сказал Валера. — Только имейте в виду: пальцы у людей толстые, расстояние между клавишами надо нормальное. А то они вам всё тут попереломают.
— Пальцы у людей обычные, — отозвался Алексей. — Это у нас конструкции хлипкие.
Михалыч поджал губы, но ничего не ответил.
— Делайте, — сказал он через паузу. — Только чтобы это всё потом не развалилось на первом же школьнике.
— Если развалится, — тихо сказал Алексей, — значит, плохо сделали. Значит, переделаем.
Михалыч посмотрел на него пристально, потом коротко кивнул.
Ближе к ночи КБ вымер. В проходах гулко отдавались шаги дежурного. В макетной остались трое: Алексей, Игорь и Саша.
На столе перед ними стояла панель с половиной механизма «Консула» и аккуратно разведённой платой антидребезга. К панели шёл жгут к ЦУБу. Сверху — пока ещё ИН‑12 вместо настоящего экрана. Но растр уже был где‑то совсем рядом.
— Знаете, — сказал Игорь, — я всё думал: зачем тебе эти буквы. Цифрами же тоже можно всё записать. Код какой‑нибудь придумать: А — ноль один, Б — ноль два…
— Можно, — согласился Алексей. — Но тогда у человека в голове будет две карты: буквы и цифры. И он всё время будет их переводить. А нам надо, чтобы он думал задачами, а не кодировкой. Буква — это буква. Клетка — это клетка. ЭВМ должна подстраиваться под человека, а не человек под неё. Иначе он её возненавидит уже на второй минуте.
Он поймал себя на том, что говорит почти вслух то, что много лет назад однажды ведь пережил: нелюбовь к устройству от того, что оно всё время «бодается» с пользователем. Тогда спасал энтузиазм. Но школьника энтузиазмом надолго не протянешь.
— Ты сейчас опасные вещи говоришь, — заметил Игорь. — У нас это по науке называется «эргономика», и за неё обычно не платят, — он выделил слово «эргономика» ехидной интонацией.
— Нам платят за «повышение эффективности труда оператора», — парировал Алексей. — Вот мы её и повышаем.
Игорь усмехнулся:
— То есть ты всерьёз хочешь, чтобы школьник, глядя на наш телевизор, видел буквы, как в кино? Не только цифры?
— В кино он пока видит Алена Делона, — сказал Алексей. — А у нас увидит «ИТОГО». Но это уже прогресс.
Саша, который до этого молча работал, вдруг поднял голову:
— А можно будет… ну… как Миша спрашивал… — он замялся.
— Крестики? — подсказал Игорь.
— Ну, да, — тихо сказал Саша. — Если будут буквы, можно же «икс» и «ноль» сделать… Чтобы они бегали.
Алексей посмотрел на него. В очередной раз поймал себя на том, что дети этого времени и молодые техники задают те же вопросы, что задавал он, когда сидел за своим первым БК на табуретке.
«Разница только в том, что тогда за мной никто не смотрел из Первого отдела, — подумал он. — И никто не писал докладные про „игры“».
— Можно, — сказал он вслух. — Только сначала — табличные формулы, отчёты, премии. Чтобы Седых спал спокойно. А потом уже крестики. Мы же не звери.
Саша улыбнулся.
— Ладно, — хлопнул по столу Игорь. — Хватит философии. Давайте обозначим это дело на бумаге, а то завтра никто не поверит, что мы клавиатуру приручили.
Алексей достал тетрадь. Открыл страницу, где утром записал: «Растр получен. Луч управляем. Дальше — символы».
Ниже вывел аккуратно: «Клавишное устройство ввода подключено. Антидребезг реализован. Один удар — один символ».
Остановился на секунду и добавил ещё строку, уже для себя:
«Прибор перестал быть только калькулятором».
Он закрыл тетрадь, потянулся, почувствовал, как ломит плечи.
Сделали они за день немного. Один кусочек. Клавиатуру, которая ещё надо будет упаковать в корпус, описать в документации, согласовать с начальством, защитить от школьных пальцев и от Петровых с их докладными.
Но между лампочками и буквами появился ещё один мостик. Не в будущем, не в мечтах, а здесь — на столе, на текстолите, в рывке металлической клавиши.
И этого на сегодня было достаточно.