Альтернативный и более эффективный костыль для обхода ограничения Volkov Commander v4.05 на максимальный размер файла внутренних ассоциаций
VC.EXT в 512 байт.
Необходимый для этого софт:
- DOS-эмулятор DOSBox-X (улучшенный форк DOSBox):
https://github.com/joncampbell123/dosbox-x- Volkov Commander v4.05 (2000 года выпуска):
http://old-dos.ru/dl.php?id=2269- альтернативная командная оболочка 4DOS v8.00 (2009 года выпуска):
http://old-dos.ru/dl.php?id=2162- и текстовый редактор AkelPad (необходим для создания BTM-батника для 4DOS и его сохранения в досовской кириллической кодировке CP866):
http://old-dos.ru/index.php?page=files&mode=files&do=show&id=7354Инструкция (здесь и далее пути к файлам и папкам указаны в качестве примеров и могут отличаться в зависимости от вашей конфигурации DOSBox-X):
1) Создать в AkelPad'е батник
OPENFILE.BTM со следующим содержимым и сохранить его в кодировке CP866:
Развернуть: Содержимое батника OPENFILE.BTM- Код: Выделить всё
@echo off
if %# lt 1 goto ErrorCommandLineMissing
if %# gt 1 goto ErrorCommandLineOverflow
set OpenFileName=%1
set OpenFilePath=%@full[%OpenFileName%]
if %@wild[%OpenFileName%,?:] eq 1 .or. %@wild[%OpenFileName%,?:\] eq 1 .or. %@wild[%OpenFileName%,?:/] eq 1 goto ErrorDrive
if %@files[%OpenFilePath%] lt 1 goto ErrorFile
if %@files[%OpenFilePath%] gt 1 goto ErrorWildcard
if %@attrib[%OpenFilePath%,D] eq 1 goto ErrorFolder
if %@len[%@ext[%OpenFilePath%]] eq 0 (
pushd C:\DOSPROGS\BLOCEK
BLOCEK.EXE %OpenFilePath%
popd
goto BatchFileEnd
)
switch %@ext[%OpenFilePath%]
case bas
pushd C:\DOSPROGS\FBC
FBC.EXE %OpenFilePath%
popd
case pas
pushd C:\DOSPROGS\FPC\BIN\GO32V2
FP.EXE %OpenFilePath%
popd
case asm
pushd C:\DOSPROGS\FASM
CWSDPMI.EXE
FASM.EXE %OpenFilePath%
popd
case zip .or. rar .or. 7z .or. cab .or. arj
C:\DOSPROGS\RETRO7Z\7ZA.EXE x %OpenFilePath% -o%@rtrim[\,%@path[%OpenFilePath%]]\%@name[%OpenFilePath%]
case iso .or. mdf .or. nrg .or. img .or. ima .or. dmg .or. pkg
C:\DOSPROGS\RETRO7Z\7ZA.EXE x %OpenFilePath% -o%@rtrim[\,%@path[%OpenFilePath%]]\%@name[%OpenFilePath%]
case wim .or. swm .or. esd .or. fat .or. hfs .or. xar .or. vhd .or. vdi
C:\DOSPROGS\RETRO7Z\7ZA.EXE x %OpenFilePath% -o%@rtrim[\,%@path[%OpenFilePath%]]\%@name[%OpenFilePath%]
case jpg .or. gif .or. png .or. bmp .or. tif .or. tga .or. pcx .or. web
pushd C:\DOSPROGS\DOSVIEW
DOSVIEW.EXE -r 41 %OpenFilePath%
popd
case mp3 .or. wav
pushd C:\DOSPROGS\DSS
DSS.EXE %OpenFilePath%
popd
case mid .or. rmi .or. kar
pushd C:\DOSPROGS\DOSMID
DOSMID.EXE %OpenFilePath%
popd
case mod .or. xm .or. it .or. s3m
pushd C:\DOSPROGS\CUBIC
CP.EXE %OpenFilePath%
popd
case avi .or. mp4 .or. mkv .or. ts .or. 3gp .or. mpg .or. flv .or. wmv .or. mov
pushd C:\DOSPROGS\MPLAYER
MPLAYER.EXE -screenw 640 -screenh 480 -fs %OpenFilePath%
popd
case htm
pushd C:\DOSPROGS\LINKS
LINKS.EXE %OpenFilePath%
popd
case pdf
pushd C:\DOSPROGS\MUPDF
MUPDF.EXE %OpenFilePath%
popd
case djv
pushd C:\DOSPROGS\DJVU4DOS
VIEWDJVU.EXE /%OpenFilePath%
popd
case nes
pushd C:\DOSGAMES\FCEULTRA
FCEU.EXE %OpenFilePath%
popd
case smc
pushd C:\DOSGAMES\SNES9X
SNES9X.EXE %OpenFilePath%
popd
case md
pushd C:\DOSGAMES\GENPLUS
GEN.EXE %OpenFilePath% -sound on
popd
case sms .or. gg
pushd C:\DOSGAMES\MASSAGE
MASSAGE.EXE %OpenFilePath%
popd
case gb .or. gbc
pushd C:\DOSGAMES\KIGB
KIGB.EXE %OpenFilePath%
popd
case gba
pushd C:\DOSGAMES\NO4GBA
NO4GBA.EXE %OpenFilePath%
popd
case pce
pushd C:\DOSGAMES\HU6280
HU6280.EXE %OpenFilePath%
popd
case a26
pushd C:\DOSGAMES\STELLA
STELLA.EXE %OpenFilePath%
popd
default
pushd C:\DOSPROGS\BLOCEK
BLOCEK.EXE %OpenFilePath%
popd
endswitch
goto BatchFileEnd
:ErrorCommandLineMissing
echo Не хватает параметров командной строки.
echo Должен быть один параметр.
goto BatchFilePause
:ErrorCommandLineOverflow
echo Слишком много параметров командной строки.
echo Должно быть не более одного параметра.
goto BatchFilePause
:ErrorDrive
echo Не удается открыть файл %OpenFileName%.
echo %OpenFileName% - это диск, а не файл.
goto BatchFilePause
:ErrorFile
echo Не удается открыть файл %OpenFileName%.
echo Файл %OpenFileName% не существует.
goto BatchFilePause
:ErrorWildcard
echo Не удается открыть файл %OpenFileName%.
echo Символы подстановки (* и ?) не поддерживаются.
goto BatchFilePause
:ErrorFolder
echo Не удается открыть файл %OpenFilePath%.
echo %OpenFilePath% - это папка, а не файл.
goto BatchFilePause
:BatchFilePause
pause Для продолжения нажмите любую клавишу . . .
:BatchFileEnd
cancel
2) В том же AkelPad'е отредактировать файл внутренних ассоциаций Volkov Commander
VC.EXT, заменив всё его содержимое на следующие строки, и сохранить внесенные изменения:
Развернуть: Содержимое файла VC.EXT- Код: Выделить всё
exe: !.!
com: !.!
bat: !.!
btm: C:\DOSPROGS\4DOS\4DOS.COM /c !.!
*: C:\DOSPROGS\4DOS\4DOS.COM /c C:\DOSPROGS\OPENFILE\OPENFILE.BTM !.!
В процессе тщательного тестирования данного костыля в DOSBox-X с запущенным внутри Volkov Commander v4.05 я не столкнулся ни с одним вылетом DPMI-программ для DOS, чьи пути к исполняемым файлам прописаны в данном BTM-батнике для 4DOS, вызываемом при открытии через Volkov Commander любого файла с любым прописанным в BTM-батнике расширением. DPMI-программы для DOS можно условно разделить на 4 больших группы:
- программы для DOS, способные открывать популярные текстовые, архивные, графические и мультимедийные форматы сегодняшнего дня;
- игры для DOS, выпущенные в 90-е годы и в более поздние десятилетия;
- эмуляторы старых игровых приставок, портативных игровых систем и IBM PC-несовместимых домашних компьютеров для DOS;
- и DOS-порты популярных опенсорсных компиляторов языков программирования.