Sergey Oboguev (oboguev) wrote,
Sergey Oboguev
oboguev

(сугубо историко-программистское)

Разбирая файлы на магнитной ленте доисторической давности, обнаружил древний файл, который правил драйвер теминала VAX/VMS 4.7 для его обрусения. В VMS, кто не знает, была развитая программа PATCH, которая позволяла не только править байты, но вставлять в код новые инструкции, удалять или замещать существующий код, добавлять новые данные и т.д.

Значительная часть файлов в дистрибутиве очередной версии системы в те времена поставлялась именно посредством патчей: вместо перекомпилированного EXE файла поставлялись патч-файлы, которые правили уже находившийся на машине EXE файл.

Что улыбнуло: оказывается, когда я взялся править драйвер, то в самом PATCH-е обнаружилась ошибка, которая в определённых редких случаях (под которые однако как раз попадал TTDRIVER) приводила к неправильному вычислению адреса расширяющей области, в которую patch помещал новый код и новые данные.

Поэтому пришлось сначала отпатчировать сам патч, и потому уже патчированным патчем патчить драйвер. ;-)

И попутно временно помечать драйвер как PIC-image, поскольку patch считал, что увеличивать размер non-PIC shareable images -- затея с опасными последствиями, в которой он принимать участия не хочет.

"Так они и жили", хотя сейчас это кажется почти невероятным.


Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 2 comments
...Legend has it that Seymour Cray, inventor of the Cray I supercomputer and most of Control Data's computers, actually toggled the first operating system for the CDC7600 in on the front panel from memory when it was first powered on. Seymour, needless to say, is a Real Programmer...

suhov

April 17 2012, 21:21:31 UTC 5 years ago Edited:  April 17 2012, 21:22:39 UTC

круто
напоминает «трудное» весёлое программистское детство («килобайтные игрушки») когда в изначальном отсутствии ассемблера на очередной отечественной попытке одарить юные умы 8-ми разрядным бытовым компьютером приходилось программировать напрямую в машинных кодах и исправления в код то есть PATCH-и, чтобы не пересчитывать все абсолютные адреса, вносились через вставку инструкций [JUMP в конец], в конце добавлялся код, и инструкция [JUMP обратно]