|
From: Luchezar G. <lu...@co...> - 2004-08-13 05:37:59
|
Hallo Bart, >> case 0x34: >> lr.ES = FP_SEG(&InDOS); >> lr.BX = FP_SEG(&InDOS); >> break; >> >> What could be wrong here? > > Copy and paste is broken where you are. Not copy and paste, my head is broken because I typed it by hand! ;-) > with > lr.BX = FP_OFF(&InDOS); > it would be correct. But that's what it does in my source so... Of course it's FP_OFF, not FP_SEG for lr.BX - I just mistyped it :-( >> Stack usage during the call? > > that's what I suspected. Eric suggested (in a private email) to make > int21/ah=34 reentrant like we did for 25 and 35. However than it would > completely execute on the user stack and that stack seemed to have been > the problem (only 30 words?). How do you know that the user stack is just 30 words? > Since you said commenting out calls to the int2a handler didn't help... > The only other extra stack user is the macro for 386 registers. Perhaps > compiling for <386 or pushing/popping these on the kernel stack would > work around that. I tried a 80186 kernel but the result is the same. I don't know how to implement the other suggestion but because of the test results so far I'm not sure if the problem is indeed the stack. Regards, Lucho |