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
-♦-