INTERTST Version 1.12 (11-20-94) By: Bill Colavecchio THIS PROGRAM IS DISTRIBUTED AS FREEWARE ------------------------- O V E R V I E W ---------------------- INTERTST is a utility program developed to execute interrupts or API calls on a MS-DOS or PC-DOS system and observe the return value of the various general purpose registers. The user has the ability to enter a DOS interrupt or API far call address, set the registers to any value desired, execute the interrupt or API call and see the return value of the registers and the flags set upon returning from the interrupt or API call. When executing a standard BIOS, EMS or DOS interrupt with a function code in the AH register, INTERTST will display what the interrupt function does prior to its execution. Also provided is the ability to toggle between INTERTST and the video screen as well as a shell to execute DOS commands or programs. Some interrupts require the use of a work area to pass or obtain information. INTERTST contains a 1040 byte work ara which is displayed on the lower portion of the screen. The heading of the work area contains the segment and offset (xxxx:xxxx) address of the work area. You can use this work area for interrupts or API Calls by loading the appropriate registers with the segment and offset addresses. INTERTST load the appropriate registers (if the segment address if not set to the WORK AREA) with the work area address for most standard BIOS and DOS interrupt functions. However, for safety sake, it is recommended that the user load these registers before executing the interrupt. ------------------- COMMAND LINE PARAMETERS ------------------- Command Line: INTERTST {/FORCE} {/386} where /FORCE is an optional parameter which will force the execution of any interrupt vector. Use extreme caution when specifying this option. If this option is not specified, certain interrupt vectors can not be executed. See the list of these interrupt vectors in this document. /386 signifies that INTERTST is to display the 386+ 32-bit registers (i.e., EAX, EBC, ECX, etc.) ----------------- NAVIGATING THROUGH INTERTST ---------------- Special Purpose Keys F1 - Help Function F4 - Clear the area where the cursor is set (i.e., INTERRUPT number, REGISTERS or WORK AREA) F5 - Clear ALL of the areas F6 - Toggle between Video Screens F7 - Execute the interrupt specified F8 - DOS Shell F9 - Toggle between API or Interrupt Calls F10 - Terminate INTERTST TAB - Tab to the next field Right Arrow - Tab to the next field Left Arrow - Tab to the preceding field Up Arrow - Tab to the previous line Down Arrow - Tab to the next line PgDn - Page to next page of the WORK AREA PgUp - Page to previous page of the WORK AREA Home - First Page of WORK AREA End - Last Page of WORK AREA Esc - Leave an Area (INTERRUPT, REGISTER, WORK AREA, ASCII) SELECTING AN AREA TO MODIFY There are three separate areas on the INTERTST screen that the user can modify. They are: Area Name Activation Key INTERRUPT/API CALL I REGISTER CONTENTS R WORK AREA Hexidecimal Format W ASCII Format S ----------------------- USING INTERTST ------------------------ Press the activation letter for the area you wish to modify. You can now enter data in that area. To leave the area, press the "Esc" key. When you are ready to execute an Interrupt or API Call, press the F7 key. INTERTST will display the description of the interrupt for standard BIOS and DOS functions and the message "ARE YOU SURE?" will appear in the upper right hand corner of the screen. Press the "Y" key to confirm the the execution of the Interrupt/ API Call or any other key to cancel the execution of the function. The word "EXECUTED" will appear in the upper right hand corner of screen. This signifies that the Interrupt/API Call has completed. The register contents, flags and work area contain the updated information from the requested function. ----------------- WARNINGS! and CAUTIONS! -------------------- (1) The API calls must be used with extreme caution. Branching to an invalid doubleword address will give you unpredictable results and will probably hang your system. Make sure that the API address is to a valid FAR CALL. (2) INTERTST has no way of detecting whether an interrupt vector addresses are valid. Executing uninitialized interrupt vectors will cause unpredictable results and may even hang your system. However, any interrupt vector with a zero segment value will not be executed. (3) Do NOT attempt to execute INTERTST under Microsoft Windows or DesQview. (4) Care must be taken when executing interrupts. This program was written for experienced DOS programmers and should be used by only those who have experience with interrupt calls. In order to minimize the potential system lockups, the following interrupt and function numbers are not executable. INTERRUPT SUB- NO. FUNCTION FUNCTION DESCRIPTION 01 -- -- Single Step 02 -- -- Non-Maskable 03 -- -- Breakpoint 04 -- -- Arithmetic Overflow 05 -- -- Print Screen 06 -- -- Invalid Op-Code 07 -- -- No Math Unit 08 -- -- IRQ0 - System Timer 09 -- -- IRQ1 - Keyboard 0A -- -- IRQ2 - EGA Vert. Trace 0B -- -- IRQ3 - Ser. Port (COM2) 0C -- -- IRQ4 - Ser. Port (COM1) 0D -- -- IRQ5 - Par. Port (LPT2) 0E -- -- IRQ6 - Diskette Inter. 0F -- -- IRQ7 - Par. Port (LPT1) 1B -- -- Ctrl - Break 1C -- -- Timer Tick 1D -- -- Video Parameter Table 1E -- -- Diskette Parameters 1F -- -- Graphics Char. Set 2 21 22 -- Random File Write (FCB) 21 25 -- Set Interrupt Vector 21 26 -- Create PSP 21 28 -- Random Block Write (FCB) 21 29 -- Parse File Name 21 31 -- Terminate, Stay Resident 21 39 -- Create Subdirectory 21 3A -- Delete Subdirectory 21 3D -- Open File (Handle) 21 3E -- Close File (Handle) 21 40 -- Write to File (Handle) 21 41 -- Delete File (Handle) 21 42 -- Move File Pointer 21 44 03 Char. Device Write 21 44 04 Block Driver Read 21 44 05 Block Driver Write 21 48 -- Allocate Memory 21 49 -- Release Memory 21 4A -- Modify Memory Alloc. 21 56 -- Rename File 21 5A -- Create Temporary File 21 5B -- Create File 21 5C -- Set File Access 21 5D -- Set Extended Error 21 65 -- Get Ext. Country Info. 21 66 01 Get Global Page Code 21 67 -- Set Handle Count 21 68 -- Flush Buffer 21 6C -- Extended Open/Create 22 -- -- Terminate Address 23 -- -- Ctrl-C Interrupt Vector 24 -- -- Critical Error Vector 26 -- -- Absolute Disk Write 67 4E -- EMS Page Mapping 70 -- -- Real Time Clock Inter. 71 -- -- IRQ9 - Reserved 72 -- -- IRQ10 - Reserved 73 -- -- IRQ11 - Reserved 74 -- -- IRQ12 - Mouse 75 -- -- IRQ13 - Math Coproc. 76 -- -- IRQ14 - Fixed Disk Ctrlr 77 -- -- IRQ15 - Reserved EF -- -- F0 -- -- FE -- -- FF -- -- If you try to execute one of these interrupts, INTERTST will display the message "EXECUTION OF INTERRUPT IS NOT ALLOWED" unless the FORCE command line parameter is specified. If the FORCE parameter is specified, INTERTST will execute any interrupt vector number. -------------------------- MISCELLANEOUS --------------------- This program was written entirely in Assembler and is released as a freeware. INTERTST requires only 32K of memory to run. Technical Note: INTERTST temporarily replaces INT 00 interrupt vector (divide exception) and INT 06 (Invalid opcode) during its execution. They are restored to their original state at program termination. --------------------- INTERTST ERROR MESSAGES ------------------- (1) "INTERTST Has Detected that it is Running Under DesQview" Description - INTERTST can not run under DesQview. Response - INTERTST program is terminated. (2) "INTERTST Has Detected that it is Running Under Windows" Description - INTERTST can not run under Windows. Response - INTERTST program is terminated. (3) "Incorrect DOS Version. Must Be 3.0 or Greater" Description - DOS Version 3.0 or greater is required for INTERTST to run. Response - INTERTST program is terminated. (4) "INTERTST Can Not Locate the Command Processor" Description - INTERTST could not find the COMSPEC variable in the DOS Environment. Response - INTERTST program is terminated. (5) "INTERTST Must Have 32K of Memory To Run" Description - INTERTST was started with less than 32K of available conventional memory. Response - INTERTST program is terminated. (6) "INTERTST - Invalid Command Line Parameter" Description - INTERTST has detected a command line parameter other than /FORCE or /386. Response - INTERTST program is terminated. (7) "INTERTST Can Not Run with an MDA Monitor or in MDA Mode" Description - INTERTST requires a color monitor. Response - INTERTST program is terminated. (8) "INTERTST Can Not Run in 386 Mode" Description - INTERTST was started with the /386 parameter but the processor is not a 386 or greater. Response - INTERTST program is terminated.