bash.im ithappens.me zadolba.li
5494

Самый научный в мире скринсейвер

18 февраля 2011, 12:45

Давным-давно, когда «Pentium 60 МГц» звучало гордо, стоял в нашем отделе 486 DX-33 c двумя мегабайтами ОЗУ, зато с видеокартой SVGA, метром видеопамяти и математическим сопроцессором. Трудился компьютер над расчётами каких-то статистических научных данных по довольно сложным зависимостям и формулам — сейчас уж не вспомню. Программа была написана в реальном режиме x86, где для доступа к памяти за 1 МБ нужно было работать через EMS или XMS. Только в этом режиме процессора работал драйвер хитрой железяки, эти самые данные собиравший. Код был очень чудесатым: впихнуть в сегменты по 64 КБ массив на 840 — это не фунт изюма.

Нежданно-негаданно накрылся у этого монстра мегабайт оперативки. Естественно, программа перестала работать, а график сбора данных и их обработки был сорван. Институт, как и все научные учреждения страны, финансировался бедно, и несчастный мегабайт ОЗУ купить было не на что. Нормальные программисты сдались бы — но не мы.

Мы использовали… память видеоадаптера. Код даже переписывать особо не пришлось — вместо библиотеки доступа к XMS была написана библиотека доступа к видеопамяти через VESA. Размеры окна отображения — те же самые 64 КБ, только по другому адресу, который и был указан программе: «Данные искать и писать тут».

В бета-версии программы графический режим видеоадаптера при выполнении расчетов не переключался, и на экране творилась просто жуткая психоделика. Конечно, в релизе мы вставили переключение видеоадаптера в разрешение 320×240, чтобы в первых 64 КБ рисовать прогресс-бар: «Подождите, данные обрабатываются». С точки зрения наших учёных ничего не изменилось: графики с готовыми данными и интерфейс для их записи на диск мы выводили по-прежнему в честных 1024×768, и только на экране ожидания текст надписи стал покрупнее.

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