О перспективах развития Victoria под DOS

     Мне приходит много писем с пожеланиями возобновить развитие программы Victoria 3.xx для DOS. «Но зачем развивать то, что уже существует?» — спросите вы. Всё очень просто. Эта программа разрабатывалась в 2004 году, когда объём самого крутого винчестера не превышал 400 Гб.
     А в 2005г. уже всерьёз планировалась Windows-версия, способная тестировать накопители любого объёма. Поэтому при разработке DOS-программы было решено ограничиться 32-х битным счетчиком секторов, не предусматривая тестирование накопителей более 2 Тб. Фактически же, предельно поддерживаемый объём составил 1.048.575 Mb = ~ 1.05 Tb, поскольку для работы с числами и упрощения кода был использован арифметический сопроцессор (и как следствие — числа со знаком).
     Прошло 14 лет. И хотя, диски на 1Тб очень популярны, в продаже есть винчестеры на 12 Тб, для которых Victoria-DOS совершенно не подходит. А письма идут… И люди спрашивают, будет ли развиваться программа для DOS.

Среди причин, по которым она нужна пользователям, можно отметить следующие:

  • Быстро загружается с внешнего устройства, не требуя громоздкой Windows PE.
  • Большая точность, быстрей реагирует на малейшие изменения поведения HDD.
  • Есть наблюдение, что DOS-версия лучше «лечит» дефектные секторы.

 

MS-DOS
     Пользуясь моментом, я выражаю огромную благодарность всем, кто на протяжении 14 лет тестировал «Викторию», оставлял отзывы, ждал новых версий… Благодаря вам программа смогла преодолеть барьер любительской самоделки, и развилась до способности работать на любом компьютере из миллионов самых причудливых конфигураций.

 

Почему же я не спешу обновлять версию 3.52? (именно она стала последней когда-то давно)

На это есть объективные причины:

  •  Довольно сложно расширить границу поддерживаемого объёма. Нужно переписывать много процедур, используя вместо одного регистра — пары 32-х битных регистров (например eax:ebx) и 64-битную арифметику с переносами.
  • Прогресс компьютеров не стоял на месте. В них появились такие нововведения, как UEFI, AHCI и упразднение режимов совместимости с IDE. А значит, требуется программировать различные дисковые контроллеры самому, что явно не будет способствовать универсальности.
  • Слухи о «лучшем» лечении дефектов под ДОС сильно преувеличены. Если всё делать правильно, то в Windows, задействовав режим PIO, можно добиться ещё лучших результатов.
  • Victoria-DOS создавалась, когда я не очень хорошо умел программировать. В ней отражен мой уровень развития на 2005 год. С этого времени многое было переосмыслено, и опробованы более рациональные решения, которые воплотились в программе для Windows.

     Но это не значит, что я совсем не хочу обновлять «Викторию»-DOS. Просто это довольно сложно технически и отнимет много времени. Поэтому, два дня назад я задумался о компромиссном варианте. Действительно, можно делать всё не сразу, а с чего-то начать. Хобби же. А там — как карты лягут.

     И вот, из закромов извлечены исходники на ассемблере, и сам турбо-ассемблер Borland TASM 4.0. Запускаем программу. Подключаем винчестер на 2Тб.
Victoria DOS

После получения паспорта HDD мы сразу видим основной недостаток — в паспорте некорректно отображается количество секторов, ибо оно выходит за допустимый диапазон. При этом остальные параметры выглядят нормально.
     Интерфейс «Виктории» кажется чрезмерно ярким, перегруженным кучей цветов и сомнительных украшений. Наивно и по-детски. Сейчас бы я сделал проще — и не последнюю роль в формировании вкуса стали мои попытки самостоятельно освоить веб-дизайн. За те 2 месяца возни с сайтом hdd.by у меня-таки появились какие-то зачатки вкуса, до этого отсутствовавшие как класс:)

А это — место, где большие числа портятся.

Victoria DOS

 

В идеальном варианте в программу нужно внести следующие изменения:

  • Переделать все переменные и арифметику на 64-битные;
  • Переделать генератор случайных чисел;
  • Переделать график на большую предельную скорость;
  • Добавить работу через AHCI или в крайнем случае через BIOS;
  • Добавить новые, актуальные функции.

Более быстрый и потому, реальный вариант может выглядеть так:

  • Замена некоторых переменных и арифметики на беззнаковые, оставив ядро 32-х битным. Предел объёма расширится до 2 Тб.
  • Добавление работы через BIOS.

Кроме того, возможны некоторые лайфхаки в программировании, позволяющие расширить поддерживаемый объём до десятков Тб, оставив ядро программы 32-х битным.

     Я начал с очевидного — заменил переменные dword (32 бит), связанные с объёмом диска, на qword — счетверённое слово (64 бит). После этого программе резко полегчало, и она «увидела» 2-терабайтный винчестер.

Victoria 3.53

     На скриншоте немного исправленная Victoria 3.51 работает с винтом объёмом 2Тб. Именно такой вариант, возможно, имеет смысл опубликовать в дальнейшем.

     Правда, работы всё равно предстоит много — надо переделать расчёт пройденных процентов с сопроцессора на целочисленную арифметику. Ну и еще подумать над десятком других сложных мест. Стоит ли вообще это делать? Нужны ли народу «костыли»? Ведь есть же программа MHDD, в которой нормально реализована поддержка больших дисков. И только после ответов на эти вопросы можно будет окончательно поставить точку в теме DOS-Victoria.

 

Сергей Казанский, 09.12.2018г.

Понравилась статья? Поделитесь ей:
Технический центр «Victoria» 2004-2020, Беларусь. © Сергей Казанский.
наверх