[comp.sys.ibm.pc.hardware] NMI Breakout

dmurdoch@watstat.uwaterloo.ca (Duncan Murdoch) (08/11/90)

In article <1260@gold.GVG.TEK.COM> grege@gold.GVG.TEK.COM (Greg Ebert) writes:
>>
>In the AT, and probably the PC, there is an NMI mask register which allows you
>to disable IO_CHANNEL_CHECK interrupts. 

Yes, it's there in the XT, at least.  And by default, in some BIOS's at least,
it's left disabled.  Lots of languages (MS Fortran I think, old Turbo Pascal,
etc.) forget to enable it, and crash when they cause an exception on
the math coprocessor (which shares the interrupt, for some reason).

>I believe the mask register is in port 70h, bit 7. It's been awhile since I
>did that ASIC for AST Research, which had the NMI register inside. I
>think writing a '1' to this position disables NMI's.

On an XT, writing 80h to port A0h enables it.

Now, for my question:  The current issue of PC Techniques (a new programming
mag, generally pretty good) gives instructions (p. 8) to build a simple
breakout switch, that triggers a NMI by temporarily grounding bus pin A1.
I did it, but get no sign of anything happening, whether NMI is enabled or
not.  (This on a no-name 8086 clone.)  

Can anyone suggest a fix?  What do I need to do to get an NMI?

Duncan Murdoch
dmurdoch@watstat.waterloo.edu

mathrich@mthvax.cs.miami.edu (Rich Winkel) (08/14/90)

In <1990Aug11.033457.12369@maytag.waterloo.edu> dmurdoch@watstat.uwaterloo.ca (Duncan Murdoch) writes:
>Now, for my question:  The current issue of PC Techniques (a new programming
>mag, generally pretty good) gives instructions (p. 8) to build a simple
>breakout switch, that triggers a NMI by temporarily grounding bus pin A1.
>I did it, but get no sign of anything happening, whether NMI is enabled or
>not.  (This on a no-name 8086 clone.)  
>Can anyone suggest a fix?  What do I need to do to get an NMI?
You may need to drive it negative.  Try hooking it through a resister to
a -5V line.  On the XT bus, pin B5 is at -5V.  A 1K resister should do.

Rich