============================================================================================================================================== 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 ication♪◙Version 1.00.09♪◙April 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, 1993♪◙♪◙♪◙♪◙♪◙♪◙♪◙Contents♪◙ 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 \o¶1. What is MRCI?○2♪◙2. 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 defines○2♪◙3. 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 MRCI○2♪◙4. 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 Support○3♪◙5. 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 Services○3♪◙6. 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 ○4♪◙7. MRCI Definitions○4♪◙8. 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 Example○12♪◙9. 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 Example○15♪◙§♪◙♪◙♪◙♪ 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 oration♪◙♀‼autonumlgl § 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 media♪◙‼SYMBOL 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 computers♪◙‼SYMBOL 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 nes♪◙MRCI 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 MRCI♪◙ISVs 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 public♪◙‼SYMBOL 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 Support♪◙MRCI 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 Services♪◙The 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.♪◙♪◙Service♪•Descri 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 ption♪•♪•MRCQuery♪•Return 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 information♪•♪•MRCCompress 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 tandardCompression♪•♪•MRCDecompr 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 ess♪•Decompress 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 •MRCIncrementalDecompress♪•Decom 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 Interrupt♪◙MR 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 Definitions♪◙The 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 server♪◙♪◙intMRCIROM 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 number♪◙mrciDETECTROM 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 plication♪◙mcSYSTEM 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 capabilities♪◙micapSTANDAR 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 compress♪◙micapDECOM 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 compress♪◙micapRES 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 use♪◙micapRESERVED2 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 use♪◙micapINCDECOMP 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-only♪◙micapDEINSTALL 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 definitions♪◙♪◙mi_ 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 struc♪◙mr_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 buffer♪◙mr_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 bytes♪◙mr_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 buffer♪◙mr_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 bytes♪◙mr_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 te♪◙MRCREQUEST 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 error♪◙MRCI_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 requested♪◙MRCI_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 busy♪◙MRCI_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 small♪◙MRCI_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 compressed♪◙MRCI 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,flags♪◙♪◙MR 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 server♪◙mdr:♪◙ 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 present♪◙mdp:♪◙ 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 error♪◙mde: 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 exit♪◙mdx: 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 >♪◙ ret♪◙MRCQuery 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 lags♪◙♪◙MRCCompress 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 ret♪◙MRCCompress endp♪◙♪◙end 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,flags♪◙♪◙MRCDecompress 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>♪◙ ret♪◙MRCDec 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 endp♪◙♪◙endm ;; 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 Example♪◙♪◙‼inclu 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 Decompress♪◙♪◙♪◙inclu 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.inc♪◙include 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 buffer♪◙buff 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 buffer♪◙♪◙mr 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: ret♪◙♪◙main 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 ,flags♪◙♪◙InitMRC 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: ret♪◙♪◙InitMRC 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 mple♪◙♪◙‼include 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 ne♪◙♪◙♪◙include utility.inc♪◙inc 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 ver♪◙MRCIVERSION 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 server♪◙MYVENDO 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 YVENDOR♪◙MYVENDORlo 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 YVENDOR♪◙cbMAX 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 capabilities♪◙micapMine 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 ags♪◙♪◙EnterCriticalSection 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 system♪◙♪◙ecs10: 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 success♪◙♪◙ec 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 atomic♪◙end 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,flags♪◙♪◙LeaveCritical 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 atomic♪◙endm ;; 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 => none♪◙DHattr 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 device♪◙DHstrat 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 point♪◙DHinter 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 flag♪◙oldInDOS 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 t♪◙Strategy 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 code♪◙♪◙itrx: 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>♪◙ ret♪◙In 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, flags♪◙♪◙Server 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 hooker♪◙♪◙srv10: 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 function♪◙♪◙srv20: 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 Decompress♪◙♪◙opr20: 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 Compress♪◙♪◙opr10: 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 section♪◙oprLCS: 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 status♪◙♪◙♪◙opre: 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♪◙ ret♪◙♪◙opre1: 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 t♪◙Operate 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 near♪◙DoCompress 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 near♪◙DoDec 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,flags♪◙♪◙InitMRCServer 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 NFO♪◙♪◙ims10: 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 in♪◙♪◙ims20: 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 ◙♪◙ ret♪◙InitMRCServer 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,flags♪◙♪◙Sho 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 install♪◙♪◙swi10: 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♪◙ ret♪◙♪◙ShouldWeIns 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,flags♪◙♪◙GetInDOSF 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>♪◙ ret♪◙♪◙GetI 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 endp♪◙♪◙code 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 History♪◙12-Mar-1993♪•1.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 product♪•♪•28-Dec-1992♪•1.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 6♪•Incorporate 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, richf♪•♪•12-Oct-1992♪•1.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 .05♪•Update 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-1992♪•1.00.04♪•cbDst 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 s♪•♪•04-Aug-1992♪•1.00.03♪•Bug 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 GetInDOSFlag♪•♪•19-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 -1992♪•1.00.02♪•Updated 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 code♪•♪•17-Jul-1992♪•1.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 version♪•♪•♪◙Microsoft 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 ‼DATE¶4/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 ‼PAGE¶3§♪◙♪◙♪◙♪◙ 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 ..♦■.☺É$%☺..►♦♦ É$n♥◄╨☻‼0²&*◘'*◘ 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 de☻i1☻P2○NormalStd ^.♥..☻ 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 .....#☺......☼→.◘∟☻8♦T♠p◘î◙¿♀─♫α 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 . Slivka↕Benjamin W. Slivka..... 00011F60 00 00 00 00 ....