Смотрим перевод публикация О поддержке устаревшего кода, старого, как кости мамонта, не могу не поделиться историей из своего опыта, а заодно призвать написать тех, кто, как и я, сталкивался с подобными проблемами.
И обидно за страну - почему такие публикации в основном переводят? У нас было и было много программистов-самородков, которые создают свое несовместимое программное обеспечение - свои СУБД, графические интерфейсы, драйверы для промышленного оборудования собственной разработки.
За время своей работы я наткнулся на множество творений местных Кулибиных и расскажу о них подробнее, если будет интерес.
Эта история случилась в 2001 году и началась с того, что на конференции ФИДО $CRACK$.
TALKS, обычным содержанием которой были кряки, реклама поиска кряков и разговоры крэкеров «по жизни», я увидел нетипичное объявление с вопросом, кто мог бы начать доработку графической программы.
Поскольку на этой конференции взлом коммерческого ПО, например, «отвязку» от аппаратного ключа, «переработку» любили называть, а я коммерческим взломом не занимался, то не обратил внимания на это объявление, решив, что будет быть теми, кто оформит заказ, связавшись с адресатом по личной электронной почте.
Однако через неделю анонс повторился, мне стало интересно, о чем он, и я связался с его автором.
Он пояснил, что речь идет именно об улучшении графической программы, и что тусовавшиеся на конференции взломщики, узнав, о чем идет речь, напрочь отказались выполнять эту работу, заявив, что они занимаются взломом, а не модификацией программы.
После этого он предложил встретиться для уточнения дальнейших деталей.
Придя по указанному им адресу, у входа в офис я увидел вывеску с названием известной рекламной газеты, что меня еще больше заинтриговало.
Мой будущий клиент, встретивший меня, оказался главой местного ИТ-отдела, он был уже стар, но из разговора чувствовалось, что он «один из наших» — программистов, пусть и бывших, «пенсионеров».
После чего он подвел меня к компьютеру, с огромным по тем временам 21-дюймовым монитором, на котором была такая картинка:
Подобный GUI я видел впервые, да и то этот монохромный интерфейс выглядел старомодно, тем более что разрешение для такого монитора было слишком низким, а пиксели выглядели огромными.
Из дальнейших объяснений я узнал, что речь идет о модификации GEM/3 Desktop, которая в свое время была конкурентом MS Windows 2.0; его последняя коммерческая версия вышла 15 лет назад. Но зачем его улучшать? Оказалось, что газета использовала древнюю версию настольной издательской системы Ventura Publisher, которая запускалась только из GEM/3, но позволяла автоматизировать верстку газетных страниц, получая текст рекламных объявлений из базы данных - по адресу в то время ни одна другая система не могла этого сделать.
После некоторых колебаний я принялся за работу.
Задача была доработать драйвера для дисплея высокого разрешения 1280х1024. Драйверов было несколько, для разных видеоадаптеров и для каждого разрешения свой драйвер.
Но все они поддерживали разрешение не более 800х600, поэтому у увиденного мной монитора были такие крупные пиксели, что, согласитесь, для верстки полноформатной газеты это не очень удобно.
Интернета у меня под рукой на тот момент не было, а исходников драйверов в комплекте не было, поэтому я взял архив с GEM с клиента и начал возиться с бинарным кодом драйверов, чтобы найти в нем все константы, задающие разрешение, поддерживаемое драйвером, и заменяем их на необходимые.
Мне это удалось, но не тут-то было: GEM, в свою очередь, работал под MS-DOS, в реальном режиме, а его драйвер переключал банки видеопамяти для доступа к видеопамяти.
Простую замену констант здесь осуществить невозможно; пришлось искать код переключения банков видеопамяти - задача не из легких.
Кроме того, драйвер был продвинутым и не только предоставлял интерфейс для передачи графики на дисплей, но и умел рисовать графические примитивы — линии, прямоугольники и круги; код рендеринга, смешанный с переключением банков видеопамяти, был довольно запутанным.
Но тут мне повезло: видеоадаптер, поддерживаемый одним из драйверов, переключал видеобанки, выдавая команды на обычно неиспользуемый аппаратный порт, поэтому переключение видеобанков можно было обнаружить по номеру этого порта.
Через неделю работы (как обычно, в основном ночью) мне удалось научить драйвер 800х600 от этого видеоадаптера работать в разрешении 1280х1024, хотя и возникали глюки рендеринга некоторых графических примитивов.
И тут мне позвонил клиент и сказал, что нашел исходный код (!) GEM. Оказывается, компания Caldera, купившая GEM в 1999 году, выпустила их под лицензией GPL. В начале каждого файла кода стоял копирайт Caldera, но все остальное осталось в первозданном виде 15-летней давности.
Понятно, что теперь, когда в моем распоряжении были исходные коды, работа пошла гораздо быстрее, хотя они были на языке Ассемблера с небольшой примесью Си, а кое-где были даже спагетти.
Через неделю все было готово, и я передал клиенту скомпилированные и доработанные драйвера, чтобы он их опробовал.
Через неделю я приехал в офис для получения оплаты за работу, и мне показали газеты, появившиеся на внутрикорпоративном форуме восторженные отзывы верстальщиков по случаю появления возможности работы с высоким разрешением экрана.
на больших мониторах.
Причем, как оказалось, газета имела свои филиалы не только в Москве и других городах России, но и по всему СНГ, отовсюду были радостные отзывы.
И это было очень приятно, как и щедрая оплата за проделанную работу, составившая существенную прибавку к моей аспирантской стипендии, на которую я тогда жил.
Теги: #ассемблер x86 #ретрокомпьютинг #обратное проектирование #Аномальное программирование
-
Коллоидная Химия
19 Oct, 24 -
Nokia E61: Как Открыть Локальный Html-Файл
19 Oct, 24 -
Итоги Акции С Groupon. Практический Опыт
19 Oct, 24 -
Лучшие Статьи К Новогодним Праздникам
19 Oct, 24