Pull to refresh

Код 15-летней давности и газета объявлений

Reading time4 min
Views48K
Увидев переводную публикацию о поддержке древнего как кости мамонта legacy-кода, не могу не поделиться историей из своего опыта, а заодно, и призвать написать тех, кто также как и я сталкивался с подобными задачами. Да и за державу обидно — почему подобные публикации – в основном, переводные? У нас есть и было немало программистов-самородков, ваяющих свое, ни с чем не совместимое программное обеспечение – свои собственные СУБД, графические интерфейсы, драйвера для промышленного оборудования собственной разработки. По работе я немало сталкивался с творениями местных кулибиных, и еще расскажу про них, если будет интерес.

Случилась эта история в 2001 году и началась с того, что в FIDO-шной конференции $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. Оказывается, перекупившая GEM компания Caldera в 1999 году их зарелизила под лицензией GPL. В начале каждого файла с кодом был копирайт Caldera, но все остальное оставалось в первозданном виде 15-летней давности.



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



Через неделю все было готово, и я передал откомпилированные доработанные драйвера клиенту, чтобы он их попробовал. А еще через неделю я приехал в офис для получения оплаты за работу, и мне продемонстрировали появившиеся на внутреннем корпоративном форуме газеты восторженные отзывы верстальщиков по случаю появления возможности работы с высоким разрешением экрана на больших мониторах. Причем, как оказалось, газета имела свои отделения не только в Москве и других российских городах, но также и по всему СНГ, радостные отзывы были отовсюду. И это было очень приятно, так же, как и щедрая оплата сделанной работы, составившая солидную прибавку к моей аспирантской стипендии, на которую я тогда жил.
Tags:
Hubs:
Total votes 163: ↑159 and ↓4+155
Comments20

Articles