MRCRequestRec

     The MRCI API compression and decompression services require the
     address of this structure in DS:SI on entry.  It describes what data
     to be processed and where to put the result.

MRCRequestRec
  Offset Size Contents
  ▀▀▀▀▀▀ ▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
   +0      4  pfbSrc       far address of source buffer
   +4      2  wSrcLen      size of source buffer, in bytes
   +6      2  wRes         reserved
   +8      4  pfbDest      address of destination buffer
  +0cH     2  wDestLen     size of destination data or buffer, in bytes
  +0eH     2  wChunkLen    "early-out" chunk size, in bytes
  +10H     4  lIncInfo     used in incremental decompression
           20              size of a MRCRequestRec structure

      pfbSrc  FAR address of source data:
              Compress: Address of data to compress
              Decompress: Address of data to decompress
              Inc. Decompress: FIRST CALL: start of compressed block
                              OTHER CALLS: updated automatically

     wSrcLen  length, in bytes, of source data:
              Compress: Amount of data to compress
              Decompress: ignored (data length is given by wDestLen)
              Inc. Decompress: ignored

     pfbDest  FAR address of destination buffer:
              Compress: Address of buffer to receive compressed data
              Decompress: address if buffer to receive decompressed data
              Inc. Decompress: FIRST CALL: start of dest buffer
                              OTHER CALLS: updated automatically

    wDestLen  length, in bytes, of destination data:
              Compress:  ENTRY: Size of the destination buffer
                        RETURN: Size of the compressed data
              Decompress: Exact size of the uncompressed data (MRCI
                          uses this to know when to stop decompressing)
              Inc. Decompress: FIRST CALL: must be 0
                              OTHER CALLS: desired bytes of uncompressed
                               data.  Take care to avoid asking for more
                               data than was originally compressed!

   wChunkLen  Use for compression performance.  If the MRCI server cannot
              save at least wChunkLen bytes across the length specified in
              wSrcLen, then MRCI returns an MRCI API Error Code of 0004H
              (incompressible data).

              It also provides a means for the server to provide a speed
              optimization:  After compressing for a while, it may notice
              that the remaining uncompressed data will fit within an even-
              multiple of wChunkLen.  In that case, it can store the data
              verbatim or use a simplified compression technique on the
              remaining data.

              DoubleSpace uses a chunk size of 512 (since it allocates disk
              space in sectors).  The Flash File system uses 1-byte chunks
              to minimize sector slack.

    lIncInfo  is used only during Incremental Compression (MRCI Fn 0020H).
               FIRST CALL: set this DWORD to 0.
              OTHER CALLS: this is updated by MRCI; leave it alone.

See Also: MRCI API
          DoubleSpace API
          INT 2fH: Multiplex Interrupt
          DOS Functions
                                    -♦-