Join Nostr
2026-05-02 04:28:33 UTC

Пятнадцать байтов на стек от конца (RSS Feed) on Nostr: edlin Намедни в новостях промелькнуло, что ...

edlin

Намедни в новостях промелькнуло, что Микрософт откопал и выложил в открытый доступ доисторические тексты 86-DOS, который позже превратился в MS-DOS. Там не так много (https://github.com/DOS-History/Paterson-Listings), но среди прочего фрагмент EDLIN, текстового редактора той эпохи. То есть EDLIN старше чем сам MS-DOS.

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

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

- Репозиторий на Гитхабе: sergev/edlin (https://github.com/sergev/edlin)
- Руководство пользователя: Manual.md (https://github.com/sergev/edlin/blob/main/Manual.md)
- Введение в EDLIN для чайников: Tutorial.md (https://github.com/sergev/edlin/blob/main/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);
*_

https://www.dreamwidth.org/tools/commentcount?user=vak&ditemid=1538257
comments

https://vak.dreamwidth.org/1538257.html