Skip to contentSkip to conversation

experimental LFN support for redirected drives

DISCUSSION Stas Sergeev 2 participants 2 messages Jul 13, 2003

lore
Share & tools
lore
#0 lore raw

Hello.

Quoted 1 line · Bart Oldeman

I put a patch up

Hmm, just wondering, what are those DPMI
changes are intended for?
According to DPMI specs:
---
However, there are three real mode software
interrupts that a DPMI host will always reflect to a protected mode handler, if one is installed:

Int 1CH - ROM BIOS timer tick interrupt Int 23H - DOS Ctrl+C interrupt
Int 24H - DOS critical error interrupt
---

Why are you adding a 0x21 here? Isnt it a direct violation of a specs?

Another hunk to dpmi.c also looks very hackish. What was the idea?

#1 lore raw
Quoted 2 lines · Stas Sergeev

Hmm, just wondering, what are those DPMI changes are intended for?

the reason for

    if (config.lfn && (LWORD(eax) & 0xff00) == 0x7100 &&
        (REG(cs) == ((us *) 0)[(0x21 << 1) + 1]) &&
	(REG(eip) == ((us *) 0)[0x21 << 1])) {
      REG(cs) = BIOSSEG;
      REG(eip) = INT_OFF(0x21);
    }

is a problem with this piece of code:

      if (_LWORD(eax)==0x0300) {
        if (_LO(bx)==0x21)
          D_printf("DPMI: int 0x21 fn %04x\n",LWORD(eax));
	REG(cs) = ((us *) 0)[(_LO(bx) << 1) + 1];
	REG(eip) = ((us *) 0)[_LO(bx) << 1];
      } else {

INT 21 now just executes the DOS int21 and never reaches the DOSEMU revectored int21 code. I don't know if it's safe to transfer to f000:_BL*0x10 for every interrupt. Maybe you do?

Quoted 6 lines

According to DPMI specs:
---
However, there are three real mode software interrupts that a DPMI host will always reflect to a protected mode handler, if one is installed:

Quoted 7 lines

Int 1CH - ROM BIOS timer tick interrupt Int 23H - DOS Ctrl+C interrupt
Int 24H - DOS critical error interrupt
---

Why are you adding a 0x21 here? Isnt it a direct violation of a specs?

that was a wrong try which I forgot to remove.

Bart