Проект «Сфера-82»: Цвет и слой - Станислав Миков
— Времянку ты будешь у себя в гараже на аккумулятор кидать. — Люба переключила предел измерений на приборе, и стрелка дернулась, показывая сопротивление. — У тебя телевизионное шасси. Блок строчной развертки. Там импульсы обратного хода луча — киловольты. Если твоя «времянка» даст петлю по земле, или сопротивление контакта окажется выше нормы, весь этот высоковольтный мусор полетит прямо в шину данных.
Она отложила мультиметр и указала кончиком карандаша на хитросплетение дорожек.
— Цифровая логика питается пятью вольтами. Идеально чистыми пятью вольтами. Одно пробитие по массе из-за твоей спешки — и мы будем выковыривать кристаллы К580 из панелей, потому что они сплавятся. Земля должна сходиться в одной точке. Звезда, Олег. Никаких петель. Перепаивай.
Олег тяжело вздохнул, признавая поражение. Спорить с Ветровой в вопросах разводки и помех было бесполезно. Он молча взял кусачки и откусил злополучную времянку.
В паре метров от них, на краю стола, расчищенном от обрезков провода и пустых спичечных коробков, сидел Саша Птицын. Перед ним лежала клавиатура и толстая стопка распечаток. Младший инженер водил пальцем по колонкам шестнадцатеричных кодов, беззвучно шевеля губами. Тестовое ПЗУ уже было прошито и вставлено в цанговую панельку.
К столу неслышно подошел Андрей Горелов, чья безупречно выглаженная светлая рубашка резко контрастировала с рабочими халатами инженеров. Он положил на край стола неизменную общую тетрадь.
— Александр, отвлекитесь на минуту, — произнес Горелов. — Аппаратную часть видеовывода я изучил. Схемы Роговой мне понятны. Меня интересует программная реализация. Как именно логика управляет цветом?
Птицын оторвался от листинга.
— Сейчас мы реализуем атрибутный режим, — начал Птицын, придвигая к себе карту распределения памяти. — Цвет присваивается группе точек восемь на восемь.
Он обвел карандашом блок адресов на чертеже.
— Базовое текстовое поле, как в черно-белой версии. Но параллельно с кодом символа из отдельной области ОЗУ вычитывается байт атрибута.
Горелов быстро пробежал глазами по шестнадцатеричным адресам.
— Значит, цвет привязан к знакоместу аппаратно, — утвердительно произнес он.
— Именно, — кивнул Птицын. — Процессор пишет один байт, а красит сразу целую букву. Это экономит такты. Смотрите, как мы разбили этот атрибутный байт. Два старших бита мы пока отбросили, они резервные. Дальше идут три бита на цвет фона. И три бита на цвет самого знака.
— Три бита дают восемь комбинаций, — мгновенно подсчитал Горелов.
— Да, восемь простых цветов, — подтвердил Саша. — Палитра жестко зашита аппаратно. Программа просто кидает в память байт атрибута, а дешифратор уже сам на лету формирует нужные сигналы для кинескопа. Но здесь есть аппаратное ограничение, Андрей Витальевич, о котором ваши операторы должны знать. Внутри одного квадрата восемь на восемь точек мы можем вывести только два цвета одновременно: цвет знака и цвет фона. Если вы попытаетесь нарисовать красный график, пересекающий синюю таблицу, в месте их встречи цвета неизбежно сольются или затрут друг друга. Цветовой конфликт. За дешевизну памяти приходится платить.
Горелов понимающе кивнул. Для вывода графиков станочных резов и красных сообщений об ошибках двух цветов на блок хватало с лихвой. Он сделал аккуратную пометку в тетради: «ограничение наложения цветов в одной ячейке».
— Разумный компромисс, — сказал Горелов. — А рамка вокруг текста? Наш аварийный красный бордюр сидит отдельно?
— Это отдельная песня, — улыбнулся Птицын. — Бордюр не имеет адресов в видеопамяти. Под него выделен аппаратный порт. Процессор отправляет туда значение от нуля до семи, и контроллер заливает края кадра аппаратно, пока идет обратный ход луча.
— Независимое управление рамкой, — Горелов сделал короткую пометку в тетради. — Удобно. Если мы зашьем зеленый бордюр как маркер штатного ввода, а желтый — как ожидание данных по линии спецсвязи, оператор увидит состояние боковым зрением, не вчитываясь в текст.
Наташа Рогова, закончив проверку уровней на выходных каскадах макета, выпрямилась и отложила щупы. Она посмотрела на Олега, который затягивал последний винт на клемме заземления.
— Землю в одну точку свел, — доложил Олег, вытирая руки куском ветоши. — Питание развязал. Весь радиотракт отсечен к чертям, синхросмесь и цветовые каналы идут прямо на видеоусилители.
Наташа повернулась к Ветровой. Люба, прищурившись, еще раз окинула взглядом конструкцию, проверяя толщину проводов и надежность паек. Наконец она коротко кивнула.
— Замыканий нет. Можно подавать напряжение.
* * *
Разговоры за соседними столами стихли. Инженеры, отложив паяльники и чертежи, повернулись к стенду. В центре помещения возвышался выпуклый серый экран цветного кинескопа 61ЛК3Ц, зажатый в массивных тисках шасси УПИМЦТ.
— Птицын, тестовая программа готова? — спросила Наташа, вставая сбоку от экрана, чтобы контролировать геометрию луча под углом.
— ПЗУ на стартовом адресе. Цикл ждет питания, — отозвался Саша, положив руки на клавиши клавиатуры.
Люба шагнула к тяжелому автотрансформатору. Плавно, миллиметр за миллиметром, она начала поворачивать массивную черную ручку, повышая напряжение в сети.
Стрелка вольтметра поползла вверх. Сначала раздался низкий, утробный гул силового трансформатора. Затем тонко, на грани ультразвука, засвистела строчная развертка — пятнадцать с половиной килогерц прорезали воздух лаборатории.
На стекле кинескопа заплясали невидимые заряды. Раздался громкий, пугающий треск статического электричества. Волоски на руках инженеров встали дыбом от напряжения поля. В горле запершило от резкого, металлического запаха озона.
Экран моргнул. Из глубины колбы, разогревая нити накала, пробилось тусклое оранжевое свечение.
— Питание стабильно. Просадок по пяти вольтам нет, — констатировала Люба, не сводя глаз со стрелочных индикаторов.
— Пускаю тест атрибутов, — произнес Птицын и нажал широкую клавишу «Ввод».
Программа инициализировала счетчики и выплюнула в шину данных первый байт.
Кинескоп вспыхнул.
Стекло залило густым синим цветом, окаймленным желтой рамкой бордюра. Видеоконтроллер надежно держал геометрию: границы прямоугольника оставались ровными и не дрожали.
Непривычно яркие для лаборатории цвета подсветили лица собравшихся. Напряженное лицо Наташи и Птицына окрасились в синий фоновый оттенок кинескопа.
Олег шумно выдохнул, расплываясь в торжествующей улыбке.
— Есть синхронизация! — крикнул он, ударив ладонью по краю стола. — Держит кадр!
Птицын быстро пробежался пальцами по клавишам. Синий фон мгновенно, без задержек и мерцания, сменился на ядовито-зеленый, затем на глубокий красный, потом на розовый. Аппаратная логика смешивания сигналов работала безупречно.
— Отлично, сплошные заливки держит, — деловито произнесла Наташа. — Птицын, давай нагрузку. Запускай шахматку и мелкий текст. Посмотрим, как он отрабатывает резкие переходы.
Саша кивнул и ввел команду вызова подпрограммы вывода символов.
Улыбка Олега мгновенно погасла, он тревожно прищурился.
Картинка на экране болезненно дернулась.