Path: utzoo!attcan!uunet!zephyr.ens.tek.com!uw-beaver!cornell!rochester!pt.cs.cmu.edu!b.gp.cs.cmu.edu!Ralf.Brown@B.GP.CS.CMU.EDU From: Ralf.Brown@B.GP.CS.CMU.EDU Newsgroups: comp.os.msdos.programmer Subject: Re: Need info on 286/386 exceptions and int handling under DOS Message-ID: <2715b473@ralf> Date: 12 Oct 90 12:17:55 GMT Sender: ralf@b.gp.cs.cmu.edu Organization: Carnegie Mellon University School of Computer Science Lines: 24 In-Reply-To: <1990Oct11.161231.261@Octopus.COM> In article <1990Oct11.161231.261@Octopus.COM>, stever@Octopus.COM (Steve Resnick ) wrote: }I got all that, so far. The interrupt vector table (in real mode) is located }at 0000:0000. IRQ12's vector should be located at 0000:0030. This is all well }and fine, but there are processor exceptions which map to hardware interrupts. }I cannot find where INT 12 is mapped to an exception. My default BIOS int 12 }handler does not deal with processor exceptions, and my own int 12 handler for }dealing with serial interrupts does not either. Normally, exception 12 (stack }fault exception) will not occur in real mode, unless you have a SP of 1 and }push a word on the stack. Then SP = -1 = FFFFH which is not real good. }What I want to know, is how that gets handled independantly of my serial }interrupts. If you are running a 386 memory manager such as QEMM-386 or 386^MAX, the memory manager gets any CPU exceptions first, and decides whether or not to pass them down to the virtual86-mode program via the real-mode interrupt vector table. BTW, an exception 12 will also occur on a 386 when attempting to access the word at FFFFh in the stack segment (any other segment gets you an exception 13). -- UUCP: {ucbvax,harvard}!cs.cmu.edu!ralf -=- 412-268-3053 (school) -=- FAX: ask ARPA: ralf@cs.cmu.edu BIT: ralf%cs.cmu.edu@CMUCCVMA FIDO: 1:129/3.1 Disclaimer? | I was gratified to be able to answer promptly, and I did. What's that? | I said I didn't know. --Mark Twain