255:
and an NMI button. Pressing the button transferred control to the software in the peripheral's ROM, allowing the suspended program to be saved to disk (very useful for tape-based games with no disk support, but also for saving games in progress), screenshots to be saved or printed, or values in
50:
An NMI is often used when response time is critical or when an interrupt should never be disabled during normal system operation. Such uses include reporting non-recoverable hardware errors, system debugging and profiling, and handling of special cases like system resets.
85:
that transfers control to a special monitor program. From this program, a developer can inspect the machine's memory and examine the internal state of the program at the instant of its interruption. This also allows the debugging or diagnosing of computers which appear
292:. Because these NMIs (often referred to as "vblank interrupts") occur at frequent, regular intervals, code that manipulates game graphics and audio is often executed inside of the NMI handler routine. Clearing the 7th bit of the PPU's
58:
typically use NMIs to handle non-recoverable errors which need immediate attention. Therefore, such interrupts should not be masked in the normal operation of the system. These errors include non-recoverable internal system
247:
Debugging NMIs have also been used by devices that allow leisure users and gamers to manipulate running programs. Devices which added a button to generate an NMI, such as
Romantic Robot's
128:, an NMI was triggered if a parity error was detected in system memory, or reported by an external device. In either case, the PC would display an error message and halt. Some later
132:
used an NMI to conceal the hardware differences from that of a standard PC. On such computers, an NMI would be generated when a program attempted to access incompatible hardware. A
98:
In older architectures, NMIs were used for interrupts which were typically never disabled because of the required response time. They were hidden signals. Examples include the
47:, the non-maskable interrupt (NMI), despite having the highest priority among interrupts, can be prevented from occurring through the use of an interrupt mask.
154:
used the NMI line to permit a "warm start" if the system had locked up. Typically, this would restore the control registers to known good values stored in
308:
117:
when used in the IBM PC or its compatibles (even though Intel recommended connecting it to a normal interrupt), and the Low
Battery signal on the
445:
263:
servers) provide a physical button specifically for this purpose. Other machines may expose this functionality via an expansion card.
335:
376:
355:
285:
449:
289:
397:"How to generate a complete crash dump file or a kernel crash dump file by using an NMI on a Windows-based system"
314:
43:. Some NMIs may be masked, but only by using proprietary methods specific to the particular NMI. With regard to
81:
Programmers typically use debugging NMIs to diagnose and fix faulty code. In such cases, an NMI can execute an
251:, were a popular accessory for 1980s 8-bit and 16-bit home computers. These peripherals had a small amount of
266:
187:
179:
159:
140:
125:
68:
55:
498:
225:
206:
167:
470:
39:
in the system cannot ignore. It typically occurs to signal attention for non-recoverable hardware
503:
453:
296:
194:
183:
170:-series CPU, but the reset would take place only if the NMI handler routine in ROM detected that
139:
would then translate the program's request to match the hardware that was actually present. The
382:
330:
325:
136:
129:
82:
421:
259:
Not all computers provide a mechanism for triggering NMIs; however, many machines (typically
252:
229:
205:
to the processor's NMI line, which was part of the means by which software emulation of the
155:
87:
221:
191:
492:
202:
158:, without destroying whatever data that the user might currently have loaded. On the
151:
256:
memory to be manipulated—a cheating technique to acquire extra lives, for example.
233:
198:
74:
On some systems, a computer user can trigger an NMI through hardware and software
278:
110:
103:
99:
107:
64:
400:
320:
260:
248:
237:
75:
36:
32:
20:
396:
270:
241:
118:
60:
71:
errors, and data corruption detected on system and peripheral buses.
240:
allowed the use of an NMI to cause a system to either break into a
274:
210:
144:
44:
40:
220:
Debugging NMIs have appeared in a number of forms, including the
166:
key was hooked up directly or indirectly to the NMI line on the
133:
114:
378:
Intel® 64 and IA-32 Architectures
Software Developer's Manual
299:
disables vblank interrupts, and setting it enables them.
244:, or dump the contents of memory to disk and reboot.
8:
63:errors, corruption in system memory such as
309:Advanced Programmable Interrupt Controller
281:featured an NMI-producing "magic button".
375:"8.7.2: MS-DOS* Compatibility Sub-mode".
16:Hardware interrupt that cannot be ignored
347:
232:workstations. With the introduction of
178:was struck (this combination being the
78:interfaces and system reset buttons.
7:
288:, an NMI is generated during each
228:, and certain key combinations on
14:
446:"Dump Switch Support for Windows"
336:Programmable Interrupt Controller
471:"CGA Mode CRTC initialization"
217:button for this same purpose.
174:was also being held down when
1:
286:Nintendo Entertainment System
475:Amstrad PPC Technical Manual
452:. 2001-12-04. Archived from
147:is a better way to do this.
37:interrupt-masking techniques
450:Microsoft Developer Network
385:. June 2013. pp. 8–31.
520:
290:vertical blanking interval
315:Inter-processor interrupt
267:Miles Gordon Technology
422:"PCI Dump Switch Card"
56:computer architectures
25:non-maskable interrupt
226:"programmers' button"
213:'s 8-bit line used a
162:8-bit machines, the
209:was accomplished.
190:also connected the
184:three finger salute
424:. Connect Tech Inc
356:"Interrupt Levels"
102:controller on the
383:Intel Corporation
331:Interrupt latency
326:Interrupt handler
277:products for the
137:interrupt handler
83:interrupt handler
511:
485:
483:
482:
464:
462:
461:
433:
432:
430:
429:
418:
412:
411:
409:
408:
393:
387:
386:
372:
366:
365:
363:
362:
352:
295:
216:
177:
173:
165:
124:In the original
31:) is a hardware
519:
518:
514:
513:
512:
510:
509:
508:
489:
488:
480:
478:
469:
459:
457:
444:
441:
436:
427:
425:
420:
419:
415:
406:
404:
395:
394:
390:
381:. Vol. 1.
374:
373:
369:
360:
358:
354:
353:
349:
345:
305:
293:
222:Apple Macintosh
214:
175:
171:
163:
96:
17:
12:
11:
5:
517:
515:
507:
506:
501:
491:
490:
487:
486:
466:
465:
440:
439:External links
437:
435:
434:
413:
388:
367:
346:
344:
341:
340:
339:
333:
328:
323:
318:
312:
304:
301:
197:CIA #2 in the
192:MOS Technology
152:home computers
95:
92:
35:that standard
15:
13:
10:
9:
6:
4:
3:
2:
516:
505:
502:
500:
497:
496:
494:
477:. seasip.info
476:
472:
468:
467:
456:on 2012-10-26
455:
451:
447:
443:
442:
438:
423:
417:
414:
402:
398:
392:
389:
384:
380:
379:
371:
368:
357:
351:
348:
342:
337:
334:
332:
329:
327:
324:
322:
319:
316:
313:
310:
307:
306:
302:
300:
298:
291:
287:
282:
280:
276:
272:
268:
264:
262:
257:
254:
250:
245:
243:
239:
235:
231:
227:
223:
218:
212:
208:
204:
200:
196:
193:
189:
185:
182:version of a
181:
169:
161:
157:
153:
148:
146:
142:
138:
135:
131:
127:
122:
120:
116:
112:
109:
105:
101:
93:
91:
89:
84:
79:
77:
72:
70:
66:
62:
57:
52:
48:
46:
42:
38:
34:
30:
26:
22:
479:. Retrieved
474:
458:. Retrieved
454:the original
426:. Retrieved
416:
405:. Retrieved
403:. 2011-06-08
391:
377:
370:
359:. Retrieved
350:
283:
265:
258:
246:
234:Windows 2000
219:
215:SYSTEM RESET
149:
123:
97:
80:
73:
53:
49:
28:
24:
18:
279:ZX Spectrum
150:Some 8-bit
111:coprocessor
104:Amstrad PCW
100:floppy disk
499:Interrupts
493:Categories
481:2013-08-31
460:2013-08-31
428:2013-08-31
407:2013-08-31
361:2023-11-30
504:Debugging
401:Microsoft
321:Interrupt
261:rackmount
249:Multiface
238:Microsoft
207:6551 ACIA
188:Commodore
180:Commodore
160:Commodore
130:PC clones
76:debugging
33:interrupt
21:computing
303:See also
297:register
271:DISCiPLE
242:debugger
172:RUN/STOP
284:On the
176:RESTORE
164:RESTORE
143:in the
119:HP 95LX
113:on the
94:History
61:chipset
54:Modern
311:(APIC)
294:$ 2000
126:IBM PC
106:, the
65:parity
41:errors
343:Notes
338:(PIC)
317:(IPI)
211:Atari
145:386SL
45:SPARC
273:and
203:C128
201:and
195:6526
186:).
168:6502
134:BIOS
108:8087
88:hung
67:and
23:, a
269:'s
253:ROM
230:Sun
224:'s
199:C64
156:ROM
141:SMM
115:x86
69:ECC
29:NMI
19:In
495::
473:.
448:.
399:.
275:+D
236:,
121:.
90:.
484:.
463:.
431:.
410:.
364:.
27:(
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.