15-Летняя Газета Кодов И Рекламы

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

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

За время своей работы я наткнулся на множество творений местных Кулибиных и расскажу о них подробнее, если будет интерес.

Эта история случилась в 2001 году и началась с того, что на конференции ФИДО $CRACK$.

TALKS, обычным содержанием которой были кряки, реклама поиска кряков и разговоры крэкеров «по жизни», я увидел нетипичное объявление с вопросом, кто мог бы начать доработку графической программы.

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

Однако через неделю анонс повторился, мне стало интересно, о чем он, и я связался с его автором.

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

После этого он предложил встретиться для уточнения дальнейших деталей.

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

Мой будущий клиент, встретивший меня, оказался главой местного ИТ-отдела, он был уже стар, но из разговора чувствовалось, что он «один из наших» — программистов, пусть и бывших, «пенсионеров».

После чего он подвел меня к компьютеру, с огромным по тем временам 21-дюймовым монитором, на котором была такая картинка:

15-летняя газета кодов и рекламы

Подобный GUI я видел впервые, да и то этот монохромный интерфейс выглядел старомодно, тем более что разрешение для такого монитора было слишком низким, а пиксели выглядели огромными.

Из дальнейших объяснений я узнал, что речь идет о модификации GEM/3 Desktop, которая в свое время была конкурентом MS Windows 2.0; его последняя коммерческая версия вышла 15 лет назад. Но зачем его улучшать? Оказалось, что газета использовала древнюю версию настольной издательской системы Ventura Publisher, которая запускалась только из GEM/3, но позволяла автоматизировать верстку газетных страниц, получая текст рекламных объявлений из базы данных - по адресу в то время ни одна другая система не могла этого сделать.



15-летняя газета кодов и рекламы

После некоторых колебаний я принялся за работу.

Задача была доработать драйвера для дисплея высокого разрешения 1280х1024. Драйверов было несколько, для разных видеоадаптеров и для каждого разрешения свой драйвер.

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

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

Мне это удалось, но не тут-то было: GEM, в свою очередь, работал под MS-DOS, в реальном режиме, а его драйвер переключал банки видеопамяти для доступа к видеопамяти.

Простую замену констант здесь осуществить невозможно; пришлось искать код переключения банков видеопамяти - задача не из легких.

Кроме того, драйвер был продвинутым и не только предоставлял интерфейс для передачи графики на дисплей, но и умел рисовать графические примитивы — линии, прямоугольники и круги; код рендеринга, смешанный с переключением банков видеопамяти, был довольно запутанным.

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

Через неделю работы (как обычно, в основном ночью) мне удалось научить драйвер 800х600 от этого видеоадаптера работать в разрешении 1280х1024, хотя и возникали глюки рендеринга некоторых графических примитивов.

И тут мне позвонил клиент и сказал, что нашел исходный код (!) GEM. Оказывается, компания Caldera, купившая GEM в 1999 году, выпустила их под лицензией GPL. В начале каждого файла кода стоял копирайт Caldera, но все остальное осталось в первозданном виде 15-летней давности.



15-летняя газета кодов и рекламы

Понятно, что теперь, когда в моем распоряжении были исходные коды, работа пошла гораздо быстрее, хотя они были на языке Ассемблера с небольшой примесью Си, а кое-где были даже спагетти.



15-летняя газета кодов и рекламы

Через неделю все было готово, и я передал клиенту скомпилированные и доработанные драйвера, чтобы он их опробовал.

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

на больших мониторах.

Причем, как оказалось, газета имела свои филиалы не только в Москве и других городах России, но и по всему СНГ, отовсюду были радостные отзывы.

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

Теги: #ассемблер x86 #ретрокомпьютинг #обратное проектирование #Аномальное программирование

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.