Volkov Commander — код легенды под микроскопом

Эпоха DOS была временем настоящей «цифровой археологии» и экстремальной оптимизации. Для нас, системщиков старой закалки, 640 КБ памяти были не просто ограничением, а священным рубежом. В те дни каждый байт в сегменте данных вырывали с боем, а программы писались не на «фреймворках», а на чистом ассемблере, где плотность опкодов на квадратный миллиметр кода определяла выживание продукта.

Сегодняшний софт, потребляющий гигабайты ОЗУ еще до отрисовки первого окна, выглядит тяжеловесным монстром на фоне легенд прошлого. И среди этих легенд особняком стоит Volkov Commander (VC). Микроскопическая утилита, которая работала молниеносно даже на «антикварных» IBM PC/XT, стала мировым стандартом. Как «шутка», умещающаяся в один сегмент памяти, смогла пережить десятилетия? Ответ на этот вопрос стал доступен только сейчас.

В мае 2026 года произошло событие, которое мы ждали тридцать лет: Всеволод Волков официально открыл исходный код Volkov Commander (версии 4.05 и 4.99.09). Проект перешел в разряд Open Source под либеральной лицензией 2-clause BSD.

Огромную роль в этом сыграл Таллинский музей компьютеров (Arvutimuuseum) и Данила Сухарев, опубликовавшие репозиторий ddanila/vc на GitHub. Это не просто мертвый цифровой гербарий. Репозиторий имеет четкую структуру: ветка master заморожена для истории (в ней сохранены оригинальные временные метки файлов из ZIP-архивов автора), а ветка build предназначена для живой работы — адаптации кода под современные ассемблеры и исправления багов.

Открытие исходников вызвало мгновенную цепную реакцию: в кратчайшие сроки появился проект pts-vc405-port, где код VC 4.05 был портирован на целую плеяду инструментов — NASM, mininasm, WASM, JWasm, ASMC и классический TASM.

Для системного программиста версия VC 4.05 — это эталон элегантности. Весь коммандер упакован в один монолитный файл формата .COM объемом около 47 КиБ. Здесь нет таблиц релокации и тяжелых EXE-заголовков. Программа использует модель памяти Tiny, где сегментные регистры (CS=DS=ES=SS) указывают на один и тот же участок в 64 КБ.
Архитектурная чистота VC 4.05 поражает: код полностью лишен инструкций 386+ (никаких EAX или FS/GS), что гарантирует стопроцентную совместимость с оригинальным процессором Intel 8086.

Особое мастерство Волков проявил в реализации встроенного редактора. Как уместить редактор, способный открывать файлы больше 64 КБ, в рамках одного сегмента? Секрет — в ручном управлении страницами памяти и динамическом переключении сегментных регистров. Это была собственная схема страничной адресации, реализованная на «голом» железе.

По мнению сообщества на Habr и профильных форумах, VC остается единственным полнофункциональным коммандером, который компилировался в чистый .COM файл, в то время как конкуренты (вроде Dos Navigator) неизбежно разрастались до EXE и тяжелых оверлеев.

От шутки до легенды: Удивительная история создания

В переписке от 1 мая 2026 года Всеволод Волков подтвердил то, что долгое время было лишь слухами: программа родилась из иронии.

«Изначально программа задумывалась просто как шутка: крошечная программа на ассемблере, которая выглядела как NC 3.0, единственной функцией которой был вывод листинга каталогов…»

Однако парадокс «железа» того времени заключался в том, что Norton Commander 3.0 становился слишком громоздким. Пользователи PC/XT и PC/AT заметили, что безымянная утилита Волкова работает в разы быстрее, не требует настройки и оставляет максимум RAM для запуска игр или компиляторов. Пользователи сами дали программе имя — Volkov Commander, превратив авторскую пародию в профессиональный инструмент.

Если 4.05 — это гимн эпохе DOS 3.3-6.22, то альфа-версия 4.99.09 (Alpha 5.0) стала попыткой заглянуть в мир Windows 95. Ниже приведены ключевые различия этих ветвей:

Технический параметр
Версия 4.05 (Стабильная)
Версия 4.99.09 (Alpha 5.0)
Формат файла
Монолитный .COM (Tiny model)
Модульный (подготовка под EXE)
Архитектура
Intel 8086 (Pure Real Mode)
Оптимизация под 286/386+
Имена файлов
Строго 8.3 (FAT12/16)
LFN (Windows 95 API Int 21h AX=71xxh)
Память списков
Фиксированные дескрипторы
Динамическое распределение
Структура кода
Единый листинг
Независимые модули

Переход на поддержку длинных имен (LFN) через API Windows 9x заставил Волкова отказаться от экстремальной компактности. Динамическое распределение памяти под списки файлов (вместо фиксированных смещений) усложнило логику, но позволило работать с именами до 255 символов. Это был осознанный размен: потеря «монолитного изящества» ради актуальности в новой программной среде.

Для нас, ретро-археологов, код VC — это не просто текст, а идеальный стресс-тест для инструментов разработки. Попытка скомпилировать VC современным mininasm выявляет тончайшие баги в jump size optimizer (оптимизаторе размера прыжков). В монолитном коде объемом почти 64 КБ дистанции между метками часто балансируют на грани 127–128 байт. Одна неверная оптимизация — и короткий (short) переход превращается в ближний (near), сегмент переполняется, и бинарник «рассыпается». VC — это высшая математика ассемблерного кода, где плотность меток такова, что любая ошибка ассемблера видна как на ладони.

Уроки старой школы для новой эры

Открытие исходников Volkov Commander — это не просто ностальгический жест. Это публикация учебника по инженерной дисциплине. Код Волкова напоминает нам: производительность — это не результат покупки нового «железа», а следствие глубокого понимания архитектуры процессора и регистров.
Может ли современный разработчик, привыкший к абстракциям и безлимитной памяти, создать нечто столь же долговечное? VC учит нас тому, что ограничения — лучший катализатор творчества.

guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии