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


------------------------------------------------------- SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media 100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33 Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift. http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285 _______________________________________________ Freedos-kernel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/freedos-kernel

Reply via email to