I think the same.
Considering how poorly some DOS programs parse switches aka parameters (like /?), it's likely that this is the issue.
I assume some DOS programs not only expect a certain set of values, but also in a specific order.
Here are some examples (SET BLASTER = A220 I5 D1 T1)
In worst case:
It opens c:\config.sys manually and looks for "SET BLASTER =".
If found, it will load the whole line as an input.
It will check for 15th, 16th, 17th numeric characters (220) and load them as input (value not string) for port address.
It will check the 19th numeric character (5) and load them as input (value not string) for IRQ.
It will check the 22th numeric character (1) and load them as input (value not string) for DMA port.
-> If it has a minimum amount of intelligence, it will filter out the space characters first.
Or, different, pre-defined versions of the blaster line are being proccessed after each other (with different spacing).
The detection "code" will restart each time, if the character is not a number (this causes an error in the compiler's runtime):
SET BLASTER= A220 I5 D1 T1
SET BLASTER =A220 I5 D1 T1
SET BLASTER=A220 I5 D1 T1
For each version, a different offset is used.
Edit: In the very worst case, the whole mess will be case-sensitve, too! 😉
So better not use "set BLASTER =" or "Set Blaster ="..
In a bad case:
It asks DOS for the environment variable for "SET BLASTER =" and gets "A220 I5 D1 T6" reported back.
Then it parses (if we can call it that way) A. It looks for a value that follows the letter/string A, and finds numeric value 220.
Then it parses I. It looks for a value that follows I, and finds value5.
Then it parses D. It looks for a value that follows D, and finds value1.
Then it stops and ignores the rest.
Normal case:
It retrieves the data for the "SET BLASTER =" environment variable and checks for A, I, D, H, P and T.
The parsing works no matter which order is used. Extra spaces don't cause confusion to the parser, either.
It will then check the numeric values for these letters one after another and put them into the appropiate inputs.
Then, the initialization routine uses them directly or the values are being passed to another program.
Anyway, these are just some examples to help understanding how things can work.
"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel
//My video channel//