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.