— Ты зубы испортишь, — сказал он машинально.
— У меня крепкие, — отозвалась она, припаивая проводок к ножке микросхемы, — Не отвлекай.
Следующие двадцать минут прошли в тишине, нарушаемой только шипением припоя и короткими командами Любы: «Поверни», «Держи», «Пинцет».
Они работали как единый механизм. Громов, человек абстракций, вдруг ощутил физическую радость от созидания материи. Он был ассистентом хирурга, который проводит операцию на открытом сердце.
— Всё, — Люба выпрямилась и сняла очки-лупу. На носу остались красные следы от оправы, — Должно работать. Я завела сигнал от неиспользуемого триггера на плате клавиатуры. Если подашь на порт клавиатуры определенный бит… в общем, разберешься. Бит 7. Если он ноль — смещения нет. Если единица — смещение на одну строку.
— Только на одну? — уточнил Громов.
— Ну, я могу сделать на две, но надо еще логику городить. Тебе же для прокрутки надо?
— Для прокрутки идеально, — кивнул он, — Сдвинул на строку, заполнил нижнюю, сбросил триггер, переписал память… Стоп. Если я сброшу триггер, картинка прыгнет обратно вниз.
— Значит, ты должен успеть переписать память, пока триггер держит смещение, — Люба устало потерла глаза, — Женя, я дала тебе аппаратную возможностьвидеть результат мгновенно. А уж подменить данные в памяти ты можешь в фоне. Пользователь не заметит подмены, если картинка уже сдвинулась.
Громов задумался. Это было хитро. Это была иллюзия. Обман зрения. Сначала сдвигаем картинку аппаратно (мгновенно), пользователь видит, что текст поехал вверх. А потом, пока пользователь радуется скорости, процессор тихонько перелопачивает память, чтобы привести её в соответствие с новой реальностью, и возвращает смещение в ноль, — Это… — он подбирал слово, — Это элегантно. Чертовски элегантно.
Он воткнул плату обратно в разъем. Щелкнул тумблером. Экран засветился.
— Так, дай мне пять минут, — Громов упал на стул и застучал по клавишам. Ему нужно было написать подпрограмму управления экраном. Маленькую подпрограмму.
ПОРТ_ЗАП F0, 80
Включить смещение.
ВЫЗОВ ОЧИСТ_НИЗ
Очистить нижнюю строку.
ВОЗВР
Вернуть управление.
А потом, в прерывании таймера, он будет потихоньку двигать основной массив.
Он запустил тест. Нажал кнопку, которая генерировала поток текста.
Раньше текст полз, как раненая гусеница. Теперь… Строки летели вверх. Это не было идеально плавно, как на демонстрациях экранов на ВДНХ или в кинотеатре Дворца культуры, но это былобыстро . Текст просто возникал.
— Работает! — Громов повернулся к Любе. Его лицо расплылось в широкой, почти детской улыбке, совершенно не свойственной его циничной натуре, — Люба, ты волшебница!