edlin

2026-05-01 20:53
vak: (Аристипп)
[personal profile] vak
Намедни в новостях промелькнуло, что Микрософт откопал и выложил в открытый доступ доисторические тексты 86-DOS, который позже превратился в MS-DOS. Там не так много, но среди прочего фрагмент EDLIN, текстового редактора той эпохи. То есть EDLIN старше чем сам MS-DOS.

У меня с детства слабость к текстовым редакторам. Никогда не приходилось пользоваться EDLIN, и я подумал, пора бы научиться. Но не ползать же по ассемблерным исходникам, выясняя фичи. Можно запрячь ИИ для благородной цели.

Я взял аутентичные исходники EDLIN, благо Микрософт открыл их два года назад в составе MS-DOS 4.0. Подсунул ассемблерные тексты Курсору и говорю: перепиши на современный Си11. Он пошуршал и переписал. Хорошо, говорю, а теперь изучи как оно работает и документируй. Тоже сделал. И тестами покрыл.

Вот вам готовый проект того самого EDLIN в современном переносимом виде. По сравнению с оригиналом я сделал два простых изменения. Добавил команду H (help), показывающую список команд редактора. И вместо ^Z как конец ввода разрешил просто точку, как в юниксном ed.
  • Репозиторий на Гитхабе: sergev/edlin
  • Руководство пользователя: Manual.md
  • Введение в EDLIN для чайников: Tutorial.md
Пример:
$ edlin main.c 
*93p
93: int main(int argc, char **argv)
94: {
95: char *path = NULL;
96: int binary = 0;
97: if (parse_invocation(argc, argv, &path, &binary) != 0) {
98: msg_ndname();
99: return 1;
100: }
101:
102: Editor ed;
103: editor_init(&ed);
104: ed.disp_rows = env_u("EDLIN_LINES", tty_rows());
105:
106: if (fileio_startup(&ed, path, binary) != 0) {
107: editor_free(&ed);
*_
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org