Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!seismo!vrdxhq!tom From: tom@vrdxhq.UUCP (Tom Welsh) Newsgroups: comp.sys.ibm.pc Subject: Interrupting DOS Message-ID: <2409@vrdxhq.UUCP> Date: Thu, 13-Nov-86 13:36:53 EST Article-I.D.: vrdxhq.2409 Posted: Thu Nov 13 13:36:53 1986 Date-Received: Thu, 13-Nov-86 23:43:12 EST Organization: Verdix Corporation, Chantilly, VA Lines: 39 Keywords: Interrupts, reentrant, DOS, SuperKey Some help please ... As many of you may know, DOS is NOT reentrant. In other words, if DOS is busy doing something like writing to disk or printer, then no interrupt routine should attempt to invoke a DOS service, e.g. INT 21H. I found this out by having a program crash. My suspicions were verified by being able to consistenly produce the error. As further "hint", I quote from ADVANCED-MSDOS, from Microsoft Press: "Since the current versions of MS-DOS are not reentrant, the MS-DOS functions should never be called by a hardware interrupt handler during the actual interrupt processing." -- page 216 Fine, I accept all this. Here's what I'm curious about ... SuperKey, which responds to keyboard interrupts, seems to obey this rule. If, while doing nothing, I press ALT-/ to invoke Superkey, it comes up instantly. If I do something like copy a gigantic file (requiring several seconds), and I press ALT-/ as soon as the copy starts, Superkey WAITS until the copy is done before it comes up. HOW DOES IT KNOW at the time of the interrupt that DOS was currently doing something and should not be interrupted? A while ago, someone on the net mentioned a DOS/BIOS service or a flag that could be checked to see if DOS was busy. I can't find such a thing in the Superkey code. Any clues? And, on another note, I found an INT 28H in the Superkey code. What does this do? All my documentation says its reserved for DOS. Thanks in advance for information. - Tom Welsh