[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
INT 2F - CiriSOFT Spanish University of Valladolid TSR's Interface
        AH = xx (dynamically assigned based upon a search for a multiplex
                 number from C0h to FFh which doesn't answer installed)
        AL = 00h installation check
        ES:DI = 1492h:1992h
Return: AL = 00h not installed
             01h not installed, not OK to install
             FFh installed; and if ES:DI was 1492h:1992h on entry, ES:DI will
                 point to author_name_ver table (see below)
        AH = FFh
Note:   this interface permits advanced communication with TSRs: it is possible
          to make a generic unistall utility, advanced TSR relocator programs
          in order to fit fragmented memory areas, etc.
See also: INT 2D"AMIS",INT 2F"Compuscience"

Format of author_name_ver table:
Offset  Size    Description
 -16    WORD    segment in which really begins the TSR code (CS in programs
                with PSP, XMS upper memory segment if installed as UMB...)
 -14    WORD    offset in which really begins the TSR code (frecuently 100h
                in *.COM programs and 0 in upper memory TSR's).
 -12    WORD    memory used by TSR (in paragraphs). Knowing the memory area
                used by TSR is possible to determine if hooked vectors are
                still pointing it (and if it is safe the unistall process).
 -10    BYTE    characteristics byte
                bits 0-2: 000 normal program (with PSP)
                          001 upper XMS memory block (needed HIMEM.SYS function
                              to free memory when unistalling)
                          010 device driver (*.SYS)
                          011 device driver in EXE format
                          1xx others (reserved)
                bits 3-6 reserved
                bit 7 set if extra_table defined and supported
 -9     BYTE    number of multiplex entry used (redefinition available). Note
                that the TSR must be use THIS variable in it's INT 2Fh handler.
 -8     WORD    offset to vector_area table (see bellow)
 -6     WORD    offset to extra_area table (see bit 7 in offset -10 and bellow)
 -4   4 BYTEs   "*##*"  (to insure that the TSR verify this agreement)
 00h    var     "AUTHOR:PROGRAM_NAME:VERSION",0  (variable length, this area
                is used in order to determine if the TSR is already resident
                and it's version code; the ':' char is used as delimiter)

Format of vector_area table:
Offset  Size    Description
 -1     BYTE    number of vectors intercepted by TSR
 00h    BYTE    first vector number
 01h    DWORD   first vector pointer before installing the TSR
 05h    BYTE    second vector number
 06h    DWORD   second vector pointer before installing the TSR
  .       .     (and so on) Note that the TSR must be use THIS variables to
                invoke previous interrupt handler routines.

Format of extra_area table (needed only to improve relocation feature):
Offset  Size    Description
 00h    WORD    offset to external_ctrl table (0 if not supported)
 02h    WORD    reserved for future use (0)

Format of external_ctrl table:
Offset  Size    Description
 00h    BYTE    bit 0: TSR is relocatable (no absolute segment references)
 01h    WORD    offset to a variable which can activate/inhibit the TSR
 ---And if bit 0 in offset 00h is off:
 03h    DWORD   pointer to ASCIIZ with pathname to executable file which
                supports /SR parameter (silent installation & inhibit)
 07h    DWORD   pointer to first variable to initialize on the copy reloaded
                from the previous TSR still resident
 0Bh    DWORD   pointer to last variable (all variables packed in one block)

This page created by ng2html v1.05, the Norton guide to HTML conversion utility. Written by Dave Pearson