* Re: DPMI: Interrupt vector overwritten
[not found] <no.id>
@ 2002-10-18 19:53 ` John Elliott
2002-12-16 19:19 ` increase base memory John Elliott
2003-03-18 20:31 ` Access denied after write to named pipe John Elliott
2 siblings, 0 replies; 7+ messages in thread
From: John Elliott @ 2002-10-18 19:53 UTC (permalink / raw)
To: Stas Sergeev; +Cc: linux-msdos
: What exactly interrupt from this range do
: you want to execute?
INT 0xEF, the GEM API.
--
John Elliott
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: increase base memory
[not found] <no.id>
2002-10-18 19:53 ` DPMI: Interrupt vector overwritten John Elliott
@ 2002-12-16 19:19 ` John Elliott
2002-12-16 20:01 ` Bart Oldeman
2003-03-18 20:31 ` Access denied after write to named pipe John Elliott
2 siblings, 1 reply; 7+ messages in thread
From: John Elliott @ 2002-12-16 19:19 UTC (permalink / raw)
To: linux-msdos
: Ralf Brown memory.lst states:
: --------V-MA0000000--------------------------
: MEM A000h:0000h - EGA+ GRAPHICS BUFFER
: Size: 65536 BYTEs
:
: So it was always there.
Well, at least since the EGA. I suppose if DOSEMU emulated an MDA or a
CGA, then it would make sense to use the memory up to B000:0 or B800:0
respectively. On an original XT, it was even possible to do this in
hardware:
<ftp://ftp.simtel.net/pub/simtelnet/msdos/info/896k-mem.txt>
: QEMM have a program called "vidram", which allows to use that region as a
: base memory by the cost of not being able to diplay graphics, but vidram
: will not work under dosemu because qemm itself doesn't work under dosemu.
The same thing is true of DRDOS (the equivalent program is called MEMMAX).
--------m-2F12FFBX0006-----------------------
INT 2F U - DR DOS 6+, Novell DOS 7+ - EMM386.EXE - VIDEO MEMORY SPACE
CONTROL
AX = 12FFh
BX = 0006h
DX = 0000h
CX = function
0000h get status of video memory space (MEMMAX /V)
0001h map memory into video memory space (MEMMAX +V)
0002h unmap memory from video memory space (MEMMAX -V)
: Increasing the base memory above 640Kb is definitely the bad idea, as it
: is used very rarely even in a pure DOS and will cost you the inability to
: display graphics.
Except in the CGA modes :-)
--
John Elliott
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: increase base memory
2002-12-16 19:19 ` increase base memory John Elliott
@ 2002-12-16 20:01 ` Bart Oldeman
0 siblings, 0 replies; 7+ messages in thread
From: Bart Oldeman @ 2002-12-16 20:01 UTC (permalink / raw)
To: linux-msdos
On Mon, 16 Dec 2002, John Elliott wrote:
> Well, at least since the EGA. I suppose if DOSEMU emulated an MDA or a
> CGA, then it would make sense to use the memory up to B000:0 or B800:0
> respectively. On an original XT, it was even possible to do this in
> hardware:
> <ftp://ftp.simtel.net/pub/simtelnet/msdos/info/896k-mem.txt>
right, and this is also true if you run console DOSEMU and lie to it that
you use a CGA graphics card, ie. $_video = "cga", and remove that 640k
check in the parser. Caveat emptor -- your video BIOS might NOT like
this, weird things my happen, and I haven't tried it.
as for xdosemu: it uses vgaemu and I don't think that can be switched off
easily. vgaemu pretty much assumes that it can r/w protect all pages from
0xa000:0 up to 0xc000:0.
Now if you run dosemu in terminal mode you could go up to 736k (b800), and
if you run dosemu in "dumb" mode, well, f000 is even possible, ie., 960k,
if you disable EMS too.
Bart
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Access denied after write to named pipe
[not found] <no.id>
2002-10-18 19:53 ` DPMI: Interrupt vector overwritten John Elliott
2002-12-16 19:19 ` increase base memory John Elliott
@ 2003-03-18 20:31 ` John Elliott
2 siblings, 0 replies; 7+ messages in thread
From: John Elliott @ 2003-03-18 20:31 UTC (permalink / raw)
To: Marek Kriz; +Cc: linux-msdos
:
: When I try create named pipe (to some directory which is 'visible' from
: dosemu) in RDONLY mode, so after command
: ECHO HELLO > NAMED.PIP
: I got error message Access denied. Where is the problem? Permissions of
: pipe are 0777, umask is 000, run under user ROOT.
I suspect that echo may be trying to open the pipe in Read+Write mode;
I get the same effect with dosemu-1.0.1.0 and DRDOS 6. But if I write a
C program to write to the pipe:
#include <unixio.h>
#include <string.h>
#define O_WRONLY 1
int main(int argc, char **argv)
{
int n;
int fd = open(argv[1], O_WRONLY);
for (n = 2; n < argc; n++)
{
write(fd, argv[n], strlen(argv[n]));
write(fd, " ", 1);
}
close(fd);
return 0;
}
- then it works.
------------- http://www.seasip.demon.co.uk/index.html --------------------
John Elliott |BLOODNOK: "But why have you got such a long face?"
|SEAGOON: "Heavy dentures, Sir!" - The Goon Show
:-------------------------------------------------------------------------)
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: DPMI: Interrupt vector overwritten
@ 2002-10-17 3:51 Stas Sergeev
2002-10-17 5:08 ` Bart Oldeman
0 siblings, 1 reply; 7+ messages in thread
From: Stas Sergeev @ 2002-10-17 3:51 UTC (permalink / raw)
To: linux-msdos; +Cc: John Elliott
Hello.
John Elliott wrote:
> They cause
> dosemu to abort if DPMI function 0x300 is used to call interrupt 0xE0
> or higher;
What exactly interrupt from this range do
you want to execute?
> is this correct,
Of course it is not. If your program installs
the realmode handler for that ints, it will
just crash dosemu with that code.
It was even worse when this was done not only
for 0x300, but also for 0x301 and 0x302, so it
crashed dosemu *randomly* because bx is meaningless
for those.
I moved it under "if (inumber == 0x300)" rather
than remove, because it was a hard times and it
was nearly impossible to get included something
more than an absolutely trivial patch. Removal
patch would just have been ignored most likely,
so the compromiss was to put it under "if".
Now, as the devel branch is in progress, the
things are much better.
> and if so, why is it doing it?
For no reasons, feel free to remove it if it hurts
you, which is still strange. Why do you need that
vectors?
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: DPMI: Interrupt vector overwritten
2002-10-17 3:51 DPMI: Interrupt vector overwritten Stas Sergeev
@ 2002-10-17 5:08 ` Bart Oldeman
0 siblings, 0 replies; 7+ messages in thread
From: Bart Oldeman @ 2002-10-17 5:08 UTC (permalink / raw)
To: Stas Sergeev; +Cc: linux-msdos, John Elliott
On Thu, 17 Oct 2002, Stas Sergeev wrote:
> John Elliott wrote:
> > They cause
> > dosemu to abort if DPMI function 0x300 is used to call interrupt 0xE0
> > or higher;
> What exactly interrupt from this range do
> you want to execute?
>
> > is this correct,
> Of course it is not. If your program installs
> the realmode handler for that ints, it will
> just crash dosemu with that code.
if ((_LO(bx) >= 0xe0) && (REG(cs) < 0xf000)) { /* avoid hardreboot!! */
I should add that this test is more bogus than it used to be because these
high vectors are initialized to 0 in development versions of DOSEMU and no
longer point to the DOSEMU BIOS interrupt trampoline.
It looks a lot like something that was added to do some custom sanity
checking while debugging some DOS program, but the person forgot to remove
it later.
The comment is puzzling: hardreboot of what? Linux?
Bart
^ permalink raw reply [flat|nested] 7+ messages in thread
* DPMI: Interrupt vector overwritten
@ 2002-10-16 22:07 John Elliott
0 siblings, 0 replies; 7+ messages in thread
From: John Elliott @ 2002-10-16 22:07 UTC (permalink / raw)
To: linux-msdos
These lines come from /src/dosext/dpmi/dpmi.c, line 1328 or so. They cause
dosemu to abort if DPMI function 0x300 is used to call interrupt 0xE0 or
higher; is this correct, and if so, why is it doing it?
if (inumber==0x0300) {
REG(cs) = ((us *) 0)[(_LO(bx) << 1) + 1];
REG(eip) = ((us *) 0)[_LO(bx) << 1];
if ((_LO(bx) >= 0xe0) && (REG(cs) < 0xf000)) { /* avoid hardreboot
!! */
D_printf("DPMI: Interrupt vector overwritten!");
leavedos(99);
}
--
John Elliott
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2003-03-18 20:31 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <no.id>
2002-10-18 19:53 ` DPMI: Interrupt vector overwritten John Elliott
2002-12-16 19:19 ` increase base memory John Elliott
2002-12-16 20:01 ` Bart Oldeman
2003-03-18 20:31 ` Access denied after write to named pipe John Elliott
2002-10-17 3:51 DPMI: Interrupt vector overwritten Stas Sergeev
2002-10-17 5:08 ` Bart Oldeman
-- strict thread matches above, loose matches on Subject: below --
2002-10-16 22:07 John Elliott
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox