From 5965823c934f177a5ef1cd30ae9ee5dda2a95154 Mon Sep 17 00:00:00 2001 From: sparky4 Date: Wed, 28 Sep 2016 12:18:45 -0500 Subject: [PATCH] ====XMS MOSTLY translated but crashes EXMMTEST.EXE ==== --- DEBUG.16B | 8 -- DEBUG.16W | 216 ++++++++++++++++---------------- HEAP.16W | 42 +++---- MMDUMP.16B | Bin 50 -> 50 bytes bcexmm.dsk | Bin 657 -> 911 bytes bcexmm.exe | Bin 104024 -> 105852 bytes bcexmm.prj | Bin 7812 -> 8149 bytes makefile | 4 +- src/exmmtest.c | 26 ++-- src/lib/16_in.c | 3 + src/lib/16_mm.c | 23 ++-- src/lib/16_mm.h | 14 +-- src/lib/16_pm.c | 193 +++++++++++++++++++--------- src/lib/{16_lib.c => 16_tail.c} | 23 +++- src/lib/{16_lib.h => 16_tail.h} | 8 +- 15 files changed, 324 insertions(+), 236 deletions(-) delete mode 100755 DEBUG.16B rename src/lib/{16_lib.c => 16_tail.c} (72%) rename src/lib/{16_lib.h => 16_tail.h} (86%) diff --git a/DEBUG.16B b/DEBUG.16B deleted file mode 100755 index a8fa9d1d..00000000 --- a/DEBUG.16B +++ /dev/null @@ -1,8 +0,0 @@ -Seg:0 Size:3552 Owner:0xc8eb -+++++++++++++++++++++++++++++++++++++++++++++0 -Seg:de0 Size:256 Owner:0xcf79 -++++0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Seg:9fde Size:28706 Owner:0x0 - -Seg:9ffe Size:24577 Owner:0x0 -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ \ No newline at end of file diff --git a/DEBUG.16W b/DEBUG.16W index 3a8eca69..5aadb17d 100755 --- a/DEBUG.16W +++ b/DEBUG.16W @@ -1,210 +1,210 @@ -Seg:0 Size:9835 Owner:0x0 +Seg:0 Size:9818 Owner:0x0 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++0 -Seg:266b Size:256 Owner:0x18a8 -+++++ -Seg:27e8 Size:53 Owner:0x0 +Seg:265a Size:256 Owner:0x18a8 +++++ +Seg:27d7 Size:44 Owner:0x0 ++ -Seg:281d Size:256 Owner:0x1696 +Seg:2803 Size:256 Owner:0x1696 +++++ +Seg:2903 Size:256 Owner:0x1698 ++++ -Seg:291d Size:256 Owner:0x1698 +Seg:2a03 Size:256 Owner:0x169a ++++ -Seg:2a1d Size:256 Owner:0x169a +Seg:2b03 Size:256 Owner:0x169c ++++ -Seg:2b1d Size:256 Owner:0x169c +Seg:2c03 Size:256 Owner:0x169e +++++ -Seg:2c1d Size:256 Owner:0x169e +Seg:2d03 Size:256 Owner:0x16a0 ++++ -Seg:2d1d Size:256 Owner:0x16a0 +Seg:2e03 Size:256 Owner:0x16a2 ++++ -Seg:2e1d Size:256 Owner:0x16a2 +Seg:2f03 Size:256 Owner:0x16a4 ++++ -Seg:2f1d Size:256 Owner:0x16a4 +Seg:3003 Size:256 Owner:0x16a6 ++++ -Seg:301d Size:256 Owner:0x16a6 +Seg:3103 Size:256 Owner:0x16a8 +++++ -Seg:311d Size:256 Owner:0x16a8 +Seg:3203 Size:256 Owner:0x16aa ++++ -Seg:321d Size:256 Owner:0x16aa +Seg:3303 Size:256 Owner:0x16ac ++++ -Seg:331d Size:256 Owner:0x16ac +Seg:3403 Size:256 Owner:0x16ae ++++ -Seg:341d Size:256 Owner:0x16ae +Seg:3503 Size:256 Owner:0x16b0 ++++ -Seg:351d Size:256 Owner:0x16b0 +Seg:3603 Size:256 Owner:0x16b2 +++++ -Seg:361d Size:256 Owner:0x16b2 +Seg:3703 Size:256 Owner:0x16b4 ++++ -Seg:371d Size:256 Owner:0x16b4 +Seg:3803 Size:256 Owner:0x16b6 ++++ -Seg:381d Size:256 Owner:0x16b6 +Seg:3903 Size:256 Owner:0x16b8 ++++ -Seg:391d Size:256 Owner:0x16b8 +Seg:3a03 Size:256 Owner:0x16ba ++++ -Seg:3a1d Size:256 Owner:0x16ba +Seg:3b03 Size:256 Owner:0x16bc +++++ -Seg:3b1d Size:256 Owner:0x16bc +Seg:3c03 Size:256 Owner:0x16be ++++ -Seg:3c1d Size:256 Owner:0x16be +Seg:3d03 Size:256 Owner:0x16c0 ++++ -Seg:3d1d Size:256 Owner:0x16c0 +Seg:3e03 Size:256 Owner:0x16c2 ++++ -Seg:3e1d Size:256 Owner:0x16c2 +Seg:3f03 Size:256 Owner:0x16c4 ++++ -Seg:3f1d Size:256 Owner:0x16c4 +Seg:4003 Size:256 Owner:0x16c6 +++++ -Seg:401d Size:256 Owner:0x16c6 +Seg:4103 Size:256 Owner:0x16c8 ++++ -Seg:411d Size:256 Owner:0x16c8 +Seg:4203 Size:256 Owner:0x16ca ++++ -Seg:421d Size:256 Owner:0x16ca +Seg:4303 Size:256 Owner:0x16cc ++++ -Seg:431d Size:256 Owner:0x16cc +Seg:4403 Size:256 Owner:0x16ce ++++ -Seg:441d Size:256 Owner:0x16ce +Seg:4503 Size:256 Owner:0x16d0 +++++ -Seg:451d Size:256 Owner:0x16d0 +Seg:4603 Size:256 Owner:0x16d2 ++++ -Seg:461d Size:256 Owner:0x16d2 +Seg:4703 Size:256 Owner:0x16d4 ++++ -Seg:471d Size:256 Owner:0x16d4 +Seg:4803 Size:256 Owner:0x16d6 ++++ -Seg:481d Size:256 Owner:0x16d6 +Seg:4903 Size:256 Owner:0x16d8 ++++ -Seg:491d Size:256 Owner:0x16d8 +Seg:4a03 Size:256 Owner:0x16da +++++ -Seg:4a1d Size:256 Owner:0x16da +Seg:4b03 Size:256 Owner:0x16dc ++++ -Seg:4b1d Size:256 Owner:0x16dc +Seg:4c03 Size:256 Owner:0x16de ++++ -Seg:4c1d Size:256 Owner:0x16de +Seg:4d03 Size:256 Owner:0x16e0 ++++ -Seg:4d1d Size:256 Owner:0x16e0 +Seg:4e03 Size:256 Owner:0x16e2 ++++ -Seg:4e1d Size:256 Owner:0x16e2 +Seg:4f03 Size:256 Owner:0x16e4 +++++ -Seg:4f1d Size:256 Owner:0x16e4 +Seg:5003 Size:256 Owner:0x16e6 ++++ -Seg:501d Size:256 Owner:0x16e6 +Seg:5103 Size:256 Owner:0x16e8 ++++ -Seg:511d Size:256 Owner:0x16e8 +Seg:5203 Size:256 Owner:0x16ea ++++ -Seg:521d Size:256 Owner:0x16ea +Seg:5303 Size:256 Owner:0x16ec ++++ -Seg:531d Size:256 Owner:0x16ec +Seg:5403 Size:256 Owner:0x16ee +++++ -Seg:541d Size:256 Owner:0x16ee +Seg:5503 Size:256 Owner:0x16f0 ++++ -Seg:551d Size:256 Owner:0x16f0 +Seg:5603 Size:256 Owner:0x16f2 ++++ -Seg:561d Size:256 Owner:0x16f2 +Seg:5703 Size:256 Owner:0x16f4 ++++ -Seg:571d Size:256 Owner:0x16f4 +Seg:5803 Size:256 Owner:0x16f6 ++++ -Seg:581d Size:256 Owner:0x16f6 +Seg:5903 Size:256 Owner:0x16f8 +++++ -Seg:591d Size:256 Owner:0x16f8 +Seg:5a03 Size:256 Owner:0x16fa ++++ -Seg:5a1d Size:256 Owner:0x16fa +Seg:5b03 Size:256 Owner:0x16fc ++++ -Seg:5b1d Size:256 Owner:0x16fc +Seg:5c03 Size:256 Owner:0x16fe ++++ -Seg:5c1d Size:256 Owner:0x16fe +Seg:5d03 Size:256 Owner:0x1700 ++++ -Seg:5d1d Size:256 Owner:0x1700 +Seg:5e03 Size:256 Owner:0x1702 +++++ -Seg:5e1d Size:256 Owner:0x1702 +Seg:5f03 Size:256 Owner:0x1704 ++++ -Seg:5f1d Size:256 Owner:0x1704 +Seg:6003 Size:256 Owner:0x1706 ++++ -Seg:601d Size:256 Owner:0x1706 +Seg:6103 Size:256 Owner:0x1708 ++++ -Seg:611d Size:256 Owner:0x1708 +Seg:6203 Size:256 Owner:0x170a ++++ -Seg:621d Size:256 Owner:0x170a +Seg:6303 Size:256 Owner:0x170c +++++ -Seg:631d Size:256 Owner:0x170c +Seg:6403 Size:256 Owner:0x170e ++++ -Seg:641d Size:256 Owner:0x170e +Seg:6503 Size:256 Owner:0x1710 ++++ -Seg:651d Size:256 Owner:0x1710 +Seg:6603 Size:256 Owner:0x1712 ++++ -Seg:661d Size:256 Owner:0x1712 +Seg:6703 Size:256 Owner:0x1714 ++++ -Seg:671d Size:256 Owner:0x1714 +Seg:6803 Size:256 Owner:0x1716 +++++ -Seg:681d Size:256 Owner:0x1716 +Seg:6903 Size:256 Owner:0x1718 ++++ -Seg:691d Size:256 Owner:0x1718 +Seg:6a03 Size:256 Owner:0x171a ++++ -Seg:6a1d Size:256 Owner:0x171a +Seg:6b03 Size:256 Owner:0x171c ++++ -Seg:6b1d Size:256 Owner:0x171c +Seg:6c03 Size:256 Owner:0x171e ++++ -Seg:6c1d Size:256 Owner:0x171e +Seg:6d03 Size:256 Owner:0x1720 +++++ -Seg:6d1d Size:256 Owner:0x1720 +Seg:6e03 Size:256 Owner:0x1722 ++++ -Seg:6e1d Size:256 Owner:0x1722 +Seg:6f03 Size:256 Owner:0x1724 ++++ -Seg:6f1d Size:256 Owner:0x1724 +Seg:7003 Size:256 Owner:0x1726 ++++ -Seg:701d Size:256 Owner:0x1726 +Seg:7103 Size:256 Owner:0x1728 ++++ -Seg:711d Size:256 Owner:0x1728 +Seg:7203 Size:256 Owner:0x172a +++++ -Seg:721d Size:256 Owner:0x172a +Seg:7303 Size:256 Owner:0x172c ++++ -Seg:731d Size:256 Owner:0x172c +Seg:7403 Size:256 Owner:0x172e ++++ -Seg:741d Size:256 Owner:0x172e +Seg:7503 Size:256 Owner:0x1730 ++++ -Seg:751d Size:256 Owner:0x1730 +Seg:7603 Size:256 Owner:0x1732 ++++ -Seg:761d Size:256 Owner:0x1732 +Seg:7703 Size:256 Owner:0x1734 +++++ -Seg:771d Size:256 Owner:0x1734 +Seg:7803 Size:256 Owner:0x1736 ++++ -Seg:781d Size:256 Owner:0x1736 +Seg:7903 Size:256 Owner:0x1738 ++++ -Seg:791d Size:256 Owner:0x1738 +Seg:7a03 Size:256 Owner:0x173a ++++ -Seg:7a1d Size:256 Owner:0x173a +Seg:7b03 Size:256 Owner:0x173c ++++ -Seg:7b1d Size:256 Owner:0x173c +Seg:7c03 Size:256 Owner:0x173e +++++ -Seg:7c1d Size:256 Owner:0x173e +Seg:7d03 Size:256 Owner:0x1740 ++++ -Seg:7d1d Size:256 Owner:0x1740 +Seg:7e03 Size:256 Owner:0x1742 ++++ -Seg:7e1d Size:256 Owner:0x1742 +Seg:7f03 Size:256 Owner:0x1744 ++++ -Seg:7f1d Size:256 Owner:0x1744 +Seg:8003 Size:256 Owner:0x1746 ++++ -Seg:801d Size:256 Owner:0x1746 +Seg:8103 Size:256 Owner:0x1748 +++++ -Seg:811d Size:256 Owner:0x1748 +Seg:8203 Size:256 Owner:0x174a ++++ -Seg:821d Size:256 Owner:0x174a +Seg:8303 Size:256 Owner:0x174c ++++ -Seg:831d Size:256 Owner:0x174c +Seg:8403 Size:256 Owner:0x174e ++++ -Seg:841d Size:256 Owner:0x174e +Seg:8503 Size:256 Owner:0x1750 ++++ -Seg:851d Size:256 Owner:0x1750 +Seg:8603 Size:256 Owner:0x1752 +++++ -Seg:861d Size:256 Owner:0x1752 +Seg:8703 Size:256 Owner:0x1754 ++++ -Seg:871d Size:256 Owner:0x1754 +Seg:8803 Size:256 Owner:0x1756 ++++ -Seg:881d Size:256 Owner:0x1756 +Seg:8903 Size:256 Owner:0x1758 ++++ -Seg:891d Size:256 Owner:0x1758 +Seg:8a03 Size:256 Owner:0x175a ++++ -Seg:8a1d Size:256 Owner:0x175a +Seg:8b03 Size:256 Owner:0x175c +++++ -Seg:8b1d Size:256 Owner:0x175c -++++ -Seg:8c1d Size:273 Owner:0xe3f0 +Seg:8c03 Size:273 Owner:0xe3f0 ++++ -Seg:b81d Size:18402 Owner:0x0 -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ \ No newline at end of file +Seg:b803 Size:18428 Owner:0x0 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ \ No newline at end of file diff --git a/HEAP.16W b/HEAP.16W index eee55bfd..59a1b45b 100755 --- a/HEAP.16W +++ b/HEAP.16W @@ -1,35 +1,35 @@ == default == - USED block at 280a0016 of size 66 - USED block at 280a0058 of size 66 - USED block at 280a009a of size 136 - FREE block at 280a0122 of size 18 - USED block at 280a0134 of size 20 - FREE block at 280a0148 of size 7860 + USED block at 27f90016 of size 66 + USED block at 27f90058 of size 66 + FREE block at 27f9009a of size 18 + USED block at 27f900ac of size 136 + USED block at 27f90134 of size 20 + FREE block at 27f90148 of size 7860 OK - end of heap == near == - USED block at 1809e426 of size 12 - USED block at 1809e432 of size 332 - USED block at 1809e57e of size 52 - USED block at 1809e5b2 of size 20 - USED block at 1809e5c6 of size 20 - USED block at 1809e5da of size 20 - USED block at 1809e5ee of size 20 - USED block at 1809e602 of size 20 - USED block at 1809e616 of size 6630 + USED block at 17f8e426 of size 12 + USED block at 17f8e432 of size 332 + USED block at 17f8e57e of size 52 + USED block at 17f8e5b2 of size 20 + USED block at 17f8e5c6 of size 20 + USED block at 17f8e5da of size 20 + USED block at 17f8e5ee of size 20 + USED block at 17f8e602 of size 20 + USED block at 17f8e616 of size 6630 OK - end of heap == far == - USED block at 280a0016 of size 66 - USED block at 280a0058 of size 66 - USED block at 280a009a of size 136 - USED block at 280a0122 of size 18 - USED block at 280a0134 of size 20 - USED block at 280a0148 of size 7860 + USED block at 27f90016 of size 66 + USED block at 27f90058 of size 66 + USED block at 27f9009a of size 18 + USED block at 27f900ac of size 136 + USED block at 27f90134 of size 20 + USED block at 27f90148 of size 7860 OK - end of heap Memory Type Total Used Free diff --git a/MMDUMP.16B b/MMDUMP.16B index 98f569f2080d89bce45072bcefa9a80af0672eb1..a2763a1596e554e4e153a06f71fbf4a8a14339c7 100755 GIT binary patch literal 50 qcmXr0FfcH3u`+OVc2UsKWzbZxRWPzNFz4kmfJ(TzxB?{v5fT6b1_^}# literal 50 ucmXr0FfcH2wsN*`byCpKeW0met6*edY{tuF0F*Ftv2u1Zw**QsAS3`G{t8zB diff --git a/bcexmm.dsk b/bcexmm.dsk index 2bd2d3e635824f5d27228d15dc04eea450bb5d98..1fb336b1a1cdb0704999bf60511fdd3701586242 100755 GIT binary patch delta 228 zcmbQp+Rr{gNwt81g@J*=j)4mZgM*x7d_0|E49((096f#XoEaDy8h|)|qN5}u!$fUw zc@G9HplB6?0RuAw8-of^CmT>7P%Iz-L{2Vb6yb(y{lX~Bv~k8>M&2+61|y(CAegN7 zVzL0E0t-mRWCJF3=Pm{*sHB3-WVHk(1_lVt1XPS&h65-AF|d~51k6A_4A-(TF#P|| GzyJWGA}TKc delta 85 zcmeBYpU65viPMUKnSp_UgMnjWqPLPWgO;8LLluJv0}}%a0~b(&4JhIq5C9?>zA)}( joXp59wux~$BlA~AlS#~yOh*hsA{-nHM-2b}XJ7yTb@CA| diff --git a/bcexmm.exe b/bcexmm.exe index 47d175b724c0672f225118c28b42dc26bbd71b92..ba460567b992edeea1a7849af7af7ffc8e663718 100755 GIT binary patch delta 35641 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 J^y^R3{{k-jUq}D| delta 34317 zcmc${2Y3|6(l**@W`m?vmR4yc5C|cWM9vwJK_rny29t9VVF7^&A}_F*91R#uHptk3 z$R-(+jKC(^7%-Te4d}i-vs%DD_ILjOe$TzjQ=@mPb9GHucXiM3W|x|^LG`ZRDvFLH zeOM+TBs;suEbmJ8fjpIW1|@;MWT|`+Xa;B$s37PlP31d5T|tXUDjxyr18NQO06jFM z@{6EM(0Y&)Gy+ryR0t$Mht*V`4(bDH1gZ|o3;IJzwewv{DqjlPBv1foG^hrs1jrkd zjfzEkq;h}IYjY~U1UdlP21*9i07Zk|no{{f&=k-opvoXm&;uhX2U-Cd59$i44JrCluMwKpxvO2pkbhHpw^%UpyD8V6fUp0L%k2$2l@)M1~eSh1Y`xN zpy$k?{stNf>I(7#Eu#)K5_Fh2)D55+ps}D%pkz=rP*G3>$O7^Z4)rIVr8WThfF80e zyLyUcsmY*XAV1K0nx)PIrGPv@%}ADN1m!bisezy`)GW2VlBG5QRR$FUMS(m)Z$y@Q z19S$o7Zd|p=#iy<3MvOG0g3`q(0p^2I?-&;Qu_mVf!>(1)ZakcLCrxCAOq-?F-v^} zx(QkZ>JDlPI_jOJb^&Etved<(@t~ogqyAayWDo;g@*S*kZ^j8B%@0(3Gs zOa01@%SzA;&=2)ZAJN`mHtMuYl;5<&Sv-k@ip zS?V>=e$bbo`JgmVJ5U`^1yB)C9#HWBTs{rSQU`++&|@oF3OWP|3(r!`paD@?s+DxJ z1b}=%j#Ra*DbU--0=+|7;I`drHO1j$7Hn6bgL$^0fsS^b)p1?r>Ezxdb6Z8Ph7`Bc zEhTY1WGR8`pOy$*L%d^ft?V6DI?#K1R^;(!>GzUt84{-tF?u{7T;gtoyvvNqw#+6m z>9*Nq3p@LZi?wtP$q01J_pV-5CMcGfl$1S0y*)BJvaQTV&nAPCB!tL-PBK8}g5wIf zT|YZgGPl`$rpqdR>02;CD{yj2JITn-j!bF0pOFu%C6aHi%T7P+4nSguhhI3-#`>k< zy1_5TLu){adKxu#T=t6x*W}+7*M9z^J_>v3UliQ$uxJAt5i6vPTJ$)I=c0P2oj+e!<`AIV^ zx9h!a>5)0uQ)iBiiDB7qGYEq)0v$gDgp~~RPRc;0i0H_lcF+}VS$RF}pKm@&TQ(-393l)U;RGgB3{gZq$^0+Xl90(nSysDt~G85E& zo=H=rw0lOWOOB~wbwf3QF3UvDG zf($B%7`emCpnx{vA#L<{`}J%_g}N#%vz?syPQP2eN6^GKu8;#-%r~QoZ&s7sk#o>K zk%RV2{ooc;h2xBSx?dPtLZAwn!zH zY)gik;aaZhvy` zn?T2qJo0&7oF}}PUR=;b60>{)NpJ8jJ>|{qm-mP6*DIMGGy?(Cassa2AFvMD-^)`} zc6Qd0#CL=oNqj?OT~S0%Y!pyFZ5l@YYLNoHk$dPP(Oe6kIXkcQJlV={+*uLGO5UTK#QGe{o=`#EKTnp#O6Wtfc&{|Etx;sPfIjf z+|Ck{6JJhFe2ubu=Ff*fNB%`tEihTQa&u{CB%;)eD-*5-rkF8IrjJ%XC{UK}SQJ+W zqciH0j3CE@xHv7Zk1`s>?^H%pw>$$5VJG4v?h9*;n zN|J8>bmMMt`lXM@yvBHl1!?)=IKI7NdWw27*8o3lOnqA@43!Njya(5;!sl__SfqA< zETUMp-pcfn+d0$-Lvun|1Scj;!S!@PFs^qJ3gK!kdO>?|WF&9sS{`;V4|UB65j+s_kD_$M%>!kbzCv2+v|!=z_oDkNw{VduYv2k;%jkTQ$pIaLnT_^YAcz5 zYf{N*TnCjbg6ry%GVKZN`lMv8BAPT(MEueCGutbl%!PqXGcsxSM9#pLKE#|p+VjO> zk~!FdKCE6U4jJ?bA~hyrd4aD@8x~t` zj24u~akAVj4PC;uYz5h@4i)@y9bBPcPLj11@`CYwh2psKihZPU+nME$ylt$Q`pQ?n2!9mHOcNZ6zty_{t%Uu*%*V%8zTa%96XVa&261R*uuvTWY?; zT17rEm8-}nt4kGGp{Z5=_{hwTuPTMNscMv2%A?qGO))N3l?mQe4bh_R5g2fwF1f1} z12?&vEOJb>czWHjp;~<&5T50DQ!RqmQWyIEGy{L>)h=tJL&#-;NDsT}!h zl`OswbMdr;W<0wrJMmrG=y#n*o{5x?hApGm2g%$Ii=RyBsP%`fH>S7f3jOIQmbr`g zBsI<+@-lnK^97?kvK&il7vYHFI9*%zovBWE16KlDMlIy4cbiC0RFz|%$OE&@H`zm8 z+cHwzfu4U49R5DgQJ_w7E(_{Zr<_*M@;cFm*?Nr~$LoZl&|7s1)ylxq0_q`~miU@! z&CAl7rwy~Z;8l-AqZIruJ+;)J^hC2qqNikDbY^R{pMrMt-0bj`j_T7eGm}fAwyXs+qm>uqWp73vv>;6hiCQ%mzOOh^LTO z+UPggvSDjoC4AAag^TyGTNh)zm|bW@X-hacC2b&0*nk!#vLAE_jz8qG(v9~uoe z+;`=Y)VO_o0bY`T%tM@f=qJd z(LK4bp}!07PhRheYDUy`GU^aSo$d;r*gTeA-?q7V32NBuV%=*o+Hlu}`?pLom=vuY zj_+F5i7cUG*%t>>ZpVy;RrZnDHFd>FXjPT=aSUoT3Z3$})vS;{N)m?AGf4~H6q6&U zS-+8^^`h3Yf1k8oYoDiDdg-Pf-(g-*P+dwkt`RCW6qMSYJN;Am2QH;3j8Gx7aeu znWkrD55Z&SiQ(6AsBI&QFC!kgw_Bz4_t!sep|a3TF-H*T>;m(>i;%~&s}J%(6YmfshlIGQ#-RPXt{-?2YEVXbn1lMpLA*+qTQ32$u(KbB(DIX+t?by@c|WeHUFPBH+x0lEm%E;~Rz_B~3?q!+rzWY8B7;?djrVmN z>lPX%1NFh{E6ainxn(%}K-yIt;*zR!uV)6Fp+PRu4_ zMrV^DC2Sc--E1@hEz=7a3t}u{**l?TH3)#d-^}79r7Ah zd_e=aVE;o>t@;<;>Conv?i;aSL8RTut z2uRB55^)#LZ`k`=TSo5pH(K8B60^~6Hjv+;*_bS#p0z>=*!d;5UE_u_EUGf(^c3lv{?py7?6&DNXMm~2?+G;H38Szy@qJGiX06wCTi2eroEejxvuwc z+GJaFpL`U5>h?{Re^&Gxh(C^?0pEJdqB97Et8EOLyTfsPKuG+-_l4!G#q=g$LBK~% z{@syxU^(Q}VPL#pP8-MUo#knecH+5X$-v0K9QKrnvph9F7DD_TX9ng*vS$NJ;#y!( zaoW|%`FOvvZA<%bq~kg5P4UqWAm_@w43AQu<5zWldnC=lhsoa zvoR)onv^Xal%ZkT+DYDFUf@_eyagiD)P(RBkX_EQ!Zp($dv7g~>&$MB2C0>Dk0M`t zXt}+WxwX)8^AFW?!<{X|;ng2gC<2Q$WR7jWmZmwL;+oWE()EPa2ghQe09`AXY@y0V6;AY__ z%6)?g#nbE|k1Rd?YlYZ+bhu%j%oHhg@?JrMb1NtMIYpfX6rMT<5;uF zB~TOe(C%&5>|fHti`}M7Q!UK2-q{aZZr^wYYf&<1ieqz}7#C(g|H{39 zu-vZu0)wNh_>qZN)XG(D82;RCp^cXx7JBdRg%(Roy!ZD)a|&zu5;>!E_e}3o$vBwe z=$cj@B3+qQrrvwYJh+(U_E%3ojQ#c*V&~+wLe}!b&^9u!oEbwX*4*73vEvIF@4nWG zusFt!iQYDL{48cU=N2;h)8vSnSOsNwoVbKmanMQKfqPDxWN7DF(7c|M&&3(#;%u2* z&_{Od@_6E*79@j2wk>|!{mK2PEgu;9HAX(-UZst_m+7NFWh2w`RxoL6N^z&H2r^9D zla#$@0h43P>Qz!fU({4N8RV;lJlM08eJy0jU2hj-t>a312;Jg%nO-2@E>ywPEBEiJJwI#NP`@$ru7K4a(6UEkM>|sgyZ70A~eQfo?aXi)=JX@ z1LOV{D|=62NB8L+XmQ8!>76kPEHa}HW~xhPj0i5LH|f1cCheY83O`|HsM?rAscSkK z%?zeZ9o=U>q9YuwXBDN>9Mfl6A=cR0xg6ikYNw&aC8bbp8OyPVbK9WfAKqlWzp>o@ z@+SJepDlwq{+u0c_rQwDB@W%r^?;p@b~CksID2O=FiZcH*%iz>@0mI3RZ1=iP(*I{ zE8L-&8RR9|C8IF~>g;A3p}&hAUUZ;iy(1>i_rD@hpk9gg$a<1Hp39G7xxLNt+R;e) z@hu8)^q=G3E`4IIhH&UaHjLp;ILQ1bhDZdbl0Tlm_b92cE#rtgH;iy{kh9#*euI1( zL(CW6hvf`Iy51d_(=xD2RKdxbl`#zAcN|jZ@!epC}TsWo?3n~PX_ciL*Z-HNtZMFpkXkxu~O$K!s zFlcbU`W?FWso$k{Y<@E_^{bG#NbzAN7b~elw=M%UjvkcQ?=K;V{kA18%xq%sjVxmG zSICP917)UB_3N8S-=1dDueWyJrE`?Li*dy>A)=Xd?B1>8;I3V}45*;r$NZJ?;XP`F z^nc@+Oar=f=)BGIK||_YDynFagpyGSMavc`Uba|?Z9N}Wp&o^?Q(OX6j&$3$^U-e3 z%*4^?aX!bAXQQ`8Ja4ILg4!1M_L342VI^b%dqErVULqegKww9R#b6-vUz9T!r(xo< zay->pnbVTAp>rswN#UdEw+s=zLH^h&B|f0C68Mr6&R;k!Ko2^71nr4GBLxj*2dQ(u zpeM~EX??89NClGY?5iNwdFLX9whX^Oy99t;pPbb}1M(y78wgHAa>nVa(gNmlR2neS zj08Drs*u5^vElHQbq(o4Y&bP#T}wKX88}8|T}L{Ria1|o{elc7Ur4Z?q>>Xjfo0u5MiLL4 zpt62RMv(eADrMaW=`_GP*SZNpvC9>&bu;87*GASYWC0O42W8z#K0`+VY=dZ=I6Yd`9w!~?EyWIWf^?uQacIbTlC-2@SQT2oC+(?R-&;?Sc2uqttv`?!^t=S8Npq^= z1d;U&NugyWI7`~nK@yxJ=~Trz9_x8Bg*K4jM>3gyE5QXaiAwL7HH%E7asqC>NIs=p zIP9wR5_w1oPViWNBA00$34SI&(`20Ov0f$*=rReeko&YQPXAc1lAov%XM?QQ$R(O6 z!F6(xo|WJR`GZE_M340sa*wXSF(B)&|xJH-lDwf;u#Q25eS>n(DdO2@F> zdYjy$a&N$Thx|sR6WRJZxk-!TB#!ki`IXA`z4adX1-mu?e~=sW4UWE8@006v6wbp~ zACPNQuJo-B$yF+MZLE*T6)Lv?tdB_~lnEpJ69U(l1W$2qCgn`z8RGEY9B>|D3Cu`RvZ{20RZ6=1Oh}!5Co7% zf?$B{9KZ^&LxK>1D-whPT$3OS;D!X@0KZBQ0nk(c*Z}rO5DAbeK@>&hPf3&uEKda> zH-MJ}(P)`Pf;{vz^^qVif@~7R0K`g=4b3tk*ssx2-BzcWK zVTBR&R)Qi3dM7~wO(f-8N#u_0PVdf90xhGWNOoUFE(Y*Wg5u6Ic`$i)@fF z%AgTiQSMwy)0!kms-m0YPM$z(lU*{EyQZ?FkCVGoy$5zwP#RZrS;U58l9*PnJ=MdXhI1xP#o0-O1e<%EGiF-j|vqm3V5m>Sa_$TeULWjdpWn zGObtK>8s#*(u7%+)+LW+J*v@a170($mHYsppzt zq!yRX%thOIS+C{k&*({g)!_ve89DhD;w5-0? zpq4q(`!3T18@Pkqt#^Y~w7#wc)u=t5+?J1kY`ym2wT9+vV@n$VP55mAv_U2X zKCkHLeqP*#xr>*;H8wP~lQXh-cWif<8@RRdU*gChtsWgA zJgpNuc$=Fve<8l!_=G)@P-X&D{#p`~@u zmzK~$KU!D^{i$4^Aj1Jvu44cOQf%Z(FbE?OEI80$T2W^Wp*3_clvdTjFwCmtPaRIn z>mU^qX^k_2M(AK9`cC7FLR&R38smos>=@%TFa{FRz*uyd2F7V|P`;X$6E>d8MJG5D za*};Y`oTC(hL{Lsty&gj_cnG5sF{b-3>A z6GXqH+nwRTSP#~5mI|gd@y8xalS$x> z5UM+j)S>h{oimIs*THaVKcJ&jx?cw)=qeqIq!~IGML*ZUf3L#-y#_bavvzC5|E&t^ zErSXl#EPi0^F=6aVvnakWByphg!Qd^Ecsb4uRHxs2R-O59rUDkbkK|bp@ZI3UmdA^ z=xd$Rm%h+JKZ?y@{M7#Rl@12b2Rax?pXp$boj%mjU@BKmh&_bLB@n<+Ds(W6UX~0w zmdN!MKq{3hFn|&Cnhr+NpL8&a-q68+*Adz{ij4lh9ZU3vp(C;}kCDQUr(xQVgIUGD z0@tk7Qy*5!vD#XvnH@R9N_m!>YEQ76VU(_R4g>{r%ItD+Vp?TFbOTV|xCm%vX3m4#SbIabxi;`cdzoROZ7 zD~>yrJ0Ew>?y~fnq5OZU+JCNDC01AODQUa4@vbsB+VJTPsshf(wU@o1P3ffYGy_l- zaWH^757=lzOBc@_%U%Bua>`leF*(^stt$X%In@Htra-j;w3$yG0Bw{`bk>igd6Qfb z%Ym&Wb+2UVV>s6;T8=f)1usi>W#2&0z5#-?iB&djAZv_Ck8?kAt?UYSr*P-t&eaXv z?U8YEvUlRNenoo&U3L`^ptZ&w!=1*Ri|j)!&i^8?|0Tx{CTss#*ast}^mkzN=uV|~ z0-y(#-U)!7G`|iSv3fe_MGNYnH!ZJ&KC~Q_`cKrpw6xCZM~mv9KP{_+0kp6V2Exm( zMIJeZqTZS>SGBmY`bAE0b8QxFty_U?i>}&;~J&G+@Kj+!pG*`aa zbfB(qDQtiqIe`wMnNp429K>;kMZ>2vM335@4c4PdWze3ZJm6>xhiY^%)gJl|jOn9T zM}TaZojX-K=E^55C!eltDE(Q+=?0)Zs-Lh_eVlg3>BfxC-O4>~M-S;c(>fu6eoK?2q}^G&fhE^F5EAF5U-r~2U- zv;QHE4APqT!6^2=iO#qf8s}M$?xI>1C$U}5_AyX6*?QN+z!e!mx?J6Yaf1mcLNfx{ z^ef%Qj0Z={P)-Llk^RTg^^SJuBY|eu>v$lUW)dc|ubnI(9>ZPwGcpae(9GF%08JHU z0OZtNuOQOs8Q00l#htMPIr-{wK5Y75lDi`V=xa~&G_24*PM;0YY2tO4>W(ARyJe_> zW9ZBODY-k&N6CA-?4Vh9Y*c`JHTx^AwkD5k0Id&rj$r=YGMS^xR=Pj}-AgND{>^5x zOqwLYEVj=%J(fln_{ZLMu>DkXvrJ<~y*727mt$#ObkWEC@b}`R4ry_m%;j_bzl-Be zB_AM7p!3;0m(>Q+8|e;{vE?$x{22xtt^ID`4ss8$pU_$Qc-EbMrh^`Ifew1oMLOt( zoiI7DslDkY9rU3a-Bx?O&gw^3>!3e80b1+p@*@r zcLW=G-(lARW4-IE=G#dL{3D|=xi4CSp!r_<_uF0ILz)24hSZNt~l?tC2`!M~tW z_G2TR(gkTqxbk%^fA85^Mrp*U+{0K5I<3~xJ>=URcaI0XtcOa z^NU|-L2-+g70+k|@ru?KuW3_3SVuuwAHmp6p|ZKc$W{m|TO*>_HWAJCiM;G55yNhZ zSaw&$vDYG=aV3F8*p;FzUMa?kC?!}kr4;LcudVb{%Cf#n1vXTv#KtO>*#xB;o2JxY z4keMTQfjij_$tdWr7kK(y*9qHY{Zsh866PVHLY=Si_zf*0C_- z1{Q1F%HoaRveL%gEZMl1r5F#gp2kCLvhgrmV?4?Z8IQ3u#^ZMO)OdpVnohF3rXN@h z(`nYybcXddonsEu1-8tT#nziHvO}gz?2+j*W9BO?zZeYVH^kR35UVrR^c*;VsX_PhBR%QnAYRu2;o^RV!I9^Sl&hc7SV;m<32 z*aLYzk6_-)!^+!xMDV^Ik$jj(6d&i2o6q#f!`FG_<(oY6^HUyi{8x{HJlmrXS3HYw zKhFeS*0U(D?pcgC@GQ<-de-GBo(*{q&m^Ai*@(~eY|Ov#Y{IvDHsjxWCi5RW+w$|C zo%nUnF5J(nC#W}XF_!r}-m;jNvMl2@EX#RU%PKz5vYL;xtmShp>-cKR7ks^CJ>Ci2z_TnH z`5nt99^$=&+q}Qwao*qZqTYLWCGWkwz4tyo)_Xs83c9p1G%$>JeCzi^w+O&;g-J1_2YmpAjd&wKbh;3Iq<^7%fG z_(Gqj{7awb{HV`Me#z$*zvlCr|LXIWKk<3TU-@Kn)t86}Un=tYGEvl*i}Jq0E~@*g zBGK0<`udv0P+zkc@9QC^_y&s^zM*2FZ-iLpYZLo?qr{KCxx{tf+~T=!w0Ps2N0|Kb z3U9v{QNS<1DCrj`%J>x(75z$yI)0@^C%-acykA+d+ON9!!mpOt=~r7E^lL6o`?VBz z{aOj;-&#cYw-Isv_7qXwzn$po-$4xW?(IC0)TP2BLG zARhRCDvSZsg-5^w5gf2k6bo1^DhDhTwE~ulHUXz%KDyz&^nO_X}nZJS55n9u_qNzY|RZkBQEK$3?fm z6QW1pNzprSuNWS9R*VZgFVX`qh|Pgn;y~aP|$5LHt3F+8gy5D7IaVS3c4?T4tgN220auvf*y&RK|hH{K~Kf&pl2d1_@%Iy z4}K+T1$!v_Ip*4oNJ zYaQj7wXX7mwZ8JZwTbe;+QP2F^RLQ<4~kZwv8-Z+d3>8~^j8K5MG3{qNz3|88P z3{~2N3{yIXbODW4hKJY{d&n4NYDk(gJ7j{gGGvmnIb@2mJ7lVIEM%H;F2tc+44JFk z2$`om2$`?E30bHZLKiCmp-Yrpq4P1@Sc?-8>qsojcsXL%Hzqqt3)t&+vI*AzTXGfigF85Eb{Dq)A-PAMwa_$<1d&!+Yan8;InKK+p|pjY@} zdK2dJ5no1M^A(hdl~fU*!ve0QLE=jqE4I?|VmqxNcF+c5Cv7Bl(edINI!WxN>0%F^ zAu{P~v5(FZ2k2+wAYCjD(`DiaT_ujv&&4tNg*ZVsh?8`)I7PRLALtHo&Q3GLd3r%y zpqE7!y$*Bxi};n^7dNSga*O&Zw`rjAI}KJI(I{mz&96M8<&+n+s`8T7Qr^=3N;VyZ zkEV@RjBK%DW-AmgwqEgJ+ZA87Q^Cqg3BH16sAX6w z)n18JRI9N%YE9Nbtql`dm(5j^*b=o7+oU#T->NOx9RWtui;;ME zw2P8JQjl0laZ-$wgff*UwV_Q-NFt7F*1{Rk1~}4{!kO84hy(i36hs+8=Yn0XWw+5T~>TV;(pJ2dIXU zLUbf4Nk?O@mqu#QRMLP>AWi9~I9)giXBMa7wBroYmrf@G=qxgm&L;Ee9P&AJlFjrp za)K@(XXqlFvzv=!cuR@>j@(hH{=_ZNsh98Qs3ZA>vuTmdLGicfzx^qa8QrXz69s!A%S5y8<+|Sj39PMY7KUI zzocWyE;<>f5T}vHkWMzFgzChEFXN*`Ds-ePpi=a zv^p&Wk2Fr)!FSyNKJJD{)(9yYBStHPcBHj2?$x9Hz#T%{(xG$&9Ztu=@#&x=u?8Lm zR~wc&bPPtpvGfdFDi`P+`U}>=zfh;0zM=CeV+*K>Eu#6^Vp^OnrRCT%n#h)8VX+B| zimzxZwu2618PpC>(MDvExriWtVKis7ufNM(s)1gkC5SY46M8j7i`k(kDsi0Q1U zn8BKhnXILl#afHmtc`H66tR%C7b~$yS;abw)vT-doP8oTGJ6lPiS-s+v2xkQ`it#s zp!kXn7CYDwv6BrGds(W;WTVACHb(4cY2pZ*AiiT0#c?)S{DhUxHMU6HV5`J0Y_qt< z_KMr=gt)`bio5KRxW|4G_t_osfISxvvD$gWROKl%DbH9CzU~;Kykv!x7j{-vdCltK zyOa%;w=7wC$J!}`cTp%GpfGM%I3I_PWR6!1e3oM5%M~+Ur zhAI3jLpskeOy%Dgrtv+7>3pAI9zSSs@K`L4V(A{!)AWbZrH+qGHm6S4cqut!*+h%@D=~Xu!G+;?Bur$d-+{MCckgk zhmXPT=Z_5s_*26{{@iegzcd`?uMJ1|8^d?}o#7}a#?xFF&v1kBEH@d?aS!8pZZSfI zjam2%>m?pwY$(Ev-9;W_4^S_WXdEh<7{3zsWa9zR&UjGtGM*F@jHkp*;}2qi@w8ZG z{84;vyeZZhe-~Sg_r!kVLvhBq+Hl^u#&E^B)^Nx8h2gnzz2Tj4gMpjAF{q~925-|I zLxgFsA%N@;z%#eq=4l4c3Z0X06FP zW^Y3Rcso*!wH}wu1!P!$;K-hm1R6QqcvLuq%mxg^PrRi-v{E3kw$udBouz zk^-0?6v7mv2;Mm0K&73oh_ zBgN;K;I5VLdl36@c(q2rq>RFJ*bcKY7G`BUJX@c_t2GH$YYNQERCu3T=%!`mgjT*>fqb);Uj8>Zp|Fby9DJC{lWV20rBqCqf0!SH@X(n)Y^ zO{ex;aDx?wf4DeY!zJO>Ee#KQIasUm^e}APQCP*}u!`TqD*gbgcm_7_92{yt(z^5_ zZ9=cmX7pDS`52Bh!CJsW)|$q#wzMjy=+#+!OzTI$c#Wd%;IQfeht&W!j*egx=ot1X zruP%+1Us8VC$h*06~7cKkNX;_tLGze_*i_h=7(pZ4MpXkY#a3x>yZAb&!K@~3n-e*@RqTRIvR zax5(5d|1dYxry!JW_Fl+vhR5?I}0m$6&CUVEaacCkZ)lj2|Qm`7^(;{j>W-PRTEQS zn9^AnF$p$ift^i*Wtu4#v6W&8+bNc^gJK!GAeOURVg;khO6H4i6X#V{v(n1vtcJ3N zwNTcxF3OjzpR$pqDVs3I-^>o$2fMHAgxBk9R#)A{x~ku>(dxHshPs>0 zQ#08j^?SBLJ>aCT;Jk@J@D2ur4>lP17=wwgHCXt5gE#jw`tV#vUmkDt;|WH8UdkBAs~MwtD`Q^X z#h8zeHOBIp#{B#1Z0^SEn)~q< z=Kj39c?9oi9tRrEXPPJQ)#izOhj}Kx?L8ac_;&CY=H>j2c_mjoKIe8HkM%sS$3|Y( zV>7Smv4yws_==}`9Kgqgn8Ez`Mhh0(%yANGjDr+(bl_x=;7T+^!08cCU`d$-+Ffx`@Fk}lioeWHSa#+ zwRb-e?9*RF`wS3edFi;QK^8_I)OZ-*aK`dm+61UW-7#KSjLX8&SmXttjF5 zQk3<}7FGPH(%O$Ho&AK;)6b}k@-r!u{Vs?FexAx|Ka29MpSNZe+8wwe?_ICe?^Y&PsS-SEXoR zH>G-DFQr3Ze`Q`^nzA8qrm{b9mU1p|wq1D;=umP8%~47R%~hHP%~K`@IhDmh^OX%j zpD71|7AVhy7Al^>ir2p|@L0W7ezv}Y$0}QSVYR4ltO2SiBvADa2~lH1 zLe+X9!D`!(2(?E@q&hUDkUA=)xH=`IggPgrjJhtQtom(8IrT_LdG&5cDfLZACDjyK zMGXqAuZD*)UDye)ScnO)nnl!)KlRj)f?fX z)m!0q^>z4IH9LHq>K8Fy4UU+g#zjn23r9>+t42&w?KLCP)m9PH)OHcm)d3MR)u9oy z)F~18;&{Xybw$KHbxnj*-4*efx;J8hdM09#dLd%5`g_Du^+CikmDyIP2HQ$C)V5lU zw0*7?wXIc4+19CbZ0psAwhd}W+eWpUZIha6+oIZSTh-aN?W)uEmHLHkr@9H>0^4uf zWmk{bzELmPcB@xyd(_9aO!b9rpK6Xgpn69hRC7ljR`W$3QOiaiRVzgvQyWK~P@6}d zRC`38Qu{{!ppJ_?qfU%Gt1gH_Nj(+$vw9=)ih3*Zs`@(e zx|$t%L-mXLRSk~%O^u6stoDw2st$>=KU2p>#ZoReeDQN&b4_kB%D11#lcMtVKaD$+ z7Q@j18EZKihxvfck7g6F*`{E_l3+)3D5fDge=WQOiNFT%x3GEGgp)A{-T*#8>LGvm zmUL6TgEXNOo3QwqMKO4ADDeRH7jdMS>kNAZ(F0x`PQ1XcEmH9Qsb0VuF@&~8M&96W z6Fo5B(fJW-UM$5q@dZD>8bZ6e_*D%_q#OAD;5RT-Cp~b)MgC?R?4RM?NdZ3=Aqx#N z;V{uNiZ?p2^=2T!;FmUjii1u%e~-B>CftEpE@Dc)67m8*mTLo@AQj%l4o5+)ZX+qdyAxy5|-$*HzeTug}Ol zh%PtyOT4C$g|3X^E%1$?(s{ryWw}L`yDDMB`CsAtX4UB&K1SMD2L7n!*vn zu&Tj6b?`IzrzmFfcoj1^H@WGOL<79<{TnisZ+f)Cd**js{0Dg9_IFgYEck!oP2UGD z{>6~Gcr%#7A&GoKs^YCsy>bG(;E_xr@{JE4ynmku(^5eB9&Blr4`*d61NR~MSza87 zs{$N`X*9eWKm?w?Oi}=es{yZOTQ#1%H0SaR5Wd6!YRipy5_IM2B7I_rUlaWP{4-Jl zdDa3R!~2u+t~||lQH@qYf;tEY5~XMb1k?r25G6@P7rrlw!VRgnpudtr5)r=v;*3%n zlRB=9PAPp!T@;W6{$-^DoOrs}E2;-cL!@mCejPP~v~48I02;9m`1u2OS~Tz-f=f5|_j~M4eq3wSkMR3o>d2{wFjOSN#{uE@BzV;lL#D zrJf|+kxyIT`fMaTi&Vo$S*#uFR9(E37bX3G+ar>h=O_JL{9-(u3;^y3etGUs7Q0&J zO{VarIMLG?{4gw1PrKrqupT@E+!cI3lAoM)@yp?XJO}&<_|-8IoJXa#=dU@|eizYC zJ#gCz3&bm00Ks0zC@ho}IA3M!`;%L)E@%W-^Y7sI0lzJrtPfoAFTgeZ1pI#B|3Z6` zm#+8?*fR1b_yfRi1^=q{3N`S3HjGd^#|LY0^P2S{g6oRYmB(RSW5x#(@Yx0)PW=!^ z{$`5i*yT54rAx>nQI|%#;@?sRVC`eZXA1~YPkVI1U&)LWLk&pMMW2Z-w`jG?RW8);kBRxsOS-BFKg;ns1n@rx z|0>e{1T23MVgkDYNvs8qgD=&7)0JR_I*R;;0=_`NMzue=?czroF7rF6&<6114X617 z7ypfUEO`jL5q!mC7V3bEW{uD~L8T=_YEs%{o5 zLqveT3;Zj7>qK4`e`4@p8Y4__)nIxP+?^J7@!wd-k|M&+;kzNk6f%eua|MhFSqgs@ zCz;?+37Jhwx%lCsFKKDu{ou!j-lJuN-m-x3Fi{TpAo!8tKB9t)-#aRpR02K>{*WjO zW>u+ZavpqdpaQTw7Z$GIr0zSlB0OI5pcuzDJ{YObo5D76+zWigLymHt5h`%6;ENq5 zve?uW7G9nclON1bNgXj2swmHi8SnuN$SP_+ykc?^r~mWEc*(H6H4}M4PgoP=CCCd_ z8hI!rpfIn28Gwq9ZdF7g1KA1({LT_hu^mChZw-vogX`HiR8(Q9ZJegXZ z>1}9b=h-$C+qlj*ZQxFda)!6X#z|gh^|rKdu6P=ZvzY`1g%bJFU_4&yg_jaLY(bJq z3OnZ@wr_D)G%BNg2gBk#(H41?b>3@Bn}^h(wm9m8Ps_Lx6{mXQ8qPK;h*i%yG6k-y zs?H55bVgim8VxxU@jv~g#5uSfE#j@mrVzcXPk-mCcF1e6^ISXZ?+kY4X;1BCX30uN zH^kN+{?7Cy+nKDT2ik+b%LwLa;Kvedis_kX{3t@^JAZBu87%pW43@ZLaK#mUg|k2h znlE9^Uu3Y3=GH`q#*E3f6YFp$iaH}j~o4jnNc?kK6#*oY?8D$5}OESU66jtVvAunIk zd<2`L`3d=k#*$35n~-m1#dgcf9$f5XuPiB3UiQh$et9{7M~585xleKk>CkY@h7Zfv zkdMfhlE1?%%9&7l7&|PUh&=jCj>_VW$(N6hOLRhBP9ikZPnP+;to|uk{U2n(r)d#_ z33O3H&e{<%bB@gGoV=VzoH0L2!CsIN<;w(Et>Ka-FY>%T_Be65C@=Dz1GtKDxg;+? z(UK$+3Ps4z?$Xf=%o}A^S7el{@^VdHuFIO=pu+iQZ)$Qb>PCm;(F%Jh17Fd~f6HAj z+gb7x32Fe5{*cOYT`CJ+n4N>I4hRj#Z64mS{b+=_ zB9-Op$I5a;Dhn=)=&v6u3-bHlQ^?3*R3q5*KS$4J-Ga< zvfP)-a#yzdu~e29QdwS0Wx@X{_@4)uhySy(py1OuH4SBX`tQnui2sMm^75aQ1zG)z zve-WwTd-F9%gE&#TbA_E^yDyJJ%pa%9l@C}UCPfAS z^#osYs)G5$N0ulzg`VKD2nRquvP8)5e@{>HQRqp2ni(aB+Z~uZ{oN47QRqnl3O$LZ zIfe-J`hP0B(l8mWHQaU1sXA3%y;OHscUSc^#um(o5Mn0?V<)x@Vu@wMJ_a$CJ86VS z?AO+qkZW99V&BFkgv3rVCU&uh$Z#WeA%^?bL=wppa`WdrJkw8gE${b!Z-3wW)!A&F z+!id)#7QXuIElBe8xxp2(aQr)stCYIRpBW(!4&3SkqW*z8|6RXeW? zJS7p~P|v`LB2P3+IrR)#hD>&`aQ;{S{R33cv5X)(k2}(Utm1? zdyM0FzhE2%Uh5JwglJ9@rr4lP{twmlq}Iah(K^f>{Q~jyKY{oh3*sMI5TE-i#Bo}i zt#jLAEuUJaU`Z|fI<)@zq}G~eL42-t*$XU)e{4Z~xdrhRPlNdUzlJ!zGh0|_L3}YF z{+rb5A>i>mskQLIzX|cBPlGrP^#sJDKlDL=e&x@wUSq*};;*n?WWgFAzhy1At>uoe z&Vn_Tyt8=>>-Eosb*2UDjTWr2B>6k}Q`Z952u=P}qFPTS66faoIp4LNW$d=JOsb@&@@!`XKa zZoXU$3BgAOXPyifgF|o$9yk~LLQpVa(8~w6LLs3jC^H^BUm8?YL8t^;s}5sAE!gw$ zx*Gg&YX%#_P`Dc=3R5D&bRk`sBVe9~6eeXzebSILA+M6=q$Not?JzjqmCPfH$ttps zd`S+FL*y7aK~9s)1hqPHknOl8Eg?-!?v-n z*%fx5DWWFk6I+R$#9m^mI6|BtP8Iix+2UF8hL|f#l1DP6d{PN%fwWROB7G}emaa>8 zC7s9c=XhCOjo0E$coOf+hx0Lf0-wUu`Fy^TZ;0?6{2Trqzs+Oh;&QxPQSKo3lBX*F zQg$e(lncsrrHTD@`*8bI`)vCn`v&_K`!4%e_A~a&c0-L(i>a@ujnuYkXSJK!LrqrE z$51D$8S1~)CF*DDPIZr(r9M(chu6`@(ZSKvG2QWzW3A&$#{tJ-$2o`W^g1JjoJE`^ zoMoMrowc0}oXwowoypErXPR@YbAoeragPc2mrlZQxzt{m7f? z-R{lyUh)3u&GkO==JUn*YWuqTl6?bxvwb^#`+bLf=Y2o;WL?#RdSku0-cIkQkJP8> zv-J#pvA$8?s&ChK=~?q1V;tO1v7#RgG++z zgWH39f(L@qN{3 zW>d47+1l)Ab~U@3y-W-anB&bU=1g(1yE=XS(qsF7h zw-_#{LwPQL4}z~Wf~_7JYrElKRf(5`Nf*+SM94@o5reo27Q=~Oz4&ZCPEJR9g1x}9dxBlI-ANUx(*c%O<0n*b}zs=eYC#HyL;wW*B__4TF z+$e5E^kj*rBI18VP4Y`7LZ^&WL8>k_kUB|&rRmaKX^WICT}2S(N(4FFkE%+3^rfo6 zcGm*c{L8!uq#S8Xl1Lvi3^!{&fmNLBA=k-0@&LAQJ1tGif@&IJ zN8=dy)CSq!#aADOm%BF(oGxTwR(2T-SEq#Y7&@$hBXuO5NiVXJY$nsFg1UG`oO*3I z#}jQ`@Bjzm2>-CniNKXM4`ty+sOT<5m39TLWi7mGn^5nxu4$KTKgjtIuIx%44c~*Y zECw#YnGA{0G63GD=?h}>jAkxyb8f{8j&_vpncB0+rK>7`y{uL0Xg@C)jzyq3#QZYt3 zn8ak@!ND}jN520kGa;gV=RahJFUd)c2CFNrtBGE#G?o0KArklvBTNE3jlGoWP~r(EUv zc`Pr+Tk}wDWL0*_n(UQzIYurbC&(@2*W`}!LV1b2TK-Bt zET5Kh3{=vT`HBR{gwVIG1lZI7=9{2} zl8N&8UbMxBVP>@hV!JmnO830~I=XJ-I`76V6T0b5~PQCo3aoUJ5U$)(Y+ zD~FCRdQ!GpwmP;3XrQFPqxly6nL}XBOoIv>ffm!dXd8_MIZZ@&XDTe1QP?lj^FTfy zrpqNTTrNk`VGWFy8_)yT90AHdLrs1s>dN~dL=GUNj>1eCf=qY~hJnEl3Tf!mkAPfw z4}u{b(s~6jy%QboeegRT0J;w$?2aRzF9-!m5fVpgLqoJB{Sn5)!F{927&4ZO&*MPY z6$z}0&=2Rpf&!IkM5l%6bGT)3v?MKq+g6>{#EolCTjAEdPCFtFy3+2nC+$s>!I1-K zDjh%TI_38)JwFl^KYEIB1DMYy!A&Im={8Vn1=WctZR}yeM9U zR#2o5qzq}fv=j7pJR;qaMDFAvUVz8*@{kEbArWTtxqKd9%(MAP{<(5oIje|v#qO|& z?1k*D?Y-=i?bGa0`vUuV`{(w%_6K%R)zrFbQ?;GiM;)rBsbkd@>PA&_1RQaWGLCYN z3XUp{8jd=SdXAxvb&i|J{HC*?bDML&Gm?$me$Oem3b;zUs=E?g^^z{t!jPuO!-0;}Ees5)OO>Zx6ns>H$LBzYmyT_a5J?*vo ziuhhaUT^B_;7joh@D1}#(pMpC@72%i7xWzcp6>PQ{;w!TjV?wnBgIHHMjG!K$CzjAH4Yjljl0GJ zB;n#_q`leGOf}QYvE~wUt@(+$%Y0xep+G1cDjrGAbftcMGP zi-b#tONGmaD~4-?YlRzx8--sDw+goozY*>d?iWrCj|z_q&kTPU&J1UTFNGh4f7v@C zHQyh1m1vs(%@=;R9mSt-MiGpSi|rFTD0W2b1QIPUS_oxU8!aT-GczU$7f9x;DbU_@ raGwF0%cctTSiYKrI`!ynYu&g--VPGK{;yuAzFm7KWj=}uUBv$ZfYuc4 diff --git a/bcexmm.prj b/bcexmm.prj index 2abea17e99d8f0cf77d74744d89514c347e909e1..4b0799a7369ff8792cca8f28e2ed2a70c5829ae8 100755 GIT binary patch delta 720 zcmZWnO=uHA6#lZ?-I*ydHr+IdEj39C{sn_x8rp6NriW&mM1rCN`i7FqXF0UqUmW&XH5 z?__*NNwq}9tWjdZTi3$Cd;ZfX>_Hkb@KJz05jHFA@S)+UjFp_)-r0ulQp8tFN^Z)a&dOd%)({G)uAwv*{Q5oG#EybdvVd zF8YhClBZ;zTqM&ZL*gVvbh573b(g-T&1oyza?5FLO|7*U>Sr~l{8lcw29<)#wih4` z2*bkSG1D4Em$)NH9yP5VyotI;dhs^u=4pS$Gk|ds?Z>xrpJm(pOu)axmOYyXlXxkF z#R8ljUhIgd0+Cs>t(@zuUfOlW=;8MRF=h%hM;A}{tGpQW zgr%B>UbCr5DvLM1MLC}j_B26n^W3&uQAz#3*pxH8f@dNZ#!PwOFUhXPs0}&)63Ly6 z?3A}HR4l#d{Gm8Z54(3Cmq;5}a#``xaoj_%V6r!zG&0DFWmy=-P29mAr{6|tR-?x424}AF4A^-pY delta 598 zcmca=-(tI=hJ$%>g7xNljyoK}3Cs)(@(dFbtUXnv7#LQuGBC`aoF^E`$;80GU<(qT zd_gdi8ARI%W%5n}s_O#kPzhvU*gtubP&_kGWU`2GCYWvz&g2BCXi;EbI5YW^Z~|k) zWJQ)NE;9xdPA{N&{G5{=MYSdei1O8&vHs$C%yEQcF-H?e0*5_^EXN=AJM6pIXR=qY zhqGIMTNYa=n=P9P8$a7GRs~jW)+H<-SROO?vv4z?XEtK`#+1(} z%`}Z6it+#dX+TR97(5t6BdtBH7lLN&iCbLRPah3zUs>lE` z1*lq2fg!&brUqiSHCVk3nEd}Aq}Lq625OxAP*MqQ(L||vlT&5*rF}e|^gO^`U}DGt z8V)fMZiNQK0oV)&`%E1~{s+2rGq21uCa~$>FlU&~ zpbWI>KL+q%@MQ3Uigz(gWthfL$I!vh$>7Zp$`Hm7&XCNI!jQ_4&rrZn$WX&j%iuA& HQ9c9!5{kQE diff --git a/makefile b/makefile index e8aa09fc..e58e6e58 100755 --- a/makefile +++ b/makefile @@ -107,7 +107,7 @@ LIBFLAGS=$(WLIBQ) -b -n # VGMSNDOBJ = vgmSnd.$(OBJ) 16_snd.$(OBJ) GFXLIBOBJS = modex16.$(OBJ) bitmap.$(OBJ) 16text.$(OBJ) bakapee.$(OBJ) scroll16.$(OBJ) 16render.$(OBJ) 16_vrs.$(OBJ) 16_sprit.$(OBJ) -16LIBOBJS = 16_mm.$(OBJ) 16_pm.$(OBJ) 16_ca.$(OBJ) 16_lib.$(OBJ) 16_in.$(OBJ) 16_head.$(OBJ) 16_dbg.$(OBJ) kitten.$(OBJ) 16_hc.$(OBJ) wcpu.$(OBJ) 16_timer.$(OBJ) +16LIBOBJS = 16_mm.$(OBJ) 16_pm.$(OBJ) 16_ca.$(OBJ) 16_tail.$(OBJ) 16_in.$(OBJ) 16_head.$(OBJ) 16_dbg.$(OBJ) kitten.$(OBJ) 16_hc.$(OBJ) wcpu.$(OBJ) 16_timer.$(OBJ) #16planar.$(OBJ) planar.$(OBJ) DOSLIBOBJ = adlib.$(OBJ) 8254.$(OBJ) 8259.$(OBJ) dos.$(OBJ) cpu.$(OBJ) !ifeq DEBUGSERIAL 1 @@ -292,7 +292,7 @@ mapread.$(OBJ): $(SRCLIB)/mapread.c $(SRCLIB)/mapread.h 16_dbg.$(OBJ): $(SRCLIB)/16_dbg.c $(SRCLIB)/16_dbg.h midi.$(OBJ): $(SRCLIB)/midi.c $(SRCLIB)/midi.h 16_head.$(OBJ): $(SRCLIB)/16_head.c $(SRCLIB)/16_head.h -16_lib.$(OBJ): $(SRCLIB)/16_lib.c $(SRCLIB)/16_lib.h +16_tail.$(OBJ): $(SRCLIB)/16_tail.c $(SRCLIB)/16_tail.h 16_hc.$(OBJ): $(SRCLIB)/16_hc.c $(SRCLIB)/16_hc.h 16_snd.$(OBJ): $(SRCLIB)/16_snd.c $(SRCLIB)/16_snd.h jsmn.$(OBJ): $(JSMNLIB)/jsmn.c $(JSMNLIB)/jsmn.h diff --git a/src/exmmtest.c b/src/exmmtest.c index 46095449..aaf10f56 100755 --- a/src/exmmtest.c +++ b/src/exmmtest.c @@ -27,7 +27,7 @@ #include "src/lib/16_ca.h" #include "src/lib/16_mm.h" #include "src/lib/16_hc.h" -#include "src/lib/16_lib.h" +#include "src/lib/16_tail.h" //#include "src/lib/modex16.h" #pragma hdrstop @@ -97,19 +97,21 @@ main(int argc, char *argv[]) bakapee1 = "data/koishi~.pcx"; bakapee2 = "data/test.map"; } - printf("main()=%Fp start MM\n", *argv[0]); + //printf("main()=%Fp start MM\n", *argv[0]); MM_Startup(&gvar); - printf("ok\n"); + //printf("ok\n"); +#ifdef __WATCOMC__ if(debugpm>0) { PM_Startup(&gvar); - printf("pmstarted ok\n"); + //printf("pmstarted ok\n"); //PM_CheckMainMem(&gvar); PM_UnlockMainMem(&gvar); } +#endif CA_Startup(&gvar); // printf(" done!\n"); - PRINTBB; + //0000PRINTBB; // printf("press any key to continue!\n"); // getch(); #ifdef FILEREAD @@ -140,10 +142,7 @@ for(w=0;w<2;w++) //printf("medium blue = non purgable\n"); //printf("red = locked\n"); printf("press any key to continue!\n"); - getch(); - MM_ShowMemory(&gvar); - MM_DumpData(&gvar); - MM_Report_(&gvar); + DebugMemory_(&gvar, 1); if(baka) printf("\nyay!\n"); else printf("\npoo!\n"); printf("press any key to continue!\n"); @@ -151,11 +150,16 @@ for(w=0;w<2;w++) #ifdef FILEREAD } #endif - printf("bakapee1=%s\n", bakapee1); - printf("bakapee2=%s\n", bakapee2); + DebugMemory_(&gvar, 1); + MM_DumpData(&gvar); + MM_Report_(&gvar); + //printf("bakapee1=%s\n", bakapee1); + //printf("bakapee2=%s\n", bakapee2); MM_FreePtr(&bigbuffer, &gvar); +#ifdef __WATCOMC__ if(debugpm>0) PM_Shutdown(&gvar); +#endif CA_Shutdown(&gvar); MM_Shutdown(&gvar); free(bakapee1); free(bakapee2); diff --git a/src/lib/16_in.c b/src/lib/16_in.c index 6df6d06a..85153939 100755 --- a/src/lib/16_in.c +++ b/src/lib/16_in.c @@ -1155,6 +1155,9 @@ IN_Ack() { word i; + if (!inst.IN_Started) + return; + IN_ClearKey(inpu.LastScan); inpu.LastScan = sc_None; diff --git a/src/lib/16_mm.c b/src/lib/16_mm.c index d1e2759d..16b65aa6 100755 --- a/src/lib/16_mm.c +++ b/src/lib/16_mm.c @@ -140,7 +140,7 @@ boolean MML_CheckForEMS(void) return(emmcfems); } - +#ifndef __16_PM__ /* ====================== = @@ -424,7 +424,7 @@ byte MM_MapXEMS(global_game_variables_t *gvar) gvar->mmi.EMSmem = (i)*0x4000lu; return 0; } - +#endif //========================================================================== /* @@ -459,7 +459,7 @@ boolean MML_CheckForXMS(global_game_variables_t *gvar) else return true; } - +#ifndef __16_PM__ /* ====================== = @@ -546,7 +546,7 @@ void MML_ShutdownXMS(global_game_variables_t *gvar) } } } - +#endif //========================================================================== /* @@ -817,12 +817,13 @@ void MM_Startup(global_game_variables_t *gvar) //printf("_FARCORELEFT %lu\n", _FCORELEFT); #ifdef __WATCOMC__ _fheapgrow(); + length=_FCORELEFT;//_fcoreleft();//(dword)GetFarFreeSize();//0xffffUL*4UL; #endif #ifdef __BORLANDC__ printf("farcoreleft() %lu\n", farcoreleft()); printf("(farcoreleft()+32)-_FCORELEFT %d\n", (sword)((farcoreleft()+32)-_FCORELEFT)); + length=farcoreleft();//_fcoreleft();//(dword)GetFarFreeSize();//0xffffUL*4UL; #endif - length=_FCORELEFT;//_fcoreleft();//(dword)GetFarFreeSize();//0xffffUL*4UL; start = gvar->mm.farheap = _fmalloc(length); //start = gvar->mm.farheap = halloc(length, 1); length -= 16-(FP_OFF(start)&15); @@ -864,7 +865,7 @@ void MM_Startup(global_game_variables_t *gvar) if(MML_CheckForEMS()) { MML_SetupEMS(gvar); // allocate space - //TODO: EMS4! AND EMS 3.2 MASSIVE DATA HANDLMENT! + //16_PM: EMS4! AND EMS 3.2 MASSIVE DATA HANDLMENT! MML_UseSpace(gvar->mm.EMSPageFrame,(MAPPAGES)*0x4000lu, gvar); //if(gvar->pm.emm.EMSVer<0x40) MM_MapEMS(gvar); // map in used pages @@ -1626,11 +1627,13 @@ void MM_Report_(global_game_variables_t *gvar) printf(" XMS\n"); printf(" XMSaddr: %X\n", *XMSaddr); } - printf("near: %lu ", gvar->mmi.nearheap); printf("far: %lu\n", gvar->mmi.farheap); if(MML_CheckForEMS()) - printf("EMSmem: %lu ", gvar->mmi.EMSmem); if(MML_CheckForXMS(gvar)) printf("XMSmem: %lu", gvar->mmi.XMSmem); printf("\n"); + printf("nearheap: %lu ", gvar->mmi.nearheap); printf("farheap: %lu\n", gvar->mmi.farheap); + if(MML_CheckForEMS()) printf("EMSmem: %lu ", gvar->mmi.EMSmem); if(MML_CheckForXMS(gvar)) printf("XMSmem: %lu", gvar->mmi.XMSmem); printf("\n"); + printf("convmem:\n"); DebugMemory_(gvar, 0); //printf("mainmem: %lu\n", gvar->mmi.mainmem); - printf("Total convmem: %lu ", gvar->mmi.mainmem); printf("TotalFree: %lu ", MM_TotalFree(gvar)+gvar->mmi.EMSmem+gvar->mmi.XMSmem+gvar->mmi.XMSmem); printf("TotalUsed: %lu\n", gvar->mmi.mainmem); - printf(" UnusedMemory: %lu\n", MM_UnusedMemory(gvar)); + //printf("Total convmem: %lu ", gvar->mmi.mainmem); printf("TotalFree: %lu ", MM_TotalFree(gvar)+gvar->mmi.EMSmem+gvar->mmi.XMSmem+gvar->mmi.XMSmem); printf("TotalUsed: %lu\n", gvar->mmi.mainmem); + //printf(" UnusedMemory: %lu\n", MM_UnusedMemory(gvar)); + } //========================================================================== diff --git a/src/lib/16_mm.h b/src/lib/16_mm.h index d858c0f1..7c681255 100755 --- a/src/lib/16_mm.h +++ b/src/lib/16_mm.h @@ -25,7 +25,7 @@ #include #include "src/lib/16_head.h" #include "src/lib/16_hc.h" -#include "src/lib/16_lib.h" +#include "src/lib/16_tail.h" //++++mh #include "src/lib/16_in.h" #ifdef __DEBUG__ // 1 == Debug/Dev ; 0 == Production/final @@ -68,11 +68,11 @@ extern boolean debugpm; #define XMS_INT 0x2f #define XMS_CALL(v) _AH = (v);\ __asm call [WORD PTR XMSDriver] -/*__asm { //mov (v),ah*/ +/*__asm { mov ah,[v]\*///} #define XMS_VERSION 0x00 -#define XMS_ALLOCHMA 0x01 +#define XMS_ALLOCHMA 0x01 #define XMS_FREEHMA 0x02 #define XMS_GENABLEA20 0x03 @@ -83,14 +83,14 @@ extern boolean debugpm; #define XMS_QUERYFREE 0x08 #define XMS_ALLOC 0x09 -#define XMS_FREE 0x0A -#define XMS_MOVE 0x0B -#define XMS_LOCK 0x0C +#define XMS_FREE 0x0A +#define XMS_MOVE 0x0B +#define XMS_LOCK 0x0C #define XMS_UNLOCK 0x0D #define XMS_GETINFO 0x0E #define XMS_RESIZE 0x0F -#define XMS_ALLOCUMB 0x10 +#define XMS_ALLOCUMB 0x10 #define XMS_FREEUMB 0x11 //========================================================================== diff --git a/src/lib/16_pm.c b/src/lib/16_pm.c index 2f21482d..10ee7b6d 100755 --- a/src/lib/16_pm.c +++ b/src/lib/16_pm.c @@ -98,7 +98,7 @@ PML_MapEMS(word logical, byte physical, global_game_variables_t *gvar) int EMS_INT or ah,ah jnz error - jmp End + jmp End #ifdef __BORLANDC__ } #endif @@ -156,50 +156,50 @@ PML_StartupEMS(global_game_variables_t *gvar) mov dx,OFFSET emmname //fix by andrius4669 mov ax,0x3d00 int EMS_INT // try to open EMMXXXX0 device - jc error1 + jc erroreu mov bx,ax mov ax,0x4400 int EMS_INT // get device info - jc error1 + jc erroreu and dx,0x80 - jz error1 + jz erroreu mov ax,0x4407 int EMS_INT // get status - jc error1 + jc erroreu or al,al - jz error1 + jz erroreu mov ah,0x3e int EMS_INT // close handle - jc error1 + jc erroreu mov ah,EMS_STATUS int EMS_INT - jc error1 // make sure EMS hardware is present + jc erroreu // make sure EMS hardware is present mov ah,EMS_VERSION int EMS_INT // only work on EMS 3.2 or greater (silly, but...) or ah,ah - jnz error1 + jnz erroreu mov [EMSVer],ax // set EMSVer cmp al,0x32 // only work on ems 3.2 or greater - jb error1 + jb erroreu mov ah,EMS_GETFRAME int EMS_INT // find the page frame address or ah,ah - jnz error1 + jnz erroreu mov [EMSPageFrame],bx mov ah,EMS_GETPAGES int EMS_INT // find out how much EMS is there or ah,ah - jnz error1 + jnz erroreu or bx,bx jz noEMS // no EMS at all to allocate cmp bx,2 @@ -207,22 +207,22 @@ PML_StartupEMS(global_game_variables_t *gvar) mov [totalEMSpages],dx mov [freeEMSpages],bx mov [EMSAvail],bx - jmp End1 + jmp Endeu #ifdef __BORLANDC__ } #endif - error1: + erroreu: #ifdef __BORLANDC__ __asm { #endif mov err,ah mov errorflag,1 - jmp End1 + jmp Endeu #ifdef __BORLANDC__ } #endif -noEMS: -End1: + noEMS: + Endeu: #ifdef __WATCOMC__ } #endif @@ -243,30 +243,31 @@ End1: mov bx,[EMSAvail]; int EMS_INT or ah,ah - jnz error2 + jnz erroreuu mov [EMSHandle],dx - jmp End2 + jmp Endeuu #ifdef __BORLANDC__ } #endif - error2: + erroreuu: #ifdef __BORLANDC__ __asm { #endif mov err,ah mov errorflag,1 - jmp End2 + jmp Endeuu #ifdef __BORLANDC__ } #endif -End2: + Endeuu: #ifdef __WATCOMC__ } #endif if(errorflag==false) { - gvar->mmi.EMSmem = EMSAvail * (dword)EMSPageSize; + gvar->pm.emm.EMSAvail = EMSAvail; + gvar->mmi.EMSmem = gvar->pm.emm.EMSAvail * (dword)EMSPageSize; // Initialize EMS mapping cache for (i = 0;i < EMSFrameCount;i++) @@ -283,7 +284,6 @@ End2: gvar->pm.emm.EMSPresent = true; // We have EMS gvar->pm.emm.EMSPageFrame = EMSPageFrame; - gvar->pm.emm.EMSAvail = EMSAvail; gvar->pm.emm.EMSVer = EMSVer; gvar->pm.emm.EMSHandle = EMSHandle; gvar->pm.emm.freeEMSpages = freeEMSpages; @@ -311,22 +311,22 @@ PML_ShutdownEMS(global_game_variables_t *gvar) mov ah,EMS_FREEPAGES mov dx,[EMSHandle] int EMS_INT - jc errors - jmp Ends + jc errores + jmp Endes #ifdef __BORLANDC__ } #endif - errors: + errores: #ifdef __BORLANDC__ __asm { #endif mov err,ah mov errorflag,1 - jmp Ends + jmp Endes #ifdef __BORLANDC__ } #endif - Ends: + Endes: #ifdef __WATCOMC__ } #endif @@ -356,44 +356,86 @@ PML_ShutdownEMS(global_game_variables_t *gvar) boolean PML_StartupXMS(global_game_variables_t *gvar) { - gvar->pm.xmm.XMSPresent = false; // Assume failure - gvar->pm.xmm.XMSAvail = 0; - - _AX=0x4300; - geninterrupt(XMS_INT); // Check for presence of XMS driver - if (_AL != 0x80) - goto error; - + boolean errorflag; + word XMSAvail, XMSHandle; + errorflag=gvar->pm.xmm.XMSPresent = false; // Assume failure + XMSAvail = gvar->pm.xmm.XMSAvail = 0; __asm { + mov ax,0x4300 + int XMS_INT // Check for presence of XMS driver + cmp al,0x80 + jne errorxu + mov ax,0x4310 int XMS_INT // Get address of XMS driver mov [WORD PTR XMSDriver],bx mov [WORD PTR XMSDriver+2],es // function pointer to XMS driver - } - - XMS_CALL(XMS_QUERYFREE); // Find out how much XMS is available - gvar->pm.xmm.XMSAvail = _AX; - if (!_AX) // AJR: bugfix 10/8/92 - goto error; + //XMS_CALL(XMS_QUERYFREE); // Find out how much XMS is available + mov ah,XMS_QUERYFREE + call [WORD PTR XMSDriver] + mov [XMSAvail],ax + or ax,ax // AJR: bugfix 10/8/92 + jz errorxu + jmp Endxu +#ifdef __BORLANDC__ + } +#endif + errorxu: +#ifdef __BORLANDC__ + __asm { +#endif + //mov err,ah + mov errorflag,1 + jmp Endxu +#ifdef __BORLANDC__ + } +#endif + Endxu: +#ifdef __WATCOMC__ + } +#endif gvar->pm.xmm.XMSAvail &= ~(PMPageSizeKB - 1); // Round off to nearest page size if (gvar->pm.xmm.XMSAvail < (PMPageSizeKB * 2)) // Need at least 2 pages goto error; - _DX = gvar->pm.xmm.XMSAvail; - XMS_CALL(XMS_ALLOC); // And do the allocation - gvar->pm.xmm.XMSHandle = _DX; - - if (!_AX) // AJR: bugfix 10/8/92 - { - gvar->pm.xmm.XMSAvail = 0; - goto error; + __asm { + mov dx,[XMSAvail] + //XMS_CALL(XMS_ALLOC); // And do the allocation + mov ah,XMS_ALLOC + call [WORD PTR XMSDriver] + mov [XMSHandle],dx + or ax,ax // AJR: bugfix 10/8/92 + jz errorxuu + jmp Endxuu +#ifdef __BORLANDC__ + } +#endif + errorxuu: +#ifdef __BORLANDC__ + __asm { +#endif + //mov err,ah + mov [XMSAvail],0 + mov errorflag,1 + jmp Endxuu +#ifdef __BORLANDC__ + } +#endif + Endxuu: +#ifdef __WATCOMC__ } +#endif - gvar->mmi.XMSmem += gvar->pm.xmm.XMSAvail * 1024; + if(errorflag==false) + { + gvar->pm.xmm.XMSAvail = XMSAvail; + gvar->mmi.XMSmem += gvar->pm.xmm.XMSAvail * 1024; + gvar->pm.xmm.XMSHandle = XMSHandle; - gvar->pm.xmm.XMSPresent = true; + gvar->pm.xmm.XMSPresent = true; + } error: return(gvar->pm.xmm.XMSPresent); } @@ -475,11 +517,36 @@ PML_CopyFromXMS(byte far *target,int sourcepage,word length, global_game_variabl void PML_ShutdownXMS(global_game_variables_t *gvar) { + boolean errorflag=false; + word XMSHandle = gvar->pm.xmm.XMSHandle; if (gvar->pm.xmm.XMSPresent) { - _DX = gvar->pm.xmm.XMSHandle; - XMS_CALL(XMS_FREE); - if (_BL) + __asm { + mov dx,[XMSHandle] + //XMS_CALL(XMS_FREE); + mov ah,XMS_FREE + call [WORD PTR XMSDriver] + or bl,bl + jz errorxs + jmp Endxs +#ifdef __BORLANDC__ + } +#endif + errorxs: +#ifdef __BORLANDC__ + __asm { +#endif + //mov err,ah + mov errorflag,1 + jmp Endxs +#ifdef __BORLANDC__ + } +#endif + Endxs: +#ifdef __WATCOMC__ + } +#endif + if(errorflag==true) { Quit("PML_ShutdownXMS: Error freeing XMS"); //return; @@ -611,9 +678,6 @@ PML_StartupMainMem(global_game_variables_t *gvar) gvar->pm.mm.MainPagesAvail = 0; gvar->pm.mm.MainPresent = false; MM_BombOnError(false, gvar); - printf("PML_StartupMainMem()\n"); - printf(" p=%04x MainMemPages=%04x\n", p, gvar->pm.mm.MainMemPages); - printf(" p=%Fp MainMemPages=%Fp\n", p, gvar->pm.mm.MainMemPages); for (i = 0,p = gvar->pm.mm.MainMemPages;i < PMMaxMainMem;i++,p++) { MM_GetPtr(p,PMPageSize, gvar); @@ -1402,12 +1466,17 @@ PM_Startup(global_game_variables_t *gvar) } } - //0000++++PML_OpenPageFile(gvar); + //0000+=+=PML_OpenPageFile(gvar); if (!noems) PML_StartupEMS(gvar); - if (!noxms) - //++++PML_StartupXMS(gvar); //TODO: convert + /*if (!noxms) + { + //++++ + printf("PML_StartupXMS "); + PML_StartupXMS(gvar); //TODO: convert + printf("ok!\n"); + }*/ if (!nomain && !gvar->pm.emm.EMSPresent) { diff --git a/src/lib/16_lib.c b/src/lib/16_tail.c similarity index 72% rename from src/lib/16_lib.c rename to src/lib/16_tail.c index 12a4288b..f9f6fb56 100755 --- a/src/lib/16_lib.c +++ b/src/lib/16_tail.c @@ -23,7 +23,7 @@ * 16 library */ -#include "src/lib/16_lib.h" +#include "src/lib/16_tail.h" //=========================================================================== @@ -35,7 +35,7 @@ ================== */ -void DebugMemory (global_game_variables_t *gvar) +void DebugMemory_(global_game_variables_t *gvar, boolean q) { /*VW_FixRefreshBuffer (); US_CenterWindow (16,7); @@ -50,10 +50,24 @@ void DebugMemory (global_game_variables_t *gvar) US_PrintUnsigned (MM_TotalFree()/1024); US_Print ("k\n"); VW_UpdateScreen();*/ + if(q){ + printf("========================================\n"); + printf(" DebugMemory_\n"); + printf("========================================\n");} + if(q) { printf("Memory Usage\n"); + printf("------------\n"); }else printf(" "); + printf("Total: "); if(q) printf(" "); printf("%uk", gvar->mmi.mainmem/1024); + if(q) printf("\n"); else printf(" "); + printf("Free: "); if(q) printf(" "); printf("%uk", MM_UnusedMemory(gvar)/1024); + if(q) printf("\n"); else printf(" "); + printf("With purge:"); if(q) printf(" "); printf("%uk\n", MM_TotalFree(gvar)/1024); + if(q) printf("------------\n"); +#ifdef __WATCOMC__ IN_Ack (); - MM_ShowMemory (gvar); +#endif + if(q) MM_ShowMemory (gvar); } - +#ifdef __WATCOMC__ /* ========================== = @@ -111,5 +125,6 @@ void Quit (char *error) exit(0); } +#endif //=========================================================================== diff --git a/src/lib/16_lib.h b/src/lib/16_tail.h similarity index 86% rename from src/lib/16_lib.h rename to src/lib/16_tail.h index 5529ec62..76916aeb 100755 --- a/src/lib/16_lib.h +++ b/src/lib/16_tail.h @@ -20,14 +20,16 @@ * */ -#ifndef __16_LIB__ -#define __16_LIB__ +#ifndef __16_TAIL__ +#define __16_TAIL__ #include "src/lib/16_head.h" #include "src/lib/16_mm.h" #include "src/lib/16_in.h" -void DebugMemory (global_game_variables_t *gvar); +void DebugMemory_(global_game_variables_t *gvar, boolean q); +#ifdef __WATCOMC__ void Quit (char *error); +#endif #endif -- 2.39.5