Павел Дмитриев - На распутье
Интеллекта в АЦПУ как в молотке, совсем нет. Даже промотка бумаги – совершенно отдельный двигатель, запускаемый по таймеру (новые микросхемы часов пришлись очень к месту). При печати крутящийся барабан посылает два сигнала – начала оборота, и в момент выхода «на позицию» очередного символа. Интерфейс COM-порта ноутбука должен их «выловить» в виде сигнала CTS (разрешения передачи), и выдать строчку из 16 байт, 128 битов. Где «единичка» – там электромагнит должен ударить. Процесс нужно повторить по числу знаков на барабане, а именно 97 раз. В результате должна получится целая строчка.
По прикидкам, скорости COM-порта вполне должно хватать. Оборот – полсекунды, за это время мимо бумаги пролетают 97 отлитых на легкосплавном цилиндре символов. Итого есть около 5 миллисекунд на выдачу последовательности. Иначе говоря, для печати всей строчки потребуется 25 000 бод, если считать без всяких старт-стопов. Это в четыре раза меньше доступных в COM-порте 115 200 бод. Должно хватить с запасом на задержки в самопальном переходнике, и работу моего бриджа USB-COM[233].
Но практика упорно опровергала расчеты, печать не шла, как мы ни бились. Судя по всему, не хватало скорости. Пуансоны лупили куда попало, между символов, во время движения бумаги. От поломки АЦПУ спасали только огромные зазоры между элементами. Пришлось признать эпический фейл. Отодвинуть пару человекомесяцев в виде «комодика» контроллера в сторону, отсоединить пару здоровенных 30-контактных разъемов, и вызвать грузовик с грузчиками – отдать принтер-переросток обратно на ВЦ ТЭЦ. И забыть про этот чертов металлолом.
Следующей стала неуклюжая попытка обойти узкий момент через перфоленту. Набить дырочек в бумаге, и передать на какую-нибудь более приспособленную к большим объемам печати ЭВМ. Для этого Федор в перерывах между чтением Хайнлайна и «съездовскими» часами спаял вывод с ноутбука на перфоленту. Благо, это было много проще предыдущей задачи, а COM-портов у меня было в наличии два.
Молотила машинка будь здоров, только успевай заправлять ленту. Вот только при плотности записи около трех байт на сантиметр вывод мегабайтной книги грозил занять несколько километров бумаги. Не знаю, почему я даже не попробовал посчитать это заранее, просто в цейтноте ответил «делай[234]!» на вопрос «нам нужен вывод на перфоленту?». Так что пришлось выписать сотруднику премию, а машинку задвинуть в самый дальний угол.
Впрочем, оно того стоило. Федор-электрик, при всем своем хиппи-антураже не только нашел себя в нашем диковатом коллективе, но и обнаружил редчайшие навыки проектного мышления. Если берется, то будет долбить до конца, на результат, не задавая дурацких вопросов и самостоятельно решая встречающиеся на пути проблемы. Настоящий луч света в темном царстве советской корпоративной культуры.
Ведь как бывает обычно? Начинаешь работать с человеком, у которого есть голова, креатив, даже талант. Но если на уровне внутренней культуры отсутствует способность отслеживать и обрабатывать длинные цепочки действий, ничего хорошего не выходит. Через некоторое время видишь метания из стороны в сторону, страшную организационную немощь, необъяснимые срывы сроков. Точно такое у меня было после накурки гашишом в Амстердаме. Начинаешь думать какую-нибудь мысль, на середине ее забываешь, ищешь начало, вспоминаешь, было ли оно вообще. Затем опять думаешь, и опять все разваливается. От такого опускаются не только руки.
Как начальник, заводишь тудушник[235], привычку спрашивать еженедельно результаты, выпинываешь задачу с точки как мячик в гольфе из песка, снова и снова… Тудушник разносит к чертям, потом распухает голова, и кошмарик мягких белых стен палаты превращается в навязчивую идею…
Однако, перфоратор был полностью подготовлен к испытаниям без всякого моего вмешательства, и, к моему огромному удивлению, «пошел» с первой попытки. Федор явно почувствовал вкус победы в самостоятельном решении задач. Губить такую инициативу все равно что пускать под нож стельную корову. Ему немедленно был открыт следующий горизонт ответственности. Теперь этот волосатый и бородатый хипарь гоняет по коридорам аж трех ботанов-инженеров, учит их «грокать», держать в руках паяльник, правильно нюхать канифоль, а также ничему не удивляться в «721».
В запале энтузиазма эта команда умудрилась сама додуматься подключить к уже хорошо освоенному интерфейсу ноутбука (не видя ничего кроме глухой стенки с торчащей из нее парой кабелей) новый телетайп. Даже не спросив меня. Хорошо хоть ничего не спалили при преобразовании уровней сигналов. Уже задним числом я в десятый раз похвалил себя за качественно организованное заземление обоих зданий НИИ. Не будь зарыто в землю столько железа, с такими инициативными товарищами давно пришел бы конец интерфейсам Dell'а[236]. Зато как потешались над моим проектом местные электрики полгода назад, «безграмотный перестраховщик» – это был самый мягкий, почти ласкательный эпитет.
Недолго думая, выпихнули 5-битный телеграфный код МТК-2 в последовательный порт[237]. Дальше пришлось разбираться мне, и, маленькое чудо, в HyperTerminal нашлась крутилочка, переключающая порт на нужную кодировку и скорость. Не отрубили в Микрософте этот древний телетайпный хвост, позаботились о прошлом… Грешным делом, я уж прикидывал, как наиболее безболезненно перенастраивать телетайп, в котором частота передачи задавалась «железно» в буквальном смысле этого слова, а именно вращающимся цилиндром с выступами, которые управляли нажатыми контактами.
На этом проблемы только начинались. К своему большому огорчению убедился в очевидном, пять бит достаточно лишь для 32 букв. На советском телетайпе это «изящно» обошли, введя три регистра (латинский, русский, цифры), переключения между которыми производили специальными командами. Не понятно, какой марксизм помешал инженерам СССР подумать чуток о будущем и принять сразу аналог ASCII для русского алфавита[238]. Но бороться с этим явно бесполезно, нужно приспосабливаться.
Зато еще не поздно принять нормальную кодировку для ЭВМ! Заранее, буквально в зародыше, раздавить на уровне отраслевых нормативов разброд и шатание, которые царили в советской компьютерной среде. Шутка ли, в меню FARа мне удалось найти более десятка разных таблиц. Только к эпохе первых персоналок можно отнести ISO с непонятным номером, целый выводок разных KOI, Альтернативную CP866, Основную ГОСТ… Наверняка это далеко не все плоды фантазий программистов СССР, но заниматься археологией у меня особого желания не возникло. Только задумался, сколько сил и денег пошло на устранение идиотизма отраслевого министерства. Сложно им было стукнуть кулаком и принять единую форму?[239] Пусть не самую удобную, но какая была бы экономия.
При этом совместимость с ASCII и ее латинскими буквами неизбежна. Можно, разумеется, на радость врагам предложить доморощенный кириллический стандарт и фанатично его продвигать. Но насилие над здравым смыслом оставим коммунистам. Поэтому первые 128 знаков или семь бит будем считать злом уже свершившимся. И пусть сейчас в СССР толком никто не знает, шесть бит в байте, семь, или сразу десять. Мне совершенно точно известно что их будет восемь! На этом «восьмом» есть следующие свободные 128 клеточек в таблице. Их нужно только заполнить, этого хватит минимум на десяток лет. Далее процессоры будут помощнее, памяти побольше, придет время графических операционок и полных мультиязыковых наборов шрифтов.
Насколько помню, основных проблем с кириллическими кодировками было две. Во-первых, из-за блока псевдографики, крайне неудачно расположенной в IBM PC. Не лезли 66 букв алфавита ни сверху, ни снизу этого занятого куска. Не позаботились штатовские инженеры о длинных алфавитах, или специально нехилую диверсию для СССР учинили. В общем, маленькие русские буквы поневоле начинались до блока кракозябр, прерывались, и продолжались после него[240]. Программисты были крайне недовольны.
Во-вторых, кому-то неизвестному было удобно отбросить старший бит, и получить вместо русского текста транслит, вполне читаемые слова латинскими буквами. Тут уж вообще ни о каком алфавитном порядке речь не шла, получалось что-то типа Т, У, Ж, В, Ь, C, Ы, B, З. Программисты яростно матерились, попробуй, напиши в таких условиях алгоритм сортировки или просто что-то внятное для работы с текстом.
Но меня-то пока ничего не ограничивает! Выбрать надо наиболее удобный вариант. Например «Основную» – она и название имеет понятное, и любимый чиновниками всех времен ГОСТ упоминается[241]. На вид вполне прилична, вот только буква «Ё» стоит в стороне, на 33-й позиции. Задумался, проверил все имеющиеся кодировки. Сакральная буква обнаружилась на своем законном седьмом месте лишь в двубайтовом UTF начала 90-х, по сути, в совершенно иной эпохе. Что делать?