Metropoli BBS
VIEWER: mrci.doc MODE: BINARY (HEX)
==============================================================================================================================================
OFFSET    00 01 02 03 04 05 06 07  08 09 0A 0B 0C 0D 0E 0F  10 11 12 13 14 15 16 17  18 19 1A 1B 1C 1D 1E 1F
----------------------------------------------------------------------------------------------------------------------------------------------
00000000  DB A5 2D 00 21 40 09 04  00 00 00 00 2D 00 00 00  00 00 00 00 00 00 00 00  80 01 00 00 A0 EC 00 00  Ñ-.!@....-...........Ç..á..
00000020  64 1F 01 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 95 EA 00 00  00 00 00 00 89 00 00 00  d.................òΩ......ë...
00000040  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 18 01 00 92 01 00 18  ..........................Æ.
00000060  01 00 92 01 92 19 01 00  00 00 92 19 01 00 00 00  92 19 01 00 00 00 92 19  01 00 00 00 92 19 01 00  .ÆÆ...Æ...Æ...Æ...Æ.
00000080  0E 00 A0 19 01 00 62 01  02 1B 01 00 00 00 02 1B  01 00 00 00 02 1B 01 00  00 00 02 1B 01 00 10 00  .á.b...........
000000A0  12 1B 01 00 16 00 28 1B  01 00 70 00 02 1B 01 00  00 00 98 1B 01 00 80 00  18 1C 01 00 6C 01 84 1D  ..(.p....ÿ.Ç..lä
000000C0  01 00 3A 00 BE 1D 01 00  00 00 BE 1D 01 00 00 00  BE 1D 01 00 00 00 BE 1D  01 00 11 00 CF 1D 01 00  .:.............
000000E0  0A 00 D9 1D 01 00 08 00  E1 1D 01 00 02 00 E3 1D  01 00 00 00 E3 1D 01 00  00 00 E3 1D 01 00 24 00  ...ß..π...π...π.$.
00000100  07 1E 01 00 A0 00 A7 1E  01 00 00 00 A7 1E 01 00  1E 00 C5 1E 01 00 34 00  F9 1E 01 00 6B 00 C5 1E  .á.º...º...4..k.
00000120  01 00 00 00 92 19 01 00  00 00 00 00 00 00 00 00  C5 1E 01 00 00 00 C5 1E  01 00 00 00 00 00 77 00  ...Æ.................w.
00000140  7A 00 03 00 12 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  z.............................
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
00000180  0D 0A 0D 0A 0D 0A 0D 0A  0D 0A 0D 0A 0D 0A 0D 0A  4D 69 63 72 6F 73 6F 66  74 20 52 65 61 6C 2D 74  Microsoft Real-t
000001A0  69 6D 65 20 43 6F 6D 70  72 65 73 73 69 6F 6E 20  49 6E 74 65 72 66 61 63  65 20 53 70 65 63 69 66  ime Compression Interface Specif
000001C0  69 63 61 74 69 6F 6E 0D  0A 56 65 72 73 69 6F 6E  20 31 2E 30 30 2E 30 39  0D 0A 41 70 72 69 6C 20  icationVersion 1.00.09April 
000001E0  33 30 2C 20 31 39 39 33  0D 0A 0D 0A 0D 0A 0D 0A  0D 0A 0D 0A 0D 0A 43 6F  6E 74 65 6E 74 73 0D 0A  30, 1993Contents
00000200  13 54 4F 43 20 5C 6F 14  31 2E 20 57 68 61 74 20  69 73 20 4D 52 43 49 3F  09 32 0D 0A 32 2E 20 57  TOC \o1. What is MRCI?22. W
00000220  68 61 74 20 4D 52 43 49  20 64 65 66 69 6E 65 73  09 32 0D 0A 33 2E 20 48  6F 77 20 74 6F 20 69 6D  hat MRCI defines23. How to im
00000240  70 6C 65 6D 65 6E 74 20  4D 52 43 49 09 32 0D 0A  34 2E 20 4F 70 65 72 61  74 69 6E 67 20 53 79 73  plement MRCI24. Operating Sys
00000260  74 65 6D 20 53 75 70 70  6F 72 74 09 33 0D 0A 35  2E 20 4F 76 65 72 76 69  65 77 20 6F 66 20 4D 52  tem Support35. Overview of MR
00000280  43 49 20 53 65 72 76 69  63 65 73 09 33 0D 0A 36  2E 20 4D 52 43 49 20 49  6E 74 65 72 72 75 70 74  CI Services36. MRCI Interrupt
000002A0  09 34 0D 0A 37 2E 20 4D  52 43 49 20 44 65 66 69  6E 69 74 69 6F 6E 73 09  34 0D 0A 38 2E 20 4D 52  47. MRCI Definitions48. MR
000002C0  43 49 20 53 79 73 74 65  6D 20 43 6C 69 65 6E 74  20 45 78 61 6D 70 6C 65  09 31 32 0D 0A 39 2E 20  CI System Client Example129. 
000002E0  4D 52 43 49 20 53 65 72  76 65 72 20 45 78 61 6D  70 6C 65 09 31 35 0D 0A  15 0D 0A 0D 0A 0D 0A 0D  MRCI Server Example15§
00000300  0A 0D 0A 0D 0A 0D 0A 0D  0A 0D 0A 0D 0A 0D 0A 0D  0A 0D 0A 0D 0A 0D 0A 0D  0A 0D 0A 0D 0A 0D 0A 0D  
00000320  0A 0D 0A 0D 0A A9 20 31  39 39 32 2D 31 39 39 33  2C 20 4D 69 63 72 6F 73  6F 66 74 20 43 6F 72 70   1992-1993, Microsoft Corp
00000340  6F 72 61 74 69 6F 6E 0D  0A 0C 13 61 75 74 6F 6E  75 6D 6C 67 6C 20 15 20  57 68 61 74 20 69 73 20  orationautonumlgl § What is 
00000360  4D 52 43 49 3F 0D 0A 4D  52 43 49 20 28 70 72 6F  6E 6F 75 6E 63 65 64 20  22 4D 65 72 63 69 22 29  MRCI?MRCI (pronounced "Merci")
00000380  20 69 73 20 74 68 65 20  4D 69 63 72 6F 73 6F 66  74 20 52 65 61 6C 2D 74  69 6D 65 20 43 6F 6D 70   is the Microsoft Real-time Comp
000003A0  72 65 73 73 69 6F 6E 20  49 6E 74 65 72 66 61 63  65 2C 20 61 20 73 6F 66  74 77 61 72 65 20 69 6E  ression Interface, a software in
000003C0  74 65 72 66 61 63 65 20  64 65 66 69 6E 69 74 69  6F 6E 20 74 68 61 74 20  61 6C 6C 6F 77 73 20 61  terface definition that allows a
000003E0  20 4D 52 43 49 20 63 6C  69 65 6E 74 20 74 6F 20  72 65 71 75 65 73 74 20  63 6F 6D 70 72 65 73 73   MRCI client to request compress
00000400  69 6F 6E 20 73 65 72 76  69 63 65 73 20 66 72 6F  6D 20 61 20 4D 52 43 49  20 73 65 72 76 65 72 20  ion services from a MRCI server 
00000420  74 68 61 74 20 73 75 70  70 6F 72 74 73 20 74 68  65 20 4D 69 63 72 6F 73  6F 66 74 20 52 65 61 6C  that supports the Microsoft Real
00000440  2D 74 69 6D 65 20 43 6F  6D 70 72 65 73 73 69 6F  6E 20 46 6F 72 6D 61 74  20 28 4D 52 43 46 29 2E  -time Compression Format (MRCF).
00000460  20 20 41 20 4D 52 43 49  20 73 65 72 76 65 72 20  6D 61 79 20 69 6D 70 6C  65 6D 65 6E 74 20 73 75    A MRCI server may implement su
00000480  70 70 6F 72 74 20 66 6F  72 20 4D 52 43 46 20 63  6F 6D 70 72 65 73 73 69  6F 6E 20 61 6E 64 20 64  pport for MRCF compression and d
000004A0  65 63 6F 6D 70 72 65 73  73 69 6F 6E 20 65 69 74  68 65 72 20 66 75 6C 6C  79 20 69 6E 20 73 6F 66  ecompression either fully in sof
000004C0  74 77 61 72 65 2C 20 6F  72 20 77 69 74 68 20 70  61 72 74 69 61 6C 20 6F  72 20 63 6F 6D 70 6C 65  tware, or with partial or comple
000004E0  74 65 20 68 61 72 64 77  61 72 65 20 61 73 73 69  73 74 61 6E 63 65 2E 20  20 54 6F 64 61 79 2C 20  te hardware assistance.  Today, 
00000500  4D 52 43 49 20 73 65 72  76 65 72 73 20 65 78 69  73 74 20 74 6F 74 61 6C  6C 79 20 69 6E 20 73 6F  MRCI servers exist totally in so
00000520  66 74 77 61 72 65 20 28  66 6F 72 20 65 78 61 6D  70 6C 65 2C 20 74 68 65  20 4D 69 63 72 6F 73 6F  ftware (for example, the Microso
00000540  66 74 20 44 6F 75 62 6C  65 53 70 61 63 65 20 63  6F 6D 70 72 65 73 73 65  64 20 66 69 6C 65 20 73  ft DoubleSpace compressed file s
00000560  79 73 74 65 6D 20 69 6E  63 6C 75 64 65 73 20 61  20 73 6F 66 74 77 61 72  65 20 4D 52 43 49 20 73  ystem includes a software MRCI s
00000580  65 72 76 65 72 29 2C 20  62 75 74 20 69 6E 20 74  68 65 20 66 75 74 75 72  65 20 68 61 72 64 77 61  erver), but in the future hardwa
000005A0  72 65 2D 62 61 73 65 64  20 4D 52 43 49 20 73 65  72 76 65 72 73 20 77 69  6C 6C 20 62 65 20 63 6F  re-based MRCI servers will be co
000005C0  6D 6D 6F 6E 70 6C 61 63  65 2E 0D 0A 0D 0A 4D 52  43 49 20 68 61 73 20 74  77 6F 20 70 75 72 70 6F  mmonplace.MRCI has two purpo
000005E0  73 65 73 3A 0D 0A 31 29  09 54 6F 20 64 65 66 69  6E 65 20 73 74 61 6E 64  61 72 64 2C 20 73 79 73  ses:1)To define standard, sys
00000600  74 65 6D 2D 6C 65 76 65  6C 2C 20 63 6F 6D 70 72  65 73 73 2D 64 65 63 6F  6D 70 72 65 73 73 20 73  tem-level, compress-decompress s
00000620  65 72 76 69 63 65 73 20  74 68 61 74 20 6D 61 79  20 62 65 20 75 73 65 64  20 62 79 20 49 53 56 73  ervices that may be used by ISVs
00000640  2C 20 69 6E 64 65 70 65  6E 64 65 6E 74 20 6F 66  20 74 68 65 20 69 6D 70  6C 65 6D 65 6E 74 61 74  , independent of the implementat
00000660  69 6F 6E 20 6F 66 20 74  68 6F 73 65 20 73 65 72  76 69 63 65 73 2E 0D 0A  32 29 09 54 6F 20 64 65  ion of those services.2)To de
00000680  66 69 6E 65 20 61 20 73  74 61 6E 64 61 72 64 20  77 61 79 20 66 6F 72 20  49 48 56 73 20 61 6E 64  fine a standard way for IHVs and
000006A0  20 50 43 20 6D 61 6E 75  66 61 63 74 75 72 65 72  73 20 74 6F 20 69 6D 70  6C 65 6D 65 6E 74 20 64   PC manufacturers to implement d
000006C0  65 64 69 63 61 74 65 64  20 63 6F 6D 70 72 65 73  73 69 6F 6E 20 68 61 72  64 77 61 72 65 2E 0D 0A  edicated compression hardware.
000006E0  0D 0A 4E 6F 74 65 20 74  68 61 74 20 4D 52 43 49  20 64 65 66 69 6E 65 73  20 61 20 73 74 61 6E 64  Note that MRCI defines a stand
00000700  61 72 64 20 66 6F 72 20  6C 6F 73 73 6C 65 73 73  20 63 6F 6D 70 72 65 73  73 69 6F 6E 2C 20 77 68  ard for lossless compression, wh
00000720  69 63 68 20 69 73 20 64  69 66 66 65 72 65 6E 74  20 66 72 6F 6D 20 74 68  65 20 6C 6F 73 73 79 20  ich is different from the lossy 
00000740  63 6F 6D 70 72 65 73 73  69 6F 6E 20 75 73 65 64  20 66 6F 72 20 70 69 63  74 6F 72 69 61 6C 20 61  compression used for pictorial a
00000760  6E 64 20 76 69 64 65 6F  20 69 6D 61 67 65 73 20  61 6E 64 20 64 65 66 69  6E 65 64 20 69 6E 20 73  nd video images and defined in s
00000780  74 61 6E 64 61 72 64 73  20 73 75 63 68 20 61 73  20 4A 50 45 47 20 61 6E  64 20 4D 50 45 47 2E 20  tandards such as JPEG and MPEG. 
000007A0  20 4C 6F 73 73 6C 65 73  73 20 63 6F 6D 70 72 65  73 73 69 6F 6E 20 69 73  20 75 73 65 66 75 6C 20   Lossless compression is useful 
000007C0  66 6F 72 20 6D 61 6E 79  20 6F 70 65 72 61 74 69  6E 67 20 73 79 73 74 65  6D 20 61 6E 64 20 61 70  for many operating system and ap
000007E0  70 6C 69 63 61 74 69 6F  6E 20 66 75 6E 63 74 69  6F 6E 73 2C 20 65 73 70  65 63 69 61 6C 6C 79 20  plication functions, especially 
00000800  77 68 65 72 65 20 74 68  65 20 74 79 70 65 20 6F  66 20 64 61 74 61 20 69  73 20 75 6E 6B 6E 6F 77  where the type of data is unknow
00000820  6E 2C 20 61 6E 64 20 68  65 6E 63 65 20 63 61 6E  6E 6F 74 20 62 65 6E 65  66 69 74 20 66 72 6F 6D  n, and hence cannot benefit from
00000840  20 64 61 74 61 20 74 79  70 65 2D 73 70 65 63 69  66 69 63 20 61 6C 67 6F  72 69 74 68 6D 73 2E 20   data type-specific algorithms. 
00000860  20 49 74 73 20 62 65 6E  65 66 69 74 73 20 69 6E  63 6C 75 64 65 3A 0D 0A  13 53 59 4D 42 4F 4C 20   Its benefits include:SYMBOL 
00000880  31 38 33 20 5C 66 20 22  53 79 6D 62 6F 6C 22 20  5C 73 20 31 30 20 5C 68  15 09 49 6E 63 72 65 61  183 \f "Symbol" \s 10 \h§Increa
000008A0  73 69 6E 67 20 74 68 65  20 65 66 66 65 63 74 69  76 65 20 73 74 6F 72 61  67 65 20 63 61 70 61 63  sing the effective storage capac
000008C0  69 74 79 20 6F 66 20 6D  65 64 69 61 0D 0A 13 53  59 4D 42 4F 4C 20 31 38  33 20 5C 66 20 22 53 79  ity of mediaSYMBOL 183 \f "Sy
000008E0  6D 62 6F 6C 22 20 5C 73  20 31 30 20 5C 68 15 09  4D 61 78 69 6D 69 7A 69  6E 67 20 74 68 65 20 65  mbol" \s 10 \h§Maximizing the e
00000900  66 66 65 63 74 69 76 65  20 64 61 74 61 20 62 61  6E 64 77 69 64 74 68 20  62 65 74 77 65 65 6E 20  ffective data bandwidth between 
00000920  74 77 6F 20 63 6F 6D 70  75 74 65 72 73 0D 0A 13  53 59 4D 42 4F 4C 20 31  38 33 20 5C 66 20 22 53  two computersSYMBOL 183 \f "S
00000940  79 6D 62 6F 6C 22 20 5C  73 20 31 30 20 5C 68 15  09 4D 61 78 69 6D 69 7A  69 6E 67 20 74 68 65 20  ymbol" \s 10 \h§Maximizing the 
00000960  65 66 66 65 63 74 69 76  65 20 64 61 74 61 20 62  61 6E 64 77 69 64 74 68  20 62 65 74 77 65 65 6E  effective data bandwidth between
00000980  20 61 20 63 6F 6D 70 75  74 65 72 20 61 6E 64 20  61 20 73 74 6F 72 61 67  65 20 64 65 76 69 63 65   a computer and a storage device
000009A0  2E 0D 0A 0D 0A 4D 52 43  49 20 69 73 20 63 75 72  72 65 6E 74 6C 79 20 75  73 65 64 20 62 79 20 74  .MRCI is currently used by t
000009C0  68 65 20 4D 69 63 72 6F  73 6F 66 74 20 44 6F 75  62 6C 65 53 70 61 63 65  20 63 6F 6D 70 72 65 73  he Microsoft DoubleSpace compres
000009E0  73 65 64 20 66 69 6C 65  20 73 79 73 74 65 6D 2C  20 74 68 65 20 4D 69 63  72 6F 73 6F 66 74 20 46  sed file system, the Microsoft F
00000A00  6C 61 73 68 20 46 69 6C  65 20 53 79 73 74 65 6D  2C 20 61 6E 64 20 74 68  65 20 4D 69 63 72 6F 73  lash File System, and the Micros
00000A20  6F 66 74 20 42 61 63 6B  75 70 20 70 72 6F 67 72  61 6D 20 69 6E 20 4D 53  2D 44 4F 53 20 36 2E 0D  oft Backup program in MS-DOS 6.
00000A40  0A 0D 0A 53 69 6E 63 65  20 4D 52 43 49 20 64 65  66 69 6E 65 73 20 61 6E  20 69 6E 74 65 72 66 61  Since MRCI defines an interfa
00000A60  63 65 20 73 74 61 6E 64  61 72 64 20 74 68 61 74  20 61 6C 6C 6F 77 73 20  66 6F 72 20 68 61 72 64  ce standard that allows for hard
00000A80  77 61 72 65 20 69 6D 70  6C 65 6D 65 6E 74 61 74  69 6F 6E 73 2C 20 69 74  20 69 73 20 69 6D 70 6F  ware implementations, it is impo
00000AA0  72 74 61 6E 74 20 74 6F  20 6E 6F 74 65 20 74 68  65 20 61 64 76 61 6E 74  61 67 65 73 20 74 68 61  rtant to note the advantages tha
00000AC0  74 20 63 6F 6D 70 72 65  73 73 69 6F 6E 2D 64 65  63 6F 6D 70 72 65 73 73  69 6F 6E 20 68 61 72 64  t compression-decompression hard
00000AE0  77 61 72 65 20 68 61 73  20 6F 76 65 72 20 63 6F  6D 70 72 65 73 73 69 6F  6E 2D 64 65 63 6F 6D 70  ware has over compression-decomp
00000B00  72 65 73 73 69 6F 6E 20  73 6F 66 74 77 61 72 65  3A 0D 0A 13 53 59 4D 42  4F 4C 20 31 38 33 20 5C  ression software:SYMBOL 183 \
00000B20  66 20 22 53 79 6D 62 6F  6C 22 20 5C 73 20 31 30  20 5C 68 15 09 50 65 72  66 6F 72 6D 61 6E 63 65  f "Symbol" \s 10 \h§Performance
00000B40  3A 20 20 54 69 67 68 74  6C 79 2D 69 6E 74 65 67  72 61 74 65 64 20 68 61  72 64 77 61 72 65 20 28  :  Tightly-integrated hardware (
00000B60  6F 6E 20 74 68 65 20 6C  6F 63 61 6C 20 62 75 73  2C 20 66 6F 72 20 65 78  61 6D 70 6C 65 29 20 77  on the local bus, for example) w
00000B80  69 6C 6C 20 69 6D 70 72  6F 76 65 20 70 65 72 66  6F 72 6D 61 6E 63 65 2C  20 62 75 74 20 75 6E 74  ill improve performance, but unt
00000BA0  69 6C 20 74 68 65 72 65  20 61 72 65 20 61 63 74  75 61 6C 20 69 6D 70 6C  65 6D 65 6E 74 61 74 69  il there are actual implementati
00000BC0  6F 6E 73 20 69 74 20 69  73 20 64 69 66 66 69 63  75 6C 74 20 74 6F 20 70  69 6E 70 6F 69 6E 74 20  ons it is difficult to pinpoint 
00000BE0  74 68 65 20 6D 61 67 6E  69 74 75 64 65 20 6F 66  20 69 6D 70 72 6F 76 65  6D 65 6E 74 2E 0D 0A 13  the magnitude of improvement.
00000C00  53 59 4D 42 4F 4C 20 31  38 33 20 5C 66 20 22 53  79 6D 62 6F 6C 22 20 5C  73 20 31 30 20 5C 68 15  SYMBOL 183 \f "Symbol" \s 10 \h§
00000C20  09 4D 75 6C 74 69 74 61  73 6B 69 6E 67 20 70 65  72 66 6F 72 6D 61 6E 63  65 3A 20 20 57 68 65 6E  Multitasking performance:  When
00000C40  20 75 73 65 64 20 62 79  20 61 20 6D 75 6C 74 69  74 68 72 65 61 64 65 64  20 6F 70 65 72 61 74 69   used by a multithreaded operati
00000C60  6E 67 20 73 79 73 74 65  6D 20 73 75 63 68 20 61  73 20 57 69 6E 64 6F 77  73 20 4E 54 2C 20 74 68  ng system such as Windows NT, th
00000C80  65 20 68 61 72 64 77 61  72 65 20 69 73 20 65 66  66 65 63 74 69 76 65 6C  79 20 61 20 68 69 67 68  e hardware is effectively a high
00000CA0  6C 79 20 73 70 65 63 69  61 6C 69 7A 65 64 20 73  65 63 6F 6E 64 20 43 50  55 20 74 68 61 74 20 66  ly specialized second CPU that f
00000CC0  72 65 65 73 20 75 70 20  74 68 65 20 6D 61 69 6E  20 43 50 55 20 74 6F 20  65 78 65 63 75 74 65 20  rees up the main CPU to execute 
00000CE0  6F 74 68 65 72 20 74 68  72 65 61 64 73 20 6E 6F  74 20 72 65 71 75 65 73  74 69 6E 67 20 63 6F 6D  other threads not requesting com
00000D00  70 72 65 73 73 69 6F 6E  20 73 65 72 76 69 63 65  73 2E 0D 0A 13 53 59 4D  42 4F 4C 20 31 38 33 20  pression services.SYMBOL 183 
00000D20  5C 66 20 22 53 79 6D 62  6F 6C 22 20 5C 73 20 31  30 20 5C 68 15 09 42 65  74 74 65 72 20 63 6F 6D  \f "Symbol" \s 10 \h§Better com
00000D40  70 72 65 73 73 69 6F 6E  3A 20 20 42 79 20 75 73  69 6E 67 20 6D 6F 72 65  20 69 6E 74 65 6E 73 69  pression:  By using more intensi
00000D60  76 65 20 6D 61 74 63 68  69 6E 67 20 61 6C 67 6F  72 69 74 68 6D 73 2C 20  68 61 72 64 77 61 72 65  ve matching algorithms, hardware
00000D80  20 63 61 6E 20 69 6D 70  72 6F 76 65 20 63 6F 6D  70 72 65 73 73 69 6F 6E  20 72 61 74 69 6F 73 20   can improve compression ratios 
00000DA0  31 30 25 2D 31 35 25 20  6F 76 65 72 20 73 6F 66  74 77 61 72 65 2C 20 62  75 74 20 77 69 74 68 6F  10%-15% over software, but witho
00000DC0  75 74 20 70 61 79 69 6E  67 20 61 6E 79 20 70 65  72 66 6F 72 6D 61 6E 63  65 20 70 65 6E 61 6C 74  ut paying any performance penalt
00000DE0  79 2E 0D 0A 13 61 75 74  6F 6E 75 6D 6C 67 6C 20  15 20 57 68 61 74 20 4D  52 43 49 20 64 65 66 69  y.autonumlgl § What MRCI defi
00000E00  6E 65 73 0D 0A 4D 52 43  49 20 64 65 66 69 6E 65  73 20 74 68 72 65 65 20  70 72 69 6E 63 69 70 61  nesMRCI defines three principa
00000E20  6C 20 73 74 61 6E 64 61  72 64 73 3A 0D 0A 13 53  59 4D 42 4F 4C 20 31 38  33 20 5C 66 20 22 53 79  l standards:SYMBOL 183 \f "Sy
00000E40  6D 62 6F 6C 22 20 5C 73  20 31 30 20 5C 68 15 09  51 75 65 72 79 20 41 50  49 3A 20 20 4D 52 43 49  mbol" \s 10 \h§Query API:  MRCI
00000E60  20 64 65 66 69 6E 65 73  20 61 20 72 65 6E 64 65  7A 76 6F 75 73 20 41 50  49 20 74 68 61 74 20 6C   defines a rendezvous API that l
00000E80  65 74 73 20 61 6E 20 61  70 70 6C 69 63 61 74 69  6F 6E 20 63 68 65 63 6B  20 66 6F 72 20 74 68 65  ets an application check for the
00000EA0  20 70 72 65 73 65 6E 63  65 20 6F 66 20 4D 52 43  49 2D 63 6F 6D 70 6C 69  61 6E 74 20 63 6F 6D 70   presence of MRCI-compliant comp
00000EC0  72 65 73 73 69 6F 6E 20  73 65 72 76 69 63 65 73  20 28 70 6F 73 73 69 62  6C 79 20 69 6D 70 6C 65  ression services (possibly imple
00000EE0  6D 65 6E 74 65 64 20 69  6E 20 68 61 72 64 77 61  72 65 29 2E 0D 0A 13 53  59 4D 42 4F 4C 20 31 38  mented in hardware).SYMBOL 18
00000F00  33 20 5C 66 20 22 53 79  6D 62 6F 6C 22 20 5C 73  20 31 30 20 5C 68 15 09  43 6F 6D 70 72 65 73 73  3 \f "Symbol" \s 10 \h§Compress
00000F20  20 61 6E 64 20 44 65 63  6F 6D 70 72 65 73 73 20  41 50 49 73 3A 20 20 49  66 20 61 20 4D 52 43 49   and Decompress APIs:  If a MRCI
00000F40  20 73 65 72 76 65 72 20  69 73 20 70 72 65 73 65  6E 74 2C 20 61 6E 20 61  70 70 6C 69 63 61 74 69   server is present, an applicati
00000F60  6F 6E 20 63 61 6E 20 64  69 73 61 62 6C 65 20 69  74 73 20 6F 77 6E 20 69  6E 74 65 72 6E 61 6C 20  on can disable its own internal 
00000F80  73 6F 66 74 77 61 72 65  20 63 6F 6D 70 72 65 73  73 69 6F 6E 2D 64 65 63  6F 6D 70 72 65 73 73 69  software compression-decompressi
00000FA0  6F 6E 20 72 6F 75 74 69  6E 65 73 2E 20 20 55 73  69 6E 67 20 74 68 65 20  61 64 64 72 65 73 73 20  on routines.  Using the address 
00000FC0  72 65 74 75 72 6E 65 64  20 66 72 6F 6D 20 74 68  65 20 71 75 65 72 79 2C  20 74 68 65 20 61 70 70  returned from the query, the app
00000FE0  6C 69 63 61 74 69 6F 6E  20 63 61 6E 20 74 68 65  6E 20 74 72 61 6E 73 66  65 72 20 64 61 74 61 20  lication can then transfer data 
00001000  74 6F 20 61 6E 64 20 66  72 6F 6D 20 74 68 65 20  4D 52 43 49 20 73 65 72  76 65 72 20 74 68 61 74  to and from the MRCI server that
00001020  20 69 74 20 6E 65 65 64  73 20 63 6F 6D 70 72 65  73 73 65 64 20 6F 72 20  64 65 63 6F 6D 70 72 65   it needs compressed or decompre
00001040  73 73 65 64 2E 0D 0A 13  53 59 4D 42 4F 4C 20 31  38 33 20 5C 66 20 22 53  79 6D 62 6F 6C 22 20 5C  ssed.SYMBOL 183 \f "Symbol" \
00001060  73 20 31 30 20 5C 68 15  09 43 6F 6D 70 72 65 73  73 69 6F 6E 20 46 6F 72  6D 61 74 3A 20 20 41 20  s 10 \h§Compression Format:  A 
00001080  73 74 61 6E 64 61 72 64  20 63 6F 6D 70 72 65 73  73 69 6F 6E 20 66 6F 72  6D 61 74 20 6D 65 61 6E  standard compression format mean
000010A0  73 20 74 68 61 74 20 67  69 76 65 6E 20 61 20 73  74 72 65 61 6D 20 6F 66  20 75 6E 63 6F 6D 70 72  s that given a stream of uncompr
000010C0  65 73 73 65 64 20 62 79  74 65 73 20 61 73 20 69  6E 70 75 74 2C 20 61 6C  6C 20 4D 52 43 49 2D 63  essed bytes as input, all MRCI-c
000010E0  6F 6D 70 6C 69 61 6E 74  20 68 61 72 64 77 61 72  65 20 77 69 6C 6C 20 6F  75 74 70 75 74 20 74 68  ompliant hardware will output th
00001100  65 20 65 78 61 63 74 20  73 61 6D 65 20 73 74 72  65 61 6D 20 6F 66 20 63  6F 6D 70 72 65 73 73 65  e exact same stream of compresse
00001120  64 20 62 79 74 65 73 2C  20 61 6E 64 20 76 69 63  65 2D 76 65 72 73 61 20  66 6F 72 20 64 65 63 6F  d bytes, and vice-versa for deco
00001140  6D 70 72 65 73 73 69 6F  6E 2E 20 20 20 42 79 20  64 65 66 69 6E 69 6E 67  20 61 20 66 6F 72 6D 61  mpression.   By defining a forma
00001160  74 2C 20 77 68 69 63 68  20 69 73 20 61 20 76 61  72 69 61 6E 74 20 6F 66  20 4C 65 6D 70 65 6C 2D  t, which is a variant of Lempel-
00001180  5A 69 76 20 65 6E 63 6F  64 69 6E 67 2C 20 4D 52  43 49 20 65 6E 61 62 6C  65 73 20 74 68 65 20 65  Ziv encoding, MRCI enables the e
000011A0  78 63 68 61 6E 67 65 20  6F 66 20 63 6F 6D 70 72  65 73 73 65 64 20 64 61  74 61 20 62 65 74 77 65  xchange of compressed data betwe
000011C0  65 6E 20 73 79 73 74 65  6D 73 2E 20 0D 0A 13 61  75 74 6F 6E 75 6D 6C 67  6C 20 15 20 48 6F 77 20  en systems. autonumlgl § How 
000011E0  74 6F 20 69 6D 70 6C 65  6D 65 6E 74 20 4D 52 43  49 0D 0A 49 53 56 73 20  77 69 73 68 69 6E 67 20  to implement MRCIISVs wishing 
00001200  74 6F 20 74 61 6B 65 20  61 64 76 61 6E 74 61 67  65 20 6F 66 20 4D 52 43  49 20 77 69 6C 6C 20 6E  to take advantage of MRCI will n
00001220  65 65 64 20 74 68 65 20  66 6F 6C 6C 6F 77 69 6E  67 3A 0D 0A 13 53 59 4D  42 4F 4C 20 31 38 33 20  eed the following:SYMBOL 183 
00001240  5C 66 20 22 53 79 6D 62  6F 6C 22 20 5C 73 20 31  30 20 5C 68 15 09 4D 52  43 49 20 73 70 65 63 69  \f "Symbol" \s 10 \h§MRCI speci
00001260  66 69 63 61 74 69 6F 6E  3A 20 20 41 76 61 69 6C  61 62 6C 65 20 74 6F 20  74 68 65 20 67 65 6E 65  fication:  Available to the gene
00001280  72 61 6C 20 70 75 62 6C  69 63 0D 0A 13 53 59 4D  42 4F 4C 20 31 38 33 20  5C 66 20 22 53 79 6D 62  ral publicSYMBOL 183 \f "Symb
000012A0  6F 6C 22 20 5C 73 20 31  30 20 5C 68 15 09 4D 52  43 49 20 73 6F 66 74 77  61 72 65 20 6C 69 62 72  ol" \s 10 \h§MRCI software libr
000012C0  61 72 69 65 73 20 66 6F  72 20 4D 53 2D 44 4F 53  20 61 6E 64 20 57 69 6E  64 6F 77 73 3A 20 20 54  aries for MS-DOS and Windows:  T
000012E0  68 65 20 6C 69 62 72 61  72 69 65 73 20 28 4D 52  43 46 44 4F 53 2E 4C 49  42 20 61 6E 64 20 4D 52  he libraries (MRCFDOS.LIB and MR
00001300  43 46 57 49 4E 2E 4C 49  42 29 20 70 72 6F 76 69  64 65 20 76 65 72 79 20  66 61 73 74 2C 20 72 65  CFWIN.LIB) provide very fast, re
00001320  61 6C 2D 74 69 6D 65 20  63 6F 6D 70 72 65 73 73  69 6F 6E 2D 64 65 63 6F  6D 70 72 65 73 73 69 6F  al-time compression-decompressio
00001340  6E 20 73 65 72 76 69 63  65 73 20 69 6E 20 73 6F  66 74 77 61 72 65 20 61  6E 64 20 61 64 68 65 72  n services in software and adher
00001360  65 20 74 6F 20 74 68 65  20 4D 52 43 49 20 63 6F  6D 70 72 65 73 73 69 6F  6E 20 66 6F 72 6D 61 74  e to the MRCI compression format
00001380  2E 20 20 54 68 65 20 6C  69 62 72 61 72 69 65 73  20 63 68 65 63 6B 20 66  6F 72 20 74 68 65 20 70  .  The libraries check for the p
000013A0  72 65 73 65 6E 63 65 20  6F 66 20 61 20 4D 52 43  49 20 73 65 72 76 65 72  20 61 6E 64 20 75 73 65  resence of a MRCI server and use
000013C0  20 69 74 20 69 66 20 70  72 65 73 65 6E 74 2E 20  20 49 66 20 6E 6F 74 20  70 72 65 73 65 6E 74 2C   it if present.  If not present,
000013E0  20 74 68 65 20 6C 69 62  72 61 72 69 65 73 20 75  73 65 20 74 68 65 69 72  20 6F 77 6E 20 69 6E 74   the libraries use their own int
00001400  65 72 6E 61 6C 20 73 6F  66 74 77 61 72 65 20 72  6F 75 74 69 6E 65 73 2E  20 20 53 6F 20 62 79 20  ernal software routines.  So by 
00001420  73 69 6D 70 6C 79 20 6C  69 6E 6B 69 6E 67 20 69  6E 20 61 20 6C 69 62 72  61 72 79 2C 20 61 6E 20  simply linking in a library, an 
00001440  49 53 56 20 69 73 20 67  75 61 72 61 6E 74 65 65  64 20 74 6F 20 68 61 76  65 20 66 61 73 74 2C 20  ISV is guaranteed to have fast, 
00001460  72 65 61 6C 2D 74 69 6D  65 2C 20 4D 52 43 49 2D  63 6F 6D 70 6C 69 61 6E  74 20 63 6F 6D 70 72 65  real-time, MRCI-compliant compre
00001480  73 73 69 6F 6E 2D 64 65  63 6F 6D 70 72 65 73 73  69 6F 6E 20 73 65 72 76  69 63 65 73 20 72 65 67  ssion-decompression services reg
000014A0  61 72 64 6C 65 73 73 20  6F 66 20 74 68 65 20 68  61 72 64 77 61 72 65 20  65 6E 76 69 72 6F 6E 6D  ardless of the hardware environm
000014C0  65 6E 74 2E 20 20 54 68  65 72 65 20 69 73 20 6E  6F 20 6E 65 65 64 20 66  6F 72 20 74 68 65 20 49  ent.  There is no need for the I
000014E0  53 56 20 74 6F 20 6C 65  61 72 6E 20 61 62 6F 75  74 20 74 68 65 20 64 65  74 61 69 6C 73 20 6F 66  SV to learn about the details of
00001500  20 4D 52 43 46 2C 20 61  73 20 74 68 65 73 65 20  61 72 65 20 68 69 64 64  65 6E 20 62 79 20 74 68   MRCF, as these are hidden by th
00001520  65 20 6C 69 62 72 61 72  69 65 73 2E 0D 0A 0D 0A  54 68 65 20 4D 52 43 49  20 73 6F 66 74 77 61 72  e libraries.The MRCI softwar
00001540  65 20 6C 69 62 72 61 72  69 65 73 2C 20 77 68 69  63 68 20 61 72 65 20 74  68 65 20 73 61 6D 65 20  e libraries, which are the same 
00001560  6C 69 62 72 61 72 69 65  73 20 75 73 65 64 20 69  6E 20 4D 53 2D 44 4F 53  20 36 27 73 20 44 6F 75  libraries used in MS-DOS 6's Dou
00001580  62 6C 65 53 70 61 63 65  20 61 6E 64 20 4D 53 2D  44 4F 53 20 36 27 73 20  42 61 63 6B 75 70 20 70  bleSpace and MS-DOS 6's Backup p
000015A0  72 6F 67 72 61 6D 2C 20  61 72 65 20 61 76 61 69  6C 61 62 6C 65 20 66 6F  72 20 6C 69 63 65 6E 73  rogram, are available for licens
000015C0  65 20 74 6F 20 49 53 56  73 20 66 6F 72 20 6E 6F  20 66 65 65 20 66 72 6F  6D 20 4D 69 63 72 6F 73  e to ISVs for no fee from Micros
000015E0  6F 66 74 2E 0D 0A 0D 0A  49 48 56 73 20 77 69 73  68 69 6E 67 20 74 6F 20  64 65 76 65 6C 6F 70 20  oft.IHVs wishing to develop 
00001600  4D 52 43 49 2D 63 6F 6D  70 6C 69 61 6E 74 20 68  61 72 64 77 61 72 65 20  77 69 6C 6C 20 6E 65 65  MRCI-compliant hardware will nee
00001620  64 20 74 68 65 20 66 6F  6C 6C 6F 77 69 6E 67 3A  0D 0A 13 53 59 4D 42 4F  4C 20 31 38 33 20 5C 66  d the following:SYMBOL 183 \f
00001640  20 22 53 79 6D 62 6F 6C  22 20 5C 73 20 31 30 20  5C 68 15 09 4D 52 43 49  20 73 70 65 63 69 66 69   "Symbol" \s 10 \h§MRCI specifi
00001660  63 61 74 69 6F 6E 3A 20  20 41 76 61 69 6C 61 62  6C 65 20 74 6F 20 74 68  65 20 67 65 6E 65 72 61  cation:  Available to the genera
00001680  6C 20 70 75 62 6C 69 63  2E 0D 0A 13 53 59 4D 42  4F 4C 20 31 38 33 20 5C  66 20 22 53 79 6D 62 6F  l public.SYMBOL 183 \f "Symbo
000016A0  6C 22 20 5C 73 20 31 30  20 5C 68 15 09 4D 52 43  49 20 73 6F 66 74 77 61  72 65 20 6C 69 62 72 61  l" \s 10 \h§MRCI software libra
000016C0  72 69 65 73 20 66 6F 72  20 4D 53 2D 44 4F 53 20  61 6E 64 20 57 69 6E 64  6F 77 73 3A 20 20 53 61  ries for MS-DOS and Windows:  Sa
000016E0  6D 65 20 61 73 20 61 62  6F 76 65 2C 20 61 6E 64  20 6E 65 63 65 73 73 61  72 79 20 74 6F 20 74 65  me as above, and necessary to te
00001700  73 74 20 68 61 72 64 77  61 72 65 20 66 6F 72 20  4D 52 43 49 20 63 6F 6D  70 61 74 69 62 69 6C 69  st hardware for MRCI compatibili
00001720  74 79 2E 0D 0A 13 53 59  4D 42 4F 4C 20 31 38 33  20 5C 66 20 22 53 79 6D  62 6F 6C 22 20 5C 73 20  ty.SYMBOL 183 \f "Symbol" \s 
00001740  31 30 20 5C 68 15 09 4D  52 43 49 20 61 6C 67 6F  72 69 74 68 6D 73 3A 20  20 43 20 6C 61 6E 67 75  10 \h§MRCI algorithms:  C langu
00001760  61 67 65 20 72 65 66 65  72 65 6E 63 65 20 63 6F  64 65 20 74 68 61 74 20  69 6D 70 6C 65 6D 65 6E  age reference code that implemen
00001780  74 73 20 74 68 65 20 4D  52 43 49 20 63 6F 6D 70  72 65 73 73 69 6F 6E 20  61 6E 64 20 64 65 63 6F  ts the MRCI compression and deco
000017A0  6D 70 72 65 73 73 69 6F  6E 20 61 6C 67 6F 72 69  74 68 6D 73 2E 0D 0A 13  53 59 4D 42 4F 4C 20 31  mpression algorithms.SYMBOL 1
000017C0  38 33 20 5C 66 20 22 53  79 6D 62 6F 6C 22 20 5C  73 20 31 30 20 5C 68 15  09 4D 52 43 49 20 63 6F  83 \f "Symbol" \s 10 \h§MRCI co
000017E0  6D 70 72 65 73 73 69 6F  6E 20 66 6F 72 6D 61 74  3A 20 20 41 20 64 65 73  63 72 69 70 74 69 6F 6E  mpression format:  A description
00001800  20 6F 66 20 74 68 65 20  4D 52 43 49 20 63 6F 6D  70 72 65 73 73 69 6F 6E  20 66 6F 72 6D 61 74 2E   of the MRCI compression format.
00001820  0D 0A 0D 0A 54 68 65 20  4D 52 43 49 20 73 6F 66  74 77 61 72 65 20 6C 69  62 72 61 72 69 65 73 2C  The MRCI software libraries,
00001840  20 61 6C 67 6F 72 69 74  68 6D 73 20 61 6E 64 20  63 6F 6D 70 72 65 73 73  69 6F 6E 20 66 6F 72 6D   algorithms and compression form
00001860  61 74 20 61 72 65 20 61  76 61 69 6C 61 62 6C 65  20 66 6F 72 20 6C 69 63  65 6E 73 65 20 74 6F 20  at are available for license to 
00001880  49 48 56 73 20 66 6F 72  20 6E 6F 20 66 65 65 20  66 72 6F 6D 20 4D 69 63  72 6F 73 6F 66 74 2E 0D  IHVs for no fee from Microsoft.
000018A0  0A 13 61 75 74 6F 6E 75  6D 6C 67 6C 20 15 20 4F  70 65 72 61 74 69 6E 67  20 53 79 73 74 65 6D 20  autonumlgl § Operating System 
000018C0  53 75 70 70 6F 72 74 0D  0A 4D 52 43 49 20 63 75  72 72 65 6E 74 6C 79 20  73 75 70 70 6F 72 74 73  SupportMRCI currently supports
000018E0  20 74 68 65 20 4D 53 2D  44 4F 53 20 61 6E 64 20  4D 69 63 72 6F 73 6F 66  74 20 57 69 6E 64 6F 77   the MS-DOS and Microsoft Window
00001900  73 20 6F 70 65 72 61 74  69 6E 67 20 73 79 73 74  65 6D 73 2E 20 20 4D 52  43 49 20 66 6F 72 20 57  s operating systems.  MRCI for W
00001920  69 6E 64 6F 77 73 20 4E  54 20 77 69 6C 6C 20 62  65 20 64 65 66 69 6E 65  64 20 61 74 20 61 20 6C  indows NT will be defined at a l
00001940  61 74 65 72 20 64 61 74  65 2C 20 61 73 20 61 6E  20 65 78 74 65 6E 73 69  6F 6E 20 74 6F 20 74 68  ater date, as an extension to th
00001960  65 20 48 61 72 64 77 61  72 65 20 41 62 73 74 72  61 63 74 69 6F 6E 20 4C  61 79 65 72 20 28 48 41  e Hardware Abstraction Layer (HA
00001980  4C 29 2E 0D 0A 13 61 75  74 6F 6E 75 6D 6C 67 6C  20 15 20 4F 76 65 72 76  69 65 77 20 6F 66 20 4D  L).autonumlgl § Overview of M
000019A0  52 43 49 20 53 65 72 76  69 63 65 73 0D 0A 54 68  65 20 4D 52 43 49 20 73  65 72 76 69 63 65 73 20  RCI ServicesThe MRCI services 
000019C0  61 72 65 20 62 72 69 65  66 6C 79 20 64 65 73 63  72 69 62 65 64 20 69 6E  20 74 68 65 20 66 6F 6C  are briefly described in the fol
000019E0  6C 6F 77 69 6E 67 20 74  61 62 6C 65 2E 0D 0A 0D  0A 53 65 72 76 69 63 65  0D 07 44 65 73 63 72 69  lowing table.ServiceDescri
00001A00  70 74 69 6F 6E 0D 07 0D  07 4D 52 43 51 75 65 72  79 0D 07 52 65 74 75 72  6E 20 4D 52 43 49 20 73  ptionMRCQueryReturn MRCI s
00001A20  65 72 76 65 72 20 69 6E  66 6F 72 6D 61 74 69 6F  6E 0D 07 0D 07 4D 52 43  43 6F 6D 70 72 65 73 73  erver informationMRCCompress
00001A40  0D 07 43 6F 6D 70 72 65  73 73 20 61 20 64 61 74  61 20 62 75 66 66 65 72  20 75 73 69 6E 67 20 53  Compress a data buffer using S
00001A60  74 61 6E 64 61 72 64 43  6F 6D 70 72 65 73 73 69  6F 6E 0D 07 0D 07 4D 52  43 44 65 63 6F 6D 70 72  tandardCompressionMRCDecompr
00001A80  65 73 73 0D 07 44 65 63  6F 6D 70 72 65 73 73 20  61 20 64 61 74 61 20 62  75 66 66 65 72 0D 07 0D  essDecompress a data buffer
00001AA0  07 4D 52 43 49 6E 63 72  65 6D 65 6E 74 61 6C 44  65 63 6F 6D 70 72 65 73  73 0D 07 44 65 63 6F 6D  MRCIncrementalDecompressDecom
00001AC0  70 72 65 73 73 20 61 20  70 6F 72 74 69 6F 6E 20  6F 66 20 61 20 64 61 74  61 20 62 75 66 66 65 72  press a portion of a data buffer
00001AE0  20 28 6F 70 74 69 6D 69  7A 61 74 69 6F 6E 20 66  6F 72 20 44 6F 75 62 6C  65 53 70 61 63 65 29 0D   (optimization for DoubleSpace)
00001B00  07 0D 07 0D 0A 4D 52 43  51 75 65 72 79 20 65 6E  61 62 6C 65 73 20 61 20  63 6C 69 65 6E 74 20 6F  MRCQuery enables a client o
00001B20  72 20 73 65 72 76 65 72  20 74 6F 20 65 73 74 61  62 6C 69 73 68 20 63 6F  6D 6D 75 6E 69 63 61 74  r server to establish communicat
00001B40  69 6F 6E 20 77 69 74 68  20 61 6E 20 65 78 69 73  74 69 6E 67 20 4D 52 43  49 20 73 65 72 76 65 72  ion with an existing MRCI server
00001B60  2E 20 20 41 20 73 6F 66  74 77 61 72 65 20 69 6E  74 65 72 72 75 70 74 20  69 73 20 75 73 65 64 20  .  A software interrupt is used 
00001B80  74 6F 20 6D 61 6B 65 20  74 68 69 73 20 63 61 6C  6C 2C 20 74 68 65 20 69  6E 74 65 72 72 75 70 74  to make this call, the interrupt
00001BA0  20 6E 75 6D 62 65 72 20  62 65 69 6E 67 20 63 68  6F 73 65 6E 20 74 6F 20  70 65 72 6D 69 74 20 74   number being chosen to permit t
00001BC0  68 65 20 73 65 72 76 65  72 20 74 6F 20 62 65 20  73 75 70 70 6C 69 65 64  20 69 6E 20 61 6E 79 20  he server to be supplied in any 
00001BE0  6D 61 6E 6E 65 72 20 28  61 73 20 63 6F 64 65 20  69 6E 20 52 4F 4D 2C 20  6F 72 20 61 73 20 61 20  manner (as code in ROM, or as a 
00001C00  44 4F 53 20 64 65 76 69  63 65 20 64 72 69 76 65  72 20 6F 72 20 54 53 52  2C 20 6F 72 20 61 73 20  DOS device driver or TSR, or as 
00001C20  61 20 57 69 6E 64 6F 77  73 20 56 78 44 29 2E 20  20 41 20 6E 65 77 20 4D  52 43 49 20 73 65 72 76  a Windows VxD).  A new MRCI serv
00001C40  65 72 20 63 61 6E 20 69  6E 73 74 61 6C 6C 20 69  74 73 65 6C 66 20 69 6E  20 74 68 65 20 73 79 73  er can install itself in the sys
00001C60  74 65 6D 2C 20 70 61 72  74 69 61 6C 6C 79 20 6F  72 20 66 75 6C 6C 79 20  72 65 70 6C 61 63 69 6E  tem, partially or fully replacin
00001C80  67 20 61 20 70 72 65 76  69 6F 75 73 6C 79 20 69  6E 73 74 61 6C 6C 65 64  20 4D 52 43 49 20 73 65  g a previously installed MRCI se
00001CA0  72 76 65 72 2E 20 20 4F  6E 6C 79 20 74 68 65 20  6C 61 73 74 20 4D 52 43  49 20 73 65 72 76 65 72  rver.  Only the last MRCI server
00001CC0  20 69 6E 73 74 61 6C 6C  65 64 20 69 73 20 61 63  63 65 73 73 69 62 6C 65  20 76 69 61 20 4D 52 43   installed is accessible via MRC
00001CE0  51 75 65 72 79 2E 0D 0A  0D 0A 54 68 65 20 63 6F  6D 70 72 65 73 73 69 6F  6E 20 61 6E 64 20 64 65  Query.The compression and de
00001D00  63 6F 6D 70 72 65 73 73  69 6F 6E 20 73 65 72 76  69 63 65 73 2C 20 4D 52  43 43 6F 6D 70 72 65 73  compression services, MRCCompres
00001D20  73 2C 20 4D 52 43 44 65  63 6F 6D 70 72 65 73 73  2C 20 61 6E 64 20 4D 52  43 49 6E 63 72 65 6D 65  s, MRCDecompress, and MRCIncreme
00001D40  6E 74 61 6C 44 65 63 6F  6D 70 72 65 73 73 2C 20  70 65 72 6D 69 74 20 61  20 63 6C 69 65 6E 74 20  ntalDecompress, permit a client 
00001D60  74 6F 20 63 61 6C 6C 20  61 20 73 65 72 76 65 72  20 74 6F 20 63 6F 6D 70  72 65 73 73 20 61 6E 64  to call a server to compress and
00001D80  20 64 65 63 6F 6D 70 72  65 73 73 20 64 61 74 61  20 69 6E 20 74 68 65 20  4D 52 43 20 46 6F 72 6D   decompress data in the MRC Form
00001DA0  61 74 20 28 4D 52 43 46  29 2E 20 20 54 68 65 73  65 20 73 65 72 76 69 63  65 73 20 61 72 65 20 69  at (MRCF).  These services are i
00001DC0  6E 76 6F 6B 65 64 20 76  69 61 20 61 20 64 69 72  65 63 74 20 63 61 6C 6C  20 74 6F 20 74 68 65 20  nvoked via a direct call to the 
00001DE0  73 65 72 76 65 72 20 28  74 68 65 20 61 64 64 72  65 73 73 20 68 61 76 69  6E 67 20 62 65 65 6E 20  server (the address having been 
00001E00  6F 62 74 61 69 6E 65 64  20 62 79 20 4D 52 43 51  75 65 72 79 29 2C 20 66  6F 72 20 6D 61 78 69 6D  obtained by MRCQuery), for maxim
00001E20  75 6D 20 70 65 72 66 6F  72 6D 61 6E 63 65 2E 0D  0A 0D 0A 4E 4F 54 45 3A  09 41 20 63 6C 69 65 6E  um performance.NOTE:A clien
00001E40  74 20 6D 75 73 74 20 65  6E 74 65 72 20 74 68 65  20 57 69 6E 64 6F 77 73  20 44 69 73 6B 20 43 72  t must enter the Windows Disk Cr
00001E60  69 74 69 63 61 6C 20 53  65 63 74 69 6F 6E 20 62  65 66 6F 72 65 20 63 61  6C 6C 69 6E 67 20 74 68  itical Section before calling th
00001E80  65 20 64 69 72 65 63 74  20 63 61 6C 6C 20 65 6E  74 72 79 20 70 6F 69 6E  74 20 6F 66 20 61 20 4D  e direct call entry point of a M
00001EA0  52 43 49 20 73 65 72 76  65 72 2E 20 20 54 68 69  73 20 70 72 6F 74 65 63  74 73 20 74 68 65 20 4D  RCI server.  This protects the M
00001EC0  52 43 49 20 73 65 72 76  65 72 20 66 72 6F 6D 20  62 65 69 6E 67 20 72 65  65 6E 74 65 72 65 64 2E  RCI server from being reentered.
00001EE0  20 20 46 61 69 6C 75 72  65 20 74 6F 20 64 6F 20  73 6F 20 77 69 6C 6C 20  63 61 75 73 65 20 64 61    Failure to do so will cause da
00001F00  74 61 20 63 6F 72 72 75  70 74 69 6F 6E 20 61 6E  64 20 6C 6F 73 73 20 69  6E 20 61 20 6D 75 6C 74  ta corruption and loss in a mult
00001F20  69 2D 74 61 73 6B 69 6E  67 20 65 6E 76 69 72 6F  6E 6D 65 6E 74 2E 20 20  53 65 65 20 74 68 65 20  i-tasking environment.  See the 
00001F40  73 61 6D 70 6C 65 20 63  6F 64 65 20 62 65 6C 6F  77 20 66 6F 72 20 64 65  74 61 69 6C 73 2E 0D 0A  sample code below for details.
00001F60  13 61 75 74 6F 6E 75 6D  6C 67 6C 20 15 20 4D 52  43 49 20 49 6E 74 65 72  72 75 70 74 0D 0A 4D 52  autonumlgl § MRCI InterruptMR
00001F80  43 49 20 64 65 66 69 6E  65 73 20 61 20 6E 65 77  20 69 6E 74 65 72 72 75  70 74 20 32 46 68 20 63  CI defines a new interrupt 2Fh c
00001FA0  61 6C 6C 20 28 41 58 3D  34 41 31 32 68 29 20 74  6F 20 61 6C 6C 6F 77 20  61 6E 20 4D 52 43 49 20  all (AX=4A12h) to allow an MRCI 
00001FC0  63 6C 69 65 6E 74 20 74  6F 20 64 65 74 65 63 74  20 61 6E 20 4D 52 43 49  20 73 65 72 76 65 72 2C  client to detect an MRCI server,
00001FE0  20 61 6E 64 20 61 20 6E  65 77 20 69 6E 74 65 72  72 75 70 74 20 31 41 68  20 63 61 6C 6C 20 28 41   and a new interrupt 1Ah call (A
00002000  58 3D 42 30 30 31 68 29  20 74 6F 20 61 6C 6C 6F  77 20 74 68 65 20 66 69  72 73 74 20 4D 52 43 49  X=B001h) to allow the first MRCI
00002020  20 73 65 72 76 65 72 20  6F 72 20 63 6C 69 65 6E  74 20 74 6F 20 64 65 74  65 63 74 20 61 20 52 4F   server or client to detect a RO
00002040  4D 20 42 49 4F 53 20 28  70 72 65 73 75 6D 61 62  6C 79 20 68 61 72 64 77  61 72 65 2D 62 61 73 65  M BIOS (presumably hardware-base
00002060  64 29 20 4D 52 43 49 20  73 65 72 76 65 72 2E 20  20 4D 52 43 49 20 63 6C  69 65 6E 74 73 20 61 6E  d) MRCI server.  MRCI clients an
00002080  64 20 73 65 72 76 65 72  73 20 66 69 72 73 74 20  63 68 65 63 6B 20 66 6F  72 20 74 68 65 20 70 72  d servers first check for the pr
000020A0  65 73 65 6E 63 65 20 6F  66 20 61 6E 20 65 78 69  73 74 69 6E 67 20 4D 52  43 49 20 73 65 72 76 65  esence of an existing MRCI serve
000020C0  72 20 62 79 20 69 73 73  75 69 6E 67 20 74 68 65  20 49 4E 54 20 32 46 68  20 63 61 6C 6C 2E 20 20  r by issuing the INT 2Fh call.  
000020E0  49 66 20 74 68 61 74 20  66 61 69 6C 73 2C 20 74  68 65 6E 20 74 68 65 79  20 69 73 73 75 65 20 74  If that fails, then they issue t
00002100  68 65 20 49 4E 54 20 31  41 68 20 63 61 6C 6C 2E  20 20 49 66 20 74 68 61  74 20 66 61 69 6C 73 2C  he INT 1Ah call.  If that fails,
00002120  20 74 68 65 6E 20 74 68  65 72 65 20 69 73 20 6E  6F 20 4D 52 43 49 20 73  65 72 76 65 72 20 70 72   then there is no MRCI server pr
00002140  65 73 65 6E 74 20 69 6E  20 74 68 65 20 73 79 73  74 65 6D 2E 0D 0A 0D 0A  54 68 65 73 65 20 74 77  esent in the system.These tw
00002160  6F 20 72 65 6E 64 65 7A  76 6F 75 73 20 69 6E 74  65 72 72 75 70 74 73 20  61 72 65 20 70 72 6F 76  o rendezvous interrupts are prov
00002180  69 64 65 64 20 74 6F 20  65 6E 73 75 72 65 20 63  6F 6D 70 61 74 69 62 69  6C 69 74 79 20 77 69 74  ided to ensure compatibility wit
000021A0  68 20 65 78 69 73 74 69  6E 67 20 4D 53 2D 44 4F  53 20 73 6F 66 74 77 61  72 65 2E 20 20 49 66 20  h existing MS-DOS software.  If 
000021C0  61 20 73 6F 66 74 77 61  72 65 20 4D 52 43 49 20  73 65 72 76 65 72 20 69  6E 74 65 6E 64 73 20 74  a software MRCI server intends t
000021E0  6F 20 69 6E 73 74 61 6C  6C 20 69 74 73 65 6C 66  20 6F 76 65 72 20 61 6E  20 65 78 69 73 74 69 6E  o install itself over an existin
00002200  67 20 49 4E 54 20 31 41  68 20 4D 52 43 49 20 73  65 72 76 65 72 2C 20 6F  72 20 61 20 4D 52 43 49  g INT 1Ah MRCI server, or a MRCI
00002220  20 63 6C 69 65 6E 74 20  69 73 20 67 6F 69 6E 67  20 74 6F 20 72 65 6D 61  69 6E 20 72 65 73 69 64   client is going to remain resid
00002240  65 6E 74 20 28 65 69 74  68 65 72 20 61 73 20 61  6E 20 4D 53 2D 44 4F 53  20 64 65 76 69 63 65 20  ent (either as an MS-DOS device 
00002260  64 72 69 76 65 72 20 6F  72 20 74 65 72 6D 69 6E  61 74 65 2D 61 6E 64 2D  73 74 61 79 2D 72 65 73  driver or terminate-and-stay-res
00002280  69 64 65 6E 74 20 28 54  53 52 29 20 70 72 6F 67  72 61 6D 29 2C 20 74 68  65 6E 20 69 74 20 6D 75  ident (TSR) program), then it mu
000022A0  73 74 20 68 6F 6F 6B 20  49 4E 54 20 32 46 68 20  61 6E 64 20 63 72 65 61  74 65 20 61 20 52 41 4D  st hook INT 2Fh and create a RAM
000022C0  20 63 6F 70 79 20 6F 66  20 74 68 65 20 4D 52 43  49 4E 46 4F 20 73 74 72  75 63 74 75 72 65 20 28   copy of the MRCINFO structure (
000022E0  73 65 65 20 62 65 6C 6F  77 29 2E 20 20 54 68 65  20 70 72 6F 63 65 64 75  72 65 20 61 6C 6C 6F 77  see below).  The procedure allow
00002300  73 20 73 75 62 73 65 71  75 65 6E 74 20 70 72 6F  67 72 61 6D 73 20 74 6F  20 73 75 70 65 72 73 65  s subsequent programs to superse
00002320  64 65 20 74 68 65 20 4D  52 43 49 20 73 65 72 76  65 72 20 77 69 74 68 6F  75 74 20 63 75 74 74 69  de the MRCI server without cutti
00002340  6E 67 20 74 68 65 20 69  6E 69 74 69 61 6C 20 72  65 73 69 64 65 6E 74 20  70 72 6F 67 72 61 6D 20  ng the initial resident program 
00002360  6F 75 74 20 6F 66 20 74  68 65 20 6C 6F 6F 70 2E  0D 0A 13 61 75 74 6F 6E  75 6D 6C 67 6C 20 15 20  out of the loop.autonumlgl § 
00002380  4D 52 43 49 20 44 65 66  69 6E 69 74 69 6F 6E 73  0D 0A 54 68 65 20 66 6F  6C 6C 6F 77 69 6E 67 20  MRCI DefinitionsThe following 
000023A0  41 53 4D 20 68 65 61 64  65 72 73 20 64 6F 63 75  6D 65 6E 74 20 4D 52 43  49 2E 20 20 54 68 65 73  ASM headers document MRCI.  Thes
000023C0  65 20 61 72 65 20 73 70  65 63 69 66 69 65 64 20  69 6E 20 41 53 4D 20 62  65 63 61 75 73 65 20 74  e are specified in ASM because t
000023E0  68 61 74 20 69 73 20 74  68 65 20 68 69 67 68 65  73 74 2D 70 65 72 66 6F  72 6D 61 6E 63 65 20 69  hat is the highest-performance i
00002400  6E 74 65 72 66 61 63 65  2E 20 20 54 68 65 73 65  20 6D 61 79 20 62 65 20  63 61 6C 6C 65 64 20 66  nterface.  These may be called f
00002420  72 6F 6D 20 43 20 77 69  74 68 20 73 75 69 74 61  62 6C 65 20 43 20 22 77  72 61 70 70 65 72 22 20  rom C with suitable C "wrapper" 
00002440  66 75 6E 63 74 69 6F 6E  73 2E 20 0D 0A 0D 0A 13  69 6E 63 6C 75 64 65 20  6D 72 63 69 2E 69 6E 63  functions. include mrci.inc
00002460  20 5C 63 20 54 65 78 74  14 3B 2A 2A 2A 20 20 20  20 4D 52 43 49 2E 49 4E  43 20 2D 20 4D 69 63 72   \c Text;***    MRCI.INC - Micr
00002480  6F 73 6F 66 74 20 52 65  61 6C 2D 54 69 6D 65 20  43 6F 6D 70 72 65 73 73  69 6F 6E 20 49 6E 74 65  osoft Real-Time Compression Inte
000024A0  72 66 61 63 65 20 64 65  66 69 6E 69 74 69 6F 6E  73 0D 0A 3B 0D 0A 3B 20  20 20 20 20 20 20 4D 52  rface definitions;;       MR
000024C0  43 49 20 76 65 72 73 69  6F 6E 20 31 2E 30 30 2E  30 38 20 20 30 32 2D 41  70 72 2D 31 39 39 33 0D  CI version 1.00.08  02-Apr-1993
000024E0  0A 0D 0A 69 6E 74 4D 52  43 49 20 20 20 20 20 20  20 20 20 65 71 75 20 20  20 20 20 20 20 32 46 68  intMRCI         equ       2Fh
00002500  20 20 20 20 20 20 20 3B  20 4D 52 43 49 20 69 6E  74 65 72 72 75 70 74 20  6E 75 6D 62 65 72 0D 0A         ; MRCI interrupt number
00002520  6D 72 63 69 44 45 54 45  43 54 20 20 20 20 20 20  65 71 75 20 20 20 20 30  34 41 31 32 68 20 20 20  mrciDETECT      equ    04A12h   
00002540  20 20 20 20 3B 20 69 6E  74 4D 52 43 49 20 41 58  20 66 6F 72 20 64 65 74  65 63 74 69 6E 67 20 4D      ; intMRCI AX for detecting M
00002560  52 43 49 20 73 65 72 76  65 72 0D 0A 0D 0A 69 6E  74 4D 52 43 49 52 4F 4D  20 20 20 20 20 20 65 71  RCI serverintMRCIROM      eq
00002580  75 20 20 20 20 20 20 20  31 41 68 20 20 20 20 20  20 20 3B 20 52 4F 4D 20  4D 52 43 49 20 69 6E 74  u       1Ah       ; ROM MRCI int
000025A0  65 72 72 75 70 74 20 6E  75 6D 62 65 72 0D 0A 6D  72 63 69 44 45 54 45 43  54 52 4F 4D 20 20 20 65  errupt numbermrciDETECTROM   e
000025C0  71 75 20 20 20 20 30 42  30 30 31 68 20 20 20 20  20 20 20 3B 20 69 6E 74  4D 52 43 49 52 4F 4D 20  qu    0B001h       ; intMRCIROM 
000025E0  41 58 20 66 6F 72 20 64  65 74 65 63 74 69 6E 67  20 4D 52 43 49 20 73 65  72 76 65 72 0D 0A 0D 0A  AX for detecting MRCI server
00002600  0D 0A 3B 2A 2A 2A 20 20  20 20 6D 63 58 58 58 58  20 2D 20 66 6C 61 67 20  76 61 6C 75 65 73 20 70  ;***    mcXXXX - flag values p
00002620  61 73 73 65 64 20 74 6F  20 4D 52 43 49 20 6F 70  65 72 61 74 69 6F 6E 73  0D 0A 3B 0D 0A 3B 20 20  assed to MRCI operations;;  
00002640  20 20 20 20 20 4D 52 43  43 6F 6D 70 72 65 73 73  20 61 6E 64 20 4D 52 43  44 65 63 6F 6D 70 72 65       MRCCompress and MRCDecompre
00002660  73 73 20 74 61 6B 65 20  61 20 66 6C 61 67 20 74  6F 20 69 6E 64 69 63 61  74 65 20 77 68 65 74 68  ss take a flag to indicate wheth
00002680  65 72 20 74 68 65 0D 0A  3B 20 20 20 20 20 20 20  63 6C 69 65 6E 74 20 69  73 20 61 20 2A 73 79 73  er the;       client is a *sys
000026A0  74 65 6D 2A 20 63 6F 6D  70 6F 6E 65 6E 74 20 28  61 6E 64 20 68 65 6E 63  65 20 6D 61 79 20 63 61  tem* component (and hence may ca
000026C0  6C 6C 20 77 69 74 68 20  49 6E 44 4F 53 0D 0A 3B  20 20 20 20 20 20 20 73  65 74 29 2C 20 6F 72 20  ll with InDOS;       set), or 
000026E0  61 6E 20 2A 61 70 70 6C  69 63 61 74 69 6F 6E 2A  2E 0D 0A 3B 0D 0A 3B 20  20 20 20 20 20 20 6D 63  an *application*.;;       mc
00002700  53 59 53 54 45 4D 20 63  6C 69 65 6E 74 73 20 6D  75 73 74 20 65 6E 73 75  72 65 20 74 68 65 20 66  SYSTEM clients must ensure the f
00002720  6F 6C 6C 6F 77 69 6E 67  20 69 73 20 74 72 75 65  20 62 65 66 6F 72 65 20  63 61 6C 6C 69 6E 67 0D  ollowing is true before calling
00002740  0A 3B 20 20 20 20 20 20  20 4D 52 43 49 3A 0D 0A  3B 20 20 20 20 20 20 20  20 20 20 20 31 29 20 20  ;       MRCI:;           1)  
00002760  54 68 65 20 57 69 6E 64  6F 77 73 20 44 69 73 6B  20 43 72 69 74 69 63 61  6C 20 53 65 63 74 69 6F  The Windows Disk Critical Sectio
00002780  6E 20 69 73 20 6F 77 6E  65 64 0D 0A 3B 20 20 20  20 20 20 20 20 20 20 20  32 29 20 20 54 68 65 20  n is owned;           2)  The 
000027A0  49 6E 44 4F 53 20 66 6C  61 67 20 69 73 20 2A 73  65 74 2A 0D 0A 3B 0D 0A  3B 20 20 20 20 20 20 20  InDOS flag is *set*;;       
000027C0  6D 63 41 50 50 4C 49 43  41 54 49 4F 4E 20 63 6C  69 65 6E 74 73 20 6D 75  73 74 20 65 6E 73 75 72  mcAPPLICATION clients must ensur
000027E0  65 20 74 68 65 20 66 6F  6C 6C 6F 77 69 6E 67 20  69 73 20 74 72 75 65 20  62 65 66 6F 72 65 20 63  e the following is true before c
00002800  61 6C 6C 69 6E 67 0D 0A  3B 20 20 20 20 20 20 20  4D 52 43 49 3A 0D 0A 3B  20 20 20 20 20 20 20 20  alling;       MRCI:;        
00002820  20 20 20 31 29 20 20 54  68 65 20 57 69 6E 64 6F  77 73 20 44 69 73 6B 20  43 72 69 74 69 63 61 6C     1)  The Windows Disk Critical
00002840  20 53 65 63 74 69 6F 6E  20 69 73 20 6F 77 6E 65  64 0D 0A 3B 20 20 20 20  20 20 20 20 20 20 20 32   Section is owned;           2
00002860  29 20 20 54 68 65 20 49  6E 44 4F 53 20 66 6C 61  67 20 69 73 20 2A 63 6C  65 61 72 2A 0D 0A 3B 0D  )  The InDOS flag is *clear*;
00002880  0A 3B 20 20 20 20 20 20  20 46 41 49 4C 49 4E 47  20 54 4F 20 46 4F 4C 4C  4F 57 20 54 48 45 20 41  ;       FAILING TO FOLLOW THE A
000028A0  42 4F 56 45 20 52 55 4C  45 53 20 57 49 4C 4C 20  4C 49 4B 45 4C 59 20 52  45 53 55 4C 54 20 49 4E  BOVE RULES WILL LIKELY RESULT IN
000028C0  20 41 20 53 59 53 54 45  4D 0D 0A 3B 20 20 20 20  20 20 20 48 41 4E 47 20  41 4E 44 20 4C 4F 53 53   A SYSTEM;       HANG AND LOSS
000028E0  20 4F 46 20 55 53 45 52  20 44 41 54 41 2E 0D 0A  3B 0D 0A 6D 63 41 50 50  4C 49 43 41 54 49 4F 4E   OF USER DATA.;mcAPPLICATION
00002900  20 20 20 65 71 75 20 20  20 20 20 30 20 20 20 3B  20 43 6C 69 65 6E 74 20  69 73 20 61 6E 20 61 70     equ     0   ; Client is an ap
00002920  70 6C 69 63 61 74 69 6F  6E 0D 0A 6D 63 53 59 53  54 45 4D 20 20 20 20 20  20 20 20 65 71 75 20 20  plicationmcSYSTEM        equ  
00002940  20 20 20 31 20 20 20 3B  20 43 6C 69 65 6E 74 20  69 73 20 61 20 66 69 6C  65 20 73 79 73 74 65 6D     1   ; Client is a file system
00002960  20 64 72 69 76 65 72 0D  0A 0D 0A 0D 0A 3B 2A 2A  2A 20 20 20 20 6D 69 63  61 70 58 58 58 58 58 20   driver;***    micapXXXXX 
00002980  2D 20 62 69 74 20 66 6C  61 67 73 20 66 6F 72 20  4D 52 43 49 4E 46 4F 2E  6D 69 5F 66 6C 43 61 70  - bit flags for MRCINFO.mi_flCap
000029A0  61 62 69 6C 69 74 69 65  73 0D 0A 3B 0D 0A 3B 20  20 20 20 20 20 20 54 68  65 73 65 20 64 65 66 69  abilities;;       These defi
000029C0  6E 65 20 62 6F 74 68 20  74 68 65 20 63 61 70 61  62 69 6C 69 74 69 65 73  20 6F 66 20 74 68 65 20  ne both the capabilities of the 
000029E0  53 65 72 76 65 72 2C 20  61 6E 64 20 61 6C 73 6F  20 64 6F 75 62 6C 65 0D  0A 3B 20 20 20 20 20 20  Server, and also double;      
00002A00  20 61 73 20 2A 6F 70 65  72 61 74 69 6F 6E 2A 20  63 6F 64 65 73 20 70 61  73 73 65 64 20 74 6F 20   as *operation* codes passed to 
00002A20  74 68 65 20 6D 69 5F 70  66 6E 4F 70 65 72 61 74  65 20 65 6E 74 72 79 20  70 6F 69 6E 74 20 69 6E  the mi_pfnOperate entry point in
00002A40  0D 0A 3B 20 20 20 20 20  20 20 74 68 65 20 73 65  72 76 65 72 2E 0D 0A 3B  20 20 20 20 20 20 20 20  ;       the server.;        
00002A60  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 31 31 31 31 31 31  0D 0A 3B 20 20 20 20 20                    111111;     
00002A80  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 35 34 33  32 31 30 39 38 37 36 35                       54321098765
00002AA0  34 33 32 31 30 0D 0A 3B  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  43210;                        
00002AC0  20 20 2D 2D 2D 2D 2D 2D  2D 2D 2D 2D 2D 2D 2D 2D  2D 2D 0D 0A 6D 69 63 61  70 4E 4F 4E 45 20 20 20    ----------------micapNONE   
00002AE0  20 20 20 20 20 20 20 20  65 71 75 20 20 20 20 30  30 30 30 30 30 30 30 30  30 30 30 30 30 30 30 62          equ    0000000000000000b
00002B00  20 3B 20 4E 6F 20 63 61  70 61 62 69 6C 69 74 69  65 73 0D 0A 6D 69 63 61  70 53 54 41 4E 44 41 52   ; No capabilitiesmicapSTANDAR
00002B20  44 20 20 20 20 20 20 20  65 71 75 20 20 20 20 30  30 30 30 30 30 30 30 30  30 30 30 30 30 30 31 62  D       equ    0000000000000001b
00002B40  20 3B 20 53 74 61 6E 64  61 72 64 20 63 6F 6D 70  72 65 73 73 0D 0A 6D 69  63 61 70 44 45 43 4F 4D   ; Standard compressmicapDECOM
00002B60  50 52 45 53 53 20 20 20  20 20 65 71 75 20 20 20  20 30 30 30 30 30 30 30  30 30 30 30 30 30 30 31  PRESS     equ    000000000000001
00002B80  30 62 20 3B 20 53 74 61  6E 64 61 72 64 20 63 6F  6D 70 72 65 73 73 0D 0A  6D 69 63 61 70 52 45 53  0b ; Standard compressmicapRES
00002BA0  45 52 56 45 44 31 20 20  20 20 20 20 65 71 75 20  20 20 20 30 30 30 30 30  30 30 30 30 30 30 30 30  ERVED1      equ    0000000000000
00002BC0  31 30 30 62 20 3B 20 52  45 53 45 52 56 45 44 20  66 6F 72 20 66 75 74 75  72 65 20 75 73 65 0D 0A  100b ; RESERVED for future use
00002BE0  6D 69 63 61 70 52 45 53  45 52 56 45 44 4D 20 20  20 20 20 20 65 71 75 20  20 20 20 30 30 30 30 30  micapRESERVEDM      equ    00000
00002C00  30 30 30 30 30 30 30 31  30 30 30 62 20 3B 20 52  45 53 45 52 56 45 44 20  66 6F 72 20 66 75 74 75  00000001000b ; RESERVED for futu
00002C20  72 65 20 75 73 65 0D 0A  6D 69 63 61 70 52 45 53  45 52 56 45 44 32 20 20  20 20 20 20 65 71 75 20  re usemicapRESERVED2      equ 
00002C40  20 20 20 30 30 30 30 30  30 30 30 30 30 30 31 30  30 30 30 62 20 3B 20 52  45 53 45 52 56 45 44 20     0000000000010000b ; RESERVED 
00002C60  66 6F 72 20 66 75 74 75  72 65 20 75 73 65 0D 0A  6D 69 63 61 70 49 4E 43  44 45 43 4F 4D 50 20 20  for future usemicapINCDECOMP  
00002C80  20 20 20 20 65 71 75 20  20 20 20 30 30 30 30 30  30 30 30 30 30 31 30 30  30 30 30 62 20 3B 20 49      equ    0000000000100000b ; I
00002CA0  6E 63 72 65 6D 65 6E 74  61 6C 20 44 65 63 6F 6D  70 72 65 73 73 0D 0A 20  20 20 3B 0D 0A 20 20 20  ncremental Decompress   ;   
00002CC0  3B 20 52 65 6D 61 69 6E  69 6E 67 20 62 69 74 73  20 28 36 2E 2E 31 34 29  20 61 72 65 20 52 45 53  ; Remaining bits (6..14) are RES
00002CE0  45 52 56 45 44 20 61 6E  64 20 6D 75 73 74 20 62  65 20 30 0D 0A 20 20 20  3B 0D 0A 6D 69 63 61 70  ERVED and must be 0   ;micap
00002D00  52 45 41 44 4F 4E 4C 59  20 20 20 20 20 20 20 65  71 75 20 20 20 20 31 30  30 30 30 30 30 30 30 30  READONLY       equ    1000000000
00002D20  30 30 30 30 30 30 62 20  3B 20 4D 52 43 49 4E 46  4F 20 73 74 72 75 63 74  75 72 65 20 69 73 20 72  000000b ; MRCINFO structure is r
00002D40  65 61 64 2D 6F 6E 6C 79  0D 0A 6D 69 63 61 70 44  45 49 4E 53 54 41 4C 4C  20 20 20 20 20 20 65 71  ead-onlymicapDEINSTALL      eq
00002D60  75 20 20 20 20 31 31 31  31 31 31 31 31 31 31 31  31 31 31 31 31 62 20 3B  20 53 65 72 76 65 72 20  u    1111111111111111b ; Server 
00002D80  64 65 69 6E 73 74 61 6C  6C 20 73 65 72 76 69 63  65 0D 0A 0D 0A 0D 0A 3B  2A 2A 2A 20 20 20 20 4D  deinstall service;***    M
00002DA0  52 43 49 4E 46 4F 20 2D  20 4D 52 43 20 49 6E 66  6F 72 6D 61 74 69 6F 6E  20 64 61 74 61 20 73 74  RCINFO - MRC Information data st
00002DC0  72 75 63 74 75 72 65 0D  0A 3B 0D 0A 3B 20 20 20  20 20 20 20 41 20 70 6F  69 6E 74 65 72 20 74 6F  ructure;;       A pointer to
00002DE0  20 61 6E 20 4D 52 43 49  4E 46 4F 20 73 74 72 75  63 74 75 72 65 20 69 73  20 72 65 74 75 72 6E 65   an MRCINFO structure is returne
00002E00  64 20 66 72 6F 6D 20 4D  52 43 51 75 65 72 79 2C  20 61 6E 64 20 73 65 6E  74 0D 0A 3B 20 20 20 20  d from MRCQuery, and sent;    
00002E20  20 20 20 6F 6E 20 4D 52  43 4E 6F 74 69 66 79 4C  6F 61 64 2E 20 20 54 68  69 73 20 73 74 72 75 63     on MRCNotifyLoad.  This struc
00002E40  74 75 72 65 20 63 6F 6E  74 61 69 6E 73 20 69 6E  66 6F 72 6D 61 74 69 6F  6E 20 6F 6E 20 74 68 65  ture contains information on the
00002E60  20 4D 52 43 49 0D 0A 3B  20 20 20 20 20 20 20 73  65 72 76 65 72 20 61 6E  64 20 69 74 73 20 63 61   MRCI;       server and its ca
00002E80  70 61 62 69 6C 69 74 69  65 73 2E 0D 0A 0D 0A 4D  52 43 49 4E 46 4F 20 73  74 72 75 63 0D 0A 0D 0A  pabilities.MRCINFO struc
00002EA0  6D 69 5F 6C 56 65 6E 64  6F 72 20 20 20 20 20 20  20 20 20 20 64 64 20 20  3F 20 20 20 20 20 20 20  mi_lVendor          dd  ?       
00002EC0  3B 20 41 20 34 2D 62 79  74 65 20 76 65 6E 64 6F  72 20 49 44 2E 0D 0A 20  20 20 20 20 20 20 20 20  ; A 4-byte vendor ID.         
00002EE0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3B  20 4D 69 63 72 6F 73 6F                         ; Microso
00002F00  66 74 27 73 20 76 65 6E  64 6F 72 20 49 44 20 69  73 20 22 4D 53 46 54 22  2E 0D 0A 0D 0A 6D 69 5F  ft's vendor ID is "MSFT".mi_
00002F20  77 56 65 6E 64 6F 72 56  65 72 73 69 6F 6E 20 20  20 64 77 20 20 3F 20 20  20 20 20 20 20 3B 20 56  wVendorVersion   dw  ?       ; V
00002F40  65 72 73 69 6F 6E 20 6E  75 6D 62 65 72 20 6F 66  20 74 68 65 20 4D 52 43  20 73 65 72 76 65 72 2E  ersion number of the MRC server.
00002F60  0D 0A 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20                                
00002F80  20 20 3B 20 48 69 67 68  20 62 79 74 65 20 69 73  20 6D 61 6A 6F 72 20 6E  75 6D 62 65 72 2C 20 6C    ; High byte is major number, l
00002FA0  6F 77 20 62 79 74 65 20  69 73 20 6D 69 6E 6F 72  2E 0D 0A 20 20 20 20 20  20 20 20 20 20 20 20 20  ow byte is minor.             
00002FC0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 3B 20 45 58 41  4D 50 4C 45 53 3A 20 76                     ; EXAMPLES: v
00002FE0  33 2E 32 30 20 3D 20 30  33 31 34 68 2C 20 76 31  30 2E 30 31 20 3D 20 30  41 30 31 68 0D 0A 0D 0A  3.20 = 0314h, v10.01 = 0A01h
00003000  6D 69 5F 77 4D 52 43 49  56 65 72 73 69 6F 6E 20  20 20 20 20 64 77 20 20  3F 20 20 20 20 20 20 20  mi_wMRCIVersion     dw  ?       
00003020  3B 20 56 65 72 73 69 6F  6E 20 6E 75 6D 62 65 72  20 6F 66 20 74 68 65 20  4D 52 43 49 20 73 75 70  ; Version number of the MRCI sup
00003040  70 6F 72 74 65 64 20 62  79 0D 0A 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  ported by                     
00003060  20 20 20 20 20 20 20 20  20 20 20 3B 20 74 68 69  73 20 73 65 72 76 65 72  2E 0D 0A 0D 0A 6D 69 5F             ; this server.mi_
00003080  70 66 6E 4F 70 65 72 61  74 65 20 20 20 20 20 20  20 64 64 20 20 3F 20 20  20 20 20 20 20 3B 20 46  pfnOperate       dd  ?       ; F
000030A0  61 72 20 70 6F 69 6E 74  65 72 20 6F 66 20 74 68  65 20 73 65 72 76 65 72  20 63 6F 6D 70 72 65 73  ar pointer of the server compres
000030C0  73 69 6F 6E 20 65 6E 74  72 79 0D 0A 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  sion entry                    
000030E0  20 20 20 20 20 20 20 20  20 20 20 20 3B 20 70 6F  69 6E 74 2E 0D 0A 20 20  20 20 20 20 20 20 20 20              ; point.          
00003100  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3B 20  4E 4F 54 45 3A 20 43 61                        ; NOTE: Ca
00003120  6C 6C 65 72 20 6D 75 73  74 20 65 6E 73 75 72 65  20 74 68 61 74 20 74 68  65 20 57 69 6E 64 6F 77  ller must ensure that the Window
00003140  73 0D 0A 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  s                             
00003160  20 20 20 3B 20 20 20 20  20 20 20 63 72 69 74 69  63 61 6C 20 73 65 63 74  69 6F 6E 20 69 73 20 68     ;       critical section is h
00003180  65 6C 64 20 2A 62 65 66  6F 72 65 2A 0D 0A 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  eld *before*                  
000031A0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3B 20  20 20 20 20 20 20 63 61  6C 6C 69 6E 67 20 74 68                ;       calling th
000031C0  69 73 20 65 6E 74 72 79  20 70 6F 69 6E 74 21 0D  0A 0D 0A 6D 69 5F 66 6C  43 61 70 61 62 69 6C 69  is entry point!mi_flCapabili
000031E0  74 79 20 20 20 20 20 64  77 20 20 3F 20 20 20 20  20 20 20 3B 20 42 69 74  20 66 69 65 6C 64 20 6F  ty     dw  ?       ; Bit field o
00003200  66 20 73 65 72 76 65 72  20 63 61 70 61 62 69 6C  69 74 69 65 73 0D 0A 20  20 20 20 20 20 20 20 20  f server capabilities         
00003220  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3B  20 53 65 65 20 6D 69 63                         ; See mic
00003240  61 70 58 58 58 20 66 6F  72 20 62 69 74 20 64 65  66 69 6E 69 74 69 6F 6E  73 0D 0A 0D 0A 6D 69 5F  apXXX for bit definitionsmi_
00003260  66 6C 48 57 41 73 73 69  73 74 20 20 20 20 20 20  20 64 77 20 20 3F 20 20  20 20 20 20 20 3B 20 42  flHWAssist       dw  ?       ; B
00003280  69 74 20 66 69 65 6C 64  20 6F 66 20 68 61 72 64  77 61 72 65 20 61 73 73  69 73 74 65 64 0D 0A 20  it field of hardware assisted 
000032A0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3B                                 ;
000032C0  20 73 65 72 76 65 72 20  63 61 70 61 62 69 6C 69  74 69 65 73 2E 20 20 4F  6E 65 2D 74 6F 2D 6F 6E   server capabilities.  One-to-on
000032E0  65 0D 0A 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  e                             
00003300  20 20 20 3B 20 63 6F 72  72 65 73 70 6F 6E 64 61  6E 63 65 20 77 69 74 68  20 6D 69 5F 66 6C 43 61     ; correspondance with mi_flCa
00003320  70 61 62 69 6C 69 74 79  0D 0A 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  pability                      
00003340  20 20 20 20 20 20 20 20  20 20 3B 20 62 69 74 73  2E 20 20 41 20 62 69 74  20 73 65 74 20 69 6E 20            ; bits.  A bit set in 
00003360  74 68 69 73 20 66 69 65  6C 64 0D 0A 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  this field                    
00003380  20 20 20 20 20 20 20 20  20 20 20 20 3B 20 69 6E  64 69 63 61 74 65 73 20  74 68 65 20 63 6F 72 72              ; indicates the corr
000033A0  65 73 70 6F 6E 64 69 6E  67 0D 0A 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  esponding                     
000033C0  20 20 20 20 20 20 20 20  20 20 20 3B 20 63 61 70  61 62 69 6C 69 74 79 20  69 73 20 68 61 72 64 77             ; capability is hardw
000033E0  61 72 65 20 61 73 73 69  73 74 65 64 2E 0D 0A 0D  0A 6D 69 5F 63 62 4D 61  78 20 20 20 20 20 20 20  are assisted.mi_cbMax       
00003400  20 20 20 20 20 64 77 20  20 3F 20 20 20 20 20 20  20 3B 20 4D 61 78 69 6D  75 6D 20 6E 75 6D 62 65       dw  ?       ; Maximum numbe
00003420  72 20 6F 66 20 62 79 74  65 73 20 74 68 61 74 20  74 68 65 20 63 6F 6D 70  72 65 73 73 69 6F 6E 0D  r of bytes that the compression
00003440  0A 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20                                 
00003460  20 3B 20 73 65 72 76 69  63 65 73 20 70 72 6F 76  69 64 65 72 20 63 61 6E  20 63 6F 6D 70 72 65 73   ; services provider can compres
00003480  73 20 6F 72 20 64 65 63  6F 6D 70 72 65 73 73 2E  0D 0A 20 20 20 20 20 20  20 20 20 20 20 20 20 20  s or decompress.              
000034A0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 3B 20 52 65 71 75  65 73 74 73 20 74 6F 20                    ; Requests to 
000034C0  63 6F 6D 70 72 65 73 73  20 6F 72 20 64 65 63 6F  6D 70 72 65 73 73 20 62  75 66 66 65 72 73 20 69  compress or decompress buffers i
000034E0  6E 0D 0A 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  n                             
00003500  20 20 20 3B 20 65 78 63  65 73 73 20 6F 66 20 74  68 69 73 20 6C 65 6E 67  74 68 20 77 69 6C 6C 20     ; excess of this length will 
00003520  66 61 69 6C 2E 0D 0A 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  fail.                         
00003540  20 20 20 20 20 20 20 3B  20 41 6C 6C 20 4D 52 43  49 20 73 65 72 76 65 72  73 20 61 72 65 20 74 6F         ; All MRCI servers are to
00003560  20 73 75 70 70 6F 72 74  20 61 74 20 6C 65 61 73  74 0D 0A 20 20 20 20 20  20 20 20 20 20 20 20 20   support at least             
00003580  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 3B 20 38 31 39  32 20 62 79 74 65 20 28                     ; 8192 byte (
000035A0  38 4B 62 29 20 62 6C 6F  63 6B 73 2E 0D 0A 4D 52  43 49 4E 46 4F 20 65 6E  64 73 0D 0A 0D 0A 0D 0A  8Kb) blocks.MRCINFO ends
000035C0  3B 2A 2A 2A 20 20 20 20  4D 52 43 52 45 51 55 45  53 54 20 2D 20 4D 52 43  20 63 6F 6D 70 72 65 73  ;***    MRCREQUEST - MRC compres
000035E0  73 2F 64 65 63 6F 6D 70  72 65 73 73 20 52 65 71  75 65 73 74 20 70 61 63  6B 65 74 0D 0A 3B 0D 0A  s/decompress Request packet;
00003600  3B 20 20 20 20 20 20 20  54 68 69 73 20 73 74 72  75 63 74 75 72 65 20 69  73 20 75 73 65 64 20 74  ;       This structure is used t
00003620  6F 20 70 61 73 73 20 70  61 72 61 6D 65 74 65 72  73 20 74 6F 20 74 68 65  20 73 65 72 76 65 72 20  o pass parameters to the server 
00003640  66 6F 72 0D 0A 3B 20 20  20 20 20 20 20 63 6F 6D  70 72 65 73 73 2F 64 65  63 6F 6D 70 72 65 73 73  for;       compress/decompress
00003660  20 6F 70 65 72 61 74 69  6F 6E 73 2E 0D 0A 3B 0D  0A 3B 20 20 20 20 20 20  20 47 65 6E 65 72 61 6C   operations.;;       General
00003680  20 4E 6F 74 65 73 0D 0A  3B 20 20 20 20 20 20 20  2D 2D 2D 2D 2D 2D 2D 2D  2D 2D 2D 2D 2D 0D 0A 3B   Notes;       -------------;
000036A0  20 20 20 20 20 20 20 28  31 29 20 3C 6D 72 5F 70  62 53 72 63 2C 6D 72 5F  63 62 53 72 63 3E 20 61         (1) <mr_pbSrc,mr_cbSrc> a
000036C0  6E 64 20 3C 6D 72 5F 70  62 44 73 74 2C 6D 72 5F  63 62 44 73 74 3E 20 4D  55 53 54 20 4E 4F 54 0D  nd <mr_pbDst,mr_cbDst> MUST NOT
000036E0  0A 3B 20 20 20 20 20 20  20 20 20 20 20 4F 56 45  52 4C 41 50 21 0D 0A 3B  0D 0A 3B 20 20 20 20 20  ;           OVERLAP!;;     
00003700  20 20 28 32 29 20 54 68  65 20 73 61 66 65 73 74  20 70 72 61 63 74 69 63  65 20 69 73 20 66 6F 72    (2) The safest practice is for
00003720  20 6D 72 5F 63 62 53 72  63 20 61 6E 64 20 6D 72  5F 63 62 44 73 74 20 74  6F 20 62 65 0D 0A 3B 20   mr_cbSrc and mr_cbDst to be; 
00003740  20 20 20 20 20 20 20 20  20 20 69 64 65 6E 74 69  63 61 6C 2E 0D 0A 3B 0D  0A 3B 20 20 20 20 20 20            identical.;;      
00003760  20 44 65 74 61 69 6C 73  20 6F 6E 20 53 74 72 75  63 74 75 72 65 20 4D 65  6D 62 65 72 73 0D 0A 3B   Details on Structure Members;
00003780  20 20 20 20 20 20 20 2D  2D 2D 2D 2D 2D 2D 2D 2D  2D 2D 2D 2D 2D 2D 2D 2D  2D 2D 2D 2D 2D 2D 2D 2D         -------------------------
000037A0  2D 2D 2D 0D 0A 3B 20 20  20 20 20 20 20 6D 72 5F  70 62 53 72 63 0D 0A 3B  20 20 20 20 20 20 20 20  ---;       mr_pbSrc;        
000037C0  20 20 20 54 68 69 73 20  70 6F 69 6E 74 73 20 74  6F 20 74 68 65 20 2A 73  6F 75 72 63 65 2A 20 62     This points to the *source* b
000037E0  75 66 66 65 72 2E 0D 0A  3B 0D 0A 3B 20 20 20 20  20 20 20 20 20 20 20 4F  6E 20 61 20 2A 63 6F 6D  uffer.;;           On a *com
00003800  70 72 65 73 73 2A 20 6F  70 65 72 61 74 69 6F 6E  2C 20 74 68 65 20 63 6F  6E 74 65 6E 74 73 20 6F  press* operation, the contents o
00003820  66 20 74 68 69 73 20 62  75 66 66 65 72 20 61 72  65 0D 0A 3B 20 20 20 20  20 20 20 20 20 20 20 2A  f this buffer are;           *
00003840  75 6E 63 6F 6D 70 72 65  73 73 65 64 2A 20 64 61  74 61 2E 0D 0A 3B 0D 0A  3B 20 20 20 20 20 20 20  uncompressed* data.;;       
00003860  20 20 20 20 4F 6E 20 61  20 2A 64 65 63 6F 6D 70  72 65 73 73 2A 20 6F 70  65 72 61 74 69 6F 6E 2C      On a *decompress* operation,
00003880  20 74 68 65 20 63 6F 6E  74 65 6E 74 73 20 6F 66  20 74 68 69 73 20 62 75  66 66 65 72 20 61 72 65   the contents of this buffer are
000038A0  0D 0A 3B 20 20 20 20 20  20 20 20 20 20 20 2A 63  6F 6D 70 72 65 73 73 65  64 2A 20 64 61 74 61 2E  ;           *compressed* data.
000038C0  0D 0A 3B 0D 0A 3B 20 20  20 20 20 20 20 20 20 20  20 4F 6E 20 61 20 2A 69  6E 63 72 65 6D 65 6E 74  ;;           On a *increment
000038E0  61 6C 20 64 65 63 6F 6D  70 72 65 73 73 2A 20 6F  70 65 72 61 74 69 6F 6E  2C 20 74 68 69 73 20 66  al decompress* operation, this f
00003900  69 65 6C 64 20 70 6F 69  6E 74 73 20 74 6F 0D 0A  3B 20 20 20 20 20 20 20  20 20 20 20 74 68 65 20  ield points to;           the 
00003920  6E 65 78 74 20 73 65 63  74 69 6F 6E 20 6F 66 20  63 6F 6D 70 72 65 73 73  65 64 20 64 61 74 61 20  next section of compressed data 
00003940  74 6F 20 62 65 20 75 6E  63 6F 6D 70 72 65 73 73  65 64 2E 20 20 54 68 65  0D 0A 3B 20 20 20 20 20  to be uncompressed.  The;     
00003960  20 20 20 20 20 20 73 65  72 76 65 72 20 75 70 64  61 74 65 73 20 74 68 65  20 6F 66 66 73 65 74 20        server updates the offset 
00003980  70 6F 72 74 69 6F 6E 20  6F 66 20 74 68 69 73 20  61 64 64 72 65 73 73 20  61 66 74 65 72 20 65 61  portion of this address after ea
000039A0  63 68 0D 0A 3B 20 20 20  20 20 20 20 20 20 20 20  69 6E 63 72 65 6D 65 6E  74 61 6C 20 64 65 63 6F  ch;           incremental deco
000039C0  6D 70 72 65 73 73 20 63  61 6C 6C 20 61 6E 64 20  74 68 65 20 61 70 70 6C  69 63 61 74 69 6F 6E 20  mpress call and the application 
000039E0  73 68 6F 75 6C 64 20 6E  6F 74 20 6D 6F 64 69 66  79 0D 0A 3B 20 20 20 20  20 20 20 20 20 20 20 74  should not modify;           t
00003A00  68 69 73 20 61 64 64 72  65 73 73 20 62 65 74 77  65 65 6E 20 69 6E 63 72  65 6D 65 6E 74 61 6C 20  his address between incremental 
00003A20  64 65 63 6F 6D 70 72 65  73 73 20 63 61 6C 6C 73  20 6F 6E 20 74 68 65 20  73 61 6D 65 20 62 6C 6F  decompress calls on the same blo
00003A40  63 6B 0D 0A 3B 20 20 20  20 20 20 20 20 20 20 20  6F 66 20 63 6F 6D 70 72  65 73 73 65 64 20 64 61  ck;           of compressed da
00003A60  74 61 2E 0D 0A 3B 0D 0A  3B 20 20 20 20 20 20 20  6D 72 5F 63 62 53 72 63  0D 0A 3B 20 20 20 20 20  ta.;;       mr_cbSrc;     
00003A80  20 20 20 20 20 20 54 68  69 73 20 69 73 20 74 68  65 20 73 69 7A 65 20 6F  66 20 74 68 65 20 2A 73        This is the size of the *s
00003AA0  6F 75 72 63 65 2A 20 62  75 66 66 65 72 2E 0D 0A  3B 0D 0A 3B 20 20 20 20  20 20 20 20 20 20 20 4F  ource* buffer.;;           O
00003AC0  6E 20 61 20 2A 63 6F 6D  70 72 65 73 73 2A 20 6F  70 65 72 61 74 69 6F 6E  2C 20 74 68 69 73 20 69  n a *compress* operation, this i
00003AE0  73 20 74 68 65 20 61 6D  6F 75 6E 74 20 6F 66 20  64 61 74 61 20 74 6F 0D  0A 3B 20 20 20 20 20 20  s the amount of data to;      
00003B00  20 20 20 20 20 62 65 20  63 6F 6D 70 72 65 73 73  65 64 2E 0D 0A 3B 0D 0A  3B 20 20 20 20 20 20 20       be compressed.;;       
00003B20  20 20 20 20 46 6F 72 20  61 20 2A 64 65 63 6F 6D  70 72 65 73 73 2A 20 6F  70 65 72 61 74 69 6F 6E      For a *decompress* operation
00003B40  2C 20 74 68 69 73 20 76  61 6C 75 65 20 69 73 20  69 67 6E 6F 72 65 64 2E  20 20 54 68 65 20 61 6D  , this value is ignored.  The am
00003B60  6F 75 6E 74 0D 0A 3B 20  20 20 20 20 20 20 20 20  20 20 6F 66 20 64 61 74  61 20 74 6F 20 62 65 20  ount;           of data to be 
00003B80  64 65 63 6F 6D 70 72 65  73 73 65 64 20 69 73 20  73 70 65 63 69 66 69 65  64 20 62 79 20 74 68 65  decompressed is specified by the
00003BA0  20 6D 72 5F 63 62 44 73  74 20 70 61 72 61 6D 65  74 65 72 2C 0D 0A 3B 20  20 20 20 20 20 20 20 20   mr_cbDst parameter,;         
00003BC0  20 20 64 65 73 63 72 69  62 65 64 20 62 65 6C 6F  77 2E 0D 0A 3B 0D 0A 3B  20 20 20 20 20 20 20 6D    described below.;;       m
00003BE0  72 5F 52 45 53 45 52 56  45 44 0D 0A 3B 20 20 20  20 20 20 20 20 20 20 20  52 45 53 45 52 56 45 44  r_RESERVED;           RESERVED
00003C00  20 66 6F 72 20 66 75 74  75 72 65 20 75 73 65 2E  20 20 53 68 6F 75 6C 64  20 62 65 20 30 2E 0D 0A   for future use.  Should be 0.
00003C20  3B 0D 0A 3B 20 20 20 20  20 20 20 6D 72 5F 70 62  44 73 74 0D 0A 3B 20 20  20 20 20 20 20 20 20 20  ;;       mr_pbDst;          
00003C40  20 54 68 69 73 20 70 6F  69 6E 74 73 20 74 6F 20  74 68 65 20 2A 64 65 73  74 69 6E 61 74 69 6F 6E   This points to the *destination
00003C60  2A 20 62 75 66 66 65 72  2E 0D 0A 3B 0D 0A 3B 20  20 20 20 20 20 20 20 20  20 20 4F 6E 20 61 20 2A  * buffer.;;           On a *
00003C80  63 6F 6D 70 72 65 73 73  2A 20 6F 70 65 72 61 74  69 6F 6E 2C 20 74 68 69  73 20 62 75 66 66 65 72  compress* operation, this buffer
00003CA0  20 72 65 63 65 69 76 65  73 20 74 68 65 20 2A 63  6F 6D 70 72 65 73 73 65  64 2A 0D 0A 3B 20 20 20   receives the *compressed*;   
00003CC0  20 20 20 20 20 20 20 20  72 65 73 75 6C 74 20 6F  66 20 74 68 65 20 6F 70  65 72 61 74 69 6F 6E 2E          result of the operation.
00003CE0  0D 0A 3B 0D 0A 3B 20 20  20 20 20 20 20 20 20 20  20 4F 6E 20 61 20 2A 64  65 63 6F 6D 70 72 65 73  ;;           On a *decompres
00003D00  73 2A 20 6F 70 65 72 61  74 69 6F 6E 2C 20 74 68  69 73 20 62 75 66 66 65  72 20 72 65 63 65 69 76  s* operation, this buffer receiv
00003D20  65 73 20 74 68 65 0D 0A  3B 20 20 20 20 20 20 20  20 20 20 20 2A 75 6E 63  6F 6D 70 72 65 73 73 65  es the;           *uncompresse
00003D40  64 2A 20 72 65 73 75 6C  74 20 6F 66 20 74 68 65  20 6F 70 65 72 61 74 69  6F 6E 2E 0D 0A 3B 0D 0A  d* result of the operation.;
00003D60  3B 20 20 20 20 20 20 20  20 20 20 20 4F 6E 20 61  20 2A 69 6E 63 72 65 6D  65 6E 74 61 6C 20 64 65  ;           On a *incremental de
00003D80  63 6F 6D 70 72 65 73 73  2A 20 6F 70 65 72 61 74  69 6F 6E 2C 20 74 68 69  73 20 66 69 65 6C 64 20  compress* operation, this field 
00003DA0  70 6F 69 6E 74 73 20 74  6F 0D 0A 3B 20 20 20 20  20 20 20 20 20 20 20 74  68 65 20 6E 65 78 74 20  points to;           the next 
00003DC0  6C 6F 63 61 74 69 6F 6E  20 69 6E 20 74 68 65 20  64 65 73 74 69 6E 61 74  69 6F 6E 20 62 75 66 66  location in the destination buff
00003DE0  65 72 20 77 68 65 72 65  20 75 6E 63 6F 6D 70 72  65 73 73 65 64 0D 0A 3B  20 20 20 20 20 20 20 20  er where uncompressed;        
00003E00  20 20 20 64 61 74 61 20  69 73 20 74 6F 20 62 65  20 73 74 6F 72 65 64 2E  20 20 54 68 65 20 73 65     data is to be stored.  The se
00003E20  72 76 65 72 20 75 70 64  61 74 65 73 20 74 68 65  20 6F 66 66 73 65 74 20  70 6F 72 74 69 6F 6E 20  rver updates the offset portion 
00003E40  6F 66 0D 0A 3B 20 20 20  20 20 20 20 20 20 20 20  74 68 69 73 20 61 64 64  72 65 73 73 20 61 66 74  of;           this address aft
00003E60  65 72 20 65 61 63 68 20  69 6E 63 72 65 6D 65 6E  74 61 6C 20 64 65 63 6F  6D 70 72 65 73 73 20 63  er each incremental decompress c
00003E80  61 6C 6C 2C 20 61 6E 64  20 74 68 65 0D 0A 3B 20  20 20 20 20 20 20 20 20  20 20 61 70 70 6C 69 63  all, and the;           applic
00003EA0  61 74 69 6F 6E 20 73 68  6F 75 6C 64 20 6E 6F 74  20 6D 6F 64 69 66 79 20  74 68 69 73 20 61 64 64  ation should not modify this add
00003EC0  72 65 73 73 20 62 65 74  77 65 65 6E 20 69 6E 63  72 65 6D 65 6E 74 61 6C  0D 0A 3B 20 20 20 20 20  ress between incremental;     
00003EE0  20 20 20 20 20 20 64 65  63 6F 6D 70 72 65 73 73  20 63 61 6C 6C 73 20 6F  6E 20 74 68 65 20 73 61        decompress calls on the sa
00003F00  6D 65 20 62 6C 6F 63 6B  20 6F 66 20 63 6F 6D 70  72 65 73 73 65 64 20 64  61 74 61 2E 0D 0A 3B 0D  me block of compressed data.;
00003F20  0A 3B 20 20 20 20 20 20  20 6D 72 5F 63 62 44 73  74 0D 0A 3B 20 20 20 20  20 20 20 20 20 20 20 4F  ;       mr_cbDst;           O
00003F40  6E 20 49 4E 50 55 54 2C  20 66 6F 72 20 61 20 2A  63 6F 6D 70 72 65 73 73  2A 20 6F 70 65 72 61 74  n INPUT, for a *compress* operat
00003F60  69 6F 6E 2C 20 74 68 69  73 20 69 73 20 74 68 65  20 73 69 7A 65 20 6F 66  20 74 68 65 0D 0A 3B 20  ion, this is the size of the; 
00003F80  20 20 20 20 20 20 20 20  20 20 2A 64 65 73 74 69  6E 61 74 69 6F 6E 2A 20  62 75 66 66 65 72 2E 20            *destination* buffer. 
00003FA0  49 66 20 74 68 65 20 63  6F 6D 70 72 65 73 73 65  64 20 64 61 74 61 20 77  6F 75 6C 64 20 6F 76 65  If the compressed data would ove
00003FC0  72 66 6C 6F 77 0D 0A 3B  20 20 20 20 20 20 20 20  20 20 20 74 68 69 73 20  62 75 66 66 65 72 20 6C  rflow;           this buffer l
00003FE0  65 6E 67 74 68 2C 20 74  68 65 6E 20 74 68 65 20  6F 70 65 72 61 74 69 6F  6E 20 66 61 69 6C 73 20  ength, then the operation fails 
00004000  61 6E 64 20 74 68 65 20  73 65 72 76 65 72 0D 0A  3B 20 20 20 20 20 20 20  20 20 20 20 72 65 74 75  and the server;           retu
00004020  72 6E 73 20 74 68 65 20  65 72 72 6F 72 20 4D 52  43 49 5F 45 52 52 4F 52  5F 42 55 46 46 45 52 5F  rns the error MRCI_ERROR_BUFFER_
00004040  4F 56 45 52 46 4C 4F 57  2E 0D 0A 3B 0D 0A 3B 20  20 20 20 20 20 20 20 20  20 20 4F 6E 20 49 4E 50  OVERFLOW.;;           On INP
00004060  55 54 2C 20 66 6F 72 20  61 20 2A 64 65 63 6F 6D  70 72 65 73 73 2A 20 6F  70 65 72 61 74 69 6F 6E  UT, for a *decompress* operation
00004080  2C 20 74 68 69 73 20 6D  75 73 74 20 62 65 20 45  58 41 43 54 4C 59 20 74  68 65 0D 0A 3B 20 20 20  , this must be EXACTLY the;   
000040A0  20 20 20 20 20 20 20 20  6E 75 6D 62 65 72 20 6F  66 20 62 79 74 65 73 20  74 68 61 74 20 77 69 6C          number of bytes that wil
000040C0  6C 20 62 65 20 64 65 63  6F 6D 70 72 65 73 73 65  64 2C 20 61 73 20 74 68  65 20 4D 52 43 49 20 73  l be decompressed, as the MRCI s
000040E0  65 72 76 65 72 0D 0A 3B  20 20 20 20 20 20 20 20  20 20 20 75 73 65 73 20  74 68 69 73 20 69 6E 66  erver;           uses this inf
00004100  6F 72 6D 61 74 69 6F 6E  20 74 6F 20 64 65 74 65  72 6D 69 6E 65 20 77 68  65 6E 20 74 6F 20 73 74  ormation to determine when to st
00004120  6F 70 20 64 65 63 6F 6D  70 72 65 73 73 69 6E 67  2E 0D 0A 3B 0D 0A 3B 20  20 20 20 20 20 20 20 20  op decompressing.;;         
00004140  20 20 4F 6E 20 49 4E 50  55 54 2C 20 66 6F 72 20  61 6E 20 2A 69 6E 63 72  65 6D 65 6E 74 61 6C 20    On INPUT, for an *incremental 
00004160  64 65 63 6F 6D 70 72 65  73 73 2A 20 6F 70 65 72  61 74 69 6F 6E 2C 20 74  68 69 73 20 69 73 0D 0A  decompress* operation, this is
00004180  3B 20 20 20 20 20 20 20  20 20 20 20 74 68 65 20  6E 75 6D 62 65 72 20 6F  66 20 62 79 74 65 73 20  ;           the number of bytes 
000041A0  74 68 61 74 20 73 68 6F  75 6C 64 20 75 6E 63 6F  6D 70 72 65 73 73 65 64  20 61 74 20 74 68 69 73  that should uncompressed at this
000041C0  20 74 69 6D 65 2E 20 20  54 68 69 73 0D 0A 3B 20  20 20 20 20 20 20 20 20  20 20 77 69 6C 6C 20 74   time.  This;           will t
000041E0  79 70 69 63 61 6C 6C 79  20 62 65 20 6C 65 73 73  20 74 68 61 6E 20 74 68  65 20 6F 72 69 67 69 6E  ypically be less than the origin
00004200  61 6C 20 75 6E 63 6F 6D  70 72 65 73 73 65 64 20  73 69 7A 65 20 6F 66 20  74 68 65 0D 0A 3B 20 20  al uncompressed size of the;  
00004220  20 20 20 20 20 20 20 20  20 63 6F 6D 70 72 65 73  73 65 64 20 62 6C 6F 63  6B 2E 20 20 41 20 73 69           compressed block.  A si
00004240  6E 67 6C 65 20 63 6F 6D  70 72 65 73 73 65 64 20  62 6C 6F 63 6B 20 63 61  6E 20 62 65 20 75 6E 63  ngle compressed block can be unc
00004260  6F 6D 70 72 65 73 73 65  64 20 69 6E 0D 0A 3B 20  20 20 20 20 20 20 20 20  20 20 73 74 65 70 73 20  ompressed in;           steps 
00004280  62 79 20 6D 61 6B 69 6E  67 20 6D 75 6C 74 69 70  6C 65 20 69 6E 63 72 65  6D 65 6E 74 61 6C 20 64  by making multiple incremental d
000042A0  65 63 6F 6D 70 72 65 73  73 20 63 61 6C 6C 73 20  66 6F 72 20 73 6D 61 6C  6C 65 72 0D 0A 3B 20 20  ecompress calls for smaller;  
000042C0  20 20 20 20 20 20 20 20  20 73 69 7A 65 64 20 62  6C 6F 63 6B 73 2E 20 20  48 6F 77 65 76 65 72 2C           sized blocks.  However,
000042E0  20 74 6F 20 69 6E 63 72  65 6D 65 6E 74 61 6C 6C  79 20 64 65 63 6F 6D 70  72 65 73 73 20 61 6E 20   to incrementally decompress an 
00004300  65 6E 74 69 72 65 0D 0A  3B 20 20 20 20 20 20 20  20 20 20 20 63 6F 6D 70  72 65 73 73 65 64 20 62  entire;           compressed b
00004320  6C 6F 63 6B 20 72 65 71  75 69 72 65 73 20 74 68  61 74 20 74 68 65 20 73  75 6D 20 6F 66 20 74 68  lock requires that the sum of th
00004340  65 20 69 6E 64 69 76 69  64 75 61 6C 20 6D 72 5F  63 62 44 73 74 0D 0A 3B  20 20 20 20 20 20 20 20  e individual mr_cbDst;        
00004360  20 20 20 63 6F 75 6E 74  73 20 62 65 20 45 58 41  43 54 4C 59 20 74 68 65  20 6E 75 6D 62 65 72 20     counts be EXACTLY the number 
00004380  6F 66 20 62 79 74 65 73  20 74 68 61 74 20 77 65  72 65 20 6F 72 69 67 69  6E 61 6C 6C 79 0D 0A 3B  of bytes that were originally;
000043A0  20 20 20 20 20 20 20 20  20 20 20 63 6F 6D 70 72  65 73 73 65 64 20 73 6F  20 74 68 65 20 4D 52 43             compressed so the MRC
000043C0  49 20 73 65 72 76 65 72  20 63 61 6E 20 64 65 74  65 72 6D 69 6E 65 20 77  68 65 6E 20 74 6F 20 73  I server can determine when to s
000043E0  74 6F 70 0D 0A 3B 20 20  20 20 20 20 20 20 20 20  20 64 65 63 6F 6D 70 72  65 73 73 69 6E 67 2E 0D  top;           decompressing.
00004400  0A 3B 0D 0A 3B 0D 0A 3B  20 20 20 20 20 20 20 20  20 20 20 4F 6E 20 4F 55  54 50 55 54 2C 20 74 68  ;;;           On OUTPUT, th
00004420  65 20 53 65 72 76 65 72  20 75 70 64 61 74 65 73  20 74 68 69 73 20 66 69  65 6C 64 20 77 69 74 68  e Server updates this field with
00004440  20 74 68 65 20 61 63 74  75 61 6C 20 73 69 7A 65  0D 0A 3B 20 20 20 20 20  20 20 20 20 20 20 6F 66   the actual size;           of
00004460  20 74 68 65 20 72 65 73  75 6C 74 69 6E 67 20 63  6F 6D 70 72 65 73 73 65  64 2F 75 6E 63 6F 6D 70   the resulting compressed/uncomp
00004480  72 65 73 73 65 64 20 64  61 74 61 2E 0D 0A 3B 0D  0A 3B 20 20 20 20 20 20  20 6D 72 5F 63 62 43 68  ressed data.;;       mr_cbCh
000044A0  75 6E 6B 0D 0A 3B 20 20  20 20 20 20 20 20 20 20  20 54 68 69 73 20 69 73  20 69 6E 66 6F 72 6D 61  unk;           This is informa
000044C0  74 69 6F 6E 20 74 68 61  74 20 74 68 65 20 53 65  72 76 65 72 20 63 6F 6D  70 72 65 73 73 20 72 6F  tion that the Server compress ro
000044E0  75 74 69 6E 65 73 20 63  61 6E 20 75 73 65 20 74  6F 0D 0A 3B 20 20 20 20  20 20 20 20 20 20 20 22  utines can use to;           "
00004500  65 61 72 6C 79 20 6F 75  74 22 20 6F 66 20 74 68  65 20 63 6F 6D 70 72 65  73 73 69 6F 6E 20 61 73  early out" of the compression as
00004520  20 65 61 72 6C 79 20 61  73 20 70 6F 73 73 69 62  6C 65 2E 0D 0A 3B 0D 0A  3B 20 20 20 20 20 20 20   early as possible.;;       
00004540  20 20 20 20 56 61 6C 69  64 20 76 61 6C 75 65 73  20 61 72 65 20 31 20 28  63 6C 69 65 6E 74 20 69      Valid values are 1 (client i
00004560  73 20 69 6E 74 65 72 65  73 74 65 64 20 69 6E 20  73 61 76 69 6E 67 73 20  61 73 20 73 6D 61 6C 6C  s interested in savings as small
00004580  20 61 73 0D 0A 3B 20 20  20 20 20 20 20 20 20 20  20 31 20 62 79 74 65 29  20 74 6F 20 33 32 37 36   as;           1 byte) to 3276
000045A0  37 2E 20 20 44 62 6C 53  70 61 63 65 20 70 61 73  73 65 73 20 35 31 32 2C  20 61 6E 64 20 46 6C 61  7.  DblSpace passes 512, and Fla
000045C0  73 68 20 46 69 6C 65 20  53 79 73 74 65 6D 0D 0A  3B 20 20 20 20 20 20 20  20 20 20 20 70 61 73 73  sh File System;           pass
000045E0  65 73 20 31 2E 0D 0A 3B  0D 0A 3B 20 20 20 20 20  20 20 20 20 20 20 54 68  69 73 20 66 69 65 6C 64  es 1.;;           This field
00004600  20 69 73 20 6D 6F 73 74  20 65 61 73 69 6C 79 20  65 78 70 6C 61 69 6E 65  64 20 62 79 20 67 69 76   is most easily explained by giv
00004620  69 6E 67 20 61 6E 20 65  78 61 6D 70 6C 65 3A 0D  0A 3B 0D 0A 3B 20 20 20  20 20 20 20 20 20 20 20  ing an example:;;           
00004640  45 78 61 6D 70 6C 65 3A  0D 0A 3B 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 44 62 6C 53 70 61  Example:;               DblSpa
00004660  63 65 20 64 6F 65 73 20  73 70 61 63 65 20 61 6C  6C 6F 63 61 74 69 6F 6E  20 69 6E 20 63 68 75 6E  ce does space allocation in chun
00004680  6B 73 20 6F 66 20 35 31  32 20 62 79 74 65 73 20  28 74 68 65 0D 0A 3B 20  20 20 20 20 20 20 20 20  ks of 512 bytes (the;         
000046A0  20 20 20 20 20 20 63 6F  6D 6D 6F 6E 20 73 65 63  74 6F 72 20 73 69 7A 65  20 6F 6E 20 61 20 64 69        common sector size on a di
000046C0  73 6B 29 2E 0D 0A 3B 0D  0A 3B 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 54 68 65 20 63 6F 6D  sk).;;               The com
000046E0  70 72 65 73 73 69 6F 6E  20 73 65 72 76 65 72 20  63 61 6E 20 75 73 65 20  74 68 69 73 20 69 6E 66  pression server can use this inf
00004700  6F 72 6D 61 74 69 6F 6E  20 66 6F 72 20 74 77 6F  0D 0A 3B 20 20 20 20 20  20 20 20 20 20 20 20 20  ormation for two;             
00004720  20 20 6F 70 74 69 6D 69  7A 61 74 69 6F 6E 73 3A  0D 0A 3B 0D 0A 3B 20 20  20 20 20 20 20 20 20 20    optimizations:;;          
00004740  20 20 20 20 20 28 31 29  20 49 66 20 74 68 65 20  53 65 72 76 65 72 20 63  61 6E 6E 6F 74 20 63 6F       (1) If the Server cannot co
00004760  6D 70 72 65 73 73 20 74  68 65 20 75 6E 63 6F 6D  70 72 65 73 73 65 64 20  64 61 74 61 0D 0A 3B 20  mpress the uncompressed data; 
00004780  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 65 6E 6F 75 67 68  20 74 6F 20 73 61 76 65                    enough to save
000047A0  20 61 74 20 6C 65 61 73  74 20 35 31 32 20 62 79  74 65 73 2C 20 74 68 65  6E 20 74 68 65 20 64 61   at least 512 bytes, then the da
000047C0  74 61 20 69 73 0D 0A 3B  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 2A 69 6E 63 6F  ta is;                   *inco
000047E0  6D 70 72 65 73 73 69 62  6C 65 2A 20 61 73 20 66  61 72 20 61 73 20 44 62  6C 53 70 61 63 65 20 69  mpressible* as far as DblSpace i
00004800  73 20 63 6F 6E 63 65 72  6E 65 64 2C 20 65 76 65  6E 0D 0A 3B 20 20 20 20  20 20 20 20 20 20 20 20  s concerned, even;            
00004820  20 20 20 20 20 20 20 69  66 20 69 74 20 63 6F 75  6C 64 20 62 65 20 63 6F  6D 70 72 65 73 73 65 64         if it could be compressed
00004840  20 74 6F 20 73 61 76 65  20 66 65 77 65 72 20 74  68 61 6E 20 35 31 32 20  62 79 74 65 73 2E 0D 0A   to save fewer than 512 bytes.
00004860  3B 0D 0A 3B 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 28 32 29 20 57  68 69 6C 65 20 63 6F 6D  ;;               (2) While com
00004880  70 72 65 73 73 69 6E 67  2C 20 69 66 20 74 68 65  20 53 65 72 76 65 72 20  67 65 74 73 20 74 6F 20  pressing, if the Server gets to 
000048A0  61 20 70 6F 69 6E 74 20  77 68 65 72 65 0D 0A 3B  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  a point where;                
000048C0  20 20 20 74 68 65 20 72  65 6D 61 69 6E 69 6E 67  20 75 6E 63 6F 6D 70 72  65 73 73 65 64 20 64 61     the remaining uncompressed da
000048E0  74 61 20 69 73 20 6F 66  20 73 75 63 68 20 61 20  6C 65 6E 67 74 68 20 74  68 61 74 0D 0A 3B 20 20  ta is of such a length that;  
00004900  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 69 74 20 63 61 6E 20  62 65 20 65 6E 63 6F 64                   it can be encod
00004920  65 64 20 73 69 6D 70 6C  79 20 28 77 69 74 68 6F  75 74 20 74 61 62 6C 65  20 6C 6F 6F 6B 75 70 73  ed simply (without table lookups
00004940  2C 20 65 74 63 2E 29 0D  0A 3B 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 61 6E 64  , etc.);                   and
00004960  20 6E 6F 74 20 63 72 6F  73 73 20 61 20 35 31 32  20 62 79 74 65 20 62 6F  75 6E 64 61 72 79 2C 20   not cross a 512 byte boundary, 
00004980  74 68 65 6E 20 74 68 65  20 53 65 72 76 65 72 20  63 61 6E 0D 0A 3B 20 20  20 20 20 20 20 20 20 20  then the Server can;          
000049A0  20 20 20 20 20 20 20 20  20 64 6F 20 74 68 65 20  73 69 6D 70 6C 65 20 65  6E 63 6F 64 69 6E 67 2E           do the simple encoding.
000049C0  0D 0A 3B 0D 0A 3B 20 20  20 20 20 20 20 20 20 20  20 49 74 20 69 73 20 6C  69 6B 65 6C 79 20 74 68  ;;           It is likely th
000049E0  61 74 20 74 68 65 73 65  20 6F 70 74 69 6D 69 7A  61 74 69 6F 6E 73 20 77  69 6C 6C 20 62 65 20 68  at these optimizations will be h
00004A00  61 72 64 20 74 6F 20 70  65 72 66 6F 72 6D 0D 0A  3B 20 20 20 20 20 20 20  20 20 20 20 71 75 69 63  ard to perform;           quic
00004A20  6B 6C 79 20 69 6E 20 73  6F 66 74 77 61 72 65 2C  20 62 75 74 20 69 74 20  69 73 20 70 6F 73 73 69  kly in software, but it is possi
00004A40  62 6C 65 20 74 68 61 74  20 68 61 72 64 77 61 72  65 20 63 61 6E 20 64 6F  0D 0A 3B 20 20 20 20 20  ble that hardware can do;     
00004A60  20 20 20 20 20 20 74 68  65 73 65 20 6F 70 74 69  6D 69 7A 61 74 69 6F 6E  73 20 77 69 74 68 6F 75        these optimizations withou
00004A80  74 20 61 6E 79 20 70 65  72 66 6F 72 6D 61 6E 63  65 20 6C 6F 73 73 2E 0D  0A 3B 0D 0A 3B 20 20 20  t any performance loss.;;   
00004AA0  20 20 20 20 6D 72 5F 64  77 49 6E 63 44 65 63 6F  6D 70 0D 0A 3B 20 20 20  20 20 20 20 20 20 20 20      mr_dwIncDecomp;           
00004AC0  4E 4F 54 45 3A 20 54 68  69 73 20 69 73 20 75 73  65 64 20 66 6F 72 20 49  6E 63 72 65 6D 65 6E 74  NOTE: This is used for Increment
00004AE0  61 6C 20 44 65 63 6F 6D  70 72 65 73 73 69 6F 6E  20 6F 6E 6C 79 2E 0D 0A  3B 0D 0A 3B 20 20 20 20  al Decompression only.;;    
00004B00  20 20 20 20 20 20 20 46  6F 72 20 74 68 65 20 66  69 72 73 74 20 2A 69 6E  63 72 65 6D 65 6E 74 61         For the first *incrementa
00004B20  6C 20 64 65 63 6F 6D 70  72 65 73 73 69 6F 6E 2A  20 63 61 6C 6C 20 6F 6E  20 61 20 63 6F 6D 70 72  l decompression* call on a compr
00004B40  65 73 73 65 64 0D 0A 3B  20 20 20 20 20 20 20 20  20 20 20 62 6C 6F 63 6B  2C 20 74 68 69 73 20 76  essed;           block, this v
00004B60  61 6C 75 65 20 6D 75 73  74 20 62 65 20 73 65 74  20 74 6F 20 7A 65 72 6F  2E 20 20 55 70 6F 6E 20  alue must be set to zero.  Upon 
00004B80  72 65 74 75 72 6E 2C 20  74 68 65 20 66 69 65 6C  64 0D 0A 3B 20 20 20 20  20 20 20 20 20 20 20 77  return, the field;           w
00004BA0  69 6C 6C 20 63 6F 6E 74  61 69 6E 20 73 74 61 74  65 20 69 6E 66 6F 72 6D  61 74 69 6F 6E 20 66 6F  ill contain state information fo
00004BC0  72 20 75 73 65 20 6F 6E  20 74 68 65 20 6E 65 78  74 20 69 6E 63 72 65 6D  65 6E 74 61 6C 0D 0A 3B  r use on the next incremental;
00004BE0  20 20 20 20 20 20 20 20  20 20 20 64 65 63 6F 6D  70 72 65 73 73 20 63 61  6C 6C 2E 20 20 54 68 69             decompress call.  Thi
00004C00  73 20 76 61 6C 75 65 20  6D 75 73 74 20 6E 6F 74  20 62 65 20 6D 6F 64 69  66 69 65 64 20 62 65 74  s value must not be modified bet
00004C20  77 65 65 6E 0D 0A 3B 20  20 20 20 20 20 20 20 20  20 20 73 75 62 73 65 71  75 65 6E 74 20 69 6E 63  ween;           subsequent inc
00004C40  72 65 6D 65 6E 74 61 6C  20 64 65 63 6F 6D 70 72  65 73 73 20 63 61 6C 6C  73 20 6F 6E 20 74 68 65  remental decompress calls on the
00004C60  20 73 61 6D 65 20 63 6F  6D 70 72 65 73 73 65 64  0D 0A 3B 20 20 20 20 20  20 20 20 20 20 20 62 6C   same compressed;           bl
00004C80  6F 63 6B 2E 0D 0A 0D 0A  4D 52 43 52 45 51 55 45  53 54 20 20 73 74 72 75  63 0D 0A 6D 72 5F 70 62  ock.MRCREQUEST  strucmr_pb
00004CA0  53 72 63 20 20 20 20 20  20 20 20 64 64 20 20 3F  20 20 20 3B 20 50 6F 69  6E 74 65 72 20 74 6F 20  Src        dd  ?   ; Pointer to 
00004CC0  73 6F 75 72 63 65 20 62  75 66 66 65 72 0D 0A 6D  72 5F 63 62 53 72 63 20  20 20 20 20 20 20 20 64  source buffermr_cbSrc        d
00004CE0  77 20 20 3F 20 20 20 3B  20 53 69 7A 65 20 6F 66  20 73 6F 75 72 63 65 20  62 75 66 66 65 72 2C 20  w  ?   ; Size of source buffer, 
00004D00  69 6E 20 62 79 74 65 73  0D 0A 6D 72 5F 52 45 53  45 52 56 45 44 20 20 20  20 20 64 77 20 20 3F 20  in bytesmr_RESERVED     dw  ? 
00004D20  20 20 3B 20 52 45 53 45  52 56 45 44 20 66 6F 72  20 66 75 74 75 72 65 20  75 73 65 2E 0D 0A 6D 72    ; RESERVED for future use.mr
00004D40  5F 70 62 44 73 74 20 20  20 20 20 20 20 20 64 64  20 20 3F 20 20 20 3B 20  50 6F 69 6E 74 65 72 20  _pbDst        dd  ?   ; Pointer 
00004D60  74 6F 20 64 65 73 74 69  6E 61 74 69 6F 6E 20 62  75 66 66 65 72 0D 0A 6D  72 5F 63 62 44 73 74 20  to destination buffermr_cbDst 
00004D80  20 20 20 20 20 20 20 64  77 20 20 3F 20 20 20 3B  20 53 69 7A 65 20 6F 66  20 64 65 73 74 69 6E 61         dw  ?   ; Size of destina
00004DA0  74 69 6F 6E 20 62 75 66  66 65 72 2C 20 69 6E 20  62 79 74 65 73 0D 0A 6D  72 5F 63 62 43 68 75 6E  tion buffer, in bytesmr_cbChun
00004DC0  6B 20 20 20 20 20 20 64  77 20 20 3F 20 20 20 3B  20 43 6C 69 65 6E 74 20  63 6F 6D 70 72 65 73 73  k      dw  ?   ; Client compress
00004DE0  65 64 20 64 61 74 61 20  73 74 6F 72 61 67 65 20  63 68 75 6E 6B 20 73 69  7A 65 20 28 73 65 65 20  ed data storage chunk size (see 
00004E00  61 62 6F 76 65 21 29 0D  0A 6D 72 5F 64 77 49 6E  63 44 65 63 6F 6D 70 20  20 64 64 20 20 3F 20 20  above!)mr_dwIncDecomp  dd  ?  
00004E20  20 3B 20 49 6E 63 72 65  6D 65 6E 74 61 6C 20 44  65 63 6F 6D 70 72 65 73  73 69 6F 6E 20 73 74 61   ; Incremental Decompression sta
00004E40  74 65 0D 0A 4D 52 43 52  45 51 55 45 53 54 20 20  65 6E 64 73 0D 0A 0D 0A  0D 0A 3B 2A 2A 2A 20 20  teMRCREQUEST  ends;***  
00004E60  20 20 4D 52 43 49 5F 45  52 52 4F 52 5F 58 58 58  20 64 65 66 69 6E 69 74  69 6F 6E 73 0D 0A 3B 0D    MRCI_ERROR_XXX definitions;
00004E80  0A 3B 20 20 20 20 20 20  20 45 72 72 6F 72 20 63  6F 64 65 73 20 72 65 74  75 72 6E 65 64 20 66 72  ;       Error codes returned fr
00004EA0  6F 6D 20 4D 52 43 49 4F  70 65 72 61 74 65 0D 0A  3B 0D 0A 4D 52 43 49 5F  45 52 52 4F 52 5F 4E 4F  om MRCIOperate;MRCI_ERROR_NO
00004EC0  4E 45 20 20 20 20 20 20  20 20 20 20 20 20 20 65  71 75 20 20 20 20 20 30  20 20 20 3B 20 4E 6F 20  NE             equ     0   ; No 
00004EE0  65 72 72 6F 72 0D 0A 4D  52 43 49 5F 45 52 52 4F  52 5F 4E 4F 54 5F 53 55  50 50 4F 52 54 45 44 20  errorMRCI_ERROR_NOT_SUPPORTED 
00004F00  20 20 20 65 71 75 20 20  20 20 20 31 20 20 20 3B  20 55 6E 73 75 70 70 6F  72 74 65 64 20 6F 70 65     equ     1   ; Unsupported ope
00004F20  72 61 74 69 6F 6E 20 72  65 71 75 65 73 74 65 64  0D 0A 4D 52 43 49 5F 45  52 52 4F 52 5F 42 55 53  ration requestedMRCI_ERROR_BUS
00004F40  59 20 20 20 20 20 20 20  20 20 20 20 20 20 65 71  75 20 20 20 20 20 32 20  20 20 3B 20 53 65 72 76  Y             equ     2   ; Serv
00004F60  65 72 20 69 73 20 62 75  73 79 0D 0A 4D 52 43 49  5F 45 52 52 4F 52 5F 42  55 46 46 45 52 5F 4F 56  er is busyMRCI_ERROR_BUFFER_OV
00004F80  45 52 46 4C 4F 57 20 20  65 71 75 20 20 20 20 20  33 20 20 20 3B 20 44 65  73 74 69 6E 61 74 69 6F  ERFLOW  equ     3   ; Destinatio
00004FA0  6E 20 62 75 66 66 65 72  20 74 6F 6F 20 73 6D 61  6C 6C 0D 0A 4D 52 43 49  5F 45 52 52 4F 52 5F 4E  n buffer too smallMRCI_ERROR_N
00004FC0  4F 54 5F 43 4F 4D 50 52  45 53 53 49 42 4C 45 20  65 71 75 20 20 20 20 20  34 20 20 20 3B 20 44 61  OT_COMPRESSIBLE equ     4   ; Da
00004FE0  74 61 20 63 6F 75 6C 64  20 6E 6F 74 20 62 65 20  63 6F 6D 70 72 65 73 73  65 64 0D 0A 4D 52 43 49  ta could not be compressedMRCI
00005000  5F 45 52 52 4F 52 5F 42  41 44 5F 4D 52 43 5F 46  4F 52 4D 41 54 20 20 20  65 71 75 20 20 20 20 20  _ERROR_BAD_MRC_FORMAT   equ     
00005020  35 20 20 20 3B 20 43 6F  6D 70 72 65 73 73 65 64  20 64 61 74 61 20 66 6F  72 6D 61 74 20 69 73 20  5   ; Compressed data format is 
00005040  62 61 64 0D 0A 0D 0A 3B  2A 2A 2A 20 20 20 20 44  65 66 69 6E 65 4D 52 43  51 75 65 72 79 20 2D 20  bad;***    DefineMRCQuery - 
00005060  4D 61 63 72 6F 20 74 6F  20 67 65 6E 65 72 61 74  65 20 4D 52 43 51 75 65  72 79 20 66 75 6E 63 74  Macro to generate MRCQuery funct
00005080  69 6F 6E 0D 0A 3B 0D 0A  3B 20 20 20 20 20 20 20  50 75 74 20 74 68 69 73  20 6D 61 63 72 6F 20 73  ion;;       Put this macro s
000050A0  6F 6D 65 77 68 65 72 65  20 69 6E 20 79 6F 75 72  20 63 6F 64 65 20 73 65  67 6D 65 6E 74 2E 20 20  omewhere in your code segment.  
000050C0  49 74 20 77 69 6C 6C 20  64 65 66 69 6E 65 20 74  68 65 0D 0A 3B 20 20 20  20 20 20 20 4D 52 43 51  It will define the;       MRCQ
000050E0  75 65 72 79 20 72 6F 75  74 69 6E 65 2C 20 77 68  69 63 68 20 79 6F 75 20  63 61 6E 20 74 68 65 6E  uery routine, which you can then
00005100  20 63 61 6C 6C 20 66 61  72 2E 20 20 53 65 65 20  74 68 65 20 4D 52 43 51  75 65 72 79 0D 0A 3B 20   call far.  See the MRCQuery; 
00005120  20 20 20 20 20 20 68 65  61 64 65 72 20 62 65 6C  6F 77 20 66 6F 72 20 64  6F 63 75 6D 65 6E 74 61        header below for documenta
00005140  74 69 6F 6E 20 6F 6E 20  69 74 73 20 62 65 68 61  76 69 6F 72 2E 0D 0A 0D  0A 44 65 66 69 6E 65 4D  tion on its behavior.DefineM
00005160  52 43 51 75 65 72 79 20  20 6D 61 63 72 6F 0D 0A  0D 0A 0D 0A 3B 2A 2A 2A  20 20 20 20 73 69 67 4F  RCQuery  macro;***    sigO
00005180  4C 44 5F 43 58 2C 20 73  69 67 4F 4C 44 5F 44 58  2C 20 73 69 67 4E 45 57  5F 43 58 2C 20 73 69 67  LD_CX, sigOLD_DX, sigNEW_CX, sig
000051A0  4E 45 57 5F 44 58 20 2D  20 4D 52 43 49 20 53 65  72 76 65 72 20 64 65 74  65 63 74 69 6F 6E 0D 0A  NEW_DX - MRCI Server detection
000051C0  3B 0D 0A 3B 20 20 20 20  20 20 20 54 68 65 73 65  20 76 61 6C 75 65 73 20  61 72 65 20 75 73 65 64  ;;       These values are used
000051E0  20 74 6F 20 76 65 72 69  66 79 20 74 68 61 74 20  74 68 65 20 72 65 73 70  6F 6E 73 65 20 66 72 6F   to verify that the response fro
00005200  6D 20 69 73 73 75 69 6E  67 0D 0A 3B 20 20 20 20  20 20 20 69 6E 74 4D 52  43 49 20 69 73 20 63 6F  m issuing;       intMRCI is co
00005220  6D 69 6E 67 20 66 72 6F  6D 20 61 6E 20 4D 52 43  49 20 73 65 72 76 65 72  2C 20 61 6E 64 20 6E 6F  ming from an MRCI server, and no
00005240  74 20 73 6F 6D 65 20 6F  74 68 65 72 20 70 69 65  63 65 0D 0A 3B 20 20 20  20 20 20 20 6F 66 20 63  t some other piece;       of c
00005260  6F 64 65 2E 0D 0A 3B 0D  0A 3B 20 20 20 20 20 20  20 54 68 65 20 2A 6F 6C  64 2A 20 76 61 6C 75 65  ode.;;       The *old* value
00005280  73 20 61 72 65 20 70 61  73 73 65 64 20 6F 6E 20  74 68 65 20 6D 72 63 69  51 55 45 52 59 20 63 61  s are passed on the mrciQUERY ca
000052A0  6C 6C 2C 20 61 6E 64 20  74 68 65 20 73 65 72 76  65 72 0D 0A 3B 20 20 20  20 20 20 20 6D 75 73 74  ll, and the server;       must
000052C0  20 63 68 61 6E 67 65 20  43 58 2F 44 58 20 74 6F  20 74 68 65 20 2A 6E 65  77 2A 20 76 61 6C 75 65   change CX/DX to the *new* value
000052E0  73 2C 20 73 6F 20 74 68  61 74 20 74 68 65 20 63  61 6C 6C 65 72 20 63 61  6E 0D 0A 3B 20 20 20 20  s, so that the caller can;    
00005300  20 20 20 74 72 75 73 74  20 74 68 61 74 20 74 68  65 20 4D 52 43 49 20 73  65 72 76 65 72 20 77 61     trust that the MRCI server wa
00005320  73 20 72 65 73 70 6F 6E  64 69 6E 67 2C 20 61 6E  64 20 6E 6F 74 20 73 6F  6D 65 20 6F 74 68 65 72  s responding, and not some other
00005340  0D 0A 3B 20 20 20 20 20  20 20 69 6E 74 65 72 72  75 70 74 20 68 6F 6F 6B  2E 0D 0A 3B 0D 0A 3B 20  ;       interrupt hook.;; 
00005360  20 20 20 20 20 20 54 68  65 20 53 65 72 76 65 72  20 75 73 65 73 20 74 68  69 73 20 63 6F 64 65 20        The Server uses this code 
00005380  73 65 71 75 65 6E 63 65  20 74 6F 20 74 72 61 6E  73 66 6F 72 6D 20 43 58  2F 44 58 3A 0D 0A 3B 0D  sequence to transform CX/DX:;
000053A0  0A 3B 20 20 20 20 20 20  20 20 20 20 20 3B 2D 2D  2D 2D 2D 2D 2D 2D 2D 2D  2D 2D 2D 20 65 6E 74 72  ;           ;------------- entr
000053C0  79 3A 20 63 78 3D 27 61  62 27 20 20 64 78 3D 27  63 64 27 0D 0A 3B 0D 0A  3B 20 20 20 20 20 20 20  y: cx='ab'  dx='cd';;       
000053E0  20 20 20 20 78 63 68 67  20 20 20 20 63 68 2C 63  6C 20 20 20 20 20 20 20  3B 20 63 78 3D 27 62 61      xchg    ch,cl       ; cx='ba
00005400  27 20 20 64 78 3D 27 63  64 27 0D 0A 3B 20 20 20  20 20 20 20 20 20 20 20  78 63 68 67 20 20 20 20  '  dx='cd';           xchg    
00005420  64 68 2C 64 6C 20 20 20  20 20 20 20 3B 20 63 78  3D 27 62 61 27 20 20 64  78 3D 27 64 63 27 0D 0A  dh,dl       ; cx='ba'  dx='dc'
00005440  3B 20 20 20 20 20 20 20  20 20 20 20 78 63 68 67  20 20 20 20 64 78 2C 63  78 20 20 20 20 20 20 20  ;           xchg    dx,cx       
00005460  3B 20 63 78 3D 27 64 63  27 20 20 64 78 3D 27 62  61 27 0D 0A 3B 0D 0A 73  69 67 4F 4C 44 5F 43 58  ; cx='dc'  dx='ba';sigOLD_CX
00005480  20 20 20 65 71 75 20 27  4D 52 27 0D 0A 73 69 67  4F 4C 44 5F 44 58 20 20  20 65 71 75 20 27 43 49     equ 'MR'sigOLD_DX   equ 'CI
000054A0  27 0D 0A 0D 0A 73 69 67  4E 45 57 5F 43 58 20 20  20 65 71 75 20 27 49 43  27 0D 0A 73 69 67 4E 45  'sigNEW_CX   equ 'IC'sigNE
000054C0  57 5F 44 58 20 20 20 65  71 75 20 27 52 4D 27 0D  0A 0D 0A 0D 0A 3B 2A 2A  2A 20 20 20 20 4D 52 43  W_DX   equ 'RM';***    MRC
000054E0  51 75 65 72 79 20 2D 20  44 65 74 65 63 74 20 70  72 65 73 65 6E 63 65 20  6F 66 20 4D 52 43 49 20  Query - Detect presence of MRCI 
00005500  73 65 72 76 65 72 2C 20  72 65 74 75 72 6E 20 4D  52 43 49 4E 46 4F 0D 0A  3B 0D 0A 3B 20 20 20 20  server, return MRCINFO;;    
00005520  20 20 20 44 65 74 65 63  74 20 70 72 65 73 65 6E  63 65 20 6F 66 20 4D 52  43 49 20 73 65 72 76 65     Detect presence of MRCI serve
00005540  72 20 73 61 66 65 6C 79  2C 20 61 6E 64 20 69 66  20 70 72 65 73 65 6E 74  20 72 65 74 75 72 6E 0D  r safely, and if present return
00005560  0A 3B 20 20 20 20 20 20  20 70 6F 69 6E 74 65 72  20 74 6F 20 74 68 65 20  73 65 72 76 65 72 27 73  ;       pointer to the server's
00005580  20 4D 52 43 49 4E 46 4F  20 73 74 72 75 63 74 75  72 65 2E 20 20 4E 4F 54  45 20 74 68 61 74 20 77   MRCINFO structure.  NOTE that w
000055A0  65 20 63 68 65 63 6B 0D  0A 3B 20 20 20 20 20 20  20 66 69 72 73 74 20 66  6F 72 20 61 20 52 41 4D  e check;       first for a RAM
000055C0  2D 62 61 73 65 64 20 73  65 72 76 65 72 2C 20 61  6E 64 20 74 68 65 6E 20  66 6F 72 20 61 20 52 4F  -based server, and then for a RO
000055E0  4D 2D 62 61 73 65 64 20  73 65 72 76 65 72 2E 0D  0A 3B 0D 0A 3B 20 20 20  20 20 20 20 45 6E 74 72  M-based server.;;       Entr
00005600  79 0D 0A 3B 20 20 20 20  20 20 20 20 20 20 20 6E  6F 6E 65 0D 0A 3B 0D 0A  3B 20 20 20 20 20 20 20  y;           none;;       
00005620  45 78 69 74 2D 53 75 63  63 65 73 73 0D 0A 3B 20  20 20 20 20 20 20 20 20  20 20 61 78 20 3D 20 30  Exit-Success;           ax = 0
00005640  2C 20 4D 52 43 49 20 73  65 72 76 65 72 20 69 73  20 70 72 65 73 65 6E 74  2E 0D 0A 3B 20 20 20 20  , MRCI server is present.;    
00005660  20 20 20 20 20 20 20 65  73 3A 64 69 20 2D 3E 20  4D 52 43 49 4E 46 4F 20  73 74 72 75 63 74 75 72         es:di -> MRCINFO structur
00005680  65 0D 0A 3B 0D 0A 3B 0D  0A 3B 20 20 20 20 20 20  20 45 78 69 74 2D 46 61  69 6C 75 72 65 0D 0A 3B  e;;;       Exit-Failure;
000056A0  20 20 20 20 20 20 20 20  20 20 20 61 78 20 3D 20  31 2C 20 4E 4F 20 4D 52  43 49 20 73 65 72 76 65             ax = 1, NO MRCI serve
000056C0  72 20 69 73 20 70 72 65  73 65 6E 74 2E 0D 0A 3B  0D 0A 3B 20 20 20 20 20  20 20 55 73 65 73 0D 0A  r is present.;;       Uses
000056E0  3B 20 20 20 20 20 20 20  20 20 20 20 61 78 2C 64  69 2C 65 73 2C 66 6C 61  67 73 0D 0A 0D 0A 4D 52  ;           ax,di,es,flagsMR
00005700  43 51 75 65 72 79 20 20  70 72 6F 63 20 6E 65 61  72 0D 0A 3B 2A 20 20 53  61 76 65 20 63 61 6C 6C  CQuery  proc near;*  Save call
00005720  65 72 27 73 20 72 65 67  69 73 74 65 72 73 0D 0A  20 20 20 20 20 20 20 20  53 61 76 65 52 65 67 20  er's registers        SaveReg 
00005740  3C 61 78 2C 62 78 2C 63  78 2C 64 78 2C 73 69 2C  62 70 2C 64 73 3E 0D 0A  0D 0A 3B 2A 20 20 43 68  <ax,bx,cx,dx,si,bp,ds>;*  Ch
00005760  65 63 6B 20 69 6E 74 4D  52 43 49 20 76 65 63 74  6F 72 20 62 65 66 6F 72  65 20 77 65 20 69 73 73  eck intMRCI vector before we iss
00005780  75 65 20 74 68 65 20 69  6E 74 65 72 72 75 70 74  2E 0D 0A 20 20 20 20 20  20 20 20 78 6F 72 20 20  ue the interrupt.        xor  
000057A0  20 20 20 61 78 2C 61 78  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 3B 20 53 65 67     ax,ax                   ; Seg
000057C0  6D 65 6E 74 20 6F 66 20  69 6E 74 65 72 72 75 70  74 20 76 65 63 74 6F 72  20 74 61 62 6C 65 0D 0A  ment of interrupt vector table
000057E0  20 20 20 20 20 20 20 20  6D 6F 76 20 20 20 20 20  64 73 2C 61 78 0D 0A 20  20 20 20 20 20 20 20 6C          mov     ds,ax        l
00005800  64 73 20 20 20 20 20 73  69 2C 64 73 3A 5B 69 6E  74 4D 52 43 49 2A 34 5D  20 20 20 20 20 20 20 3B  ds     si,ds:[intMRCI*4]       ;
00005820  20 64 73 3A 73 69 20 2D  3E 20 4D 52 43 49 20 73  65 72 76 65 72 0D 0A 0D  0A 3B 2A 20 20 54 65 73   ds:si -> MRCI server;*  Tes
00005840  74 20 69 66 20 76 65 63  74 6F 72 20 69 73 20 70  6C 61 75 73 69 62 6C 65  0D 0A 20 20 20 20 20 20  t if vector is plausible      
00005860  20 20 6D 6F 76 20 20 20  20 20 61 78 2C 64 73 0D  0A 20 20 20 20 20 20 20  20 6F 72 20 20 20 20 20    mov     ax,ds        or     
00005880  20 61 78 2C 61 78 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 3B 20 56 65 63 74 6F   ax,ax                   ; Vecto
000058A0  72 20 68 6F 6F 6B 65 64  3F 0D 0A 20 20 20 20 20  20 20 20 6A 7A 20 20 20  20 20 20 6D 64 72 20 20  r hooked?        jz      mdr  
000058C0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 3B 20 20 20 4E  4F 2C 20 67 6F 20 6D 61                     ;   NO, go ma
000058E0  6B 65 20 61 6E 6F 74 68  65 72 20 63 68 65 63 6B  0D 0A 0D 0A 3B 2A 20 20  43 61 6C 6C 20 74 68 65  ke another check;*  Call the
00005900  20 73 65 72 76 65 72 0D  0A 20 20 20 20 20 20 20  20 6D 6F 76 20 20 20 20  20 61 78 2C 6D 72 63 69   server        mov     ax,mrci
00005920  44 45 54 45 43 54 20 20  20 20 20 20 20 20 20 20  20 3B 20 46 75 6E 63 74  69 6F 6E 0D 0A 20 20 20  DETECT           ; Function   
00005940  20 20 20 20 20 6D 6F 76  20 20 20 20 20 63 78 2C  73 69 67 4F 4C 44 5F 43  58 20 20 20 20 20 20 20       mov     cx,sigOLD_CX       
00005960  20 20 20 20 20 3B 20 53  69 67 6E 61 74 75 72 65  73 20 66 6F 72 20 76 61  6C 69 64 61 74 69 6F 6E       ; Signatures for validation
00005980  0D 0A 20 20 20 20 20 20  20 20 6D 6F 76 20 20 20  20 20 64 78 2C 73 69 67  4F 4C 44 5F 44 58 0D 0A          mov     dx,sigOLD_DX
000059A0  20 20 20 20 20 20 20 20  69 6E 74 20 20 20 20 20  69 6E 74 4D 52 43 49 20  20 20 20 20 20 20 20 20          int     intMRCI         
000059C0  20 20 20 20 20 20 20 20  3B 20 43 61 6C 6C 20 73  65 72 76 65 72 0D 0A 0D  0A 20 20 20 20 20 20 20          ; Call server       
000059E0  20 63 6D 70 20 20 20 20  20 63 78 2C 73 69 67 4E  45 57 5F 43 58 20 20 20  20 20 20 20 20 20 20 20   cmp     cx,sigNEW_CX           
00005A00  20 3B 20 53 69 67 6E 61  74 75 72 65 20 6D 61 74  63 68 3F 0D 0A 20 20 20  20 20 20 20 20 6A 6E 65   ; Signature match?        jne
00005A20  20 20 20 20 20 6D 64 72  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 3B 20 20       mdr                     ;  
00005A40  20 4E 4F 2C 20 67 6F 20  6D 61 6B 65 20 61 6E 6F  74 68 65 72 20 63 68 65  63 6B 0D 0A 0D 0A 20 20   NO, go make another check  
00005A60  20 20 20 20 20 20 63 6D  70 20 20 20 20 20 64 78  2C 73 69 67 4E 45 57 5F  44 58 20 20 20 20 20 20        cmp     dx,sigNEW_DX      
00005A80  20 20 20 20 20 20 3B 20  53 69 67 6E 61 74 75 72  65 20 6D 61 74 63 68 3F  0D 0A 20 20 20 20 20 20        ; Signature match?      
00005AA0  20 20 6A 65 20 20 20 20  20 20 6D 64 70 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20    je      mdp                   
00005AC0  20 20 3B 20 20 20 59 45  53 2C 20 68 61 76 65 20  73 65 72 76 65 72 0D 0A  0D 0A 3B 2A 20 20 53 65    ;   YES, have server;*  Se
00005AE0  72 76 65 72 20 6E 6F 74  20 70 72 65 73 65 6E 74  2C 20 63 68 65 63 6B 20  66 6F 72 20 52 4F 4D 20  rver not present, check for ROM 
00005B00  62 61 73 65 64 20 73 65  72 76 65 72 0D 0A 6D 64  72 3A 0D 0A 20 20 20 20  20 20 20 20 78 6F 72 20  based servermdr:        xor 
00005B20  20 20 20 20 61 78 2C 61  78 0D 0A 20 20 20 20 20  20 20 20 6D 6F 76 20 20  20 20 20 64 73 2C 61 78      ax,ax        mov     ds,ax
00005B40  0D 0A 20 20 20 20 20 20  20 20 6C 64 73 20 20 20  20 20 73 69 2C 64 73 3A  5B 69 6E 74 4D 52 43 49          lds     si,ds:[intMRCI
00005B60  52 4F 4D 2A 34 5D 20 20  20 20 3B 20 64 73 3A 73  69 20 2D 3E 20 52 4F 4D  20 4D 52 43 49 20 73 65  ROM*4]    ; ds:si -> ROM MRCI se
00005B80  72 76 65 72 0D 0A 0D 0A  3B 2A 20 20 54 65 73 74  20 69 66 20 76 65 63 74  6F 72 20 69 73 20 70 6C  rver;*  Test if vector is pl
00005BA0  61 75 73 69 62 6C 65 0D  0A 20 20 20 20 20 20 20  20 6D 6F 76 20 20 20 20  20 61 78 2C 64 73 0D 0A  ausible        mov     ax,ds
00005BC0  20 20 20 20 20 20 20 20  6F 72 20 20 20 20 20 20  61 78 2C 61 78 20 20 20  20 20 20 20 20 20 20 20          or      ax,ax           
00005BE0  20 20 20 20 20 20 20 20  3B 20 56 65 63 74 6F 72  20 68 6F 6F 6B 65 64 3F  0D 0A 20 20 20 20 20 20          ; Vector hooked?      
00005C00  20 20 6A 7A 20 20 20 20  20 20 6D 64 65 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20    jz      mde                   
00005C20  20 20 3B 20 20 20 4E 4F  2C 20 66 61 69 6C 0D 0A  0D 0A 3B 2A 20 20 43 61  6C 6C 20 74 68 65 20 73    ;   NO, fail;*  Call the s
00005C40  65 72 76 65 72 0D 0A 20  20 20 20 20 20 20 20 6D  6F 76 20 20 20 20 20 61  78 2C 6D 72 63 69 44 45  erver        mov     ax,mrciDE
00005C60  54 45 43 54 52 4F 4D 20  20 20 20 20 20 20 20 3B  20 46 75 6E 63 74 69 6F  6E 0D 0A 20 20 20 20 20  TECTROM        ; Function     
00005C80  20 20 20 6D 6F 76 20 20  20 20 20 63 78 2C 73 69  67 4F 4C 44 5F 43 58 20  20 20 20 20 20 20 20 20     mov     cx,sigOLD_CX         
00005CA0  20 20 20 3B 20 53 69 67  6E 61 74 75 72 65 73 20  66 6F 72 20 76 61 6C 69  64 61 74 69 6F 6E 0D 0A     ; Signatures for validation
00005CC0  20 20 20 20 20 20 20 20  6D 6F 76 20 20 20 20 20  64 78 2C 73 69 67 4F 4C  44 5F 44 58 0D 0A 20 20          mov     dx,sigOLD_DX  
00005CE0  20 20 20 20 20 20 69 6E  74 20 20 20 20 20 69 6E  74 4D 52 43 49 52 4F 4D  20 20 20 20 20 20 20 20        int     intMRCIROM        
00005D00  20 20 20 20 20 20 3B 20  43 61 6C 6C 20 52 4F 4D  20 73 65 72 76 65 72 0D  0A 0D 0A 20 20 20 20 20        ; Call ROM server     
00005D20  20 20 20 63 6D 70 20 20  20 20 20 63 78 2C 73 69  67 4E 45 57 5F 43 58 20  20 20 20 20 20 20 20 20     cmp     cx,sigNEW_CX         
00005D40  20 20 20 3B 20 53 69 67  6E 61 74 75 72 65 20 6D  61 74 63 68 3F 0D 0A 20  20 20 20 20 20 20 20 6A     ; Signature match?        j
00005D60  6E 65 20 20 20 20 20 6D  64 65 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3B  ne     mde                     ;
00005D80  20 20 20 4E 4F 2C 20 67  6F 20 6D 61 6B 65 20 61  6E 6F 74 68 65 72 20 63  68 65 63 6B 0D 0A 0D 0A     NO, go make another check
00005DA0  20 20 20 20 20 20 20 20  63 6D 70 20 20 20 20 20  64 78 2C 73 69 67 4E 45  57 5F 44 58 20 20 20 20          cmp     dx,sigNEW_DX    
00005DC0  20 20 20 20 20 20 20 20  3B 20 53 69 67 6E 61 74  75 72 65 20 6D 61 74 63  68 3F 0D 0A 20 20 20 20          ; Signature match?    
00005DE0  20 20 20 20 6A 6E 65 20  20 20 20 20 6D 64 65 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20      jne     mde                 
00005E00  20 20 20 20 3B 20 20 20  4E 6F 2C 20 66 61 69 6C  0D 0A 0D 0A 3B 2A 20 20  53 65 72 76 65 72 20 69      ;   No, fail;*  Server i
00005E20  73 20 70 72 65 73 65 6E  74 0D 0A 6D 64 70 3A 0D  0A 20 20 20 20 20 20 20  20 78 6F 72 20 20 20 20  s presentmdp:        xor    
00005E40  20 61 78 2C 61 78 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 3B 20 49 6E 64 69 63   ax,ax                   ; Indic
00005E60  61 74 65 20 73 75 63 63  65 73 73 0D 0A 20 20 20  20 20 20 20 20 6A 6D 70  20 20 20 20 20 73 68 6F  ate success        jmp     sho
00005E80  72 74 20 6D 64 78 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 3B 20 47  6F 20 65 78 69 74 0D 0A  rt mdx               ; Go exit
00005EA0  0D 0A 3B 2A 20 20 53 65  74 20 65 72 72 6F 72 0D  0A 6D 64 65 3A 20 20 20  20 6D 6F 76 20 20 20 20  ;*  Set errormde:    mov    
00005EC0  20 61 78 2C 31 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 3B 20 49 6E 64 69 63   ax,1                    ; Indic
00005EE0  61 74 65 20 66 61 69 6C  75 72 65 0D 0A 0D 0A 3B  2A 20 20 52 65 73 74 6F  72 65 20 63 61 6C 6C 65  ate failure;*  Restore calle
00005F00  72 27 73 20 72 65 67 69  73 74 65 72 73 20 61 6E  64 20 65 78 69 74 0D 0A  6D 64 78 3A 20 20 20 20  r's registers and exitmdx:    
00005F20  52 65 73 74 6F 72 65 52  65 67 20 3C 64 73 2C 62  70 2C 73 69 2C 64 78 2C  63 78 2C 62 78 2C 61 78  RestoreReg <ds,bp,si,dx,cx,bx,ax
00005F40  3E 0D 0A 20 20 20 20 20  20 20 20 72 65 74 0D 0A  4D 52 43 51 75 65 72 79  20 20 65 6E 64 70 0D 0A  >        retMRCQuery  endp
00005F60  0D 0A 65 6E 64 6D 20 3B  3B 20 44 65 66 69 6E 65  4D 52 43 51 75 65 72 79  0D 0A 0D 0A 0D 0A 3B 2A  endm ;; DefineMRCQuery;*
00005F80  2A 2A 20 20 20 20 44 65  66 69 6E 65 4D 52 43 43  6F 6D 70 72 65 73 73 20  2D 20 4D 61 63 72 6F 20  **    DefineMRCCompress - Macro 
00005FA0  74 6F 20 67 65 6E 65 72  61 74 65 20 4D 52 43 43  6F 6D 70 72 65 73 73 20  66 75 6E 63 74 69 6F 6E  to generate MRCCompress function
00005FC0  0D 0A 3B 0D 0A 3B 20 20  20 20 20 20 20 50 75 74  20 74 68 69 73 20 6D 61  63 72 6F 20 73 6F 6D 65  ;;       Put this macro some
00005FE0  77 68 65 72 65 20 69 6E  20 79 6F 75 72 20 63 6F  64 65 20 73 65 67 6D 65  6E 74 2E 20 20 49 74 20  where in your code segment.  It 
00006000  77 69 6C 6C 20 64 65 66  69 6E 65 20 74 68 65 0D  0A 3B 20 20 20 20 20 20  20 4D 52 43 43 6F 6D 70  will define the;       MRCComp
00006020  72 65 73 73 20 72 6F 75  74 69 6E 65 2C 20 77 68  69 63 68 20 79 6F 75 20  63 61 6E 20 74 68 65 6E  ress routine, which you can then
00006040  20 63 61 6C 6C 20 66 61  72 2E 20 20 53 65 65 20  74 68 65 20 4D 52 43 43  6F 6D 70 72 65 73 73 0D   call far.  See the MRCCompress
00006060  0A 3B 20 20 20 20 20 20  20 68 65 61 64 65 72 20  62 65 6C 6F 77 20 66 6F  72 20 64 6F 63 75 6D 65  ;       header below for docume
00006080  6E 74 61 74 69 6F 6E 20  6F 6E 20 69 74 73 20 62  65 68 61 76 69 6F 72 2E  0D 0A 0D 0A 44 65 66 69  ntation on its behavior.Defi
000060A0  6E 65 4D 52 43 43 6F 6D  70 72 65 73 73 20 20 20  6D 61 63 72 6F 0D 0A 0D  0A 3B 2A 2A 2A 20 20 20  neMRCCompress   macro;***   
000060C0  20 4D 52 43 43 6F 6D 70  72 65 73 73 20 2D 20 43  6F 6D 70 72 65 73 73 20  61 6E 20 75 6E 63 6F 6D   MRCCompress - Compress an uncom
000060E0  70 72 65 73 73 65 64 20  64 61 74 61 20 62 75 66  66 65 72 0D 0A 3B 0D 0A  3B 20 20 20 20 20 20 20  pressed data buffer;;       
00006100  45 6E 74 72 79 0D 0A 3B  20 20 20 20 20 20 20 20  20 20 20 61 78 20 3D 20  6F 70 65 72 61 74 69 6F  Entry;           ax = operatio
00006120  6E 20 74 6F 20 70 65 72  66 6F 72 6D 3A 0D 0A 3B  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  n to perform:;                
00006140  20 20 20 6D 69 63 61 70  53 54 41 4E 44 41 52 44  0D 0A 3B 20 20 20 20 20  20 20 20 20 20 20 63 78     micapSTANDARD;           cx
00006160  20 3D 20 74 79 70 65 20  6F 66 20 63 6C 69 65 6E  74 3A 0D 0A 3B 20 20 20  20 20 20 20 20 20 20 20   = type of client:;           
00006180  20 20 20 20 20 20 20 20  6D 63 41 50 50 4C 49 43  41 54 49 4F 4E 20 2D 20  61 70 70 6C 69 63 61 74          mcAPPLICATION - applicat
000061A0  69 6F 6E 0D 0A 3B 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 6D 63 53 59 53 54 45  ion;                   mcSYSTE
000061C0  4D 20 20 20 20 20 20 2D  20 66 69 6C 65 20 73 79  73 74 65 6D 20 63 6C 69  65 6E 74 0D 0A 3B 0D 0A  M      - file system client;
000061E0  3B 20 20 20 20 20 20 20  20 20 20 20 64 73 3A 73  69 20 2D 3E 20 4D 52 43  52 45 51 55 45 53 54 20  ;           ds:si -> MRCREQUEST 
00006200  73 74 72 75 63 74 75 72  65 0D 0A 3B 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 6D 72 5F 70 62  structure;               mr_pb
00006220  53 72 63 20 20 20 20 20  2D 20 50 6F 69 6E 74 65  72 20 74 6F 20 75 6E 63  6F 6D 70 72 65 73 73 65  Src     - Pointer to uncompresse
00006240  64 20 64 61 74 61 20 62  75 66 66 65 72 0D 0A 3B  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 6D  d data buffer;               m
00006260  72 5F 63 62 53 72 63 20  20 20 20 20 2D 20 4C 65  6E 67 74 68 20 6F 66 20  75 6E 63 6F 6D 70 72 65  r_cbSrc     - Length of uncompre
00006280  73 73 65 64 20 64 61 74  61 0D 0A 3B 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 6D 72 5F 70 62  ssed data;               mr_pb
000062A0  44 73 74 20 20 20 20 20  2D 20 50 6F 69 6E 74 65  72 20 74 6F 20 63 6F 6D  70 72 65 73 73 65 64 20  Dst     - Pointer to compressed 
000062C0  64 61 74 61 20 62 75 66  66 65 72 0D 0A 3B 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 6D 72 5F  data buffer;               mr_
000062E0  63 62 44 73 74 20 20 20  20 20 2D 20 4C 65 6E 67  74 68 20 6F 66 20 63 6F  6D 70 72 65 73 73 65 64  cbDst     - Length of compressed
00006300  20 64 61 74 61 20 62 75  66 66 65 72 0D 0A 3B 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 6D 72   data buffer;               mr
00006320  5F 63 62 43 68 75 6E 6B  20 20 20 2D 20 47 72 61  6E 75 6C 61 72 69 74 79  20 6F 66 20 63 6F 6D 70  _cbChunk   - Granularity of comp
00006340  72 65 73 73 65 64 20 64  61 74 61 20 73 74 6F 72  61 67 65 0D 0A 3B 0D 0A  3B 20 20 20 20 20 20 20  ressed data storage;;       
00006360  20 20 20 20 65 73 3A 62  78 20 2D 3E 20 4D 52 43  49 4E 46 4F 20 73 74 72  75 63 74 75 72 65 20 72      es:bx -> MRCINFO structure r
00006380  65 74 75 72 6E 65 64 20  62 79 20 4D 52 43 51 75  65 72 79 0D 0A 3B 0D 0A  3B 20 20 20 20 20 20 20  eturned by MRCQuery;;       
000063A0  45 78 69 74 2D 53 75 63  63 65 73 73 0D 0A 3B 20  20 20 20 20 20 20 20 20  20 20 61 78 20 3D 20 30  Exit-Success;           ax = 0
000063C0  2C 20 63 6F 6D 70 72 65  73 73 20 6F 70 65 72 61  74 69 6F 6E 20 63 6F 6D  70 6C 65 74 65 64 0D 0A  , compress operation completed
000063E0  3B 20 20 20 20 20 20 20  20 20 20 20 64 73 3A 5B  73 69 5D 2E 6D 72 5F 63  62 44 73 74 20 68 61 73  ;           ds:[si].mr_cbDst has
00006400  20 6C 65 6E 67 74 68 20  6F 66 20 63 6F 6D 70 72  65 73 73 65 64 20 64 61  74 61 20 69 6E 20 6D 72   length of compressed data in mr
00006420  5F 70 62 44 73 74 2E 0D  0A 3B 0D 0A 3B 20 20 20  20 20 20 20 45 78 69 74  2D 46 61 69 6C 75 72 65  _pbDst.;;       Exit-Failure
00006440  0D 0A 3B 20 20 20 20 20  20 20 20 20 20 20 43 6F  6E 74 65 6E 74 73 20 6F  66 20 6D 72 5F 70 62 44  ;           Contents of mr_pbD
00006460  73 74 20 62 75 66 66 65  72 20 61 6E 64 20 76 61  6C 75 65 20 6F 66 20 6D  72 5F 63 62 44 73 74 20  st buffer and value of mr_cbDst 
00006480  61 72 65 0D 0A 3B 20 20  20 20 20 20 20 20 20 20  20 75 6E 64 65 66 69 6E  65 64 2E 0D 0A 3B 20 20  are;           undefined.;  
000064A0  20 20 20 20 20 20 20 20  20 61 78 20 3D 20 6E 6F  6E 2D 7A 65 72 6F 20 65  72 72 6F 72 20 63 6F 64           ax = non-zero error cod
000064C0  65 3A 0D 0A 3B 20 20 20  20 20 20 20 20 20 20 20  4D 52 43 49 5F 45 52 52  4F 52 5F 4E 4F 54 5F 53  e:;           MRCI_ERROR_NOT_S
000064E0  55 50 50 4F 52 54 45 44  0D 0A 3B 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 53 65 72 76 65 72  UPPORTED;               Server
00006500  20 64 6F 65 73 20 6E 6F  74 20 73 75 70 70 6F 72  74 20 74 68 69 73 20 6F  70 65 72 61 74 69 6F 6E   does not support this operation
00006520  2E 0D 0A 3B 0D 0A 3B 20  20 20 20 20 20 20 20 20  20 20 4D 52 43 49 5F 45  52 52 4F 52 5F 42 55 53  .;;           MRCI_ERROR_BUS
00006540  59 0D 0A 3B 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 53 65 72 76 65  72 20 69 73 20 62 75 73  Y;               Server is bus
00006560  79 20 77 69 74 68 20 61  6E 6F 74 68 65 72 20 6F  70 65 72 61 74 69 6F 6E  2E 20 20 54 72 79 20 61  y with another operation.  Try a
00006580  67 61 69 6E 20 6C 61 74  65 72 2E 0D 0A 3B 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 4E 4F 54  gain later.;               NOT
000065A0  45 3A 20 54 68 65 20 6D  6F 73 74 20 63 6F 6D 6D  6F 6E 20 63 61 73 65 20  77 68 65 72 65 20 74 68  E: The most common case where th
000065C0  69 73 20 63 6F 75 6C 64  20 6F 63 63 75 72 20 69  73 20 69 66 20 61 6E 0D  0A 3B 20 20 20 20 20 20  is could occur is if an;      
000065E0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 61  70 70 6C 69 63 61 74 69  6F 6E 20 63 61 6C 6C 73                 application calls
00006600  20 74 68 65 20 73 65 72  76 65 72 20 77 68 69 6C  65 20 61 20 64 69 73 6B  20 63 61 63 68 65 0D 0A   the server while a disk cache
00006620  3B 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 28 6C  69 6B 65 20 53 6D 61 72  ;                     (like Smar
00006640  74 44 72 69 76 65 29 20  69 73 20 77 72 69 74 69  6E 67 20 69 74 73 20 6C  61 7A 79 2D 77 72 69 74  tDrive) is writing its lazy-writ
00006660  65 20 71 75 65 75 65 20  61 74 0D 0A 3B 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  e queue at;                   
00006680  20 20 69 6E 74 65 72 72  75 70 74 20 74 69 6D 65  20 74 6F 20 61 20 63 6F  6D 70 72 65 73 73 65 64    interrupt time to a compressed
000066A0  20 64 72 69 76 65 2E 20  20 54 68 65 20 61 70 70  6C 69 63 61 74 69 6F 6E  0D 0A 3B 20 20 20 20 20   drive.  The application;     
000066C0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  73 68 6F 75 6C 64 20 74  72 79 20 74 68 65 20 6F                  should try the o
000066E0  70 65 72 61 74 69 6F 6E  20 61 67 61 69 6E 0D 0A  3B 0D 0A 3B 20 20 20 20  20 20 20 20 20 20 20 4D  peration again;;           M
00006700  52 43 49 5F 45 52 52 4F  52 5F 42 55 46 46 45 52  5F 4F 56 45 52 46 4C 4F  57 0D 0A 3B 20 20 20 20  RCI_ERROR_BUFFER_OVERFLOW;    
00006720  20 20 20 20 20 20 20 20  20 20 20 54 68 65 20 64  65 73 74 69 6E 61 74 69  6F 6E 20 62 75 66 66 65             The destination buffe
00006740  72 20 73 69 7A 65 20 28  6D 72 5F 63 62 44 73 74  29 20 77 61 73 20 6E 6F  74 20 6C 61 72 67 65 20  r size (mr_cbDst) was not large 
00006760  65 6E 6F 75 67 68 0D 0A  3B 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  74 6F 20 68 6F 6C 64 20  enough;               to hold 
00006780  74 68 65 20 63 6F 6D 70  72 65 73 73 65 64 20 64  61 74 61 2E 0D 0A 3B 0D  0A 3B 20 20 20 20 20 20  the compressed data.;;      
000067A0  20 20 20 20 20 4D 52 43  49 5F 45 52 52 4F 52 5F  4E 4F 54 5F 43 4F 4D 50  52 45 53 53 49 42 4C 45       MRCI_ERROR_NOT_COMPRESSIBLE
000067C0  0D 0A 3B 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 54 68 65 20 64 61  74 61 20 77 61 73 20 6E  ;               The data was n
000067E0  6F 74 20 63 6F 6D 70 72  65 73 73 69 62 6C 65 2C  20 69 2E 65 2E 2C 20 74  68 65 20 73 69 7A 65 20  ot compressible, i.e., the size 
00006800  6F 66 20 74 68 65 20 63  6F 6D 70 72 65 73 73 65  64 0D 0A 3B 20 20 20 20  20 20 20 20 20 20 20 20  of the compressed;            
00006820  20 20 20 64 61 74 61 20  77 6F 75 6C 64 20 68 61  76 65 20 62 65 65 6E 20  67 72 65 61 74 65 72 20     data would have been greater 
00006840  74 68 61 6E 20 28 6D 72  5F 63 62 44 73 74 20 2D  20 6D 72 5F 63 62 43 68  75 6E 6B 29 2E 0D 0A 3B  than (mr_cbDst - mr_cbChunk).;
00006860  0D 0A 3B 20 20 20 20 20  20 20 55 73 65 73 0D 0A  3B 20 20 20 20 20 20 20  20 20 20 20 61 78 2C 66  ;       Uses;           ax,f
00006880  6C 61 67 73 0D 0A 0D 0A  4D 52 43 43 6F 6D 70 72  65 73 73 20 70 72 6F 63  20 6E 65 61 72 0D 0A 3B  lagsMRCCompress proc near;
000068A0  2A 20 20 53 61 76 65 20  63 61 6C 6C 65 72 27 73  20 72 65 67 69 73 74 65  72 73 0D 0A 20 20 20 20  *  Save caller's registers    
000068C0  20 20 20 20 53 61 76 65  52 65 67 20 3C 62 78 2C  63 78 2C 64 78 2C 62 70  2C 73 69 2C 64 69 2C 64      SaveReg <bx,cx,dx,bp,si,di,d
000068E0  73 3E 0D 0A 0D 0A 3B 2A  20 20 45 6E 74 65 72 20  61 20 57 69 6E 64 6F 77  73 20 64 69 73 6B 20 63  s>;*  Enter a Windows disk c
00006900  72 69 74 69 63 61 6C 20  73 65 63 74 69 6F 6E 2E  20 20 54 68 69 73 20 6D  75 73 74 20 62 65 20 64  ritical section.  This must be d
00006920  6F 6E 65 20 74 6F 20 70  72 65 76 65 6E 74 0D 0A  3B 20 20 20 74 68 65 20  4D 43 52 49 20 73 65 72  one to prevent;   the MCRI ser
00006940  76 65 72 20 66 72 6F 6D  20 62 65 69 6E 67 20 72  65 65 6E 74 65 72 65 64  20 69 66 20 6D 75 6C 74  ver from being reentered if mult
00006960  69 70 6C 65 20 56 4D 73  20 61 72 65 20 6D 61 6B  69 6E 67 20 4D 52 43 49  0D 0A 3B 20 20 20 63 61  iple VMs are making MRCI;   ca
00006980  6C 6C 73 20 75 6E 64 65  72 20 33 38 36 20 45 6E  68 61 6E 63 65 64 20 6D  6F 64 65 20 57 69 6E 64  lls under 386 Enhanced mode Wind
000069A0  6F 77 73 2E 20 20 54 68  65 20 4D 52 43 49 20 73  65 72 76 65 72 20 73 65  74 73 20 74 68 65 0D 0A  ows.  The MRCI server sets the
000069C0  3B 20 20 20 49 6E 44 4F  53 20 66 6C 61 67 2C 20  62 75 74 20 74 68 61 74  20 69 73 20 6E 6F 74 20  ;   InDOS flag, but that is not 
000069E0  65 6E 6F 75 67 68 2C 20  61 73 20 49 6E 44 4F 53  20 69 73 20 61 20 70 65  72 2D 56 4D 20 76 61 72  enough, as InDOS is a per-VM var
00006A00  69 61 62 6C 65 2E 0D 0A  0D 0A 20 20 20 20 20 20  20 20 70 75 73 68 20 20  20 20 61 78 20 20 20 20  iable.        push    ax    
00006A20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 3B 20 4E 4F 54 45  3A 20 55 73 65 20 74 68                    ; NOTE: Use th
00006A40  69 73 20 65 78 61 63 74  20 73 65 71 75 65 6E 63  65 20 6F 66 0D 0A 20 20  20 20 20 20 20 20 6D 6F  is exact sequence of        mo
00006A60  76 20 20 20 20 20 61 78  2C 38 30 30 31 68 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3B 20  v     ax,8001h                ; 
00006A80  20 20 20 20 20 20 69 6E  73 74 72 75 63 74 69 6F  6E 73 20 62 65 63 61 75  73 65 20 57 69 6E 64 6F        instructions because Windo
00006AA0  77 73 0D 0A 20 20 20 20  20 20 20 20 69 6E 74 20  20 20 20 20 32 61 68 20  20 20 20 20 20 20 20 20  ws        int     2ah         
00006AC0  20 20 20 20 20 20 20 20  20 20 20 20 3B 20 20 20  20 20 20 20 65 78 70 65  63 74 73 20 69 74 20 61              ;       expects it a
00006AE0  6E 64 20 77 69 6C 6C 20  70 61 74 63 68 0D 0A 20  20 20 20 20 20 20 20 70  6F 70 20 20 20 20 20 61  nd will patch        pop     a
00006B00  78 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3B  20 20 20 20 20 20 20 6F  x                      ;       o
00006B20  74 68 65 72 20 63 6F 64  65 20 68 65 72 65 0D 0A  0D 0A 20 20 20 20 20 20  20 20 63 61 6C 6C 20 20  ther code here        call  
00006B40  20 20 64 77 6F 72 64 20  70 74 72 20 65 73 3A 5B  62 78 5D 2E 6D 69 5F 70  66 6E 4F 70 65 72 61 74    dword ptr es:[bx].mi_pfnOperat
00006B60  65 20 3B 20 43 61 6C 6C  20 53 65 72 76 65 72 0D  0A 0D 0A 3B 2A 20 20 52  65 6C 65 61 73 65 20 74  e ; Call Server;*  Release t
00006B80  68 65 20 64 69 73 6B 20  63 72 69 74 69 63 61 6C  20 73 65 63 74 69 6F 6E  2E 20 20 54 68 65 20 4D  he disk critical section.  The M
00006BA0  52 43 49 20 73 65 72 76  65 72 20 69 73 20 6E 6F  77 20 61 76 61 69 6C 61  62 6C 65 2E 0D 0A 0D 0A  RCI server is now available.
00006BC0  20 20 20 20 20 20 20 20  70 75 73 68 20 20 20 20  61 78 20 20 20 20 20 20  20 20 20 20 20 20 20 20          push    ax              
00006BE0  20 20 20 20 20 20 20 20  3B 20 4E 4F 54 45 3A 20  55 73 65 20 74 68 69 73  20 65 78 61 63 74 20 73          ; NOTE: Use this exact s
00006C00  65 71 75 65 6E 63 65 20  6F 66 0D 0A 20 20 20 20  20 20 20 20 6D 6F 76 20  20 20 20 20 61 78 2C 38  equence of        mov     ax,8
00006C20  31 30 31 68 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 3B 20 20 20  20 20 20 20 69 6E 73 74  101h                ;       inst
00006C40  72 75 63 74 69 6F 6E 73  20 62 65 63 61 75 73 65  20 57 69 6E 64 6F 77 73  0D 0A 20 20 20 20 20 20  ructions because Windows      
00006C60  20 20 69 6E 74 20 20 20  20 20 32 61 68 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20    int     2ah                   
00006C80  20 20 3B 20 20 20 20 20  20 20 65 78 70 65 63 74  73 20 69 74 20 61 6E 64  20 77 69 6C 6C 20 70 61    ;       expects it and will pa
00006CA0  74 63 68 0D 0A 20 20 20  20 20 20 20 20 70 6F 70  20 20 20 20 20 61 78 20  20 20 20 20 20 20 20 20  tch        pop     ax         
00006CC0  20 20 20 20 20 20 20 20  20 20 20 20 20 3B 20 20  20 20 20 20 20 6F 74 68  65 72 20 63 6F 64 65 20               ;       other code 
00006CE0  68 65 72 65 0D 0A 0D 0A  3B 2A 20 20 52 65 73 74  6F 72 65 20 63 61 6C 6C  65 72 27 73 20 72 65 67  here;*  Restore caller's reg
00006D00  69 73 74 65 72 73 20 61  6E 64 20 65 78 69 74 0D  0A 20 20 20 20 20 20 20  20 52 65 73 74 6F 72 65  isters and exit        Restore
00006D20  52 65 67 20 3C 64 73 2C  64 69 2C 73 69 2C 62 70  2C 64 78 2C 63 78 2C 62  78 3E 0D 0A 20 20 20 20  Reg <ds,di,si,bp,dx,cx,bx>    
00006D40  20 20 20 20 72 65 74 0D  0A 4D 52 43 43 6F 6D 70  72 65 73 73 20 65 6E 64  70 0D 0A 0D 0A 65 6E 64      retMRCCompress endpend
00006D60  6D 20 3B 3B 20 44 65 66  69 6E 65 4D 52 43 43 6F  6D 70 72 65 73 73 0D 0A  0D 0A 0D 0A 3B 2A 2A 2A  m ;; DefineMRCCompress;***
00006D80  20 20 20 20 44 65 66 69  6E 65 4D 52 43 44 65 63  6F 6D 70 72 65 73 73 20  2D 20 4D 61 63 72 6F 20      DefineMRCDecompress - Macro 
00006DA0  74 6F 20 67 65 6E 65 72  61 74 65 20 4D 52 43 44  65 43 6F 6D 70 72 65 73  73 20 66 75 6E 63 74 69  to generate MRCDeCompress functi
00006DC0  6F 6E 0D 0A 3B 0D 0A 3B  20 20 20 20 20 20 20 50  75 74 20 74 68 69 73 20  6D 61 63 72 6F 20 73 6F  on;;       Put this macro so
00006DE0  6D 65 77 68 65 72 65 20  69 6E 20 79 6F 75 72 20  63 6F 64 65 20 73 65 67  6D 65 6E 74 2E 20 20 49  mewhere in your code segment.  I
00006E00  74 20 77 69 6C 6C 20 64  65 66 69 6E 65 20 74 68  65 0D 0A 3B 20 20 20 20  20 20 20 4D 52 43 44 65  t will define the;       MRCDe
00006E20  63 6F 6D 70 72 65 73 73  20 72 6F 75 74 69 6E 65  2C 20 77 68 69 63 68 20  79 6F 75 20 63 61 6E 20  compress routine, which you can 
00006E40  74 68 65 6E 20 63 61 6C  6C 20 66 61 72 2E 0D 0A  3B 20 20 20 20 20 20 20  53 65 65 20 74 68 65 20  then call far.;       See the 
00006E60  4D 52 43 44 65 63 6F 6D  70 72 65 73 73 20 68 65  61 64 65 72 20 62 65 6C  6F 77 20 66 6F 72 20 64  MRCDecompress header below for d
00006E80  6F 63 75 6D 65 6E 74 61  74 69 6F 6E 20 6F 6E 20  69 74 73 20 62 65 68 61  76 69 6F 72 2E 0D 0A 0D  ocumentation on its behavior.
00006EA0  0A 44 65 66 69 6E 65 4D  52 43 44 65 63 6F 6D 70  72 65 73 73 20 20 20 6D  61 63 72 6F 0D 0A 0D 0A  DefineMRCDecompress   macro
00006EC0  0D 0A 3B 2A 2A 2A 20 20  20 20 4D 52 43 44 65 63  6F 6D 70 72 65 73 73 20  2D 20 44 65 63 6F 6D 70  ;***    MRCDecompress - Decomp
00006EE0  72 65 73 73 20 61 6E 20  63 6F 6D 70 72 65 73 73  65 64 20 64 61 74 61 20  62 75 66 66 65 72 0D 0A  ress an compressed data buffer
00006F00  3B 0D 0A 3B 20 20 20 20  20 20 20 45 6E 74 72 79  0D 0A 3B 20 20 20 20 20  20 20 20 20 20 20 63 78  ;;       Entry;           cx
00006F20  20 3D 20 74 79 70 65 20  6F 66 20 63 6C 69 65 6E  74 3A 0D 0A 3B 20 20 20  20 20 20 20 20 20 20 20   = type of client:;           
00006F40  20 20 20 20 20 20 20 20  6D 63 41 50 50 4C 49 43  41 54 49 4F 4E 20 2D 20  61 70 70 6C 69 63 61 74          mcAPPLICATION - applicat
00006F60  69 6F 6E 0D 0A 3B 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 6D 63 53 59 53 54 45  ion;                   mcSYSTE
00006F80  4D 20 20 20 20 20 20 2D  20 66 69 6C 65 20 73 79  73 74 65 6D 20 63 6C 69  65 6E 74 0D 0A 3B 0D 0A  M      - file system client;
00006FA0  3B 20 20 20 20 20 20 20  20 20 20 20 64 73 3A 73  69 20 2D 3E 20 4D 52 43  52 45 51 55 45 53 54 20  ;           ds:si -> MRCREQUEST 
00006FC0  73 74 72 75 63 74 75 72  65 0D 0A 3B 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 6D 72 5F 70 62  structure;               mr_pb
00006FE0  53 72 63 20 20 20 2D 20  50 6F 69 6E 74 65 72 20  74 6F 20 63 6F 6D 70 72  65 73 73 65 64 20 64 61  Src   - Pointer to compressed da
00007000  74 61 20 62 75 66 66 65  72 0D 0A 3B 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 6D 72 5F 63 62  ta buffer;               mr_cb
00007020  53 72 63 20 20 20 2D 20  4C 65 6E 67 74 68 20 6F  66 20 63 6F 6D 70 72 65  73 73 65 64 20 64 61 74  Src   - Length of compressed dat
00007040  61 0D 0A 3B 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 6D 72 5F 70 62  44 73 74 20 20 20 2D 20  a;               mr_pbDst   - 
00007060  50 6F 69 6E 74 65 72 20  74 6F 20 75 6E 63 6F 6D  70 72 65 73 73 65 64 20  64 61 74 61 20 62 75 66  Pointer to uncompressed data buf
00007080  66 65 72 0D 0A 3B 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 6D 72 5F  63 62 44 73 74 20 20 20  fer;               mr_cbDst   
000070A0  2D 20 4C 65 6E 67 74 68  20 6F 66 20 75 6E 63 6F  6D 70 72 65 73 73 65 64  20 64 61 74 61 20 62 75  - Length of uncompressed data bu
000070C0  66 66 65 72 0D 0A 3B 0D  0A 3B 20 20 20 20 20 20  20 20 20 20 20 65 73 3A  62 78 20 2D 3E 20 4D 52  ffer;;           es:bx -> MR
000070E0  43 49 4E 46 4F 20 73 74  72 75 63 74 75 72 65 20  72 65 74 75 72 6E 65 64  20 62 79 20 4D 52 43 51  CINFO structure returned by MRCQ
00007100  75 65 72 79 0D 0A 3B 0D  0A 3B 20 20 20 20 20 20  20 45 78 69 74 2D 53 75  63 63 65 73 73 0D 0A 3B  uery;;       Exit-Success;
00007120  20 20 20 20 20 20 20 20  20 20 20 61 78 20 3D 20  30 2C 20 64 65 63 6F 6D  70 72 65 73 73 20 6F 70             ax = 0, decompress op
00007140  65 72 61 74 69 6F 6E 20  63 6F 6D 70 6C 65 74 65  64 0D 0A 3B 20 20 20 20  20 20 20 20 20 20 20 64  eration completed;           d
00007160  73 3A 5B 73 69 5D 2E 6D  72 5F 63 62 44 73 74 20  68 61 73 20 6C 65 6E 67  74 68 20 6F 66 20 75 6E  s:[si].mr_cbDst has length of un
00007180  63 6F 6D 70 72 65 73 73  65 64 20 64 61 74 61 20  69 6E 20 6D 72 5F 70 62  44 73 74 2E 0D 0A 3B 0D  compressed data in mr_pbDst.;
000071A0  0A 3B 20 20 20 20 20 20  20 45 78 69 74 2D 46 61  69 6C 75 72 65 0D 0A 3B  20 20 20 20 20 20 20 20  ;       Exit-Failure;        
000071C0  20 20 20 43 6F 6E 74 65  6E 74 73 20 6F 66 20 6D  72 5F 70 62 44 73 74 20  62 75 66 66 65 72 20 61     Contents of mr_pbDst buffer a
000071E0  6E 64 20 76 61 6C 75 65  20 6F 66 20 6D 72 5F 63  62 44 73 74 20 61 72 65  0D 0A 3B 20 20 20 20 20  nd value of mr_cbDst are;     
00007200  20 20 20 20 20 20 75 6E  64 65 66 69 6E 65 64 2E  0D 0A 3B 20 20 20 20 20  20 20 20 20 20 20 61 78        undefined.;           ax
00007220  20 3D 20 6E 6F 6E 2D 7A  65 72 6F 20 65 72 72 6F  72 20 63 6F 64 65 3A 0D  0A 3B 20 20 20 20 20 20   = non-zero error code:;      
00007240  20 20 20 20 20 4D 52 43  49 5F 45 52 52 4F 52 5F  4E 4F 54 5F 53 55 50 50  4F 52 54 45 44 0D 0A 3B       MRCI_ERROR_NOT_SUPPORTED;
00007260  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 53  65 72 76 65 72 20 64 6F  65 73 20 6E 6F 74 20 73                 Server does not s
00007280  75 70 70 6F 72 74 20 74  68 69 73 20 6F 70 65 72  61 74 69 6F 6E 2E 0D 0A  3B 0D 0A 3B 20 20 20 20  upport this operation.;;    
000072A0  20 20 20 20 20 20 20 4D  52 43 49 5F 45 52 52 4F  52 5F 42 55 53 59 0D 0A  3B 20 20 20 20 20 20 20         MRCI_ERROR_BUSY;       
000072C0  20 20 20 20 20 20 20 20  53 65 72 76 65 72 20 69  73 20 62 75 73 79 20 77  69 74 68 20 61 6E 6F 74          Server is busy with anot
000072E0  68 65 72 20 6F 70 65 72  61 74 69 6F 6E 2E 20 20  54 72 79 20 61 67 61 69  6E 20 6C 61 74 65 72 2E  her operation.  Try again later.
00007300  0D 0A 3B 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 4E 4F 54 45 3A 20  54 68 65 20 6D 6F 73 74  ;               NOTE: The most
00007320  20 63 6F 6D 6D 6F 6E 20  63 61 73 65 20 77 68 65  72 65 20 74 68 69 73 20  63 6F 75 6C 64 20 6F 63   common case where this could oc
00007340  63 75 72 20 69 73 20 69  66 20 61 6E 0D 0A 3B 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  cur is if an;                 
00007360  20 20 20 20 61 70 70 6C  69 63 61 74 69 6F 6E 20  63 61 6C 6C 73 20 74 68  65 20 73 65 72 76 65 72      application calls the server
00007380  20 77 68 69 6C 65 20 61  20 64 69 73 6B 20 63 61  63 68 65 0D 0A 3B 20 20  20 20 20 20 20 20 20 20   while a disk cache;          
000073A0  20 20 20 20 20 20 20 20  20 20 20 28 6C 69 6B 65  20 53 6D 61 72 74 44 72  69 76 65 29 20 69 73 20             (like SmartDrive) is 
000073C0  72 65 61 64 69 6E 67 20  61 68 65 61 64 20 61 74  20 69 6E 74 65 72 72 75  70 74 20 74 69 6D 65 20  reading ahead at interrupt time 
000073E0  74 6F 0D 0A 3B 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 61 20 63 6F 6D 70  to;                     a comp
00007400  72 65 73 73 65 64 20 64  72 69 76 65 2E 20 20 54  68 65 20 61 70 70 6C 69  63 61 74 69 6F 6E 20 73  ressed drive.  The application s
00007420  68 6F 75 6C 64 20 74 72  79 20 74 68 65 0D 0A 3B  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  hould try the;                
00007440  20 20 20 20 20 6F 70 65  72 61 74 69 6F 6E 20 61  67 61 69 6E 2E 0D 0A 3B  0D 0A 3B 20 20 20 20 20       operation again.;;     
00007460  20 20 20 20 20 20 4D 52  43 49 5F 45 52 52 4F 52  5F 42 55 46 46 45 52 5F  4F 56 45 52 46 4C 4F 57        MRCI_ERROR_BUFFER_OVERFLOW
00007480  0D 0A 3B 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 54 68 65 20 64 65  73 74 69 6E 61 74 69 6F  ;               The destinatio
000074A0  6E 20 62 75 66 66 65 72  20 73 69 7A 65 20 28 6D  72 5F 63 62 44 73 74 29  20 77 61 73 20 6E 6F 74  n buffer size (mr_cbDst) was not
000074C0  20 6C 61 72 67 65 20 65  6E 6F 75 67 68 0D 0A 3B  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 74   large enough;               t
000074E0  6F 20 68 6F 6C 64 20 74  68 65 20 75 6E 63 6F 6D  70 72 65 73 73 65 64 20  64 61 74 61 2E 0D 0A 3B  o hold the uncompressed data.;
00007500  0D 0A 3B 20 20 20 20 20  20 20 20 20 20 20 4D 52  43 49 5F 45 52 52 4F 52  5F 42 41 44 5F 4D 52 43  ;           MRCI_ERROR_BAD_MRC
00007520  5F 46 4F 52 4D 41 54 0D  0A 3B 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 54 68 65 20 63 6F 6D  _FORMAT;               The com
00007540  70 72 65 73 73 65 64 20  64 61 74 61 20 66 6F 72  6D 61 74 20 77 61 73 20  69 6E 76 61 6C 69 64 20  pressed data format was invalid 
00007560  28 67 65 6E 65 72 61 6C  6C 79 20 6F 6E 6C 79 0D  0A 3B 20 20 20 20 20 20  20 20 20 20 20 20 20 20  (generally only;              
00007580  20 64 65 74 65 63 74 61  62 6C 65 20 61 73 20 61  6E 20 6F 76 65 72 72 75  6E 20 6F 66 20 74 68 65   detectable as an overrun of the
000075A0  20 73 6F 75 72 63 65 20  62 75 66 66 65 72 20 6C  65 6E 67 74 68 2C 20 62  65 63 61 75 73 65 0D 0A   source buffer length, because
000075C0  3B 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  74 68 65 20 4D 52 43 20  46 6F 72 6D 61 74 20 68  ;               the MRC Format h
000075E0  61 73 20 6E 6F 20 72 65  64 75 6E 64 61 6E 63 79  29 2E 0D 0A 3B 20 20 20  20 20 20 20 20 20 20 20  as no redundancy).;           
00007600  20 20 20 20 4E 4F 54 45  3A 20 4D 6F 73 74 20 73  6F 66 74 77 61 72 65 20  69 6D 70 6C 65 6D 65 6E      NOTE: Most software implemen
00007620  74 61 74 69 6F 6E 73 20  77 69 6C 6C 20 6E 6F 74  20 67 65 6E 65 72 61 74  65 20 74 68 69 73 0D 0A  tations will not generate this
00007640  3B 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 65 72  72 6F 72 2C 20 73 69 6E  ;                     error, sin
00007660  63 65 20 69 74 20 69 73  20 74 6F 20 65 78 70 65  6E 73 69 76 65 20 28 69  6E 20 74 69 6D 65 29 20  ce it is to expensive (in time) 
00007680  74 6F 20 63 68 65 63 6B  20 66 6F 72 0D 0A 3B 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  to check for;                 
000076A0  20 20 20 20 62 75 66 66  65 72 20 6F 76 65 72 72  75 6E 2E 20 20 48 61 72  64 77 61 72 65 20 69 6D      buffer overrun.  Hardware im
000076C0  70 6C 65 6D 65 6E 74 61  74 69 6F 6E 73 20 6D 61  79 20 62 65 20 61 62 6C  65 0D 0A 3B 20 20 20 20  plementations may be able;    
000076E0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 74 6F 20 63 68 65 63  6B 20 66 6F 72 20 74 68                   to check for th
00007700  69 73 20 77 69 74 68 6F  75 74 20 70 65 72 66 6F  72 6D 61 6E 63 65 20 70  65 6E 61 6C 74 79 2C 20  is without performance penalty, 
00007720  68 6F 77 65 76 65 72 2E  0D 0A 3B 0D 0A 3B 20 20  20 20 20 20 20 55 73 65  73 0D 0A 3B 20 20 20 20  however.;;       Uses;    
00007740  20 20 20 20 20 20 20 61  78 2C 66 6C 61 67 73 0D  0A 0D 0A 4D 52 43 44 65  63 6F 6D 70 72 65 73 73         ax,flagsMRCDecompress
00007760  20 70 72 6F 63 20 6E 65  61 72 0D 0A 3B 2A 20 20  53 61 76 65 20 63 61 6C  6C 65 72 27 73 20 72 65   proc near;*  Save caller's re
00007780  67 69 73 74 65 72 73 0D  0A 20 20 20 20 20 20 20  20 53 61 76 65 52 65 67  20 3C 62 78 2C 63 78 2C  gisters        SaveReg <bx,cx,
000077A0  64 78 2C 62 70 2C 73 69  2C 64 69 2C 64 73 3E 0D  0A 0D 0A 3B 2A 20 20 45  6E 74 65 72 20 61 20 57  dx,bp,si,di,ds>;*  Enter a W
000077C0  69 6E 64 6F 77 73 20 64  69 73 6B 20 63 72 69 74  69 63 61 6C 20 73 65 63  74 69 6F 6E 2E 20 20 54  indows disk critical section.  T
000077E0  68 69 73 20 6D 75 73 74  20 62 65 20 64 6F 6E 65  20 74 6F 20 70 72 65 76  65 6E 74 0D 0A 3B 20 20  his must be done to prevent;  
00007800  20 74 68 65 20 4D 43 52  49 20 73 65 72 76 65 72  20 66 72 6F 6D 20 62 65  69 6E 67 20 72 65 65 6E   the MCRI server from being reen
00007820  74 65 72 65 64 20 69 66  20 6D 75 6C 74 69 70 6C  65 20 56 4D 73 20 61 72  65 20 6D 61 6B 69 6E 67  tered if multiple VMs are making
00007840  20 4D 52 43 49 0D 0A 3B  20 20 20 63 61 6C 6C 73  20 75 6E 64 65 72 20 33  38 36 20 45 6E 68 61 6E   MRCI;   calls under 386 Enhan
00007860  63 65 64 20 6D 6F 64 65  20 57 69 6E 64 6F 77 73  2E 20 20 54 68 65 20 4D  52 43 49 20 73 65 72 76  ced mode Windows.  The MRCI serv
00007880  65 72 20 73 65 74 73 20  74 68 65 0D 0A 3B 20 20  20 49 6E 44 4F 53 20 66  6C 61 67 2C 20 62 75 74  er sets the;   InDOS flag, but
000078A0  20 74 68 61 74 20 69 73  20 6E 6F 74 20 65 6E 6F  75 67 68 2C 20 61 73 20  49 6E 44 4F 53 20 69 73   that is not enough, as InDOS is
000078C0  20 61 20 70 65 72 2D 56  4D 20 76 61 72 69 61 62  6C 65 2E 0D 0A 0D 0A 20  20 20 20 20 20 20 20 70   a per-VM variable.        p
000078E0  75 73 68 20 20 20 20 61  78 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3B  ush    ax                      ;
00007900  20 4E 4F 54 45 3A 20 55  73 65 20 74 68 69 73 20  65 78 61 63 74 20 73 65  71 75 65 6E 63 65 20 6F   NOTE: Use this exact sequence o
00007920  66 0D 0A 20 20 20 20 20  20 20 20 6D 6F 76 20 20  20 20 20 61 78 2C 38 30  30 31 68 20 20 20 20 20  f        mov     ax,8001h     
00007940  20 20 20 20 20 20 20 20  20 20 20 3B 20 20 20 20  20 20 20 69 6E 73 74 72  75 63 74 69 6F 6E 73 20             ;       instructions 
00007960  62 65 63 61 75 73 65 20  57 69 6E 64 6F 77 73 0D  0A 20 20 20 20 20 20 20  20 69 6E 74 20 20 20 20  because Windows        int    
00007980  20 32 61 68 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 3B 20 20 20 20 20 20   2ah                     ;      
000079A0  20 65 78 70 65 63 74 73  20 69 74 20 61 6E 64 20  77 69 6C 6C 20 70 61 74  63 68 0D 0A 20 20 20 20   expects it and will patch    
000079C0  20 20 20 20 70 6F 70 20  20 20 20 20 61 78 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20      pop     ax                  
000079E0  20 20 20 20 3B 20 20 20  20 20 20 20 6F 74 68 65  72 20 63 6F 64 65 20 68  65 72 65 0D 0A 0D 0A 20      ;       other code here 
00007A00  20 20 20 20 20 20 20 6D  6F 76 20 20 20 20 20 61  78 2C 6D 69 63 61 70 44  45 43 4F 4D 50 52 45 53         mov     ax,micapDECOMPRES
00007A20  53 0D 0A 20 20 20 20 20  20 20 20 63 61 6C 6C 20  20 20 20 64 77 6F 72 64  20 70 74 72 20 65 73 3A  S        call    dword ptr es:
00007A40  5B 62 78 5D 2E 6D 69 5F  70 66 6E 4F 70 65 72 61  74 65 20 3B 20 43 61 6C  6C 20 53 65 72 76 65 72  [bx].mi_pfnOperate ; Call Server
00007A60  0D 0A 0D 0A 3B 2A 20 20  52 65 6C 65 61 73 65 20  74 68 65 20 64 69 73 6B  20 63 72 69 74 69 63 61  ;*  Release the disk critica
00007A80  6C 20 73 65 63 74 69 6F  6E 2E 20 20 54 68 65 20  4D 52 43 49 20 73 65 72  76 65 72 20 69 73 20 6E  l section.  The MRCI server is n
00007AA0  6F 77 20 61 76 61 69 6C  61 62 6C 65 2E 0D 0A 0D  0A 20 20 20 20 20 20 20  20 70 75 73 68 20 20 20  ow available.        push   
00007AC0  20 61 78 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 3B 20 4E 4F 54 45 3A   ax                      ; NOTE:
00007AE0  20 55 73 65 20 74 68 69  73 20 65 78 61 63 74 20  73 65 71 75 65 6E 63 65  20 6F 66 0D 0A 20 20 20   Use this exact sequence of   
00007B00  20 20 20 20 20 6D 6F 76  20 20 20 20 20 61 78 2C  38 31 30 31 68 20 20 20  20 20 20 20 20 20 20 20       mov     ax,8101h           
00007B20  20 20 20 20 20 3B 20 20  20 20 20 20 20 69 6E 73  74 72 75 63 74 69 6F 6E  73 20 62 65 63 61 75 73       ;       instructions becaus
00007B40  65 20 57 69 6E 64 6F 77  73 0D 0A 20 20 20 20 20  20 20 20 69 6E 74 20 20  20 20 20 32 61 68 20 20  e Windows        int     2ah  
00007B60  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 3B 20 20 20 20  20 20 20 65 78 70 65 63                     ;       expec
00007B80  74 73 20 69 74 20 61 6E  64 20 77 69 6C 6C 20 70  61 74 63 68 0D 0A 20 20  20 20 20 20 20 20 70 6F  ts it and will patch        po
00007BA0  70 20 20 20 20 20 61 78  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3B 20  p     ax                      ; 
00007BC0  20 20 20 20 20 20 6F 74  68 65 72 20 63 6F 64 65  20 68 65 72 65 0D 0A 0D  0A 3B 2A 20 20 52 65 73        other code here;*  Res
00007BE0  74 6F 72 65 20 63 61 6C  6C 65 72 27 73 20 72 65  67 69 73 74 65 72 73 20  61 6E 64 20 65 78 69 74  tore caller's registers and exit
00007C00  0D 0A 20 20 20 20 20 20  20 20 52 65 73 74 6F 72  65 52 65 67 20 3C 64 73  2C 64 69 2C 73 69 2C 62          RestoreReg <ds,di,si,b
00007C20  70 2C 64 78 2C 63 78 2C  62 78 3E 0D 0A 20 20 20  20 20 20 20 20 72 65 74  0D 0A 4D 52 43 44 65 63  p,dx,cx,bx>        retMRCDec
00007C40  6F 6D 70 72 65 73 73 20  65 6E 64 70 0D 0A 0D 0A  65 6E 64 6D 20 3B 3B 20  44 65 66 69 6E 65 4D 52  ompress endpendm ;; DefineMR
00007C60  43 44 65 63 6F 6D 70 72  65 73 73 0D 0A 15 13 61  75 74 6F 6E 75 6D 6C 67  6C 20 15 20 4D 52 43 49  CDecompress§autonumlgl § MRCI
00007C80  20 53 79 73 74 65 6D 20  43 6C 69 65 6E 74 20 45  78 61 6D 70 6C 65 0D 0A  0D 0A 13 69 6E 63 6C 75   System Client Exampleinclu
00007CA0  64 65 20 6D 72 63 73 79  73 63 6C 2E 61 73 6D 20  5C 63 20 54 65 78 74 14  3B 2A 2A 2A 20 20 20 20  de mrcsyscl.asm \c Text;***    
00007CC0  4D 52 43 53 59 53 43 4C  2E 41 53 4D 20 2D 20 4D  52 43 49 20 53 79 73 74  65 6D 20 43 6C 69 65 6E  MRCSYSCL.ASM - MRCI System Clien
00007CE0  74 20 45 58 41 4D 50 4C  45 0D 0A 3B 0D 0A 3B 20  20 20 20 20 20 20 4D 52  43 49 20 76 65 72 73 69  t EXAMPLE;;       MRCI versi
00007D00  6F 6E 20 31 2E 30 30 2E  30 38 20 20 30 32 2D 41  70 72 2D 31 39 39 33 0D  0A 3B 0D 0A 3B 20 20 20  on 1.00.08  02-Apr-1993;;   
00007D20  20 20 20 20 4E 4F 54 45  3A 20 54 68 69 73 20 65  78 61 6D 70 6C 65 20 69  73 20 69 6D 70 6C 65 6D      NOTE: This example is implem
00007D40  65 6E 74 65 64 20 61 73  73 75 6D 69 6E 67 20 74  68 65 20 63 6F 64 65 20  73 65 67 6D 65 6E 74 20  ented assuming the code segment 
00007D60  69 73 0D 0A 3B 20 20 20  20 20 20 20 20 20 20 20  20 20 77 72 69 74 65 61  62 6C 65 2C 20 74 6F 20  is;             writeable, to 
00007D80  73 69 6D 70 6C 69 66 79  20 74 68 65 20 65 78 70  6F 73 69 74 69 6F 6E 2E  0D 0A 3B 0D 0A 3B 20 20  simplify the exposition.;;  
00007DA0  20 20 20 20 20 54 68 69  73 20 69 73 20 61 6E 20  65 78 61 6D 70 6C 65 20  22 73 79 73 74 65 6D 20       This is an example "system 
00007DC0  63 6C 69 65 6E 74 22 20  6F 66 20 74 68 65 20 4D  69 63 72 6F 73 6F 66 74  20 52 65 61 6C 2D 74 69  client" of the Microsoft Real-ti
00007DE0  6D 65 0D 0A 3B 20 20 20  20 20 20 20 43 6F 6D 70  72 65 73 73 69 6F 6E 20  41 50 49 2E 20 20 41 20  me;       Compression API.  A 
00007E00  22 73 79 73 74 65 6D 20  63 6C 69 65 6E 74 22 20  69 73 20 61 20 64 65 76  69 63 65 20 64 72 69 76  "system client" is a device driv
00007E20  65 72 20 6F 72 20 54 53  52 0D 0A 3B 20 20 20 20  20 20 20 74 68 61 74 20  6C 6F 61 64 73 20 61 6E  er or TSR;       that loads an
00007E40  64 20 73 74 61 79 73 20  72 65 73 69 64 65 6E 74  20 66 6F 72 20 74 68 65  20 6C 69 66 65 74 69 6D  d stays resident for the lifetim
00007E60  65 20 6F 66 20 74 68 65  20 73 79 73 74 65 6D 2E  0D 0A 3B 20 20 20 20 20  20 20 44 6F 75 62 6C 65  e of the system.;       Double
00007E80  53 70 61 63 65 2C 20 46  6C 61 73 68 20 46 69 6C  65 20 53 79 73 74 65 6D  20 32 2C 20 61 6E 64 20  Space, Flash File System 2, and 
00007EA0  6E 65 74 77 6F 72 6B 20  64 72 69 76 65 72 73 20  61 72 65 20 65 78 61 6D  70 6C 65 73 0D 0A 3B 20  network drivers are examples; 
00007EC0  20 20 20 20 20 20 6F 66  20 73 79 73 74 65 6D 20  63 6C 69 65 6E 74 73 2E  0D 0A 3B 0D 0A 3B 20 20        of system clients.;;  
00007EE0  20 20 20 20 20 42 79 20  63 6F 6E 74 72 61 73 74  2C 20 61 6E 20 22 61 70  70 6C 69 63 61 74 69 6F       By contrast, an "applicatio
00007F00  6E 20 63 6C 69 65 6E 74  22 20 69 73 20 61 20 70  72 6F 67 72 61 6D 20 6C  69 6B 65 20 4D 53 42 61  n client" is a program like MSBa
00007F20  63 6B 75 70 2C 0D 0A 3B  20 20 20 20 20 20 20 77  68 69 63 68 20 6C 6F 61  64 73 2C 20 75 73 65 73  ckup,;       which loads, uses
00007F40  20 4D 52 43 49 2C 20 61  6E 64 20 74 68 65 6E 20  74 65 72 6D 69 6E 61 74  65 73 2E 0D 0A 3B 0D 0A   MRCI, and then terminates.;
00007F60  3B 20 20 20 20 20 20 20  54 68 69 73 20 65 78 61  6D 70 6C 65 20 64 65 6D  6F 6E 73 74 72 61 74 65  ;       This example demonstrate
00007F80  73 20 74 68 65 20 70 72  6F 70 65 72 20 74 65 63  68 6E 69 71 75 65 20 66  6F 72 3A 0D 0A 3B 0D 0A  s the proper technique for:;
00007FA0  3B 20 20 20 20 20 20 20  31 29 20 43 61 6C 6C 69  6E 67 20 74 68 65 20 4D  52 43 49 20 73 65 72 76  ;       1) Calling the MRCI serv
00007FC0  65 72 20 74 6F 20 67 65  74 20 69 74 73 20 63 61  70 61 62 69 6C 69 74 69  65 73 0D 0A 3B 20 20 20  er to get its capabilities;   
00007FE0  20 20 20 20 32 29 20 43  61 6C 6C 69 6E 67 20 74  68 65 20 4D 52 43 49 20  73 65 72 76 65 72 20 74      2) Calling the MRCI server t
00008000  6F 20 70 65 72 66 6F 72  6D 20 53 74 61 6E 64 61  72 64 20 43 6F 6D 70 72  65 73 73 0D 0A 3B 20 20  o perform Standard Compress;  
00008020  20 20 20 20 20 33 29 20  43 61 6C 6C 69 6E 67 20  74 68 65 20 4D 52 43 49  20 73 65 72 76 65 72 20       3) Calling the MRCI server 
00008040  74 6F 20 70 65 72 66 6F  72 6D 20 44 65 63 6F 6D  70 72 65 73 73 0D 0A 0D  0A 0D 0A 69 6E 63 6C 75  to perform Decompressinclu
00008060  64 65 20 75 74 69 6C 69  74 79 2E 69 6E 63 0D 0A  69 6E 63 6C 75 64 65 20  6D 72 63 69 2E 69 6E 63  de utility.incinclude mrci.inc
00008080  0D 0A 0D 0A 0D 0A 3B 2A  2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 0D 0A  ;***********************
000080A0  3B 2A 20 50 72 69 76 61  74 65 20 44 65 66 69 6E  69 74 69 6F 6E 73 20 2A  0D 0A 3B 2A 2A 2A 2A 2A  ;* Private Definitions *;*****
000080C0  2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 0D 0A 0D 0A 63 62  42 55 46 46 45 52 20 20  ******************cbBUFFER  
000080E0  20 20 65 71 75 20 20 20  20 20 38 31 39 32 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3B 20    equ     8192                ; 
00008100  4F 75 72 20 63 6F 6D 70  72 65 73 73 69 6F 6E 20  62 6C 6F 63 6B 20 73 69  7A 65 0D 0A 0D 0A 0D 0A  Our compression block size
00008120  3B 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  2A 0D 0A 3B 2A 20 43 4F  44 45 20 73 65 67 6D 65  ;****************;* CODE segme
00008140  6E 74 20 2A 0D 0A 3B 2A  2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 0D  0A 0D 0A 63 6F 64 65 20  nt *;****************code 
00008160  20 20 20 73 65 67 6D 65  6E 74 0D 0A 20 20 20 20  61 73 73 75 6D 65 20 20  63 73 3A 63 6F 64 65 0D     segment    assume  cs:code
00008180  0A 0D 0A 0D 0A 3B 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 0D 0A 3B 2A 20  44 41 54 41 20 41 52 45  ;*************;* DATA ARE
000081A0  41 20 2A 0D 0A 3B 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 0D 0A 0D 0A 70  6D 69 20 20 20 20 20 64  A *;*************pmi     d
000081C0  64 20 20 30 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3B  d  0                           ;
000081E0  20 50 6F 69 6E 74 65 72  20 74 6F 20 4D 52 43 49  4E 46 4F 20 73 74 72 75  63 74 75 72 65 0D 0A 0D   Pointer to MRCINFO structure
00008200  0A 62 75 66 66 65 72 31  20 64 62 20 20 63 62 42  55 46 46 45 52 20 64 75  70 20 28 3F 29 20 20 20  buffer1 db  cbBUFFER dup (?)   
00008220  20 20 20 20 20 20 20 20  20 3B 20 4F 6E 65 20 64  61 74 61 20 62 75 66 66  65 72 0D 0A 62 75 66 66           ; One data bufferbuff
00008240  65 72 32 20 64 62 20 20  63 62 42 55 46 46 45 52  20 64 75 70 20 28 3F 29  20 20 20 20 20 20 20 20  er2 db  cbBUFFER dup (?)        
00008260  20 20 20 20 3B 20 41 6E  6F 74 68 65 72 20 64 61  74 61 20 62 75 66 66 65  72 0D 0A 0D 0A 6D 72 20      ; Another data buffermr 
00008280  20 20 20 20 20 4D 52 43  52 45 51 55 45 53 54 20  20 20 20 3C 3E 20 20 20  20 20 20 20 20 20 20 20       MRCREQUEST    <>           
000082A0  20 20 20 20 20 3B 20 4D  52 43 49 20 72 65 71 75  65 73 74 20 62 6C 6F 63  6B 0D 0A 0D 0A 0D 0A 3B       ; MRCI request block;
000082C0  2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 0D 0A 3B  2A 20 55 53 45 20 4D 52  *********************;* USE MR
000082E0  43 49 20 53 65 72 76 69  63 65 73 20 2A 0D 0A 3B  2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  CI Services *;****************
00008300  2A 2A 2A 2A 2A 0D 0A 0D  0A 0D 0A 6D 61 69 6E 20  20 20 20 70 72 6F 63 0D  0A 20 20 20 20 20 20 20  *****main    proc       
00008320  20 63 61 6C 6C 20 20 20  20 49 6E 69 74 4D 52 43  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20   call    InitMRC                
00008340  20 3B 20 47 65 74 20 4D  52 43 49 20 73 65 72 76  65 72 20 69 6E 66 6F 72  6D 61 74 69 6F 6E 0D 0A   ; Get MRCI server information
00008360  20 20 20 20 20 20 20 20  6F 72 20 20 20 20 20 20  61 78 2C 61 78 20 20 20  20 20 20 20 20 20 20 20          or      ax,ax           
00008380  20 20 20 20 20 20 20 20  3B 20 4D 52 43 49 20 73  65 72 76 65 72 20 70 72  65 73 65 6E 74 0D 0A 20          ; MRCI server present 
000083A0  20 20 20 20 20 20 20 6A  6E 7A 20 20 20 20 20 6D  61 78 20 20 20 20 20 20  20 20 20 20 20 20 20 20         jnz     max              
000083C0  20 20 20 20 20 20 20 3B  20 20 20 4E 4F 2C 20 65  78 69 74 0D 0A 0D 0A 3B  2A 20 20 43 6F 6D 70 72         ;   NO, exit;*  Compr
000083E0  65 73 73 20 73 6F 6D 65  20 64 61 74 61 0D 0A 3B  0D 0A 3B 20 20 20 20 20  20 20 41 73 73 75 6D 65  ess some data;;       Assume
00008400  20 62 75 66 66 65 72 31  20 68 61 73 20 75 6E 63  6F 6D 70 72 65 73 73 65  64 20 64 61 74 61 0D 0A   buffer1 has uncompressed data
00008420  3B 0D 0A 20 20 20 20 20  20 20 20 6D 6F 76 20 20  20 20 20 61 78 2C 63 73  20 20 20 20 20 20 20 20  ;        mov     ax,cs        
00008440  20 20 20 20 20 20 20 20  20 20 20 3B 20 47 65 74  20 43 53 20 69 6E 20 41  58 2C 20 66 6F 72 20 62             ; Get CS in AX, for b
00008460  75 66 66 65 72 20 70 6F  69 6E 74 65 72 73 0D 0A  20 20 20 20 20 20 20 20  6D 6F 76 20 20 20 20 20  uffer pointers        mov     
00008480  64 73 2C 61 78 0D 0A 20  20 20 20 20 20 20 20 6D  6F 76 20 20 20 20 20 73  69 2C 4F 46 46 53 45 54  ds,ax        mov     si,OFFSET
000084A0  20 6D 72 20 20 20 20 20  20 20 20 20 20 20 20 3B  20 64 73 3A 73 69 20 2D  3E 20 6F 75 72 20 4D 52   mr            ; ds:si -> our MR
000084C0  43 52 45 51 55 45 53 54  20 70 61 63 6B 65 74 0D  0A 0D 0A 20 20 20 20 20  20 20 20 3B 2A 20 53 65  CREQUEST packet        ;* Se
000084E0  74 20 73 6F 75 72 63 65  20 70 6F 69 6E 74 65 72  2C 20 6C 65 6E 67 74 68  0D 0A 20 20 20 20 20 20  t source pointer, length      
00008500  20 20 6D 6F 76 20 20 20  20 20 64 73 3A 5B 73 69  5D 2E 6D 72 5F 70 62 53  72 63 2E 6F 66 66 73 74    mov     ds:[si].mr_pbSrc.offst
00008520  2C 4F 46 46 53 45 54 20  62 75 66 66 65 72 31 0D  0A 20 20 20 20 20 20 20  20 6D 6F 76 20 20 20 20  ,OFFSET buffer1        mov    
00008540  20 64 73 3A 5B 73 69 5D  2E 6D 72 5F 70 62 53 72  63 2E 73 65 67 6D 74 2C  61 78 0D 0A 20 20 20 20   ds:[si].mr_pbSrc.segmt,ax    
00008560  20 20 20 20 6D 6F 76 20  20 20 20 20 64 73 3A 5B  73 69 5D 2E 6D 72 5F 63  62 53 72 63 2C 63 62 42      mov     ds:[si].mr_cbSrc,cbB
00008580  55 46 46 45 52 0D 0A 0D  0A 20 20 20 20 20 20 20  20 3B 2A 20 53 65 74 20  64 65 73 74 69 6E 61 74  UFFER        ;* Set destinat
000085A0  69 6F 6E 20 70 6F 69 6E  74 65 72 2C 20 6C 65 6E  67 74 68 0D 0A 20 20 20  20 20 20 20 20 6D 6F 76  ion pointer, length        mov
000085C0  20 20 20 20 20 64 73 3A  5B 73 69 5D 2E 6D 72 5F  70 62 44 73 74 2E 6F 66  66 73 74 2C 4F 46 46 53       ds:[si].mr_pbDst.offst,OFFS
000085E0  45 54 20 62 75 66 66 65  72 32 0D 0A 20 20 20 20  20 20 20 20 6D 6F 76 20  20 20 20 20 64 73 3A 5B  ET buffer2        mov     ds:[
00008600  73 69 5D 2E 6D 72 5F 70  62 44 73 74 2E 73 65 67  6D 74 2C 61 78 0D 0A 20  20 20 20 20 20 20 20 6D  si].mr_pbDst.segmt,ax        m
00008620  6F 76 20 20 20 20 20 64  73 3A 5B 73 69 5D 2E 6D  72 5F 63 62 44 73 74 2C  63 62 42 55 46 46 45 52  ov     ds:[si].mr_cbDst,cbBUFFER
00008640  0D 0A 0D 0A 20 20 20 20  20 20 20 20 3B 2A 20 53  65 74 20 73 74 6F 72 61  67 65 20 63 68 75 6E 6B          ;* Set storage chunk
00008660  20 67 72 61 6E 75 6C 61  72 69 74 79 0D 0A 20 20  20 20 20 20 20 20 6D 6F  76 20 20 20 20 20 64 73   granularity        mov     ds
00008680  3A 5B 73 69 5D 2E 6D 72  5F 63 62 43 68 75 6E 6B  2C 31 20 20 20 20 3B 20  57 65 20 73 74 6F 72 65  :[si].mr_cbChunk,1    ; We store
000086A0  20 61 74 20 62 79 74 65  20 67 72 61 6E 75 6C 61  72 69 74 79 0D 0A 0D 0A  20 20 20 20 20 20 20 20   at byte granularity        
000086C0  3B 2A 20 47 65 74 20 4D  52 43 49 4E 46 4F 20 70  6F 69 6E 74 65 72 20 66  6F 72 20 63 61 6C 6C 0D  ;* Get MRCINFO pointer for call
000086E0  0A 20 20 20 20 20 20 20  20 6C 65 73 20 20 20 20  20 62 78 2C 63 73 3A 70  6D 69 0D 0A 0D 0A 20 20          les     bx,cs:pmi  
00008700  20 20 20 20 20 20 3B 2A  20 53 65 74 20 6F 70 65  72 61 74 69 6F 6E 20 61  6E 64 20 63 6C 69 65 6E        ;* Set operation and clien
00008720  74 20 74 79 70 65 0D 0A  20 20 20 20 20 20 20 20  6D 6F 76 20 20 20 20 20  61 78 2C 6D 69 63 61 70  t type        mov     ax,micap
00008740  53 54 41 4E 44 41 52 44  0D 0A 20 20 20 20 20 20  20 20 6D 6F 76 20 20 20  20 20 63 78 2C 6D 63 53  STANDARD        mov     cx,mcS
00008760  59 53 54 45 4D 0D 0A 0D  0A 20 20 20 20 20 20 20  20 63 61 6C 6C 20 20 20  20 4D 52 43 43 6F 6D 70  YSTEM        call    MRCComp
00008780  72 65 73 73 20 20 20 20  20 20 20 20 20 20 20 20  20 3B 20 43 6F 6D 70 72  65 73 73 21 0D 0A 20 20  ress             ; Compress!  
000087A0  20 20 20 20 20 20 6F 72  20 20 20 20 20 20 61 78  2C 61 78 20 20 20 20 20  20 20 20 20 20 20 20 20        or      ax,ax             
000087C0  20 20 20 20 20 20 3B 20  44 69 64 20 63 6F 6D 70  72 65 73 73 20 77 6F 72  6B 3F 0D 0A 20 20 20 20        ; Did compress work?    
000087E0  20 20 20 20 6A 6E 7A 20  20 20 20 20 6D 61 78 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20      jnz     max                 
00008800  20 20 20 20 3B 20 20 20  4E 4F 2C 20 67 6F 20 65  78 69 74 0D 0A 0D 0A 20  20 20 20 20 20 20 20 3B      ;   NO, go exit        ;
00008820  2A 20 20 62 75 66 66 65  72 32 20 6E 6F 77 20 68  61 73 20 63 6F 6D 70 72  65 73 73 65 64 20 64 61  *  buffer2 now has compressed da
00008840  74 61 2C 20 61 6E 64 0D  0A 20 20 20 20 20 20 20  20 3B 20 20 20 64 73 3A  5B 73 69 5D 2E 6D 72 5F  ta, and        ;   ds:[si].mr_
00008860  63 62 44 73 74 20 68 61  73 20 74 68 65 20 73 69  7A 65 20 6F 66 20 74 68  65 20 63 6F 6D 70 72 65  cbDst has the size of the compre
00008880  73 73 65 64 20 64 61 74  61 2E 0D 0A 0D 0A 0D 0A  3B 2A 20 20 44 65 63 6F  6D 70 72 65 73 73 20 73  ssed data.;*  Decompress s
000088A0  6F 6D 65 20 64 61 74 61  0D 0A 3B 0D 0A 3B 20 20  20 20 20 20 20 41 73 73  75 6D 65 20 62 75 66 66  ome data;;       Assume buff
000088C0  65 72 31 20 68 61 73 20  63 6F 6D 70 72 65 73 73  65 64 20 64 61 74 61 0D  0A 3B 0D 0A 20 20 20 20  er1 has compressed data;    
000088E0  20 20 20 20 6D 6F 76 20  20 20 20 20 61 78 2C 63  73 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20      mov     ax,cs               
00008900  20 20 20 20 3B 20 47 65  74 20 43 53 20 69 6E 20  41 58 2C 20 66 6F 72 20  62 75 66 66 65 72 20 70      ; Get CS in AX, for buffer p
00008920  6F 69 6E 74 65 72 73 0D  0A 20 20 20 20 20 20 20  20 6D 6F 76 20 20 20 20  20 64 73 2C 61 78 0D 0A  ointers        mov     ds,ax
00008940  20 20 20 20 20 20 20 20  6D 6F 76 20 20 20 20 20  73 69 2C 4F 46 46 53 45  54 20 6D 72 20 20 20 20          mov     si,OFFSET mr    
00008960  20 20 20 20 20 20 20 20  3B 20 64 73 3A 73 69 20  2D 3E 20 6F 75 72 20 4D  52 43 52 45 51 55 45 53          ; ds:si -> our MRCREQUES
00008980  54 20 70 61 63 6B 65 74  0D 0A 0D 0A 20 20 20 20  20 20 20 20 3B 2A 20 53  65 74 20 73 6F 75 72 63  T packet        ;* Set sourc
000089A0  65 20 70 6F 69 6E 74 65  72 2C 20 6C 65 6E 67 74  68 0D 0A 20 20 20 20 20  20 20 20 6D 6F 76 20 20  e pointer, length        mov  
000089C0  20 20 20 64 73 3A 5B 73  69 5D 2E 6D 72 5F 70 62  53 72 63 2E 6F 66 66 73  74 2C 4F 46 46 53 45 54     ds:[si].mr_pbSrc.offst,OFFSET
000089E0  20 62 75 66 66 65 72 31  0D 0A 20 20 20 20 20 20  20 20 6D 6F 76 20 20 20  20 20 64 73 3A 5B 73 69   buffer1        mov     ds:[si
00008A00  5D 2E 6D 72 5F 70 62 53  72 63 2E 73 65 67 6D 74  2C 61 78 0D 0A 20 20 20  20 20 20 20 20 6D 6F 76  ].mr_pbSrc.segmt,ax        mov
00008A20  20 20 20 20 20 64 73 3A  5B 73 69 5D 2E 6D 72 5F  63 62 53 72 63 2C 63 62  42 55 46 46 45 52 0D 0A       ds:[si].mr_cbSrc,cbBUFFER
00008A40  0D 0A 20 20 20 20 20 20  20 20 3B 2A 20 53 65 74  20 64 65 73 74 69 6E 61  74 69 6F 6E 20 70 6F 69          ;* Set destination poi
00008A60  6E 74 65 72 2C 20 6C 65  6E 67 74 68 0D 0A 20 20  20 20 20 20 20 20 6D 6F  76 20 20 20 20 20 64 73  nter, length        mov     ds
00008A80  3A 5B 73 69 5D 2E 6D 72  5F 70 62 44 73 74 2E 6F  66 66 73 74 2C 4F 46 46  53 45 54 20 62 75 66 66  :[si].mr_pbDst.offst,OFFSET buff
00008AA0  65 72 32 0D 0A 20 20 20  20 20 20 20 20 6D 6F 76  20 20 20 20 20 64 73 3A  5B 73 69 5D 2E 6D 72 5F  er2        mov     ds:[si].mr_
00008AC0  70 62 44 73 74 2E 73 65  67 6D 74 2C 61 78 0D 0A  20 20 20 20 20 20 20 20  6D 6F 76 20 20 20 20 20  pbDst.segmt,ax        mov     
00008AE0  64 73 3A 5B 73 69 5D 2E  6D 72 5F 63 62 44 73 74  2C 63 62 42 55 46 46 45  52 0D 0A 0D 0A 20 20 20  ds:[si].mr_cbDst,cbBUFFER   
00008B00  20 20 20 20 20 3B 2A 20  47 65 74 20 4D 52 43 49  4E 46 4F 20 70 6F 69 6E  74 65 72 0D 0A 20 20 20       ;* Get MRCINFO pointer   
00008B20  20 20 20 20 20 6C 65 73  20 20 20 20 20 62 78 2C  63 73 3A 70 6D 69 0D 0A  0D 0A 20 20 20 20 20 20       les     bx,cs:pmi      
00008B40  20 20 3B 2A 20 53 65 74  20 63 6C 69 65 6E 74 20  74 79 70 65 0D 0A 20 20  20 20 20 20 20 20 6D 6F    ;* Set client type        mo
00008B60  76 20 20 20 20 20 63 78  2C 6D 63 53 59 53 54 45  4D 0D 0A 0D 0A 20 20 20  20 20 20 20 20 63 61 6C  v     cx,mcSYSTEM        cal
00008B80  6C 20 20 20 20 4D 52 43  44 65 63 6F 6D 70 72 65  73 73 20 20 20 20 20 20  20 20 20 20 20 3B 20 43  l    MRCDecompress           ; C
00008BA0  6F 6D 70 72 65 73 73 21  0D 0A 20 20 20 20 20 20  20 20 6F 72 20 20 20 20  20 20 61 78 2C 61 78 20  ompress!        or      ax,ax 
00008BC0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 3B 20 44 69 64 20  63 6F 6D 70 72 65 73 73                    ; Did compress
00008BE0  20 77 6F 72 6B 3F 0D 0A  20 20 20 20 20 20 20 20  6A 6E 7A 20 20 20 20 20  6D 61 78 20 20 20 20 20   work?        jnz     max     
00008C00  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  3B 20 20 20 4E 4F 2C 20  67 6F 20 65 78 69 74 0D                  ;   NO, go exit
00008C20  0A 0D 0A 20 20 20 20 20  20 20 20 3B 2A 20 20 62  75 66 66 65 72 32 20 6E  6F 77 20 68 61 73 20 64          ;*  buffer2 now has d
00008C40  65 63 6F 6D 70 72 65 73  73 65 64 20 64 61 74 61  2C 20 61 6E 64 0D 0A 20  20 20 20 20 20 20 20 3B  ecompressed data, and        ;
00008C60  20 20 20 64 73 3A 5B 73  69 5D 2E 6D 72 5F 63 62  44 73 74 20 68 61 73 20  74 68 65 20 73 69 7A 65     ds:[si].mr_cbDst has the size
00008C80  20 6F 66 20 74 68 65 20  64 65 63 6F 6D 70 72 65  73 73 65 64 20 64 61 74  61 2E 0D 0A 0D 0A 3B 2A   of the decompressed data.;*
00008CA0  20 20 44 6F 20 73 6F 6D  65 74 68 69 6E 67 20 65  6C 73 65 20 69 6E 74 65  72 65 73 74 69 6E 67 0D    Do something else interesting
00008CC0  0A 0D 0A 20 20 20 20 20  20 20 20 3B 2A 20 4E 6F  74 68 69 6E 67 20 65 6C  73 65 20 74 6F 20 64 6F          ;* Nothing else to do
00008CE0  2C 20 74 68 69 73 20 69  73 20 6A 75 73 74 20 61  6E 20 65 78 61 6D 70 6C  65 2E 0D 0A 0D 0A 6D 61  , this is just an example.ma
00008D00  78 3A 20 20 20 20 72 65  74 0D 0A 0D 0A 6D 61 69  6E 20 20 20 20 65 6E 64  70 0D 0A 0D 0A 0D 0A 3B  x:    retmain    endp;
00008D20  2A 2A 20 42 45 47 49 4E  3A 20 49 6E 63 6C 75 64  65 20 63 6F 64 65 20 66  6F 72 20 4D 52 43 43 6F  ** BEGIN: Include code for MRCCo
00008D40  6D 70 72 65 73 73 2F 4D  52 43 44 65 63 6F 6D 70  72 65 73 73 20 68 65 72  65 21 0D 0A 3B 0D 0A 20  mpress/MRCDecompress here!; 
00008D60  20 20 20 20 20 20 20 44  65 66 69 6E 65 4D 52 43  43 6F 6D 70 72 65 73 73  0D 0A 20 20 20 20 20 20         DefineMRCCompress      
00008D80  20 20 44 65 66 69 6E 65  4D 52 43 44 65 63 6F 6D  70 72 65 73 73 0D 0A 3B  0D 0A 3B 2A 2A 20 45 4E    DefineMRCDecompress;;** EN
00008DA0  44 3A 20 20 20 49 6E 63  6C 75 64 65 20 63 6F 64  65 20 66 6F 72 20 4D 52  43 43 6F 6D 70 72 65 73  D:   Include code for MRCCompres
00008DC0  73 2F 4D 52 43 44 65 63  6F 6D 70 72 65 73 73 20  68 65 72 65 21 0D 0A 0D  0A 0D 0A 3B 2A 2A 2A 2A  s/MRCDecompress here!;****
00008DE0  2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 0D 0A  3B 2A 20 49 4E 49 54 2D  54 49 4D 45 20 43 4F 44  **************;* INIT-TIME COD
00008E00  45 20 2A 0D 0A 3B 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  0D 0A 0D 0A 3B 2A 2A 20  E *;******************;** 
00008E20  42 45 47 49 4E 3A 20 49  6E 63 6C 75 64 65 20 63  6F 64 65 20 66 6F 72 20  4D 52 43 51 75 65 72 79  BEGIN: Include code for MRCQuery
00008E40  20 68 65 72 65 21 0D 0A  3B 0D 0A 20 20 20 20 20  20 20 20 44 65 66 69 6E  65 4D 52 43 51 75 65 72   here!;        DefineMRCQuer
00008E60  79 0D 0A 3B 0D 0A 3B 2A  2A 20 45 4E 44 3A 20 20  20 49 6E 63 6C 75 64 65  20 63 6F 64 65 20 66 6F  y;;** END:   Include code fo
00008E80  72 20 4D 52 43 51 75 65  72 79 20 68 65 72 65 21  0D 0A 0D 0A 0D 0A 3B 2A  2A 20 20 20 20 20 49 6E  r MRCQuery here!;**     In
00008EA0  69 74 4D 52 43 20 2D 20  47 65 74 20 61 64 64 72  65 73 73 20 6F 66 20 4D  52 43 49 20 53 65 72 76  itMRC - Get address of MRCI Serv
00008EC0  65 72 0D 0A 3B 0D 0A 3B  0D 0A 3B 20 20 20 20 20  20 20 45 6E 74 72 79 0D  0A 3B 20 20 20 20 20 20  er;;;       Entry;      
00008EE0  20 20 20 20 20 6E 6F 6E  65 2E 0D 0A 3B 0D 0A 3B  20 20 20 20 20 20 20 45  78 69 74 2D 53 75 63 63       none.;;       Exit-Succ
00008F00  65 73 73 0D 0A 3B 20 20  20 20 20 20 20 20 20 20  20 61 78 20 3D 20 30 0D  0A 3B 20 20 20 20 20 20  ess;           ax = 0;      
00008F20  20 20 20 20 20 70 6D 69  20 3D 20 70 6F 69 6E 74  65 72 20 74 6F 20 4D 52  43 49 20 73 65 72 76 65       pmi = pointer to MRCI serve
00008F40  72 20 4D 52 43 49 4E 46  4F 20 73 74 72 75 63 74  75 72 65 0D 0A 3B 0D 0A  3B 20 20 20 20 20 20 20  r MRCINFO structure;;       
00008F60  45 78 69 74 2D 46 61 69  6C 75 72 65 0D 0A 3B 20  20 20 20 20 20 20 20 20  20 20 61 78 20 21 3D 20  Exit-Failure;           ax != 
00008F80  30 2C 20 6E 6F 20 4D 52  43 49 20 73 65 72 76 65  72 20 70 72 65 73 65 6E  74 0D 0A 3B 0D 0A 3B 20  0, no MRCI server present;; 
00008FA0  20 20 20 20 20 20 55 73  65 73 0D 0A 3B 20 20 20  20 20 20 20 20 20 20 20  61 78 2C 62 78 2C 65 73        Uses;           ax,bx,es
00008FC0  2C 66 6C 61 67 73 0D 0A  0D 0A 49 6E 69 74 4D 52  43 20 70 72 6F 63 20 20  20 20 6E 65 61 72 0D 0A  ,flagsInitMRC proc    near
00008FE0  20 20 20 20 61 73 73 75  6D 65 20 20 64 73 3A 6E  6F 74 68 69 6E 67 2C 65  73 3A 6E 6F 74 68 69 6E      assume  ds:nothing,es:nothin
00009000  67 2C 73 73 3A 6E 6F 74  68 69 6E 67 0D 0A 20 20  20 20 20 20 20 20 63 61  6C 6C 20 20 20 20 4D 52  g,ss:nothing        call    MR
00009020  43 51 75 65 72 79 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3B 20  65 73 3A 62 78 20 2D 3E  CQuery                ; es:bx ->
00009040  20 4D 52 43 49 4E 46 4F  2C 20 69 66 20 73 65 72  76 65 72 20 70 72 65 73  65 6E 74 0D 0A 20 20 20   MRCINFO, if server present   
00009060  20 20 20 20 20 6F 72 20  20 20 20 20 20 61 78 2C  61 78 20 20 20 20 20 20  20 20 20 20 20 20 20 20       or      ax,ax              
00009080  20 20 20 20 20 3B 20 49  73 20 73 65 72 76 65 72  20 70 72 65 73 65 6E 74  3F 0D 0A 20 20 20 20 20       ; Is server present?     
000090A0  20 20 20 6A 6E 7A 20 20  20 20 20 69 6D 78 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20     jnz     imx                  
000090C0  20 20 20 3B 20 20 20 4E  4F 2C 20 67 6F 20 66 61  69 6C 20 28 61 78 20 21  3D 20 30 29 0D 0A 0D 0A     ;   NO, go fail (ax != 0)
000090E0  3B 2A 20 20 53 65 72 76  65 72 20 70 72 65 73 65  6E 74 2C 20 73 61 76 65  20 4D 52 43 49 4E 46 4F  ;*  Server present, save MRCINFO
00009100  20 70 6F 69 6E 74 65 72  0D 0A 0D 0A 20 20 20 20  20 20 20 20 6D 6F 76 20  20 20 20 20 63 73 3A 70   pointer        mov     cs:p
00009120  6D 69 2E 6F 66 66 73 74  2C 62 78 20 3B 20 53 74  6F 72 65 20 6F 66 66 73  65 74 0D 0A 20 20 20 20  mi.offst,bx ; Store offset    
00009140  20 20 20 20 6D 6F 76 20  20 20 20 20 61 78 2C 65  73 0D 0A 20 20 20 20 20  20 20 20 6D 6F 76 20 20      mov     ax,es        mov  
00009160  20 20 20 63 73 3A 70 6D  69 2E 73 65 67 6D 74 2C  61 78 20 3B 20 53 74 6F  72 65 20 73 65 67 6D 65     cs:pmi.segmt,ax ; Store segme
00009180  6E 74 0D 0A 0D 0A 20 20  20 20 20 20 20 20 78 6F  72 20 20 20 20 20 61 78  2C 61 78 20 20 20 20 20  nt        xor     ax,ax     
000091A0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3B 20  49 6E 64 69 63 61 74 65  20 73 75 63 63 65 73 73                ; Indicate success
000091C0  0D 0A 0D 0A 69 6D 78 3A  20 20 20 20 72 65 74 0D  0A 0D 0A 49 6E 69 74 4D  52 43 20 65 6E 64 70 0D  imx:    retInitMRC endp
000091E0  0A 0D 0A 0D 0A 63 6F 64  65 20 20 20 20 65 6E 64  73 0D 0A 0D 0A 20 20 20  20 20 20 20 20 65 6E 64  code    ends        end
00009200  0D 0A 15 13 61 75 74 6F  6E 75 6D 6C 67 6C 20 15  20 4D 52 43 49 20 53 65  72 76 65 72 20 45 78 61  §autonumlgl § MRCI Server Exa
00009220  6D 70 6C 65 0D 0A 0D 0A  13 69 6E 63 6C 75 64 65  20 6D 72 63 69 73 72 76  2E 61 73 6D 20 5C 63 20  mpleinclude mrcisrv.asm \c 
00009240  54 65 78 74 14 3B 2A 2A  2A 20 20 20 20 4D 52 43  53 52 56 2E 41 53 4D 20  2D 20 4D 52 43 49 20 53  Text;***    MRCSRV.ASM - MRCI S
00009260  65 72 76 65 72 20 45 58  41 4D 50 4C 45 0D 0A 3B  0D 0A 3B 20 20 20 20 20  20 20 4D 52 43 49 20 76  erver EXAMPLE;;       MRCI v
00009280  65 72 73 69 6F 6E 20 31  2E 30 30 2E 30 38 20 20  30 32 2D 41 70 72 2D 31  39 39 33 0D 0A 3B 0D 0A  ersion 1.00.08  02-Apr-1993;
000092A0  3B 20 20 20 20 20 20 20  4E 4F 54 45 3A 20 54 68  69 73 20 65 78 61 6D 70  6C 65 20 69 73 20 69 6D  ;       NOTE: This example is im
000092C0  70 6C 65 6D 65 6E 74 65  64 20 61 73 73 75 6D 69  6E 67 20 74 68 65 20 63  6F 64 65 20 73 65 67 6D  plemented assuming the code segm
000092E0  65 6E 74 20 69 73 0D 0A  3B 20 20 20 20 20 20 20  20 20 20 20 20 20 77 72  69 74 65 61 62 6C 65 2C  ent is;             writeable,
00009300  20 66 6F 72 20 73 69 6D  70 6C 69 63 69 74 79 2E  0D 0A 3B 0D 0A 3B 20 20  20 20 20 20 20 45 58 50   for simplicity.;;       EXP
00009320  4F 52 54 45 44 20 46 55  4E 43 54 49 4F 4E 53 3A  0D 0A 3B 20 20 20 20 20  20 20 20 20 20 20 53 65  ORTED FUNCTIONS:;           Se
00009340  72 76 65 72 20 20 20 20  2D 20 69 6E 74 4D 52 43  49 20 69 6E 74 65 72 72  75 70 74 20 68 61 6E 64  rver    - intMRCI interrupt hand
00009360  6C 65 72 0D 0A 3B 20 20  20 20 20 20 20 20 20 20  20 4F 70 65 72 61 74 65  20 20 20 2D 20 43 6F 6D  ler;           Operate   - Com
00009380  70 72 65 73 73 2F 44 65  63 6F 6D 70 72 65 73 73  20 65 6E 74 72 79 20 70  6F 69 6E 74 0D 0A 3B 20  press/Decompress entry point; 
000093A0  20 20 20 20 20 20 20 20  20 20 53 74 72 61 74 65  67 79 20 20 2D 20 44 4F  53 20 64 65 76 69 63 65            Strategy  - DOS device
000093C0  20 64 72 69 76 65 72 20  73 74 72 61 74 65 67 79  20 65 6E 74 72 79 20 70  6F 69 6E 74 0D 0A 3B 20   driver strategy entry point; 
000093E0  20 20 20 20 20 20 20 20  20 20 49 6E 74 65 72 72  75 70 74 20 2D 20 44 4F  53 20 64 65 76 69 63 65            Interrupt - DOS device
00009400  20 64 72 69 76 65 72 20  69 6E 74 65 72 72 75 70  74 20 65 6E 74 72 79 20  70 6F 69 6E 74 0D 0A 3B   driver interrupt entry point;
00009420  0D 0A 3B 0D 0A 3B 20 20  20 20 20 20 20 49 4E 54  45 52 4E 41 4C 20 46 55  4E 43 54 49 4F 4E 53 3A  ;;       INTERNAL FUNCTIONS:
00009440  0D 0A 3B 20 20 20 20 20  20 20 20 20 20 20 49 6E  69 74 4D 52 43 53 65 72  76 65 72 20 20 20 20 20  ;           InitMRCServer     
00009460  20 20 2D 20 49 6E 73 74  61 6C 6C 20 53 65 72 76  65 72 0D 0A 3B 20 20 20  20 20 20 20 20 20 20 20    - Install Server;           
00009480  53 68 6F 75 6C 64 57 65  49 6E 73 74 61 6C 6C 20  20 20 20 20 2D 20 54 65  73 74 20 69 66 20 77 65  ShouldWeInstall     - Test if we
000094A0  20 73 68 6F 75 6C 64 20  72 65 70 6C 61 63 65 20  65 78 69 73 74 69 6E 67  20 73 65 72 76 65 72 0D   should replace existing server
000094C0  0A 3B 20 20 20 20 20 20  20 20 20 20 20 47 65 74  49 6E 44 4F 53 46 6C 61  67 50 6F 69 6E 74 65 72  ;           GetInDOSFlagPointer
000094E0  20 2D 20 47 65 74 20 61  64 64 72 65 73 73 20 6F  66 20 49 6E 44 4F 53 20  66 6C 61 67 0D 0A 3B 20   - Get address of InDOS flag; 
00009500  20 20 20 20 20 20 20 20  20 20 44 6F 43 6F 6D 70  72 65 73 73 20 20 20 20  20 20 20 20 20 20 2D 20            DoCompress          - 
00009520  55 6E 69 6D 70 6C 65 6D  65 6E 74 65 64 20 63 6F  6D 70 72 65 73 73 20 72  6F 75 74 69 6E 65 0D 0A  Unimplemented compress routine
00009540  3B 20 20 20 20 20 20 20  20 20 20 20 44 6F 44 65  63 6F 6D 70 72 65 73 73  20 20 20 20 20 20 20 20  ;           DoDecompress        
00009560  2D 20 55 6E 69 6D 70 6C  65 6D 65 6E 74 65 64 20  64 65 63 6F 6D 70 72 65  73 73 20 72 6F 75 74 69  - Unimplemented decompress routi
00009580  6E 65 0D 0A 0D 0A 0D 0A  69 6E 63 6C 75 64 65 20  75 74 69 6C 69 74 79 2E  69 6E 63 0D 0A 69 6E 63  neinclude utility.incinc
000095A0  6C 75 64 65 20 6D 72 63  69 2E 69 6E 63 0D 0A 0D  0A 0D 0A 3B 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  lude mrci.inc;************
000095C0  2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 0D 0A 3B 2A 20  50 72 69 76 61 74 65 20  44 65 66 69 6E 69 74 69  ***********;* Private Definiti
000095E0  6F 6E 73 20 2A 0D 0A 3B  2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 0D  ons *;***********************
00009600  0A 0D 0A 4D 59 56 45 52  53 49 4F 4E 20 20 20 65  71 75 20 30 31 30 30 68  20 20 20 20 20 20 20 20  MYVERSION   equ 0100h        
00009620  20 20 20 20 20 20 20 20  20 20 20 3B 20 56 65 72  73 69 6F 6E 20 6F 66 20  74 68 69 73 20 73 65 72             ; Version of this ser
00009640  76 65 72 0D 0A 4D 52 43  49 56 45 52 53 49 4F 4E  20 65 71 75 20 30 31 30  30 68 20 20 20 20 20 20  verMRCIVERSION equ 0100h      
00009660  20 20 20 20 20 20 20 20  20 20 20 20 20 3B 20 56  65 72 73 69 6F 6E 20 6F  66 20 4D 52 43 49 20 73               ; Version of MRCI s
00009680  75 70 70 6F 72 74 65 64  20 62 79 20 74 68 69 73  20 73 65 72 76 65 72 0D  0A 4D 59 56 45 4E 44 4F  upported by this serverMYVENDO
000096A0  52 20 20 20 20 65 71 75  20 35 34 34 36 35 33 34  44 68 20 20 20 20 20 20  20 20 20 20 20 20 20 20  R    equ 5446534Dh              
000096C0  20 3B 20 22 4D 53 46 54  22 20 28 72 65 76 65 72  73 65 64 20 66 6F 72 20  62 79 74 65 20 6F 72 64   ; "MSFT" (reversed for byte ord
000096E0  65 72 69 6E 67 29 0D 0A  4D 59 56 45 4E 44 4F 52  68 69 20 20 65 71 75 20  35 34 34 36 68 20 20 20  ering)MYVENDORhi  equ 5446h   
00009700  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  3B 20 48 69 67 68 20 77  6F 72 64 20 6F 66 20 4D                  ; High word of M
00009720  59 56 45 4E 44 4F 52 0D  0A 4D 59 56 45 4E 44 4F  52 6C 6F 20 20 65 71 75  20 20 20 20 20 35 33 34  YVENDORMYVENDORlo  equ     534
00009740  44 68 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 3B 20 4C 6F 77 20 77  6F 72 64 20 6F 66 20 4D  Dh               ; Low word of M
00009760  59 56 45 4E 44 4F 52 0D  0A 63 62 4D 41 58 20 20  20 20 20 20 20 65 71 75  20 38 31 39 32 20 20 20  YVENDORcbMAX       equ 8192   
00009780  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 3B 20 4D 61 78 69 6D  75 6D 20 63 6F 6D 70 72                   ; Maximum compr
000097A0  65 73 73 69 6F 6E 20 62  6C 6F 63 6B 20 73 69 7A  65 0D 0A 0D 0A 3B 2A 20  54 68 69 73 20 73 65 72  ession block size;* This ser
000097C0  76 65 72 27 73 20 63 61  70 61 62 69 6C 69 74 69  65 73 0D 0A 6D 69 63 61  70 4D 69 6E 65 20 20 20  ver's capabilitiesmicapMine   
000097E0  65 71 75 20 6D 69 63 61  70 53 54 41 4E 44 41 52  44 20 6F 72 20 6D 69 63  61 70 44 45 43 4F 4D 50  equ micapSTANDARD or micapDECOMP
00009800  52 45 53 53 0D 0A 0D 0A  0D 0A 3B 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 0D 0A 3B  RESS;******************;
00009820  2A 20 50 52 49 56 41 54  45 20 4D 41 43 52 4F 53  20 2A 0D 0A 3B 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  * PRIVATE MACROS *;***********
00009840  2A 2A 2A 2A 2A 2A 2A 0D  0A 0D 0A 0D 0A 3B 2A 2A  2A 20 20 20 20 45 6E 74  65 72 43 72 69 74 69 63  *******;***    EnterCritic
00009860  61 6C 53 65 63 74 69 6F  6E 20 2D 20 47 72 61 62  20 73 65 72 76 65 72 20  63 72 69 74 69 63 61 6C  alSection - Grab server critical
00009880  20 73 65 63 74 69 6F 6E  0D 0A 3B 0D 0A 3B 20 20  20 20 20 20 20 45 6E 74  72 79 0D 0A 3B 20 20 20   section;;       Entry;   
000098A0  20 20 20 20 20 20 20 20  63 78 20 2D 20 46 6C 61  67 20 69 6E 64 69 63 61  74 69 6E 67 20 77 68 65          cx - Flag indicating whe
000098C0  74 68 65 72 20 74 68 65  20 63 61 6C 6C 65 72 20  6D 61 79 20 61 6C 72 65  61 64 79 20 62 65 20 69  ther the caller may already be i
000098E0  6E 73 69 64 65 20 44 4F  53 2E 0D 0A 3B 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 6D 63 41  nside DOS.;                mcA
00009900  50 50 4C 49 43 41 54 49  4F 4E 20 28 30 29 20 2D  20 49 6E 44 4F 53 20 6D  75 73 74 20 62 65 20 30  PPLICATION (0) - InDOS must be 0
00009920  2E 0D 0A 3B 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 6D 63 53 59  53 54 45 4D 20 28 31 29  .;                mcSYSTEM (1)
00009940  20 20 20 20 20 20 2D 20  49 6E 44 4F 53 20 6D 61  79 20 68 61 76 65 20 61  6E 79 20 76 61 6C 75 65        - InDOS may have any value
00009960  2E 0D 0A 3B 0D 0A 3B 20  20 20 20 20 20 20 45 78  69 74 2D 53 75 63 63 65  73 73 0D 0A 3B 20 20 20  .;;       Exit-Success;   
00009980  20 20 20 20 20 20 20 20  5A 65 72 6F 20 46 6C 61  67 20 53 65 74 2C 20 63  72 69 74 69 63 61 6C 20          Zero Flag Set, critical 
000099A0  73 65 63 74 69 6F 6E 20  65 6E 74 65 72 65 64 0D  0A 3B 20 20 20 20 20 20  20 20 20 20 20 49 6E 44  section entered;           InD
000099C0  6F 73 20 69 73 20 67 75  61 72 61 6E 74 65 65 64  20 74 6F 20 62 65 20 6E  6F 6E 2D 7A 65 72 6F 0D  os is guaranteed to be non-zero
000099E0  0A 3B 20 20 20 20 20 20  20 20 20 20 20 66 42 75  73 79 20 73 65 74 20 74  6F 20 6E 6F 6E 2D 7A 65  ;           fBusy set to non-ze
00009A00  72 6F 0D 0A 3B 0D 0A 3B  20 20 20 20 20 20 20 45  78 69 74 2D 46 61 69 6C  75 72 65 0D 0A 3B 20 20  ro;;       Exit-Failure;  
00009A20  20 20 20 20 20 20 20 20  20 5A 65 72 6F 20 46 6C  61 67 20 63 6C 65 61 72  2C 20 63 72 69 74 69 63           Zero Flag clear, critic
00009A40  61 6C 20 73 65 63 74 69  6F 6E 20 4E 4F 54 20 65  6E 74 65 72 65 64 0D 0A  3B 0D 0A 3B 20 20 20 20  al section NOT entered;;    
00009A60  20 20 20 55 73 65 73 0D  0A 3B 20 20 20 20 20 20  20 20 20 20 20 64 78 2C  73 69 2C 64 73 2C 66 6C     Uses;           dx,si,ds,fl
00009A80  61 67 73 0D 0A 0D 0A 45  6E 74 65 72 43 72 69 74  69 63 61 6C 53 65 63 74  69 6F 6E 20 6D 61 63 72  agsEnterCriticalSection macr
00009AA0  6F 20 20 72 65 67 0D 0A  20 20 20 20 20 20 20 20  63 6C 69 20 20 20 20 20  20 20 20 20 20 20 20 20  o  reg        cli             
00009AC0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  3B 20 47 72 61 62 20 6F  75 72 20 6C 6F 63 6B 20                  ; Grab our lock 
00009AE0  61 74 6F 6D 69 63 61 6C  6C 79 0D 0A 0D 0A 20 20  20 20 20 20 20 20 63 6D  70 20 20 20 20 20 63 73  atomically        cmp     cs
00009B00  3A 66 42 75 73 79 2C 30  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3B 20  41 72 65 20 77 65 20 61  :fBusy,0              ; Are we a
00009B20  6C 72 65 61 64 79 20 77  6F 72 6B 69 6E 67 20 6F  6E 20 73 6F 6D 65 74 68  69 6E 67 3F 0D 0A 20 20  lready working on something?  
00009B40  20 20 20 20 20 20 6A 6E  7A 20 20 20 20 20 65 63  73 78 20 20 20 20 20 20  20 20 20 20 20 20 20 20        jnz     ecsx              
00009B60  20 20 20 20 20 20 3B 20  20 20 59 45 53 2C 20 72  65 74 75 72 6E 20 66 61  69 6C 75 72 65 0D 0A 0D        ;   YES, return failure
00009B80  0A 3B 2A 20 20 4D 61 6B  65 20 49 6E 44 4F 53 20  6E 6F 6E 2D 7A 65 72 6F  0D 0A 3B 0D 0A 3B 20 20  ;*  Make InDOS non-zero;;  
00009BA0  20 4E 4F 54 45 3A 20 57  65 20 63 68 65 63 6B 20  66 6F 72 20 66 61 69 6C  75 72 65 20 68 65 72 65   NOTE: We check for failure here
00009BC0  2E 20 20 57 65 20 73 68  6F 75 6C 64 20 6E 6F 74  20 68 61 76 65 20 74 6F  2C 20 73 69 6E 63 65 20  .  We should not have to, since 
00009BE0  69 66 20 77 65 0D 0A 3B  20 20 20 20 20 20 20 20  20 61 72 65 20 62 75 73  79 2C 20 66 42 75 73 79  if we;         are busy, fBusy
00009C00  20 77 6F 75 6C 64 20 62  65 20 73 65 74 2C 20 61  6E 64 20 77 65 20 77 6F  75 6C 64 20 68 61 76 65   would be set, and we would have
00009C20  20 64 65 74 65 63 74 65  64 20 69 74 20 61 62 6F  76 65 2E 0D 0A 3B 20 20  20 20 20 20 20 20 20 54   detected it above.;         T
00009C40  68 65 20 6F 74 68 65 72  20 63 61 73 65 20 69 73  20 61 20 6E 6F 6E 2D 66  69 6C 65 20 73 79 73 74  he other case is a non-file syst
00009C60  65 6D 20 63 6C 69 65 6E  74 20 63 61 6C 6C 69 6E  67 2C 20 62 75 74 20 49  6E 44 4F 53 20 69 73 0D  em client calling, but InDOS is
00009C80  0A 3B 20 20 20 20 20 20  20 20 20 73 65 74 2E 20  20 54 68 69 73 20 63 61  73 65 20 73 68 6F 75 6C  ;         set.  This case shoul
00009CA0  64 20 6E 6F 74 20 68 61  70 70 65 6E 2C 20 62 65  63 61 75 73 65 20 69 66  20 49 6E 44 4F 53 20 69  d not happen, because if InDOS i
00009CC0  73 20 73 65 74 2C 20 6E  6F 0D 0A 3B 20 20 20 20  20 20 20 20 20 6E 6F 6E  2D 66 69 6C 65 20 73 79  s set, no;         non-file sy
00009CE0  73 74 65 6D 20 63 6C 69  65 6E 74 20 73 68 6F 75  6C 64 20 67 61 69 6E 20  63 6F 6E 74 72 6F 6C 20  stem client should gain control 
00009D00  6F 66 20 74 68 65 20 43  50 55 20 61 6E 64 20 74  72 79 20 74 6F 0D 0A 3B  20 20 20 20 20 20 20 20  of the CPU and try to;        
00009D20  20 63 61 6C 6C 20 75 73  2E 20 20 53 6F 2C 20 69  66 20 73 75 63 68 20 61  20 6E 6F 6E 2D 66 69 6C   call us.  So, if such a non-fil
00009D40  65 20 73 79 73 74 65 6D  20 63 6C 69 65 6E 74 20  74 72 69 65 73 20 74 68  69 73 2C 20 77 65 0D 0A  e system client tries this, we
00009D60  3B 20 20 20 20 20 20 20  20 20 66 61 69 6C 20 74  68 65 20 63 61 6C 6C 2E  0D 0A 3B 0D 0A 20 20 20  ;         fail the call.;   
00009D80  20 20 20 20 20 6C 64 73  20 20 20 20 20 73 69 2C  63 73 3A 66 70 49 6E 44  4F 53 20 20 20 20 20 20       lds     si,cs:fpInDOS      
00009DA0  20 20 20 20 20 3B 20 64  73 3A 73 69 20 2D 3E 20  49 6E 44 4F 53 20 66 6C  61 67 0D 0A 20 20 20 20       ; ds:si -> InDOS flag    
00009DC0  20 20 20 20 6D 6F 76 20  20 20 20 20 64 6C 2C 64  73 3A 5B 73 69 5D 20 20  20 20 20 20 20 20 20 20      mov     dl,ds:[si]          
00009DE0  20 20 20 20 3B 20 64 6C  20 3D 20 49 6E 44 4F 53  20 66 6C 61 67 0D 0A 20  20 20 20 20 20 20 20 6F      ; dl = InDOS flag        o
00009E00  72 20 20 20 20 20 20 64  6C 2C 64 6C 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3B  r      dl,dl                   ;
00009E20  20 49 6E 20 44 4F 53 3F  0D 0A 20 20 20 20 20 20  20 20 6A 7A 20 20 20 20  20 20 65 63 73 31 30 20   In DOS?        jz      ecs10 
00009E40  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 3B 20 20 20 4E 4F  2C 20 6F 6B 61 79 20 74                    ;   NO, okay t
00009E60  6F 20 74 61 6B 65 20 63  72 69 74 69 63 61 6C 20  73 65 63 74 69 6F 6E 0D  0A 0D 0A 3B 2A 20 20 49  o take critical section;*  I
00009E80  6E 44 4F 53 20 69 73 20  6E 6F 6E 2D 7A 65 72 6F  2C 20 73 65 65 20 69 66  20 63 61 6C 6C 65 72 20  nDOS is non-zero, see if caller 
00009EA0  61 6C 6C 6F 77 73 20 74  68 69 73 0D 0A 3B 20 20  20 5A 65 72 6F 20 46 6C  61 67 20 69 73 20 43 4C  allows this;   Zero Flag is CL
00009EC0  45 41 52 20 28 3D 3E 20  6E 6F 74 20 7A 65 72 6F  29 20 66 72 6F 6D 20 66  61 6C 6C 69 6E 67 20 74  EAR (=> not zero) from falling t
00009EE0  68 72 6F 75 67 68 20 74  68 65 20 22 6A 7A 22 20  61 62 6F 76 65 0D 0A 3B  0D 0A 3B 20 20 20 4E 4F  hrough the "jz" above;;   NO
00009F00  54 45 3A 20 57 65 20 61  6C 6C 6F 77 20 61 20 73  79 73 74 65 6D 20 63 6C  69 65 6E 74 20 74 6F 20  TE: We allow a system client to 
00009F20  63 61 6C 6C 20 65 76 65  6E 20 69 66 20 49 6E 44  4F 53 20 69 73 20 6E 6F  74 20 73 65 74 2C 20 73  call even if InDOS is not set, s
00009F40  69 6E 63 65 0D 0A 3B 20  20 20 20 20 20 20 20 20  69 74 20 69 73 20 70 6F  73 73 69 62 6C 65 20 74  ince;         it is possible t
00009F60  68 61 74 20 61 20 73 79  73 74 65 6D 20 63 6C 69  65 6E 74 20 6D 61 79 20  6E 65 65 64 20 74 6F 20  hat a system client may need to 
00009F80  6F 70 65 72 61 74 65 20  61 74 0D 0A 3B 20 20 20  20 20 20 20 20 20 69 6E  74 65 72 72 75 70 74 20  operate at;         interrupt 
00009FA0  74 69 6D 65 20 66 6F 72  20 22 62 61 63 6B 67 72  6F 75 6E 64 22 20 6F 70  65 72 61 74 69 6F 6E 73  time for "background" operations
00009FC0  2E 0D 0A 3B 0D 0A 3B 20  20 20 20 20 20 20 20 20  2A 2A 2A 20 54 48 49 53  20 49 53 20 44 49 53 43  .;;         *** THIS IS DISC
00009FE0  4F 55 52 41 47 45 44 20  42 45 48 41 56 49 4F 52  20 2A 2A 2A 0D 0A 3B 0D  0A 20 20 20 20 20 20 20  OURAGED BEHAVIOR ***;       
0000A000  20 6A 63 78 7A 20 20 20  20 65 63 73 78 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20   jcxz    ecsx                   
0000A020  20 3B 20 20 20 4E 4F 2C  20 63 61 6C 6C 65 72 20  69 73 20 6E 6F 74 20 66  69 6C 65 20 73 79 73 74   ;   NO, caller is not file syst
0000A040  65 6D 0D 0A 2E 65 72 72  6E 7A 20 6D 63 41 50 50  4C 49 43 41 54 49 4F 4E  0D 0A 0D 0A 3B 2A 20 20  em.errnz mcAPPLICATION;*  
0000A060  49 6E 44 4F 53 20 77 61  73 20 7A 65 72 6F 2C 20  6F 72 20 63 61 6C 6C 65  72 20 77 61 73 20 61 20  InDOS was zero, or caller was a 
0000A080  66 69 6C 65 20 73 79 73  74 65 6D 0D 0A 0D 0A 65  63 73 31 30 3A 20 20 6D  6F 76 20 20 20 20 20 63  file systemecs10:  mov     c
0000A0A0  73 3A 6F 6C 64 49 6E 44  4F 53 2C 64 6C 20 20 20  20 20 20 20 20 20 20 3B  20 53 61 76 65 20 6F 6C  s:oldInDOS,dl          ; Save ol
0000A0C0  64 20 49 6E 44 4F 53 20  66 6C 61 67 2C 20 66 6F  72 20 6C 61 74 65 72 0D  0A 20 20 20 20 20 20 20  d InDOS flag, for later       
0000A0E0  20 6D 6F 76 20 20 20 20  20 62 79 74 65 20 70 74  72 20 64 73 3A 5B 73 69  5D 2C 31 20 20 20 20 20   mov     byte ptr ds:[si],1     
0000A100  20 3B 20 53 65 74 20 49  6E 44 4F 53 20 66 6C 61  67 0D 0A 20 20 20 20 20  20 20 20 6D 6F 76 20 20   ; Set InDOS flag        mov  
0000A120  20 20 20 63 73 3A 66 42  75 73 79 2C 31 20 20 20  20 20 20 20 20 20 20 20  20 20 20 3B 20 57 65 20     cs:fBusy,1              ; We 
0000A140  61 72 65 20 6E 6F 77 20  62 75 73 79 21 0D 0A 20  20 20 20 20 20 20 20 78  6F 72 20 20 20 20 20 64  are now busy!        xor     d
0000A160  6C 2C 64 6C 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3B  20 53 65 74 20 7A 65 72  l,dl                   ; Set zer
0000A180  6F 20 66 6C 61 67 20 74  6F 20 69 6E 64 69 63 61  74 65 20 73 75 63 63 65  73 73 0D 0A 0D 0A 65 63  o flag to indicate successec
0000A1A0  73 78 3A 20 20 20 3B 20  64 6F 6E 65 20 77 69 74  68 20 6D 61 63 72 6F 2C  20 7A 65 72 6F 20 66 6C  sx:   ; done with macro, zero fl
0000A1C0  61 67 20 69 6E 64 69 63  61 74 65 73 20 73 75 63  63 65 73 73 2F 66 61 69  6C 75 72 65 0D 0A 0D 0A  ag indicates success/failure
0000A1E0  20 20 20 20 20 20 20 20  73 74 69 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20          sti                     
0000A200  20 20 20 20 20 20 20 20  3B 20 44 6F 6E 65 20 62  65 69 6E 67 20 61 74 6F  6D 69 63 0D 0A 65 6E 64          ; Done being atomicend
0000A220  6D 20 3B 3B 20 45 6E 74  65 72 43 72 69 74 69 63  61 6C 53 65 63 74 69 6F  6E 0D 0A 0D 0A 0D 0A 3B  m ;; EnterCriticalSection;
0000A240  2A 2A 2A 20 20 20 20 4C  65 61 76 65 43 72 69 74  69 63 61 6C 53 65 63 74  69 6F 6E 20 2D 20 4C 65  ***    LeaveCriticalSection - Le
0000A260  61 76 65 20 73 65 72 76  65 72 20 63 72 69 74 69  63 61 6C 20 73 65 63 74  69 6F 6E 0D 0A 3B 0D 0A  ave server critical section;
0000A280  3B 20 20 20 20 20 20 20  45 6E 74 72 79 0D 0A 3B  20 20 20 20 20 20 20 20  20 20 20 63 78 20 2D 20  ;       Entry;           cx - 
0000A2A0  46 6C 61 67 20 69 6E 64  69 63 61 74 69 6E 67 20  77 68 65 74 68 65 72 20  74 68 65 20 63 61 6C 6C  Flag indicating whether the call
0000A2C0  65 72 20 6D 61 79 20 61  6C 72 65 61 64 79 20 62  65 20 69 6E 73 69 64 65  20 44 4F 53 2E 0D 0A 3B  er may already be inside DOS.;
0000A2E0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  6D 63 41 50 50 4C 49 43  41 54 49 4F 4E 20 28 30                  mcAPPLICATION (0
0000A300  29 20 2D 20 41 70 70 6C  69 63 61 74 69 6F 6E 20  63 6C 69 65 6E 74 0D 0A  3B 20 20 20 20 20 20 20  ) - Application client;       
0000A320  20 20 20 20 20 20 20 20  20 6D 63 53 59 53 54 45  4D 20 28 31 29 20 20 20  20 20 20 2D 20 46 69 6C           mcSYSTEM (1)      - Fil
0000A340  65 20 53 79 73 74 65 6D  20 63 6C 69 65 6E 74 0D  0A 3B 0D 0A 3B 20 20 20  20 20 20 20 45 78 69 74  e System client;;       Exit
0000A360  0D 0A 3B 20 20 20 20 20  20 20 20 20 20 20 49 6E  44 6F 73 20 72 65 73 74  6F 72 65 64 20 74 6F 20  ;           InDos restored to 
0000A380  76 61 6C 75 65 20 73 61  76 65 64 20 62 79 20 45  6E 74 65 72 43 72 69 74  69 63 61 6C 53 65 63 74  value saved by EnterCriticalSect
0000A3A0  69 6F 6E 0D 0A 3B 20 20  20 20 20 20 20 20 20 20  20 66 42 75 73 79 20 73  65 74 20 74 6F 20 7A 65  ion;           fBusy set to ze
0000A3C0  72 6F 0D 0A 3B 0D 0A 3B  20 20 20 20 20 20 20 55  73 65 73 0D 0A 3B 20 20  20 20 20 20 20 20 20 20  ro;;       Uses;          
0000A3E0  20 61 78 2C 73 69 2C 64  73 2C 66 6C 61 67 73 0D  0A 0D 0A 4C 65 61 76 65  43 72 69 74 69 63 61 6C   ax,si,ds,flagsLeaveCritical
0000A400  53 65 63 74 69 6F 6E 20  6D 61 63 72 6F 20 20 72  65 67 0D 0A 20 20 20 20  20 20 20 20 63 6C 69 20  Section macro  reg        cli 
0000A420  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 3B 20 52 65                              ; Re
0000A440  6C 65 61 73 65 20 6F 75  72 20 6C 6F 63 6B 20 61  74 6F 6D 69 63 61 6C 6C  79 0D 0A 0D 0A 3B 3B 20  lease our lock atomically;; 
0000A460  53 68 6F 75 6C 64 20 61  73 73 65 72 74 20 74 68  61 74 20 66 42 75 73 79  20 69 73 20 73 65 74 0D  Should assert that fBusy is set
0000A480  0A 3B 3B 20 20 20 20 20  20 63 6D 70 20 20 20 20  20 63 73 3A 66 42 75 73  79 2C 30 20 20 20 20 20  ;;      cmp     cs:fBusy,0     
0000A4A0  20 20 20 20 20 20 20 20  20 3B 20 41 72 65 20 77  65 20 61 6C 72 65 61 64  79 20 77 6F 72 6B 69 6E           ; Are we already workin
0000A4C0  67 20 6F 6E 20 73 6F 6D  65 74 68 69 6E 67 3F 0D  0A 3B 3B 20 20 20 20 20  20 6A 6E 7A 20 20 20 20  g on something?;;      jnz    
0000A4E0  20 6C 63 73 32 30 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 3B 20 20 20 59 45 53   lcs20                   ;   YES
0000A500  2C 20 62 75 74 20 6E 6F  74 20 61 6E 79 20 6C 6F  6E 67 65 72 0D 0A 3B 3B  6C 63 73 31 30 3A 0D 0A  , but not any longer;;lcs10:
0000A520  3B 3B 0D 0A 3B 3B 20 20  20 20 20 20 48 61 6E 64  6C 65 20 63 61 73 65 20  6F 66 20 73 65 72 76 65  ;;;;      Handle case of serve
0000A540  72 20 61 74 74 65 6D 70  74 69 6E 67 20 74 6F 20  6C 65 61 76 65 20 63 72  69 74 69 63 61 6C 20 73  r attempting to leave critical s
0000A560  65 63 74 69 6F 6E 0D 0A  3B 3B 20 20 20 20 20 20  77 69 74 68 6F 75 74 20  62 65 69 6E 67 20 69 6E  ection;;      without being in
0000A580  73 69 64 65 20 63 72 69  74 69 63 61 6C 20 73 65  63 74 69 6F 6E 21 0D 0A  3B 3B 6C 63 73 32 30 3A  side critical section!;;lcs20:
0000A5A0  0D 0A 0D 0A 3B 2A 20 20  52 65 73 74 6F 72 65 20  49 6E 44 4F 53 0D 0A 20  20 20 20 20 20 20 20 6C  ;*  Restore InDOS        l
0000A5C0  64 73 20 20 20 20 20 73  69 2C 63 73 3A 66 70 49  6E 44 4F 53 20 20 20 20  20 20 20 20 20 20 20 3B  ds     si,cs:fpInDOS           ;
0000A5E0  20 64 73 3A 73 69 20 2D  3E 20 49 6E 44 4F 53 20  66 6C 61 67 0D 0A 0D 0A  3B 3B 20 53 68 6F 75 6C   ds:si -> InDOS flag;; Shoul
0000A600  64 20 61 73 73 65 72 74  20 74 68 61 74 20 49 6E  44 4F 53 20 69 73 20 6E  6F 6E 2D 7A 65 72 6F 0D  d assert that InDOS is non-zero
0000A620  0A 3B 3B 20 20 20 20 20  20 63 6D 70 20 20 20 20  20 64 73 3A 5B 73 69 5D  2C 30 20 20 20 20 20 20  ;;      cmp     ds:[si],0      
0000A640  20 20 20 20 20 20 20 20  20 3B 20 49 6E 44 4F 53  20 73 65 74 3F 0D 0A 3B  3B 20 20 20 20 20 20 6A           ; InDOS set?;;      j
0000A660  7A 20 20 20 20 20 20 6C  63 73 31 30 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3B  z      lcs10                   ;
0000A680  20 20 20 4E 4F 2C 20 62  75 74 20 73 68 6F 75 6C  64 20 68 61 76 65 20 62  65 65 6E 21 0D 0A 0D 0A     NO, but should have been!
0000A6A0  20 20 20 20 20 20 20 20  6D 6F 76 20 20 20 20 20  61 6C 2C 63 73 3A 6F 6C  64 49 6E 44 4F 53 20 20          mov     al,cs:oldInDOS  
0000A6C0  20 20 20 20 20 20 20 20  3B 20 61 6C 20 3D 20 6F  6C 64 20 49 6E 44 4F 53  20 66 6C 61 67 0D 0A 20          ; al = old InDOS flag 
0000A6E0  20 20 20 20 20 20 20 6D  6F 76 20 20 20 20 20 64  73 3A 5B 73 69 5D 2C 61  6C 20 20 20 20 20 20 20         mov     ds:[si],al       
0000A700  20 20 20 20 20 20 20 3B  20 52 65 73 74 6F 72 65  20 6F 6C 64 20 49 6E 44  4F 53 20 66 6C 61 67 0D         ; Restore old InDOS flag
0000A720  0A 0D 0A 3B 2A 20 20 43  6C 65 61 72 20 6F 75 72  20 62 75 73 79 20 66 6C  61 67 0D 0A 20 20 20 20  ;*  Clear our busy flag    
0000A740  20 20 20 20 6D 6F 76 20  20 20 20 20 63 73 3A 66  42 75 73 79 2C 30 20 20  20 20 20 20 20 20 20 20      mov     cs:fBusy,0          
0000A760  20 20 20 20 3B 20 4E 6F  20 6C 6F 6E 67 65 72 20  62 75 73 79 0D 0A 0D 0A  20 20 20 20 20 20 20 20      ; No longer busy        
0000A780  73 74 69 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  sti                             
0000A7A0  3B 20 44 6F 6E 65 20 62  65 69 6E 67 20 61 74 6F  6D 69 63 0D 0A 65 6E 64  6D 20 3B 3B 20 4C 65 61  ; Done being atomicendm ;; Lea
0000A7C0  76 65 43 72 69 74 69 63  61 6C 53 65 63 74 69 6F  6E 0D 0A 0D 0A 0D 0A 3B  2A 2A 2A 2A 2A 2A 2A 2A  veCriticalSection;********
0000A7E0  2A 2A 2A 2A 2A 2A 2A 2A  0D 0A 3B 2A 20 43 4F 44  45 20 73 65 67 6D 65 6E  74 20 2A 0D 0A 3B 2A 2A  ********;* CODE segment *;**
0000A800  2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 0D 0A  0D 0A 63 6F 64 65 20 20  20 20 73 65 67 6D 65 6E  **************code    segmen
0000A820  74 20 70 75 62 6C 69 63  20 62 79 74 65 0D 0A 20  20 20 20 61 73 73 75 6D  65 20 20 63 73 3A 63 6F  t public byte    assume  cs:co
0000A840  64 65 2C 64 73 3A 6E 6F  74 68 69 6E 67 2C 65 73  3A 6E 6F 74 68 69 6E 67  2C 73 73 3A 6E 6F 74 68  de,ds:nothing,es:nothing,ss:noth
0000A860  69 6E 67 0D 0A 0D 0A 3B  3B 20 20 20 20 20 20 6F  72 67 20 20 20 20 20 30  20 20 20 20 20 20 20 3B  ing;;      org     0       ;
0000A880  20 44 72 69 76 65 72 20  73 74 61 72 74 73 20 61  74 20 30 0D 0A 0D 0A 3B  2A 2A 2A 2A 2A 2A 2A 2A   Driver starts at 0;********
0000A8A0  2A 2A 2A 2A 2A 0D 0A 3B  2A 20 44 41 54 41 20 61  72 65 61 20 2A 0D 0A 3B  2A 2A 2A 2A 2A 2A 2A 2A  *****;* DATA area *;********
0000A8C0  2A 2A 2A 2A 2A 0D 0A 0D  0A 3B 2A 2A 20 20 20 20  20 43 68 61 72 61 63 74  65 72 20 44 65 76 69 63  *****;**     Character Devic
0000A8E0  65 20 48 65 61 64 65 72  0D 0A 3B 0D 0A 0D 0A 44  48 6C 69 6E 6B 20 20 64  64 20 20 20 20 20 20 30  e Header;DHlink  dd      0
0000A900  46 46 46 46 46 46 46 46  68 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3B  20 4E 65 78 74 20 64 65  FFFFFFFFh              ; Next de
0000A920  76 69 63 65 20 3D 3E 20  6E 6F 6E 65 0D 0A 44 48  61 74 74 72 20 20 64 77  20 20 20 20 20 20 38 30  vice => noneDHattr  dw      80
0000A940  30 30 68 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3B 20  53 69 6D 70 6C 65 20 63  00h                   ; Simple c
0000A960  68 61 72 61 63 74 65 72  20 64 65 76 69 63 65 0D  0A 44 48 73 74 72 61 74  20 64 77 20 20 20 20 20  haracter deviceDHstrat dw     
0000A980  20 53 74 72 61 74 65 67  79 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 3B 20 44 65 76 69 63   Strategy                ; Devic
0000A9A0  65 20 73 74 72 61 74 65  67 79 20 65 6E 74 72 79  20 70 6F 69 6E 74 0D 0A  44 48 69 6E 74 65 72 20  e strategy entry pointDHinter 
0000A9C0  64 77 20 20 20 20 20 20  49 6E 74 65 72 72 75 70  74 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  dw      Interrupt               
0000A9E0  3B 20 44 65 76 69 63 65  20 69 6E 74 65 72 72 75  70 74 20 65 6E 74 72 79  20 70 6F 69 6E 74 0D 0A  ; Device interrupt entry point
0000AA00  44 48 6E 61 6D 65 20 20  64 62 20 20 20 20 20 20  27 4D 52 43 49 53 52 56  24 27 20 20 20 20 20 20  DHname  db      'MRCISRV$'      
0000AA20  20 20 20 20 20 20 20 20  3B 20 44 65 76 69 63 65  20 6E 61 6D 65 0D 0A 0D  0A 0D 0A 3B 2A 2A 20 20          ; Device name;**  
0000AA40  20 20 20 6D 72 63 69 6E  66 6F 20 2D 20 4D 52 43  49 4E 46 4F 20 74 6F 20  72 65 74 75 72 6E 20 74     mrcinfo - MRCINFO to return t
0000AA60  6F 20 63 6C 69 65 6E 74  73 0D 0A 3B 0D 0A 3B 20  20 20 20 20 20 20 4E 4F  54 45 3A 20 54 68 69 73  o clients;;       NOTE: This
0000AA80  20 73 74 72 75 63 74 75  72 65 20 6D 75 73 74 20  62 65 20 77 72 69 74 65  61 62 6C 65 2C 20 73 6F   structure must be writeable, so
0000AAA0  20 74 68 61 74 20 61 20  6E 65 77 20 53 65 72 76  65 72 0D 0A 3B 20 20 20  20 20 20 20 20 20 20 20   that a new Server;           
0000AAC0  20 20 63 61 6E 20 69 6E  73 74 61 6C 6C 20 61 6E  64 20 68 6F 6F 6B 20 74  68 69 73 20 73 74 72 75    can install and hook this stru
0000AAE0  63 74 75 72 65 20 77 69  74 68 20 69 74 73 20 76  61 6C 75 65 73 2E 0D 0A  3B 0D 0A 3B 20 20 20 20  cture with its values.;;    
0000AB00  20 20 20 76 65 6E 64 6F  72 2C 73 65 72 76 65 72  20 76 65 72 73 69 6F 6E  2C 4D 52 43 49 20 76 65     vendor,server version,MRCI ve
0000AB20  72 73 69 6F 6E 2C 65 6E  74 72 79 20 70 6F 69 6E  74 2C 63 61 70 61 62 69  6C 69 74 69 65 73 2C 63  rsion,entry point,capabilities,c
0000AB40  62 4D 41 58 0D 0A 3B 0D  0A 6D 69 20 20 20 20 20  20 4D 52 43 49 4E 46 4F  20 3C 4D 59 56 45 4E 44  bMAX;mi      MRCINFO <MYVEND
0000AB60  4F 52 2C 4D 59 56 45 52  53 49 4F 4E 2C 4D 52 43  49 56 45 52 53 49 4F 4E  2C 4F 70 65 72 61 74 65  OR,MYVERSION,MRCIVERSION,Operate
0000AB80  2C 6D 69 63 61 70 4D 69  6E 65 2C 63 62 4D 41 58  3E 0D 0A 0D 0A 0D 0A 3B  2A 2A 20 20 20 20 20 66  ,micapMine,cbMAX>;**     f
0000ABA0  70 4F 6C 64 69 6E 74 4D  52 43 49 20 2D 20 70 72  65 76 69 6F 75 73 20 63  6F 6E 74 65 6E 74 73 20  pOldintMRCI - previous contents 
0000ABC0  6F 66 20 69 6E 74 4D 52  43 49 20 69 6E 74 65 72  72 75 70 74 20 76 65 63  74 6F 72 0D 0A 3B 0D 0A  of intMRCI interrupt vector;
0000ABE0  66 70 4F 6C 64 69 6E 74  4D 52 43 49 20 20 20 64  64 20 20 3F 0D 0A 0D 0A  0D 0A 3B 2A 2A 20 20 20  fpOldintMRCI   dd  ?;**   
0000AC00  20 20 70 6D 69 20 2D 20  70 6F 69 6E 74 65 72 20  74 6F 20 61 63 74 69 76  65 20 4D 52 43 49 4E 46    pmi - pointer to active MRCINF
0000AC20  4F 20 73 74 72 75 63 74  75 72 65 0D 0A 3B 0D 0A  3B 20 20 20 20 20 20 20  49 66 20 77 65 20 72 65  O structure;;       If we re
0000AC40  70 6C 61 63 65 20 61 6E  20 6F 6C 64 20 73 65 72  76 65 72 2C 20 74 68 65  6E 20 74 68 61 74 20 73  place an old server, then that s
0000AC60  65 72 76 65 72 27 73 20  4D 52 43 49 4E 46 4F 20  73 74 72 75 63 74 75 72  65 0D 0A 3B 20 20 20 20  erver's MRCINFO structure;    
0000AC80  20 20 20 69 73 20 74 68  65 20 6F 6E 65 20 74 68  61 74 20 77 65 20 75 73  65 2E 20 20 53 6F 2C 20     is the one that we use.  So, 
0000ACA0  77 65 20 6E 65 65 64 20  61 20 6C 65 76 65 6C 20  6F 66 20 69 6E 64 69 72  65 63 74 69 6F 6E 20 74  we need a level of indirection t
0000ACC0  6F 20 69 74 2E 0D 0A 3B  20 20 20 20 20 20 20 54  68 65 20 6D 6F 72 65 20  63 6F 6D 6D 6F 6E 20 63  o it.;       The more common c
0000ACE0  61 73 65 20 69 73 20 74  68 61 74 20 77 65 20 61  72 65 20 74 68 65 20 6F  6E 6C 79 20 73 65 72 76  ase is that we are the only serv
0000AD00  65 72 2C 20 73 6F 20 74  68 69 73 0D 0A 3B 20 20  20 20 20 20 20 76 61 72  69 61 62 6C 65 20 77 69  er, so this;       variable wi
0000AD20  6C 6C 20 6A 75 73 74 20  70 6F 69 6E 74 20 74 6F  20 6F 75 72 20 6D 69 2E  0D 0A 3B 0D 0A 70 6D 69  ll just point to our mi.;pmi
0000AD40  20 20 20 20 20 64 64 20  20 3F 0D 0A 0D 0A 0D 0A  3B 2A 2A 20 20 20 20 20  72 70 44 4F 53 20 2D 20       dd  ?;**     rpDOS - 
0000AD60  70 6F 69 6E 74 65 72 20  74 6F 20 44 4F 53 20 72  65 71 75 65 73 74 20 70  61 63 6B 65 74 0D 0A 3B  pointer to DOS request packet;
0000AD80  0D 0A 72 70 44 6F 73 20  20 20 64 64 20 20 20 20  20 20 3F 0D 0A 0D 0A 0D  0A 3B 2A 2A 20 20 20 20  rpDos   dd      ?;**    
0000ADA0  20 66 70 49 6E 44 4F 53  2C 20 6F 6C 64 49 6E 44  4F 53 20 2D 20 70 6F 69  6E 74 65 72 20 74 6F 20   fpInDOS, oldInDOS - pointer to 
0000ADC0  44 4F 53 20 22 49 6E 44  4F 53 22 20 66 6C 61 67  2C 20 6F 6C 64 20 49 6E  44 4F 53 20 66 6C 61 67  DOS "InDOS" flag, old InDOS flag
0000ADE0  20 76 61 6C 75 65 0D 0A  3B 0D 0A 3B 20 20 20 20  20 20 20 54 68 69 73 20  69 73 20 52 45 51 55 49   value;;       This is REQUI
0000AE00  52 45 44 20 66 6F 72 20  61 20 73 6F 66 74 77 61  72 65 2D 6F 6E 6C 79 20  4D 52 43 49 20 73 65 72  RED for a software-only MRCI ser
0000AE20  76 65 72 2C 20 74 6F 20  73 69 67 6E 61 6C 20 74  68 61 74 0D 0A 3B 20 20  20 20 20 20 20 74 68 65  ver, to signal that;       the
0000AE40  20 73 65 72 76 65 72 20  69 73 20 62 75 73 79 2C  20 61 6E 64 20 73 6F 20  70 72 65 76 65 6E 74 20   server is busy, and so prevent 
0000AE60  72 65 65 6E 74 72 61 6E  63 79 2E 20 20 57 68 65  6E 65 76 65 72 20 74 68  65 20 73 65 72 76 65 72  reentrancy.  Whenever the server
0000AE80  0D 0A 3B 20 20 20 20 20  20 20 69 73 20 61 62 6F  75 74 20 74 6F 20 62 65  63 6F 6D 65 20 6E 6F 6E  ;       is about to become non
0000AEA0  2D 72 65 65 6E 74 72 61  6E 74 20 28 73 74 61 72  74 69 6E 67 20 61 20 63  6F 6D 70 72 65 73 73 2F  -reentrant (starting a compress/
0000AEC0  64 65 63 6F 6D 70 72 65  73 73 0D 0A 3B 20 20 20  20 20 20 20 6F 70 65 72  61 74 69 6F 6E 2C 20 66  decompress;       operation, f
0000AEE0  6F 72 20 65 78 61 6D 70  6C 65 29 2C 20 69 74 20  6D 75 73 74 20 65 6E 73  75 72 65 20 74 68 61 74  or example), it must ensure that
0000AF00  20 49 6E 44 4F 53 20 69  73 20 73 65 74 2E 0D 0A  3B 0D 0A 3B 20 20 20 41  54 54 45 4E 54 49 4F 4E   InDOS is set.;;   ATTENTION
0000AF20  2D 2D 42 45 47 49 4E 0D  0A 3B 0D 0A 3B 20 20 20  20 20 20 20 46 75 72 74  68 65 72 6D 6F 72 65 2C  --BEGIN;;       Furthermore,
0000AF40  20 41 4C 4C 20 63 61 6C  6C 65 72 73 20 6F 66 20  4D 52 43 49 20 2A 6D 75  73 74 2A 20 65 6E 73 75   ALL callers of MRCI *must* ensu
0000AF60  72 65 20 74 68 61 74 20  74 68 65 20 57 69 6E 64  6F 77 73 0D 0A 3B 20 20  20 20 20 20 20 44 69 73  re that the Windows;       Dis
0000AF80  6B 20 43 72 69 74 69 63  61 6C 20 53 65 63 74 69  6F 6E 20 69 73 20 68 65  6C 64 20 2A 70 72 69 6F  k Critical Section is held *prio
0000AFA0  72 2A 20 74 6F 20 63 61  6C 6C 69 6E 67 20 4D 52  43 49 2E 20 20 54 68 69  73 20 70 72 65 76 65 6E  r* to calling MRCI.  This preven
0000AFC0  74 73 0D 0A 3B 20 20 20  20 20 20 20 70 72 6F 67  72 61 6D 73 20 69 6E 20  64 69 66 66 65 72 65 6E  ts;       programs in differen
0000AFE0  74 20 57 69 6E 64 6F 77  73 20 76 69 72 74 75 61  6C 20 6D 61 63 68 69 6E  65 73 20 66 72 6F 6D 20  t Windows virtual machines from 
0000B000  72 65 65 6E 74 65 72 69  6E 67 20 4D 52 43 49 0D  0A 3B 20 20 20 20 20 20  20 61 6E 64 20 65 6E 63  reentering MRCI;       and enc
0000B020  6F 75 6E 74 65 72 69 6E  67 20 74 68 65 20 4D 52  43 49 5F 45 52 52 4F 52  5F 42 55 53 59 20 65 72  ountering the MRCI_ERROR_BUSY er
0000B040  72 6F 72 2E 0D 0A 3B 0D  0A 3B 20 20 20 20 20 20  20 42 6C 6F 63 6B 20 64  65 76 69 63 65 20 64 72  ror.;;       Block device dr
0000B060  69 76 65 72 73 2C 20 61  6E 64 20 73 79 73 74 65  6D 20 65 78 74 65 6E 73  69 6F 6E 73 20 6C 69 6B  ivers, and system extensions lik
0000B080  65 20 44 42 4C 53 50 41  43 45 2E 42 49 4E 2C 20  64 6F 20 6E 6F 74 0D 0A  3B 20 20 20 20 20 20 20  e DBLSPACE.BIN, do not;       
0000B0A0  6E 65 65 64 20 74 6F 20  67 72 61 62 20 74 68 69  73 20 63 72 69 74 69 63  61 6C 20 73 65 63 74 69  need to grab this critical secti
0000B0C0  6F 6E 20 62 65 63 61 75  73 65 20 74 68 65 20 4D  53 2D 44 4F 53 20 6B 65  72 6E 65 6C 20 68 61 73  on because the MS-DOS kernel has
0000B0E0  0D 0A 3B 20 20 20 20 20  20 20 61 6C 72 65 61 64  79 20 64 6F 6E 65 20 73  6F 20 62 65 66 6F 72 65  ;       already done so before
0000B100  20 67 69 76 69 6E 67 20  74 68 65 6D 20 63 6F 6E  74 72 6F 6C 2E 0D 0A 3B  0D 0A 3B 20 20 20 20 20   giving them control.;;     
0000B120  20 20 42 75 74 20 54 53  52 73 20 61 6E 64 20 61  70 70 6C 69 63 61 74 69  6F 6E 20 70 72 6F 67 72    But TSRs and application progr
0000B140  61 6D 73 20 2A 6D 75 73  74 2A 20 67 72 61 62 20  74 68 69 73 20 63 72 69  74 69 63 61 6C 20 73 65  ams *must* grab this critical se
0000B160  63 74 69 6F 6E 0D 0A 3B  20 20 20 20 20 20 20 70  72 69 6F 72 20 74 6F 20  63 61 6C 6C 69 6E 67 20  ction;       prior to calling 
0000B180  4D 52 43 49 2E 0D 0A 3B  0D 0A 3B 20 20 20 41 54  54 45 4E 54 49 4F 4E 2D  2D 45 4E 44 0D 0A 3B 0D  MRCI.;;   ATTENTION--END;
0000B1A0  0A 3B 20 20 20 20 20 20  20 54 68 65 20 66 6F 6C  6C 6F 77 69 6E 67 20 77  6F 72 73 74 2D 63 61 73  ;       The following worst-cas
0000B1C0  65 20 73 63 65 6E 61 72  69 6F 20 64 65 6D 6F 6E  73 74 72 61 74 65 73 20  77 68 79 20 74 68 69 73  e scenario demonstrates why this
0000B1E0  20 69 73 20 6E 65 65 64  65 64 2C 0D 0A 3B 20 20  20 20 20 20 20 61 6E 64  20 77 68 79 20 72 65 74   is needed,;       and why ret
0000B200  75 72 6E 69 6E 67 20 2A  42 75 73 79 2A 20 28 73  65 65 20 66 42 75 73 79  20 62 65 6C 6F 77 29 20  urning *Busy* (see fBusy below) 
0000B220  69 73 20 6F 66 20 6E 6F  20 68 65 6C 70 3A 0D 0A  3B 0D 0A 3B 20 20 20 20  20 20 20 31 29 20 20 4D  is of no help:;;       1)  M
0000B240  53 42 61 63 6B 75 70 20  63 61 6C 6C 73 20 4D 52  43 49 20 73 65 72 76 65  72 20 74 6F 20 64 6F 20  SBackup calls MRCI server to do 
0000B260  61 20 64 65 63 6F 6D 70  72 65 73 73 20 6F 70 65  72 61 74 69 6F 6E 0D 0A  3B 20 20 20 20 20 20 20  a decompress operation;       
0000B280  32 29 20 20 57 68 69 6C  65 20 4D 52 43 49 20 73  65 72 76 65 72 20 69 73  20 62 75 73 79 2C 20 75  2)  While MRCI server is busy, u
0000B2A0  73 65 72 20 62 72 69 6E  67 73 20 75 70 20 61 20  54 53 52 20 28 65 2E 67  2E 2C 20 53 69 64 65 4B  ser brings up a TSR (e.g., SideK
0000B2C0  69 63 6B 29 0D 0A 3B 20  20 20 20 20 20 20 33 29  20 20 53 69 64 65 4B 69  63 6B 20 64 6F 65 73 20  ick);       3)  SideKick does 
0000B2E0  61 20 44 4F 53 20 66 69  6C 65 20 6F 70 65 6E 20  61 6E 64 20 72 65 61 64  20 6F 6E 20 61 20 63 6F  a DOS file open and read on a co
0000B300  6D 70 72 65 73 73 65 64  20 64 72 69 76 65 0D 0A  3B 20 20 20 20 20 20 20  34 29 20 20 44 4F 53 20  mpressed drive;       4)  DOS 
0000B320  46 41 54 20 66 69 6C 65  20 73 79 73 74 65 6D 20  63 61 6C 6C 73 20 44 6F  75 62 6C 65 53 70 61 63  FAT file system calls DoubleSpac
0000B340  65 0D 0A 3B 20 20 20 20  20 20 20 35 29 20 20 44  6F 75 62 6C 65 53 70 61  63 65 20 63 61 6C 6C 73  e;       5)  DoubleSpace calls
0000B360  20 4D 52 43 49 20 73 65  72 76 65 72 2C 20 77 68  69 63 68 20 72 65 74 75  72 6E 73 20 62 75 73 79   MRCI server, which returns busy
0000B380  0D 0A 3B 0D 0A 3B 20 20  20 20 20 20 20 41 74 20  74 68 69 73 20 70 6F 69  6E 74 2C 20 74 68 65 20  ;;       At this point, the 
0000B3A0  73 79 73 74 65 6D 20 69  73 20 64 65 61 64 6C 6F  63 6B 65 64 21 20 20 44  6F 75 62 6C 65 53 70 61  system is deadlocked!  DoubleSpa
0000B3C0  63 65 20 68 61 73 20 6E  6F 20 63 68 6F 69 63 65  0D 0A 3B 20 20 20 20 20  20 20 62 75 74 20 74 6F  ce has no choice;       but to
0000B3E0  20 74 72 79 20 74 68 65  20 72 65 71 75 65 73 74  20 61 67 61 69 6E 2C 20  6F 72 20 72 65 74 75 72   try the request again, or retur
0000B400  6E 20 73 6F 6D 65 20 73  6F 72 74 20 6F 66 20 64  69 73 6B 20 65 72 72 6F  72 21 0D 0A 3B 0D 0A 3B  n some sort of disk error!;;
0000B420  20 20 20 20 20 20 20 42  79 20 73 65 74 74 69 6E  67 20 74 68 65 20 44 4F  53 20 49 6E 44 4F 53 20         By setting the DOS InDOS 
0000B440  66 6C 61 67 2C 20 68 6F  77 65 76 65 72 2C 20 74  68 65 20 4D 52 43 49 20  73 65 72 76 65 72 20 73  flag, however, the MRCI server s
0000B460  69 67 6E 61 6C 73 20 74  6F 0D 0A 3B 20 20 20 20  20 20 20 54 53 52 73 20  28 61 6E 64 20 57 69 6E  ignals to;       TSRs (and Win
0000B480  64 6F 77 73 29 20 74 68  61 74 20 69 74 20 69 73  20 65 6E 74 65 72 69 6E  67 20 61 20 63 72 69 74  dows) that it is entering a crit
0000B4A0  69 63 61 6C 20 73 65 63  74 69 6F 6E 2C 20 61 6E  64 20 73 6F 0D 0A 3B 20  20 20 20 20 20 20 61 20  ical section, and so;       a 
0000B4C0  77 65 6C 6C 2D 77 72 69  74 74 65 6E 20 54 53 52  20 77 69 6C 6C 20 6E 6F  74 20 74 72 79 20 74 6F  well-written TSR will not try to
0000B4E0  20 6D 61 6B 65 20 44 4F  53 20 63 61 6C 6C 73 20  6F 72 20 4D 52 43 49 20  63 61 6C 6C 73 2E 0D 0A   make DOS calls or MRCI calls.
0000B500  0D 0A 66 70 49 6E 44 4F  53 20 20 20 20 20 64 64  20 20 20 20 20 20 3F 20  20 20 3B 20 50 6F 69 6E  fpInDOS     dd      ?   ; Poin
0000B520  74 65 72 20 74 6F 20 44  4F 53 20 49 6E 44 4F 53  20 66 6C 61 67 0D 0A 6F  6C 64 49 6E 44 4F 53 20  ter to DOS InDOS flagoldInDOS 
0000B540  20 20 20 64 62 20 20 20  20 20 20 3F 20 20 20 3B  20 4F 6C 64 20 49 6E 44  4F 53 20 66 6C 61 67 20     db      ?   ; Old InDOS flag 
0000B560  76 61 6C 75 65 0D 0A 0D  0A 0D 0A 3B 2A 2A 20 20  20 20 20 66 42 75 73 79  20 2D 20 54 52 55 45 20  value;**     fBusy - TRUE 
0000B580  69 66 20 77 65 20 61 72  65 20 63 6F 6D 70 72 65  73 73 69 6E 67 2F 64 65  63 6F 6D 70 72 65 73 73  if we are compressing/decompress
0000B5A0  69 6E 67 0D 0A 3B 0D 0A  3B 20 20 20 20 20 20 20  53 65 74 74 69 6E 67 20  74 68 65 20 44 4F 53 20  ing;;       Setting the DOS 
0000B5C0  49 6E 44 4F 53 20 66 6C  61 67 20 77 69 6C 6C 20  70 72 6F 74 65 63 74 20  75 73 20 69 6E 20 6D 6F  InDOS flag will protect us in mo
0000B5E0  73 74 20 63 61 73 65 73  2C 20 62 75 74 0D 0A 3B  20 20 20 20 20 20 20 68  61 76 69 6E 67 20 74 68  st cases, but;       having th
0000B600  69 73 20 66 6C 61 67 20  6C 65 74 73 20 75 73 20  70 72 65 76 65 6E 74 20  62 65 69 6E 67 20 72 65  is flag lets us prevent being re
0000B620  65 6E 74 65 72 65 64 20  62 79 20 61 6E 20 69 6E  74 65 72 72 75 70 74 2D  0D 0A 3B 20 20 20 20 20  entered by an interrupt-;     
0000B640  20 20 74 69 6D 65 20 63  61 6C 6C 65 72 2E 0D 0A  3B 0D 0A 66 42 75 73 79  20 20 20 64 62 20 20 20    time caller.;fBusy   db   
0000B660  20 20 20 3F 20 20 20 3B  20 30 20 3D 3E 20 6E 6F  74 20 62 75 73 79 2C 20  21 30 20 3D 3E 20 62 75     ?   ; 0 => not busy, !0 => bu
0000B680  73 79 0D 0A 0D 0A 0D 0A  3B 2A 2A 2A 2A 2A 2A 2A  2A 0D 0A 3B 2A 20 43 4F  44 45 20 2A 0D 0A 3B 2A  sy;********;* CODE *;*
0000B6A0  2A 2A 2A 2A 2A 2A 2A 0D  0A 0D 0A 0D 0A 3B 2A 2A  2A 20 20 20 20 53 74 72  61 74 65 67 79 20 2D 20  *******;***    Strategy - 
0000B6C0  44 65 76 69 63 65 20 64  72 69 76 65 72 20 73 74  72 61 74 65 67 79 20 65  6E 74 72 79 20 70 6F 69  Device driver strategy entry poi
0000B6E0  6E 74 0D 0A 3B 0D 0A 3B  20 20 20 20 20 20 20 45  6E 74 72 79 0D 0A 3B 20  20 20 20 20 20 20 20 20  nt;;       Entry;         
0000B700  20 20 65 73 3A 62 78 20  2D 20 70 6F 69 6E 74 65  72 20 74 6F 20 44 4F 53  20 72 65 71 75 65 73 74    es:bx - pointer to DOS request
0000B720  20 70 61 63 6B 65 74 0D  0A 3B 0D 0A 3B 20 20 20  20 20 20 20 45 78 69 74  0D 0A 3B 20 20 20 20 20   packet;;       Exit;     
0000B740  20 20 20 20 20 20 65 73  3A 62 78 20 73 61 76 65  64 20 69 6E 20 64 61 74  61 3A 72 70 44 6F 73 0D        es:bx saved in data:rpDos
0000B760  0A 3B 0D 0A 3B 20 20 20  20 20 20 20 55 73 65 73  0D 0A 3B 20 20 20 20 20  20 20 20 20 20 20 4E 6F  ;;       Uses;           No
0000B780  6E 65 0D 0A 3B 0D 0A 53  74 72 61 74 65 67 79 20  20 20 20 70 72 6F 63 20  20 20 20 66 61 72 0D 0A  ne;Strategy    proc    far
0000B7A0  20 20 20 20 61 73 73 75  6D 65 20 20 63 73 3A 63  6F 64 65 2C 64 73 3A 6E  6F 74 68 69 6E 67 2C 65      assume  cs:code,ds:nothing,e
0000B7C0  73 3A 6E 6F 74 68 69 6E  67 0D 0A 20 20 20 20 20  20 20 20 6D 6F 76 20 20  20 20 20 63 73 3A 72 70  s:nothing        mov     cs:rp
0000B7E0  44 6F 73 2E 6F 66 66 73  74 2C 62 78 20 20 20 20  20 20 20 3B 20 53 74 6F  72 65 20 72 65 71 75 65  Dos.offst,bx       ; Store reque
0000B800  73 74 20 70 61 63 6B 65  74 20 70 6F 69 6E 74 65  72 0D 0A 20 20 20 20 20  20 20 20 6D 6F 76 20 20  st packet pointer        mov  
0000B820  20 20 20 63 73 3A 72 70  44 6F 73 2E 73 65 67 6D  74 2C 65 73 0D 0A 20 20  20 20 20 20 20 20 72 65     cs:rpDos.segmt,es        re
0000B840  74 0D 0A 53 74 72 61 74  65 67 79 20 20 20 20 65  6E 64 70 0D 0A 0D 0A 0D  0A 3B 2A 2A 2A 20 20 20  tStrategy    endp;***   
0000B860  20 49 6E 74 65 72 72 75  70 74 20 2D 20 44 65 76  69 63 65 20 64 72 69 76  65 72 20 69 6E 74 65 72   Interrupt - Device driver inter
0000B880  72 75 70 74 20 65 6E 74  72 79 20 70 6F 69 6E 74  0D 0A 3B 0D 0A 3B 20 20  20 20 20 20 20 45 6E 74  rupt entry point;;       Ent
0000B8A0  72 79 0D 0A 3B 20 20 20  20 20 20 20 20 20 20 20  72 70 44 4F 53 20 2D 20  70 6F 69 6E 74 65 72 20  ry;           rpDOS - pointer 
0000B8C0  74 6F 20 44 4F 53 20 72  65 71 75 65 73 74 20 70  61 63 6B 65 74 20 73 61  76 65 64 20 62 79 20 53  to DOS request packet saved by S
0000B8E0  74 72 61 74 65 67 79 20  66 75 6E 63 74 69 6F 6E  0D 0A 3B 0D 0A 3B 20 20  20 20 20 20 20 45 78 69  trategy function;;       Exi
0000B900  74 0D 0A 3B 20 20 20 20  20 20 20 20 20 20 20 3F  3F 3F 0D 0A 3B 0D 0A 3B  20 20 20 20 20 20 20 55  t;           ???;;       U
0000B920  73 65 73 0D 0A 3B 20 20  20 20 20 20 20 20 20 20  20 4E 6F 6E 65 0D 0A 3B  0D 0A 49 6E 74 65 72 72  ses;           None;Interr
0000B940  75 70 74 20 20 20 70 72  6F 63 20 20 20 20 66 61  72 0D 0A 20 20 20 20 20  20 20 20 53 61 76 65 52  upt   proc    far        SaveR
0000B960  65 67 20 3C 61 78 2C 62  78 2C 63 78 2C 64 78 2C  73 69 2C 64 69 2C 64 73  2C 65 73 3E 0D 0A 0D 0A  eg <ax,bx,cx,dx,si,di,ds,es>
0000B980  20 20 20 20 20 20 20 20  70 75 73 68 20 20 20 20  63 73 20 20 20 20 20 20  20 20 20 20 20 20 20 20          push    cs              
0000B9A0  20 20 20 20 20 20 20 20  3B 20 4D 61 6B 65 20 61  63 63 65 73 73 20 74 6F  20 64 72 69 76 65 72 20          ; Make access to driver 
0000B9C0  73 65 67 6D 65 6E 74 20  66 61 73 74 65 72 0D 0A  20 20 20 20 20 20 20 20  70 6F 70 20 20 20 20 20  segment faster        pop     
0000B9E0  64 73 0D 0A 20 20 20 20  61 73 73 75 6D 65 20 20  64 73 3A 63 6F 64 65 0D  0A 0D 0A 20 20 20 20 20  ds    assume  ds:code     
0000BA00  20 20 20 6C 65 73 20 20  20 20 20 62 78 2C 72 70  44 6F 73 20 20 20 20 20  20 20 20 20 20 20 20 20     les     bx,rpDos             
0000BA20  20 20 20 3B 20 65 73 3A  62 78 20 2D 3E 20 44 4F  53 20 72 65 71 75 65 73  74 20 70 61 63 6B 65 74     ; es:bx -> DOS request packet
0000BA40  0D 0A 20 20 20 20 20 20  20 20 6D 6F 76 20 20 20  20 20 61 6C 2C 65 73 3A  5B 62 78 5D 2E 72 70 46          mov     al,es:[bx].rpF
0000BA60  75 6E 63 74 69 6F 6E 20  20 20 3B 20 61 6C 20 3D  20 66 75 6E 63 74 69 6F  6E 0D 0A 20 20 20 20 20  unction   ; al = function     
0000BA80  20 20 20 63 6D 70 20 20  20 20 20 61 6C 2C 44 45  56 49 4E 49 54 20 20 20  20 20 20 20 20 20 20 20     cmp     al,DEVINIT           
0000BAA0  20 20 20 3B 20 49 6E 69  74 20 63 61 6C 6C 3F 0D  0A 20 20 20 20 20 20 20  20 6D 6F 76 20 20 20 20     ; Init call?        mov    
0000BAC0  20 61 78 2C 53 54 45 52  52 2B 30 33 68 20 20 20  20 20 20 20 20 20 20 20  20 3B 20 41 73 73 75 6D   ax,STERR+03h            ; Assum
0000BAE0  65 20 45 52 52 4F 52 2B  22 55 6E 6B 6E 6F 77 6E  20 63 6F 6D 6D 61 6E 64  22 0D 0A 20 20 20 20 20  e ERROR+"Unknown command"     
0000BB00  20 20 20 6A 6E 65 20 20  20 20 20 69 74 72 78 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20     jne     itrx                 
0000BB20  20 20 20 3B 20 20 20 4E  4F 2C 20 66 61 69 6C 20  63 61 6C 6C 0D 0A 0D 0A  3B 2A 20 20 49 6E 69 74     ;   NO, fail call;*  Init
0000BB40  20 64 65 76 69 63 65 0D  0A 0D 0A 20 20 20 20 20  20 20 20 63 61 6C 6C 20  20 20 20 47 65 74 49 6E   device        call    GetIn
0000BB60  44 4F 53 46 6C 61 67 50  6F 69 6E 74 65 72 20 20  20 20 20 3B 20 4E 65 65  64 65 64 20 66 6F 72 20  DOSFlagPointer     ; Needed for 
0000BB80  63 72 69 74 69 63 61 6C  20 73 65 63 74 69 6F 6E  20 63 61 6C 6C 73 0D 0A  0D 0A 20 20 20 20 20 20  critical section calls      
0000BBA0  20 20 53 61 76 65 52 65  67 20 3C 62 78 2C 65 73  3E 0D 0A 20 20 20 20 20  20 20 20 63 61 6C 6C 20    SaveReg <bx,es>        call 
0000BBC0  20 20 20 49 6E 69 74 4D  52 43 53 65 72 76 65 72  0D 0A 20 20 20 20 20 20  20 20 52 65 73 74 6F 72     InitMRCServer        Restor
0000BBE0  65 52 65 67 20 3C 65 73  2C 62 78 3E 0D 0A 20 20  20 20 20 20 20 20 6D 6F  76 20 20 20 20 20 63 78  eReg <es,bx>        mov     cx
0000BC00  2C 4F 46 46 53 45 54 20  63 73 3A 45 6E 64 4F 66  52 65 73 69 64 65 6E 74  43 6F 64 65 20 3B 20 41  ,OFFSET cs:EndOfResidentCode ; A
0000BC20  73 73 75 6D 65 20 77 65  20 61 72 65 20 69 6E 73  74 61 6C 6C 65 64 0D 0A  20 20 20 20 20 20 20 20  ssume we are installed        
0000BC40  6F 72 20 20 20 20 20 20  61 78 2C 61 78 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  or      ax,ax                   
0000BC60  3B 20 41 72 65 20 77 65  20 69 6E 73 74 61 6C 6C  65 64 3F 0D 0A 20 20 20  20 20 20 20 20 6A 7A 20  ; Are we installed?        jz 
0000BC80  20 20 20 20 20 69 74 72  31 30 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 3B 20 20       itr10                   ;  
0000BCA0  20 59 45 53 2C 20 73 65  74 20 62 72 65 61 6B 20  61 64 64 72 65 73 73 2C  20 6E 6F 74 65 20 74 68   YES, set break address, note th
0000BCC0  61 74 0D 0A 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  at                            
0000BCE0  20 20 20 20 20 20 20 20  20 20 20 20 3B 20 20 20  61 78 3D 73 74 61 74 75  73 3D 66 69 6E 65 21 0D              ;   ax=status=fine!
0000BD00  0A 0D 0A 3B 2A 20 20 44  69 64 20 6E 6F 74 20 69  6E 73 74 61 6C 6C 20 4D  52 43 49 20 73 65 72 76  ;*  Did not install MRCI serv
0000BD20  65 72 0D 0A 20 20 20 20  20 20 20 20 78 6F 72 20  20 20 20 20 63 78 2C 63  78 20 20 20 20 20 20 20  er        xor     cx,cx       
0000BD40  20 20 20 20 20 20 20 20  20 20 20 20 3B 20 20 20  4E 4F 2C 20 6D 61 6B 65  20 62 72 65 61 6B 20 61              ;   NO, make break a
0000BD60  64 64 72 65 73 73 20 73  6D 61 6C 6C 0D 0A 20 20  20 20 20 20 20 20 6D 6F  76 20 20 20 20 20 61 78  ddress small        mov     ax
0000BD80  2C 53 54 45 52 52 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3B 20  57 68 61 74 20 65 72 72  ,STERR                ; What err
0000BDA0  6F 72 20 63 6F 64 65 20  73 68 6F 75 6C 64 20 77  65 20 75 73 65 3F 0D 0A  0D 0A 3B 2A 20 20 53 65  or code should we use?;*  Se
0000BDC0  74 20 62 72 65 61 6B 20  61 64 64 72 65 73 73 0D  0A 3B 0D 0A 3B 20 20 20  63 78 20 3D 20 62 72 65  t break address;;   cx = bre
0000BDE0  61 6B 20 61 64 64 72 65  73 73 0D 0A 3B 20 20 20  61 78 20 3D 20 73 74 61  74 75 73 20 63 6F 64 65  ak address;   ax = status code
0000BE00  0D 0A 0D 0A 69 74 72 31  30 3A 20 20 6D 6F 76 20  20 20 20 20 65 73 3A 5B  62 78 2B 31 34 5D 2E 6F  itr10:  mov     es:[bx+14].o
0000BE20  66 66 73 74 2C 63 78 0D  0A 20 20 20 20 20 20 20  20 6D 6F 76 20 20 20 20  20 65 73 3A 5B 62 78 2B  ffst,cx        mov     es:[bx+
0000BE40  31 34 5D 2E 73 65 67 6D  74 2C 63 73 0D 0A 0D 0A  3B 2A 20 20 65 73 3A 62  78 20 2D 3E 20 44 4F 53  14].segmt,cs;*  es:bx -> DOS
0000BE60  20 72 65 71 75 65 73 74  20 70 61 63 6B 65 74 0D  0A 3B 20 20 20 61 78 20  3D 20 73 74 61 74 75 73   request packet;   ax = status
0000BE80  20 63 6F 64 65 0D 0A 0D  0A 69 74 72 78 3A 20 20  20 6F 72 20 20 20 20 20  20 61 78 2C 53 54 44 4F   codeitrx:   or      ax,STDO
0000BEA0  4E 45 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 3B 20 53 65 74 20 44  4F 4E 45 20 62 69 74 20  NE               ; Set DONE bit 
0000BEC0  69 6E 20 73 74 61 74 75  73 0D 0A 20 20 20 20 20  20 20 20 6D 6F 76 20 65  73 3A 5B 62 78 5D 2E 72  in status        mov es:[bx].r
0000BEE0  70 53 74 61 74 75 73 2C  61 78 20 20 20 20 20 20  20 20 20 3B 20 53 74 6F  72 65 20 73 74 61 74 75  pStatus,ax         ; Store statu
0000BF00  73 0D 0A 20 20 20 20 20  20 20 20 52 65 73 74 6F  72 65 52 65 67 20 3C 65  73 2C 64 73 2C 64 69 2C  s        RestoreReg <es,ds,di,
0000BF20  73 69 2C 64 78 2C 63 78  2C 62 78 2C 61 78 3E 0D  0A 20 20 20 20 20 20 20  20 72 65 74 0D 0A 49 6E  si,dx,cx,bx,ax>        retIn
0000BF40  74 65 72 72 75 70 74 20  20 20 65 6E 64 70 0D 0A  0D 0A 0D 0A 3B 2A 2A 2A  20 20 20 20 53 65 72 76  terrupt   endp;***    Serv
0000BF60  65 72 20 2D 20 4D 52 43  49 20 73 65 72 76 65 72  20 69 6E 74 65 72 72 75  70 74 20 65 6E 74 72 79  er - MRCI server interrupt entry
0000BF80  20 70 6F 69 6E 74 0D 0A  3B 0D 0A 3B 20 20 20 20  20 20 20 45 6E 74 72 79  0D 0A 3B 20 20 20 20 20   point;;       Entry;     
0000BFA0  20 20 20 20 20 20 6D 6F  76 20 61 78 2C 4D 52 43  49 20 66 75 6E 63 74 69  6F 6E 20 20 3B 20 53 65        mov ax,MRCI function  ; Se
0000BFC0  74 20 66 75 6E 63 74 69  6F 6E 0D 0A 3B 20 20 20  20 20 20 20 20 20 20 20  69 6E 74 20 69 6E 74 4D  t function;           int intM
0000BFE0  52 43 49 20 20 20 20 20  20 20 20 20 20 20 3B 20  43 61 6C 6C 20 75 73 20  68 65 72 65 0D 0A 3B 0D  RCI           ; Call us here;
0000C000  0A 3B 20 20 20 20 20 20  20 45 78 69 74 0D 0A 3B  20 20 20 20 20 20 20 20  20 20 20 53 65 65 20 4D  ;       Exit;           See M
0000C020  52 43 49 20 73 70 65 63  2E 20 20 49 52 45 54 20  74 6F 20 72 65 74 75 72  6E 2E 0D 0A 3B 0D 0A 3B  RCI spec.  IRET to return.;;
0000C040  20 20 20 20 20 20 20 55  73 65 73 0D 0A 3B 20 20  20 20 20 20 20 20 20 20  20 41 58 2C 20 44 49 2C         Uses;           AX, DI,
0000C060  20 45 53 2C 20 66 6C 61  67 73 0D 0A 0D 0A 53 65  72 76 65 72 20 20 70 72  6F 63 0D 0A 20 20 20 20   ES, flagsServer  proc    
0000C080  61 73 73 75 6D 65 20 20  64 73 3A 6E 6F 74 68 69  6E 67 2C 65 73 3A 6E 6F  74 68 69 6E 67 2C 73 73  assume  ds:nothing,es:nothing,ss
0000C0A0  3A 6E 6F 74 68 69 6E 67  0D 0A 0D 0A 3B 2A 20 20  56 65 72 69 66 79 20 74  68 61 74 20 63 61 6C 6C  :nothing;*  Verify that call
0000C0C0  65 72 20 69 73 20 61 73  6B 69 6E 67 20 66 6F 72  20 61 6E 20 4D 52 43 49  20 73 65 72 76 65 72 0D  er is asking for an MRCI server
0000C0E0  0A 0D 0A 20 20 20 20 20  20 20 20 63 6D 70 20 20  20 20 20 63 78 2C 73 69  67 4F 4C 44 5F 43 58 20          cmp     cx,sigOLD_CX 
0000C100  20 20 20 20 20 20 20 20  20 20 20 3B 20 53 69 67  6E 61 74 75 72 65 20 6D  61 74 63 68 3F 0D 0A 20             ; Signature match? 
0000C120  20 20 20 20 20 20 20 6A  65 20 20 20 20 20 20 73  72 76 31 30 20 20 20 20  20 20 20 20 20 20 20 20         je      srv10            
0000C140  20 20 20 20 20 20 20 3B  20 20 20 59 45 53 2C 20  6B 65 65 70 20 74 65 73  74 69 6E 67 0D 0A 0D 0A         ;   YES, keep testing
0000C160  20 20 20 20 20 20 20 20  6A 6D 70 20 20 20 20 20  64 77 6F 72 64 20 70 74  72 20 63 73 3A 5B 66 70          jmp     dword ptr cs:[fp
0000C180  4F 6C 64 69 6E 74 4D 52  43 49 5D 20 3B 20 43 68  61 69 6E 20 74 6F 20 70  72 65 76 69 6F 75 73 20  OldintMRCI] ; Chain to previous 
0000C1A0  68 6F 6F 6B 65 72 0D 0A  0D 0A 73 72 76 31 30 3A  20 20 63 6D 70 20 20 20  20 20 64 78 2C 73 69 67  hookersrv10:  cmp     dx,sig
0000C1C0  4F 4C 44 5F 44 58 20 20  20 20 20 20 20 20 20 20  20 20 3B 20 53 69 67 6E  61 74 75 72 65 20 6D 61  OLD_DX            ; Signature ma
0000C1E0  74 63 68 3F 0D 0A 20 20  20 20 20 20 20 20 6A 65  20 20 20 20 20 20 73 72  76 32 30 20 20 20 20 20  tch?        je      srv20     
0000C200  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3B 20  20 20 59 45 53 2C 20 63  61 6C 6C 65 72 20 77 61                ;   YES, caller wa
0000C220  6E 74 73 20 75 73 0D 0A  0D 0A 20 20 20 20 20 20  20 20 6A 6D 70 20 20 20  20 20 64 77 6F 72 64 20  nts us        jmp     dword 
0000C240  70 74 72 20 63 73 3A 5B  66 70 4F 6C 64 69 6E 74  4D 52 43 49 5D 20 3B 20  43 68 61 69 6E 20 74 6F  ptr cs:[fpOldintMRCI] ; Chain to
0000C260  20 70 72 65 76 69 6F 75  73 20 68 6F 6F 6B 65 72  0D 0A 0D 0A 3B 2A 20 20  44 69 73 70 61 74 63 68   previous hooker;*  Dispatch
0000C280  20 4D 52 43 49 20 66 75  6E 63 74 69 6F 6E 0D 0A  0D 0A 73 72 76 32 30 3A  20 20 63 6D 70 20 20 20   MRCI functionsrv20:  cmp   
0000C2A0  20 20 61 78 2C 6D 72 63  69 44 45 54 45 43 54 20  20 20 20 20 20 20 20 20  20 20 3B 20 44 65 74 65    ax,mrciDETECT           ; Dete
0000C2C0  63 74 20 63 61 6C 6C 3F  0D 0A 20 20 20 20 20 20  20 20 6A 65 20 20 20 20  20 20 64 6D 73 31 30 20  ct call?        je      dms10 
0000C2E0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 3B 20 20 20 4E 4F  2C 20 63 6F 6E 74 69 6E                    ;   NO, contin
0000C300  75 65 0D 0A 0D 0A 3B 2A  20 20 6D 72 63 69 51 55  45 52 59 20 63 61 6C 6C  0D 0A 0D 0A 20 20 20 20  ue;*  mrciQUERY call    
0000C320  20 20 20 20 70 75 73 68  20 20 20 20 63 73 0D 0A  20 20 20 20 20 20 20 20  70 6F 70 20 20 20 20 20      push    cs        pop     
0000C340  65 73 0D 0A 20 20 20 20  20 20 20 20 6D 6F 76 20  20 20 20 20 64 69 2C 4F  46 46 53 45 54 20 6D 69  es        mov     di,OFFSET mi
0000C360  20 20 20 20 20 20 20 20  20 20 20 20 3B 20 65 73  3A 64 69 20 2D 3E 20 6F  75 72 20 4D 52 43 49 4E              ; es:di -> our MRCIN
0000C380  46 4F 20 73 74 72 75 63  74 75 72 65 0D 0A 0D 0A  3B 2A 20 20 55 70 64 61  74 65 20 43 58 2F 44 58  FO structure;*  Update CX/DX
0000C3A0  20 73 69 67 6E 61 74 75  72 65 73 20 73 6F 20 63  61 6C 6C 65 72 20 6B 6E  6F 77 73 20 77 65 20 61   signatures so caller knows we a
0000C3C0  72 65 20 61 6E 20 4D 52  43 49 20 73 65 72 76 65  72 0D 0A 0D 0A 20 20 20  20 20 20 20 20 20 20 20  re an MRCI server           
0000C3E0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 3B 20 20 20  65 6E 74 72 79 3A 20 63                      ;   entry: c
0000C400  78 3D 27 61 62 27 20 20  64 78 3D 27 63 64 27 0D  0A 20 20 20 20 20 20 20  20 78 63 68 67 20 20 20  x='ab'  dx='cd'        xchg   
0000C420  20 63 68 2C 63 6C 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 3B 20 63 78 3D 27 62   ch,cl                   ; cx='b
0000C440  61 27 20 20 64 78 3D 27  63 64 27 0D 0A 20 20 20  20 20 20 20 20 78 63 68  67 20 20 20 20 64 68 2C  a'  dx='cd'        xchg    dh,
0000C460  64 6C 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 3B 20 63  78 3D 27 62 61 27 20 20  dl                   ; cx='ba'  
0000C480  64 78 3D 27 64 63 27 0D  0A 20 20 20 20 20 20 20  20 78 63 68 67 20 20 20  20 64 78 2C 63 78 20 20  dx='dc'        xchg    dx,cx  
0000C4A0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 3B 20 63 78 3D 27 64  63 27 20 20 64 78 3D 27                   ; cx='dc'  dx='
0000C4C0  62 61 27 0D 0A 0D 0A 20  20 20 20 20 20 20 20 78  6F 72 20 20 20 20 20 61  78 2C 61 78 20 20 20 20  ba'        xor     ax,ax    
0000C4E0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3B  20 49 6E 64 69 63 61 74  65 20 73 75 63 63 65 73                 ; Indicate succes
0000C500  73 0D 0A 20 20 20 20 20  20 20 20 69 72 65 74 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  s        iret                 
0000C520  20 20 20 20 20 20 20 20  20 20 20 3B 20 52 65 74  75 72 6E 20 74 6F 20 63  61 6C 6C 65 72 0D 0A 0D             ; Return to caller
0000C540  0A 64 6D 73 31 30 3A 20  20 6D 6F 76 20 20 20 20  20 61 78 2C 31 20 20 20  20 20 20 20 20 20 20 20  dms10:  mov     ax,1           
0000C560  20 20 20 20 20 20 20 20  20 3B 20 49 6E 64 69 63  61 74 65 20 66 61 69 6C  75 72 65 0D 0A 0D 0A 3B           ; Indicate failure;
0000C580  2A 20 20 45 6D 70 74 79  49 52 45 54 20 2D 20 61  64 64 72 65 73 73 20 66  6F 72 20 66 70 4F 6C 64  *  EmptyIRET - address for fpOld
0000C5A0  69 6E 74 4D 52 43 49 20  69 66 20 69 6E 74 4D 52  43 49 20 77 61 73 20 75  6E 68 6F 6F 6B 65 64 2E  intMRCI if intMRCI was unhooked.
0000C5C0  0D 0A 3B 0D 0A 3B 20 20  20 54 6F 20 69 6D 70 72  6F 76 65 20 70 65 72 66  6F 72 6D 61 6E 63 65 20  ;;   To improve performance 
0000C5E0  6F 66 20 53 65 72 76 65  72 20 77 68 65 6E 20 69  74 20 63 68 61 69 6E 73  20 61 20 6E 6F 6E 2D 69  of Server when it chains a non-i
0000C600  6E 74 4D 52 43 49 20 72  65 71 75 65 73 74 2C 0D  0A 3B 20 20 20 69 66 20  77 65 20 61 72 65 20 74  ntMRCI request,;   if we are t
0000C620  68 65 20 66 69 72 73 74  20 68 6F 6F 6B 65 72 20  6F 66 20 69 6E 74 4D 52  43 49 2C 20 77 65 20 73  he first hooker of intMRCI, we s
0000C640  74 6F 72 65 20 74 68 65  20 70 6F 69 6E 74 65 72  20 74 6F 20 74 68 69 73  0D 0A 3B 20 20 20 49 52  tore the pointer to this;   IR
0000C660  45 54 2E 20 20 54 68 69  73 20 72 65 6D 6F 76 65  73 20 74 68 65 20 6E 65  65 64 20 66 6F 72 20 53  ET.  This removes the need for S
0000C680  65 72 76 65 72 20 74 6F  20 63 68 65 63 6B 20 74  68 61 74 20 74 68 65 20  66 70 4F 6C 64 69 6E 74  erver to check that the fpOldint
0000C6A0  4D 52 43 49 0D 0A 3B 20  20 20 76 61 6C 75 65 20  69 73 20 76 61 6C 69 64  2C 20 74 6F 20 70 72 65  MRCI;   value is valid, to pre
0000C6C0  76 65 6E 74 20 66 72 6F  6D 20 49 4E 54 69 6E 67  20 69 6E 74 6F 20 68 79  70 65 72 73 70 61 63 65  vent from INTing into hyperspace
0000C6E0  2E 0D 0A 3B 0D 0A 45 6D  70 74 79 49 52 45 54 3A  0D 0A 20 20 20 20 20 20  20 20 69 72 65 74 0D 0A  .;EmptyIRET:        iret
0000C700  53 65 72 76 65 72 20 20  65 6E 64 70 0D 0A 0D 0A  0D 0A 3B 2A 2A 2A 20 20  20 20 4F 70 65 72 61 74  Server  endp;***    Operat
0000C720  65 20 2D 20 4D 52 43 49  20 73 65 72 76 65 72 20  6F 70 65 72 61 74 69 6F  6E 20 65 6E 74 72 79 20  e - MRCI server operation entry 
0000C740  70 6F 69 6E 74 0D 0A 3B  0D 0A 3B 20 20 20 20 20  20 20 48 61 6E 64 6C 65  20 43 6F 6D 70 72 65 73  point;;       Handle Compres
0000C760  73 2F 44 65 63 6F 6D 70  72 65 73 73 20 72 65 71  75 65 73 74 73 2E 0D 0A  3B 0D 0A 3B 20 20 20 20  s/Decompress requests.;;    
0000C780  20 20 20 45 6E 74 72 79  0D 0A 3B 20 20 20 20 20  20 20 20 20 20 20 20 20  20 61 78 20 3D 20 52 65     Entry;              ax = Re
0000C7A0  71 75 65 73 74 65 64 20  6F 70 65 72 61 74 69 6F  6E 20 28 6D 69 63 61 70  58 58 58 58 29 0D 0A 3B  quested operation (micapXXXX);
0000C7C0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 63 78  20 3D 20 46 69 6C 65 20  53 79 73 74 65 6D 20 43                cx = File System C
0000C7E0  61 6C 6C 65 72 20 66 6C  61 67 0D 0A 3B 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  aller flag;                   
0000C800  20 20 20 20 6D 63 41 50  50 4C 49 43 41 54 49 4F  4E 20 28 30 29 20 2D 20  41 70 70 6C 69 63 61 74      mcAPPLICATION (0) - Applicat
0000C820  69 6F 6E 20 63 6C 69 65  6E 74 0D 0A 3B 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  ion client;                   
0000C840  20 20 20 20 6D 63 53 59  53 54 45 4D 20 28 31 29  20 20 20 20 20 20 2D 20  46 69 6C 65 20 53 79 73      mcSYSTEM (1)      - File Sys
0000C860  74 65 6D 20 63 6C 69 65  6E 74 0D 0A 3B 20 20 20  20 20 20 20 20 20 20 20  64 73 3A 73 69 20 2D 3E  tem client;           ds:si ->
0000C880  20 4D 52 43 52 45 51 55  45 53 54 20 70 61 63 6B  65 74 0D 0A 3B 0D 0A 3B  20 20 20 20 20 20 20 45   MRCREQUEST packet;;       E
0000C8A0  78 69 74 2D 53 75 63 63  65 73 73 0D 0A 3B 20 20  20 20 20 20 20 20 20 20  20 61 78 20 3D 20 30 0D  xit-Success;           ax = 0
0000C8C0  0A 3B 20 20 20 20 20 20  20 20 20 20 20 53 65 65  20 4D 52 43 49 20 73 70  65 63 20 66 6F 72 20 64  ;           See MRCI spec for d
0000C8E0  65 74 61 69 6C 73 20 6F  6E 20 72 65 74 75 72 6E  65 64 20 76 61 6C 75 65  73 2E 0D 0A 3B 0D 0A 3B  etails on returned values.;;
0000C900  20 20 20 20 20 20 20 45  78 69 74 2D 46 61 69 6C  75 72 65 0D 0A 3B 20 20  20 20 20 20 20 20 20 20         Exit-Failure;          
0000C920  20 53 65 65 20 4D 52 43  49 20 73 70 65 63 20 66  6F 72 20 64 65 74 61 69  6C 73 20 6F 6E 20 72 65   See MRCI spec for details on re
0000C940  74 75 72 6E 65 64 20 76  61 6C 75 65 73 2E 0D 0A  3B 0D 0A 3B 20 20 20 20  20 20 20 55 73 65 73 0D  turned values.;;       Uses
0000C960  0A 3B 20 20 20 20 20 20  20 20 20 20 20 41 6C 6C  20 28 62 75 74 20 43 53  3A 49 50 2C 20 53 53 3A  ;           All (but CS:IP, SS:
0000C980  53 50 29 0D 0A 0D 0A 4F  70 65 72 61 74 65 20 70  72 6F 63 20 20 20 20 66  61 72 0D 0A 20 20 20 20  SP)Operate proc    far    
0000C9A0  61 73 73 75 6D 65 20 20  64 73 3A 6E 6F 74 68 69  6E 67 2C 65 73 3A 6E 6F  74 68 69 6E 67 2C 73 73  assume  ds:nothing,es:nothing,ss
0000C9C0  3A 6E 6F 74 68 69 6E 67  0D 0A 0D 0A 20 20 20 20  20 20 20 20 61 6E 64 20  20 20 20 20 61 78 2C 6D  :nothing        and     ax,m
0000C9E0  69 63 61 70 4D 69 6E 65  20 20 20 20 20 20 20 20  20 20 20 20 3B 20 49 73  20 74 68 69 73 20 61 6E  icapMine            ; Is this an
0000CA00  20 6F 70 65 72 61 74 69  6F 6E 20 77 65 20 73 75  70 70 6F 72 74 3F 0D 0A  20 20 20 20 20 20 20 20   operation we support?        
0000CA20  6A 7A 20 20 20 20 20 20  6F 70 72 65 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  jz      opre                    
0000CA40  3B 20 20 20 4E 4F 2C 20  66 61 69 6C 20 72 65 71  75 65 73 74 0D 0A 0D 0A  3B 2A 20 20 4D 61 6B 65  ;   NO, fail request;*  Make
0000CA60  20 73 75 72 65 20 77 65  20 61 72 65 20 6E 6F 74  20 62 65 69 6E 67 20 72  65 65 6E 74 65 72 65 64   sure we are not being reentered
0000CA80  0D 0A 0D 0A 20 20 20 20  20 20 20 20 45 6E 74 65  72 43 72 69 74 69 63 61  6C 53 65 63 74 69 6F 6E          EnterCriticalSection
0000CAA0  20 63 78 20 20 20 20 20  20 20 20 20 3B 20 47 72  61 62 20 63 72 69 74 69  63 61 6C 20 73 65 63 74   cx         ; Grab critical sect
0000CAC0  69 6F 6E 0D 0A 20 20 20  20 20 20 20 20 6A 63 20  20 20 20 20 20 6F 70 72  65 31 20 20 20 20 20 20  ion        jc      opre1      
0000CAE0  20 20 20 20 20 20 20 20  20 20 20 20 20 3B 20 20  20 41 6C 72 65 61 64 79  20 67 72 61 62 62 65 64               ;   Already grabbed
0000CB00  2C 20 67 6F 20 66 61 69  6C 0D 0A 0D 0A 20 20 20  20 20 20 20 20 53 61 76  65 52 65 67 20 3C 63 78  , go fail        SaveReg <cx
0000CB20  3E 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 3B 20 53  61 76 65 20 66 46 69 6C  >                    ; Save fFil
0000CB40  65 53 79 73 74 65 6D 43  61 6C 6C 65 72 20 66 6C  61 67 0D 0A 0D 0A 3B 2A  20 20 44 69 73 70 61 74  eSystemCaller flag;*  Dispat
0000CB60  63 68 20 6F 70 65 72 61  74 69 6F 6E 0D 0A 3B 0D  0A 3B 20 20 20 4E 4F 54  45 3A 20 57 65 20 61 73  ch operation;;   NOTE: We as
0000CB80  73 75 6D 65 20 53 74 61  6E 64 61 72 64 20 43 6F  6D 70 72 65 73 73 20 69  73 20 74 68 65 20 6D 6F  sume Standard Compress is the mo
0000CBA0  73 74 20 63 6F 6D 6D 6F  6E 20 6F 70 65 72 61 74  69 6F 6E 2C 0D 0A 3B 20  20 20 20 20 20 20 20 20  st common operation,;         
0000CBC0  73 6F 20 77 65 20 6F 70  74 69 6D 69 7A 65 20 74  68 65 20 66 6C 6F 77 20  74 6F 20 72 65 64 75 63  so we optimize the flow to reduc
0000CBE0  65 20 6A 75 6D 70 73 20  66 6F 72 20 74 68 61 74  20 6F 70 65 72 61 74 69  6F 6E 2E 0D 0A 3B 0D 0A  e jumps for that operation.;
0000CC00  20 20 20 20 20 20 20 20  63 6D 70 20 20 20 20 20  61 78 2C 6D 69 63 61 70  53 54 41 4E 44 41 52 44          cmp     ax,micapSTANDARD
0000CC20  20 20 20 20 20 20 20 20  3B 20 53 74 61 6E 64 61  72 64 20 63 6F 6D 70 72  65 73 73 3F 0D 0A 20 20          ; Standard compress?  
0000CC40  20 20 20 20 20 20 6A 7A  20 20 20 20 20 20 6F 70  72 31 30 20 20 20 20 20  20 20 20 20 20 20 20 20        jz      opr10             
0000CC60  20 20 20 20 20 20 3B 20  20 20 59 45 53 2C 20 67  6F 20 64 6F 20 69 74 0D  0A 0D 0A 20 20 20 20 20        ;   YES, go do it     
0000CC80  20 20 20 63 6D 70 20 20  20 20 20 61 78 2C 6D 69  63 61 70 44 45 43 4F 4D  50 52 45 53 53 20 20 20     cmp     ax,micapDECOMPRESS   
0000CCA0  20 20 20 3B 20 44 65 63  6F 6D 70 72 65 73 73 3F  0D 0A 20 20 20 20 20 20  20 20 6A 6E 7A 20 20 20     ; Decompress?        jnz   
0000CCC0  20 20 6F 70 72 65 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 3B 20 20 20 4E 4F    opre                    ;   NO
0000CCE0  2C 20 69 6E 76 61 6C 69  64 20 6F 70 65 72 61 74  69 6F 6E 20 28 75 73 65  72 20 68 61 64 0D 0A 20  , invalid operation (user had 
0000CD00  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20                                  
0000CD20  20 20 20 20 20 20 20 3B  20 20 20 6D 6F 72 65 20  74 68 61 6E 20 6F 6E 65  20 62 69 74 20 73 65 74         ;   more than one bit set
0000CD40  21 29 0D 0A 3B 2A 20 20  44 6F 20 44 65 63 6F 6D  70 72 65 73 73 0D 0A 0D  0A 6F 70 72 32 30 3A 20  !);*  Do Decompressopr20: 
0000CD60  20 63 61 6C 6C 20 20 20  20 44 6F 44 65 63 6F 6D  70 72 65 73 73 0D 0A 20  20 20 20 20 20 20 20 6A   call    DoDecompress        j
0000CD80  6D 70 20 20 20 20 20 73  68 6F 72 74 20 6F 70 72  4C 43 53 0D 0A 0D 0A 3B  2A 20 20 44 6F 20 53 74  mp     short oprLCS;*  Do St
0000CDA0  61 6E 64 61 72 64 20 43  6F 6D 70 72 65 73 73 0D  0A 0D 0A 6F 70 72 31 30  3A 20 20 63 61 6C 6C 20  andard Compressopr10:  call 
0000CDC0  20 20 20 44 6F 43 6F 6D  70 72 65 73 73 0D 0A 0D  0A 3B 2A 20 20 52 65 6C  65 61 73 65 20 63 72 69     DoCompress;*  Release cri
0000CDE0  74 69 63 61 6C 20 73 65  63 74 69 6F 6E 0D 0A 6F  70 72 4C 43 53 3A 20 52  65 73 74 6F 72 65 52 65  tical sectionoprLCS: RestoreRe
0000CE00  67 20 3C 63 78 3E 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3B  20 47 65 74 20 66 46 69  g <cx>                 ; Get fFi
0000CE20  6C 65 53 79 73 74 65 6D  43 61 6C 6C 65 72 20 66  6C 61 67 0D 0A 20 20 20  20 20 20 20 20 4C 65 61  leSystemCaller flag        Lea
0000CE40  76 65 43 72 69 74 69 63  61 6C 53 65 63 74 69 6F  6E 20 63 78 20 20 20 20  20 20 20 20 20 3B 20 4C  veCriticalSection cx         ; L
0000CE60  65 61 76 65 20 63 72 69  74 69 63 61 6C 20 73 65  63 74 69 6F 6E 0D 0A 0D  0A 20 20 20 20 20 20 20  eave critical section       
0000CE80  20 72 65 74 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20   ret                            
0000CEA0  20 3B 20 52 65 74 75 72  6E 20 73 74 61 74 75 73  0D 0A 0D 0A 0D 0A 6F 70  72 65 3A 20 20 20 6D 6F   ; Return statusopre:   mo
0000CEC0  76 20 20 20 20 20 61 78  2C 4D 52 43 49 5F 45 52  52 4F 52 5F 4E 4F 54 5F  53 55 50 50 4F 52 54 45  v     ax,MRCI_ERROR_NOT_SUPPORTE
0000CEE0  44 0D 0A 20 20 20 20 20  20 20 20 72 65 74 0D 0A  0D 0A 6F 70 72 65 31 3A  20 20 6D 6F 76 20 20 20  D        retopre1:  mov   
0000CF00  20 20 61 78 2C 4D 52 43  49 5F 45 52 52 4F 52 5F  42 55 53 59 0D 0A 20 20  20 20 20 20 20 20 72 65    ax,MRCI_ERROR_BUSY        re
0000CF20  74 0D 0A 4F 70 65 72 61  74 65 20 65 6E 64 70 0D  0A 0D 0A 0D 0A 3B 2A 2A  2A 20 20 20 20 44 6F 43  tOperate endp;***    DoC
0000CF40  6F 6D 70 72 65 73 73 20  2D 20 55 6E 69 6D 70 6C  65 6D 65 6E 74 65 64 20  63 6F 6D 70 72 65 73 73  ompress - Unimplemented compress
0000CF60  20 72 6F 75 74 69 6E 65  0D 0A 3B 0D 0A 3B 0D 0A  44 6F 43 6F 6D 70 72 65  73 73 20 20 70 72 6F 63   routine;;DoCompress  proc
0000CF80  20 20 20 20 6E 65 61 72  0D 0A 44 6F 43 6F 6D 70  72 65 73 73 20 20 65 6E  64 70 0D 0A 0D 0A 0D 0A      nearDoCompress  endp
0000CFA0  3B 2A 2A 2A 20 20 20 20  44 6F 44 65 63 6F 6D 70  72 65 73 73 20 2D 20 55  6E 69 6D 70 6C 65 6D 65  ;***    DoDecompress - Unimpleme
0000CFC0  6E 74 65 64 20 64 65 63  6F 6D 70 72 65 73 73 20  72 6F 75 74 69 6E 65 0D  0A 3B 0D 0A 3B 0D 0A 44  nted decompress routine;;D
0000CFE0  6F 44 65 63 6F 6D 70 72  65 73 73 20 20 70 72 6F  63 20 20 20 20 6E 65 61  72 0D 0A 44 6F 44 65 63  oDecompress  proc    nearDoDec
0000D000  6F 6D 70 72 65 73 73 20  20 65 6E 64 70 0D 0A 0D  0A 0D 0A 3B 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  ompress  endp;************
0000D020  2A 2A 2A 2A 2A 2A 0D 0A  3B 2A 20 49 4E 49 54 2D  54 49 4D 45 20 43 4F 44  45 20 2A 0D 0A 3B 2A 2A  ******;* INIT-TIME CODE *;**
0000D040  2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  0D 0A 0D 0A 45 6E 64 4F  66 52 65 73 69 64 65 6E  ****************EndOfResiden
0000D060  74 43 6F 64 65 20 20 6C  61 62 65 6C 20 20 62 79  74 65 20 20 3B 20 54 72  75 6E 63 61 74 65 20 64  tCode  label  byte  ; Truncate d
0000D080  65 76 69 63 65 20 68 65  72 65 20 61 66 74 65 72  20 69 6E 69 74 20 69 73  20 63 6F 6D 70 6C 65 74  evice here after init is complet
0000D0A0  65 0D 0A 0D 0A 0D 0A 3B  2A 2A 20 42 45 47 49 4E  3A 20 49 6E 63 6C 75 64  65 20 63 6F 64 65 20 66  e;** BEGIN: Include code f
0000D0C0  6F 72 20 4D 52 43 51 75  65 72 79 20 68 65 72 65  21 0D 0A 3B 0D 0A 20 20  20 20 20 20 20 20 44 65  or MRCQuery here!;        De
0000D0E0  66 69 6E 65 4D 52 43 51  75 65 72 79 0D 0A 3B 0D  0A 3B 2A 2A 20 45 4E 44  3A 20 20 20 49 6E 63 6C  fineMRCQuery;;** END:   Incl
0000D100  75 64 65 20 63 6F 64 65  20 66 6F 72 20 4D 52 43  51 75 65 72 79 20 68 65  72 65 21 0D 0A 0D 0A 0D  ude code for MRCQuery here!
0000D120  0A 3B 2A 2A 20 20 20 20  20 49 6E 69 74 4D 52 43  53 65 72 76 65 72 20 2D  20 49 6E 69 74 69 61 6C  ;**     InitMRCServer - Initial
0000D140  69 7A 65 20 6F 75 72 20  4D 52 43 49 20 53 65 72  76 65 72 0D 0A 3B 0D 0A  3B 20 20 20 20 20 20 20  ize our MRCI Server;;       
0000D160  49 66 20 61 6E 20 4D 52  43 49 20 73 65 72 76 65  72 20 49 53 20 4E 4F 54  20 70 72 65 73 65 6E 74  If an MRCI server IS NOT present
0000D180  2C 20 74 68 65 6E 20 77  65 20 69 6E 73 74 61 6C  6C 20 6F 75 72 20 73 65  72 76 65 72 2E 0D 0A 3B  , then we install our server.;
0000D1A0  0D 0A 3B 20 20 20 20 20  20 20 49 66 20 61 6E 20  4D 52 43 49 20 73 65 72  76 65 72 20 49 53 20 70  ;       If an MRCI server IS p
0000D1C0  72 65 73 65 6E 74 2C 20  74 68 65 6E 20 77 65 20  67 65 74 20 74 68 65 20  70 6F 69 6E 74 65 72 20  resent, then we get the pointer 
0000D1E0  74 6F 20 69 74 73 0D 0A  3B 20 20 20 20 20 20 20  4D 52 43 49 4E 46 4F 20  73 74 72 75 63 74 75 72  to its;       MRCINFO structur
0000D200  65 2C 20 61 6E 64 20 63  68 65 63 6B 20 74 6F 20  73 65 65 20 69 66 20 77  65 20 61 72 65 20 22 62  e, and check to see if we are "b
0000D220  65 74 74 65 72 22 20 74  68 61 6E 20 74 68 65 0D  0A 3B 20 20 20 20 20 20  20 70 72 65 73 65 6E 74  etter" than the;       present
0000D240  20 73 65 72 76 65 72 2E  20 20 49 66 20 73 6F 2C  20 74 68 65 6E 20 77 65  20 69 6E 73 74 61 6C 6C   server.  If so, then we install
0000D260  2C 20 61 6E 64 20 65 64  69 74 20 74 68 65 20 6F  6C 64 0D 0A 3B 20 20 20  20 20 20 20 73 65 72 76  , and edit the old;       serv
0000D280  65 72 27 73 20 4D 52 43  49 4E 46 4F 20 73 74 72  75 63 74 75 72 65 20 73  6F 20 74 68 61 74 20 69  er's MRCINFO structure so that i
0000D2A0  74 73 20 63 6C 69 65 6E  74 73 20 63 61 6E 20 63  61 6C 6C 20 75 73 2E 0D  0A 3B 0D 0A 3B 20 20 20  ts clients can call us.;;   
0000D2C0  20 20 20 20 45 6E 74 72  79 0D 0A 3B 20 20 20 20  20 20 20 20 20 20 20 6E  6F 6E 65 2E 0D 0A 3B 0D      Entry;           none.;
0000D2E0  0A 3B 20 20 20 20 20 20  20 45 78 69 74 2D 53 75  63 63 65 73 73 0D 0A 3B  20 20 20 20 20 20 20 20  ;       Exit-Success;        
0000D300  20 20 20 61 78 20 3D 20  30 0D 0A 3B 20 20 20 20  20 20 20 20 20 20 20 53  65 72 76 65 72 20 69 6E     ax = 0;           Server in
0000D320  73 74 61 6C 6C 65 64 0D  0A 3B 20 20 20 20 20 20  20 20 20 20 20 70 6D 69  20 3D 20 70 6F 69 6E 74  stalled;           pmi = point
0000D340  65 72 20 74 6F 20 4D 52  43 49 20 73 65 72 76 65  72 20 4D 52 43 49 4E 46  4F 20 73 74 72 75 63 74  er to MRCI server MRCINFO struct
0000D360  75 72 65 0D 0A 3B 0D 0A  3B 20 20 20 20 20 20 20  45 78 69 74 2D 46 61 69  6C 75 72 65 0D 0A 3B 20  ure;;       Exit-Failure; 
0000D380  20 20 20 20 20 20 20 20  20 20 61 78 20 3D 20 31  2C 20 61 6E 6F 74 68 65  72 2C 20 62 65 74 74 65            ax = 1, another, bette
0000D3A0  72 20 73 65 72 76 65 72  20 61 6C 72 65 61 64 79  20 70 72 65 73 65 6E 74  0D 0A 3B 0D 0A 3B 20 20  r server already present;;  
0000D3C0  20 20 20 20 20 55 73 65  73 0D 0A 3B 20 20 20 20  20 20 20 20 20 20 20 61  78 2C 62 78 2C 73 69 2C       Uses;           ax,bx,si,
0000D3E0  64 73 2C 65 73 2C 66 6C  61 67 73 0D 0A 0D 0A 49  6E 69 74 4D 52 43 53 65  72 76 65 72 20 20 20 70  ds,es,flagsInitMRCServer   p
0000D400  72 6F 63 20 20 20 20 6E  65 61 72 0D 0A 20 20 20  20 61 73 73 75 6D 65 20  20 64 73 3A 6E 6F 74 68  roc    near    assume  ds:noth
0000D420  69 6E 67 2C 65 73 3A 6E  6F 74 68 69 6E 67 2C 73  73 3A 6E 6F 74 68 69 6E  67 0D 0A 0D 0A 20 20 20  ing,es:nothing,ss:nothing   
0000D440  20 20 20 20 20 63 61 6C  6C 20 20 20 20 4D 52 43  51 75 65 72 79 20 20 20  20 20 20 20 20 20 20 20       call    MRCQuery           
0000D460  20 20 20 20 20 3B 20 43  68 65 63 6B 20 66 6F 72  20 4D 52 43 49 20 73 65  72 76 65 72 20 70 72 65       ; Check for MRCI server pre
0000D480  73 65 6E 63 65 0D 0A 20  20 20 20 20 20 20 20 6F  72 20 20 20 20 20 20 61  78 2C 61 78 20 20 20 20  sence        or      ax,ax    
0000D4A0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3B  20 49 73 20 73 65 72 76  65 72 20 70 72 65 73 65                 ; Is server prese
0000D4C0  6E 74 3F 0D 0A 20 20 20  20 20 20 20 20 6A 7A 20  20 20 20 20 20 69 6D 73  32 30 20 20 20 20 20 20  nt?        jz      ims20      
0000D4E0  20 20 20 20 20 20 20 20  20 20 20 20 20 3B 20 20  20 4E 4F 2C 20 69 6E 73  74 61 6C 6C 20 6F 75 72               ;   NO, install our
0000D500  73 65 6C 76 65 73 0D 0A  0D 0A 3B 2A 20 20 45 78  69 73 74 69 6E 67 20 53  65 72 76 65 72 20 70 72  selves;*  Existing Server pr
0000D520  65 73 65 6E 74 0D 0A 3B  0D 0A 3B 20 20 20 65 73  3A 64 69 20 2D 3E 20 6F  6C 64 20 73 65 72 76 65  esent;;   es:di -> old serve
0000D540  72 27 73 20 4D 43 52 49  4E 46 4F 20 73 74 72 75  63 74 75 72 65 0D 0A 3B  0D 0A 3B 20 20 20 57 65  r's MCRINFO structure;;   We
0000D560  20 6E 65 65 64 20 74 6F  20 63 6F 70 79 20 6F 75  72 20 4D 52 43 49 4E 46  4F 20 73 74 72 75 63 74   need to copy our MRCINFO struct
0000D580  75 72 65 20 6F 76 65 72  20 74 68 65 20 6F 6C 64  20 73 65 72 76 65 72 27  73 20 4D 43 52 49 4E 46  ure over the old server's MCRINF
0000D5A0  4F 0D 0A 3B 20 20 20 73  74 72 75 63 74 75 72 65  2C 20 73 6F 20 74 68 61  74 20 63 6C 69 65 6E 74  O;   structure, so that client
0000D5C0  73 20 6F 66 20 74 68 65  20 70 72 65 76 69 6F 75  73 20 73 65 72 76 65 72  20 74 68 61 74 20 63 61  s of the previous server that ca
0000D5E0  6C 6C 20 74 68 65 0D 0A  3B 20 20 20 73 65 72 76  65 72 20 69 6E 64 69 72  65 63 74 6C 79 20 75 73  ll the;   server indirectly us
0000D600  69 6E 67 20 74 68 65 20  6F 6C 64 20 4D 52 43 49  4E 46 4F 20 73 74 72 75  63 74 75 72 65 20 77 69  ing the old MRCINFO structure wi
0000D620  6C 6C 20 63 61 6C 6C 20  75 73 2C 0D 0A 3B 20 20  20 69 6E 73 74 65 61 64  2E 0D 0A 3B 0D 0A 3B 20  ll call us,;   instead.;; 
0000D640  20 20 4E 4F 54 45 3A 20  57 65 20 61 72 65 20 67  75 61 72 61 6E 74 65 65  64 20 74 68 61 74 20 6E    NOTE: We are guaranteed that n
0000D660  6F 20 6F 6E 65 20 69 73  20 75 73 69 6E 67 20 74  68 65 20 6F 6C 64 20 73  65 72 76 65 72 20 72 69  o one is using the old server ri
0000D680  67 68 74 20 6E 6F 77 2C  0D 0A 3B 20 20 20 20 20  20 20 20 20 62 65 63 61  75 73 65 20 77 65 20 68  ght now,;         because we h
0000D6A0  61 76 65 20 74 68 65 20  43 50 55 2E 0D 0A 3B 0D  0A 3B 20 20 20 20 20 20  20 20 20 53 6F 2C 20 77  ave the CPU.;;         So, w
0000D6C0  65 20 64 69 73 61 62 6C  65 20 69 6E 74 65 72 72  75 70 74 73 20 77 68 69  6C 65 20 77 65 20 75 70  e disable interrupts while we up
0000D6E0  64 61 74 65 20 74 68 65  20 6F 6C 64 20 4D 52 43  49 4E 46 4F 20 73 74 72  75 63 74 75 72 65 2E 0D  date the old MRCINFO structure.
0000D700  0A 0D 0A 20 20 20 20 20  20 20 20 3B 3B 20 64 62  67 50 72 69 6E 74 20 27  45 78 69 73 74 69 6E 67          ;; dbgPrint 'Existing
0000D720  20 73 65 72 76 65 72 20  70 72 65 73 65 6E 74 27  0D 0A 0D 0A 20 20 20 20  20 20 20 20 63 61 6C 6C   server present'        call
0000D740  20 20 20 20 53 68 6F 75  6C 64 57 65 49 6E 73 74  61 6C 6C 0D 0A 20 20 20  20 20 20 20 20 6F 72 20      ShouldWeInstall        or 
0000D760  20 20 20 20 20 61 78 2C  61 78 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 3B 20 44       ax,ax                   ; D
0000D780  6F 20 69 6E 73 74 61 6C  6C 3F 0D 0A 20 20 20 20  20 20 20 20 6A 7A 20 20  20 20 20 20 69 6D 73 31  o install?        jz      ims1
0000D7A0  30 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 3B 20 20 20  59 45 53 2C 20 67 6F 20  0                   ;   YES, go 
0000D7C0  69 6E 73 74 61 6C 6C 0D  0A 0D 0A 20 20 20 20 20  20 20 20 72 65 74 20 20  20 20 20 20 20 20 20 20  install        ret          
0000D7E0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 3B 20 20 20 4E  4F 2C 20 72 65 74 75 72                     ;   NO, retur
0000D800  6E 20 22 64 69 64 20 6E  6F 74 20 69 6E 73 74 61  6C 6C 22 0D 0A 0D 0A 3B  2A 20 20 43 6F 70 79 20  n "did not install";*  Copy 
0000D820  6F 75 72 20 4D 52 43 49  4E 46 4F 20 74 6F 20 6F  6C 64 20 73 65 72 76 65  72 27 73 20 4D 52 43 49  our MRCINFO to old server's MRCI
0000D840  4E 46 4F 0D 0A 0D 0A 69  6D 73 31 30 3A 20 20 63  6C 69 20 20 20 20 20 20  20 20 20 20 20 20 20 20  NFOims10:  cli              
0000D860  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3B  20 50 72 6F 74 65 63 74  20 6F 6C 64 20 4D 52 43                 ; Protect old MRC
0000D880  49 4E 46 4F 20 66 72 6F  6D 20 62 65 69 6E 67 0D  0A 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  INFO from being               
0000D8A0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 3B 20 69 6E 20 61 6E                           ; in an
0000D8C0  20 69 6E 63 6F 6E 73 69  73 74 65 6E 74 20 73 74  61 74 65 2E 0D 0A 20 20  20 20 20 20 20 20 70 75   inconsistent state.        pu
0000D8E0  73 68 20 20 20 20 63 73  0D 0A 20 20 20 20 20 20  20 20 70 6F 70 20 20 20  20 20 64 73 0D 0A 20 20  sh    cs        pop     ds  
0000D900  20 20 61 73 73 75 6D 65  20 20 64 73 3A 63 6F 64  65 0D 0A 0D 0A 20 20 20  20 20 20 20 20 6D 6F 76    assume  ds:code        mov
0000D920  20 20 20 20 20 73 69 2C  4F 46 46 53 45 54 20 6D  69 20 20 20 20 20 20 20  20 20 20 20 20 3B 20 64       si,OFFSET mi            ; d
0000D940  73 3A 73 69 20 2D 3E 20  6F 75 72 20 4D 52 43 49  4E 46 4F 20 73 74 72 75  63 74 75 72 65 0D 0A 20  s:si -> our MRCINFO structure 
0000D960  20 20 20 20 20 20 20 6D  6F 76 20 20 20 20 20 63  78 2C 53 49 5A 45 20 6D  69 0D 0A 20 20 20 20 20         mov     cx,SIZE mi     
0000D980  20 20 20 63 6C 64 0D 0A  20 20 20 20 20 20 20 20  72 65 70 20 20 20 20 20  6D 6F 76 73 62 20 20 20     cld        rep     movsb   
0000D9A0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  3B 20 43 6F 70 79 20 6F  75 72 20 4D 52 43 49 4E                  ; Copy our MRCIN
0000D9C0  46 4F 20 74 6F 20 6F 6C  64 20 6F 6E 65 0D 0A 0D  0A 3B 2A 20 20 46 61 6C  6C 20 74 68 72 6F 75 67  FO to old one;*  Fall throug
0000D9E0  68 20 74 6F 20 68 6F 6F  6B 20 69 6E 74 65 72 72  75 70 74 20 63 68 61 69  6E 2E 0D 0A 3B 0D 0A 3B  h to hook interrupt chain.;;
0000DA00  20 20 20 4E 4F 54 45 3A  20 49 6E 74 65 72 72 75  70 74 73 20 72 65 6D 61  69 6E 20 6F 66 66 2C 20     NOTE: Interrupts remain off, 
0000DA20  75 6E 74 69 6C 20 77 65  20 68 61 76 65 20 68 6F  6F 6B 65 64 20 74 68 65  20 69 6E 74 65 72 72 75  until we have hooked the interru
0000DA40  70 74 20 63 68 61 69 6E  2E 0D 0A 3B 20 20 20 20  20 20 20 20 20 57 65 20  68 61 76 65 20 74 6F 20  pt chain.;         We have to 
0000DA60  6C 65 61 76 65 20 74 68  65 20 6F 6C 64 20 73 65  72 76 65 72 20 69 6E 20  74 68 65 20 63 68 61 69  leave the old server in the chai
0000DA80  6E 2C 20 73 6F 20 74 68  61 74 20 69 74 20 63 61  6E 0D 0A 3B 20 20 20 20  20 20 20 20 20 63 68 61  n, so that it can;         cha
0000DAA0  69 6E 20 6F 6E 20 74 6F  20 70 72 65 76 69 6F 75  73 20 6E 6F 6E 2D 4D 52  43 49 20 68 6F 6F 6B 65  in on to previous non-MRCI hooke
0000DAC0  72 73 2E 0D 0A 0D 0A 3B  2A 20 20 48 6F 6F 6B 20  69 6E 74 6F 20 69 6E 74  4D 52 43 49 20 63 68 61  rs.;*  Hook into intMRCI cha
0000DAE0  69 6E 0D 0A 0D 0A 69 6D  73 32 30 3A 20 20 78 6F  72 20 20 20 20 20 61 78  2C 61 78 20 20 20 20 20  inims20:  xor     ax,ax     
0000DB00  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3B 20  53 65 67 6D 65 6E 74 20  6F 66 20 69 6E 74 65 72                ; Segment of inter
0000DB20  72 75 70 74 20 76 65 63  74 6F 72 20 74 61 62 6C  65 0D 0A 20 20 20 20 20  20 20 20 6D 6F 76 20 20  rupt vector table        mov  
0000DB40  20 20 20 64 73 2C 61 78  0D 0A 20 20 20 20 61 73  73 75 6D 65 20 20 64 73  3A 6E 6F 74 68 69 6E 67     ds,ax    assume  ds:nothing
0000DB60  0D 0A 20 20 20 20 20 20  20 20 6D 6F 76 20 20 20  20 20 73 69 2C 69 6E 74  4D 52 43 49 2A 34 20 20          mov     si,intMRCI*4  
0000DB80  20 20 20 20 20 20 20 20  20 20 3B 20 64 73 3A 73  69 20 2D 3E 20 69 6E 74  4D 52 43 49 20 76 65 63            ; ds:si -> intMRCI vec
0000DBA0  74 6F 72 0D 0A 0D 0A 20  20 20 20 20 20 20 20 63  6C 69 20 20 20 20 20 20  20 20 20 20 20 20 20 20  tor        cli              
0000DBC0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3B  20 45 64 69 74 69 6E 67  20 74 68 65 20 69 6E 74                 ; Editing the int
0000DBE0  65 72 72 75 70 74 20 76  65 63 74 6F 72 20 74 61  62 6C 65 0D 0A 0D 0A 20  20 20 20 20 20 20 20 6D  errupt vector table        m
0000DC00  6F 76 20 20 20 20 20 61  78 2C 4F 46 46 53 45 54  20 53 65 72 76 65 72 0D  0A 20 20 20 20 20 20 20  ov     ax,OFFSET Server       
0000DC20  20 78 63 68 67 20 20 20  20 64 73 3A 5B 73 69 5D  2E 6F 66 66 73 74 2C 61  78 20 20 20 20 20 20 20   xchg    ds:[si].offst,ax       
0000DC40  20 3B 20 53 65 74 20 6F  66 66 73 65 74 2C 20 61  78 20 3D 20 6F 6C 64 20  6F 66 66 73 65 74 0D 0A   ; Set offset, ax = old offset
0000DC60  20 20 20 20 20 20 20 20  6D 6F 76 20 20 20 20 20  62 78 2C 63 73 0D 0A 20  20 20 20 20 20 20 20 78          mov     bx,cs        x
0000DC80  63 68 67 20 20 20 20 64  73 3A 5B 73 69 5D 2E 73  65 67 6D 74 2C 62 78 20  20 20 20 20 20 20 20 3B  chg    ds:[si].segmt,bx        ;
0000DCA0  20 53 74 6F 72 65 20 73  65 67 6D 65 6E 74 2C 20  62 78 20 3D 20 6F 6C 64  20 73 65 67 6D 65 6E 74   Store segment, bx = old segment
0000DCC0  0D 0A 0D 0A 20 20 20 20  20 20 20 20 6F 72 20 20  20 20 20 20 61 78 2C 61  78 20 20 20 20 20 20 20          or      ax,ax       
0000DCE0  20 20 20 20 20 20 20 20  20 20 20 20 3B 20 4F 6C  64 20 70 6F 69 6E 74 65  72 20 76 61 6C 69 64 3F              ; Old pointer valid?
0000DD00  0D 0A 20 20 20 20 20 20  20 20 6A 6E 7A 20 20 20  20 20 69 6D 73 33 30 20  20 20 20 20 20 20 20 20          jnz     ims30         
0000DD20  20 20 20 20 20 20 20 20  20 20 3B 20 20 20 59 45  53 2C 20 67 6F 20 73 61  76 65 0D 0A 0D 0A 20 20            ;   YES, go save  
0000DD40  20 20 20 20 20 20 6D 6F  76 20 20 20 20 20 61 78  2C 4F 46 46 53 45 54 20  45 6D 70 74 79 49 52 45        mov     ax,OFFSET EmptyIRE
0000DD60  54 20 20 20 20 20 3B 20  20 20 4E 4F 2C 20 70 6F  69 6E 74 20 61 74 20 6F  6E 20 6F 66 20 6F 75 72  T     ;   NO, point at on of our
0000DD80  20 49 52 45 54 73 0D 0A  20 20 20 20 20 20 20 20  6D 6F 76 20 20 20 20 20  62 78 2C 63 78 0D 0A 0D   IRETs        mov     bx,cx
0000DDA0  0A 69 6D 73 33 30 3A 20  20 6D 6F 76 20 20 20 20  20 63 73 3A 66 70 4F 6C  64 69 6E 74 4D 52 43 49  ims30:  mov     cs:fpOldintMRCI
0000DDC0  2E 6F 66 66 73 74 2C 61  78 20 3B 20 53 61 76 65  20 6F 6C 64 20 6F 66 66  73 65 74 2C 20 66 6F 72  .offst,ax ; Save old offset, for
0000DDE0  20 63 68 61 69 6E 69 6E  67 0D 0A 20 20 20 20 20  20 20 20 6D 6F 76 20 20  20 20 20 63 73 3A 66 70   chaining        mov     cs:fp
0000DE00  4F 6C 64 69 6E 74 4D 52  43 49 2E 73 65 67 6D 74  2C 62 78 20 3B 20 53 61  76 65 20 6F 6C 64 20 73  OldintMRCI.segmt,bx ; Save old s
0000DE20  65 67 6D 65 6E 74 2C 20  66 6F 72 20 63 68 61 69  6E 69 6E 67 0D 0A 0D 0A  20 20 20 20 20 20 20 20  egment, for chaining        
0000DE40  73 74 69 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  sti                             
0000DE60  3B 20 44 6F 6E 65 20 65  64 69 74 69 6E 67 20 74  68 65 20 69 6E 74 76 65  63 20 74 61 62 6C 65 0D  ; Done editing the intvec table
0000DE80  0A 0D 0A 20 20 20 20 20  20 20 20 72 65 74 0D 0A  49 6E 69 74 4D 52 43 53  65 72 76 65 72 20 20 20          retInitMRCServer   
0000DEA0  65 6E 64 70 0D 0A 0D 0A  0D 0A 3B 2A 2A 2A 20 20  20 20 53 68 6F 75 6C 64  57 65 49 6E 73 74 61 6C  endp;***    ShouldWeInstal
0000DEC0  6C 20 2D 20 63 68 65 63  6B 20 69 66 20 6F 75 72  20 73 65 72 76 65 72 20  73 68 6F 75 6C 64 20 73  l - check if our server should s
0000DEE0  75 70 65 72 63 65 64 65  20 61 6E 6F 74 68 65 72  20 73 65 72 76 65 72 0D  0A 3B 0D 0A 3B 20 20 20  upercede another server;;   
0000DF00  20 20 20 20 57 65 20 63  61 6E 20 69 6E 73 74 61  6C 6C 20 6F 6E 6C 79 20  69 66 20 61 6C 6C 20 6F      We can install only if all o
0000DF20  66 20 74 68 65 20 66 6F  6C 6C 6F 77 69 6E 67 20  61 72 65 20 74 72 75 65  3A 0D 0A 3B 20 20 20 20  f the following are true:;    
0000DF40  20 20 20 20 20 20 20 31  29 20 4F 75 72 20 63 61  70 61 62 69 6C 69 74 69  65 73 20 61 72 65 20 61         1) Our capabilities are a
0000DF60  74 20 6C 65 61 73 74 20  61 73 20 67 6F 6F 64 20  61 73 20 70 72 65 73 65  6E 74 20 73 65 72 76 65  t least as good as present serve
0000DF80  72 0D 0A 3B 20 20 20 20  20 20 20 20 20 20 20 32  29 20 4F 75 72 20 4D 52  43 49 20 76 65 72 73 69  r;           2) Our MRCI versi
0000DFA0  6F 6E 20 69 73 20 61 74  20 6C 65 61 73 74 20 61  73 20 68 69 67 68 0D 0A  3B 20 20 20 20 20 20 20  on is at least as high;       
0000DFC0  20 20 20 20 33 29 20 49  66 20 74 68 65 20 76 65  6E 64 6F 72 20 69 73 20  74 68 65 20 73 61 6D 65      3) If the vendor is the same
0000DFE0  2C 20 6F 75 72 20 76 65  6E 64 6F 72 20 73 65 72  76 65 72 20 76 65 72 73  69 6F 6E 20 6D 75 73 74  , our vendor server version must
0000E000  0D 0A 3B 20 20 20 20 20  20 20 20 20 20 20 20 20  20 62 65 20 67 72 65 61  74 65 72 20 74 68 61 6E  ;              be greater than
0000E020  20 74 68 65 20 70 72 65  73 65 6E 74 20 73 65 72  76 65 72 2E 20 20 49 66  20 74 68 65 20 76 65 6E   the present server.  If the ven
0000E040  64 6F 72 20 64 6F 65 73  20 6E 6F 74 0D 0A 3B 20  20 20 20 20 20 20 20 20  20 20 20 20 20 6D 61 74  dor does not;              mat
0000E060  63 68 2C 20 74 68 65 6E  20 77 65 20 63 61 6E 6E  6F 74 20 63 6F 6D 70 61  72 65 20 76 65 6E 64 6F  ch, then we cannot compare vendo
0000E080  72 20 76 65 72 73 69 6F  6E 73 2C 20 73 6F 20 77  65 20 61 73 73 75 6D 65  0D 0A 3B 20 20 20 20 20  r versions, so we assume;     
0000E0A0  20 20 20 20 20 20 20 20  20 77 65 20 73 68 6F 75  6C 64 20 69 6E 73 74 61  6C 6C 2E 0D 0A 3B 0D 0A           we should install.;
0000E0C0  3B 20 20 20 20 20 20 20  45 6E 74 72 79 0D 0A 3B  20 20 20 20 20 20 20 20  20 20 20 65 73 3A 64 69  ;       Entry;           es:di
0000E0E0  20 2D 3E 20 4D 52 43 49  4E 46 4F 20 73 74 72 75  63 74 75 72 65 20 6F 66  20 63 75 72 72 65 6E 74   -> MRCINFO structure of current
0000E100  20 69 6E 73 74 61 6C 6C  65 64 20 73 65 72 76 65  72 0D 0A 3B 0D 0A 3B 20  20 20 20 20 20 20 45 78   installed server;;       Ex
0000E120  69 74 2D 53 75 63 63 65  73 73 0D 0A 3B 20 20 20  20 20 20 20 20 20 20 20  61 78 20 3D 20 30 2C 20  it-Success;           ax = 0, 
0000E140  77 65 20 73 68 6F 75 6C  64 20 69 6E 73 74 61 6C  6C 0D 0A 3B 0D 0A 3B 20  20 20 20 20 20 20 45 78  we should install;;       Ex
0000E160  69 74 2D 46 61 69 6C 75  72 65 0D 0A 3B 20 20 20  20 20 20 20 20 20 20 20  61 78 20 3D 20 31 2C 20  it-Failure;           ax = 1, 
0000E180  77 65 20 73 68 6F 75 6C  64 20 6E 6F 74 20 69 6E  73 74 61 6C 6C 0D 0A 3B  20 20 20 20 20 20 20 20  we should not install;        
0000E1A0  20 20 20 45 78 69 73 74  69 6E 67 20 64 72 69 76  65 72 20 69 73 20 6D 6F  72 65 20 63 61 70 61 62     Existing driver is more capab
0000E1C0  6C 65 20 74 68 61 6E 20  77 65 20 61 72 65 2E 0D  0A 3B 0D 0A 3B 20 20 20  20 20 20 20 55 73 65 73  le than we are.;;       Uses
0000E1E0  0D 0A 3B 20 20 20 20 20  20 20 20 20 20 20 61 78  2C 62 78 2C 66 6C 61 67  73 0D 0A 0D 0A 53 68 6F  ;           ax,bx,flagsSho
0000E200  75 6C 64 57 65 49 6E 73  74 61 6C 6C 20 70 72 6F  63 20 20 20 20 6E 65 61  72 0D 0A 3B 2A 20 20 4F  uldWeInstall proc    near;*  O
0000E220  75 72 20 63 61 70 61 62  69 6C 69 74 69 65 73 20  6D 75 73 74 20 62 65 20  61 74 20 6C 65 61 73 74  ur capabilities must be at least
0000E240  20 61 73 20 67 6F 6F 64  20 61 73 20 70 72 65 73  65 6E 74 20 73 65 72 76  65 72 0D 0A 0D 0A 20 20   as good as present server  
0000E260  20 20 20 20 20 20 6D 6F  76 20 20 20 20 20 61 78  2C 65 73 3A 5B 64 69 5D  2E 6D 69 5F 66 6C 43 61        mov     ax,es:[di].mi_flCa
0000E280  70 61 62 69 6C 69 74 79  20 3B 20 73 65 72 76 65  72 20 63 61 70 61 62 69  6C 69 74 69 65 73 0D 0A  pability ; server capabilities
0000E2A0  20 20 20 20 20 20 20 20  61 6E 64 20 20 20 20 20  61 78 2C 6E 6F 74 20 6D  69 63 61 70 4D 69 6E 65          and     ax,not micapMine
0000E2C0  20 20 20 20 20 20 20 20  3B 20 61 78 20 3D 20 73  65 72 76 65 72 20 63 61  70 73 20 74 68 61 74 20          ; ax = server caps that 
0000E2E0  49 20 64 6F 20 6E 6F 74  20 68 61 76 65 0D 0A 20  20 20 20 20 20 20 20 6F  72 20 20 20 20 20 20 61  I do not have        or      a
0000E300  78 2C 61 78 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3B  20 44 6F 65 73 20 74 68  x,ax                   ; Does th
0000E320  65 20 73 65 72 76 65 72  20 68 61 76 65 20 63 61  70 73 20 49 20 64 6F 20  6E 6F 74 3F 0D 0A 20 20  e server have caps I do not?  
0000E340  20 20 20 20 20 20 6A 6E  7A 20 20 20 20 20 73 77  69 65 20 20 20 20 20 20  20 20 20 20 20 20 20 20        jnz     swie              
0000E360  20 20 20 20 20 20 3B 20  20 20 59 45 53 2C 20 64  6F 20 4E 4F 54 20 69 6E  73 74 61 6C 6C 0D 0A 0D        ;   YES, do NOT install
0000E380  0A 3B 2A 20 20 57 65 20  61 72 65 20 61 74 20 6C  65 61 73 74 20 61 73 20  67 6F 6F 64 20 6F 6E 20  ;*  We are at least as good on 
0000E3A0  63 61 70 61 62 69 6C 69  74 69 65 73 2C 20 73 6F  2E 2E 2E 0D 0A 3B 2A 20  20 43 6F 6D 70 61 72 65  capabilities, so...;*  Compare
0000E3C0  20 4D 52 43 49 20 76 65  72 73 69 6F 6E 73 0D 0A  0D 0A 20 20 20 20 20 20  20 20 6D 6F 76 20 20 20   MRCI versions        mov   
0000E3E0  20 20 61 78 2C 65 73 3A  5B 64 69 5D 2E 6D 69 5F  77 4D 52 43 49 56 65 72  73 69 6F 6E 20 3B 20 61    ax,es:[di].mi_wMRCIVersion ; a
0000E400  78 20 3D 20 70 72 65 73  65 6E 74 20 73 65 72 76  65 72 20 4D 52 43 49 20  76 65 72 73 69 6F 6E 0D  x = present server MRCI version
0000E420  0A 20 20 20 20 20 20 20  20 63 6D 70 20 20 20 20  20 61 78 2C 4D 52 43 49  56 45 52 53 49 4F 4E 20          cmp     ax,MRCIVERSION 
0000E440  20 20 20 20 20 20 20 20  20 3B 20 41 72 65 20 77  65 20 61 74 20 6C 65 61  73 74 20 61 73 20 67 6F           ; Are we at least as go
0000E460  6F 64 20 61 73 20 73 65  72 76 65 72 3F 0D 0A 20  20 20 20 20 20 20 20 6A  61 20 20 20 20 20 20 73  od as server?        ja      s
0000E480  77 69 65 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3B  20 20 20 4E 4F 2C 20 64  wie                    ;   NO, d
0000E4A0  6F 20 6E 6F 74 20 69 6E  73 74 61 6C 6C 0D 0A 20  20 20 20 20 20 20 20 6A  62 20 20 20 20 20 20 73  o not install        jb      s
0000E4C0  77 69 31 30 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3B  20 57 65 20 61 72 65 20  wi10                   ; We are 
0000E4E0  62 65 74 74 65 72 20 74  68 61 6E 20 73 65 72 76  65 72 2C 20 69 6E 73 74  61 6C 6C 0D 0A 0D 0A 3B  better than server, install;
0000E500  2A 20 20 57 65 20 73 75  70 70 6F 72 74 20 74 68  65 20 73 61 6D 65 20 4D  52 43 49 20 76 65 72 73  *  We support the same MRCI vers
0000E520  69 6F 6E 2C 20 73 6F 2E  2E 2E 0D 0A 3B 2A 20 20  53 65 65 20 69 66 20 77  65 20 73 75 70 65 72 63  ion, so...;*  See if we superc
0000E540  65 64 65 20 74 68 65 20  6F 6C 64 20 3C 76 65 6E  64 6F 72 2C 76 65 6E 64  6F 72 20 76 65 72 73 69  ede the old <vendor,vendor versi
0000E560  6F 6E 3E 0D 0A 0D 0A 20  20 20 20 20 20 20 20 6D  6F 76 20 20 20 20 20 61  78 2C 65 73 3A 5B 64 69  on>        mov     ax,es:[di
0000E580  5D 2E 6D 69 5F 6C 56 65  6E 64 6F 72 2E 6C 6F 77  6F 72 64 0D 0A 20 20 20  20 20 20 20 20 63 6D 70  ].mi_lVendor.loword        cmp
0000E5A0  20 20 20 20 20 61 78 2C  4D 59 56 45 4E 44 4F 52  6C 6F 20 20 20 20 20 20  20 20 20 20 20 3B 20 4D       ax,MYVENDORlo           ; M
0000E5C0  61 74 63 68 20 6C 6F 77  20 77 6F 72 64 3F 0D 0A  20 20 20 20 20 20 20 20  6A 6E 65 20 20 20 20 20  atch low word?        jne     
0000E5E0  73 77 69 31 30 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  3B 20 20 20 4E 4F 2C 20  swi10                   ;   NO, 
0000E600  44 4F 20 69 6E 73 74 61  6C 6C 0D 0A 0D 0A 20 20  20 20 20 20 20 20 6D 6F  76 20 20 20 20 20 61 78  DO install        mov     ax
0000E620  2C 65 73 3A 5B 64 69 5D  2E 6D 69 5F 6C 56 65 6E  64 6F 72 2E 68 69 77 6F  72 64 0D 0A 20 20 20 20  ,es:[di].mi_lVendor.hiword    
0000E640  20 20 20 20 63 6D 70 20  20 20 20 20 61 78 2C 4D  59 56 45 4E 44 4F 52 68  69 20 20 20 20 20 20 20      cmp     ax,MYVENDORhi       
0000E660  20 20 20 20 3B 20 4D 61  74 63 68 20 68 69 67 68  20 77 6F 72 64 3F 0D 0A  20 20 20 20 20 20 20 20      ; Match high word?        
0000E680  6A 6E 65 20 20 20 20 20  73 77 69 31 30 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  jne     swi10                   
0000E6A0  3B 20 20 20 4E 4F 2C 20  44 4F 20 69 6E 73 74 61  6C 6C 0D 0A 0D 0A 20 20  20 20 20 20 20 20 6D 6F  ;   NO, DO install        mo
0000E6C0  76 20 20 20 20 20 61 78  2C 65 73 3A 5B 64 69 5D  2E 6D 69 5F 77 56 65 6E  64 6F 72 56 65 72 73 69  v     ax,es:[di].mi_wVendorVersi
0000E6E0  6F 6E 0D 0A 20 20 20 20  20 20 20 20 63 6D 70 20  20 20 20 20 61 78 2C 4D  59 56 45 52 53 49 4F 4E  on        cmp     ax,MYVERSION
0000E700  20 20 20 20 20 20 20 20  20 20 20 20 3B 20 41 6D  20 49 20 61 20 6E 65 77  65 72 20 64 72 69 76 65              ; Am I a newer drive
0000E720  72 20 76 65 72 73 69 6F  6E 3F 0D 0A 20 20 20 20  20 20 20 20 6A 61 65 20  20 20 20 20 73 77 69 65  r version?        jae     swie
0000E740  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 3B 20 20 20  4E 4F 2C 20 64 6F 20 4E                      ;   NO, do N
0000E760  4F 54 20 69 6E 73 74 61  6C 6C 0D 0A 0D 0A 3B 2A  20 20 54 65 73 74 73 20  70 61 73 73 20 2D 2D 20  OT install;*  Tests pass -- 
0000E780  77 65 20 73 68 6F 75 6C  64 20 69 6E 73 74 61 6C  6C 0D 0A 0D 0A 73 77 69  31 30 3A 20 20 78 6F 72  we should installswi10:  xor
0000E7A0  20 20 20 20 20 61 78 2C  61 78 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 20 20 20 3B 20 49       ax,ax                   ; I
0000E7C0  6E 64 69 63 61 74 65 20  44 4F 20 69 6E 73 74 61  6C 6C 0D 0A 20 20 20 20  20 20 20 20 72 65 74 0D  ndicate DO install        ret
0000E7E0  0A 0D 0A 73 77 69 65 3A  20 20 20 6D 6F 76 20 20  20 20 20 61 78 2C 31 20  20 20 20 20 20 20 20 20  swie:   mov     ax,1         
0000E800  20 20 20 20 20 20 20 20  20 20 20 3B 20 49 6E 64  69 63 61 74 65 20 64 6F  20 4E 4F 54 20 69 6E 73             ; Indicate do NOT ins
0000E820  74 61 6C 6C 0D 0A 20 20  20 20 20 20 20 20 72 65  74 0D 0A 0D 0A 53 68 6F  75 6C 64 57 65 49 6E 73  tall        retShouldWeIns
0000E840  74 61 6C 6C 20 65 6E 64  70 0D 0A 0D 0A 0D 0A 3B  2A 2A 2A 20 20 20 20 47  65 74 49 6E 44 4F 53 46  tall endp;***    GetInDOSF
0000E860  6C 61 67 50 6F 69 6E 74  65 72 20 2D 20 47 65 74  20 61 64 64 72 65 73 73  20 6F 66 20 49 6E 44 4F  lagPointer - Get address of InDO
0000E880  53 20 66 6C 61 67 0D 0A  3B 0D 0A 3B 20 20 20 20  20 20 20 45 6E 74 72 79  0D 0A 3B 20 20 20 20 20  S flag;;       Entry;     
0000E8A0  20 20 20 20 20 20 6E 6F  6E 65 0D 0A 3B 0D 0A 3B  20 20 20 20 20 20 20 45  78 69 74 0D 0A 3B 20 20        none;;       Exit;  
0000E8C0  20 20 20 20 20 20 20 20  20 66 70 49 6E 44 4F 53  20 3D 20 70 6F 69 6E 74  65 72 20 74 6F 20 44 4F           fpInDOS = pointer to DO
0000E8E0  53 20 49 6E 44 4F 53 20  66 6C 61 67 0D 0A 3B 0D  0A 3B 20 20 20 20 20 20  20 55 73 65 73 0D 0A 3B  S InDOS flag;;       Uses;
0000E900  20 20 20 20 20 20 20 20  20 20 20 61 78 2C 66 6C  61 67 73 0D 0A 0D 0A 47  65 74 49 6E 44 4F 53 46             ax,flagsGetInDOSF
0000E920  6C 61 67 50 6F 69 6E 74  65 72 20 70 72 6F 63 20  20 20 20 6E 65 61 72 0D  0A 20 20 20 20 20 20 20  lagPointer proc    near       
0000E940  20 53 61 76 65 52 65 67  20 3C 62 78 2C 65 73 3E  0D 0A 20 20 20 20 20 20  20 20 6D 6F 76 20 20 20   SaveReg <bx,es>        mov   
0000E960  20 20 61 68 2C 33 34 68  0D 0A 20 20 20 20 20 20  20 20 69 6E 74 20 20 20  20 20 32 31 68 20 20 20    ah,34h        int     21h   
0000E980  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  20 20 3B 20 47 65 74 20  49 6E 20 44 4F 53 20 66                    ; Get In DOS f
0000E9A0  6C 61 67 0D 0A 0D 0A 20  20 20 20 20 20 20 20 6D  6F 76 20 20 20 20 20 63  73 3A 66 70 49 6E 44 4F  lag        mov     cs:fpInDO
0000E9C0  53 2E 6F 66 66 73 74 2C  62 78 0D 0A 20 20 20 20  20 20 20 20 6D 6F 76 20  20 20 20 20 63 73 3A 66  S.offst,bx        mov     cs:f
0000E9E0  70 49 6E 44 4F 53 2E 73  65 67 6D 74 2C 65 73 0D  0A 20 20 20 20 20 20 20  20 52 65 73 74 6F 72 65  pInDOS.segmt,es        Restore
0000EA00  52 65 67 20 3C 65 73 2C  62 78 3E 0D 0A 20 20 20  20 20 20 20 20 72 65 74  0D 0A 0D 0A 47 65 74 49  Reg <es,bx>        retGetI
0000EA20  6E 44 4F 53 46 6C 61 67  50 6F 69 6E 74 65 72 20  65 6E 64 70 0D 0A 0D 0A  63 6F 64 65 20 20 20 20  nDOSFlagPointer endpcode    
0000EA40  65 6E 64 73 0D 0A 0D 0A  20 20 20 20 20 20 20 20  65 6E 64 0D 0A 15 0D 0A  0C 52 65 76 69 73 69 6F  ends        end§Revisio
0000EA60  6E 20 48 69 73 74 6F 72  79 0D 0A 31 32 2D 4D 61  72 2D 31 39 39 33 0D 07  31 2E 30 30 2E 30 37 0D  n History12-Mar-19931.00.07
0000EA80  07 55 70 64 61 74 65 20  74 6F 20 72 65 66 6C 65  63 74 20 4D 53 2D 44 4F  53 20 36 20 66 69 6E 61  Update to reflect MS-DOS 6 fina
0000EAA0  6C 20 70 72 6F 64 75 63  74 0D 07 0D 07 32 38 2D  44 65 63 2D 31 39 39 32  0D 07 31 2E 30 30 2E 30  l product28-Dec-19921.00.0
0000EAC0  36 0D 07 49 6E 63 6F 72  70 6F 72 61 74 65 20 63  6F 6D 6D 65 6E 74 73 20  66 72 6F 6D 20 6E 61 6E  6Incorporate comments from nan
0000EAE0  63 79 6D 63 2C 20 72 69  63 68 66 0D 07 0D 07 31  32 2D 4F 63 74 2D 31 39  39 32 0D 07 31 2E 30 30  cymc, richf12-Oct-19921.00
0000EB00  2E 30 35 0D 07 55 70 64  61 74 65 20 66 6F 72 20  65 78 74 65 72 6E 61 6C  20 72 65 6C 65 61 73 65  .05Update for external release
0000EB20  0D 07 0D 07 31 30 2D 41  75 67 2D 31 39 39 32 0D  07 31 2E 30 30 2E 30 34  0D 07 63 62 44 73 74 20  10-Aug-19921.00.04cbDst 
0000EB40  6D 75 73 74 20 62 65 20  65 78 61 63 74 20 73 69  7A 65 20 66 6F 72 20 44  65 63 6F 6D 70 72 65 73  must be exact size for Decompres
0000EB60  73 0D 07 0D 07 30 34 2D  41 75 67 2D 31 39 39 32  0D 07 31 2E 30 30 2E 30  33 0D 07 42 75 67 20 66  s04-Aug-19921.00.03Bug f
0000EB80  69 78 65 73 20 74 6F 20  45 6E 74 65 72 43 72 69  74 69 63 61 6C 53 65 63  74 69 6F 6E 2C 20 69 6D  ixes to EnterCriticalSection, im
0000EBA0  70 6C 65 6D 65 6E 74 65  64 20 47 65 74 49 6E 44  4F 53 46 6C 61 67 0D 07  0D 07 31 39 2D 4A 75 6C  plemented GetInDOSFlag19-Jul
0000EBC0  2D 31 39 39 32 0D 07 31  2E 30 30 2E 30 32 0D 07  55 70 64 61 74 65 64 20  77 69 74 68 20 72 65 61  -19921.00.02Updated with rea
0000EBE0  6C 20 63 6F 64 65 0D 07  0D 07 31 37 2D 4A 75 6C  2D 31 39 39 32 0D 07 31  2E 30 30 2E 30 31 0D 07  l code17-Jul-19921.00.01
0000EC00  49 6E 69 74 69 61 6C 20  76 65 72 73 69 6F 6E 0D  07 0D 07 0D 0A 4D 69 63  72 6F 73 6F 66 74 20 52  Initial versionMicrosoft R
0000EC20  65 61 6C 2D 74 69 6D 65  20 43 6F 6D 70 72 65 73  73 69 6F 6E 20 49 6E 74  65 72 66 61 63 65 20 2D  eal-time Compression Interface -
0000EC40  20 56 65 72 73 69 6F 6E  20 31 2E 30 30 2E 30 38  20 2D 20 41 70 72 69 6C  20 32 2C 20 31 39 39 33   Version 1.00.08 - April 2, 1993
0000EC60  0D 0A 0D 0A 70 72 69 6E  74 65 64 20 13 44 41 54  45 14 34 2F 39 2F 39 33  15 20 13 54 49 4D 45 14  printed DATE4/9/93§ TIME
0000EC80  31 32 3A 32 35 20 50 4D  15 09 09 50 61 67 65 20  13 50 41 47 45 14 33 15  0D 0A 0D 0A 0D 0A 0D 0A  12:25 PM§Page PAGE3§
0000ECA0  0A 76 01 80 0A 8D A0 05  8E A0 05 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  vÇìáÄá.....................
0000ECC0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
0000ECE0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
0000ED00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
0000ED20  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
0000ED40  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
0000ED60  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
0000ED80  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
0000EDA0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
0000EDC0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
0000EDE0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
0000EE00  80 01 00 00 90 01 00 00  C9 01 00 00 EA 01 00 00  F6 01 00 00 00 02 00 00  01 02 00 00 07 02 00 00  Ç..É....Ω..÷.........
0000EE20  08 02 00 00 F8 02 00 00  F9 02 00 00 25 03 00 00  49 03 00 00 4A 03 00 00  4B 03 00 00 56 03 00 00  ..°....%..I..J..K..V..
0000EE40  57 03 00 00 88 03 00 00  B3 03 00 00 E1 03 00 00  EC 03 00 00 14 04 00 00  1F 04 00 00 32 04 00 00  W..ê....ß........2..
0000EE60  58 04 00 00 CC 05 00 00  E2 06 00 00 08 07 00 00  10 07 00 00 3A 07 00 00  3F 07 00 00 78 08 00 00  X....Γ......:..?..x..
0000EE80  79 08 00 00 98 08 00 00  99 08 00 00 CE 08 00 00  CF 08 00 00 EE 08 00 00  EF 08 00 00 2F 09 00 00  y..ÿ..Ö......ε..../..
0000EEA0  30 09 00 00 4F 09 00 00  50 09 00 00 A3 09 00 00  A5 09 00 00 41 0A 00 00  43 0A 00 00 13 0B 00 00  0..O..P..ú..Ñ..A..C....
0000EEC0  14 0B 00 00 33 0B 00 00  34 0B 00 00 35 0B 00 00  40 0B 00 00 FF 0B 00 00  00 0C 00 00 1F 0C 00 00  ..3..4..5..@.. .......
0000EEE0  20 0C 00 00 21 0C 00 00  39 0C 00 00 14 0D 00 00  15 0D 00 00 34 0D 00 00  35 0D 00 00 36 0D 00 00   ..!..9....§..4..5..6..
0000EF00  48 0D 00 00 E4 0D 00 00  E5 0D 00 00 F0 0D 00 00  F1 0D 00 00 2E 0E 00 00  2F 0E 00 00 4E 0E 00 00  H..Σ..σ....±...../..N..
0000EF20  4F 0E 00 00 59 0E 00 00  F6 0E 00 00 F7 0E 00 00  16 0F 00 00 17 0F 00 00  34 0F 00 00 47 10 00 00  O..Y..÷........4..G..
0000EF40  48 10 00 00 67 10 00 00  68 10 00 00 7B 10 00 00  CE 11 00 00 CF 11 00 00  DA 11 00 00 FB F7 FB 00  H..g..h..{.........
0000EF60  F6 F2 EE F2 00 EC 00 E8  00 EC 00 EC 00 E7 00 E7  00 E7 00 E7 00 E3 00 E7  00 E7 00 EC 00 EC 00 EC  ÷ε..Φ...τ.τ.τ.τ.π.τ.τ...
0000EF80  00 EC 00 EC 00 EC 00 E3  00 E3 00 DF E3 DF E3 DB  E3 DF E3 DF E3 DB E3 DF  E3 DF E3 DB E3 EC 00 EC  ....π.π.πππππππππ.
0000EFA0  00 DF E3 DF DB E3 EC 00  EC E7 00 DF E3 DF DB E3  EC 00 00 00 00 00 07 02  00 06 00 00 00 14 07 00  .ππ.τ.ππ..........
0000EFC0  02 06 00 00 00 14 07 00  00 06 00 00 00 14 01 02  07 03 00 04 00 00 00 18  02 00 02 00 07 00 00 04  ................
0000EFE0  00 00 00 14 07 00 02 04  00 00 00 14 01 01 07 01  00 04 00 00 00 20 07 01  00 04 00 00 00 1C 00 56  ........... .....V
0000F000  DA 11 00 00 DB 11 00 00  34 12 00 00 35 12 00 00  54 12 00 00 55 12 00 00  68 12 00 00 8C 12 00 00  ....4..5..T..U..h..î..
0000F020  8D 12 00 00 AC 12 00 00  AD 12 00 00 DC 12 00 00  32 16 00 00 33 16 00 00  52 16 00 00 53 16 00 00  ì..¼..¡....2..3..R..S..
0000F040  66 16 00 00 8B 16 00 00  8C 16 00 00 AB 16 00 00  AC 16 00 00 DB 16 00 00  25 17 00 00 26 17 00 00  f..ï..î..½..¼....%..&..
0000F060  45 17 00 00 46 17 00 00  47 17 00 00 56 17 00 00  B7 17 00 00 B8 17 00 00  D7 17 00 00 D8 17 00 00  E..F..G..V..........
0000F080  D9 17 00 00 F0 17 00 00  22 18 00 00 24 18 00 00  A1 18 00 00 A2 18 00 00  AD 18 00 00 AE 18 00 00  ...."..$..í..ó..¡..«..
0000F0A0  85 19 00 00 86 19 00 00  91 19 00 00 92 19 00 00  05 1A 00 00 11 1A 00 00  31 1A 00 00 40 1A 00 00  à..å..æ..Æ......1..@..
0000F0C0  72 1A 00 00 83 1A 00 00  A1 1A 00 00 B9 1A 00 00  01 1B 00 00 03 1B 00 00  05 1B 00 00 0E 1B 00 00  r..â..í............
0000F0E0  DD 1C 00 00 E5 1C 00 00  16 1D 00 00 30 1D 00 00  35 1D 00 00 4E 1D 00 00  0C 1E 00 00 14 1E 00 00  ..σ....0..5..N......
0000F100  33 1E 00 00 38 1E 00 00  6F 1E 00 00 76 1E 00 00  60 1F 00 00 61 1F 00 00  6C 1F 00 00 6D 1F 00 00  3..8..o..v..`..a..l..m..
0000F120  62 21 00 00 6D 21 00 00  72 23 00 00 73 23 00 00  7E 23 00 00 7F 23 00 00  4F 24 00 00 50 24 00 00  b!..m!..r#..s#..~#..#..O$..P$..
0000F140  68 24 00 00 69 24 00 00  6D 7C 00 00 6F 7C 00 00  7A 7C 00 00 7B 7C 00 00  9A 7C 00 00 9B 7C 00 00  h$..i$..m|..o|..z|..{|..Ü|..¢|..
0000F160  B7 7C 00 00 B8 7C 00 00  02 92 00 00 04 92 00 00  0F 92 00 00 10 92 00 00  28 92 00 00 29 92 00 00  |..|..Æ..Æ..Æ..Æ..(Æ..)Æ..
0000F180  44 92 00 00 45 92 00 00  55 EA 00 00 FE 00 FE 00  FE FD 00 FE 00 FE FD 00  FE 00 FE FD 00 FE 00 FE  DÆ..EÆ..UΩ....²..²..²..
0000F1A0  FD 00 FE 00 FE 00 FD 00  FE 00 FE 00 FD 00 FC 00  FE 00 FE 00 FE 00 FE 00  FC 00 FC 00 FC 00 FC 00  ²...²...²..........
0000F1C0  F8 00 FC 00 FC 00 FC 00  FC 00 FC 00 FC 00 FC 00  FE 00 FE 00 FD 00 FE 00  FE 00 FE 00 FE 00 FE 00  °..........²......
0000F1E0  FE 00 FE 00 FE 00 FE 00  FE 00 FE 00 FE 00 00 00  07 00 00 06 00 00 00 14  01 01 01 02 02 00 02 62  ...............b
0000F200  55 EA 00 00 56 EA 00 00  58 EA 00 00 59 EA 00 00  6B EA 00 00 11 EC 00 00  13 EC 00 00 15 EC 00 00  UΩ..VΩ..XΩ..YΩ..kΩ......§..
0000F220  62 EC 00 00 64 EC 00 00  6C EC 00 00 6D EC 00 00  71 EC 00 00 72 EC 00 00  78 EC 00 00 79 EC 00 00  b..d..l..m..q..r..x..y..
0000F240  7A EC 00 00 7B EC 00 00  7F EC 00 00 80 EC 00 00  88 EC 00 00 89 EC 00 00  90 EC 00 00 91 EC 00 00  z..{....Ç..ê..ë..É..æ..
0000F260  95 EC 00 00 96 EC 00 00  97 EC 00 00 98 EC 00 00  9A EC 00 00 9E EC 00 00  A0 EC 00 00 AB EC 00 00  ò..û..ù..ÿ..Ü....á..½..
0000F280  FE 00 FD F7 F3 EF 00 EB  00 E7 E3 E7 E3 E7 E3 E7  E3 E7 E3 E7 E3 DF DB DF  DB DF DB DF 00 00 D3 00  .².δ.τπτπτπτπτπτπ...
0000F2A0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
0000F2C0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
0000F2E0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
0000F300  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
0000F320  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
0000F340  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
0000F360  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
0000F380  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
0000F3A0  00 00 00 00 00 00 0E 00  02 00 00 00 00 14 00 00  00 00 00 00 04 00 07 00  02 06 00 00 00 14 07 00  .......................
0000F3C0  00 06 00 00 00 14 07 00  02 06 00 00 00 0C 07 00  00 06 00 00 00 0C 07 00  00 04 00 00 00 14 07 80  ..................Ç
0000F3E0  00 06 00 00 00 18 07 80  00 04 00 00 00 18 0A 80  00 0E 00 00 00 1C 00 00  20 00 01 80 02 00 02 1F  ....Ç....Ç...... .Ç.
0000F400  80 01 00 00 82 01 00 00  84 01 00 00 86 01 00 00  88 01 00 00 8A 01 00 00  8C 01 00 00 8E 01 00 00  Ç..é..ä..å..ê..è..î..Ä..
0000F420  90 01 00 00 C9 01 00 00  DA 01 00 00 EA 01 00 00  EC 01 00 00 EE 01 00 00  F0 01 00 00 F2 01 00 00  É......Ω....ε......
0000F440  F4 01 00 00 F6 01 00 00  00 02 00 00 1C 02 00 00  34 02 00 00 50 02 00 00  6F 02 00 00 8F 02 00 00  ..÷.......4..P..o..Å..
0000F460  A4 02 00 00 BB 02 00 00  DD 02 00 00 F8 02 00 00  FB 02 00 00 FD 02 00 00  FF 02 00 00 01 03 00 00  ñ......°....².. ....
0000F480  03 03 00 00 05 03 00 00  07 03 00 00 09 03 00 00  0B 03 00 00 0D 03 00 00  0F 03 00 00 11 03 00 00  ................
0000F4A0  13 03 00 00 15 03 00 00  17 03 00 00 19 03 00 00  1B 03 00 00 1D 03 00 00  1F 03 00 00 21 03 00 00  ..§............!..
0000F4C0  23 03 00 00 25 03 00 00  49 03 00 00 67 03 00 00  CC 05 00 00 CE 05 00 00  E6 05 00 00 78 06 00 00  #..%..I..g......µ..x..
0000F4E0  E0 06 00 00 E2 06 00 00  78 08 00 00 CE 08 00 00  2F 09 00 00 A3 09 00 00  A5 09 00 00 41 0A 00 00  α..Γ..x..../..ú..Ñ..A..
0000F500  43 0A 00 00 13 0B 00 00  FF 0B 00 00 FB FB FB FB  FB FB FB FB F6 FB FB F1  F1 F1 F1 F1 F1 F1 EC EC  C.... ..÷±±±±±±±
0000F520  EC EC EC EC EC EC EC F1  F1 F1 F1 F1 F1 F1 F1 F1  F1 F1 F1 F1 F1 F1 F1 F1  F1 F1 F1 F1 F1 E6 E1 DC  ±±±±±±±±±±±±±±±±±±±±±±µß
0000F540  D6 D6 CD CD D6 C7 BE BE  BE B5 B0 B5 AA CD 00 00  00 00 00 00 05 04 00 03  90 24 F0 00 10 D0 02 00  ¬.......É$..
0000F560  04 04 00 02 90 24 F0 00  00 00 08 00 00 01 90 24  F0 00 10 D0 02 11 68 01  13 98 FE 00 08 04 00 01  .É$.....É$.hÿ..
0000F580  90 24 F0 00 10 D0 02 11  68 01 13 98 FE 00 05 04  00 04 90 24 F0 00 10 D0  02 00 08 00 00 02 90 24  É$.hÿ..É$....É$
0000F5A0  F0 00 10 D0 02 11 68 01  13 98 FE 00 05 00 00 01  90 24 F0 00 10 D0 02 00  04 04 00 06 90 24 F0 00  .hÿ...É$...É$.
0000F5C0  00 00 04 FE 00 00 00 00  00 00 00 00 05 04 00 01  90 24 1B 01 05 01 00 00  04 E8 00 01 90 24 D8 00  ...........É$..Φ.É$.
0000F5E0  00 00 04 04 00 01 90 24  F0 00 00 00 04 04 00 01  90 24 7B 01 00 00 04 04  00 01 90 24 4B 01 00 42  ...É$....É${...É$K.B
0000F600  FF 0B 00 00 14 0D 00 00  E4 0D 00 00 05 0E 00 00  2E 0E 00 00 F6 0E 00 00  47 10 00 00 CE 11 00 00   ....Σ.......÷..G....
0000F620  F3 11 00 00 34 12 00 00  8C 12 00 00 2E 15 00 00  30 15 00 00 E6 15 00 00  E8 15 00 00 32 16 00 00  ..4..î...§..0§..µ§..Φ§..2..
0000F640  8B 16 00 00 25 17 00 00  B7 17 00 00 22 18 00 00  24 18 00 00 A1 18 00 00  C9 18 00 00 85 19 00 00  ï..%...."..$..í....à..
0000F660  AE 19 00 00 EF 19 00 00  F1 19 00 00 FA 19 00 00  07 1A 00 00 09 1A 00 00  13 1A 00 00 33 1A 00 00  «....±..·........3..
0000F680  35 1A 00 00 42 1A 00 00  74 1A 00 00 76 1A 00 00  85 1A 00 00 9F 1A 00 00  F7 EA E5 DF D6 CD C4 E5  5..B..t..v..à..ƒ..Ωσσ
0000F6A0  DF BB B2 BB AC BB BB BB  A3 A3 BB DF AC E5 9E E5  99 99 93 8D 76 93 8D 5F  93 8D 5F 93 8D 00 16 00  ¼úú¼σσÖÖôìvôì_ôì_ôì..
0000F6C0  00 00 00 00 00 00 18 01  19 01 94 6C 00 9A 1B 00  02 94 FF 08 0B 19 22 00  00 00 00 09 00 00 00 00  ......öl.Ü.ö "........
0000F6E0  00 00 00 00 00 00 00 00  00 09 00 00 16 00 00 00  00 00 00 00 18 01 19 01  94 6C 00 9A 1B 00 02 94  ..................öl.Ü.ö
0000F700  FF 08 0B 19 22 00 00 09  00 09 00 09 00 00 00 00  00 09 00 00 00 09 00 09  00 00 05 04 00 01 38 16   "................8
0000F720  F0 00 18 01 00 00 05 04  00 01 9D 0A F0 00 18 01  00 00 04 04 00 01 90 24  F0 00 00 00 04 04 00 02  ....¥....É$....
0000F740  90 24 F0 00 00 00 08 04  00 02 90 24 F0 00 10 D0  02 11 68 01 13 98 FE 00  05 04 00 02 90 24 F0 00  É$....É$.hÿ..É$.
0000F760  10 D0 02 00 08 04 00 07  90 24 F0 00 10 D0 02 11  68 01 13 98 FE 00 08 04  00 01 90 24 F0 00 10 D0  ..É$.hÿ..É$.
0000F780  02 11 68 01 13 98 FE 00  08 00 00 04 90 24 F0 00  10 D0 02 11 68 01 13 98  FE 00 08 04 00 04 90 24  hÿ...É$.hÿ..É$
0000F7A0  F0 00 10 D0 02 11 68 01  13 98 FE 00 08 00 00 02  90 24 F0 00 10 D0 02 11  68 01 13 98 FE 00 05 04  .hÿ...É$.hÿ.
0000F7C0  00 01 90 24 F0 00 10 D0  02 00 04 FE 00 01 90 24  25 01 00 00 0C 00 00 02  90 24 F0 00 10 D0 02 11  .É$...É$%....É$.
0000F7E0  68 01 13 98 FE 0F 05 00  01 28 23 00 00 00 08 00  00 03 90 24 F0 00 10 D0  02 11 68 01 13 98 FE 25  hÿ.(#.....É$.hÿ%
0000F800  9F 1A 00 00 A1 1A 00 00  BB 1A 00 00 01 1B 00 00  03 1B 00 00 05 1B 00 00  E8 1C 00 00 EA 1C 00 00  ƒ..í..........Φ..Ω..
0000F820  31 1E 00 00 33 1E 00 00  60 1F 00 00 7E 1F 00 00  56 21 00 00 58 21 00 00  72 23 00 00 92 23 00 00  1..3..`..~..V!..X!..r#..Æ#..
0000F840  4D 24 00 00 4F 24 00 00  B3 24 00 00 B6 24 00 00  E1 24 00 00 E3 24 00 00  20 25 00 00 6C 25 00 00  M$..O$..$..$..ß$..π$.. %..l%..
0000F860  6E 25 00 00 AF 25 00 00  FE 25 00 00 00 26 00 00  02 26 00 00 3A 26 00 00  3D 26 00 00 88 26 00 00  n%..»%..%...&..&..:&..=&..ê&..
0000F880  CF 26 00 00 F3 26 00 00  F6 26 00 00 41 27 00 00  50 27 00 00 8C 27 00 00  B5 27 00 00 B8 27 00 00  &..&..÷&..A'..P'..î'..'..'..
0000F8A0  08 28 00 00 17 28 00 00  53 28 00 00 7E 28 00 00  81 28 00 00 CB 28 00 00  F0 28 00 00 F3 28 00 00  (..(..S(..~(..ü(..(..(..(..
0000F8C0  2B 29 00 00 69 29 00 00  6B 29 00 00 6D 29 00 00  AB 29 00 00 AE 29 00 00  F9 29 00 00 42 2A 00 00  +)..i)..k)..m)..½)..«)..)..B*..
0000F8E0  E9 E3 DD C6 C1 BC C1 B7  C1 A6 A1 9C C1 9C A1 97  92 8D 8D 8D 8D 8D 8D 8D  8D 8D 8D 8D 8D 8D 8D 8D  Θπªí££íùÆììììììììììììììì
0000F900  8D 8D 8D 8D 8D 8D 8D 8D  8D 8D 8D 8D 8D 8D 8D 8D  8D 8D 8D 8D 8D 8D 8D 00  00 00 04 00 00 01 90 24  ììììììììììììììììììììììì.....É$
0000F920  C0 00 00 00 04 01 00 01  90 24 C0 00 00 00 04 04  00 02 90 24 F0 00 00 00  04 04 00 05 90 24 F0 00  ....É$....É$....É$.
0000F940  00 00 04 FE 00 01 90 24  25 01 00 00 10 04 04 FF  90 24 6E 03 11 D0 02 13  30 FD 26 2A 08 27 2A 08  ...É$%.. É$n0²&*'*
0000F960  28 2A 08 29 2A 08 0F 05  00 01 D0 02 00 00 04 04  04 FF 90 24 CE 03 00 00  04 04 04 FF 90 24 BA 04  (*)*... É$.. É$
0000F980  00 00 04 04 00 01 90 24  F0 00 00 00 16 00 00 00  00 00 00 00 18 01 19 01  94 6C 00 9A 1B 00 02 94  ...É$..........öl.Ü.ö
0000F9A0  FF 08 0B 19 22 00 00 00  00 09 00 09 00 00 00 00  00 00 00 00 00 09 00 09  00 00 05 04 00 01 38 16   "..................8
0000F9C0  F0 00 18 01 00 00 05 04  00 01 9D 0A F0 00 18 01  00 00 16 00 00 00 00 00  00 00 18 01 19 01 94 6C  ....¥..........öl
0000F9E0  00 9A 1B 00 02 94 FF 08  0B 19 22 00 00 00 00 09  00 00 00 00 00 00 00 00  00 00 00 00 00 09 00 37  .Ü.ö "..................7
0000FA00  42 2A 00 00 57 2A 00 00  7A 2A 00 00 A7 2A 00 00  D4 2A 00 00 14 2B 00 00  56 2B 00 00 98 2B 00 00  B*..W*..z*..º*..*..+..V+..ÿ+..
0000FA20  E0 2B 00 00 28 2C 00 00  70 2C 00 00 B7 2C 00 00  BD 2C 00 00 F5 2C 00 00  FB 2C 00 00 4A 2D 00 00  α+..(,..p,..,..,..,..,..J-..
0000FA40  93 2D 00 00 95 2D 00 00  97 2D 00 00 C9 2D 00 00  CC 2D 00 00 1B 2E 00 00  67 2E 00 00 8D 2E 00 00  ô-..ò-..ù-..-..-.....g...ì...
0000FA60  8F 2E 00 00 9E 2E 00 00  A0 2E 00 00 D7 2E 00 00  1B 2F 00 00 1D 2F 00 00  62 2F 00 00 B3 2F 00 00  Å......á....../../..b/../..
0000FA80  FE 2F 00 00 00 30 00 00  4B 30 00 00 7B 30 00 00  7D 30 00 00 CC 30 00 00  F6 30 00 00 43 31 00 00  /...0..K0..{0..}0..0..÷0..C1..
0000FAA0  8E 31 00 00 D1 31 00 00  D3 31 00 00 17 32 00 00  5B 32 00 00 5D 32 00 00  9F 32 00 00 E3 32 00 00  Ä1..1..1..2..[2..]2..ƒ2..π2..
0000FAC0  2A 33 00 00 6C 33 00 00  AB 33 00 00 EF 33 00 00  F1 33 00 00 41 34 00 00  92 34 00 00 E3 34 00 00  *3..l3..½3..3..±3..A4..Æ4..π4..
0000FAE0  27 35 00 00 73 35 00 00  AE 35 00 00 BC 35 00 00  BE 35 00 00 C0 35 00 00  FD 35 00 00 00 36 00 00  '5..s5..«5..5..5..5..²5...6..
0000FB00  45 36 00 00 6E 36 00 00  71 36 00 00 88 36 00 00  9F 36 00 00 E1 36 00 00  F7 36 00 00 FA 36 00 00  E6..n6..q6..ê6..ƒ6..ß6..6..·6..
0000FB20  3E 37 00 00 56 37 00 00  59 37 00 00 7F 37 00 00  A5 37 00 00 B7 37 00 00  E8 37 00 00 EB 37 00 00  >7..V7..Y7..7..Ñ7..7..Φ7..δ7..
0000FB40  33 38 00 00 55 38 00 00  58 38 00 00 A2 38 00 00  C2 38 00 00 C5 38 00 00  10 39 00 00 5A 39 00 00  38..U8..X8..ó8..8..8..9..Z9..
0000FB60  A4 39 00 00 F3 39 00 00  44 3A 00 00 65 3A 00 00  68 3A 00 00 7A 3A 00 00  B0 3A 00 00 B3 3A 00 00  ñ9..9..D:..e:..h:..z:..:..:..
0000FB80  F9 3A 00 00 15 3B 00 00  18 3B 00 00 66 3B 00 00  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  :..§;..;..f;..
0000FBA0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  
0000FBC0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  
0000FBE0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB 00 00 00 04 00  00 01 90 24 C0 00 00 63  .....É$..c
0000FC00  66 3B 00 00 B6 3B 00 00  D4 3B 00 00 D7 3B 00 00  EC 3B 00 00 20 3C 00 00  23 3C 00 00 35 3C 00 00  f;..;..;..;..;.. <..#<..5<..
0000FC20  6B 3C 00 00 6E 3C 00 00  BC 3C 00 00 E2 3C 00 00  E5 3C 00 00 28 3D 00 00  5D 3D 00 00 60 3D 00 00  k<..n<..<..Γ<..σ<..(=..]=..`=..
0000FC40  AB 3D 00 00 F7 3D 00 00  44 3E 00 00 8E 3E 00 00  DA 3E 00 00 1E 3F 00 00  21 3F 00 00 33 3F 00 00  ½=..=..D>..Ä>..>..?..!?..3?..
0000FC60  7E 3F 00 00 C7 3F 00 00  10 40 00 00 4B 40 00 00  4E 40 00 00 9C 40 00 00  E7 40 00 00 33 41 00 00  ~?..?..@..K@..N@..£@..τ@..3A..
0000FC80  36 41 00 00 80 41 00 00  CE 41 00 00 1D 42 00 00  6E 42 00 00 BD 42 00 00  08 43 00 00 57 43 00 00  6A..ÇA..A..B..nB..B..C..WC..
0000FCA0  9F 43 00 00 E5 43 00 00  01 44 00 00 04 44 00 00  07 44 00 00 52 44 00 00  8E 44 00 00 91 44 00 00  ƒC..σC..D..D..D..RD..ÄD..æD..
0000FCC0  A5 44 00 00 F3 44 00 00  35 45 00 00 38 45 00 00  85 45 00 00 D0 45 00 00  E7 45 00 00 EA 45 00 00  ÑD..D..5E..8E..àE..E..τE..ΩE..
0000FCE0  31 46 00 00 34 46 00 00  4A 46 00 00 96 46 00 00  C6 46 00 00 C9 46 00 00  12 47 00 00 32 47 00 00  1F..4F..JF..ûF..F..F..G..2G..
0000FD00  35 47 00 00 7E 47 00 00  C7 47 00 00 13 48 00 00  60 48 00 00 63 48 00 00  AF 48 00 00 FD 48 00 00  5G..~G..G..H..`H..cH..»H..²H..
0000FD20  49 49 00 00 95 49 00 00  C2 49 00 00 C5 49 00 00  10 4A 00 00 5A 4A 00 00  99 4A 00 00 9C 4A 00 00  II..òI..I..I..J..ZJ..ÖJ..£J..
0000FD40  B4 4A 00 00 F8 4A 00 00  FB 4A 00 00 47 4B 00 00  93 4B 00 00 DF 4B 00 00  26 4C 00 00 72 4C 00 00  J..°J..J..GK..ôK..K..&L..rL..
0000FD60  86 4C 00 00 88 4C 00 00  9B 4C 00 00 CF 4C 00 00  0A 4D 00 00 3E 4D 00 00  77 4D 00 00 B7 4D 00 00  åL..êL..¢L..L..M..>M..wM..M..
0000FD80  09 4E 00 00 44 4E 00 00  56 4E 00 00 58 4E 00 00  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  N..DN..VN..XN..
0000FDA0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  
0000FDC0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  
0000FDE0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB 00 00 00 04 00  00 01 90 24 C0 00 00 63  .....É$..c
0000FE00  58 4E 00 00 5A 4E 00 00  7E 4E 00 00 81 4E 00 00  B0 4E 00 00 B3 4E 00 00  E7 4E 00 00 32 4F 00 00  XN..ZN..~N..üN..N..N..τN..2O..
0000FE20  6C 4F 00 00 B4 4F 00 00  FC 4F 00 00 45 50 00 00  47 50 00 00 85 50 00 00  88 50 00 00 D4 50 00 00  lO..O..O..EP..GP..àP..êP..P..
0000FE40  1E 51 00 00 57 51 00 00  59 51 00 00 70 51 00 00  72 51 00 00 74 51 00 00  C0 51 00 00 C3 51 00 00  Q..WQ..YQ..pQ..rQ..tQ..Q..Q..
0000FE60  0B 52 00 00 54 52 00 00  66 52 00 00 69 52 00 00  B4 52 00 00 FB 52 00 00  42 53 00 00 5B 53 00 00  R..TR..fR..iR..R..R..BS..[S..
0000FE80  5E 53 00 00 9E 53 00 00  A1 53 00 00 D5 53 00 00  D8 53 00 00 0C 54 00 00  40 54 00 00 74 54 00 00  ^S..S..íS..S..S..T..@T..tT..
0000FEA0  77 54 00 00 8D 54 00 00  A3 54 00 00 A5 54 00 00  BB 54 00 00 D1 54 00 00  D3 54 00 00 D5 54 00 00  wT..ìT..úT..ÑT..T..T..T..T..
0000FEC0  18 55 00 00 1B 55 00 00  61 55 00 00 A9 55 00 00  F1 55 00 00 F4 55 00 00  03 56 00 00 15 56 00 00  U..U..aU..U..±U..U..V..§V..
0000FEE0  18 56 00 00 2E 56 00 00  5B 56 00 00 83 56 00 00  86 56 00 00 89 56 00 00  9F 56 00 00 CF 56 00 00  V...V..[V..âV..åV..ëV..ƒV..V..
0000FF00  D2 56 00 00 E0 56 00 00  FC 56 00 00 FE 56 00 00  13 57 00 00 30 57 00 00  58 57 00 00 5A 57 00 00  V..αV..V..V..W..0W..XW..ZW..
0000FF20  93 57 00 00 E0 57 00 00  F7 57 00 00 37 58 00 00  39 58 00 00 5A 58 00 00  71 58 00 00 AB 58 00 00  ôW..αW..W..7X..9X..ZX..qX..½X..
0000FF40  F2 58 00 00 F4 58 00 00  09 59 00 00 3D 59 00 00  82 59 00 00 A0 59 00 00  D7 59 00 00 D9 59 00 00  X..X..Y..=Y..éY..áY..Y..Y..
0000FF60  15 5A 00 00 5C 5A 00 00  5E 5A 00 00 9A 5A 00 00  D8 5A 00 00 DA 5A 00 00  0E 5B 00 00 14 5B 00 00  §Z..\Z..^Z..ÜZ..Z..Z..[..[..
0000FF80  2B 5B 00 00 42 5B 00 00  86 5B 00 00 88 5B 00 00  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  +[..B[..å[..ê[..
0000FFA0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  
0000FFC0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  
0000FFE0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB 00 00 00 04 00  00 01 90 24 C0 00 00 63  .....É$..c
00010000  88 5B 00 00 A9 5B 00 00  C0 5B 00 00 FA 5B 00 00  30 5C 00 00 32 5C 00 00  47 5C 00 00 7B 5C 00 00  ê[..[..[..·[..0\..2\..G\..{\..
00010020  C0 5C 00 00 DE 5C 00 00  19 5D 00 00 1B 5D 00 00  57 5D 00 00 9E 5D 00 00  A0 5D 00 00 DC 5D 00 00  \..\..]..]..W]..]..á]..]..
00010040  12 5E 00 00 14 5E 00 00  2B 5E 00 00 31 5E 00 00  6D 5E 00 00 A0 5E 00 00  A2 5E 00 00 B1 5E 00 00  ^..^..+^..1^..m^..á^..ó^..^..
00010060  ED 5E 00 00 EF 5E 00 00  18 5F 00 00 43 5F 00 00  50 5F 00 00 60 5F 00 00  62 5F 00 00 7A 5F 00 00  φ^..^.._..C_..P_..`_..b_..z_..
00010080  7C 5F 00 00 7E 5F 00 00  C2 5F 00 00 C5 5F 00 00  11 60 00 00 61 60 00 00  9A 60 00 00 9C 60 00 00  |_..~_.._.._..`..a`..Ü`..£`..
000100A0  B7 60 00 00 B9 60 00 00  F5 60 00 00 F8 60 00 00  07 61 00 00 2F 61 00 00  52 61 00 00 74 61 00 00  `..`..`..°`..a../a..Ra..ta..
000100C0  A5 61 00 00 DD 61 00 00  E0 61 00 00 0B 62 00 00  4F 62 00 00 8B 62 00 00  CD 62 00 00 0E 63 00 00  Ña..a..αa..b..Ob..ïb..b..c..
000100E0  55 63 00 00 58 63 00 00  95 63 00 00 98 63 00 00  AE 63 00 00 E0 63 00 00  29 64 00 00 2C 64 00 00  Uc..Xc..òc..ÿc..«c..αc..)d..,d..
00010100  42 64 00 00 85 64 00 00  9D 64 00 00 C4 64 00 00  EA 64 00 00 23 65 00 00  26 65 00 00 43 65 00 00  Bd..àd..¥d..d..Ωd..#e..&e..Ce..
00010120  8D 65 00 00 D9 65 00 00  20 66 00 00 6C 66 00 00  BA 66 00 00 F0 66 00 00  F3 66 00 00 1B 67 00 00  ìe..e.. f..lf..f..f..f..g..
00010140  68 67 00 00 96 67 00 00  99 67 00 00 C2 67 00 00  13 68 00 00 5F 68 00 00  62 68 00 00 70 68 00 00  hg..ûg..Ög..g..h.._h..bh..ph..
00010160  86 68 00 00 88 68 00 00  9F 68 00 00 BC 68 00 00  E4 68 00 00 E6 68 00 00  30 69 00 00 7A 69 00 00  åh..êh..ƒh..h..Σh..µh..0i..zi..
00010180  C0 69 00 00 08 6A 00 00  0A 6A 00 00 56 6A 00 00  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  i..j..j..Vj..
000101A0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  
000101C0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  
000101E0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB 00 00 00 04 00  00 01 90 24 C0 00 00 63  .....É$..c
00010200  56 6A 00 00 A4 6A 00 00  EF 6A 00 00 30 6B 00 00  32 6B 00 00 71 6B 00 00  73 6B 00 00 BE 6B 00 00  Vj..ñj..j..0k..2k..qk..sk..k..
00010220  C0 6B 00 00 0C 6C 00 00  5A 6C 00 00 A5 6C 00 00  E6 6C 00 00 E8 6C 00 00  11 6D 00 00 3C 6D 00 00  k..l..Zl..Ñl..µl..Φl..m..<m..
00010240  49 6D 00 00 5B 6D 00 00  5D 6D 00 00 78 6D 00 00  7A 6D 00 00 7C 6D 00 00  C4 6D 00 00 C7 6D 00 00  Im..[m..]m..xm..zm..|m..m..m..
00010260  13 6E 00 00 50 6E 00 00  9F 6E 00 00 A1 6E 00 00  BE 6E 00 00 C0 6E 00 00  C2 6E 00 00 00 6F 00 00  n..Pn..ƒn..ín..n..n..n...o..
00010280  03 6F 00 00 12 6F 00 00  34 6F 00 00 65 6F 00 00  9D 6F 00 00 A0 6F 00 00  CB 6F 00 00 0B 70 00 00  o..o..4o..eo..¥o..áo..o..p..
000102A0  43 70 00 00 85 70 00 00  C6 70 00 00 C9 70 00 00  06 71 00 00 09 71 00 00  1F 71 00 00 53 71 00 00  Cp..àp..p..p..q..q..q..Sq..
000102C0  9E 71 00 00 A1 71 00 00  B7 71 00 00 FA 71 00 00  12 72 00 00 39 72 00 00  5F 72 00 00 98 72 00 00  q..íq..q..·q..r..9r.._r..ÿr..
000102E0  9B 72 00 00 B8 72 00 00  02 73 00 00 4E 73 00 00  95 73 00 00 E4 73 00 00  2F 74 00 00 57 74 00 00  ¢r..r..s..Ns..òs..Σs../t..Wt..
00010300  5A 74 00 00 82 74 00 00  CF 74 00 00 FF 74 00 00  02 75 00 00 29 75 00 00  71 75 00 00 C0 75 00 00  Zt..ét..t.. t..u..)u..qu..u..
00010320  F4 75 00 00 40 76 00 00  8E 76 00 00 DB 76 00 00  2A 77 00 00 2D 77 00 00  3B 77 00 00 51 77 00 00  u..@v..Äv..v..*w..-w..;w..Qw..
00010340  53 77 00 00 6C 77 00 00  89 77 00 00 B1 77 00 00  B3 77 00 00 FD 77 00 00  47 78 00 00 8D 78 00 00  Sw..lw..ëw..w..w..²w..Gx..ìx..
00010360  D5 78 00 00 D7 78 00 00  23 79 00 00 71 79 00 00  BC 79 00 00 FD 79 00 00  FF 79 00 00 23 7A 00 00  x..x..#y..qy..y..²y.. y..#z..
00010380  62 7A 00 00 64 7A 00 00  AF 7A 00 00 B1 7A 00 00  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  bz..dz..»z..z..
000103A0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  
000103C0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  
000103E0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB 00 00 00 04 00  00 01 90 24 C0 00 00 63  .....É$..c
00010400  B1 7A 00 00 FD 7A 00 00  4B 7B 00 00 96 7B 00 00  D7 7B 00 00 D9 7B 00 00  02 7C 00 00 2D 7C 00 00  z..²z..K{..û{..{..{..|..-|..
00010420  3A 7C 00 00 4E 7C 00 00  50 7C 00 00 6D 7C 00 00  98 7C 00 00 9A 7C 00 00  EB 7C 00 00 EE 7C 00 00  :|..N|..P|..m|..ÿ|..Ü|..δ|..ε|..
00010440  19 7D 00 00 1C 7D 00 00  64 7D 00 00 9A 7D 00 00  9D 7D 00 00 E4 7D 00 00  2B 7E 00 00 72 7E 00 00  }..}..d}..Ü}..¥}..Σ}..+~..r~..
00010460  BE 7E 00 00 DA 7E 00 00  DD 7E 00 00 27 7F 00 00  5D 7F 00 00 60 7F 00 00  9D 7F 00 00 A0 7F 00 00  ~..~..~..'..]..`..¥..á..
00010480  DC 7F 00 00 1D 80 00 00  57 80 00 00 59 80 00 00  5B 80 00 00 70 80 00 00  82 80 00 00 84 80 00 00  ..Ç..WÇ..YÇ..[Ç..pÇ..éÇ..äÇ..
000104A0  86 80 00 00 A0 80 00 00  BA 80 00 00 D4 80 00 00  D6 80 00 00 1C 81 00 00  1E 81 00 00 20 81 00 00  åÇ..áÇ..Ç..Ç..Ç..ü..ü.. ü..
000104C0  33 81 00 00 46 81 00 00  59 81 00 00 5B 81 00 00  6C 81 00 00 81 81 00 00  83 81 00 00 85 81 00 00  3ü..Fü..Yü..[ü..lü..üü..âü..àü..
000104E0  95 81 00 00 A5 81 00 00  B5 81 00 00 B7 81 00 00  FF 81 00 00 01 82 00 00  3C 82 00 00 7B 82 00 00  òü..Ñü..ü..ü.. ü..é..<é..{é..
00010500  7D 82 00 00 BB 82 00 00  BD 82 00 00 BF 82 00 00  D7 82 00 00 EF 82 00 00  07 83 00 00 09 83 00 00  }é..é..é..é..é..é..â..â..
00010520  0B 83 00 00 19 83 00 00  60 83 00 00 9F 83 00 00  D5 83 00 00 D7 83 00 00  EF 83 00 00 F2 83 00 00  â..â..`â..ƒâ..â..â..â..â..
00010540  20 84 00 00 23 84 00 00  70 84 00 00 87 84 00 00  D1 84 00 00 D3 84 00 00  FA 84 00 00 31 85 00 00   ä..#ä..pä..çä..ä..ä..·ä..1à..
00010560  5C 85 00 00 87 85 00 00  89 85 00 00 B5 85 00 00  EC 85 00 00 17 86 00 00  42 86 00 00 44 86 00 00  \à..çà..ëà..à..à..å..Bå..Då..
00010580  FB FB FB FB FB FB FB FB  FB FB FB F6 F1 FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  ÷±
000105A0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  
000105C0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB 00  .
000105E0  00 00 04 01 00 01 90 24  C0 00 00 00 04 FE 00 01  90 24 25 01 00 00 04 00  00 01 90 24 C0 00 00 5F  ...É$....É$%....É$.._
00010600  44 86 00 00 6E 86 00 00  B6 86 00 00 B8 86 00 00  E1 86 00 00 FC 86 00 00  FE 86 00 00 28 87 00 00  Då..nå..å..å..ßå..å..å..(ç..
00010620  4A 87 00 00 67 87 00 00  69 87 00 00 9E 87 00 00  DC 87 00 00 15 88 00 00  17 88 00 00 49 88 00 00  Jç..gç..iç..ç..ç..§ê..ê..Iê..
00010640  8C 88 00 00 8E 88 00 00  90 88 00 00 AA 88 00 00  AD 88 00 00 D9 88 00 00  DC 88 00 00 29 89 00 00  îê..Äê..Éê..¬ê..¡ê..ê..ê..)ë..
00010660  40 89 00 00 8A 89 00 00  8C 89 00 00 B3 89 00 00  EA 89 00 00 15 8A 00 00  40 8A 00 00 42 8A 00 00  @ë..èë..îë..ë..Ωë..§è..@è..Bè..
00010680  6E 8A 00 00 A5 8A 00 00  D0 8A 00 00 FB 8A 00 00  FD 8A 00 00 1D 8B 00 00  38 8B 00 00 3A 8B 00 00  nè..Ñè..è..è..²è..ï..8ï..:ï..
000106A0  56 8B 00 00 73 8B 00 00  75 8B 00 00 AA 8B 00 00  E8 8B 00 00 21 8C 00 00  23 8C 00 00 57 8C 00 00  Vï..sï..uï..¬ï..Φï..!î..#î..Wî..
000106C0  9C 8C 00 00 9E 8C 00 00  C1 8C 00 00 C3 8C 00 00  FC 8C 00 00 FE 8C 00 00  0B 8D 00 00 0D 8D 00 00  £î..î..î..î..î..î..ì..ì..
000106E0  1B 8D 00 00 1D 8D 00 00  1F 8D 00 00 5C 8D 00 00  5F 8D 00 00 7A 8D 00 00  97 8D 00 00 9A 8D 00 00  ì..ì..ì..\ì.._ì..zì..ùì..Üì..
00010700  D7 8D 00 00 D9 8D 00 00  DB 8D 00 00 F0 8D 00 00  05 8E 00 00 1A 8E 00 00  1C 8E 00 00 48 8E 00 00  ì..ì..ì..ì..Ä..Ä..Ä..HÄ..
00010720  4B 8E 00 00 63 8E 00 00  66 8E 00 00 92 8E 00 00  94 8E 00 00 96 8E 00 00  C4 8E 00 00 C7 8E 00 00  KÄ..cÄ..fÄ..ÆÄ..öÄ..ûÄ..Ä..Ä..
00010740  CA 8E 00 00 D9 8E 00 00  EC 8E 00 00 EF 8E 00 00  05 8F 00 00 19 8F 00 00  55 8F 00 00 58 8F 00 00  Ä..Ä..Ä..Ä..Å..Å..UÅ..XÅ..
00010760  6E 8F 00 00 9B 8F 00 00  9E 8F 00 00 AC 8F 00 00  C8 8F 00 00 CA 8F 00 00  E0 8F 00 00 0E 90 00 00  nÅ..¢Å..Å..¼Å..Å..Å..αÅ..É..
00010780  5D 90 00 00 9B 90 00 00  DE 90 00 00 E0 90 00 00  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  ]É..¢É..É..αÉ..
000107A0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  
000107C0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  
000107E0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB 00 00 00 04 00  00 01 90 24 C0 00 00 63  .....É$..c
00010800  E0 90 00 00 0A 91 00 00  0C 91 00 00 3C 91 00 00  53 91 00 00 84 91 00 00  86 91 00 00 C2 91 00 00  αÉ..æ..æ..<æ..Sæ..äæ..åæ..æ..
00010820  C4 91 00 00 D1 91 00 00  D3 91 00 00 E1 91 00 00  E3 91 00 00 E5 91 00 00  F3 91 00 00 F5 91 00 00  æ..æ..æ..ßæ..πæ..σæ..æ..æ..
00010840  02 92 00 00 26 92 00 00  28 92 00 00 6F 92 00 00  72 92 00 00 9D 92 00 00  A0 92 00 00 E8 92 00 00  Æ..&Æ..(Æ..oÆ..rÆ..¥Æ..áÆ..ΦÆ..
00010860  12 93 00 00 15 93 00 00  32 93 00 00 65 93 00 00  9E 93 00 00 DE 93 00 00  1F 94 00 00 22 94 00 00  ô..§ô..2ô..eô..ô..ô..ö.."ö..
00010880  25 94 00 00 42 94 00 00  74 94 00 00 C1 94 00 00  FE 94 00 00 40 95 00 00  84 95 00 00 86 95 00 00  %ö..Bö..tö..ö..ö..@ò..äò..åò..
000108A0  88 95 00 00 9D 95 00 00  AF 95 00 00 B1 95 00 00  B3 95 00 00 CD 95 00 00  E7 95 00 00 01 96 00 00  êò..¥ò..»ò..ò..ò..ò..τò..û..
000108C0  03 96 00 00 45 96 00 00  99 96 00 00 E8 96 00 00  29 97 00 00 69 97 00 00  B3 97 00 00 B5 97 00 00  û..Eû..Öû..Φû..)ù..iù..ù..ù..
000108E0  D4 97 00 00 06 98 00 00  08 98 00 00 0A 98 00 00  1F 98 00 00 34 98 00 00  49 98 00 00 4B 98 00 00  ù..ÿ..ÿ..ÿ..ÿ..4ÿ..Iÿ..Kÿ..
00010900  4D 98 00 00 8A 98 00 00  8D 98 00 00 9C 98 00 00  EC 98 00 00 23 99 00 00  63 99 00 00 66 99 00 00  Mÿ..èÿ..ìÿ..£ÿ..ÿ..#Ö..cÖ..fÖ..
00010920  7C 99 00 00 B1 99 00 00  E1 99 00 00 04 9A 00 00  07 9A 00 00 1D 9A 00 00  58 9A 00 00 5B 9A 00 00  |Ö..Ö..ßÖ..Ü..Ü..Ü..XÜ..[Ü..
00010940  69 9A 00 00 85 9A 00 00  87 9A 00 00 A8 9A 00 00  EC 9A 00 00 EE 9A 00 00  3E 9B 00 00 7F 9B 00 00  iÜ..àÜ..çÜ..¿Ü..Ü..εÜ..>¢..¢..
00010960  81 9B 00 00 9A 9B 00 00  9D 9B 00 00 E7 9B 00 00  35 9C 00 00 81 9C 00 00  CB 9C 00 00 17 9D 00 00  ü¢..Ü¢..¥¢..τ¢..5£..ü£..£..¥..
00010980  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  F6 F1 FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  ÷±
000109A0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  
000109C0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB 00  .
000109E0  00 00 04 01 00 01 90 24  C0 00 00 00 04 FE 00 01  90 24 25 01 00 00 04 00  00 01 90 24 C0 00 00 5F  ...É$....É$%....É$.._
00010A00  17 9D 00 00 60 9D 00 00  7A 9D 00 00 7D 9D 00 00  BC 9D 00 00 F7 9D 00 00  2A 9E 00 00 79 9E 00 00  ¥..`¥..z¥..}¥..¥..¥..*..y..
00010A20  7B 9E 00 00 AD 9E 00 00  F7 9E 00 00 FA 9E 00 00  46 9F 00 00 8C 9F 00 00  C3 9F 00 00 C6 9F 00 00  {..¡....·..Fƒ..îƒ..ƒ..ƒ..
00010A40  F6 9F 00 00 F9 9F 00 00  44 A0 00 00 5A A0 00 00  5C A0 00 00 8D A0 00 00  8F A0 00 00 D9 A0 00 00  ÷ƒ..ƒ..Dá..Zá..\á..ìá..Åá..á..
00010A60  13 A1 00 00 4F A1 00 00  9C A1 00 00 9E A1 00 00  DE A1 00 00 E0 A1 00 00  1D A2 00 00 3B A2 00 00  í..Oí..£í..í..í..αí..ó..;ó..
00010A80  3D A2 00 00 3F A2 00 00  7D A2 00 00 80 A2 00 00  8F A2 00 00 DF A2 00 00  18 A3 00 00 51 A3 00 00  =ó..?ó..}ó..Çó..Åó..ó..ú..Qú..
00010AA0  54 A3 00 00 62 A3 00 00  A5 A3 00 00 C4 A3 00 00  C7 A3 00 00 D5 A3 00 00  F1 A3 00 00 F3 A3 00 00  Tú..bú..Ñú..ú..ú..ú..±ú..ú..
00010AC0  14 A4 00 00 5B A4 00 00  5D A4 00 00 81 A4 00 00  D1 A4 00 00 16 A5 00 00  20 A5 00 00 24 A5 00 00  ñ..[ñ..]ñ..üñ..ñ..Ñ.. Ñ..$Ñ..
00010AE0  68 A5 00 00 98 A5 00 00  A2 A5 00 00 A4 A5 00 00  B7 A5 00 00 F6 A5 00 00  F8 A5 00 00 21 A6 00 00  hÑ..ÿÑ..óÑ..ñÑ..Ñ..÷Ñ..°Ñ..!ª..
00010B00  57 A6 00 00 9E A6 00 00  A0 A6 00 00 DF A6 00 00  21 A7 00 00 23 A7 00 00  3C A7 00 00 76 A7 00 00  Wª..ª..áª..ª..!º..#º..<º..vº..
00010B20  78 A7 00 00 B5 A7 00 00  D3 A7 00 00 D5 A7 00 00  D7 A7 00 00 EA A7 00 00  FD A7 00 00 10 A8 00 00  xº..º..º..º..º..Ωº..²º..¿..
00010B40  12 A8 00 00 2F A8 00 00  65 A8 00 00 67 A8 00 00  95 A8 00 00 97 A8 00 00  A7 A8 00 00 B7 A8 00 00  ¿../¿..e¿..g¿..ò¿..ù¿..º¿..¿..
00010B60  C7 A8 00 00 C9 A8 00 00  EA A8 00 00 ED A8 00 00  EF A8 00 00 2E A9 00 00  71 A9 00 00 B8 A9 00 00  ¿..¿..Ω¿..φ¿..¿.....q....
00010B80  00 AA 00 00 37 AA 00 00  39 AA 00 00 3B AA 00 00  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  .¬..7¬..9¬..;¬..
00010BA0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  
00010BC0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  
00010BE0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB 00 00 00 04 00  00 01 90 24 C0 00 00 63  .....É$..c
00010C00  3B AA 00 00 6B AA 00 00  6E AA 00 00 B4 AA 00 00  F8 AA 00 00 FB AA 00 00  46 AB 00 00 49 AB 00 00  ;¬..k¬..n¬..¬..°¬..¬..F½..I½..
00010C20  93 AB 00 00 95 AB 00 00  97 AB 00 00 DD AB 00 00  E0 AB 00 00 F6 AB 00 00  F8 AB 00 00 FA AB 00 00  ô½..ò½..ù½..½..α½..÷½..°½..·½..
00010C40  2D AC 00 00 30 AC 00 00  7B AC 00 00 C7 AC 00 00  0D AD 00 00 3A AD 00 00  3D AD 00 00 4C AD 00 00  -¼..0¼..{¼..¼..¡..:¡..=¡..L¡..
00010C60  4E AD 00 00 50 AD 00 00  7F AD 00 00 82 AD 00 00  95 AD 00 00 97 AD 00 00  99 AD 00 00 E8 AD 00 00  N¡..P¡..¡..é¡..ò¡..ù¡..Ö¡..Φ¡..
00010C80  EB AD 00 00 35 AE 00 00  82 AE 00 00 CC AE 00 00  10 AF 00 00 13 AF 00 00  29 AF 00 00 2C AF 00 00  δ¡..5«..é«..«..»..»..)»..,»..
00010CA0  75 AF 00 00 C4 AF 00 00  11 B0 00 00 46 B0 00 00  49 B0 00 00 98 B0 00 00  E2 B0 00 00 17 B1 00 00  u»..»....F..I..ÿ..Γ....
00010CC0  1A B1 00 00 67 B1 00 00  87 B1 00 00 8A B1 00 00  9E B1 00 00 A1 B1 00 00  ED B1 00 00 30 B2 00 00  ..g..ç..è....í..φ..0..
00010CE0  33 B2 00 00 78 B2 00 00  C6 B2 00 00 10 B3 00 00  43 B3 00 00 82 B3 00 00  85 B3 00 00 D2 B3 00 00  3..x......C..é..à....
00010D00  1C B4 00 00 1F B4 00 00  6B B4 00 00 B6 B4 00 00  00 B5 00 00 02 B5 00 00  37 B5 00 00 67 B5 00 00  ....k.........7..g..
00010D20  69 B5 00 00 6B B5 00 00  A5 B5 00 00 A8 B5 00 00  EF B5 00 00 3A B6 00 00  50 B6 00 00 53 B6 00 00  i..k..Ñ..¿....:..P..S..
00010D40  84 B6 00 00 86 B6 00 00  88 B6 00 00 93 B6 00 00  9E B6 00 00 A9 B6 00 00  AB B6 00 00 AD B6 00 00  ä..å..ê..ô......½..¡..
00010D60  E4 B6 00 00 E7 B6 00 00  F6 B6 00 00 29 B7 00 00  2C B7 00 00 3A B7 00 00  61 B7 00 00 64 B7 00 00  Σ..τ..÷..)..,..:..a..d..
00010D80  72 B7 00 00 84 B7 00 00  87 B7 00 00 A0 B7 00 00  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  r..ä..ç..á..
00010DA0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  
00010DC0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  
00010DE0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB 00 00 00 04 00  00 01 90 24 C0 00 00 63  .....É$..c
00010E00  A0 B7 00 00 CB B7 00 00  13 B8 00 00 36 B8 00 00  43 B8 00 00 55 B8 00 00  57 B8 00 00 59 B8 00 00  á......6..C..U..W..Y..
00010E20  92 B8 00 00 95 B8 00 00  A4 B8 00 00 F2 B8 00 00  F5 B8 00 00 03 B9 00 00  14 B9 00 00 17 B9 00 00  Æ..ò..ñ............
00010E40  25 B9 00 00 37 B9 00 00  3A B9 00 00 53 B9 00 00  7E B9 00 00 80 B9 00 00  D0 B9 00 00 E4 B9 00 00  %..7..:..S..~..Ç....Σ..
00010E60  F9 B9 00 00 FB B9 00 00  42 BA 00 00 7B BA 00 00  B1 BA 00 00 FB BA 00 00  36 BB 00 00 38 BB 00 00  ....B..{......6..8..
00010E80  49 BB 00 00 4B BB 00 00  98 BB 00 00 9A BB 00 00  B3 BB 00 00 D2 BB 00 00  EE BB 00 00 38 BC 00 00  I..K..ÿ..Ü......ε..8..
00010EA0  75 BC 00 00 C4 BC 00 00  01 BD 00 00 03 BD 00 00  24 BD 00 00 6E BD 00 00  B8 BD 00 00 BA BD 00 00  u........$..n......
00010EC0  D1 BD 00 00 D4 BD 00 00  EC BD 00 00 02 BE 00 00  04 BE 00 00 29 BE 00 00  4E BE 00 00 50 BE 00 00  ..........)..N..P..
00010EE0  71 BE 00 00 87 BE 00 00  89 BE 00 00 CB BE 00 00  03 BF 00 00 31 BF 00 00  3E BF 00 00 50 BF 00 00  q..ç..ë......1..>..P..
00010F00  52 BF 00 00 54 BF 00 00  88 BF 00 00 8B BF 00 00  9A BF 00 00 CC BF 00 00  FE BF 00 00 01 C0 00 00  R..T..ê..ï..Ü........
00010F20  0F C0 00 00 3C C0 00 00  3F C0 00 00 4D C0 00 00  6C C0 00 00 6E C0 00 00  7C C0 00 00 AA C0 00 00  ..<..?..M..l..n..|..¬..
00010F40  AC C0 00 00 E1 C0 00 00  E3 C0 00 00 1F C1 00 00  5E C1 00 00 60 C1 00 00  A8 C1 00 00 AA C1 00 00  ¼..ß..π....^..`..¿..¬..
00010F60  E6 C1 00 00 28 C2 00 00  2A C2 00 00 72 C2 00 00  74 C2 00 00 90 C2 00 00  92 C2 00 00 CA C2 00 00  µ..(..*..r..t..É..Æ....
00010F80  04 C3 00 00 06 C3 00 00  1A C3 00 00 1C C3 00 00  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  ........
00010FA0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  
00010FC0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  
00010FE0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB 00 00 00 04 00  00 01 90 24 C0 00 00 63  .....É$..c
00011000  1C C3 00 00 30 C3 00 00  44 C3 00 00 8E C3 00 00  90 C3 00 00 D3 C3 00 00  D5 C3 00 00 11 C4 00 00  ..0..D..Ä..É........
00011020  4D C4 00 00 89 C4 00 00  C5 C4 00 00 C7 C4 00 00  03 C5 00 00 3F C5 00 00  41 C5 00 00 7D C5 00 00  M..ë........?..A..}..
00011040  7F C5 00 00 C2 C5 00 00  C5 C5 00 00 11 C6 00 00  5A C6 00 00 A6 C6 00 00  E3 C6 00 00 E6 C6 00 00  ........Z..ª..π..µ..
00011060  F2 C6 00 00 00 C7 00 00  0E C7 00 00 10 C7 00 00  12 C7 00 00 47 C7 00 00  4A C7 00 00 78 C7 00 00  ...........G..J..x..
00011080  7B C7 00 00 8A C7 00 00  BF C7 00 00 EC C7 00 00  2C C8 00 00 6C C8 00 00  94 C8 00 00 97 C8 00 00  {..è......,..l..ö..ù..
000110A0  AD C8 00 00 C1 C8 00 00  FC C8 00 00 FF C8 00 00  15 C9 00 00 50 C9 00 00  53 C9 00 00 61 C9 00 00  ¡...... ..§..P..S..a..
000110C0  85 C9 00 00 87 C9 00 00  9C C9 00 00 CA C9 00 00  CC C9 00 00 18 CA 00 00  56 CA 00 00 58 CA 00 00  à..ç..£........V..X..
000110E0  82 CA 00 00 84 CA 00 00  C5 CA 00 00 0B CB 00 00  0D CB 00 00 54 CB 00 00  56 CB 00 00 6E CB 00 00  é..ä........T..V..n..
00011100  71 CB 00 00 B6 CB 00 00  FD CB 00 00 00 CC 00 00  3E CC 00 00 79 CC 00 00  7B CC 00 00 B2 CC 00 00  q....².....>..y..{....
00011120  FF CC 00 00 44 CD 00 00  57 CD 00 00 59 CD 00 00  77 CD 00 00 95 CD 00 00  97 CD 00 00 B1 CD 00 00   ..D..W..Y..w..ò..ù....
00011140  B3 CD 00 00 CF CD 00 00  D1 CD 00 00 EF CD 00 00  35 CE 00 00 77 CE 00 00  79 CE 00 00 B2 CE 00 00  ........5..w..y....
00011160  B4 CE 00 00 B6 CE 00 00  E3 CE 00 00 F0 CE 00 00  F2 CE 00 00 16 CF 00 00  23 CF 00 00 31 CF 00 00  ....π........#..1..
00011180  33 CF 00 00 35 CF 00 00  6A CF 00 00 6D CF 00 00  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  3..5..j..m..
000111A0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  
000111C0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  
000111E0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB 00 00 00 04 00  00 01 90 24 C0 00 00 63  .....É$..c
00011200  6D CF 00 00 70 CF 00 00  8A CF 00 00 9C CF 00 00  9E CF 00 00 A0 CF 00 00  D9 CF 00 00 DC CF 00 00  m..p..è..£....á......
00011220  DF CF 00 00 FB CF 00 00  0F D0 00 00 11 D0 00 00  13 D0 00 00 28 D0 00 00  3D D0 00 00 52 D0 00 00  ..........(..=..R..
00011240  54 D0 00 00 A3 D0 00 00  A5 D0 00 00 A7 D0 00 00  D3 D0 00 00 D6 D0 00 00  EE D0 00 00 F1 D0 00 00  T..ú..Ñ..º......ε..±..
00011260  1D D1 00 00 1F D1 00 00  21 D1 00 00 55 D1 00 00  58 D1 00 00 9F D1 00 00  A2 D1 00 00 E8 D1 00 00  ....!..U..X..ƒ..ó..Φ..
00011280  31 D2 00 00 74 D2 00 00  B9 D2 00 00 BC D2 00 00  CB D2 00 00 DE D2 00 00  E1 D2 00 00 F7 D2 00 00  1..t..........ß....
000112A0  0B D3 00 00 29 D3 00 00  65 D3 00 00 68 D3 00 00  7E D3 00 00 BA D3 00 00  BD D3 00 00 CB D3 00 00  ..)..e..h..~........
000112C0  ED D3 00 00 EF D3 00 00  0D D4 00 00 3B D4 00 00  3D D4 00 00 87 D4 00 00  C5 D4 00 00 08 D5 00 00  φ......;..=..ç......
000112E0  0A D5 00 00 27 D5 00 00  2A D5 00 00 57 D5 00 00  5A D5 00 00 A3 D5 00 00  E8 D5 00 00 2D D6 00 00  ..'..*..W..Z..ú..Φ..-..
00011300  3B D6 00 00 3E D6 00 00  8A D6 00 00 AE D6 00 00  B1 D6 00 00 01 D7 00 00  03 D7 00 00 32 D7 00 00  ;..>..è..«........2..
00011320  34 D7 00 00 55 D7 00 00  8C D7 00 00 C9 D7 00 00  CB D7 00 00 15 D8 00 00  17 D8 00 00 45 D8 00 00  4..U..î......§....E..
00011340  47 D8 00 00 91 D8 00 00  D6 D8 00 00 EA D8 00 00  FE D8 00 00 13 D9 00 00  15 D9 00 00 5F D9 00 00  G..æ....Ω......§.._..
00011360  7B D9 00 00 88 D9 00 00  CF D9 00 00 D1 D9 00 00  FC D9 00 00 FF D9 00 00  4B DA 00 00 93 DA 00 00  {..ê........ ..K..ô..
00011380  C5 DA 00 00 C7 DA 00 00  E4 DA 00 00 E6 DA 00 00  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  ....Σ..µ..
000113A0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  
000113C0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  
000113E0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB 00 00 00 04 00  00 01 90 24 C0 00 00 63  .....É$..c
00011400  E6 DA 00 00 33 DB 00 00  4A DB 00 00 62 DB 00 00  A5 DB 00 00 A7 DB 00 00  F5 DB 00 00 F7 DB 00 00  µ..3..J..b..Ñ..º......
00011420  19 DC 00 00 60 DC 00 00  77 DC 00 00 C2 DC 00 00  C4 DC 00 00 02 DD 00 00  3C DD 00 00 3E DD 00 00  ..`..w........<..>..
00011440  88 DD 00 00 9F DD 00 00  A1 DD 00 00 EB DD 00 00  36 DE 00 00 38 DE 00 00  81 DE 00 00 83 DE 00 00  ê..ƒ..í..δ..6..8..ü..â..
00011460  90 DE 00 00 A6 DE 00 00  A8 DE 00 00 AA DE 00 00  F9 DE 00 00 FC DE 00 00  3B DF 00 00 83 DF 00 00  É..ª..¿..¬......;..â..
00011480  B8 DF 00 00 02 E0 00 00  4E E0 00 00 9A E0 00 00  BD E0 00 00 C0 E0 00 00  CF E0 00 00 13 E1 00 00  ..α..Nα..Üα..α..α..α..ß..
000114A0  16 E1 00 00 2C E1 00 00  53 E1 00 00 56 E1 00 00  6C E1 00 00 97 E1 00 00  D1 E1 00 00 D4 E1 00 00  ß..,ß..Sß..Vß..lß..ùß..ß..ß..
000114C0  E2 E1 00 00 FB E1 00 00  FD E1 00 00 1B E2 00 00  5C E2 00 00 5E E2 00 00  A0 E2 00 00 EF E2 00 00  Γß..ß..²ß..Γ..\Γ..^Γ..áΓ..Γ..
000114E0  3E E3 00 00 7F E3 00 00  81 E3 00 00 B5 E3 00 00  D0 E3 00 00 D2 E3 00 00  21 E4 00 00 6F E4 00 00  >π..π..üπ..π..π..π..!Σ..oΣ..
00011500  AF E4 00 00 FD E4 00 00  FF E4 00 00 2C E5 00 00  65 E5 00 00 67 E5 00 00  95 E5 00 00 D0 E5 00 00  »Σ..²Σ.. Σ..,σ..eσ..gσ..òσ..σ..
00011520  0C E6 00 00 0E E6 00 00  3C E6 00 00 78 E6 00 00  B4 E6 00 00 B6 E6 00 00  E4 E6 00 00 2C E7 00 00  µ..µ..<µ..xµ..µ..µ..Σµ..,τ..
00011540  6C E7 00 00 6E E7 00 00  93 E7 00 00 95 E7 00 00  D4 E7 00 00 E1 E7 00 00  E3 E7 00 00 26 E8 00 00  lτ..nτ..ôτ..òτ..τ..ßτ..πτ..&Φ..
00011560  33 E8 00 00 35 E8 00 00  4B E8 00 00 4D E8 00 00  4F E8 00 00 88 E8 00 00  8B E8 00 00 9A E8 00 00  3Φ..5Φ..KΦ..MΦ..OΦ..êΦ..ïΦ..ÜΦ..
00011580  AC E8 00 00 AF E8 00 00  BD E8 00 00 EE E8 00 00  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  ¼Φ..»Φ..Φ..εΦ..
000115A0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  
000115C0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  
000115E0  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB 00 00 00 04 00  00 01 90 24 C0 00 00 63  .....É$..c
00011600  EE E8 00 00 F1 E8 00 00  FF E8 00 00 15 E9 00 00  17 E9 00 00 39 E9 00 00  52 E9 00 00 6A E9 00 00  εΦ..±Φ.. Φ..§Θ..Θ..9Θ..RΘ..jΘ..
00011620  A5 E9 00 00 A7 E9 00 00  CC E9 00 00 F1 E9 00 00  0D EA 00 00 1A EA 00 00  1C EA 00 00 36 EA 00 00  ÑΘ..ºΘ..Θ..±Θ..Ω..Ω..Ω..6Ω..
00011640  38 EA 00 00 46 EA 00 00  48 EA 00 00 55 EA 00 00  58 EA 00 00 6B EA 00 00  78 EA 00 00 81 EA 00 00  8Ω..FΩ..HΩ..UΩ..XΩ..kΩ..xΩ..üΩ..
00011660  AB EA 00 00 AD EA 00 00  BA EA 00 00 C3 EA 00 00  ED EA 00 00 EF EA 00 00  FC EA 00 00 05 EB 00 00  ½Ω..¡Ω..Ω..Ω..φΩ..Ω..Ω..δ..
00011680  22 EB 00 00 24 EB 00 00  31 EB 00 00 3A EB 00 00  63 EB 00 00 65 EB 00 00  72 EB 00 00 7B EB 00 00  "δ..$δ..1δ..:δ..cδ..eδ..rδ..{δ..
000116A0  B8 EB 00 00 BA EB 00 00  C7 EB 00 00 D0 EB 00 00  E8 EB 00 00 EA EB 00 00  F7 EB 00 00 00 EC 00 00  δ..δ..δ..δ..Φδ..Ωδ..δ.....
000116C0  11 EC 00 00 13 EC 00 00  15 EC 00 00 62 EC 00 00  64 EC 00 00 9A EC 00 00  9C EC 00 00 9E EC 00 00  ....§..b..d..Ü..£....
000116E0  A0 EC 00 00 FB FB FB FB  FB FB FB FB FB FB FB FB  FB FB FB FB FB FB FB F6  F1 EB EB EB DD EB EB EB  á..÷±δδδδδδ
00011700  DD EB EB EB DD EB EB EB  DD EB EB EB DD EB EB EB  DD EB EB EB DD F6 D8 F1  CC F1 F1 F6 00 00 00 00  δδδδδδδδδδδδδδδ÷±±±÷....
00011720  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
00011740  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
00011760  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
00011780  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  0B F2 00 01 90 24 F0 00  .........................É$.
000117A0  0F 0C 02 E0 10 C0 21 02  48 12 90 24 01 02 00 00  04 F3 00 01 90 24 F0 00  00 00 0D 00 00 00 00 00  α!HÉ$...É$........
000117C0  00 00 18 01 19 01 94 6C  00 9A 0A 00 03 94 FF 94  05 A3 09 BE 24 00 05 04  00 00 00 00 00 00 18 01  ..öl.Ü.ö öú$.......
000117E0  00 00 04 00 00 00 00 00  00 00 00 00 04 01 00 01  90 24 C0 00 00 00 04 00  00 01 90 24 C0 00 00 38  ............É$.....É$..8
00011800  18 00 32 00 00 FF FF FF  FF FF FF FF FF FF 00 00  FF FF FF FF FF FF FF FF  FF 00 00 FF 00 04 63 6F  .2..         ..         .. .co
00011820  64 65 02 69 31 02 50 32  09 4E 6F 72 6D 61 6C 53  74 64 FF FF 5E 00 03 00  00 02 FF FF FF FF FF FF  dei1P2NormalStd  ^...      
00011840  FF FF FF FF 03 00 00 02  FF FF FF FF FF FF FF FF  FF FF 0A 01 00 0E 00 02  00 18 00 00 20 FF 0E 00      ..          .....  .
00011860  00 46 00 03 00 12 00 00  00 00 00 09 04 05 00 00  02 00 03 05 00 00 02 00  04 0E 00 00 40 00 00 00  .F...............@...
00011880  00 00 00 00 00 00 09 04  07 00 00 06 00 00 00 14  FF 00 C0 00 14 E8 00 00  00 00 00 00 10 D0 02 0F  ........... ..Φ......
000118A0  08 00 02 58 20 C0 21 0B  02 FF FF FF FF FF FF FF  FF FF FF 11 F3 00 00 00  00 00 00 0F 08 00 02 48  .X !          .......H
000118C0  12 90 24 01 02 FF FF FF  FF FF FF FF FF FF FF 0C  FE 00 00 00 00 00 00 08  01 15 F0 00 FF 07 00 00  É$          ......§. ..
000118E0  00 00 00 00 00 23 01 00  00 00 00 00 00 0F 1A 00  08 1C 02 38 04 54 06 70  08 8C 0A A8 0C C4 0E E0  .....#.......8Tpî¿α
00011900  10 00 00 00 00 00 00 00  00 1A 02 00 00 00 00 00  00 11 40 02 13 E0 FE 14  F0 00 16 F0 00 0F 05 00  ..............@α...
00011920  01 40 02 00 1C 03 00 00  00 00 00 00 07 01 11 20  01 14 F0 00 16 F0 00 0F  08 00 02 40 02 80 04 00  @....... ...@Ç.
00011940  00 07 04 00 00 00 00 00  00 FF 07 06 00 00 00 00  00 00 1F 00 00 00 00 00  00 00 00 00 00 00 00 00  ....... ...................
00011960  00 00 00 00 00 00 EF 00  F2 00 F3 00 00 00 F5 00  FF 00 FF 00 FF 00 FF 00  FF 00 FF 00 FF 00 00 00  ............ . . . . . . ...
00011980  00 00 FF 00 00 DE 01 00  02 00 03 DE 04 00 00 00  06 01 00 00 00 00 20 EB  00 00 20 00 A0 EC 00 00  .. ........... δ.. .á..
000119A0  00 00 00 00 CA 01 00 00  0C 11 00 00 E0 1D 00 00  18 2A 00 00 D9 35 00 00  81 42 00 00 7C 4E 00 00  ........α..*..5..üB..|N..
000119C0  DA 56 00 00 AF 5F 00 00  68 6B 00 00 D3 75 00 00  9E 7F 00 00 10 87 00 00  99 8D 00 00 68 95 00 00  V..»_..hk..u....ç..Öì..hò..
000119E0  59 9F 00 00 6A A7 00 00  46 B1 00 00 C2 B8 00 00  10 C1 00 00 D4 C9 00 00  1F D0 00 00 45 D9 00 00  Yƒ..jº..F..........E..
00011A00  2F E3 00 00 20 EB 00 00  08 02 FF FF 00 00 01 00  1D 00 00 02 FF FF 00 00  02 00 30 02 08 02 FF FF  /π.. δ..  .....  ...0  
00011A20  00 00 03 00 89 01 00 02  FF FF 00 00 04 00 48 00  08 02 FF FF 00 00 05 00  26 00 00 02 FF FF 00 00  ...ë.  ...H.  ...&..  ..
00011A40  06 00 03 00 08 02 FF FF  00 00 07 00 49 00 00 02  FF FF 00 00 08 00 17 00  08 02 FF FF 00 00 09 00  ..  ...I..  ....  ...
00011A60  23 00 00 02 FF FF 00 00  0A 00 29 00 08 02 FF FF  00 00 0B 00 19 00 00 02  FF FF 00 00 0C 00 02 00  #..  ...).  .....  ....
00011A80  08 02 FF FF 00 00 0D 00  1A 00 00 02 FF FF 00 00  0E 00 3C 00 08 02 FF FF  00 00 0F 00 41 00 00 02    .....  ...<.  ...A..
00011AA0  FF FF 00 00 10 00 3A 00  08 02 FF FF 00 00 11 00  03 00 00 02 FF FF 00 00  12 00 4A 00 08 02 FF FF    ...:.  .....  ...J.  
00011AC0  00 00 13 00 39 00 00 02  FF FF 00 00 14 00 02 00  08 02 FF FF 00 00 15 00  02 00 00 02 FF FF 00 00  ...9..  ....  ..§...  ..
00011AE0  16 00 03 00 08 02 FF FF  00 00 17 00 02 00 00 02  FF FF 00 00 18 00 4E 00  08 02 FF FF 00 00 19 00  ..  .....  ...N.  ...
00011B00  00 00 00 00 00 00 4F 00  00 00 87 00 00 00 8D 00  00 00 80 01 00 00 DA 11  00 00 55 EA 00 00 AB EC  ......O...ç...ì...Ç....UΩ..½
00011B20  00 00 77 00 78 00 79 00  80 01 00 00 FF 0B 00 00  9F 1A 00 00 42 2A 00 00  66 3B 00 00 58 4E 00 00  ..w.x.y.Ç.. ..ƒ..B*..f;..XN..
00011B40  88 5B 00 00 56 6A 00 00  B1 7A 00 00 44 86 00 00  E0 90 00 00 17 9D 00 00  3B AA 00 00 A0 B7 00 00  ê[..Vj..z..Då..αÉ..¥..;¬..á..
00011B60  1C C3 00 00 6D CF 00 00  E6 DA 00 00 EE E8 00 00  A0 EC 00 00 7A 00 7B 00  7C 00 7D 00 7E 00 7F 00  ..m..µ..εΦ..á..z.{.|.}.~..
00011B80  80 00 81 00 82 00 83 00  84 00 85 00 86 00 87 00  88 00 89 00 8A 00 8B 00  80 00 12 16 00 54 69 6D  Ç.ü.é.â.ä.à.å.ç.ê.ë.è.ï.Ç..Tim
00011BA0  65 73 20 4E 65 77 20 52  6F 6D 61 6E 00 09 16 02  53 79 6D 62 6F 6C 00 08  26 00 41 72 69 61 6C 00  es New Roman.Symbol.&.Arial.
00011BC0  0E 35 00 43 6F 75 72 69  65 72 20 4E 65 77 00 10  12 00 43 47 20 54 69 6D  65 73 20 28 45 31 29 00  5.Courier New..CG Times (E1).
00011BE0  0A 31 00 43 6F 75 72 69  65 72 00 0F 06 02 4C 75  63 69 64 61 20 49 63 6F  6E 73 00 1C 06 02 4C 75  1.Courier.Lucida Icons.Lu
00011C00  63 69 64 61 20 42 72 69  67 68 74 20 4D 61 74 68  20 53 79 6D 62 6F 6C 00  80 00 00 00 87 00 00 00  cida Bright Math Symbol.Ç...ç...
00011C20  78 01 00 00 CA 01 00 00  D6 01 00 00 F8 06 00 00  18 07 00 00 4E 07 00 00  6E 07 00 00 AF 07 00 00  x......°....N..n..»..
00011C40  CF 07 00 00 93 09 00 00  B3 09 00 00 7F 0A 00 00  9F 0A 00 00 94 0B 00 00  B4 0B 00 00 64 0C 00 00  ..ô......ƒ..ö....d..
00011C60  70 0C 00 00 AE 0C 00 00  CE 0C 00 00 76 0D 00 00  96 0D 00 00 C7 0E 00 00  E7 0E 00 00 4E 10 00 00  p..«....v..û....τ..N..
00011C80  5A 10 00 00 B4 10 00 00  D4 10 00 00 0C 11 00 00  2C 11 00 00 B2 14 00 00  D2 14 00 00 0B 15 00 00  Z........,......§..
00011CA0  2B 15 00 00 A5 15 00 00  C5 15 00 00 37 16 00 00  57 16 00 00 21 17 00 00  2D 17 00 00 05 18 00 00  +§..ѧ..§..7..W..!..-....
00011CC0  11 18 00 00 E0 1D 00 00  EC 1D 00 00 F2 21 00 00  FE 21 00 00 CF 22 00 00  E8 22 00 00 ED 7A 00 00  ..α....!..!.."..Φ"..φz..
00011CE0  EE 7A 00 00 FA 7A 00 00  1A 7B 00 00 37 7B 00 00  82 90 00 00 83 90 00 00  8F 90 00 00 A8 90 00 00  εz..·z..{..7{..éÉ..âÉ..ÅÉ..¿É..
00011D00  C4 90 00 00 D5 E8 00 00  20 EB 00 00 13 0D 14 FF  15 00 13 35 15 04 13 39  15 00 13 39 15 00 13 39  É..Φ.. δ.. §.5§9§.9§.9
00011D20  15 00 13 39 15 04 13 39  15 04 13 39 15 04 13 35  15 04 13 39 15 04 13 39  15 04 13 39 15 04 13 35  §.9§9§9§5§9§9§9§5
00011D40  15 04 13 39 15 04 13 39  15 04 13 39 15 04 13 39  15 04 13 39 15 00 13 39  15 00 13 35 15 04 13 35  §9§9§9§9§9§.9§.5§5
00011D60  15 00 13 35 15 04 13 35  15 00 13 24 14 FF 15 00  13 35 15 00 13 24 14 FF  15 00 13 35 15 00 13 24  §.5§5§.$ §.5§.$ §.5§.$
00011D80  14 FF 15 00 57 00 00 00  5C 00 00 00 63 00 00 00  65 00 00 00 6A 00 00 00  73 00 00 00 7B 00 00 00   §.W...\...c...e...j...s...{...
00011DA0  80 00 00 00 82 00 00 00  8D 00 00 00 13 1F 14 FF  15 00 13 20 14 FF 15 00  13 21 14 FF 15 00 11 00  Ç...é...ì... §.  §.! §..
00011DC0  0E 64 61 74 65 4C 61 73  74 55 70 64 61 74 65 A2  E9 00 00 99 EA 00 00 00  00 AF E9 00 00 99 EA 00  dateLastUpdateóΘ..ÖΩ....»Θ..ÖΩ.
00011DE0  00 00 00 57 69 6E 64 6F  77 73 20 50 72 69 6E 74  69 6E 67 20 53 79 73 74  65 6D 00 4C 50 54 31 3A  ...Windows Printing System.LPT1:
00011E00  00 57 50 53 4C 4A 00 57  69 6E 64 6F 77 73 20 50  72 69 6E 74 69 6E 67 20  53 79 73 74 65 6D 00 00  .WPSLJ.Windows Printing System..
00011E20  00 00 00 00 00 00 00 0A  03 50 00 44 00 46 00 13  7F 00 00 01 00 01 00 00  00 00 00 64 00 01 00 01  .......P.D.F.........d..
00011E40  00 2C 01 01 00 01 00 2C  01 04 00 4C 50 54 31 3A  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  .,..,.LPT1:................
00011E60  00 00 00 00 00 00 00 00  00 00 00 01 00 32 00 32  00 00 0C 04 00 F0 06 05  00 01 00 38 03 00 00 00  ............2.2.....8...
00011E80  00 01 00 01 00 00 00 00  00 01 00 00 00 00 00 00  00 2E 2E 2E 3B 31 32 3B  49 4D 50 45 58 50 2E 44  .................;12;IMPEXP.D
00011EA0  4C 4C 3B 31 3B 3B 49 03  80 01 00 BD D2 00 00 BD  D2 00 00 09 00 00 80 00  00 BD D2 00 00 00 00 00  LL;1;;IÇ.......Ç.......
00011EC0  00 60 00 00 00 22 00 02  00 03 03 88 00 00 00 D0  02 00 00 68 01 00 00 00  00 21 0B D4 85 DB F2 D4  .`..."..ê.....h....!à
00011EE0  A5 00 00 00 00 07 00 08  00 00 00 93 19 00 00 F4  C0 00 00 19 00 00 00 00  00 6B 00 00 00 34 4E 6F  Ñ........ô.........k...4No
00011F00  20 4D 61 78 43 6D 70 3A  20 4D 69 63 72 6F 73 6F  66 74 20 52 65 61 6C 2D  74 69 6D 65 20 43 6F 6D   MaxCmp: Microsoft Real-time Com
00011F20  70 72 65 73 73 69 6F 6E  20 49 6E 74 65 72 66 61  63 65 00 00 00 12 42 65  6E 6A 61 6D 69 6E 20 57  pression Interface...Benjamin W
00011F40  2E 20 53 6C 69 76 6B 61  12 42 65 6E 6A 61 6D 69  6E 20 57 2E 20 53 6C 69  76 6B 61 00 00 00 00 00  . SlivkaBenjamin W. Slivka.....
00011F60  00 00 00 00                                                                                         ....
[ RETURN TO DIRECTORY ]