Эпоха 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 учит нас тому, что ограничения — лучший катализатор творчества.