К книге
Проект «Сфера-82»: Цвет и слойГлава 43 Цвет по умолчанию
91%
Глава 43 Цвет по умолчанию
43

Олег довернул шлиц подстроечного резистора диэлектрической отвёрткой, и на правом дисплее синий цвет командной строки перестал размываться. Левый, обычный монохромный ВКУ, на эту настройку не отреагировал — символы на нём остались мутновато-белыми.

Оба аппарата стояли на сборочном столе вплотную друг к другу, соединённые со «Сферой-82» видеокабелями. Цветной видеоконтрольный блок едва слышно свистел строчником.

Олег отложил отвёртку.

— Синхронизация стабильная, фронты чистые, — сказал он. — На цветном всё понятно. Вопрос в том, что увидит человек, которому вместо этой красоты достанется обычный чёрно-белый гроб.

Наташа наклонилась над экранами — на её лице смешивались белый и синий отблески. Она прищурилась, изучая края символов.

— Если твой красный и твой синий на чёрно-белой трубке сойдутся в одинаковую серую кашу, считай, мы сами подложили себе свинью, — серьёзно сказала она. — Уровень яркостного сигнала должен быть разным. Иначе оператор не отличит ошибку от подтверждения.

Громов слушал, сидя на хромом табурете чуть поодаль.

— То есть цвет для моей программы есть, а для старого экрана будто нет, — усмехнулся он. — Прелесть. Программистам опять придётся писать не как красиво, а как не испортить старое.

Липатов методично расчерчивал страницу в общей тетради.

— Для документа это не старый экран, Женя, — он сдул графитовую крошку с листа. — Это совместимый вывод. Иначе потом каждый проверяющий будет объяснять ситуацию по-своему, а нам нужна формулировка, не допускающая двоякого чтения на приёмке.

Морозов перевёл взгляд с цветного дисплея на монохромный ВКУ с белым люминофором.

— Сергей дело говорит, — негромко сказал Морозов. — В этом и смысл совместимости: текст обязан оставаться читаемым на обычном телевизоре. Если цвет ломает старую базовую картинку, значит, мы гоним брак.

— Тогда запускай тест, — Наташа кивнула Громову. — Давай посмотрим, как это выглядит в динамике.

Громов придвинулся к клавиатуре и привычно набрал команду запуска. Встроенный дисковод ИЗОТ натужно зажужжал, считывая загрузочную дорожку.

На обоих экранах одновременно появилась таблица.

На цветном кинескопе картинка получилась контрастной: основной текст выводился белым по синему фону внутри цветной рамки, а заголовки столбцов горели жёлтым. В правом нижнем углу пульсировал красный квадрат — имитация системной ошибки.

На соседнем чёрно-белом экране та же самая программа выглядела сухо и строго. Синий фон исчез, оставив привычную темноту кинескопа, а белый и жёлтый цвета слились в один светящийся тон, сохранив чёткость шрифта. Красный квадрат в углу превратился в серый блок, монотонно менявший яркость от тёмного к светлому.

Морозов шагнул ближе. Текст читался идеально на обоих ВКУ, схема арбитража шины отрабатывала без сбоев — на экране не было ни снега, ни мусора от коллизий.

Люба подошла к столу сбоку, держа щупы мультиметра. Провода тянулись к блоку питания.

— Женя, если ты красным отметишь сбой, на монохромном человек увидит просто мигающий знак, — произнёс Олег, вглядываясь в серый квадрат. — Он не поймёт, что это тревога.

— Значит, рядом пишем слово «Ошибка» обычными буквами, — Громов пожал плечами, не отрывая взгляда от цветного дисплея. — А не просто красный квадрат рисуем.

— И миганием тоже не увлекайтесь, — Люба коснулась щупами контрольных точек на плате — цифры на табло прибора дёрнулись. — У нас не новогодняя ёлка. Чем больше вы дёргаете яркость целыми блоками, тем больше просадка по питанию. Я сейчас вижу выбросы на шине в моменты перерисовки красного квадрата. Держите себя в руках, программисты.

— Цвет — это только подсказка, — кивнула Наташа. — Подсветить строку ввода, отбить края таблицы. Если убрать цветовую составляющую, оператор за обычным дисплеем не должен теряться в сплошном тексте.

— Фиксируем как аппаратное ограничение, — Липатов провёл черту в тетради. — Цвет только дублирует информацию. Если текст не читается на монохроме — испытание не пройдено.

— И это правило для всех системных программ, — добавил Морозов. — Код не переписываем. Одна программа на оба экрана.

Громов ударил по пробелу: таблица исчезла, уступив место координатной сетке. Машина переключилась во второй режим — крупная цветная точка.

На цветном дисплее выстроилась грубая, но понятная диаграмма: зелёные столбцы, перечёркнутые ломаной красной линией. Знакоместа превратились в квадратные блоки. Разрешение снизилось, буквы стали угловатыми, зато появилась возможность строить сплошные фигуры и графики, не привязываясь к стандартным символам.

На монохромном дисплее диаграмма превратилась в набор серых прямоугольников. Ломаная линия почти слилась с фоном.

— Графика страдает сильнее, — констатировал Олег. — Красный на зелёном фоне здесь выглядит как дыра в изображении.

— Вот здесь мы и ставим границу, — Липатов поднял голову. — В паспорте прямо указываем: в режиме цветной графики читаемость на монохроме не гарантируется. Пусть пользователь знает, что это не сбой, а задокументированное ограничение.

— Снимает вопросы, но может добавить путаницы при производстве, — отозвался Морозов. Он взял со стола толстый фломастер и подошёл к приколотому на стену листу ватмана. — Нам надо сразу разделить эти линии, иначе снабженцы и завод всё перепутают.

Он прочертил жирную вертикальную линию, деля бумагу пополам.

— Слева — «Сфера-80Ц», — он быстро набросал название над левой колонкой. — Фабричное развитие старой базы. Цвет пойдёт не приставкой, а интегрированным узлом на плате. Плюс новая прошивка ПЗУ с прямыми командами цвета. А самодельные приставки для школьных «восьмидесяток» остаются отдельной журнальной историей.

Затем он перенёс фломастер вправо и написал: «Сфера-82».

— А здесь видеовыход и арбитраж на микропроцессоре разведены изначально. Описываем как штатный узел, без навесных доработок.

Громов почесал переносицу, глядя на ватман.

— Значит, таблицу режимов придётся вшивать прямо в ядро МикроДОС, а не лепить сбоку, — произнёс он. — Очистку экрана и смену цвета спрячу в системные вызовы ПЗУ. И чтобы я больше не видел, как кто-то лезет напрямую в видеопорты в обход системы.

— Главное — нормально разжевать эту разницу монтажникам, — Олег обошёл стол и потрогал радиатор на блоке питания — металл ощутимо нагрелся. — Одно дело воткнуть кабель в готовый пятиштырьковый разъём, а другое — шлейф к ножкам процессора паять. Перепутают — сожгут плату к чертям.

— Я разнесу их по разным техническим условиям, — отозвался Липатов. — Это два разных физических изделия. Нельзя допустить, чтобы в школах решили, будто алгоритм проверки старшей машины подходит к старой плате без изменений.

* * *

Спустя час тестовая программа Громова продолжала крутиться в бесконечном цикле, гоняя массивы данных в видеопамять. Экраны ритмично вспыхивали и гасли, заливаясь то сплошными цветами, то шахматной клеткой.

Люба закончила измерять просадки напряжения на шине и теперь сидела у окна, аккуратно сматывая провода мультиметра. Наташа перебирала осциллограммы, сверяя длительность синхроимпульсов с ГОСТом.

Олег налил остывшего чая из стеклянной банки на подоконнике.

— Слушайте, — он облокотился на стену, глядя на два синхронно работающих дисплея. — А ведь мы сейчас смотрим на готовую двухмониторную конфигурацию. Машина тянет оба ВКУ одновременно с одного видеовыхода.

Морозов, просматривавший распечатки кода вместе с Громовым, поднял голову.

— Два экрана на одном рабочем месте?

— Ну да, — Олег отхлебнул чай. — Сигнал-то один, просто разветвлен кабелем. Но если пойти дальше? Поставить в «Сферу-82» две независимые видеоплаты. Одну монохромную, чисто под текст и системные сообщения, а вторую — цветную, под вывод тяжелой графики или топологии.

Наташа отложила осциллограммы и посмотрела на Олега.

— И получить конфликт адресов на системной шине, — коротко отозвалась она. — Две видеопамяти будут драться за одни и те же порты.

— Разнесем адреса, — не сдавался Олег. — Сделаем переключатель дешифратора. Шрамов спасибо скажет: на одном экране у него диспетчерские бланки, на втором — цветная карта путей. Никакого перекрытия окон.

— И блок питания скажет нам до свидания, — негромко добавила Люба. — Вторая видеоплата — это еще полтора ампера тока. Плюс два ВКУ на столе оператора будут греть воздух как хорошая батарея. Эргономика рабочего места полетит в мусор.

— Не говоря уже о цене, — хмыкнул Громов. — Заказчик удавится покупать два монитора на один пульт. Но для программистов это была бы мечта. На одном экране гонишь код в отладчике, на втором смотришь, как отрисовывается результат.

— То есть красиво, технически возможно, но абсолютно непроходное по смете решение, — подытожил Липатов, даже не открывая тетрадь. — Я не буду вписывать двухмониторную сборку в ТУ. Заводские экономисты этот пункт зарубят на первом же чтении.

— Оставим как лабораторный стенд для Жени, — улыбнулся Морозов. — Прямой видеовыход позволяет цеплять контрольный монохром параллельно цвету, для отладки нам этого хватит. А вторую плату вывода в этот этап не берем.

* * *

Громов потянулся, разминая затёкшую спину.

— Раз уж мы заговорили о планах на перспективу, — программист посмотрел на Морозова. — У меня есть встречное предложение. Если мы сейчас так чётко разделили цвет и монохром, давайте пойдём дальше.

Он подошёл к приколотому ватману и нарисовал пустой прямоугольник.

— Для графиков цвет нужен далеко не всегда. Иногда научнику, который считает профиль крыла или температуру в печи, важнее тонкая линия, чем красная. Сейчас у нас в графическом режиме восемьдесят второй разрешение ничтожное — крупные цветные квадраты. А что если отключить выборку атрибутов цвета вообще?

— Всю память отдать под яркость? — нахмурилась Наташа, мысленно прорисовывая схему видеоконтроллера.

— Именно. Использовать те же килобайты видеопамяти, но не тратить биты на атрибуты: пусть каждый бит отвечает за точку. Получим монохром с высоким разрешением — нормальное поле для графиков.

— Логично, — присвистнул Олег. — Железо то же самое, просто логика выборки из памяти другая.

Наташа шагнула к ватману, забрала у Громова фломастер и быстро набросала схему сдвигового регистра.

— Железо не то же самое, Женя. Тонкая линия съест частоту — тебе придётся выталкивать точки из регистра сдвига в два раза быстрее. Полоса пропускания видеоусилителя обычного телевизора это не вытянет, и линии сольются в серую муть.

Люба подошла ближе, разглядывая схему.

— Плюс время доступа к памяти — процессору придётся ждать дольше, и твоя хвалёная схема арбитража шины начнёт тормозить выполнение основного кода.

Морозов проследил, как Наташа дважды обвела фломастером выход регистра.

— Мысль правильная, Жень, — произнёс он. — Отказ от цвета ради разрешения — классический компромисс, но сейчас мы его не потянем.

— Почему? — Громов упёрся ладонями в край стола. — Написать процедуры вывода — дело пары дней.

— Потому что старый знакогенератор в этом режиме работать не будет, — отозвалась Наташа. — Тебе придётся переписывать с нуля все системные шрифты.

— А мне — бороться с высокочастотными наводками от твоего разогнанного регистра, — добавила Люба.

— И я не пропущу это в текущий цикл испытаний, — Липатов выразительно постучал карандашом по столу. — Новый режим сломает уже утверждённые допуски по питанию и помехам. Рядом со штатным цветом это потребует совершенно новой методики проверки.

Морозов согласно кивнул.

— Вот тебе и ответ, Жень: не плодим варианты, фиксируем цветовой режим. А монохромную графику кладём в ту же тетрадь будущих работ, рядом с антенной приставкой Олега.

— Ладно, тонкие линии откладываются, — Громов коротко вздохнул, но спорить не стал. — Работаем с тем, что есть.

* * *

За окнами лаборатории сгустились мартовские сумерки, превратив стекла в черные зеркала. Отражения желтоватых люминесцентных ламп легли на лицевые панели приборов и два работающих экрана. Громов придвинул к себе чистый лист миллиметровки, покрутил в пальцах цанговый карандаш и с нажимом провел первую вертикальную черту.

— Подводим итог под фантазиями, — пробормотал он, размечая колонки. — Пишу: режим первый, основной. Текст и цветные атрибуты.

— Зачеркни «основной», — тут же отозвался Липатов. Он стоял рядом, опершись костяшками пальцев о край стола. — Пиши «Штатный цветной вывод». Для документации нужны однозначные термины. Если назовешь основным, у пользователя возникнет вопрос, где запасной.

Громов вздохнул, но послушно стер написанное и вписал новый вариант. Грифель тихо зашуршал по плотной бумаге.

— Режим второй, — продолжил Евгений. — Графика на основе цветной мозаики.

— Крупная цветная графика, — поправил Морозов, не отрывая взгляда от дисплеев. — Обязательно укажи ограничения по разрешению. Иначе от нас начнут требовать отрисовки гладких диагоналей, а квадраты размером со спичечную головку для этого не годятся.

Липатов удовлетворенно кивнул и постучал ногтем по следующей пустой ячейке:

— А теперь главное. Как мы назовем то, что сейчас происходит на левом ВКУ?

На монохромном экране светились те же самые строки текста, что и на правом, цветном. Буквы оставались четкими, столбцы ровными, но вся информация о цвете ожидаемо исчезла, оставив лишь градации яркости и спокойное, ровное свечение люминофора.

— Совместимый монохромный вывод, — не задумываясь ответил Громов. — И для МикроДОС это означает полнейшую перестройку идеологии.

Он отложил карандаш и повернулся к Морозову.

— Если мы фиксируем эту таблицу как стандарт «Сферы-82», я закрываю прикладным программам прямой доступ к видеопортам. Никакой отсебятины. Хочешь вывести цветное предупреждение — используй системный вызов операционной системы. МикроДОС сама проверит, может ли машина показать цвет, и сама раскидает биты по нужным адресам. Иначе первый же умник, который напишет код с прямой адресацией к железу, повесит систему на старой монохромной машине.

— Согласен, — Морозов скрестил руки на груди. — Прямая работа с памятью экрана остается только для системных утилит. Прикладники общаются с машиной через вызовы.

— Тогда добавь в свою таблицу еще одну колонку, Жень, — Люба подошла к столу, держа в руке щуп мультиметра. На ее пальцах блестела въевшаяся медная пыль. — Допуски по току.

Она указала концом щупа на цветной дисплей, где в тестовом цикле переливалась яркая рамка.

— Атрибутный режим позволяет заставить мигать любой символ. Если какой-нибудь талантливый школьник напишет программу, где весь экран непрерывно обновляется, у нас резко скакнет потребление. Я закладываю запас прочности в блок питания, но он не резиновый. Мне нужны четкие пределы: сколько миллиампер имеет право забирать видеоконтроллер при интенсивном обмене с памятью. Иначе из-за одной кривой игрушки по питанию пойдет просадка, и процессор сбросится в исходное состояние.

— Записал, — Громов убористым почерком внес пометку на поля миллиметровки. — Максимальное потребление при пиковой нагрузке. Согласуем с тобой завтра.

Наташа устало потерла виски, отодвигаясь от осциллографа.

— И давайте отделим мух от котлет, — сказала она, указывая колпачком ручки на экраны. — В паспорте машины должны быть описаны параметры нашего выходного сигнала. Размах, уровни синхроимпульсов, частота строк и кадров. То, что монохромный дисплей игнорирует цветовые составляющие сигнала и показывает серую картинку — это физика кинескопа, а не свойство нашей платы. Машина честно выдает полный телевизионный сигнал.

— Верно, — поддержал Липатов. — В разделе неисправностей так и запишем: «отсутствие цвета при подключении к монохромному видеоконтрольному устройству не является неисправностью». Вы улыбаетесь, а мне потом на рекламации отвечать. В школы пойдут самые дешевые ВКУ, и половина учителей решит, что им прислали бракованный компьютер.

Олег, до этого молча возившийся с проводами за стойкой, выпрямился и вытер руки ветошью.

— Раз пошла такая пьянка, мне нужны контрольные точки на серийной плате, — сказал он густым, севшим за день голосом. — Вот мы сейчас собрали макет. Я осциллографом лезу прямо на ножки микросхем. А на конвейере монтажница куда будет тыкать? Ей нужен удобный контакт рядом с разъемом. И сам выход мы фиксируем как стандартный пятиштырьковый. Никаких висящих проводов.

— А твой гениальный антенный ВЧ-модулятор для подключения к домашнему телевизору? — с легкой иронией напомнил Громов, зарисовывая кружок гнезда в таблицу. — Будем вписывать в паспорт, как обещал?

— Забудьте про модулятор, — отрезал Морозов, ставя в этом споре окончательную точку. — Наташа была абсолютно права. СЕКАМ, наводки на блок питания и помехи соседям нам не нужны. Только чистый низкочастотный видеовыход. Если у пользователя нет нормального монитора — пусть берет паяльник и врезает разъем в свой «Рекорд» по нашим журнальным схемам. Нам нужна повторяемая и надежная машина, а не компромисс, который будет портить зрение.

Громов хмыкнул, перечеркнул набросок антенного штекера на полях и провел последнюю горизонтальную линию, отчеркивая итог. Лист миллиметровки покрылся плотной сеткой слов, цифр и сокращений. Это больше не было набором смелых идей или случайных удач. Это был архитектурный фундамент.

Липатов аккуратно взял лист за края, пробежал глазами по колонкам и вложил его в свою серую пластиковую папку. Замок сухо щелкнул.

— Из этого уже можно собрать технические условия, — резюмировал он без всякого пафоса, просто как человек, получивший наконец подходящий материал для работы. — Штатный цвет, совместимый вывод, системные вызовы, ограничения по току. Завтра перепечатаю набело.

Морозов посмотрел на стенд. Два дисплея продолжали гнать тестовые строки. Цветной радовал глаз контрастными перепадами красного, зеленого и синего. Монохромный спокойно выдавал тот же самый массив данных в ровном свечении. Никаких искажений, никакой каши из знаков. Логика машины работала независимо от того, через какое стекло на нее смотрел человек.

— Нормальное рабочее решение, — негромко сказал Морозов.

Олег дотянулся до тумблера на блоке питания и обесточил стенд. Высокочастотный писк строчной развертки мгновенно оборвался. Экраны моргнули, стянув изображение в яркие точки по центру, и медленно угасли, оставляя после себя лишь запах нагретого текстолита и легкий аромат канифоли. Лаборатория погрузилась в тишину окончания смены. Морозов молча собирал со стола карандаши, складывая их в стаканчик, пока остальные стягивали рабочие халаты, мысленно уже распределяя задачи на завтрашнее утро.

Предыдущая главаГлава 43 из 47Следующая глава