122235.fb2
\\\**Знак рубля использовался в XVII--XIX веках. В настоящее время официальный знак рубля еще не принят, однако часто используется на практике.\\\
Предложенный мной десяток функциональных кнопок сократили до пяти штук F1-F5. Зато идея дополнить Shift еще парой модификаторов Alt и Ctrl прошла "на ура". Отдельную цифровую клавиатуру экономически подкованные сотрудники вырезали в целях "снижения стоимости", но блок "стрелочек" и "Copy, Paste, Page Up, Page Down, End, Home" мне все же удалось отстоять. Пусть результат оказался не идеален с точки зрения опыта будущего, но он дался в таких горячих спорах научного отдела, что было бы самым последним делом "срезать на взлете" инициативу ребят. Тем более в столь незначительном вопросе.
Но дальше началось самое интересное. Мое первоначальное и не слишком грамотное пожелание использовать "где только можно" ГОСТовскую кодировку привело к неожиданным результатам. Разработанный мэнээсами проект явно имел весьма мало общего с клавиатурами моего будущего*, вот только точно понять причину различий, и, главное, их последствия, я был не в состоянии.
\\\*Клавиатуры, имеющие на выходе ASCII-код, были известны в СССР и до середины 90-х годов серийно выпускались для использования в комплекте с удаленным терминалом. Однако описанный ниже алгоритм работы имеет с ними мало общего.\\\
Контроллер клавиатуры, если его можно было назвать таким серьезным словом, опрашивал контакты сделанной "на вырост" сетки алфавитно-цифровых и функциональных клавиш не реже чем сто раз в секунду. В отличии от них модификаторы Alt, Shift, Ctrl включались "в электронику" напрямую и учитывались при формировании итогового восьмибитного "ГОСТовского" кода в небольшом ПЗУ.
К примеру, если на клавиатуре была выбрана просто буква "л" - формировался код DB от прописной "л", при "Shift-л" - BB (он же заглавная "Л"), "Alt-л" давал FB, или символ псевдографики "Ђ". После переключения на английский командой Ctrl-Alt, можно было набрать "k" с кодом 6B и "К" с 4B. Команды функциональных клавиш типа стрелочек, табуляции или Enter шли под своими оригинальными кодами, для которых в таблице ASCII выделялось аж 32 варианта. Кроме того, команды можно было набирать через Ctrl. Так, комбинация Ctrl-Л или Ctrl-K (английская) означала vertical tab, и дополнительно была "приписана" к клавише Page Down.
Чем глубже я залезал в алгоритм работы, тем больше становилось вопросов. Причем с буквами и цифрами особых сложностей не возникало. Зато роль и функционал модификаторов притягивали критику как эпицентр - атомную бомбу.
- Вы считает, что в таблице ГОСТ достаточно команд на все случаи жизни? - я наконец прервал возбужденное сопение специалистов.
- Так американцы в своей кодировке нарезервировали изрядно, - степенно заявил Иван "первый", поглаживая начавшую пробиваться бороденку.
- И что с того? - меня глодали нешуточные сомнения. - Надо ведь все равно совместимость обеспечивать. Бардак ведь будет, если наша клавиатура к штатовскому компьютеру не подойдет. Да и сами хороши будем - только успели ГОСТ на кодировку утвердить, и тут же сами в него плюнули, и ногой растерли. - Для убедительности я демонстративно пошаркал ботинком под столом.
- Там чуть не десяток команд давно не используется, - начал оправдываться Иван "второй". - Хватит надолго!
- Угу... - в моей памяти "как живые" высветились знаменитые "640 килобайт памяти", и я не думая шлепнул рукой по полированной поверхности стола: - Не пойдет!
- Почему?! - дуплетом взвыли Иваны. - Идеальная схема получилась!
- Во-первых, не хватит даже десятка команд, к хорошему люди привыкнут быстро, а резерва у вас нет. - Я еще раз представил разработку мэнээсов вместо встроенной в ноутбук клавиатуры, и продолжил критику: - Во-вторых, нажатие вы фиксируете, а как ЭВМ догадается, что пользователь отпустил кнопку? Понятна проблема? - я машинально взглянул на специалистов, и...
Глаза Иванов выдавали активную работу мысли, но при этом было очевидно - ребята попросту не осознают, про что я говорю. Не приходилось им гонять курсор по экрану, и тем более перебирать аккорды кнопок. Да что там, они никогда всерьез не "стучали" по клавишам электрической пишущей машинки! Как привыкшему к перу и карандашу человеку представить, что значит точная и удобная клавиатура компьютера 2010 года?! Разумеется, я попытался с максимально возможной точностью все объяснить словами и даже показать в жестах. Но не преуспел.
- Зачем это? - завели старую шарманку мэнээсы. - На "Консулах" ничего подобного нет, в IBM-2260 тоже!
- Все! - я развел руками перед физиономиями специалистов, благо, мой рост в 190 сантиметров позволял это сделать очень даже элегантно даже сидя в кресле. - Пока не переделаете, на глаза не показывайтесь!
Только мы с Катей успели съездить домой пообедать, как мэнээсы нарисовались у дверей кабинета вновь. Явно голодные, но очень целеустремленные.
- Что, уже все придумали? - я не смог удержаться от иронии. - Проходите, нечего двери заслонять!
- Не совсем... - замялся Иван "первый" еще на подходе к стулу, изрядно "насиженному" за последнюю пару месяцев. - Но мы нашли хороший вариант.
- Показывайте. - Большая порция только что съеденной окрошки с "Докторской" колбасой не только успокоила нервы, но и придала моему настроению солидную порцию благожелательности.
- Когда кончатся табличные команды, можно будет использовать специальную команду для команды! - торопливо доложил Иван "второй".
- Ух! - только и смог сказать я, мучительно пытаясь ухватить мысль собеседника.
Впрочем, мэнээсы быстро перешли к более точным выражениям. Если привести их сбивчивый рассказ к одному знаменателю, то суть сводилась к введению еще одной специальной кнопки, после нажатия которой следующая буква или цифра порождала не один байт кода, а два. Первый служебный, совпадающий с наиболее "забытым" символом ГОСТовской кодировки, второй, реальный - мог быть использован ЭВМ любым удобным способом. После некоторого размышления это казалось мне хоть и не слишком удобной, но вполне разумной альтернативой. Более того, возникло желание назначить этой "новой клавишей" все тот же несчастный Ctrl, перенеся все его "старые" и редко используемые возможности на дополнительные два регистра функциональных клавиш F1-F5.
Надо было видеть довольные физиономии Иванов, когда я признал ограниченную годность предложенной методики. Вот только радовались они главным образом не моему согласию, а возможности реализовать данную функцию "Many years later, in a galaxy far, far away"*. Иначе говоря, научный отдел удачно разыграл комбинацию очень советского саботажа странных директорских хотелок.
\\\*Надпись "A long time ago, in a galaxy far, far away..." (Давным-давно, в далёкой-далёкой галактике...) появляется в начале каждого эпизода Звёздных войн. В данном случае "Many years later, in a galaxy far, far away..." - можно перевести как "Много лет спустя, в далёкой-далёкой галактике..."\\\
Способ контролем за отпущенными клавишами был выдержан примерно в этом же стиле. Ведь совсем не сложно доработать устройство так, что бы перед кодом "отжатой" клавиши... Да-да, легко догадаться, вставлялся очередной служебный байт!* И пусть ЭВМ подавится, разбирая этот поток информации!
\\\*В реальной истории на ПК от клавиатуры передаются специальные 2-х байтные скан-коды. Кроме того, клавиатурой управляет встроенный к компьютер контроллер, например в PC АТ - i8042. Интерпретация скан-кода полностью программная.\\\
Но тут обещаниями будущих доработок мэнээсы не отделались. Инициатива наказуема, и в проект было внесено непреложное требование оснастить подобной функцией хотя бы "стрелочки" и "пробел". А чтобы Иваны спали спокойно - мне пришлось согласился на установку перемычки, с помощью которой данную инновацию можно было отключить совсем.
Последний "клавиатурный" вопрос был совсем простым, тем более, его разрабатывал Федор. Сгенерированные контроллером биты "по ГОСТу" без особых раздумий выталкивались через небольшой буфер на выход через УИ-8 (Универсальный Интерфейс на восемь линий), заодно для ЭВМ выдавалось соответствующее прерывание. Электропитание так же поступало по кабелю УИ-8.
* * *
С дисплеем процесс сначала двигался куда быстрее. Под моим чутким руководством в качестве оптимального решения мэнээсы быстро приняли специализированный телевизор без блоков промежуточной и высокой частоты, он же монитор с зелеными "буковками и циферками". Причем специалисты проявили немалую инициативу, в два счета доказав, что только люминофор длительного свечения не будет портить зрение операторов. Против такой аргументации экономика бессильна, ведь девушки без очков куда симпатичнее очкастых стерв! Заодно я ловко замаскировал свое незнание вопроса под заботу об экономике.
Управлять экраном с диагональю чуть более 30-ти сантиметров предполагалось всего лишь по трем проводам: кадровой/строчной синхронизации, земли, видео. Я пробовал говорить о цвете, но быстро понял - ждать взаимности от техники в этом вопросе придется минимум несколько лет. Мэнээсы дополнительно настояли на выводе звука, спорить с такой мелочью не стал, хотя и был уверен в будущей бесполезности. С дизайном корпуса тоже сложностей не возникло - по сути, получился металлический куб. Так что наш научный отдел быстро подготовил документацию и сдал ее в МЭП.
Зато дальше Иванам пришлось изрядно поломать голову без моей помощи. Ведь в устройстве телевизоров я разбирался примерно как в балете и фотонных звездолетах. Хотя на уровне схемы все выглядело просто. Всего-то вместо "эфирного" сигнала нужно было подать "компьютерный". Причем аналоговый и непрерывный, никаких пикселей в нем не предусмотрено, а значит, не обойтись без быстродействующего ключа для управления яркостью точки на экране. Если думать о градациях серого, то это выливается в полноценный ЦАП, что, впрочем, тоже не выглядит сверхтехнологией.
Однако дьявол, как обычно, скрывался мелочах. Если прикинуть частоты, то выходит весьма неприятная картина. В телевизоре что-то около пяти сотен строчек*, в каждой нужно "показать" 640 пикселей, а вот достижимые при массовом производстве частоты микросхем логики находятся в районе 10 МГц**. Быстрого прорыва тут нельзя ждать даже с подарками из будущего. Если 10 000 000 разделить на произведение 640*500, учесть всякие мелочи вроде обратного хода луча, то получится 25-30 кадров в секунду. А я-то по наивности надеялся сразу сделать монитор на сотню герц вертикальной развертки...
\\\*По ГОСТ 17793-77 для телевизоров черно-белого вещания, предназначенных для видеопросмотровых устройств, допустима разрешающая способность не менее 600 линий. В стандарте СЕКАМ используется 625 строк, из которых видимых на экране -- 576.\\\
\\\**К примеру, RAMDAC (Random Access Memory Digital-to-Analog Converter) для весьма старого стандарта SVGA - около 200 МГц.\\\
Более того, стандартные системы развертки "заточены" строго на частоту 50 Гц, какой-то балбес посчитал, что делать иначе нельзя из-за наводок от сети электропитания*. Значит вытягивать "interlaced"** 30 или 40 Гц бессмысленно, вариантов всего два - или 25р обычных, progressive, или 50i. Жуткая гадость! Я хорошо помнил, как реагировали мои детские глаза на новый "стогерцовый" монитор после старого, который "тянул" всего лишь 85р. Поэтому резко стало жалко девушек-операторов. Тут на самом деле впору задуматься о использовании только части экрана, не зря этим путем пошли разработчики IBM 2260.
\\\*Действительно, кадровая частота была выбрана равной 50 Гц и совпадающей с частотой сети электропитания из-за возможности помех. Но позже опасения не подтвердились. По другой версии, 50 Гц приняли чтобы не делать отдельного задающего генератора, и синхронизироваться от сети. Но в результате точности частоты в сети не хватило, и отдельный генератор в телевизоре появился.\\\
\\\**Interlaced - буквально режим чересстрочной развертки, обозначается в современном "иностранном стиле" 50i. Progressive - обычная развертка, или 25p.\\\
Против такого не поможет даже самый "медленный" люминофор. Пришлось устроить импровизированный мозговой штурм "на троих", только вместо положенной по традиции водки и селедки на столе были неизменные пряники и чай. И надо сказать, это средство помогло. Уже где-то через час, я не выдержал и выкрикнул: - "Нити!!!" Вспомнил, что когда-то, еще до жидкокристаллических мониторов, один из производителей телевизоров предложил наносить цветной люминофор не круглыми точками, а полосками-нитями*. Из-за это пикселы получались вытянутыми по вертикали, но изображение в целом выглядело куда лучше, чем при традиционном способе.
\\\*Эти трубки получили известность под именем Trinitron и впервые были представлены на рынке компанией Sony еще в 1982 году. Нити - апертурная решетка (aperture grill).\\\
Конечно, в нашем положении не до таких высоких технологий. Но... Я просто взорвался набором фраз: "Кто сказал, что для удвоения штатовских 12-ти строчек текста на экране до советских 24-х нельзя обойтись парой сотен линий развертки? Долой буржуазные предрассудки! Да здравствует рабоче-крестьянская наука СССР! И вообще, сколько можно пить чай, где мой коньяк?!"
Можно попросту вытянуть пятно от пушки ЭЛТ по вертикали, и большая часть проблем решается сама собой! Дополнительно мы урезали осетра маски символа с 8х16 пикселов до 7х11*, и получили 264 строчки. Что очень даже красиво уложилось в минимально-разумные 50 Гц кадровой частоты.
\\\*Выпущенный IBM в 1981 году стандарт CGA имел (в одном из режимов) эффективное разрешение экрана 640х200 пикселов, т.е. пропорции составляли 1:2,4.\\\
Осталось только понять, какое устройство будет формировать "картинку". Понятно, что ставить видеокарту в ЭВМ - подход явно не для 60-х. Поэтому в ход опять пошел хорошо освоенный УИ-8. Сначала я хотел запихинуть всю электронику непосредственно под "телевизор", но потом пришлось отказаться от этой идеи - с памятью на ферритовых кольцах ящик оказался слишком большим.
Причем НИИ "Точной механики", к которому попала на изучение микросхема RS-232 из будущего, так и не смог освоить производство чего-то похожего на статическую память, примеров которой было более чем достаточно в буферах чипа. Мало им, видете ли, кристаллов для изучения, слишком передовой техпроцесс использован, не могут инженерА пересчитать размеры транзисторов из 1 мкм образца в свои 10 мкм. Зато небось в отпуск ходят строго по расписанию! Надежда остается только на волшебный пинок от Шелепина, которому я не преминул пожаловаться на важность вопроса.
Впрочем, без полупроводниковой памяти работа и не думала останавливаться. Если не вдаваться в детали, получалось следующее: Есть два восьмиразрядных регистра под пикселы, из которых быстродействующий ключ берет биты для вывода на экран. Пока из первого регистра биты выводятся - во второй загружаются семь точек следующего символа из ПЗУ знакогенератора (именно там "живет" таблица "ГОСТовского кода) и бит межбуквенного разделителя. Во всем этом процессе учитывается положение курсора, и прочие атрибуты типа мигания, подчеркивания, инверсии, жирного шрифта. Соответственно, после вывода восьми пикселов регистры меняются "ролями".
По идее, данные для ПЗУ можно брать напрямую из памяти "видеокарты". Вот только ферритовые кольца - совсем не полупроводниковый SRAM*, и время выборки в 20 микросекунд (или 50 кГц) в несколько раз больше нужного. Поэтому пришлось поставить еще один огромный 160-ти байтный буфер на две строки. Пока из одной в 11 проходов (по одному на каждую строчку матрицы) "вытаскивались" данные для знакогенератора, вторая спокойно и неторопясь заполнялась "с феррита".