VOGONS


First post, by Estron

User metadata
Rank Newbie
Rank
Newbie

Hello,

Testing some of my DOS software, I noticed one program that called the DOS-C/FreeDOS service Interrupt 21.33FF always hanging the Box. (Without "boot"ing some different OS into the Box.)
Looking into the stderr.txt and the dos.cpp source file I now know that the Box terminates on unknown subfunctions of function 33h, and on some other unknown/unhandled DOS functions.

Although this "feature" may help to make DOSBox more secure against bugs in DOS programs or using the unhandled functions, I suggest to remove the E_Exit call and just report an error to the DOS program. (Setting the Carry flag and filling al with FFh.)

Estron

Reply 2 of 3, by Estron

User metadata
Rank Newbie
Rank
Newbie
wd wrote:

Doubt any game uses that. Why is that function called with 0xff anyways?
Is that freedos specific? (drdos had something there iirc)

It's actually the FreeDOS or DOS-C (the FreeDOS kernel) "Get ASCIIZ version string" service, not available for other DOS and a working installation check for FreeDOS. (I just test if it did set the dx.)
The other is Int21.4452 or something like this, and gives the CP/M BDOS version of the DR-DOS thingy you're running on. (Or it just isn't supported on other OS.) But if you wanted to know this: No, the RBI list doesn't show any other DOS software having something on Int21.33FF.

But my suggestion wasn't just for this single service, i.e. something like "Print character" may be used by games but terminates DOSBox as well. (See dos.cpp, I mean those cases or defaults invoking E_Exit on unhandled services.)

Reply 3 of 3, by Qbix

User metadata
Rank DOSBox Author
Rank
DOSBox Author

well we put those exits there to find a game that uses it.
So far no one has popped up.

Water flows down the stream
How to ask questions the smart way!