Правка чужого кода
Oct. 11th, 2022 05:24 pmВсегда приятно, когда удаётся сделать мир чуточку лучше.
Понадобилось мне в одной задаче просматривать память в DOS. Весь мегабайт. Может быть даже всякий поиск и редактор организовать, но хотя бы так. Из коробки у DOS (в моём случае MS-DOS 6.22), есть "замечательная" утилита debug, которая убога чуть более чем полностью. Она ещё в конце 90-х, начале 2000-х вызывало у меня самые противоречивые чувства, сейчас и подавно. Но, тем не менее, хорошо что она есть. Но я искал более удобный инструмент. И нашёл - это утилита RAM View.

Но исполняемого файла найти не удалось, только сорцы под Borland C++ 3.1. И вот, начался квест по компиляции, и последующим исправлением ошибок. Даже по скринам с гита виден главный косяк: проблемы с символами, и выезжающий последний символ за пределы экрана (15 символов вместо 16). Итак, ковыряемся в старом коде, попутно исправляя его. Благодарю всех участников ретрочатика за помощь.
Самое сложное было собрать всю эту бодягу. Как оказалось, нужно компилятор положить в те же папки, что и компилятор у автора. Борланд был скачан отсюда, портабельная версия.
Далее в исходниках надо выполнить (не забываем указать пути к исполняемому файлу):
PRJ2MAK RAMVIEW.PRJ
После сиих манипуляций появляется мейкфайл: RAMVIEW.MAK, в котором можно посмотреть пути. В моём случае они оказались C:\BORLANDC. Переименовываем папку с компилятором в эту и собираем проект, я делал через графический интерфейс(ctrl-F9).
Компиляция прошла успешно, программа запускается. Но имеем кучу непечатных символов и выглядит как-то ущербно.

Ну что ж, пришла пора править код. Как оказалось видать где-то потерялись непечатные символы, при переносе кода из ДОС.


Спешу напомнить, чтобы корректно отображать символы в Notepad++, нужно установить кодировку OEM 866. Тогда всё будет более красиво.


Ну, а далее, находим подходящие символы по таблице ASCII для DOS, и подставляем их в исходник. Не буду показывать промежуточные варианты, как по мне, самым идеальным оказался этот.

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

Показываю вам, как делать правки в чужом коде, в чужих репах. Вот моё вольное оформление запроса на слияние: https://github.com/aurelitec/ramview/pull/1 .
Даже если автор не потрудиться добавить слияние, всё равно проект уже исправлен. Для тех кому нужен, вот собранная последняя версия программы RAMVIEW.
Понадобилось мне в одной задаче просматривать память в DOS. Весь мегабайт. Может быть даже всякий поиск и редактор организовать, но хотя бы так. Из коробки у DOS (в моём случае MS-DOS 6.22), есть "замечательная" утилита debug, которая убога чуть более чем полностью. Она ещё в конце 90-х, начале 2000-х вызывало у меня самые противоречивые чувства, сейчас и подавно. Но, тем не менее, хорошо что она есть. Но я искал более удобный инструмент. И нашёл - это утилита RAM View.

Но исполняемого файла найти не удалось, только сорцы под Borland C++ 3.1. И вот, начался квест по компиляции, и последующим исправлением ошибок. Даже по скринам с гита виден главный косяк: проблемы с символами, и выезжающий последний символ за пределы экрана (15 символов вместо 16). Итак, ковыряемся в старом коде, попутно исправляя его. Благодарю всех участников ретрочатика за помощь.
Самое сложное было собрать всю эту бодягу. Как оказалось, нужно компилятор положить в те же папки, что и компилятор у автора. Борланд был скачан отсюда, портабельная версия.
Далее в исходниках надо выполнить (не забываем указать пути к исполняемому файлу):
PRJ2MAK RAMVIEW.PRJ
После сиих манипуляций появляется мейкфайл: RAMVIEW.MAK, в котором можно посмотреть пути. В моём случае они оказались C:\BORLANDC. Переименовываем папку с компилятором в эту и собираем проект, я делал через графический интерфейс(ctrl-F9).
Компиляция прошла успешно, программа запускается. Но имеем кучу непечатных символов и выглядит как-то ущербно.

Ну что ж, пришла пора править код. Как оказалось видать где-то потерялись непечатные символы, при переносе кода из ДОС.


Спешу напомнить, чтобы корректно отображать символы в Notepad++, нужно установить кодировку OEM 866. Тогда всё будет более красиво.


Ну, а далее, находим подходящие символы по таблице ASCII для DOS, и подставляем их в исходник. Не буду показывать промежуточные варианты, как по мне, самым идеальным оказался этот.

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

Показываю вам, как делать правки в чужом коде, в чужих репах. Вот моё вольное оформление запроса на слияние: https://github.com/aurelitec/ramview/pull/1 .
Даже если автор не потрудиться добавить слияние, всё равно проект уже исправлен. Для тех кому нужен, вот собранная последняя версия программы RAMVIEW.
no subject
Date: 2022-10-12 03:10 am (UTC)молодец, годно.
а уж сборка древними компиляторами — это совсем квест.