VOGONS


Reply 20 of 22, by h-a-l-9000

User metadata
Rank DOSBox Author
Rank
DOSBox Author

> How it manages to not hang on a real PC is puzzling...

Certain INTs unconditionally reenable the interrupts on a real BIOS. This is partially missing in DOSBox.

1+1=10

Reply 21 of 22, by ripsaw8080

User metadata
Rank DOSBox Author
Rank
DOSBox Author

Interesting... so they return with something like STI/RETF 2 instead of IRET? I could hook the INTs and force such a condition to test the game with... which ones?

EDIT: I tried it with INT 13, and it does prevent the hang. A simple TSR that hooks INT 13 and does:

pushf
call oldint13
sti
retf 2

The INT 13 emulation code for the crack handles certain operations, but passes some through to BIOS. The ones passed through could be making up for the handled ones that disable interrupts. I guess a BIOS disassembly could "prove" the theory...