                           MUSIC MODULE DECOMPRESSOR
                                  TSR VERSION
                                 version  1.34
                      
                           Technical Information only
                                        

If you're seeking non-technical information on MMTSR, please read the 
appropriate section in MMCMP.DOC.

When loaded, MMTSR intercepts the "open file" (AH=3dh) and "close file" 
(AH=3eh) functions of INT 21h, unless it is turned off (MMTSR off).  It also 
provides a few interrupts to help other program to deal with MMTSR.  Those 
functions may be called whether MMTSR is actived or not.  They those are 
called via INT 21h, with AX=437xh.  As a convention, EVERY function, unless 
explicitely specified, returns with:

no error:
        CF cleared
        EAX = 4352697ah ('ziRC')

an error occured:
        CF set
        EAX = Error message (undefined yet)

So this is returned in addition to what is specified within functions 
descriptions below.  Actually, there's no error handling, since there's *no 
potential* error source in those functions.  However, because of eventual 
implementations, don't assume that CF will always be cleared after a 
function call.  

Note:   - Every registers are preserved, except to return values.  
        - Flags are NOT preserved.  
        
Here are the functions:


* Function 0 - MMTSR installation check

    AX = 4370h

    Return:
        DX = bit field of supported functions.
                Every bit of DX, from 0 to F, is set if the function AX=437xh
                is supported.  Otherwise, it is cleared.  A bit test should
                be done before calling other functions.                

    Note:
        If MMTSR is not installed, INT 21h will probably return with CF set, 
        and an invalid function error code (AL=01h)  The way to know if MMTSR 
        is installed is to check if CF is cleared AND EAX = 4352697ah ('ziRC').


* Function 1 - Enable MMTSR
        
    AX = 4371h

    Return:
        nothing

    Enables MMTSR, whether MMTSR was already enabled or not.  MMTSR calls this
    function on the "MMTSR on" command.


* Function 2 - Disable MMTSR
        
    AX = 4372h
        
    Return:
        nothing

    Disables MMTSR, whether MMTSR was already disabled or not.  When disabled,
    MMTSR doesn't intercept any INT 21h function, but 437xh functions.  Every
    other functions are sent directly to the old interrupt handler. MMTSR calls
    this function on the "MMTSR off" command.


* Function 3 - Get general MMTSR information

    AX = 4373h

    Return:
        CX = version : xyyz -> x: major, yy: minor, z: revision (or Beta) 
                         z = 0: nothing
                         z = 1 to 0Eh : a to n
                         z = 0Fh: Beta
                         this is an HEX number, and no conversion is done.
                             Ex.: 121fh -> version 1.21 Beta
        
        DX = bit field information:
            bit 0: MMTSR is active (0/1 = No/Yes)
                1: 'High' memory type used by MMCMP (0/1 = EMS/XMS)        
                2: INT 21h has been hooked by another program after MMTSR has
                   hooked it. (0/1 = No/Yes)
                3 - 15: 0. reserved for future implememtations.
        
        ES:BX -> Entry point of MMTSR's INT 21h handler, not necessarily the 
                 current INT 21h entry point.  ES is also the segment where 
                 MMTSR is loaded into memory (MMTSR's CS).


 
 -------------------------

For any comment, questions, or information, see the section "Contacting the 
author" in MMCMP.DOC.
                     

