I had some variables set in my FDAUTO.BAT file like this:
...
set DOSDIR=C:\FreeDOS
set PATH=%dosdir%\BIN
set SOMEDIR1=C:\FOO\SOMEDIR1
set SOMEDIR2=C:\BAR\SOMEDIR2
set SOMEDIR3=C:\XXX\SOMEDIR3
set PATH=%SOMEDIR1%;%SOMEDIR2%;%SOMEDIR3%;%PATH%
...
This was evaluated to:
C:\>path
PATH=C:\FOO\SOMEDIR1;C:\BAR\SOMEDIR2;C:\XXX\SOMEDIR3;C:\FreeDOS\BIN
C:\>
So far so good.
But then when I commented out the definition of a variable (in this example SOMEDIR2)
while leaving the set PATH line unchanged:
...
set DOSDIR=C:\FreeDOS
set PATH=%dosdir%\BIN
set SOMEDIR1=C:\FOO\SOMEDIR1
REM set SOMEDIR2=C:\BAR\SOMEDIR2
set SOMEDIR3=C:\XXX\SOMEDIR3
set PATH=%SOMEDIR1%;%SOMEDIR2%;%SOMEDIR3%;%PATH%
...
The PATH variable got evaluated to:
C:\>path
PATH=C:\FOO\SOMEDIR1;;C:\XXX\SOMEDIR3;C:\FreeDOS\BIN
C:\>
And this double semicolon meant that, for example, when starting FED, the editor returned the following error message:
C:\>fed
Load error: no DPMI - Get csdmpi*b.zip
C:\>
But strangely I can still start all programs in C:\FreeDOS\BIN from any folder. Including CWSDPMI.EXE which is located in C:\FreeDOS\BIN
C:\>cd TEMP
C:\TEMP>CWSDPMI
C:\TEMP>
And after that, once DPMI is loaded, I can also start FED without the no DPMIerror.
So it seems like the program that requires CWSDPMI cannot resolve CWSDPMI if there is a double semicolon in the PATH.
The problem appears to affect all programs that require CWSDPMI. For example, the editor SET shows the same error after a fresh reboot:
C:\>cd APPS\SETEDIT\BIN
C:\APPS\SETEDIT\BIN>e
Load error: no DPMI - Get csdpmi*b.zip
C:\APPS\SETEDIT\BIN>cwsdpmi
C:\APPS\SETEDIT\BIN>e
C:\APPS\SETEDIT\BIN>
If I remove the variable SOMEDIR2 that is not set from the PATH, then everything works as usual again.
...
set DOSDIR=C:\FreeDOS
set PATH=%dosdir%\BIN
set SOMEDIR1=C:\FOO\SOMEDIR1
REM set SOMEDIR2=C:\BAR\SOMEDIR2
set SOMEDIR3=C:\XXX\SOMEDIR3
REM set PATH=%SOMEDIR1%;%SOMEDIR2%;%SOMEDIR3%;%PATH%
set PATH=%SOMEDIR1%;%SOMEDIR3%;%PATH%
...
The now fixed PATH variable got evaluated to this:
C:\>path
PATH=C:\FOO\SOMEDIR1;C:\XXX\SOMEDIR3;C:\FreeDOS\BIN
C:\>
I confirmed this. If CWSDPMI is in the path that's after the double semicolon, it will not run. For example, if my path is
C:\freedos\bin;;C:\apps\fedthen I am able to run FED.But if my path is
C:\apps\fed;;C:\freedos\binthen I cannot run FED. I get:But if I run
cwsdpmifrom the command line, then I can run FED just fine - even if my path isC:\apps\fed;;C:\freedos\binThis is best reported to the CWSDPMI developer, and not here. The website is:
https://sandmann.dotster.com/cwsdpmi/
The link to report new bugs (via email) is:
https://sandmann.dotster.com/cwsdpmi/knownbug.html