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: COMMAND LINE PARAMETERS ------------------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 F4 - F5 F6 F7 F8 F9 F10 TAB Right Arrow Left Arrow Up Arrow Down Arrow PgDn PgUp Home End Esc - Help Function Clear the area where the cursor is set (i.e., INTERRUPT number, REGISTERS or WORK AREA) Clear ALL of the areas Toggle between Video Screens Execute the interrupt specified DOS Shell Toggle between API or Interrupt Calls Terminate INTERTST Tab to the next field Tab to the next field Tab to the preceding field Tab to the previous line Tab to the next line Page to next page of the WORK AREA Page to previous page of the WORK AREA First Page of WORK AREA Last Page of WORK AREA 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 REGISTER CONTENTS WORK AREA Hexidecimal Format ASCII Format I R W S ----------------------- USING INTERTST -----------------------Press the activation letter for the area You can now enter data in that area. To press the "Esc" key. When you are ready Interrupt or API Call, press the F7 key. display the description of the interrupt you wish to modify. leave the area, to execute an INTERTST will 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 NO. FUNCTION SUBFUNCTION DESCRIPTION 01 02 03 04 ----- ----- Single Step Non-Maskable Breakpoint Arithmetic 05 06 07 08 ----- ----- Print Screen Invalid Op-Code No Math Unit IRQ0 - System 09 0A --- --- IRQ1 - Keyboard IRQ2 - EGA Vert. Overflow Timer Trace 0B -- -- IRQ3 - Ser. Port 0C -- -- IRQ4 - Ser. Port 0D -- -- IRQ5 - Par. Port 0E -- -- IRQ6 - Diskette 0F -- -- IRQ7 - Par. Port 1B 1C 1D ---- ---- Ctrl - Break Timer Tick Video Parameter 1E -- -- Diskette 1F -- -- Graphics Char. 21 22 -- Random File Write 21 25 -- Set Interrupt 21 21 26 28 --- Create PSP Random Block 21 21 29 31 --- Parse File Name Terminate, Stay 21 39 -- Create 21 3A -- Delete 21 3D -- Open File 21 3E -- Close File 21 40 -- Write to File 21 41 -- Delete File 21 21 42 44 -03 Move File Pointer Char. Device 21 21 44 44 04 05 Block Driver Read Block Driver 21 21 21 48 49 4A ---- Allocate Memory Release Memory Modify Memory 21 21 56 5A --- Rename File Create Temporary 21 5B -- Create File (COM2) (COM1) (LPT2) Inter. (LPT1) Table Parameters Set 2 (FCB) Vector Write (FCB) Resident Subdirectory Subdirectory (Handle) (Handle) (Handle) (Handle) Write Write Alloc. File 21 21 5C 5D --- Set File Access Set Extended 21 65 -- Get Ext. Country 21 66 01 Get Global Page 21 21 21 67 68 6C ---- Set Handle Count Flush Buffer Extended 22 23 --- --- Terminate Address Ctrl-C Interrupt 24 -- -- Critical Error 26 -- -- Absolute Disk 67 70 4E -- --- EMS Page Mapping Real Time Clock 71 72 73 74 75 ------ ------ IRQ9 IRQ10 IRQ11 IRQ12 IRQ13 76 -- -- IRQ14 - Fixed 77 EF F0 FE FF ------ ------ IRQ15 - Reserved Error Info. Code Open/Create Vector Vector Write Inter. - Reserved Reserved Reserved Mouse Math Coproc. Disk Ctrlr 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 Response (6) - INTERTST was started with less than 32K of available conventional memory. INTERTST program is terminated. "INTERTST - Invalid Command Line Parameter" Description - INTERTST has detected a command line parameter Response (7) other than /FORCE or /386. - INTERTST program is terminated. "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.