Разбег в неизвестность
Шрифт:
Предложенный мной десяток функциональных кнопок сократили до пяти штук F1-F5. Зато идея дополнить Shift еще парой модификаторов Alt и Ctrl прошла на «ура». Отдельную цифровую клавиатуру экономически подкованные сотрудники выкинули в целях «снижения стоимости», но блок «стрелочек» и Copy, Paste, Page Up, Page Down, End, Home мне все же удалось отстоять. Пусть результат оказался не идеален с точки зрения опыта будущего, но он дался в таких горячих спорах научного отдела, что было бы самым последним делом «срезать на взлете» инициативу ребят. Тем более в столь незначительном вопросе.
Дальше началось самое интересное. Мое первоначальное и не слишком грамотное пожелание использовать «где только можно» гостовскую кодировку
Контроллер клавиатуры, если его можно было назвать таким серьезным словом, опрашивал контакты сделанной «на вырост» сетки алфавитно-цифровых и функциональных клавиш не реже чем сто раз в секунду. В отличие от них модификаторы Alt, Shift, Ctrl включались «в электронику» напрямую и учитывались при формировании итогового восьмибитного гостовского кода в небольшом ПЗУ.
363
Клавиатуры, имеющие на выходе ASCII-код, были известны в СССР и до середины 90-х годов серийно выпускались для использования в комплекте с удаленным терминалом. Однако описанный ниже алгоритм работы имеет с ними мало общего.
К примеру, если на клавиатуре была выбрана просто буква «л» – формировался код DB от прописной «Л», при «Shift-л» – BB (он же заглавная «Л»), «Alt-л» давал FB, или символ псевдографики «±». После переключения на английский командой Ctrl-Alt можно было набрать «k» с кодом 6B и «К» с 4B. Команды функциональных клавиш типа стрелочек, табуляции или Enter шли под своими оригинальными кодами, для которых в таблице ASCII выделялось аж тридцать два варианта. Кроме того, команды можно было набирать через Ctrl. Так, комбинация Ctrl-Л или Ctrl-K (английская) означала vertical tab и дополнительно была «приписана» к клавише Page Down.
Чем глубже я залезал в алгоритм работы, тем больше возникало вопросов. Причем с буквами и цифрами особых сложностей не имелось. Зато роль и функционал модификаторов притягивали критику, как эпицентр – атомную бомбу.
– Вы считаете, что в таблице ГОСТ достаточно команд на все случаи жизни? – Я наконец прервал возбужденное сопение специалистов.
– Так американцы в своей кодировке нарезервировали изрядно, – степенно заявил Иван I, поглаживая начавшую пробиваться бороденку.
– И что с того? – Меня глодали нешуточные сомнения. – Все равно ведь надо совместимость обеспечивать. Бардак получится, если наша клавиатура к штатовскому компьютеру не подойдет. Да и сами хороши – только успели ГОСТ на кодировку утвердить и тут же в него плюнули и ногой растерли. – Для убедительности я демонстративно пошаркал ботинком под столом.
– Там чуть не десяток команд давно не используется, – начал оправдываться Иван II. – Хватит надолго!
– Угу… – В моей памяти, как живые, высветились знаменитые «шестьсот сорок килобайт памяти», и я, не думая, шлепнул рукой по полированной поверхности стола: – Не пойдет!
– Почему?! – дуплетом взвыли Иваны. – Идеальная схема получилась!
– Во-первых, не хватит даже десятка команд, к хорошему люди привыкнут быстро, а резерва у вас нет. – Я еще раз представил разработку мэнээсов вместо встроенной в ноутбук клавиатуры и продолжил критику: – Во-вторых, нажатие вы фиксируете, а как ЭВМ догадается, что пользователь отпустил кнопку? Понятна проблема? – машинально взглянул на специалистов, и…
Глаза Иванов выдавали активную работу мысли, но при этом было очевидно – ребята попросту не осознают, о чем я говорю. Не приходилось им гонять курсор по экрану и тем более перебирать аккорды кнопок. Да что там, они никогда всерьез не стучали по клавишам электрической пишущей машинки! Как привыкшему к перу и карандашу человеку представить, что значит точная и удобная клавиатура компьютера
– Зачем это? – завели старую шарманку мэнээсы. – На «Консулах» ничего подобного нет, в IBM 2260 тоже!
– Все! – Я развел руками перед физиономиями специалистов, благо мой рост в сто девяносто сантиметров позволял это сделать очень элегантно, даже сидя в кресле. – Пока не переделаете, на глаза не показывайтесь!
Только мы с Катей успели съездить домой пообедать, как мэнээсы вновь нарисовались у дверей кабинета. Явно голодные, но очень целеустремленные.
– Что, уже все придумали? – Я не смог удержаться от иронии. – Проходите, нечего двери заслонять!
– Не совсем… – замялся Иван I еще на подходе к стулу, изрядно «насиженному» за последнюю пару месяцев. – Но мы нашли хороший вариант.
– Показывайте. – Большая порция только что съеденной окрошки с «докторской» колбасой не только успокоила нервы, но и придала солидную порцию благожелательности.
– Когда кончатся табличные команды, можно будет использовать специальную команду для команды! – торопливо доложил Иван II.
– Ух! – только и смог сказать я, мучительно пытаясь ухватить мысль собеседника.
Впрочем, мэнээсы быстро перешли к более точным выражениям. Если привести их сбивчивый рассказ к одному знаменателю, то суть сводилась к введению еще одной специальной кнопки, после нажатия которой следующая буква или цифра порождала не один байт кода, а два. Первый, служебный, совпадал с наиболее «забытым» символом гостовской кодировки, второй, реальный, мог быть использован ЭВМ любым удобным способом.
После некоторого размышления это казалось мне хоть и не слишком удобной, но вполне разумной альтернативой. Более того, возникло непреодолимое желание назначить этой «новой клавишей» все тот же несчастный Ctrl, перенеся все его «старые» и редко используемые возможности на два дополнительных регистра функциональных клавиш F1-F5. Надо было видеть довольные физиономии Иванов, когда я признал ограниченную годность предложенной методики. Вот только радовались они главным образом не моему согласию, а возможности реализовать данную функцию «Many years later, in a galaxy far, far away» [364] . Иначе говоря, научный отдел удачно разыграл комбинацию очень советского саботажа странных директорских хотелок, перенеся их в отдаленное будущее.
364
Надпись «A long time ago, in a galaxy far, far away…» («Давным-давно, в далекой-далекой галактике…») появляется в начале каждого эпизода «Звездных войн». В данном случае «Many years later, in a galaxy far, far away…» – можно перевести как «Много лет спустя, в далекой-далекой галактике…»
Способ контроля за отпущенными клавишами был выдержан примерно в этом же стиле. Ведь совсем не сложно доработать устройство так, чтобы перед кодом «отжатой» клавиши… да-да, легко догадаться, вставлялся очередной служебный байт! [365] И пусть ЭВМ подавится, разбирая этот поток информации!
Но тут обещаниями будущих доработок мэнээсы не отделались. Инициатива наказуема, и в проект было внесено непреложное требование оснастить подобной функцией хотя бы «стрелочки» и «пробел». А чтобы Иваны спали спокойно – мне пришлось согласиться на установку перемычки, с помощью которой данную инновацию можно было отключить совсем.
365
В реальной истории на ПК от клавиатуры (если упрощать) передаются специальные 2-байтные скан-коды. Кроме того, клавиатурой управляет встроенный в компьютер контроллер, например, в PC АТ – i8042. Интерпретация скан-кода полностью программная.