Interrupt Monitor 1.0 (Shareware version) Interrupt Monitor 1.5 (Registered version) Copyright (c) 1994-1995, Jos‚ M. L. Lopes OVERVIEW: Let's start with a simple question... Which one of the 256 DOS interruptions is called more often ? Experts will say, most likely, that interrupt 8 (System Timer, or IRQ 0), which is called 18.2 times per second (once every 55 ms), is the one that DOS uses most of the time. Knowing that INT 8 also calls INT 1Ch (User Time Tick), we may say that we have two interrupts that DOS uses very often. That's the theory. Using Interrupt Monitor, you will see that the facts aren't quite like this: in fact, on a 486 DX based system, for the amout of time that INT 8 (and INT 1Ch) require to be called 1,000 (one thousand) times, several unsuspected interrupts, like INT 16h (Keyboard Services), INT 2Ah (Microsoft Network) or even INT 28h (DOS Idle), will be called more than 1,000,000 (one million) times each one. WHAT'S INTERRUPT MONITOR ? INTMON is a powerful program that alows you to trace calls to DOS interruptions, or to trace calls to functions of a specific DOS interruption, generating for each case statistics, both to the screen and to a logfile, of the number of times that each specific interrupt (or function) is called. System requirements: INTMON will run on any IBM/PC compatible, operating under DOS 2.0 or later, with at least 64 Kb of free memory, and 8086/88 or later CPU. USING INTERRUPT MONITOR: INTMON will load itself to memory and become a TSR program tracing INT 21h (DOS Services) calls if called from the DOS prompt. To trace other interruption or even all interruptions, INTMON must be called with the appropriate command syntax, that is, for the shareware version: INTMON [/A] [/Inn] [/L] INTMON with no arguments will place Interrupt Monitor on memory tracing INT 21h function calls (this function requires about 2 Kb of memory); INTMON also with no arguments, displays statistics for the traced interrupt or function, and unloads INTMON from memory; INTMON /A places INTMON in memory tracing all interrupts (this function requires around 7 Kb of memory); INTMON /Inn , where 'nn' is the interruption number (hexadecimal format), places INTMON in memory tracing calls to functions of the chosen interrupt (this function requires the same amount of memory used to trace INT 21h), e.g., INTMON /I2f loads INTMON into memory and traces INT 2Fh (Multiplex); INTMON /L displays statistics without unloading INTMON from memory. The registered version of Interrupt Monitor uses a slightly different command syntax: INTMON [/A] [/Inn[,ff]] [/R] [/U] The major differences is that: INTMON with no arguments, if INTMON is resident, displays statistics so far and keeps INTMON in memory; INTMON /Inn,ff , where 'nn' is the interruption number (hexadecimal format), places INTMON in memory tracing calls to functions of the chosen interrupt (this function requires the same amount of memory used to trace INT 21h), e.g., INTMON /I2f loads INTMON into memory and traces INT 2Fh (Multiplex), and 'ff' is the function number (hexadecimal format), and places INTMON in memory tracing calls to services of the chosen interrupt and function (this function requires the same amount of memory used to trace all interrupts), e.g., INTMON /I10,11 loads INTMON into memory and traces INT 10h (Video Services), Function 11h (Character Generator). INTMON /R resets statistics without unloading INTMON; INTMON /U unloads INTMON and displays statistics. INTERRUPT MONITOR ERROR MESSAGES: "Cannot load into high memory!" means that you tried to load INTMON into memory using LH, LOADHIGH or HILOAD command. To remove Interrupt Monitor from high memory would be necessary for the program to keep a record of the previous state of all interrupts before loading, therefore needing more free memory to run. That method, also, would not prevent a TSR program to be placed anywhere in memory and hang the system after INTMON was removed. "Cannot remove: a TSR has been loaded into memory!" means that you must remove all residente programs placed in memory after Interrupt Monitor before trying to unload INTMON. If the message appers even when you are sure that no program has been loaded after INTMON, then either INTMON data area has become corrupt, or some TSR has not completely removed itself from memory (try using something like Quarterdeck's Manifest, Central Point Software Memory Info, Symatec's Corporation SysInfo or TurboPower Software Mapmem to see if some TSR has left his environment segment in memory after unloading). "Overflow" means that the limit of 65,535,000 calls to a specific interrupted or function has been reached. Try to upgrade to the registered version. COMMON PROBLEMS: The shareware version of Interrupt Monitor does not handle expanded memory (EMS), and tries not to see if an interrupt is already initiallized. Therefore some programs may hang the system, reboot the computer, or simply refuse to run if INTMON is memory resident. Some examples: GameTools 3.10: Refuses to run (INTMON must be placed in memory after GameTools, not before). GeoWorks Ensamble: Reboots the computer (tries to use interruptions F1h to FFh, which aren't initialized normally by DOS). InfoPlus 1.56: Hangs the computer (tries to call interrupts not initialized). Microsoft Windows 3.10: Refuses to run (does not detect EMS). Quarterdeck Manifest: May hang the computer (bug in EMS detection). LOGFILE: INTMON 1.3, (c) 1994, Jos‚ M. L. Lopes. Interrupt call statistics: 00h -> 0 | 01h -> 31 | 02h -> 0 | 03h -> 0 | 04h -> 0 | 05h -> 0 | 06h -> 0 | 07h -> 0 | 08h -> 392098 | 09h -> 19245 | 0Ah -> 12 | 0Bh -> 0 | 0Ch -> 0 | 0Dh -> 2 | 0Eh -> 1123 | 0Fh -> 0 | 10h -> 1514606 | 11h -> 98 | 12h -> 68 | 13h -> 146560 | 14h -> 8 | 15h -> 449737 | 16h -> 372580886 | 17h -> 4 | 18h -> 0 | 19h -> 0 | 1Ah -> 4863496 | 1Bh -> 4 | 1Ch -> 392008 | 1Dh -> 0 | 1Eh -> 0 | 1Fh -> 0 | 20h -> 44 | 21h -> 4360462 | 22h -> 0 | 23h -> 0 | 24h -> 0 | 25h -> 4640 | 26h -> 1892 | 27h -> 4 | 28h -> 113268873 | 29h -> 597490 | 2Ah -> 104765278 | 2Bh -> 0 | 2Ch -> 0 | 2Dh -> 512 | 2Eh -> 0 | 2Fh -> 6186028 | 30h -> 0 | 31h -> 0 | 32h -> 0 | 33h -> 5292618 | 34h -> 0 | 35h -> 0 | 36h -> 0 | 37h -> 0 | 38h -> 0 | 39h -> 0 | 3Ah -> 0 | 3Bh -> 0 | 3Ch -> 0 | 3Dh -> 0 | 3Eh -> 0 | 3Fh -> 0 | 40h -> 1132 | 41h -> 0 | 42h -> 10 | 43h -> 0 | 44h -> 0 | 45h -> 0 | 46h -> 0 | 47h -> 0 | 48h -> 0 | 49h -> 0 | 4Ah -> 0 | 4Bh -> 2 | 4Ch -> 0 | 4Dh -> 0 | 4Eh -> 0 | 4Fh -> 2 | 50h -> 0 | 51h -> 0 | 52h -> 0 | 53h -> 0 | 54h -> 0 | 55h -> 0 | 56h -> 0 | 57h -> 0 | 58h -> 0 | 59h -> 0 | 5Ah -> 0 | 5Bh -> 0 | 5Ch -> 6 | 5Dh -> 0 | 5Eh -> 0 | 5Fh -> 0 | 60h -> 0 | 61h -> 0 | 62h -> 0 | 63h -> 0 | 64h -> 0 | 65h -> 0 | 66h -> 0 | 67h -> 847984 | 68h -> 6 | 69h -> 0 | 6Ah -> 0 | 6Bh -> 0 | 6Ch -> 0 | 6Dh -> 0 | 6Eh -> 0 | 6Fh -> 0 | 70h -> 18071 | 71h -> 12 | 72h -> 0 | 73h -> 0 | 74h -> 0 | 75h -> 0 | 76h -> 208862 | 77h -> 0 | 78h -> 0 | 79h -> 0 | 7Ah -> 0 | 7Bh -> 0 | 7Ch -> 0 | 7Dh -> 0 | 7Eh -> 58 | 7Fh -> 0 | 80h -> 0 | 81h -> 0 | 82h -> 0 | 83h -> 0 | 84h -> 0 | 85h -> 0 | 86h -> 0 | 87h -> 0 | 88h -> 0 | 89h -> 0 | 8Ah -> 0 | 8Bh -> 0 | 8Ch -> 0 | 8Dh -> 0 | 8Eh -> 0 | 8Fh -> 0 | 90h -> 0 | 91h -> 0 | 92h -> 0 | 93h -> 0 | 94h -> 0 | 95h -> 0 | 96h -> 0 | 97h -> 0 | 98h -> 0 | 99h -> 0 | 9Ah -> 0 | 9Bh -> 0 | 9Ch -> 0 | 9Dh -> 0 | 9Eh -> 0 | 9Fh -> 0 | A0h -> 0 | A1h -> 0 | A2h -> 0 | A3h -> 0 | A4h -> 0 | A5h -> 0 | A6h -> 0 | A7h -> 0 | A8h -> 0 | A9h -> 0 | AAh -> 0 | ABh -> 0 | ACh -> 0 | ADh -> 0 | AEh -> 0 | AFh -> 0 | B0h -> 0 | B1h -> 0 | B2h -> 0 | B3h -> 0 | B4h -> 0 | B5h -> 0 | B6h -> 0 | B7h -> 0 | B8h -> 0 | B9h -> 0 | BAh -> 0 | BBh -> 0 | BCh -> 0 | BDh -> 0 | BEh -> 0 | BFh -> 0 | C0h -> 0 | C1h -> 0 | C2h -> 0 | C3h -> 0 | C4h -> 0 | C5h -> 0 | C6h -> 0 | C7h -> 0 | C8h -> 0 | C9h -> 0 | CAh -> 0 | CBh -> 0 | CCh -> 0 | CDh -> 0 | CEh -> 0 | CFh -> 0 | D0h -> 0 | D1h -> 0 | D2h -> 0 | D3h -> 0 | D4h -> 0 | D5h -> 0 | D6h -> 0 | D7h -> 0 | D8h -> 0 | D9h -> 0 | DAh -> 0 | DBh -> 0 | DCh -> 0 | DDh -> 0 | DEh -> 0 | DFh -> 0 | E0h -> 0 | E1h -> 0 | E2h -> 0 | E3h -> 0 | E4h -> 0 | E5h -> 0 | E6h -> 0 | E7h -> 0 | E8h -> 0 | E9h -> 0 | EAh -> 0 | EBh -> 0 | ECh -> 0 | EDh -> 0 | EEh -> 0 | EFh -> 0 | F0h -> 0 | F1h -> 0 | F2h -> 0 | F3h -> 0 | F4h -> 0 | F5h -> 0 | F6h -> 0 | F7h -> 0 | F8h -> 0 | F9h -> 0 | FAh -> 0 | FBh -> 0 | FCh -> 0 | FDh -> 0 | FEh -> 0 | FFh -> 0 | REGISTERING: Unregistered version of Interrupt Monitor handles 'only' space for 65,535,000 calls to a specific interrupt or function (it's a big number, but for a 486 DX2 machine, some of the figures may overflow after 5 to 10 minutes of normal operation at the DOS prompt). The registered version uses an enhanced calculation routine, handling 4,294,967,295 calls to interrupts or functions, and even a Pentium based system has to work very hard to overflow that figure. The registered version of Interrupt Monitor also checks to see if an interrupt is already initialized (either seeing if it's not pointed to 0:0, or checking interruption code to see if it is valid). This procedure allows programs like InfoPlus to work properly. Registered version of Interrupt Monitor moves also the EMS driver ID, along with the INT 67h routine, allowing programs like GeoWorks, Manifest or Windows to work properly. In conclusion, the registered version has also been optimized to be the smallest possible, either in disk or in memory, and even if the number of functions performed is larger, the amount of memory required is lesser than the memory required for the shareware version. ------------------------ // ----------------------- Interrupt Monitor 1.5 order form SPECIAL OFFER: If you register this software before 1995 Oct. 15, you will only pay US $10 (or 1700 PTE). After 1995 Oct. 16 this price will be US $15 (or 2500 PTE). To receive your registered version of the latest Interrupt Monitor, send a cheque or money order payable to: Jos‚ M. L. Lopes Rua de S. Miguel N§ 18 - 3§ 1100 Lisboa PORTUGAL Fill out and print the form below. Include it with your letter. =============================================================================== FROM: Name: ___________________________________________________________ [Company]: ______________________________________________________ Reg. Name: _______________________________________________________ [Used to register your software, 30 characters max.] Address: ________________________________________________________ City: ______________________________ State: _____________________ Country: ____________________________ Postal Code: ______________ Phone: ________________________ Fax: ____________________________ Where did you obtain INTMON shareware from? _____________________ _________________________________________________________ What do you intend to use INTMON for? ___________________________ _________________________________________________________ _________________________________________________________ Have you tried INTMON shareware program, and if so, how did you find him? _________________________________________________ _________________________________________________________ Future product suggestions: _____________________________________ _________________________________________________________ _________________________________________________________ ===============================================================================