www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1995/05/28/13:19:17

Date: Sun, 28 May 1995 18:56:54 +0300
From: eliz AT is DOT elta DOT co DOT il (Eli Zaretskii)
To: smr AT cs DOT murdoch DOT edu DOT au
Subject: Re: DJGPP crashes
Cc: djgpp AT sun DOT soe DOT clarkson DOT edu

> GO32=2rm 2r1
>
> gcc hello.c
>
> Unsupported INT 0x06
> Invalid Opcode at eip=bcc7

I'm now quite sure that the first line above is the culprit of all your
problems.  (I'm not 100% sure because I don't have access to a system
with EGA and a monochrome monitor, but I'm close to 100%.) 

First, the ``2rm'' parameter is for systems with TWO monitors, where you
want to redirect your stderr to the (second) monochrome monitor when
debugging programs which grab the screen (like graphics, or programs which
write all over the screen like Info).  AFAIK, it isn't required at all
if you only have a single monitor, be it monochrome or otherwise.  If
you put ``2rm'' into GO32 variable, as far as I could see from the go32
sources, it will assume without checking that you indeed have a second
monitor and will write to the B000 segment.  I suspect that in your case,
the video buffer is at B800, so you are really writing to the great void...

Second, even if you had two monitors, you should do it thusly:

	set go32=2rm 1r2

i.e., redirect stderr (stream 2) to monochrome monitor, then redirect stdout
(stream 1) to the same place stderr is redirected.  The way you did it, stderr
gets redirected to two different places: the monochrome monitor and the device
where stdout goes.

So much for the theory.  As for practice, I put ``2rm 2r1'' into my GO32 variable
and immediately got ``Exception #6'' exactly as you did.  (In my case, the QEMM
memory manager catched this before go32 has a chance to see it, but you work with
no memory manager installed, so I think this is as close as I can get.)

Bottom line: remove that ``2rm 2r1'' from your GO32 variable and try again.  I think
you'll never miss it: go32 detects what your video mode is at start-up and sets up
screen address appropriately.  If not, then try playing with the ``mono'' parameter.
It is explained in the FAQ list.

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019