From 0df3c2d5e81ce6a2f1d498b3107e1fd223e7af80 Mon Sep 17 00:00:00 2001 From: sparky4 Date: Fri, 30 Jun 2017 19:16:30 -0500 Subject: [PATCH] 16_ca needs huge amounts of work and I should remember what needs to be done soon[going to port rest of code to borland c some time so we can use the core components of id engine here ][going to add 16_us.c eventually but the debug system and CA_ PM_ and MM_ usage is priority now]older zcroll renamed to xcroll][zcroll is now the pre menu game loop system with PROPER data usage with CAMMPM] added 1st scroll back [i work on CA] palette debug show values added wwww and i need to know how to see vrs/vrl imaage data palette index numbers [i am trying to find out how the hell you get the index number values of VRL/VRS] [CA_CacheMap added seems to be used in start a new game] what is mapsegs? bcexmm reports normally again... it acts funny with a unsigned long being assigned coreleft()'s value[vrldbg.exe added for a dirivative of vrldbg thanks johncampbell321\!] i did some small things here and there. and shrinked the stack. and fixed some little warnings... i may move to model medium like wolf3d --- DEBUG.16W | 209 ---------------------------------------------- HEAP.16W | 39 --------- MMDUMP.16W | Bin 2222 -> 0 bytes bcexmm.exe | Bin 164249 -> 163957 bytes makefile | 17 ++-- src/exmmtest.h | 2 +- src/lib/16_hc.c | 4 +- src/lib/16_hc.h | 15 ++-- src/lib/16_mm.c | 197 +++++++++++++++++++++++++++++++++++++++---- src/lib/16_mm.h | 2 +- src/lib/16_tdef.h | 2 +- src/lib/16_vl.c | 3 + src/lib/doslib | 2 +- 13 files changed, 202 insertions(+), 290 deletions(-) delete mode 100755 DEBUG.16W delete mode 100755 HEAP.16W delete mode 100755 MMDUMP.16W diff --git a/DEBUG.16W b/DEBUG.16W deleted file mode 100755 index c18d8eff..00000000 --- a/DEBUG.16W +++ /dev/null @@ -1,209 +0,0 @@ -Seg:0 Size:8351 Owner:0x0 -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Seg:209f Size:256 Owner:0x5dfc -0 -Seg:21cd Size:76 Owner:0x0 -0 -Seg:2219 Size:256 Owner:0x1c32 -0 -Seg:2319 Size:256 Owner:0x1c34 -0 -Seg:2419 Size:256 Owner:0x1c36 -0 -Seg:2519 Size:256 Owner:0x1c38 -0 -Seg:2619 Size:256 Owner:0x1c3a -0 -Seg:2719 Size:256 Owner:0x1c3c -0 -Seg:2819 Size:256 Owner:0x1c3e -0 -Seg:2919 Size:256 Owner:0x1c40 -0 -Seg:2a19 Size:256 Owner:0x1c42 -0 -Seg:2b19 Size:256 Owner:0x1c44 -0 -Seg:2c19 Size:256 Owner:0x1c46 -0 -Seg:2d19 Size:256 Owner:0x1c48 -0 -Seg:2e19 Size:256 Owner:0x1c4a -0 -Seg:2f19 Size:256 Owner:0x1c4c -0 -Seg:3019 Size:256 Owner:0x1c4e -0 -Seg:3119 Size:256 Owner:0x1c50 -0 -Seg:3219 Size:256 Owner:0x1c52 -0 -Seg:3319 Size:256 Owner:0x1c54 -0 -Seg:3419 Size:256 Owner:0x1c56 -0 -Seg:3519 Size:256 Owner:0x1c58 -0 -Seg:3619 Size:256 Owner:0x1c5a -0 -Seg:3719 Size:256 Owner:0x1c5c -0 -Seg:3819 Size:256 Owner:0x1c5e -0 -Seg:3919 Size:256 Owner:0x1c60 -0 -Seg:3a19 Size:256 Owner:0x1c62 -0 -Seg:3b19 Size:256 Owner:0x1c64 -0 -Seg:3c19 Size:256 Owner:0x1c66 -0 -Seg:3d19 Size:256 Owner:0x1c68 -0 -Seg:3e19 Size:256 Owner:0x1c6a -0 -Seg:3f19 Size:256 Owner:0x1c6c -0 -Seg:4019 Size:256 Owner:0x1c6e -0 -Seg:4119 Size:256 Owner:0x1c70 -0 -Seg:4219 Size:256 Owner:0x1c72 -0 -Seg:4319 Size:256 Owner:0x1c74 -0 -Seg:4419 Size:256 Owner:0x1c76 -0 -Seg:4519 Size:256 Owner:0x1c78 -0 -Seg:4619 Size:256 Owner:0x1c7a -0 -Seg:4719 Size:256 Owner:0x1c7c -0 -Seg:4819 Size:256 Owner:0x1c7e -0 -Seg:4919 Size:256 Owner:0x1c80 -0 -Seg:4a19 Size:256 Owner:0x1c82 -0 -Seg:4b19 Size:256 Owner:0x1c84 -0 -Seg:4c19 Size:256 Owner:0x1c86 -0 -Seg:4d19 Size:256 Owner:0x1c88 -0 -Seg:4e19 Size:256 Owner:0x1c8a -0 -Seg:4f19 Size:256 Owner:0x1c8c -0 -Seg:5019 Size:256 Owner:0x1c8e -0 -Seg:5119 Size:256 Owner:0x1c90 -0 -Seg:5219 Size:256 Owner:0x1c92 -0 -Seg:5319 Size:256 Owner:0x1c94 -0 -Seg:5419 Size:256 Owner:0x1c96 -0 -Seg:5519 Size:256 Owner:0x1c98 -0 -Seg:5619 Size:256 Owner:0x1c9a -0 -Seg:5719 Size:256 Owner:0x1c9c -0 -Seg:5819 Size:256 Owner:0x1c9e -0 -Seg:5919 Size:256 Owner:0x1ca0 -0 -Seg:5a19 Size:256 Owner:0x1ca2 -0 -Seg:5b19 Size:256 Owner:0x1ca4 -0 -Seg:5c19 Size:256 Owner:0x1ca6 -0 -Seg:5d19 Size:256 Owner:0x1ca8 -0 -Seg:5e19 Size:256 Owner:0x1caa -0 -Seg:5f19 Size:256 Owner:0x1cac -0 -Seg:6019 Size:256 Owner:0x1cae -0 -Seg:6119 Size:256 Owner:0x1cb0 -0 -Seg:6219 Size:256 Owner:0x1cb2 -0 -Seg:6319 Size:256 Owner:0x1cb4 -0 -Seg:6419 Size:256 Owner:0x1cb6 -0 -Seg:6519 Size:256 Owner:0x1cb8 -0 -Seg:6619 Size:256 Owner:0x1cba -0 -Seg:6719 Size:256 Owner:0x1cbc -0 -Seg:6819 Size:256 Owner:0x1cbe -0 -Seg:6919 Size:256 Owner:0x1cc0 -0 -Seg:6a19 Size:256 Owner:0x1cc2 -0 -Seg:6b19 Size:256 Owner:0x1cc4 -0 -Seg:6c19 Size:256 Owner:0x1cc6 -0 -Seg:6d19 Size:256 Owner:0x1cc8 -0 -Seg:6e19 Size:256 Owner:0x1cca -0 -Seg:6f19 Size:256 Owner:0x1ccc -0 -Seg:7019 Size:256 Owner:0x1cce -0 -Seg:7119 Size:256 Owner:0x1cd0 -0 -Seg:7219 Size:256 Owner:0x1cd2 -0 -Seg:7319 Size:256 Owner:0x1cd4 -0 -Seg:7419 Size:256 Owner:0x1cd6 -0 -Seg:7519 Size:256 Owner:0x1cd8 -0 -Seg:7619 Size:256 Owner:0x1cda -0 -Seg:7719 Size:256 Owner:0x1cdc -0 -Seg:7819 Size:256 Owner:0x1cde -0 -Seg:7919 Size:256 Owner:0x1ce0 -0 -Seg:7a19 Size:256 Owner:0x1ce2 -0 -Seg:7b19 Size:256 Owner:0x1ce4 -0 -Seg:7c19 Size:256 Owner:0x1ce6 -0 -Seg:7d19 Size:256 Owner:0x1ce8 -0 -Seg:7e19 Size:256 Owner:0x1cea -0 -Seg:7f19 Size:256 Owner:0x1cec -0 -Seg:8019 Size:256 Owner:0x1cee -0 -Seg:8119 Size:256 Owner:0x1cf0 -0 -Seg:8219 Size:256 Owner:0x1cf2 -0 -Seg:8319 Size:256 Owner:0x1cf4 -0 -Seg:8419 Size:256 Owner:0x1cf6 -0 -Seg:8519 Size:256 Owner:0x1cf8 -0 -Seg:8619 Size:273 Owner:0x5dfc -00000000000000000000000000000000000000000000000000000000000000000000000000 -Seg:9e04 Size:25083 Owner:0x0 - \ No newline at end of file diff --git a/HEAP.16W b/HEAP.16W deleted file mode 100755 index f2513717..00000000 --- a/HEAP.16W +++ /dev/null @@ -1,39 +0,0 @@ - - == near == - - USED block at 120e:e726 of size 12 - USED block at 120e:e732 of size 322 - USED block at 120e:e874 of size 52 - USED block at 120e:e8a8 of size 20 - USED block at 120e:e8bc of size 20 - USED block at 120e:e8d0 of size 20 - USED block at 120e:e8e4 of size 20 - USED block at 120e:e8f8 of size 20 - FREE block at 120e:e90c of size 5872 -OK - end of heap - - == far == - - USED block at 220f:0016 of size 136 - FREE block at 220f:009e of size 48840 - USED block at 220f:bf66 of size 20 - FREE block at 220f:bf7a of size 16514 - FREE block at 3210:0016 of size 65510 - FREE block at 4211:0016 of size 65510 - FREE block at 5212:0016 of size 65510 - FREE block at 6213:0016 of size 65510 - FREE block at 7214:0016 of size 65510 - FREE block at 8215:0016 of size 65510 - FREE block at 9216:0016 of size 49174 -OK - end of heap - -Memory Type Total Used Free ----------------- -------- -------- -------- -Near 6358 486 5872 -Far 48992 156 48836 ----------------- -------- -------- -------- -HC_coreleft = 5870 -HC_farcoreleft = 513440 -coreleft = 5870 -farcoreleft = 513440 -stackavail = 31495 diff --git a/MMDUMP.16W b/MMDUMP.16W deleted file mode 100755 index 87b2a62ffa07676416f3ccaa5a9a7df5b7a7cfa8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2222 zcmZwJt4%~f06}@ z>CNDox6oVYE%X+83%!-zN^hmN(p%}R^j3N+y^Y>RZ=<)-+vsidHhLSq zo!(Awr?=DF>FxA(dON*?-a+r6chEcN9rO-*2fdTtN$;e0(mUy$^iFywy^G#O@1l3n syXal?E_xTeo8C?Drgzi3>D}~hdN;j?-b3%9_t1ObP3!#1-u}Mi2XimR(*OVf diff --git a/bcexmm.exe b/bcexmm.exe index 546da27ffcee2093ba9f08bc3f2aec3087977105..183a0a7b3e75bc5aa56f0cabe58c47867e7234e3 100755 GIT binary patch delta 43642 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 JPmopA{{ur)r;h*t delta 43447 zcmb@vcYGDq-p0Gy%5;}z5JBALS2uSZBT}Ws`b|46Z&<6-alnxf87=+LR zM7m%E5djeaF%)UiOZI(cCfSMaIq!S#AJ_Bw?mY8bb=Is|eK^k&Ei02OKJ9uWl1-!` z%Or$&JlA*ll%nQ~)--a_x}0288_)*sEIvru3>t!BU zE5I1g6*K@PLAEkTY6*&ipXEW4FW4pxlA-_snbtwlZqOPu0~alWq;p_^WsqBXXdWbe z0~Uj7;Du?BR25XVBO>tHHb}|=zk)5G0(i!2%QwMAa1!hX+rT=o3?zY%z#z~8)CCnm z1PA~WJY}`zyUbl%z5($wI05#7ufSq31B?MZK|@d)1cDc|w){Id0W!cEpn_yD9mIj5 zpcm)@nt+M~nop9OfgtdTO_HyJ18)3m0pmai&=5GlGdf9L51N3V$s~C#t$E=g&$)F#o4vttR$;&}!&g|N8mol0k^<)=S8>mD#Rsl0sIKgfD<4KWP<%51MCFb z!4~iZ*Z|gmRbT~J3KoHRU=ElG62Vk33B-Z1U?dm@27!J~_eEQ;74!< zoB&xM6YK{WU?`M?cEg1#UYGyqjVX%GTr z@QNL_+y%dY(_klaAGWN8SPG_rv7k4I148 z2t%S~t*&)=5f5>u*v;>pD@< zIs`N@RkT)eU9^@1QJ{I`MQhb4Lhe;duVOyK*xrjOv-LtbFE}2R(y&X!bPr+UO@|1J zN^aOijk8rom<5^IMMSmCN(<1@9qJUhCoQr3xwrp(mDDg(J!~sZGu2zRw$-Xf!YSuF z;;A_vd<4dTQD6i~OD47D*hP*U!t_YGc01S!-qQ!#YtfPsMI+*+3`*{Wr??`D?qKI{ zro@<1y2{D3Es4pgrbLe%QB*zX=vX(RXub!}YExoT!-%3J{thCol?;EE|05%E4`J^a~kxZ*xZ?qimga_bkF|cT2gMb`_6Isf!f9I8a<*` z^RHZWPNHXmNQsfHF{XHB-sOze5%=Vjt|nMI#d;>#JQFO4ey);~W$F~0GtuM9Xs<5y z{|?|*#>>;As=7SyG6;)(Ay;(~7N?gEtCksCEwkEBv7KBQhzQ#-PpCKBYN;7cn+=kk?iX!!9PUwJ|f8bDfg4^v##CNoKn|^d=Z`*5xeFv zI0BAF#BL|CIU#;?gEJ%M);z2Z4ecGBi3sb(dwFe_;%v&U? z+22kJ-!8|(sZegxM}}3W?(ZY!L}f)BMYiY0h;_#zcKYPB_RNVo5m8q@77-V?1{RW2 z+XHho51ciZ#D>Qr_=EuMPvh}6?T_Mp0_#rd&W+>5_K}#qkAt!+~a$Hi`XNPosIV~@$*7!xngZ;Hmd%<2lc5Z%RDuVUELiAhPhxiSeL}NsOm1EaM{UI*vw6 z44aEfIWuCMe_i=VdSL0Dlp*d@WwJ_Ch%_Qei4oa3DJO7`I|=H4wV!&v_-F2=on&tC z33W%=I`o8kuWUK`gBo0}IDYGtTWZa#79pq>>ZNjZOnR+6vF5lMQa*-esr|}FIt(vy z{7zj8U+D|W*P(DZSs|i`GjgFE3c@2R&2#-3kzCUincOfUa!JJoqk!$@U*N-4;gCp0EA!`F8*P|heaz?7Y zm8!|bBa?$mMyjnURW_B3TtA+yEgq>RRtgHtjMzoWA8C9#=ay%O>3oiMhlkZKD^&=@ zJ8sU9@ou!fanCR1vffCjcPfRK*P4oInfCeGyF0F2qajCVd{^N>v zW%YR*mFN~^sxu|#ZBoqJz}U5!#q_30icW7;?I1<#Wva1(MyG#Mqamfs)%!KumRO!> zkGE#^k)vL;V2w%KLQN(OWxuakp170r>3tgQkJ__V1y(#VJ-JphO7E&a)GifqzgWug zFB36*M^he~Q|3}qLaryiL{h^C#aNuhQ}aQ(e;st%N7SNqTZJ4cmV!nAx4q|L%Afj; zXS^RB>&j@Zy6e^`x*{>Fk0~mtk!M<$D321A(!vpyGSL?0Xc8*EyUXo<5V zHe8`TteZ$zsAKCDGA*cA8L1qsR~!z1)C(#a6&V{fw}sFf*aI>e?*^2_7t=E7%2=TW z)GuvcVcZsKtCoWn^_L_3wffueyP&}@#qcOB`or7%)1B=kCC1jc0VCt=`Oih2*{~9P zrZ*gh-|$9tqsm2+c%SJBa&uR_3C|-E9a~^h!!oeiVU2dh%XmJK>eNP~Oi}v7D(Omp z+-N>UH|lN@iAdHqap5t za{U1Ha!hDg=SXy%gCf^mGSb?i^{>{Ge7P$GrX@ ze%iJeqDTK-i#f%6=zgu5-#&)709VE&ivHB!Gr>1a%U$1=mFOUKLCXj|(2kZ(_{WxP z^;yeE{W_%8OIOwKZ1lRaXM)KyL9Uj$m-xnZ@=SQ?neaTVvz)C~ZXM0xMIF$(ooskj z$F>PpPq!|{HRr!u*VCQLw<)j3_(2;?tIgT!>NXYh>$7c~`rkWks_B1=wJpX&=_IvD z+d%!gd)w#Q-}H{{Mo?WGYF|PZ>Yp8wbRQ#Pd+C2q#Tt2j5Ia!6?$YtT{^uIrJ3sd0H zg4(Qp)IB`i+P#GyApQLhf@qk3O`#g{GOk`1>T4^30uYS^_S~>s7 zsoy3gye09$X(r5;t(kFlqi7vDS$C4ML{h?Q&21~mR&VrZttVKyXNeG8|I4rV8-BGI z(ns_>DoMj5Q-X)7)%x!a(N$zratn+ii{M31>H2p4aI~4jR6d}!TRt9>OA_z#?9mvg z<&rqmgWR++frKPwG1MjG=1(mHaW_|OLT)G9+t`8_hM&kSo=gV*ZNA)Bd3^%*+Y z>5wr1`e)+?mx4Sz6&OJH$rwNct6M*;=?s(ics$iIpKR^0$4dU$VC2b_5v9KUur(_u zt5L)HcBo$9hry2?i8ivWDeGCOC+k^pG-xcxn^R(Pc+8{Zm>jRK_Y7aH^L=$tFAVFg zbdmQc$dqayQA+LoVIAjy!kNs~GC5ew*x8__3HECz5Tv0@{qv@hRA5wzfuQ{XfW_{LCjV4 z63X#RxbB&7%avhMVuR<;y7neEZ4lO+lCm703Aa5Hu6ZWhaAo-YPq$!Y{=sW+4hAXS z^44P0Z7tM(qk@Ga=gf2U;i#C(T?@Qux1xLLuGzGQ>HH)UtChu3#0nem1@n=-79}*%Sx~v{8ZUv#)G;SrCofZ z?6GJUA=<@ZWsgm(SNE*i)n)a-=t@n7+Tv_8Z1ZhBZ0H9u20+4Z^D!eFbxrdV_6I9_B9PRbg?8+D!8JpI?lxjvJ;L4E9-gMIvLkTgQw_~wOch>xN$8BgzAbGEmcG!b9E?0b04)mMYH2l`+d} z68G$`jQItZxiKCj$HwzJl`-+uZge3QBypq0Kt?lE#o_~Q$Z(yH)yVu}NNeEEFTkY* zG5&7_=!d1n{E&J9q@lBf#biXhvQYUJJeY3_;`P)VT-#G~U~N~%Rj<))^3?1PYhPIZ z@>&t&Bku*C?!el3_)okRIQP{oxrHqztG6Is8J5BqS`q9OgCsrg)eE~cwz>)hYEjrJ z&WZ$vsYAvO^Pda*bW}jCOj#3{m#WvtpSFK)Ej(7qhy_;IIDIHLej}Y+f$`nwQazB8Fvy<{D*FCr*98csW~a z+U^QkW=xnaH}H7kF>I=7LsqmQkUngBFtv<6ya}0Bw^X|V@7iEJd3J}CyuRss0Ri^LOqqsM{lm55yjGDTi$usKe*Sls! z(;MnvGwQh>*t{()M`MX-Z{)4J=-F?aG&wlhHPt7}Ro~^2>${@nDm#hxnnb6cODe+X z6ZNl8#`wR~BGKAgtp(0XkPp6Aht294__iQ!%^?L2x#};oK48?YR-IiI%OPs-*@Ijq zii$W}=d}0rdcfwy9&B{co`;oyUx*|E}qE&&BI{rC^T2fs)kHSc#RbcZ+l zcpGnPvG{r>IP}LcWXT@8%TXvPwSs!xT2He$jQUn&=~vbd3SFOBTEV(C!76W0h!Y;y z)^xsXEG_#L3|n-=R|!TQJrnMxO~cwH?kj(SGyVSAXm!={eib`oFAFc|@tE6$+-WMM z^tnBMR?Tz#5=L$qW!A)yvu1J;t;25WIXFReq=waL`tab#jy*!}?gEd;ykiM7zi1&Rk~qzo<~z?<2c(wmy4;cfU`=_ku61}TX(d!7J*9J+O{;TuSn~S#st-{R z`Y_Q`UVD!%^M0JatEoqerKyY~gBy{oCW6KFcMvM&6TwOdPRA)->cv821SD8bU(gXFIFqf(UQm|N9; zdNBdRy{9Spvg>obIIHT#`Mf3u!dmH8*DmYCJjHeX<9VGD^PI=rFCX)~F%o>*Da{Wn z&S>8Z_Y8?>R&8>&OH@>?D?=qbgJM2vxs`J(-6;QKQ%v2S#^#5~dl->E-cm(1)JpZ? z!6+Z~#!8ga!-JJo|FkNVAgUC2)868|z|{(@d4W9#YpWln1^j<0+B$d+4GJQ_(6-PM z%zrKuS=#^p6q~EHKP?%Cr#KuFgPi}xV{0VSz91Q6c-YkQ|MEZrq4htoFd?A4J&26;W$964VbF|N#uad}>h6TE&*YX?M@ z@*%PKqb;w+W@M4rjN@9W)4hIdo|;3jd^aevz;Tu8SQAcnsO8s0(&K8oHO>mZdcB+Q z*5wsl-ss85s82V%TJ~;e^3=s^Lg;h#>op(7lnbwzOj0f-y-_CcJEM8_%}Solq2U#m z=r(`YdKk8+VOqB%{Jb?jZW5x?r}! zUrpQ)lTV^k>Prwz_nB% z*H=O6m~}ywO9y+y7Jl&c3d}VM1sbb%+z{;CT;N!wkmEtsy&<^cZv~FNd5(=jyM~Sm zof-OR=(nLKLw^gq9{M8G5mqX!epu(Q;bGImR)lQ}I~F!JWOm5sA>W0Z3Aq{aI>ayZ zoii|`d`Qy}_4bAa^rBjFV=3Qn6DYZJLz^`H5pO;&|D=AfG0go_0y^X!WX+EW>#`Ft zXj=EPd)<$k(Dr*?WB=&V@!3BiU{b?x6R_r!(&u%?X>Dh5?rcIZ%(^!M(bbKYl4_n! zz=D318^=A88a8y3xN@4;qlLUCCge65S0BGUCe}=9cowl$77-RLjxw6ped@c7A(b_= zB(B2>k0ef>8CRh_mW>iN{dnRQh|HD5Ve5TWp?5=}z^`7xn1_ z)%;~63Q~K_2oRrQ| zf81J?j#c@#x{Xn&@nci^+{OB}w3BFsm~=?9^)hTsvn9ve&NIh_7-sJEs!rSHbZ7zi zohB5$IYO)Jw?%%SnFjt(&#-k!>64?UkRR2*Qk9O!Jok9A{xduL&T(RdREuse?H+=) z@w{ll|BG+anwcSUVjkWb_n&TYeey%bcUdz>_tn(0xT2ap`VN z@{0qNOuJ*<+g#lnx)zir2HW1EjN{mdGy+qvIbG~9(V{a@oR~_rsGQR0QTENGLo-5H zoUg9u&Yq!`{kD0;j1aB2NN!=%M$=WT3D#4fs`Ziik=bMQSZk>BzYTGmw_@p>jlkq1stF0Ri&__=;p{7@fww9 zm)az~R@klt%swdAZBqKYJ+9zoi+Rhi%sM^c?J-qNFHV0}ccs^+yVQs2W#}>0xw9H9 zZFdeuUEjHLY0IBbC9#%+oj#)^v=^2TT-HT3jhFPC{o99Dx)ck36dQ)sGJBuKjhtTd zqq^w3a76#jcMUtY4$B__U|FJz_d;a#c@mZ6mOXI+cvIli%j+a-6S}_M%RHYp!>7%a zF+gp&E4;=iuLs?KocB`q@0sX}XdPI*@Y*qZnWZk=6Q7%;W>#zCRV9ec9rL~eN$EQ?o)g!sjXhz-I$N#*=k5ed2X>xQd?xWs+PhbIZR0M z1`#3pL?26JD95Dxu5N2Lg<;6O_6z(zTKg4#pRC=Yre?Gbcj4@nK99*kE)sl6T&QP4 zAofJkW;;^VcNs~pFK}=J3*vKQUhE|EyFS21{H2<6l{qmlV$)WbDypCF>FnO>%`--7 zmkM9x6kH@FSn%q&GW^5yp9DNd6kOa3(nm_?wP92xuNlQv-Ft!k0K|b3sb641#aGAf z4RSa1ny`iiUzqVW^_uh{6lfsdi z?&|Y>(@WlR6YOL7l6x^O1^WhaiI`j*bHKYWH5`lI3E}fDAH1c0bf8AfTkgL3vsnG$ z#4-7q9@O-oK@+v0Gqj-3w4edc{v&9v+WvskI#csEOY@hj`SZ*Dmp@m=9Ci1B2)b0g zbfCCnRlz;EGPbK@4+e5qMwVI(rzf)2#s`Z#el6_b0XzgVQ8azd!99YRimJ_y4hgmu zofGp4Z6WVtN$&HsP0~$1ceZa)_0Z8vEU>7$GHYtE6F%Pj4p`pQhT0@Oh13N4okOYH{!lkt3_0eu2L(aN{zbJtJICIk>2CNaI1R- zP7<0%yCO87Jz%g(FoC0USS@0wH z30wddLvTv*62xV26g4&=is1F)~#-J%^ z4q`w{&>FM_?LjQ)1iFB(Zv1oyJwPwe2lN92z#uRL3-;*m;fe$DPSr{ z0Eu7*mvKEIZ15=J-?q$aK!gk4M@ zd}Etv5bYww!f3(U0o5Ef#@N4X-C=9S_`hr;)sBA!utXOQ^HrefOLF@3Pkqpe%Jn}j zLr7b3QW|CNZCXZ=GMP$uSgb_*Ut((`E#o)hU-5M}S8}9Ax27v;$<$M=X^C2Q`4TO~ zAaaMV)kHA(Rue_YZT_7moIn>L5PLLBDDg`z*@ni3*X0AzfRmCy7o{MkYnCYDw|h|= z8cZ!Eq!tbsVo1Z(?QLm8S~m4zTUsK#4cGR4Nhea@5S>YDu5A&ME~H*+rFOIeZIIft z9UVY(QV(iZ#Z&LKqoMS>RJlD}OFN`~(Vo_@wC5j|MvzZPRO(;tX>6^QTwB8-3qd%R z*2yB!Toa2)q%=$uOUP8Ft-2ExL}3+{EG4BL0;}@|Nn_ellJh1>W~wG`k(CT*B4p>EWCfe5iQ6QVVNXnU{zaCvo(v*~EMwU3 zlAU+R9M%tCEjaIz*(_TV_ecuM7H+8fWGRcp2MEr;iOK@-HG=a2nZ=H2;vxBj#o)67 z=OeO&VSFV!ACtvQ8(=w~keRH9CjKEwY#Kfxa6Tn7*k(;UBMaCCO*|*_nHgUiIA4%O ztfnSjl7%cq6R*fTHo#|+TXw!CnM`1A>3l;Du@RbhOAfM)ns`SJuw6L5oc^>M*G4qX0NRynTX@bu`o4D9M{x$x zF53AQ#pw>Foq1DD6`}ud37-k9aMCBdIZZV?L#QO?Ya*1s;pG@a81?Y`93q?wk$~?9 zoJFZ!XnUx`flF+&rP)GU^2qBu2)Tbd|A6|vI{QPNFiq3yal zOVM1OtcfT}#7#|4YZg(W;WRZ0M{{t4IfM z9LL#!MoZec9A`sXQQCuZ+0I6^f>ct1XiUqwrG=VmLMuzJHPMt-k_O;(x3d{NAX!L7 ztFt-XFC}T>J-ScYp@|r}S30AK7IcsFToWy6hEx|vy`8P-ZfS@nTGQ{P3k;$S-6cK1 zNpNRdnk8vlD9(2DsDxE`tFt{lBDuA7dS?fEShC3wu{2Yft%;8GkhB{I$DN(%L1_dg z9?s76q?DwIF7$+i`G(c`K0PjJa}sA)dQ8gDL^r(yLATZ&q9;ak3A^B^X`l35I5BE%6*OoF&u48uY)8S1`f znga1a6CXo7(!^AVE)fvZAP#B*%Vi`}6K;renn;B3#Swlo9l}o&Gmv|KO(fC3d7vg{ z!l}3>K7pv9iCGYpAlzg&wU7atX%4lKL7GUWGFdVOVlKpTO{CCOEKL*h=;!QnP0Xij z*g8!tpu5;6O)R9l*`}!wi)cr_DFI?J9m>Db#1i@;->M0fKIXeLv6M!O>uv~T88Tu@ zytw=0?sSCN0?V&-Kj{>CardMCv^WbGre$b28c!L$reznsLSCnq8bl-ASIBb@21KK{ zg}l^+=A?_!9DX#*7>Ku;IEOpT)x>aqH9wx;$WzTSg4>KxBO!Fp|MGKR^D_!gk2JB1 z{$_~L{5P`^ehmL@_t`;oqu?Wv!z4gWv#@8br9p8eE^6KGg1e4@y6G=INxM)d6Lqm2BmhlI}u znz+SfBVT_)=(lw{b?amdf&NPMOs1ih3*3k6QR>$fdgh=D(u>n8)?tib(F%AK{hnc; zn^^AfqlO=^@H%)5p`0)L*AkU-xgk zx;7RhN*c8r;#2B0#2<+2opvuvAoOST0K%hL9`X_VTdmGmxiFIR3LDoRKXPk@&~x%D z9nJM;<+XVI{2G?;_K1IkM~YyNA@sX_k~(D?4IT9luJlUq6hhC=GYCC9&mr{eJVAW@ru{*tiK0uAoQoM1=sKD6@-2>Ue9mc{9~@WX^H)3PIV`*Z?7M3&fXzLZLDs| zh0u%C1ED_>A}r)TBh+(7;iSjx$6Nf*9C?FzBl1S=P0X9TH$zWS`?(7jrq{tMyf@($ zUMEfHPxMQas$ODDj4(=tL+B;u^`i;>j)gdDRH8_B-6%Q94c~bY38SE;e2dqUH<&jf zZ`4}y|4vL6e;5&ZMH7rv_2e5v=moBzF!cgAale~}ZxhcGN@{W<4Y!QLGr=>0Idxki zbq>*j=;iNC(Hla`jPBVhw4CcV^^)J>ceNMNh1-3o36l^;yJJRKJkcx`af<5=kX4*Y ztvH=JdwbKeN7~&q?Wr+Le8T2gv zP4zVaB0r$nhUFoRGsGi0%@B`iq9LBp>4x}+&NReRs;?~&eBiDvJ0N}eIX!N;y`TpS z@seg4;uSq&h}SgJ5O3&7L%gMD4DpVhGDI#tYX}cIL_M#BO)@N$O*I5#=MBNx&zdMl zWWg>OCW)Oegv^#1LSd5)VZvBr`5c<+HXe_%GOxtZ85*Ube43YKP6{o+gTlP;pG_zg!|*xKC;7KFi`~HL;48 z5_-MgNxKQX4cSIp3%!Rdi{?dt)4xRB*4t&R5zxEka-xjLd)M=V@1@JcMQuP?=tYP^ zUQs!&(uRikjW*I|12A2q%?#7;G}aK;X(vPcLAw~@2JLEyn{==tZqY%8_>=ZG#BJKk z5Pwm9HA{ODx*L`|w67uV(hm%AkB)@Us_T6^&M^H=#~9)Poo$GRw6q}}(W-`cOluh8 z39V^}e`p;;Jf*`8@r({N#B(~$5HIL>L%gI@4DpIi(uAAHujvHC^oF_(@s`do#5UohqZ-xZy$H6^)c`X`%`& z`jFd(UPzQb#zXTiUB) zY)EcZT?l z?lQzRtYYGR2>vCM7QJGKKj|ey+@|LZ@fW>ph#Yz@ zuVUY!7Y);0`lBK4(VK?2PwyDwZ+hDh4`{9-9@5VZ@rZtDh{tq`A)e504Dk=$ZiuJ! z4?{eo*9`HTJ{5S)ac3{+UBmQ}J~qTF`p^)s>EDKUL!TSsEq!H(cl3oJa_JjG6nY6a z7#7ODFa&l4Bt0$8m>~p{BvM>UUSiJ-Pcl1f2!(Algo&-zUc#9oiaCx3(IMdTG;C$DF3@P?wcq`&fwAoK_uL;PnvZar&WH?MDR_`AHW z@dB1*btK($ZB}2>@55{PPe0y!{g)rT9cY64(Q~Hd)u9jTwd@;tOkK2qhL&n7>PY&0 zwi$#zvTlQczuw?{k3!TNoU*Cs7SIw+wIcAAw;qQcE$V^An~;`0J!wrCQ&lZ#%@4Ad zT74mn#CD4oomqvTmwN70OueG(67QLLjam0wNl1+>CJ@Jj?`|s$HGu`uhEcMYs8e-FWfH!&3 zrur?Wk$Nuw9ba>?O$yA9MlbFgsn#VlH1)+o>R-A|epasi(Etmjb6bK%IHsYezg zgjNpv&1yN;h**Jw{e{7#1% z;yN8}h(G8^L)@UF4RMoBGsG=A)ewKu$%eR1;|%c^{n!vWbgUun(1~tC-K8HH;vSu8 zi2HP|A^xVb4e@}kHpD|(&k&F3dxm&STN>gCZDojmXj?-(r85lijOL~FoGvpgFKCKn zwDvFQ62tV0E;7Vxy1)=`XsRLJ(lkT7qbm%NOII19P$S>Ouu#_A5R9!g1ZV3FA=oBE zNNl-;?Nzk)G8=%|OmoTIZLF49hh zh!RPXD0(q<*fKiA-Cv3!3O21Z{^r!yR_={9nd+1g)b_31jF@q)Q32PLmF9S(sZKpy z7csTKelyisPH)6rY~7Y?zr%Q?X}`3dsq01h?{@w7jQ)#Hrs1cwxZ%K`^5W!-i>>Pl zn0EJEP8(U=(WD8fNt%(S*fefST9N^z6&Xg_kT}vDn+NSN=50sjkyvceb|l|m2YEYr zpX?;v$X?Q&93mf(EYh2tBz?#w(vMst{mCsdh&&>L$qO=syu)S%rymkC9Zr1c2vUTO zCB^7Rq%<8zs?gD-7L9Y01~i^Drjtl>I*qiZZqk(|kRfzBR@rA@fqW)fso7*Jc2>{Q zxtO5LBRTXF@{%sZe*OYdj4dXO*b>qKyQ=TA<>Ujlg7jr8$%ibBjAx&dX>2w2EZ36H z*gEnBwk7wlP2@P+OwO|}$QAY#`HQ)~CJ)&b;$h!lNcSx%&C^LO9D8iWx04R|r$xH) zJ)}49j%~&s*oN$d)qp;91@DVlbU*qd?@xc@189I4h-uegI#3M3++-MboJV2|K8h|B z37A+VV&i!xT`fML>0&vCZ!0izTTPFO?`XEzMX$TXZYtr#pO3Vcx}<&B!P<|VvIF!} z=^))H9ie^XqjaX6MZc22r|I%>`kQ=;K9x^XrktUrl^sh9OxI|z`FC2H|cWoE$aT({3ktOzD*lg z?$Pa*`?RF>Z@R+zfI4gsX%*We+Q{|<8|6=FYuj_$!}fv>w!NZ5ZExr}+dCR(%cY4n ziOsMnY`)FJcGxWJkj=)9*aBI$Er?ySg|q867yH}Rggvx1XHRVJF^{bcD{61YirG7` zlJ-t+R^8r>HMbYVTi_ygQjGYMNSu!-PO6epq&ijz>XP!LF{wy;kZ5dcRUwn$G8Hav zQUiNXgGn+OiGv2C$Z9f{d`)J6B!aDPQk~8sF*F6cX!Ec+rIHmijclZ!k^^)#`GIaE z*>p4cg}T2Wx9FF|hB^?!wxU99BNf93Di|xC@IuRp?G$l^*7`uuM{i zUg33V4sS1&jc`A$$Qsgt93Y)ZCh1BJV+-&&?))Tn z=T2ik?hMXZT*1kT-$*K6y#3^Na+zGmEA}@Dr4LC2eMCyp#{_$`D1~RF1$~aU>jh~? zUy@k*igc#0$@}yTad)F{vE%p-dyKi*OY~riP@#jUi4LU}`XRN_(KLXLrC~IlhSN#3 zES*ZrV{@VcolPs!Wi*<8L95U&X;r#~R-@Z!b^0x>LBFFl>26w!?xD5mURsClr*-Ke zT90PYX7m^iYn-Gp^fV5E{75^v=}$Px@eA!vFVn&F8XZAz(UFv~(bUAI&=8!BsLiI) zX3R}nu|(R1O{d-10@{-;rTy75kV>bp6*Q5h(OGO2-NZhlJJ@RMrmdkzuygc1+eS~a z@8~(~KmE-z=szrr3Vx1;@@(3G|3q7I_XXOX|BUVbi#Q$dH%<{e!2yJ)Saf`jMYI=q z-(S*I{1yF@zoz^6TlxdH-~@(0c9a6y9UjE)^I&YU6k$(z2z$mu*&80ls0e3@D9Y@j z6bld)S){1UN{VP!T2x`>L{(N%RKtY12CF7&vKnqti`5j3SZ&dm)fG)xebJOP63ti> z(VR6CZP|OG9cv}pvo@kDYbUy~4x&4Y75!Kz(Vuk@16WrvkaZU$SPwCh^%kR8A2EjY z7h~B#F^&xuQ`k^3jg1irY@A4Babh}~C}yxJ0*5}tCoECSXYT1@0ZS4K*(YKVn|yK0Ud)U3vCZNr z`%+}FE#iCjjX2J>ixVtepzy^hwp*NL8R87vD=x78;%AmAF0v!y7xull>So8qZ|tPF z&Q6O*IMecs{UTnl-^ELIPrPNX#XF`*xy&IE9wbrjk~l9Z30_5#ctc6%O(ZjKE?F>4 zw(|axoqs6V_%z9f&z5}oT*;p=mI8R16vWp^!TcMk2;VC?`2i`6ACkiP8L240D!GgC zTat^vlp;BkOL8HX;(qdL7ATkDMdfNd690B-X}LbHCO6}~<>q{V+=723x8!m1dpL*F zny293H(e>m@=bC_o-TLdnR0i2ME-!ElzZ_%oC$^za%S;(6y zi+C$#G4J43mhkr#mG@Lu^Zv>jK1f;1hbrs%aAiForF_lDDqHwR$~SzxvK0qrw($wd zZazuL;FFa-{9|P=pQ;?;3CdAEUCH7}%J=*e9Ouc(37(>y~;D}0l3m4Bi9#=lao@h!@2zFql?rz<)9 zJLL}Ft=#2%mHT|Z@;5)IJmi@Q6UUSy;w+BpTv0;B10@WE3#-W`T&7~8mMKCsHI)>d zO;KW;skCsL%8DhXa-ckxN-K&Zrpn@msg_&(ZK^HanCc3Lxt=I(t}iN^`-#TpQ36Mo zL|gM@FhzW5{#Z;kPZjgc)5Kd1Fmi0&F{#>b6}<7kqBs z%eGe;X4|hM*bXSEwu8zh+hHZcc0|dx9aVB{$CQ6;mz6;K6>v>yWdB`hZ~sG?Y=5Lo zbK9RNiS~b#6#Fw}h5fm*#{NRtXqQc!?IzP#cC#tNZZUmtx0-&i+f6^&!%P?K#Y~s& z5vCk_q)BpAHkln&Og2YVQz=I^Qzb`rQ*}pUQ%y$;Q+-D(Q!7VnQ#VH&(?CaC(`?5F zrW8kS(_+U^)8~$1rY(*SO&N|6CifM`NYfq1DAO~?I8&g{cvEqoI8!B`$)=7zQ%rq) zW|;^0%ry`9Nik3KnP=YQGvB<=XMy>wj|-+vz~Eiw-9H=@9ZG9f~pFFic1>sKj|QI~zp;*l1FkjUiRoSkjGs zgl>C08N?=#k!&J)$tIDad@}irPr>=hkI5_k3GwiGL=h>(A{JnE-MxsE5*R=VmGl%# zajtS187@-E1hIl7ij`!ZNF%GnXXLc_oSYSF$xmVfxg<7|d*Tc7P<%xmi?7Ku@eO$) zwvsnuJ9#H|5Gth;jxT)_X&2Z{EYe=$lnxM=bdZ#jGD!pJ2tHk`h?x5PuT?KmUdg;QRPMevadyAs@_{7|z47<2qD~9nE=OU%t*e$`5dc@fq(Szu;r#mwcc6ivJ+L z=2v82@rN8NZp%f4qJ#(wnp>ArR8&!1qPbE`v{xcUtWsPIR7!{mN=cEdM2Qrov{ z5nGh9;*e5KoKz};D&m?_TRc?iXe)W98WvPxmSG2ZQmEN~kmqyxaNb&Ys(qwx*X|6q1T4?Vst+4l! zw%dD4`|N$Bb8dS->3918=?)GYKei8*B*!o*%<-XA&M`u&;TS2^b&Qf)IYvuu9Al(d z$463M$9QSDBTgFQm>?xMCP^zClcld6Q>4R=kEQdDsnR{iG|A2tsDr0ssYq|<&GQm)?~DbRnf6z#uX8t8vOn(Tj2 zn&W>+TJ4`H{p5dG%JDxUSp$wsRRc~)%>o8XEdtI+odRA;{Q_P~@d0n7*#UFq`2kDZ z^0EL`{wiRpd^}*8d?p}O{yiW~z7z1N{4C%z*%Pov4h&o;y8<`J%>p;d9Rk0Qdjx(i zj|lu)9v}FP><-*2&kfuzFACftFAe-wULCko-Wd3u{AJ)Sut&ZSxKF+vcu0O4_`NKG zF36UkUuD0b%W`ngHMxAy?{aLA`>NbO=!QHx=%zd+=!xtOdLhpWdMT#_y_MGly_3^} za^(X-9{EPlYx$obrjTH+*n)i&zhFP5NU*^2*s-dFO1S_=dDo0z=v>r9)zs z@*y3Sh9RAmrXgLF_d~iWAB1#MMuvQ#j1B3bB!%=+W{31v(n9(wpNI5Qc7zO2z6%+s zoCq1LoCz7CxPK2BrrZqqP z%0Hp=loz4%6-(Gc#Sykhi40q!lnPUo+F{F-`eDo6N{6r&O6RbZ%8;;6mEmEllxbm~ zE7QYPD@()HDl5X)DPMzq5K;5mGWEI7UfY`hEg?ruTmp?pVBz| zg3>hnqS7+_lF~E$SEWz*6{UapF6{2?#|IUMu&R)Wne`F$oJUDD^oaG*BQ`}(*oL@I zVO{Gi*0j!H-3lKLkn`vPFOUi3BAG*e!HL$(7{Oe{R|wb17IFg}>`ihCYh1sfx4cE} zpl`fO6im5o^Z`aQkBJl0Z5O87l`zGwiYaz&%&wc`Q|K0y(biO=ZK;E{$Kre!>QDP( zWBqDLokdH6QZyOU>-m^cFT<4jGfb(sU`o9UQ|j+AjXp=~W9r<1 zX5#~opJ)?$o;IZyF}41MzDF-%YJG*a#7w#sy^bVrAjw;_9sQHOPjfKSzJrF%e45s5BQNhMhg~d@bi>Ed= zk@}z)_hpl*AExO3n4*WV1X_~KqUBgJjb`&{T};#4vqf|mTSDWQO5K>Q&p?mA7*qC7 zF=b!FR^s$)ni~iISJ5oY+keEo{XFLF*D-Iu%hq9du%2?hkxG0sjy!%zL-zLhrN+h`2mj%oW29Q9A9!}(4ux$L5o`EELkXV67_4_(IhV(Px1e$7wNbbb=2 zMX*AKss2&^3(l`x!t$N_SNaFPO#kFpupV=Z-siV*g8x2_zyFPc_m8NbctBm^F^v*W zXeIFvc!RSA?|=sPO@K>Q|yLvhUF+{*#qSqd#Yr!*UEWDOc$7+>1Q{KG+ktMOxIWg(+$?l^e1a? zy3IP7{$kxsIc%)yE{ikWV+p3GY=-GM`^5BuEirl6QWNLPOoFGGB)-}t^KVQJzRl#z zzcu;sJtlvC*c8A|n1Xn=DVSd|72!8b5&V`Zir+Pr<}XZTIWd>#R&xdJZ+2JYCCt&h zj=3stVXnbDn``oZ=30D;xi+6=uEQ6a>+$X8mVBqVGv90O$}`Q~_z81&{-b#;|JfYJ zADMAjz%rc|vCQC2ElGToWhNhI`GhaG%;KM0X7iJlIs7k6GQV$`%YCi$xYN3bSG6wY z-L1=bf^|9H;I^*hr>twiI{uq=J-=?&ZRn%}gY;g4-+xtrS0@uK!@UdR3uZ*PCY2iOHZDpABVyGhKpcNEF? zu419Rn^#|E*& zv01Ekd?7YDz82p&wupU>Z^SXjHt~yNySVE3R@`)?i+he;;)x?eC_a0H*=Ik#XE`W* zeKJK+pCh7@&uJ0u^P{Ng^OI=kb6&Laxga|FTohe>ei4IwE{U-|zlsE(D`Jt)RiXO0 zZ{yRK9PydYJ+ay6zWB=Lq1f&7NSyF_EdHOiz5_6d;`@K{}E`P zGxOda_dFGsJkP{s&l_>g!{jZGkWV~PzVd+Uyf!Jl;nL>yNsl*D=I}{o<`4+j&#-j<9NRE2 zp$GRjd4u(1%KjmtSRs#Q1&IffZ75z8 zcRC(x-4kg~tZ4VbwA&lg?jSmgen{sa`KNRwT}}OTKaw7%V=>i^!&EvEQ|Bc51Ua75 zk0>@VF=I}r8fLs`%y@B_-HNl%X=%2FmSbCK6)ZqEzykF9ES)A}5qb#QK^L%{^fKE; z|M9ckv=-lk&82VYT7CeF%=OtGp2RZvy9|KD0pix|25-mi@DA(&@5o;A6vna6>%|&x zJ~0qys0Oij#D}cC7|eQ#p_qtnFtn+RY+t>~))9w?y*deip9Tj_7 zq|9J(azFFuli#yq@&}e653`E$2qv4OY>GV2WK$vzPK0 zMzrh9g%3A{YQJKFxrvG8f2^Z+n4)Njnp2pW!fXQLwn2)X$7!WR0N9~ z#lREANi3Exa${X6FG=)cb)zbnq#jl`>Vs_>fMuE@Su-SQi4~4k*bQk7)@g%9rnaOa zX^)kT4#?UOxjJE4sWX<8lEGMAvD(oMrF?)Ax`V}fVzr|ewk~^v)lyJeA7G^)#Jv6} zbpT2nh|&h3H2)YB<;TiZ8nTZ?)^U&l$0Pd$WSxktlaO^XvVMfDiansza5e)7IY1}qZ$tuI;n=b90a&@P8Iv0uG4a#|8PN?HF$D5qICwr1+bhwu291LZ zmSo zF(}(DhD^55t3yl`naMtxY#l|&lB!0zN$D4EnM6=Nl%f>@2 zn=GDFtOV29;&-}6{6RMhC;LW(V6!0%n+)O5G0h2a%ZF25k<2CYF(~e_oU$a#EB&Qd zahbp>L-DY&EXO*@3J|#}0|iys9GM92uL`lN23s#{LhP!|4#+y}7(}!i5YO(&20%m- zdo3F=Lu<*L_*7Y_)`3N99a$l*3rm0))>iAmx^qDMDpUv{z}dl`f@f?U&-d{0k%|M&DKIp+oEq{>H1E#N8io%>wDO3eJ{i=EXnEnnKTYC z!#K#?#vvAJ{J{Ki#*eJ1@e}J|Tx2N_zxqM+8fZL&*!7$ZFMuU3%bE6?&Wi;Zejd%H4qbXl+G~*kL=8)%F@UM;c_*Ub6 zzRhUGzcJeI?M6HPt6@KJVo9%>L^P=UWojTMC#WCyTE_J-yZ&M*c}cM;S3h}$tz^; z2>(ctE0atXh9$x@M_+b>Peo-`; z9783>!k?SAC#Nm?DA3P?J|6UOpkFpyPp4R(b*PU@7Qdf^H{WRMOxt1#G?Ck3<_0 z90-12fkf)JiiAMLRm1F0kjX~ZTQ~TIwjy8Raclv7H*H3~w&*U_ifjRW8|Y!I8A%rs zK8zo15#5b)(&6ue^_2Zq`ZxSEIVf~&{{TT!9K}|Z+2T_oksLvyU5L0K%47S=Y?)7P zA}4TzJ)px17#~DwFg$iE|KT-F>ZVS^lRiH z&Ryg1miirIspL=G>^u0+up#87RiTEwF!snOHlYY<%=3{~7JU$3!(O9hKY~7-FK1ku z4T#h#69NBEpvPzx2=@Hp1H7?EZ%79=u?T6a#qls{Hf%WF#c6~TSjvM2yX`fJv@)dH zw~-joPl7(yzLDg%=%pMxNnX%TgI?Z&%`NN3_Z+KeA!#FLL4V>{3S$Ijg=V_`k)?5B z_B`nGT`yz}i#{W4G{s2-a#6K^Uf2+tWJTB`hLA?M+0USdMD!z#ExJDfJC2}V0ew=$ zG}7FnhvayU6ND5pBMidic!-0lX3M1S5pN0qbh{r}h7 zfFi@-jHpk}qR_wLUnpt@Y0CN8V!qdw|D4t0%VGt&fY!VL{f1afewLa_PR7U`>)?JRIlXfNxJ1QpIXPz|)XaMNbq2eTk zZ=ul4pUoRf>L5)~&^_Lqq^^~|fH#!XgTFZFg}ok9-)}`!^yVQA;4g`YD&AbAp+#@& zjUh?!CxG6;8<|-?8R|73Q5n!P{VH;#MK1?>reD#=cyp6RD5nDG6TDI63#)v;n}o1+ znn5ZdBAhtb3oF8dx98vCuL61~c0m5H=ygdL`4fJ8!V3bLm;7bXTjQ8d{1N$E|69_lBx5pkS!r8#tyxk_W7-v@tP(95xpXp~}m z{Pytt5IiUb8$vR89ui}vzroMLb}J_hLBGRKl6Wiq4v|9gfZho7eWEMLZ_)F~6jA{6 zcR?>E{ap#R)PgsdiHIVIXo6rsb`8>$^HTOC#gV3&N~R^hr6+4WNeR$ffZh}I53LH> zAzltaIq!q+#cTg?_|7|}XIK>VZ_*8PK13oGPPbbHJ>)aV4ixkO=+F5Svdg;hXbh!$P@x{6j~8Xg zKC7bNh<4;VT?-m}*)85DKUp^jk$;mDx-)3;C8vBrE?ab`mP)SUzI`d$AF2%@cad5B zCTpeWBh<7%ZZJbDLSI?*bQp|fhMf!qeUJVXaT@U8mty#c3w~t^rk@c(+!lR2{2us+ zfIbPMp4Xz!H@qYSeq|PBk>Mhth5{&lYY`EKh!F^`M?|=lVY?AWA`FHZ3kG2VXHU_> z{u-{PB!)n&#(AcS0M4Jh58g-w!V+e>AisDN>akG>1=xwtHUWh|izofcX?j}A z8G%z#SUgfD<-l=H>q^tVzXSzudL=OPDi%Ml1Rh<*is+T}PQSn$RiNJmnmf?(S7@hn zyi4`;CBM>hHW$fF%JR4?9J)w7^}v7!G!7dfFqQ{nw#*&Tu{MoVup!ap%!! zGC?=v?N)0(b>_ zoL2duBz0Mb)<1*i}5dH&i@sc}owZ{fu%St8`$GNh%$HZ>U7@eDpSq^q=YE zxylE2F^rtS`v=pZ+!@>qf2`_P08hmT%sNZsLg!d?yDF~+-nV!l<1Ed==JPfCuyaIcxFlNpO!|ab`JZ=F+e4L6;!#uCz|E4656~9u2p{$l*WbKbi#+x^0 zeS-0GF(0V>KdAiXbsdIc^j~c>QgvVrWI#d1l;nW~sK8gMU^KJ|prq8PnyV`~uZ@a# zsk{j1#`1^}*mMpJ>8|2)*8rZ)iql{R)_`HdxP|ILkF@CXxET+6kkQgqz9fZrl#7O@ zs0ux<9$^$bi;$D5ynKXQwQhV`g%b&Rpl%HMSrvB15b{hBzzT-N!WUEo zTK>Bc$hbjsG#hTUe6V%h#!VoPu)_PT>-X06#=o%iqeaiKuBm}XPietQzgfZiW^&90 zW(PmC=*&WDid9^&pHQuoK$B;*g6%CiF!LELNK*sp&#>~F!UF>+>!+@rFTmVnN}$to zTC!$lnb9JM{x<5%mz!cd6=%J~GjS@i=h&In9;3fH1-RD)@+8#AeI- zDDv0>-=3kq=EVj24^YpSEw-#Jb12D#dL0|m;im7}a5HdZS%GU7sJBq@=#y496Y5=5 zIzYRMN|y!dRo{k@9#H>4tmN3J$Rs8_<(KZw64J>*l)RTk>^>>8{^`vw@%oA^${`56J(a%14J3QWXW{hg$V`qv)kDN2oCBr`gT?BSjGM zeiCL!0z%DWZE!YtPD8)$G|JU;AI-1_+~Euk^2 z49Is>_sxfhX^MavcTv-wiH}pk-sNPoN|yy6Ti=F}9{4z?@_}vc*|XzghlPWks(!%7L%WHOz5l|;J_{cQ zEqr{h(t{nItNQ~V!7v{GAJ$X&$-)P5ARhSGr_uu-!eO@exC-N`hdHu7^=L;XK7#SU zN36;ZT@gS?H_$>IS=`iupz^YIt zKAKwLOnlt3@X_9)@3XiA^dLTxRr$b2PgOoTWSOccxb1;ej{%Afd^}QN)Nhzo&XY`h zOi&4ck6=dN#2=sc-EfV`mgW~gi$W=@sBDGFvzfOjAOPz zd>mKzRrp|vfEu4wge>@wiVl2Sa0KxY`MK5drPlSjg^yK%T(7X5xh&BC6`fhSkje#_ z^r|B`>tL2KuSKQ#;4@KFRA$oEq*VghJH4hAd{tC-h>&-(wU#=AC`ziSVu2#=%-Z%a zXOIa{)x1u`13kr@XbR9%Uz$zI6eLTlc+{i3Gl(944V4bCX{^#^K~K}SVN(FE<1_`} z`c6{-Zt64}^S(6a#x|;4psc&Pg84=|v!kr7G{fyw{eiME>b_1An0J;&hIY0hGpC|t zX--8SNOLOcsWO4HCa6q+S}+Vwnru~~k2I&ESt=e-OIGOtwYgUO02KxUt<2VG>(Oau zrGoK*+LtOnAeO8ekLxfQ?Bv?$AtiNgHhURR+olqt0;#HCw056rHK2A-T>-V9RD2ew zophQ|yI@r)6KdD2a3<6yOLHo^Z_$%2mH|D;QcqR+fZCs`d~`^nswf!uW2+v-g)pEt zONCKC-DN(dPoy;!g{uUBS}-G^Hcur4)MBs{rl6KzUC~qJTv^$xx+^=>>ijF*5Mh)H zs4Y|F0Z~n@8!uO3Ohuj4eHGMJDgtW!fg)sq+G<4y|MqkRp%zlpYWX;6PC>N-xhSh( zn`mKXVtOaaO1d;GR9|3M(&xHan$N3@;SgothbZHi8AiZc5Zlu*vX#gO@IYT1>+Hv; zT{wwiFrpUCmU9xrU~DXw!Sq-hgF&-g493iIIo+UB@n2aDQqkcd=}4&YUA*!Up79lyf7=+d@3iYY#N6(bkuRQ za>lUfu>J;%og@vmHON@@DTe{>0Eap51suk?;Y?%;@#4uAa~S=`ll(|IQ`iy?>*AmB zK$8R(lVc`_cKa+&>Zn`SRn9Cnn+L`wu%gbToXlr%7QhKSsL0}-sPa-(?`3cT*YdEK z=oOr-W~MQn!g#jOE;Y!(P%hONAcwLl18B`81xgo(lgVHG@{v_y3zqpHeV4LZ|+ zV?y9zdA7d@{8`b6+&xvb@m#W_vAhVPQLi9?#)=|gv0B2=#d$7UiM9GeTk@%=#K1Qr`nM*xj=MK(0n3#28mVvZI9 zV1%=PwFum=$nrQ*;iane%isjD7}ZJui|y3IfmysY(BTFay9r?NgFw?t%*Wb59tIR0 z$g~-n-hg7qK$p@imKF;5OS1%;9Qe94^C9%663auo2OfZ^_Y{C(FA>O{kHyqa5x^m` zpGJ3P;t;{Jigr#p=UHC?9KyNC`U&80pa2fxTvpB%V+fjyO(Pahxv!+|1j(#;Cw zLf+fZE(Z?byQ`dgY={63hY8?tL?FHj>st}jtT0T)o*4)2KQJ7Fy)hGputR3!69Ti# zvMTMs0ihg@g+lnUq7Xr!ij9Pmi9(e9P*o*L-6dK%Sy7ktf9!WF8@E3<@i?KnQ06J8Xgw6<(@ZzYLBE!ea`Ar_{qatw0DPd24ZQ z5Fos4g7Aa|LS)(uJr02ItO>$pCI~N@AcT211;Q&P2!Bx^yk>#$h5{k7pT?ue1R;WF z744jI&a;~egm5mh|0xjOQ6PkKSvgmfbCvBgL3mq%@QwvS1}2>>B{ca?LG-B%!d zs6hDG1Rsm2B`!FaZDvE26dT< zK^&%1JQ~Cx(`3M1kj4AKr$2Hyht<6O6J}wv8-BJ zlrd|m`oJlr@+Po)62L;R41)Q(t-EcOJb(g?wZnzU!4++rr!uhu>f^2UI(Ds$4AlqI7wH?$$#S^jw z*^bf_WK$$y3ugfwQ;h+U5kWzAq%;LtSp8ChEI!bp1X(>z0=#2oa0YEKUIM%*;xrz2CU_A% zt7zwxbDm9<056=2Y?1_cr$~So&Sm9XQO;FZ8VgFY`bQGzog&RC6q#?c=@RIL@2+z0 zu^AHRohgCd*?}juSl>#ZW<~EDSViHW{Rh3UYGzHLu$*S&i=`>ag3UrX9BU4RFDrZz z^r_fLIGON8;SW_^qSS4om6H{|Fv1qg;l#nlN>Gy3K2x~)!o+W7#c1mke%C9!theyH zLg9B+cKoh=i{H;pBn0srvqlEzP)e@gl=<&09$NShMGbu1=cPU}y>wkD)xmmMc~T2U z{gZKmbQlhH`k^rL3HcmqFI&k@oG80WZsNo}r#2kp&51+u6`(Lu14rbOXiJ=W?}u~l zAJfJ3D|!sdk$+Oy6l1wqK~|l;&)Tp~Y&4t40&EFe%XYAz*=_a+CI|}hCcG6)2Xx`x z_bA08%RMLtnjloVw}l7J;1F<6Wg^TYxe(EUd26bD3{ ztRS1n_hc*CO-s=RXhXGBZGtvco2`ASE!LK6>$EFc4ZV#%P#>y~&?gx)j8BaD#u8(- zvBB74Y&X6&4j4y_H-^8uv#vAA`L45tv#qm-bFg!qbB6P4=U(T2=XcJ-&g0IL&TGyG z&PUFt&RAD2S3XxAmw_!~7x7~CAp)uuWpQk=9#kaS;#gyEs0|H)d96|C#mP9-@Cj6J zUO_kLC=^Z4qi=NPWRd8f`m8Z)!8)^%Y>Jt)PwC7P>jfP&n-YZG?U>H8lik2&158 zGlR~A_Ul?GBW!?Ssm(Adl@6tZoiHY~7lxz`!HCpP)PDjBu;*bq>ME3688cW#){wPg z?N}F<#wM}VES-IaZ)hE757;wS73Lt?^Ul0GAI8)8R2YEx0*`JlKfn+1qx>Yl$RkCx zh{vNVD2j;UqLe5j%8Bx#qNpqqMRieA)E0F`L(xdQE1HO=qPcj_FItM$qOIs4I*KlM z(jSN(qJQvt55p55Ez-nTFz!u}Z8FUx*Fj zOR-685!*z%*bW}qEi%M@@tycy{3w1BC&hX3QbfpnvX1N}N6X1_s+=u9lm5N(rurYEXXuCYV>*og7#j_k_OaEl)w8{0>t!2ddtuY;cDu`-*Ph>A$lluC z*528kV)xq@**~*?Vc%x|-u{#QnEj0XZ+o00x1)fgl4Fwt=F**E&i2kF&SlQk&h5@; z&bqGpuEwq|t`A(jTzy>wTq9hgU1=`=G}nCBD%TpeGpn`t3bT@Xla(8u)aF2GUxhK1)xo5jqx;MDDyN|g~xzDUbJ>8hM&|I(m{ly*rZ2AWj#R#+Eb7)~K0WfL?X6?+nu|CWR z3nqW@H(UyQZ~@~-ey~_q(Hk5zT`U%BgS@d9oN!E>5*Nf3aZ~&zo(TUR;G1Pl)XhNsa_p(aO}9m7Th%ZIh1!|WJ4!|t;`FpNgRR!eEvX=w;h zs^k5`VV7klKLZ0S&-tJHZx~@I3g|^>ky;Fxx|!BOYpeM&Lf!%+6J6Ksx=Rny{W-wV zae7m5>yP?X{gGbJ2pB7jH5eX`8Rv}WhO~v*qHS@ug0|9N#t&`7ZDVZdw%xX~wx>2` z*XmUxc3tzY=~cTtwI-LL!PrbcyH}F*3p*F)8A+i1iU$BKAZ)iy%3iIYM&e%+WB% zn;iC>D|1qx^x1tLUrt}7FW#5eSJYSBSI&oB5?>8pZC@i_V_!R8vai2ysBgS)s&Bb( zyYIN~mhZLS`kH;4$bWz5zED*4sFqQEqb5WxirO6YW7M^%Kcd{x`J)q~TSWJc9veMB zdSmpV=qu5Wqf5t>i>VP)E2cqAyO@qKU1A`H;Dll#*s&4x_If~-ZaGfvZ@@wMozP%C zheOjh$xE!}>C{R6q0|TUw}RN#DGg<~I>E{19jLv%2crr@pyoLR)5tu!lCHrtvYTc= zkMlT8C!EBr0W+DHIWEwjF?U>pnS`6r>%0T=2=`zb;URqtn+VTg4*?pku!QgrtROHZ zFaz4a%pT@tAuJRuUBnNr9?bk~9HyG}Y!lng4zd&MG<(5b!fKJ^E?6bX&kON)V1KA3 zED`nQL$OY{h=0ac^7VWR-@*4_`Zwofm(k1Vwe&`MGrg<+f!j!|S zGx|k6hY@cSGfEj{j7mmTqqfo5Xl3*;dK&|bF~&H*F%go1OR@+WM@4D?SKIxv*Ucz3>-p1b7KFB`B{;7Q_ z=7JyXr|q}x_wC%_1pwn6Me+IfL`PFcYeyf)P<#yjBgbOL=Z@`;{rEKe6~{G)|GDE& z^<{Wxb7yO3M`u@OFK0jJ0Ottj80Q4%6z4SOEazgU%N6S?2w;|RRdQ9wB$DhJiOFNK zYYG6m()E>Vx9foG2xg66U3XnC09NYO-J$L%cbq%FyQ#a2ySuxud$4=BJJmf7Gsg^o zcbR*&`%CvB_j$kjvin!}Z|_=5OdOAmIe~{|@~v$m10J9L+qC3Tu~9Cr zZ2^w?9>N~oaU3bGj&j>TnYs&fMf+ojA54e(p-r8NTckmWdLnM4;5G}2)1T6%xXnYT zNI$pcJPmW67q=+RO0#mT3QJ}^8MZmt28h--*b~_I3gL0Q0YvL=5YHy?uOOQ3;TilI zzX4=$2xj?!hXEp0tOFYGDM)b?SnyvHzv4>@VKNf4Up`q(R+RN*BiUG{1_3e!ABYUd zmGW!(jocw`$-DBAd@f%~qJ?TDv;?gJkb{H2+DIU0fwoLLq}ee`MnOM0H#U>anX)jH z$%+N%N+m6qhYE6K?BrF2s9TfN_Gg(g--YDc43p;j!Om+7rN54(3+Vpv>DE%I?V!Jo?~$W(Rb3he1N0h> 1); while (s0 && (p = _nmalloc(s0)) == NULL) diff --git a/src/lib/16_hc.h b/src/lib/16_hc.h index 36b95841..2b77b538 100755 --- a/src/lib/16_hc.h +++ b/src/lib/16_hc.h @@ -34,23 +34,20 @@ typedef struct heapusage int heap_status; } hc_use_t; -#ifdef __BORLANDC__ -#if 0 -/*typedef */struct _heapinfo -{ - int _far *_pentry; //- heap entry pointer - size_t _size; //- size of heap entry - int _useflag; //- entry in use return value -};// _heapinfo_t; +#ifdef __WATCOMC__ +#define NPTR __near #endif +#ifdef __BORLANDC__ +#define NPTR + #define _HEAPBADBEGIN 2 /* heap header is corrupted */ #define _HEAPBADNODE 3 /* heap entry is corrupted */ #define _HEAPBADPTR 5 /* invalid heap entry pointer (_heapwalk) */ #endif //long HC_Newfarcoreleft(); -void __near* HC_LargestFreeBlock(size_t* Size); +void NPTR* HC_LargestFreeBlock(size_t* Size); size_t HC_coreleft(void); void far* HC_LargestFarFreeBlock(dword* Size); unsigned long HC_farcoreleft(void); diff --git a/src/lib/16_mm.c b/src/lib/16_mm.c index 544d280a..a5903b0c 100755 --- a/src/lib/16_mm.c +++ b/src/lib/16_mm.c @@ -1357,13 +1357,20 @@ extern char global_temp_status_text2[512]; ===================== */ + void MM_ShowMemory (global_game_variables_t *gvar) { mmblocktype far *scan; - unsigned color,temp,x,y ,w,q,width; + unsigned color,temp,x,y ,w,width; sdword end,owner; byte scratch[160],scratch0[4096],str[16]; +#ifdef MMSMSCANINFO mmshowmemoryinfo_t scaninfo[MAXBLOCKS]; + byte scratch1[4]; + unsigned xpos,ypos, oldq,q,maxq; + boolean done,restarted; + ScanCode scancode; +#endif if(!gvar->video.page[0].width) gvar->video.page[0].sw = gvar->video.page[0].width = 320; //to prevent division by 0 //-- VL_SetLineWidth(40, gvar); @@ -1371,16 +1378,23 @@ void MM_ShowMemory (global_game_variables_t *gvar) //gvar->video.ofs.bufferofs = gvar->video.ofs.displayofs; temp = BDOFSCONV gvar->video.BOFS; gvar->video.BOFS = gvar->video.DOFS; +#ifdef MMSMSCANINFO + oldq = 0; restarted = false; +reset: + q = 0; +#endif scan = gvar->mm.mmhead; end = -1; w = 0; - width = gvar->video.page[0].width; q = 0; + width = gvar->video.page[0].width; CA_OpenDebug (gvar); while (scan) { +#ifdef MMSMSCANINFO scaninfo[q].scan = scan; +#endif strcpy(scratch, AARESET); if(scan->attributes & PURGEBITS) { @@ -1411,8 +1425,18 @@ void MM_ShowMemory (global_game_variables_t *gvar) end = scan->length-1; y = scan->start/width; x = scan->start%width; - scaninfo[q].x = x; - scaninfo[q].y = y; +#ifdef MMSMSCANINFO + if(restarted){ + y += gvar->video.page[0].dy; + x += gvar->video.page[0].dx; + } +#if 0 + else{ + scaninfo[q].y = y; + scaninfo[q].x = x; + } +#endif +#endif VW_Hlin(x,x+end,y,color,gvar); VL_Plot(x,y,5,gvar); //++==++==optional strcat(scratch0, AARESET); strcat(scratch0, AAGREY); strcat(scratch0,"_"); @@ -1477,19 +1501,22 @@ void MM_ShowMemory (global_game_variables_t *gvar) //0000fprintf(stdout, "[%u]\n", q); scan = scan->next; +#ifdef MMSMSCANINFO q++; -//if(color!=6) IN_Ack(gvar); +#endif +//0000if(q==1 && gvar->video.VL_Started && color!=6) IN_Ack(gvar); } CA_CloseDebug (gvar); -#ifdef MMSMPANVID +#if 0 +//def MMSMPANVID { int dx,dy,odx,ody; odx = gvar->video.page[0].dx; ody = gvar->video.page[0].dy; dx = dy = 0; - while(!gvar->in.inst->Keyboard[sc_Escape]) + while(!gvar->in.inst->Keyboard[sc_Escape] && !gvar->in.inst->Keyboard[sc_Space]) { if(gvar->in.inst->Keyboard[sc_UpArrow]) { @@ -1521,16 +1548,156 @@ void MM_ShowMemory (global_game_variables_t *gvar) } #endif #ifdef MMSMSCANINFO - MM_ShowMemoryDetail (x, y, w, q, end, &scaninfo, gvar); +//#define MMSMSCANINFOXYPOSNEW +//{ + maxq = q; + if(restarted) q = oldq; + else q = 0; + restarted = false; + + IN_Ack(gvar); +// VL_ClearVideo (8); + for (done = false;!done;) + { + if(scaninfo[q].scan->attributes & PURGEBITS) + { + color = 6; // dark purple = purgable + strcpy(scratch1, AAMAGENTA); // dark purple = purgable + //printf("%s", AAMAGENTA); + }else{ + color = 2; // medium blue = non purgable + strcpy(scratch1, AABLUE); // medium blue = non purgable + //printf("%s", AABLUE); + } + if(scaninfo[q].scan->attributes & LOCKBIT) + { + color = 1; // red = locked + strcpy(scratch1, AARED); // red = locked + //printf("%s", AARED); + } + end = scaninfo[q].scan->length-1; +//modexprint(page, x, y, t, tlsw, color, bgcolor, vidsw, const byte *str); +#define MMSMPRINTMEMINFO modexprint(&(gvar->video.page[0]), xpos, ypos, 1, 1, color, 8, gvar->video.VL_Started, global_temp_status_text); ypos+=8; +#ifdef __WATCOMC__ + if(gvar->video.VL_Started) + { + VL_ShowPage(&gvar->video.page[0], 1, 0); + modexClearRegion(&gvar->video.page[0], 0, 0, gvar->video.page[0].width, gvar->video.page[0].height, 8); + }else +#endif + clrscr(); + sprintf(global_temp_status_text, "block #%04u", q); MMSMPRINTMEMINFO +// sprintf(global_temp_status_text, "%Fp", scaninfo[q].scan->useptr); MMSMPRINTMEMINFO + sprintf(global_temp_status_text, "start: %04x", (unsigned)scaninfo[q].scan->start); MMSMPRINTMEMINFO + sprintf(global_temp_status_text, "useptr: %04x", (unsigned)scaninfo[q].scan->useptr); MMSMPRINTMEMINFO + sprintf(global_temp_status_text, "size: %05u", (unsigned)scaninfo[q].scan->length); MMSMPRINTMEMINFO + if (scaninfo[q].scan->next && scaninfo[q].scan->next->start > end+1) + { + sprintf(global_temp_status_text, "free: %05u", (unsigned)(scaninfo[q].scan->next->start-scaninfo[q].scan->start)); MMSMPRINTMEMINFO + }else ypos+=8; + if(gvar->video.VL_Started) + { + y = scaninfo[q].scan->start/width; + x = scaninfo[q].scan->start%width; +#ifndef MMSMSCANINFOXYPOSNEW + y = ypos; + x = xpos; +#else + //y = scaninfo[q].y; + //x = scaninfo[q].x; + y += gvar->video.page[0].dy; + x += gvar->video.page[0].dx; +#endif + VW_Hlin(x,x+end,y,color,gvar); + VL_Plot(x,y,5,gvar); + } + else + { + printf("%s", scratch1); + printf("%s", AAGREY); printf("_"); + if(scaninfo[q].scan->length<64000) + for(w=(scaninfo[q].scan->start)/80;w<=end/80;w++) + { + //strcat(scratch1, "+"); + printf("+"); + } + } + + + if (scaninfo[q].scan->next && scaninfo[q].scan->next->start > end+1) if(!gvar->video.VL_Started) + { + //strcat(scratch1, AARESET); + printf("%s", AARESET); + //strcat(scratch1,AAGREEN); + printf("%s", AAGREEN); + for(w=(end+1)/80;w<=((scaninfo[q].scan->next->start-scaninfo[q].scan->start)/80);w++) + { + //strcat(scratch1,"0"); + printf("0"); + } + }else VW_Hlin(x+end+1,x+(scaninfo[q].scan->next->start-scaninfo[q].scan->start),y,3,gvar); // black = free//now green + + + if(gvar->video.VL_Started) + { + //if (scan->next && scan->next->start > end+1) free + xpos = gvar->video.page[0].dx; + ypos = gvar->video.page[0].dy;//(gvar->video.page[0].sh-(32));//8*4 + } + else + { + //printf("%s\n", scratch1); + printf("%s", AARESET); + printf("\n"); + } + + + while (!(scancode = gvar->in.inst->LastScan)){} + + IN_ClearKey(scancode); + switch (scancode) + { + case sc_LeftArrow: + if(q>0) q--; + else q = maxq; + break; + case sc_RightArrow: + if(q10) q-=10; + else q = maxq; + break; + case sc_DownArrow: + if(qmm.mmhead; +// x = gvar->video.page[0].dx; +// y = gvar->video.page[0].dy;//(gvar->video.page[0].sh-(32));//8*4 + oldq = q; + restarted = true; + goto reset; + break; + case sc_Escape: + done = true; + break; + } + } +//} +// MM_ShowMemoryDetail (x, y, w, q, end, &scaninfo, gvar); #endif - if(gvar->video.VL_Started) IN_Ack(gvar); +//?? if(gvar->video.VL_Started) IN_Ack(gvar); gvar->video.BOFS = (byte __far *)temp; } -#ifdef MMSMSCANINFO +#if 0 +//def MMSMSCANINFO void MM_ShowMemoryDetail (unsigned x, unsigned y, unsigned w, unsigned q, sdword end, mmshowmemoryinfo_t *scaninfo, global_game_variables_t *gvar) { byte scratch1[4]; @@ -1560,13 +1727,7 @@ void MM_ShowMemoryDetail (unsigned x, unsigned y, unsigned w, unsigned q, sdword //printf("%s", AARED); } end = scaninfo[q].scan->length-1; -/*typedef struct mmblockstruct{ - word start,length; - unsigned attributes; - memptr *useptr; // pointer to the segment start - struct mmblockstruct far *next; -} mmblocktype;*/ - //modexprint(page, x, y, t, tlsw, color, bgcolor, vidsw, const byte *str); +//modexprint(page, x, y, t, tlsw, color, bgcolor, vidsw, const byte *str); #define MMSMPRINTMEMINFO modexprint(&(gvar->video.page[0]), xpos, ypos, 1, 1, ccolor, 8, gvar->video.VL_Started, global_temp_status_text); ypos+=8; #ifdef __WATCOMC__ if(gvar->video.VL_Started) @@ -1632,7 +1793,7 @@ void MM_ShowMemoryDetail (unsigned x, unsigned y, unsigned w, unsigned q, sdword printf("\n"); } //0000printf("%s", AABLACK); fprintf(stdout, "q=%u maxq=%u\n", q, maxq); printf("%s", AARESET); -fprintf(stdout, ""); //this is a HAX to make it decrement and increment properly when it is at 0 and qmax +//fprintf(stdout, ""); //this is a HAX to make it decrement and increment properly when it is at 0 and qmax while (!(scancode = gvar->in.inst->LastScan)){} IN_ClearKey(scancode); diff --git a/src/lib/16_mm.h b/src/lib/16_mm.h index 8f499423..d401adde 100755 --- a/src/lib/16_mm.h +++ b/src/lib/16_mm.h @@ -201,7 +201,7 @@ void MM_SetPurge (memptr *baseptr, int purge, global_game_variables_t *gvar); void MM_SetLock (memptr *baseptr, boolean locked, global_game_variables_t *gvar); void MM_SortMem (global_game_variables_t *gvar); void MM_ShowMemory (global_game_variables_t *gvar); -void MM_ShowMemoryDetail (unsigned x, unsigned y, unsigned w, unsigned q, sdword end, mmshowmemoryinfo_t *scaninfo, global_game_variables_t *gvar); +//void MM_ShowMemoryDetail (unsigned x, unsigned y, unsigned w, unsigned q, sdword end, mmshowmemoryinfo_t *scaninfo, global_game_variables_t *gvar); void MM_DumpData (global_game_variables_t *gvar); dword MM_UnusedMemory (global_game_variables_t *gvar); dword MM_TotalFree (global_game_variables_t *gvar); diff --git a/src/lib/16_tdef.h b/src/lib/16_tdef.h index 2d3e6067..bb886801 100755 --- a/src/lib/16_tdef.h +++ b/src/lib/16_tdef.h @@ -496,7 +496,7 @@ typedef struct mmblockstruct typedef struct mmshowmemoryinfo { - word x,y; +// unsigned x,y; mmblocktype far *scan; } mmshowmemoryinfo_t; diff --git a/src/lib/16_vl.c b/src/lib/16_vl.c index 106f7192..1f5754d9 100755 --- a/src/lib/16_vl.c +++ b/src/lib/16_vl.c @@ -545,6 +545,9 @@ void modexHiganbanaPageSetup(global_game_variables_t *gvar) gvar->video.page[1].dx=gvar->video.page[1].dy=TILEWH; // 1 tile size buffer gvar->video.page[2].dx=gvar->video.page[2].dy= gvar->video.page[3].dx=gvar->video.page[3].dy=0; // cache pages are buffer wwww + + gvar->video.page[0].tlx=gvar->mv[0].tx*TILEWH; + gvar->video.page[0].tly=gvar->mv[0].ty*TILEWH; } // diff --git a/src/lib/doslib b/src/lib/doslib index 9105fb6b..4a5b0a9a 160000 --- a/src/lib/doslib +++ b/src/lib/doslib @@ -1 +1 @@ -Subproject commit 9105fb6b1a87976bbcd38521732564c87bebb9a7 +Subproject commit 4a5b0a9ac65c61b586956cb4ba103c12b3679ad4 -- 2.39.2