From 72f7a9483dcb20a1f586fd26f1c2479b39744590 Mon Sep 17 00:00:00 2001 From: Elliot Nunn Date: Tue, 1 Oct 2019 17:13:43 +0800 Subject: [PATCH] Get part of the Figment Memory Manager building --- patchset/Custer/3-makefile-fixes.patch | 30 +- patchset/Custer/6-amphibian-dna.patch | 826 ++++++++++++------------- patchset/Custer/8-source.patch | 556 ++++++++++++++++- 3 files changed, 935 insertions(+), 477 deletions(-) diff --git a/patchset/Custer/3-makefile-fixes.patch b/patchset/Custer/3-makefile-fixes.patch index b2a032b..c966d41 100644 --- a/patchset/Custer/3-makefile-fixes.patch +++ b/patchset/Custer/3-makefile-fixes.patch @@ -158,28 +158,18 @@ diff --git a/Make/Universal.make b/Make/Universal.make -#include {DriverDir}Drivers.make - #include {ResourceDir}Resources.make -diff --git a/OS/MemoryMgr/MemoryMgr.make b/OS/MemoryMgr/MemoryMgr.make ---- a/OS/MemoryMgr/MemoryMgr.make -+++ b/OS/MemoryMgr/MemoryMgr.make -@@ -17,15 +17,15 @@ - - FigmentDir = {MemoryMgrDir}FigmentSources: - --#include {FigmentDir}Figment.Make -- -- - MemoryMgrObjs = "{ObjDir}MemoryMgr.a.o" ∂ - "{ObjDir}MemoryMgrExtensions.a.o" ∂ - "{ObjDir}MemoryMgrInternal.a.o" ∂ - "{ObjDir}BlockMove.a.o" +diff --git a/OS/MemoryMgr/FigmentSources/Figment.Make b/OS/MemoryMgr/FigmentSources/Figment.Make +--- a/OS/MemoryMgr/FigmentSources/Figment.Make ++++ b/OS/MemoryMgr/FigmentSources/Figment.Make +@@ -41,7 +41,7 @@ FigMemoryMgrObjs = "{ObjDir}MemMgrGlue.a.o" ∂ + "{ObjDir}"QTMemory.c.o + + +-"{LibDir}Figment.lib" ƒ {FigMemoryMgrObjs} {MemoryMgrObjs} ++"{LibDir}Figment.lib" ƒ {FigMemoryMgrObjs} + Lib {StdLibOpts} -o "{Targ}" {FigMemoryMgrObjs} -+#include {FigmentDir}Figment.Make -+ -+ - "{LibDir}MemoryMgr.lib" ƒ "{LibDir}Figment.lib" {MemoryMgrObjs} - If "{FeatureSet}" =~ /≈'hasNewHeapMgr=True'≈/ - Lib {StdLibOpts} -o "{Targ}" "{LibDir}Figment.lib" {MemoryMgrObjs} diff --git a/OS/OS.make b/OS/OS.make --- a/OS/OS.make +++ b/OS/OS.make diff --git a/patchset/Custer/6-amphibian-dna.patch b/patchset/Custer/6-amphibian-dna.patch index 6234d65..ac451e3 100644 --- a/patchset/Custer/6-amphibian-dna.patch +++ b/patchset/Custer/6-amphibian-dna.patch @@ -3436,452 +3436,402 @@ new file mode 100644 @@ -0,0 +1 @@ +OBJ MPS \ No newline at end of file -diff --git a/AmphibianDNA/MemoryMgr.lib b/AmphibianDNA/MemoryMgr.lib +diff --git a/AmphibianDNA/MemMgr.c.o b/AmphibianDNA/MemMgr.c.o new file mode 100644 -index 0000000000000000000000000000000000000000..fbbb8a8a431b861419254d1f2549c301da7cae7d +index 0000000000000000000000000000000000000000..85ab6fd8f199d880472670fb79db5c28c3c71e34 GIT binary patch -literal 74468 -zcmdVD4|rSEl`py_E4HwOQG=Vhnbe#JW0b_PC0YNRrWr|=jH5WVYnzbL+(t=kISD55 -zXA)i>UtY%H0!bma7|Jlc^Lm*)J}#xe^_QWvgnV3HhRf?v%IixRN@*{T=1~d(+>lE% -z)J@&!{npy&=xkYX5FuA#lF#0<&N=&>v)6B}z4rRIEf!%d6C!qPSLe#ERf)LP-rK!e -zTODoFy8ATxxOAzO=5Qk -zTegWZVG&pU&-h38rJvQ?2X+n*F4NYpk9Bspty3=U`m -zI|sEL+m~rK4{qAAeN-D7#@`z@Zohf3QEOk>na~EdjN-@^`g?VE{F-YMeSMmH!|;}& -zZH?OShK+;6jaqMipSEN3;5Kb!!@$6nZ9~~x^^a~C(V`w-g2rO5_(_%WbaVELpNJPK -z1pZaq?P4B%uv^3>Y1{PNuAS30T{}U6xN?CuxNSgr-q8))v@P3qY}d98?%JW<$gkh1 -z`Lu02hlg*{c8qSh@kX3oCTzC<8N+^M?r1L4qSy9!V|>;F0<9h%`Bp+gOElog4u_;s -z-pJ<->#XB>?Y7auo3;<%j2GL!bH~tjjI}m8m>wJ*+_q`(re*X@__rhw)!cZFM0C+I -zE!o$r)wi^?`#r|dV33ct2bH7k=Fx;an#dmYdqUZxAwM0Bdi=`KHuEUoH|jC(>-T!H -zN5g#IsMox&-|NjDZ4GnJzOdP|w|N8E(M1OCzM;{O#GybK+)!Rx(_|hQ1Z)-cfZ(pK6+S3EBU%j$_wo83+^HOCX -zS4Y>iD^&#to^@#N)>zmf2)|1w$G8^^L>}+-m+xVErE$qz#pDVkL%<1p`KsdX0 -zHrw%eYHfGd&aNZnBmDaa|30ln#>eFGaz6gGZd_~W*e-BIMLDi^XzROn;#>O8hVMS? -z>85X}$4k=GW4T@Y6tB^N_9e6fX#a1t+tB_D?GCj6587MM9z%N@+MlES7TTB5K7{sP -z(EbQA-k(F5BBXqoDEn4PWcvE`pt(d>-^%NGK7}}EsowU -zQj+@vrX-gf7*IrY&=j{`c{HdT4Vj`EQ!)wEka9F^P693RD3pfmZ859qqGUm;UUfD;XduJa#oV|IA6vknC_TEIa6KYuz*N3v#`{l#8 -z(!)c<^z`?h>&9LdzI5@DfSfF&G+D-1vWUdRbSUSaG269g?H3N;T}L2YcR{KMl2etF -zB&Q(P@VV+>4?aVl*`++Yv`3d`INEIKI#NA?za!ce#`%{C{rs#{bgnR@BK7w -z3I<52jkdA)i+M{V{-mt5XxZR`J-i~Z(Z{Y;A(FARDU -zeZ6bW@vwdmWJafWy*d|PRm$L0=oz+;eU3HH0GKWUw$PGO?CYa&nB<7*df5c!F7OWR)St -zO9}m;vTpP;E@R5dFyPH&H@}HvX1AD^*iBho%;X${P0a<3R2E`BRu;&HGV_uwYqtWw -z3&opuV?3*r`^@Q}OG)Q{Q%9u+RJwrXVZ_7>WC -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 -zd`a5#Xzr=CXHMs9=ASmTy=$A*aPivKEA%nZ$ -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 -z?L2<7N26*!vLzUoZ&Pbd!Ylp_BC~6k) -zd6YVi6ZOTIn$q{(jtZzHrzWpZ6I=*a*Ly%sV@}~hHU5N>L=b8RuQ07IQ)$f}=*x6k -z-v(MAFlepEcYhqkgEJ_;f^gtD)exbGZrDm{5Lf1bPa{IH-Q$l4d;OU7D>E_>w*h3p -zKTB3yLI$iRqL6is2D}(f{|sOQ)#V5qXo%C>FT&c7tH1f%Rgaf~4X!ZbZ*Mj2^uZQG -z4mcHT-~}KDoH{mUMt0R|@OaJiH_av;8X{yx_~8B-SaA^sNDF|4;TCs%CcxttzNUC#T_9T@`23DHRh7LQ|*M0bPXMIRpw|G -zjhL6nIsp6AUmd4dQ;y@JD`9!sb6=_wmVpk!TI?DRJnpqe3&jc&nTkPFf%Q&_XCJDz -z2SiZ=2@~+3X3|BOeF7fEKB^)rNV;Ue!_{l__@}I|Z?1_MdI3n7xjJU<2WB2HF=MH1 -zf`mCYMozLPhgaP)Z=?s2!H7ZLaq9W8CM!iDZ$}g|W}c2`G4pI%%qZcQ -zA*5{N_$I60%`~?-it6F`Dle3@SthQk70Ko5pIt6!JQY-XUdZ6 -zImXF_Q=Yr?wN%Z>KOnoaSYEmLlsgjt3UOw8Q#2piQrL6qCf=|32=H1Wh -z_0QCjIbOUmS_rq86A? -zBY7q2l(L}tm_({_&g?ERIZwePUJsa@r(^PGz~rkEld69vM`k`s*m>_z9wzUlm`lja -zTeFy?^QLkzHk{{4H`f_Gg!T9K=bXP>pUDkOHcCvU6L7(0jG57e9P}SdSsxxMzY=Q+;glns7Z<>fd43~mxudjk0aW*#N0faM -zf#5~RGL_m+Kq;uMay1?g`gTCsoJi&BFs~{DO4)K%SEp4kE=FyG?8Fm_n#)SBhwWNH -zCH^ba3SMADd{IRNdqch`5n)-2xPg>8FMW<{Y362_So}0Eoj5g9CRi5apf!uEZ`oW{iKbqS*L+$wjcq?JrPolmS`{FMS5qz1SsycnJ+jrw}|Z -zpISN@9TZt0Nb*wfoGXXmEGvgFTkJy0UJNQPafCu3q{M>}D@k6NukZ?99@2BZ&MPax -zEA1b{EAxq0-pN~6Sgg7Z_o2!m@63#7c)bV?IV?Hkopm!fKX>LGX`-48sdmB3Rf9`o~2gN1z$@`%VOAXS{8$T -z1Gj&r;1-Vv-2Rn5>)(P||5k}x8PhPk4Vv=@%$36mL^#OGqULvtu{MSG8#WSYp`K3? -zkL0H#)`UD0S;>MtpH#c1ps$MuvKX2du%DDTVx0CnA)2EhnqQ2}0^T(tkdrl{_`29H -z9tbNd*-*@kC6pRPSlKE})keU1P$;kmNmijywGnvN>8PS^n6{S%3f3?*z}f;`M$Uzd -zoUdYyvKD5?8{y{dn{&LVcc&K9x2~RsG32zA+rEw7oK20Q^9|?@$$j`{AALipqijff!%Ie(u0eK9AS -z(f6_I6arQ;JWwFJrquQtnKcoRSrdUMHVi4X+>@F>tAcVB$DC6Um^G(@H397Nt)SeH -znO{c%P!3n7s4XHBGEM+QvEm7X}RF6?o -z{C*+!wM2PiD&weuv^oW8cs)qWIvr`qycSC4byk8^O9|##E-1_Y0AcO7C)G6=j@*+P -zWwdR~L0i~FkFz4xlZQ4vP8QeSo$?Xhe*5E`E9&GL265qYkTrPxIphqc2;cCD(9_J4 -z2S!voUx`*~pB{D-Bb>=?1_NyuAzzSV7X#{EaXAu=vI_$0mTv0I%(Wx}F=Yc}b#2qe -zRs?nPGt;Mcg@Qu7JWzOrK5vg=-oC}0x68r{n#5(C=aS>svm_ZWjVcbgVvA4uO)ReL -z`i5||gK?F$09YJ(o)aC5$Yd4bB(0r(D{`+9uNip<5|udb$92f`LWC{qy@|2s#842Q -zE9B=ivc6Q$o^{m7j&W9uMsV&{!wZzpS&|E51r57)fh+9 -z3$ne@{s{7ltUrgok^J+;XhFT;Xdw#$LG%3df|A=Wv1uD|5gL-#lq>M5r8QftGzF#T -z94OUvS-A$X@*5^f1zD>c$q9-CCZGpHFO+(pI(i*c+#R9Kt7wTB(1s1NCSRjv@;MzE5 -zuG5vv>LXeuRZf%npY`*Tu;>ky!<&GdrRF6ff}h&1BMr|Z70@|2(xp?O22@yJa3s~4^KKK>0x?1Pegt~BqQ-HC -zsRz{faf$s1*kY2$QLg&qh%CM^<9MYyj=XNZQXj{hinTP39=BLPV@UaN$hdZ}k0xGl -zT#H>veg?)Bfo_D)sKh5MyBB6$>(z0M5JBmKj7MF+Acpid!h&c3Pq%1+UdvR#Qt=2^$R$b7c~E7!^rOAHDJ -z2C~tR}r7)VH&kA_Ddl}|qP=o=jrtDEwQ -zIHBevLq1CV(yh{vXAZYcLmz0kOr@bQYv^k})Z!tVOlIz)-8Wc-P1t6oRgtqt0ZVUV -zsihca?FJH@wHx$ah!x!@r4{e!9rP#x6g2%(FT9Wl(@G-fRkyRJ*_pM}MJg>ht9Oy4 -zWm&o1UREt>nK{+*&J}R43;WW|VnOB!q`wy88qq<$K|h$v9Fy8G(eLtF9Czp=O7SG8-91drDW>K$T@4C? -zX3tI#&G4IPwt#2`y23I8$qQ=nb1m(Gu7dIWyGa^F;XDRE6Z$+w75rV>GN)YowNBS6 -zqKO=L?JlhbJNHbbX=a?#I`uoR0!2W3cmLBTQFn3zo_ySuo)d3vXJ2|#W(sc&nK8YL -zzL(=cl+b!zHl-820JN~h`b?w5tCJ<8EKGS~;IkU`IaTU-oF>UI -z;{5Iy*Fe?l?~c|yF*e|k9#PvJkZ`nL6);R0sMQY|nS(>SNQSt3sEz?u0%`-Yweo{a -zR}a&?McK-T%d(G(xl2UF%VQtB@3e~w9sSd;{W!}3c_!;n*ApL*{ytD`Tt{)jDXvpA -zj_>I&X>oDJP$9kwyn8g0U(13?S&aU8@z+#AAFrvXA=I^C#}WfH=Z!j^ua+o?K<7Zj -z5*-oCpnJp&-J`h*^1$A(Qd@*M0y%aeoKPBqfST#@zX*p -z2p?hgDCtYa(J18(1Y2Teb^s~B#?ctXXripMnF~XFU>xNNe!&(c&r7}5>mfBZ=vQj= -zs~3BD?|`6Rv7+W&%_*!wl!eYdHi;(2VWWaW3_EbxC~;`H8D611y52N}s#0ukhkd;t -z(t&iPY1r2X(sQAwOsC5=JL)~hmv&~RQ`=ZGK7d(t3dg2kg`Ep+ndU#tet*8r9ih37 -z^%{~U&|Wq{Z-Rt^q@kYw@ul>$boA;DeGcSV9D2=kN{BZhclsfL1~7ZeZ;mxr(HfQd -zK63&woK1)pvEzQrp+8_R4Ep}8mK?)9okNSI)_&$F_5T~(88QlI%k>y^Hpxp=N$`k! -z0#AgqQpok!`=Wl)+h1PRdt0FQHp=gU+4|>?Lnp(V;3+uopZZNX-TgVU@*z4~YL004 -zqmL%4e_efm-bb$xke^+_j8O~^e+K4h3Q7YHqaleIybzJ?#3b}nEDtju`rAxC40>Z( -zPV)wti39B>6KA<$slp9-0dT`oog1D7H~d)V2F%l!^Qs;Za{Wt(#Xx5IsYzh6l5(?2 -zZ%ajXi#-Co;&=nIqTG*R`ULwR?9c2Qur^lg5zIF=h-<<(*UDW6E1*%Ar)&+KspnbC -zSmEVT(xVvtGP^De)El*7Co7nc6Iz8|HZYx -z;fiD=T{&VoI)QyAx!U<2%SZ-M&p#TfMy1#vB{y5#RKKdO40^AFqoJ3R{t0Yqsd@0^ -zYU6vKI=ZQbzZ(|X!cL(f5*qf2^qW{)I7j|+a2@gZ;fc)DMj`G6u1_tDLrZbM>uPVn -zv(c5{V#mT&BI2sr;e7elrBPmOIkX9CGp85Epn;&Joww-vt2dKQLV7Z-61t9DYNNe4 -zd%9`o%sOZGIW^pW!N}Qz>yi=djf3|dyb7!ZF82V9I1A-ma01P`O@w@nJ) -z;9KxbldjDu@u#HUevb58thj`u9FcrBp;a7v4Cp{rogLb}w>~k(`)wkQl)eQw;CsTM -zCgk3mh%3;^< -zhlJWHIxq{{H`=tSl>ZRwLvL(!Ey2E0WCMWIgC8EV`60-*jUQbd6?WJ&$q!!%KT8Mf -zo3mF&;#WRD>R8T}SXT{kWuzb)qE7fCa3n`Y2182L4~-wOH2y8&J@2qlNN!~$<0w~~ -z4x;*m$<5#l<7k+o*@7V@noaGQcbf`^6kV0{6XV)AUmNzCRR=Z=cTk^PRHVN>BI3d3@gD8RyOC{h#B| -z`)GgIcO)N&2E02~j@^y_gZqlF-Q8RPZN=F&zW9n} -z+v4@f+tbzZ4nu2`<>`Kk!=`sV`wjg$iPKTZh`u{xzCV4tc(+A)ri11)eSVa#1hiIvWe>q{<^!%`-rA+B$YUI32g(V4$FH$U(c5{^F%w!evX@^&`W# -zSW@d?HMHG0?`24Bs!;kQNpCuCfyC~74Szj(+eR1ldH4}sT4C7)r%ch#{u#yTq{GV3ridkUd|hPD_KI7Wd_ -zK><1k3Vb>WkbfrHO%&)6Ptc?4JAZ+k9B{Xrc9REBySv7zlK9oSXNo-V81X{UP4xUl -zjd%h5x5U}K!B%PgMMEPVL-sq(DD-pQb~vMhBK2Q6GeuDy)0lcx8%va}JJD9tx}#R8 -zZ)49@G-h5)W1pQ9y}V$JDP<+pqTt@RJglr|P0MnNiWs&mx9GFp+nDuE>WG2;=8CWz -zwqdd?W5;`djdbvoCrLXC) -zU*v01JA|(mmKBR}ZsQ!XPfI)Uj+!U;!ZLk3?(Vd)Wg6Lt(uQp3-mxC7D{HRA3awJk -zaAUWnteOq8*_^H;<&J;|Bj1zaD%#&Qob -z3*XTWiH*_{t$Sl$<@4u1_0k~4e^MN%L)xe-rreR9ZvCv|G{cK049j=hyV6RIRq6D? -z8)#KZpIjYehaHFJi}!?&5BBmCWG~k$v0fp+5&ValY4{S!cQggxk-XX=?Opaq=^Q*ri5S}!9;!2ZjVINuHr5_zZ`E}RE{8|3^#XwnV%7Ej+qu^JU&j$53{ -zyp|Vl$Lvy+EX|K!Epe7zFvfmoYKXJr!3!{>enQTcD_gZs!Is -zcS^n%g7g6B1Hfa}GhlxiUc)E%!f&Yi3{r1tm+1b}lOzXdcRzglnsj~AmPUSab2)2(Z}Yc~AzJMoX@=Gp3!`#~ZG|bDV^3{O@`7%I}&IXJ5r^ -zI+giZKF<-5i{d%|%pKWFuD{3_*B~0=xeF4p#;6S_s72>MZ9vywUV;AdI*>rSWAkjZ -z7$~IK$k1Y8IiI>2dhBjXtfD?wlkJDhY=8u;)#f4!VanC(0N$GK^_273jP -zlzc}ORN;5(PF<2#%Dy2>A7WWLA!X@M<+YI^M_*)ULFxcY!23^yTkD?2HsaGg6j!xME1cWiw6SXyNKiagxM@~|mK9+u>NQDq@R+lFW4>BuIwrlqL3HHYe>N>9uasA>2g)sA(G^( -zh3)I4@nR(ysqguRN1;U`V(ZwQ*gGoH5OJ*{&DQdV5IO`RmEKz%#K3w?JV?Z~%rc|+$f -z|G61fL;OJQpw90|!-1>YDJBp0dfOsI=((_dd-*Ocs@?VUd!mC^UNu)CHa}I(-gMqW -z@Ap{$0ZrJe7KkX6y~x8{3?lM9E2Z|Pg*?0;EH#XXi?GKMES`i2Wo1Bl8!3vq$k{2E=9r!Aji91V^ID>>yZu)`b>Btwg+J|p7SRr*YMOA4Tu=YL+P#X7 -zeJoWmRK-wr2Ad=Q#qwZjJu+l)VLs=TWXO9VGPevtQKXHCYlDXntz)hR6@7&*NFlGX -zr!?^l-2(rX1jx!0^0p{Z3)q{$ILbR0guIBRFxHvswY(p7$Qx9y#oTLL%l?{>SE)A1 -z48ZbbnTj=DXD-vRHlqqg8Lt~5TS&&(M=rz4$yJpI1%8 -zspV=htAkE1*fBHnu`E!k)GeVxPRkCEtk2hps -z6ocUcxkRO&t7v0Z%vESeGI=l7PSqi*tZyJqwRf=lF651yCJUDPjHNFtSi%cnuKKc$ -zr5NN^(v({kik@K`1nt2DodaH_f4w7zy441C&oDmi7@ -zf=xOdQPy`6G)(sShJ2`9W>8kOQS&~jA)n$}HETyKS1HR@=H-&I7Aw|El?G*-5rIm! -zPsj($7-~qYJUZ(9?IXvYxdA7TzIo*;T1UwkRavvCEKHWo`Z{nK}aYe(|;lIMnB=a*+Tx2P>bqY -zQ4)W+=1HhUnZH!+xsBotLM=+Hf_gL|k0wlMMn|Qd^%VuxczMXHujr^oX1hhtY?l?g -zp<9y$z#gk0zX5Cy5^!bfz;K3-uE;@Dc=)TC~4Is?+9sgPeE5t+bE`{p%d1tigX9Q=^w0&;`@KZ -zC+se?SoC)wR)=QQcVDHRQg!ZC?*8okPV-aq&hqd6h>pwW)o=~nlcIA6`6)S;U*EMg -zCx(u}QxwkgtX*XvmRLW;Hl;MTq9L4z+b=+V^e4o*)Z+X~^&T2OLr-I0LdcIf-;mGh -z%!?go2=@oRfvfxk^NKEK_ILDS|YLMOp87D$;ZJ3=a -zZVqod>#j)6%N|xc_xa>uzj>IZ7UQ*jh{&VP)sP^?OM>}|4~NZr=XB0{>V$$yBvVf3 -zF&>tn8mt6EefHk+y@SeotNt5boX0$<6j4;~-NIq{p-@iTz4>CWtkaW+6mqM^&6ZXk -zme4Hu0>~ratCd3UWWY3@yd}=V5}FaloIT8CZbM;ZDWXEnFP}V|^W^5R_@$Z`Rti9> -z@9pRKuuvE^whJNEFM%9ZfefUwj<`aRxnM-d+!a#h+TbCu86JYy;HRR9XO3@iWBxuo -z0b75%(e_=mY}M%3nh*y?Sq76@WFc0&@U>2A2lzKUrpG2SlQ{MkmBiWbIl;RoGqL#ZuB<%&NQ*!wb6(;QG@{H$ -zh_SH`G->_Fv-l``q>jI>)$f9*B>iUcLC9@qN|fD~?d=r50p^PsywL2^I}M-S6#LZ> -zRsDw^JpU=!m#6w@MOJfzusq5hJFM7qe0J+B-w{uUCuqDkS$As~FY?TxhcheijHf8l -zopK(s_dQOt66TFYWJsQ(*~HkV{=_#h3qrG^@wHC!xN{yT=C}LIUjKBWs9tNcy;8iX -z(d+$RLOxsO9s8t!kKGs{nQe+U-ow;z4t0HTTjm`)ZoJ8#b`-ql>$APdJNGH~bjjXE -z$R|0K9x(d+SAp?8t-j^E6UrT}1@HLUj5}(^TfXBm?`S#1xDgir(*Dee?6{vY(L)ja -zwPiz2zDGIjP>N@nOxc#UXC`N$0oVsMPhjPB9OsblR>#B82z(C1eUY>fFC{5jg7^ef -ze;fHVJj%ZSGWAa->IZR|u5H8a-=z**QdLMtbfzx)Vy`K57ryGCUmjY3l -z(|FQOW$e)F+fPuhcpsf}%(phj^p6t-$5c|$f#;~jJ;AGK%KpVZ@l8VV>tf^yl;4iU -ziBo1#j?^65w+WT#n2QmKa`Ju}JsNXHv&z2{naQ-6{uUi$j|pPX`6`_&-=(`cIq%?^ -zJWnxcAjPc>@^q$Bdx}G?(squ9bf(t81<;vz9{6iz9zf@q2mV^O74*Yau+CUf!mcgz -z&Y*km7O@JB`muAIPi3l3%4oz8VW!aT)5=rxpat6+4(zeKo|Q|;!FmyNI9gzrOn$lZ -z(_Kq$+obIrpu3_WIz*ui(M(T2rSea4rM6J3S~nkrGxQCq>a;4^jjAt}D>sB%6K4Dy -zSs;yTrIHm@^QslCxSf@#s2b(2s-7G>7m9{V-I6jR8DkL@W4s$qL|@-6#`?}DF_t;4 -z*NAI><;Y@{3qk`04Ge3#BL=4#CKm>ucp -zz&w_H$o{81zu!3_QKsk$eA@_n2BdD+k&phKzNPGJ7y97XGaMVmF4707+QZaB%xxTj -zHs$I-{%_TIqp12h;?L?={bCZUL!3b|XZ8E_a~<3}bc3nqaHpCSDh?nQ^H_R*_UW9s -zJKH_pmNr@F6v%R%Bdq*PxbmG{oTmv1hRD$Z7FB{{F`QGt*Hdb{8*T0Y&OyVR1AV#V -zoFfrD3vUG2LJ?Ig6a-*tp@=F7#tT47Ms+DUGgF821KoYP)|zAqiHdQ$b;70fXY*Tu -zjJVZZ|W12SlV0jf$tbC>`|QH?Hl-A}`Meh4V}9EPI!ga9;z -zfY^oDvzp~gOrZ`s2X$gPb!PbKIFAappizOEXc1Uf8XJ1t{XCb|Fs0@(-H_FY)rCDJ -z|FR8LqP~OGg~+~?jlO^Sr|B0p3v=Y@e0tDJ7DJC2hH&!Jl{nS{3tmYNIhVySqm-H> -zr70z*L>;jmi>cbCQk7?oHl3==p_#-@%|ud_JQ?t?zn6`{uQFor8^++nKvd!%NA>!m -zg{W4f9Q`a%O?swc(lZsi2(`Spl58l}rf3laC8kvZj9Isz#Z&=KM -znE5h)KbyqEn-|4l`S~d&_cc){DoH%)36HmyKAK5#Set5o0<8><&npc`@t|oyBC|YG -zGNDqEJ<}XR6IHEPM=gCvH6{3)B=sq4G+_NqmBLPQZKR^!h%R^k2`Yc&cV|h+a(IElxY}>(Jp2fEJ(X3aXoa(2PTT4 -zA&RwMgxD_5%MK-4Oiv8q$B=!k>{3uGQj$Vs9Q8)otly4wa>KMv?82D2M!^hT516?| -zmyFLqGCr?k=A#bS&S3$zBT9K2Y}HgRgmOAE%_Iv`?nnc9wW%rxY;k)KHbxfHp-P~{ -z{>zv4h}6xjmky9#I&6NM(&f-vH)Kz;Nn8#)H9oNgUa?+7hQfNyH3@MKI^&*4FtavE -zTlMsVlyUXOZO`o6=tRcp0$KfJqYa;(SsYGe&J2poR>UMPhjlG8ge4?bB|-eYagKau -z)V-o-d=D1GGx|A=4V^JugXnxWu9xxF2l;I~VUwh%mU$!xl9cy0SLUQ)t&SDXvAf{k -zKe2RG<_sTOtmmu6pM6Z&`>8$)q$p*6Q66)XpeimYH=UhoJjWU3e1_ToLvkb_KhK~N -zAV=A+BT8J2p5-7d8aG~l?f=VD|LQ2apHqwF!D@)Y|Q!=4s1W{K-5 -zF;8_UJcSnkPj%>W_+iN5i5YU3bAalR1;9Mw(s^P&;Sd>q}%~ -z`5R<7bsc&04Shv$is-J$dAoa;^N?!cB|3)Z7yAFT7C5(nB2SAzoBxSh%Ot$J3 -zs>34l206Tx%Yv$=puvY~Ra4q2!Khb*6}dfTk+v`RHE&2){t#BubmOQc<<5TlSb71^ -z9`i^$`sIsMXKJ95EU^FhFKO$j#W|aug+`+&&MF|6pD%5^OV}$p3k}f^drW|FK4sTHb=Mg$Z>AddCCtt#Ff)5KS7QvLmcOZlWo@#nRP?f3StZeH#STSQeTO3Q -zD)4S@HCS;y14Qqm3RVqKtT3Ha(Q3!3=f~<}O_dMaMP5T!)x8IHXfNN|Y#|Fo88nQB -zF<`L+)zcQ}tz*$DQH!5`{0!iy13!(3Yrx*^R@&95PEdWAI-KpNI@Sw2k=0SPcJI9t -zoRdC<+;PfapVBxM(}gwM*Y-B-9nCy}U9idi3z0Yp+wT`rJLn0{M#vw5%8hAPXWP4( -zQ}elZ>4{zI>+c$IT!l4lEA2XiafZYl -z%e&>TrJl4=Q -z>bMHI_If@P?s#$>_bNaWSLMBTQGF|T=xv}!K7F8LFS-FVqFqKJu1dWI9-;vC%6HS+ -z7*(1iN)hGm-M=U*!pPLJ<0p>FX0`lQ_5vOlX6}C@^9XI|gn0xF$ss?CK86@MZ{H=) -z@SO@LqI1k6o%%eo3-idBoJZsu8u6RDZUtmdL(^Z3IiZ&7rE{IK$Uq(bj%>0w&}^@z -z99UDpTGJ3AeG7BV%b3?)ukkX1KQb?_mrYRHb-$QsV2sDNpB=rmE!b3W^IIldC! -z(W)3)0kAuVhi}q$jBdH{#=!xso=dKc`FZ!FFdC*6Y^@iDR;v|Sp>xn`wN9%Xf4>X# -z7@<9n>^uJY`Mt?ohn)A`dg4ykQTe~`*7WJ*-l2xcZyMjs*7og9bB**|I?&4%Lx=o4 -zkkZoufr;Q5%$7ul0JcQ9Fm&ir>A-cSx^y}`0G@f+uMGM%a -zo-4677Lc5UhA4_K-%n3b0}@4QV`O*=2ULYhDci?ejfb(zxvBCXpN{T8$`}Xehq3>2 -z_9%%6<7g`tK?w(yZI*MiDc+|%98`3%kWZ-y$fc9Q$aTv0O$7;zzP%hw8V#wDnvM<#+F~?h)#Ym)CbRBuW -zy*@JHLHs6W{If6C-^Xi(D?WG+IU}gF2Tyw42k+VN`KsMp2h(X`yK481TW%N>+Eu$Z -zY#aDrMg3K~H;!)6MD10(2S>MTf{!XU0+zPaGw1HG{1SMm0C+a3DiF& -zy&-IU)cDK#DC>6fV2g;1KQ3xJccU~mrYo>FYOwxqVtaYha%$hj>POT(I|k24#RvSE -zbiwx#9lN$$)vaiyRY5fosfdTJ2oRkoHGG{U$s+{G`iag|t%S>^mMka@Gc0Br=aFH|)f^o^DWJ&IgloEYS2& -z+tqozfR!59K5uDIVw+hw#PxisA!!i42)kYTDJmt5psXz0sZ5KkUplJh`5`7ta$S$Y -zb$9`AU5`G8z(bea&ziZ8P(rygDmL6(MJ?%9|M8y@kv%=?L4Dr{baAxU-@tRQX+*fk -zMm1={$W&&I0Se#iL7q#kv{A$E(%5hS*4W44&)Np<89up}$4C!%M=9f3<~P6Jl;s^n -zO;JT`=AD`}I3Bz+g{VzbkT!9hJFgIVikVjm_8Hqf -zg)^7KVI}*RB3umt&YL=g!?WOwy&++>psSg6_*DgGcs=0kt2)k}2hLv7rF*vO1@Z+b -zH(=lP>LhBdXcZ~MS{60mi9}{RK|n?WsQi*-r6v`0E!BqUT1!sETj&$1<#7T@5B@ -zQOKL2(v&`qCmd$GKQ)BBR&VJe>wGN3TGbjq*_!0NDtg$m->ai1cZZb=wd@pOIRu%As`}dc-m@EX4k7 -zoNf(1{Sn;VJu>g$L&SSnZ)}D((UkdPa%|`uTEFHb+m;rgec#@|%s|l+;8?w{?GF0X -z1YPC<`nLbzmD)9~RU?-le5gqb%`1QrczwLnnft67NeHZ4#xn2aBZkOO3}QY57J*jD -zLz~voH1#qDqc~wh!&NevMuYVZmTnvM&5|3Jc4HuPWfe&$qcZVD@R*ub}# -z9KS=j!0{BDP=mNLwubg%41?iDH_4A+uZ^+vgyG5GzJz2Miq$iaF+v(9E6r$H!& -zUilu?($h;?Wn=0bdF<0(3 -zL4H=`NL8C=P5D`>s{{8s -zIOSru~Ob>&9OM)C^5ciQ$yc0DraFjh`GMbalTEbf|q63N~&|hv%qOG4S -zWnZ#fUunK?m2y-7H`nX983%5@L%3NuEl|X@Y(83H6J>SOBCp>S+f~-k@y@AJv2fkA -zeM-#X--3Tz__vjRm*MweA*yb|Z%frpumDe#j|mI -zWp4a5;>Qy^T<2IgRd>41+4-BxF6-KPu&HZjx!v-0Jk|nO#(d^$6ag>j$kyqSps6p> -zAMNSsj79qr1SjB#xV;?}uFeZi*{ga7Z`wY5Gd!@{ckUS44p?cUgXzK1!EKucZ(3%6 -z17R(Mop#=oGuGGJ)T!ZNuJ7(jMC0*Z?aOrWOW?oFiW(&M%Ve -z>t)W7E+Oiqe{{o$7WD)|^auSc;VMqyIA=i;oaoVMu;^gUKmAf)TlP|~m-#Tk=^|@Z -zMz5#q^R6@Q8H<`1a`G@L{g6IO7xr}b^`HCVSoUI{ylXq(b^ZFj{@#^6MA<}N->mlz -z1i<%k%epEBnGW@B?Z)Ff)W@mL?H+~!a)<^o`pZQJ2Wr%oL(QMx!#EwR?T3rF|7veH&By%cNzGe(9sz!}ZBf{;~O$)Gk -z)|wXy?VeXhY7RcMA+liweRJh{#5347_%?Vtf3w>TDbR?B@%{L{GYR>Swm~QVdu>l6IQ$9<^#+JDaP&e?Q&Th3EROKN%8YKJ|xo-Va{IQ#+P!fx}5l2~i%K -z5L)c8^-6pO=xR4gQcVG-CFU3e;Ty9qOtG&^>SF4Tke!#tVuvdiES#z=uj=fXvaB1qA~y8Z -z7x32ITDWZOkkb|MVqbOCjD&#s%J-HhcEdER}Dv}D)+~}!~b_xZp1eqLMnzg -zKpvmHlYif~Vg3d`f4W86Wq)Yl3-*HxUvRw8KCOwaowL)VYo}}1rRg8wnTD3RzN)SC -zeG%~@U*vv#L*-xn2`XN=`g)od#=h4azBD~zZ5AEdVe7z7C>^(m%Gme5f4rwV^-R~! -z@4p?}b%{9GO?C~8RP9Jv>^t;sh#uYv#LcyAs8VE4<(R0nY_P1e{0zrxEE_M)5ixvp -zBaYs|S8l3OBncnegk!t;$^m&Lu__4+K01J-H)C%2cR<%3w1{}K)S_LF_AFWu*;S{%yo0fGR|h -zk&OKO{o`6+-}qYi!Bf?e&Kx;&c;shnW6sYl=9eypKKbkFQs=9-${YY{m_CV5uD^ZS -zb%2jTSXw(PbGqq+)>MfroSqD3&j>V>{XMmAsE?G_Cw^ -z&1Imut>Y-T541<%rmqTF|1zLVc5C+&|&B9HK0jdnPXRl -zuv~v5_UKA)#eP80Qrzpgefa6$K$m%h_KIoPWpSipn&Ycu@EAEqYF!n_zwg+Ke#g?) -z*i#4^!%(k3emcu{&%&0)k(4(|#c70{qmN=Q2x)#zKXFh{7m+_f%;az?WaTKq^ -zXZ0H5C(tA0_5REwdDa^q^7BJSsVhXZdfDeh4WYvqya0Al171b0ZUU5s+3Lfd%SIZe -z$?;nhjNuU>^|$C4Q}S0b@KRRPHbClQt{ygLT*RpS3*sj~a&>CI(thRnmDab|NwYZd -zJ7ouI{axd^XO9S)9oVx{*<90gyM4!!L^euTHmwd -z+rNcb;dtiFd=${o7K4KPS)tT6yjCA;W7IGTF4$hHTNV1DbI@%+jtF-|`gk=++(kViXuk2$o)${3!^OOJD;5IumSc3n(v0yQRew>SRZ9I2Vx4l -zJ?l{n)FwAu+(XH0?ujRjhg-0F^=;@O?Je{7}{tsdToFA>hAb@h|)Z-9QZ@qp4Qq|b|$oeEu({*c5JzM -IP_v5vAGb<#A^-pY +literal 29098 +zcmdU24QyLiy+7AU8#nPNIiOtZouH +zX&0txFPrwDZ>!dJE1-v9Lg;Bi+f-FN&^CnjsyzgQmC^Az#ux(zD{JV=*C?Zq_xqo7 +z&%M{zc6uGKB`S4u?R&1zJ?HoT`u+d^V?|+(3dX{F`g*tb?TAIy_+bA|b!RA|_U}^Z +z@dwbmHX;$0)(JtRcwUV(K_I%~ep|NpR!IaZC +zmEsS5Fa6y)F>)lG+@cQe-#$JzecQx%(wI(rJQ~`VeW5xvJ(QVFj;JF?lIrxt7IkNT +zR2>=1B!{QRjwYMc`1anI@ozbHFgZ1mK8jHjN2XH~W8*0`lN?QElHeFJU+TwO|xL*LFWA791A{mwdM@nv*wIC<9JMMVhv}{%wJ16TdV1w`}#xgGWM_C +ztSLO>PiCg#dP<$nj2%9l +z9KrZ=r2zj;5|{@1cO|DolauM*vBP82Tms@GkUmdGaz9oIXko1TO?Q3MICFmRM9YcB{hz#AvEixngZ~$;NL8w?ghQ># +zTzPJ`DTJMV{F#d^I8qHT2Ek@AHsh$hLEiJ{jm2d)YKT +ze@&C@)$H3VER*B%_-%Y&06Xo=nv{)=h6Qq$YhO)z`a@Xlh}hTobwzOT`|2g5Js+VfKspNFpoaK#u}AzMWFkorovK?QEBt~iqceKMZSX-(e8y6`Hr?Cby$(L +zaz)l(W=^GE=mc$5!ulW^tJ18td2_USrcB5oZwszKnjBDHTRUGVueYP9l`2Z7N6G2) +zc|E$*2d{H5{K4I^T^5f|_b>T?wvZfv8HeFv9*V=aEHK0upzmnw3>2eZRS&c!p +zW}tu67$ZHA-3@8x+&IXbp-ar&a7?W}dHm)ebE%t|^TJo2z{F4fN5*yXUc6UHGxlwD +zu&)O3-BlU)$$MK__aWw{`w#TfY}5w?lHs|&KL3Vh-)hD{_U?SbS+O^a(!Dm*z-QCB{xh#j7s{)izOUQIMYfzpYFkDEnrr+u?X +zI_gID12(er84FqoW`W6m(msY6}X193)JZ4+#PU-D9L7yJoo96K>85T +zpJ_R5iGd~fgNNy8E|VNY$EGGHrjmw2Y!{N?Z!e)Fv~}_T&<}q^1PVLG(rIq|3qZTA +zBSNy{Z;NOH29t+D5ai*Lq<10Q5nn)h7u%xU~h?qJQ%&1@-KlB&b|mFea5>0u}NVW*yCz4%PQ +zXDhj1_MqACf``X-o_Njy#H4FA+lgIsvsaesxaS(=6~>eqd{WDPTx|ec=$RkmvvGV@ +z&t9#~0V5y%D)xZDq;`D6ak~ +zu3jg6fGiL$Quiqjmr3{G*@cAd8oP_fNq(L;@cHA#MU+LwNt{;q`E^=7XEQDGEftzi +zXuyC)Mc5tQ#`T)tZ_#VEHO%YKFj?yb4fDF@Cwvi}=vRONjipxtVCbFD9Hb*2fj)R7 +zfl$R{{mK6nI%cM6m+Bg&e~ar5sxFfFrl7dm&P7KdUTd#QLW;VIH$8iBs;TQibyv4_$xv+aXs*CvmV?Qs`Ett_m>IP +zU^TK)-65Ex&ak(1Ax@juOLnu<>(vZ2X2A_Q7p-hQS0cKTNAn$eG;bHm?OYN%;GhWS +zp^&n(2$BkYwwnD6IL=xj;P_{nrThXcB|KD#;~VRnTbL^s%gO^BwI*~cGlg*Lse&!M +zO|3ckBy&+#N+ln;NkgyMhIX{JfOW>V8<^)~*Qrabyuq`up`&ZazdiX;ivQo9Tk2$$ +zx-Fek!CyO@@EEI8E9u%1`X0?LvlovtSVppC&YosiF~?D5O+`x8-doAvbI~2>{--_< +z>-HpFz5a!YruE;gXr@`VRtbws9>Mx^c>i2Q^9Jslr?y&W)w4w2d(?98m+0PebZ>3u +zUR>MQv}^m^{1q{q!XxlJJXeFP%SD~bSjB$sGNVq|rk}%ZHt6>8E?vgA3CYfaf<4K$ +zIO|~a%O%-DtR?-~DG2=l<&(N1VGFR +z3AHWRLW#ts5-CEmSFvBXhW8sQL`=yqH2d^4?9(|zu7wAT+@K4#XL-ZZlH*Mv25sD} +z)}$b>!tXSBmQKwpy<shBN^UzV#EGz47q0E$#yjSr-t!nT*31c +zbVb8#mNqb0nWf@ti;W_m?3j+^Q60%XAQ>E-@#wZ-oXfnFD=)RDZ%1GMt$p!5eUaVU +z`}>G}2?RL%5{Q-3LUC&o=#uQn_NmawNG3TowSAmwNwQ58*@}AhM(yx^%WQ$FH#Afo +z0IKc~sN!)I&o+mvfT>DkiNj)_dnlrD+@m~0^$O0OD*jnxWA81O=C5$Jq|&>U{qJ)O +zuN7C2Jprvu*PKc?cusj%wkrEWjdgr#TRpPIK-WbD!c@@F}vM1}OQJhLVSY +zl1~YgP>zB7##&U!Ej`x}lPqztVMpw(`72+#>NqppNcAU82U&xNc&Ty|h0$}Oy9 +z*266pR~O5Mt0AgXGH}(^#kET)T0%n^=eP<5B(5Y$xIi*1!od~NBQl$|HNr{ZkYAF* +z(FvX(uqZHTi90zT71FbEb}g}wTjH+hA}sN0c9F}2X%`?57d0Qd8$R}cArG8Wc5R?| +zahZvc+90^#yRV$5Y}rSL9e1mZ+j|~KF?L#bh!#t0@IDuFVnmad&Ay3oqMA!sXk*-2 +z=O)Z5i^F1{CT}=R<4+=rJ()ljk1`>2524)$aF;{_{>@n)Zqv!X&y7w8$baVJmXf^E +zIO#oa5b>|5J!(Rv@Bp#b#AP=gBX8QA=_3wX_YJfx9+y?h%Du~9k(Y1*lD(Y$x=Mov +zfB)Bb|2h7OVqKBJqgXd8CET=Kwj|u*Kp;|9%9z_8n9h*N2*tQ)hr=Zl?Jy5F!(B4m +zH1eedWUhC(gx_O{qe7l3P?MCie&&r6bjtTV_b=HP5)z4xT +z*0W1%3NNy-YnO2Cr#b#9V{Y+t^C~P&JaQ9GZ?@)SdWNi8) +z1#%s$*c{?KV@(M4a~kT;0`*U0cP%_5tj5Wv9mFdL)ERyk7?!(`HAubeMMYvOvT2&<`gSppC2gGK7&d# +z?{k#zb2M7QeU5QE84XLzT-XL!Hd-n!;Y&yLiVQP-SYU{Tt=QtQ^)|3&tP^4DZOt!s +z!7r{euqC)>s$aM0EyH7d#iF^)e(tk6?&w`DpUXa9fJ?5ovbI7$C5~#^&dph5L+9Pj +z{nF!SpJ2_mqN09H1yxFd8?Lc1!;%$lwB8>~uf+!l-;!|Lb6W6aoYgg~JX!9`Tq?lj +zYCbIKJxxB0~8Grhvm+; +z!XH8vVRgPLLSf~I)#P3gb;Pj5YSI^|t#GBPA?ZAWOZ=s&kHXD3sIFd;vL*pZniNlja!_y0JmR?Rp +z#lUuH&UFDekhimf{T}h7crvm^zt`|^Kk#r|;z8@XD;5>o1Xdb@)M*F2)S-sjgFI*u +z^+3UspJ&d7Sy2hZ(Sr&>pa&H-lz9>CH#+QiM-}F|hW%kxo)zFo`UB<})G@V5U`pGp +z#XyQQMW9TW(sonBm1tY_#Y@R%_<3qBj?P$tj_c#8o#QF4r|ES$ws=Uwd;TLl9OJ17 +zQ-9PjWvy4PSCL(}=C%uIo<^-A#G-jN5O&D#5G**aF(VzMqljv*q%{GKRF +z^A7N{SI5s5;dL92V9Tq>We3W|g&~cb%p8^GCeGObzsFxfue*aZli%Z&nrY|Iq2w;; +zq$H><3nZkU%|Yk)v`Nr~Y_}3?;L~fG3xN-NyNdk@*fZ9Hu=ghod!L3r`)@;^Rp{6= +zGt7mshiW9Av(3WZiA0>xHd<$j`=syF3=2vO8RvSbyMxy)leYtw_ny;uSFx)u^Lh&I>MCYF$r1WOKCBv#YzwQo8NYH_P_Ds+uJe03$T9MJ;w5ZJ +z>L3@`?}riK~#;C|6L>2E8gS>>F+ +zzpYC$nhR&;IKl64gO)C?KE_Lghri7$#}!c@Q^)>-J`dB%0I7e`keX8;L%ajkWs;79 +zf6v$_cwG$YPZp?*nQZ9&xTuWD&42ASRcA^q8Kf%eG-*YVUGvBc93lr^rHOA|ORwpK +z2eR*CHUs^M{Pi)E;Svl#Ww>tV=%ox-3($+64AZ0A0w)<8X(m>RC$3UX6oWjwtHPuqx+t3rN7{GzoY(j|50O-@O3-6M672Gj0<3Tg}K%bL787$bXV)$RDW&{?WB_bFa*^ +zB?_UQus);PiEONcZPXUWmbI`n`j-{$+%F@rqqUTLY9C69N@gwu*m06ik*is+V8(JgoOX~$!zc%;5L +z&LV@qaGC#Q^w9NG+3kN55)0<|n5ZA)((kxI2Nt1`{946N$6VjNx?Hw-Xht0A0%`2ztzG^Ajs%tx_7AW66r_5 +zxHoZv>>ASF!Wy)oOH`cKMl}y~YNaV#eWS9}ZG8%%xtC&YRKrfXSuV33SIt7o!BY#D +z2@O1q<7r~j&H-Kp><`3BSjEmOX#4@4GN6_09YPh&)HI*WU@|o}Fn5xJe+TaTcAVODiA2-P|qBtoJo|IXxf4J0GKW +z2vKyZg$X_XqBvLQe`bLpC&mT2mLbNQa(t*FHy*==b|Fu{Y)k+Go53(YO`2dsJXc8@ +zMLW4C-K9J2whgry=UuD^&K>^%4(ZL}gzaWEYL#Wg1ZZnTNL;2N@pC}pviUS)I}80N3!IYZR#F5zHD +z>sgze%Zl4bIwNr_8d3crUkU35JGp}y@)Yf0@^M8se3CWCpUom0*QG04E%3CD+iJqC +zwpN7OY7MtJXA5b#HD}~b=0)xdNA4X9WUTitfZQ#4klScsXIJASczZ~m){z|5kqi{_ +za~mW;Y$4g=&XpC(=tS8yjURF#1CIVlBvcFSE2Cnmp2 +zO8FjQM{NYXBV_o!p}fA;Ia8-8ReQXs%k->nn|gKIM4cI$mnB5SmT}6FY4&uPWE#4s +z55K0uWBu*p6s(bviimu81kHNI7%6D+_bE5j@zzVrUCA@KLDT1Zq0etOP|S$ccJ-X0 +zJ_hnps4pr}*>s5U?z#)dn}XQ)AkOw-i8W5D-lPxWQFPS(~Mk!40JBB-CJuY{fgKM~L$)$1a!+kno0sKg)D3(~hw@wRg_ +ze)1p90J{a18uiFZc6oS?g+>thxaG*lnN|bXS*~Gc5ZJj*V23gyjGvfk?on?Ds?~`1 +z>*PrzJvhZbwG??#^qRMBWqZ5OkCErdE4+s08>h?-R`m%4j_+t^!Oi@T3KD%a{lqvn5pzPf_Giw26L +z@5JiXVs#7N9jjZbt!~z@)6nXAn%G)xWx;zEyoHUG#X5euOqPjQM*6Khc|1dAVwkTW +zKk<(LLSZqciB@o}vhqFD=aO?@tli3d$i(SNE}rR+>c||(djreL!RD(Iqm~~b%>7Xt +H)xrKBL%|a2 literal 0 HcmV?d00001 -diff --git a/AmphibianDNA/MemoryMgr.lib.idump b/AmphibianDNA/MemoryMgr.lib.idump +diff --git a/AmphibianDNA/MemMgr.c.o.idump b/AmphibianDNA/MemMgr.c.o.idump new file mode 100644 --- /dev/null -+++ b/AmphibianDNA/MemoryMgr.lib.idump ++++ b/AmphibianDNA/MemMgr.c.o.idump +@@ -0,0 +1 @@ ++OBJ MPS +\ No newline at end of file +diff --git a/AmphibianDNA/MemMgrChecks.c.o b/AmphibianDNA/MemMgrChecks.c.o +new file mode 100644 +index 0000000000000000000000000000000000000000..656dad14d6c6fbdb11b3c8b2b2b9365db37bd2de +GIT binary patch +literal 4100 +zcmcha&u<$=6vtm|qq@aZOKB^EqA((&a=>l;tF3EA$c}d{JNQRry9ojb#r00yRh?aH +zcOA92assIb;O{`{0S>4L6$Bj8G)db#_Z&by_ka}M><_2wtS!50ywXau((KHe_xXO` +z%uG#z#|yA{y<9AmKNWbAt5!;+l*y7xjj-m$i$o|E3za%q&D2OZ^D+Z)R1Jr(f*h{j)%?5-jX7A+cZTAT1FIAs%Zt81$r0~e>pMd>`XMh +zq3Tp5VwVzKNs&^8C!(a%rY>#LFv%5)!r?cr<{Uga?HnK8_y!)q)(OBT;rGJ=Ym`?2 +z^84=uFUa5z-S*tS6bOeQ{rA@o?=^iLSUdIWz3YGS-qqiEC_WEv9sFDVvfRb|79UE9>?&RjMiNON0)l#ez +zJ|8DyB!rU7#O6|DsaEY{Z}*BOj9yn0uDzH_XJLDK*m@Y{ZHw~fNco0Mc|JfGyiT%WQF-B*Q#~k>O$gLLpMhcc2s{;ofDb-15s+liOPcYXt+EipQBa8K$ +zk}4MICT$-&GiM}Rh-Jr0_*l-2CYk4iNOGX(K7^eaOV9&iWv<(?2reK&-X@sehhPXP +zUT8!5XE)~s9{d9VnKo*yC4n9XxOz-YSE(C?Wak5t98NU!WV!AQ{hiXd}l +zU?S9(af@!Kcibb#bBbW@m_qXS;azoyXYPf2)59WVuH1V~6zjt#dKH++a$zDY3mO(y +z%|yAVw7MEQ@(9;V_hrZ1$;Ky~ghA!rJ_4CPU331_=T3BP5T3k!WM#GZFBH2y(df*dZCD(wD5bdjfxPVbnNi<&~fo3IUc6d|x0%)zsh +zy|FOc&#Y`m(0@tHkaff44F9oxQ(^Z?&bVjHsNNs%uHyZY^P=zkrtdHVvEG1vDa30g +MQP%q|yTk+k16?93QUCw| + +literal 0 +HcmV?d00001 + +diff --git a/AmphibianDNA/MemMgrChecks.c.o.idump b/AmphibianDNA/MemMgrChecks.c.o.idump +new file mode 100644 +--- /dev/null ++++ b/AmphibianDNA/MemMgrChecks.c.o.idump +@@ -0,0 +1 @@ ++OBJ MPS +\ No newline at end of file +diff --git a/AmphibianDNA/MemMgrInternal.c.o b/AmphibianDNA/MemMgrInternal.c.o +new file mode 100644 +index 0000000000000000000000000000000000000000..414cbdcc6b7057b22f0f822868939630307af054 +GIT binary patch +literal 27064 +zcmchAe{fURo$rw?+c&lX3iuJ1N6AI;8e!xgvSmqT*^DIHsv`vU*iOs#F|DvI2?t|q +zjG=6X;W^y|vk7nO_GS9|M`p|JblzkW9z&UINis}^+1IzPB{X%|=4UBMleSReCEl)^ +z_3-?n_xXO$y;nah6PbCIXJjAUd+s^set-Wu$0m~~Di$K}$gc3iyLNQ6tHGYGo$5}1 +zo7&Z@QnRj3?Ffe-?&?#&;_p>EJ9;|qRaNyrHMg|;8y#x1x6#$OMKudiA%0@sxp!zp +zV6=-5uEY<`OP`&igNKHr+tl9ZcyKHlZQF-gQwwToZ|m5S*;PF_zISXqI;ajFimKzI +z+ti(1?dssrSae`~=y24b1|JT0q`u=_){386(nl91C&W+1Ps#*->J>$}sj=(JLUdji +z-s%xytr-y(`-o7s><}9^hlOQJNLcUE2vBKHA5x8u45qDUZ10FV +zG%`M_jzo`)s|WZE9cq(0a%gz?pgKM_bl^aA5M#Ww5`cX$6I|QWp6G$m!_nZ_=z&ZC +zw-d%&I-IU$0hp*`y|}bC$EbkoB@M3afNMA%t~S6FuvKav6&vi23Jb#(@coD1i_Tc3 +z>JZA=7lblU`e0aeM$8ZH5SG@gu%XRXn1Eg(R4?X +z1i5Q@AlDJv6FoROd>C{#dT2a8Iy4ej$D*<5Saf6{dT<+c!p~N}YNv_(Tehj8-X1kL +zG&0y3-J4MVl%6^`G#FK5L&H(R;{D<^YxXLMH(t|lSPdLHbR0HV8tR3z>lGpFKGm|j +zD`vJIF;%JHljH(%1jbt}E-U(U;+`r|E-vF~3+OzQJ(8m7HzNOMy0xmvYG`{*}Vp?7o;+qfJ3jVp*TZwFB3Zgh8OD9cdNjH{oo&RQFA +z^>c|U(?vxw{Y2s_Ioo;t0WUaCsoN(uBxmv4lAObLtN(`Rtm{n9)4h5-xU$JrZGaDFS!5?r*F?p9k)-Yl~a@U3DA!9?HOVD{(p6VdUQGP@~z}t^qLAutSVEJ +zHlJFboSQn6TsT#aYjbs-{0>zH$XDuihYoa4?ycpjXCr*0RTPaa7? +zxe$90mpB6}$R%wqViKp@m4ivZBb8$M-ZYRsk^qNHYaC()hg79FWNj5NV9{vS0-Bw( +zcQe1tGruele!wH(idWANSKv2u#RlREa1QtZ8Vvlvn6K-GeF%#EZ!<)v!a99g(3rFS +zkA>AXlAN`jP{XzzMD>!g)u+|Uvu8lTWQEMDVQuCepm}hYz3=5)LK!@xR!m`5S|{jA +z0ZlF7GY`6AsY}--#SyQl=ouw&4!B@DF5sCEKOt8mBIhR!Uf(op|-MP-0cA?aIa~&rJ+k +z%#(Q9YCcZC8_L0b)`l{&dTM-X1@T+_2v5J4b#{eDck$=XTUk9zP7Qaw*m`VTU7r3*FXmkLy_l>foA`)%laDcnHaoJwY{o+k)_K4)mys6R7HqcH0km49iLj`22QuDC7 +z1(wZU*?gdpEz%;Yc{p-Y*~0!yX=n>%!d0~b+JL=FK&CT$io8I)$YUv5RS*cbjUIrf +zGR~eifZOb3{&#toCt;Vx|4w%k2>_R;NmJ_v73%`P$qtR%)uc;+ESJLQ*T|B><<$Ev +zB5%EC8=KqB?YgUKZ)uj!VOToHB-JM8JFlCn*l*h}`XF`4{$F_cV=)+81KWEc +zR;nryVQQ}nCl?|kQm(*mna92P-CglD@bJjuV0mNrk+fr5oum|5vG4^T`5?h)Fw~Qpf5246`)W)ya&tOI974aEk(YX8u+GrcnM^j-Ry>S|T2HvE* +zD^jkH8?oB^GW7gemh$_^8^R1HFh)H%9D0D>r@IT9eHquFl@2^a97+FW$DcWv!2-{o9(fPe9rq(f9_I!di}8)eMWix?wSx +zTsS`i>Md7?C3Q!9N5wH=-!ClJpqCM2tRPwliSDkra$$0?$WeAoFo#uM19e@PeB^(& +z7st(N8T`r8h`A;l`7vAIth*W4Z(wFGaP7@rVjc)5{aYBXuj9x#5(cCk!b1m!#!3AG +zuVjO}UCT>%kf@_iUZLS2i_MmxE;bDXK^EXT@y_b3bpfmIXwq;Oq#-gSq{EXlo!1{A +zX~=dwd@gusM@{yM@104`9u}dODvpfW8j98JhYzT#A6#zh{M-LwJ5lpM$QLV5m@b}4 +zF2oTRSzmn2lt`X^spv=XRqBzVABFar>|X(PHx|S5v*7xFk8LLp43QHxvQD*(sZ)=i +zzc^6I*M^0o{%qIN$(v!fcKt}?~S)MTT3IBKq;*@G4}UAwU&Zr)8iCm +zUoMb^lLh`fNOn{ceOuq$!aN +zGp6KsHA*&C2TFcdlTVL9K7CW8WXPxc$df_TL0C%Rp_qkQHvIzV!)t0BSHJVka}zxz +zaTIwKQU}+G5>+ua`;QZLKWqSBf4TB8fPQ~ML^f0(F;#B5Y^v0C<3>obn0eDBQ>C>G +zUd9ROWw4}r2W#k0Vcl42URcjEYe{mQD+t!fgrYdSbQ~eK+|q6EG%pY5BylRmd-rCH +z2Q0m(Vd+s|X-s0t$je&5af(taO2qx~Qsfc)paC8go#g5Do7IYl>+JK0E;(#lg+e?} +zS|ws8yXq`-NB^gr{X#)b#0)%@Bb(ca97z$y8q#vQ!HnhHB_@h$3WAB9d-ogJ5Vyz0 +zoabFh&U3oiEAaYtub}(TSUl<<88lWxOpKqcP8SClyyj_%x#J7U6}9L- +zPsVhheyjN9JqF}J`M=aO?NiXS-$_ya>M95H56LJ*TC9kxSo$A=on*vLU@4V?_JyfO +zWt;!v@pvgHT$lo>Uax{fy1V+O}vBglG_{C$*@LeDb?^vV@+LYZu2u +zr{S+04V3=*x9b0k{eeIKRzn#qM(eJr+6NlUwOEmLZBn^D2 +zYuYO5YVA=|+L}(~T+>tN$C9CH)`$vKiL3W5B0iSmSK*J0aO*9!g4}u!ttS1hcu&78 +zPU&~WQ`~wNcs^>}HJ%kD&jSW=+@%~6XA2^Sh^{#+i#$0QvRfqT!j*FFQG{!&0wso5ERuVmcN!&i0oSZ| +z3?SxHOO&11C5kCbHIdE*GBjh@0j)BJ(Au#)|Ap*;_2Syv9HRpJ*EH-u1ndV>*cV>% +zK7e&gb@~W=myh{77sf4JW*sSH!smh2o{4B*30Hbh@iSpvF#j#q`R6+PF +zJyvF9Y+7YLA<({(@x*qH1_X>~fZ;CcTF~i~JsS0R!J-~A)94TAhCmMJ>x21OU;0~h +zeW^#<_4`ug`kVEkvO8b$4mKJ|HVXoYQkGZNHcK82H5toAv`<`!%{4Oe20)-@r*NG2SXN?H{`9PDx +zjgZ1#z=`uX)%Bbm2i}bgj&cPV@)sXRRfd+^iTp;rN0YnmtYPzzxrk&GCL3lLTABp| +z$Wa)h-Mu^uh6ELT@(N>gu=mpz)V-gy48|h~UF5aPP91uuEEwwD0Fie%4UYIg-4M&u4lT!|vnELuITwWR9&zgr!t^ +zL44H`Cx72@#1y&6a_dH8ee$zj-~MwJ)Dn%Hp7u5VsVLp`e=xU2tV#Yr)QB2bbV6L@ +z48(1j*&qpvYp1KjMaPp#)E?0s^-1lnHoq1A7WF!wC^?JO#WrGn<(iDXt&PUtF&#M`TQlv +zFZf*};kx9ILO-1;S2A#VK&ttQC5U^>e3U``ZR +zxH1bY$O0`~42lV^b11%#Bwo9R8Mb4YWz{6{D#eE!gEGbgwSK6{yI(-w!MkIhgYAV{ +z$UL$am|CHKknNg346oy;DNt6O>38%&tJRR7psqnR+`O&F2AOze;vBq&0duIAy%95V +zUh|P*>IDy_DyI7(Uxk07R6lb>)TDfq;89a#JNX~4Jkbv;Ay!IrA2YF^VGEVUSG|(% +zsZ_m1J^zwDmts(>5-7FzMMUyzDeXu&H=Hd7WL|nM%M6B$9xjL#Y>=mpb6JG#4z6TI +zJ-{Yuuu(TjmlUjimcSjkqJhdK1TnRKbg%IcK?2nJ +zktSPFX=TzXtqj?!P?Zi*tGZwK?A;_?)$K`8^u@`sst-^7nJ+`mmP#pT$XU0#9pN1G +zjY+@x7m&M@^(|{CrvXA+9}?AuIFen??4asW6%3-hE?3Bl|NljX{}64hC1yypaVO!FD~2x^wT? +zehwA*4|b0Y9Y$#!sCk|E&FZZ6fu4V(N#A}*-$wy)$~aQ}1?OqVbAgxdtM2~(^Y8{x +zUp)QP7N79d_-s4KL$Uu=!ulXI{+O^mu4Vq7YPhGtl2G7DvCl*_Yy0~55l02?Cye;s +z7sPMZEMBCn^7<_n5eD8nvle?-Y7!FDQ4opQHac?f&;jf}(l$*<(Ri*xLo&?R0IiC9l#lP+Sj>-E=*->uE@CZLnwX>^j7&!bFHG4J3b +zxd&QNs2=gz$%K0Lc>ngA@Z0~p0r6;jAjL?6)tuZMqZFDzr~S$_dn+i$>5(ILE^CqM60ny#no7 +z%U-aiY(0%$GO#?2?QL6hLXg`w@4OdN@0%CVxJZY38VxTd2hl)g{6}%UGS@1}%ebyl +z#2!eFLEwP>)O3n~CR7~2u|^S9gnfJP-Pi0-6ZVngJ*oQClab1L^wDE1_8oMuyK70D +z2XbLLZ^e*hL_<0hW`~;|U4!}TY2<)`$Jx4qyAnA+=W%*;KF@_iT_$)bs_1dL^{8To +z#iMs}v*2)|Tt<4K*#kn{>0Mjoc+HE(OY6hYMUS&dk1pO}xF#~vJkCblNHdm4{={l= +zBUK{|n!KUW(eGJA>D@ck^k6Y(Z|c1MJG0=X;AyVdKX+3y>s +zoR*Yb)m%py*}X(h&i-ZetQW`0np>j(n(UF)a+YtY%Bt&lSmv)jLhA%uL{t%;;MT9v +z+HG8unJn@$>%koXgV^rI#eiRFvK2&Q>dOr7JxC>49w%?b@i;qH&`{!FipSZm2UG4q +zcTNh-c$|Snff=H^wc_`d^!1ZG{Jlnd0nlCuxX|RGi7N6qqYS%!9yi{DS=s{t2z$~`%7}uOo@ia9pFK7zLe?i>LWjO-= +zH#PWY#7!Ge(@xQFaJ^}wUaWrj;+XZL=cX_02PnyMeQ*bPY(~}lwj9g-d@drM*Jx0`!70u1K;b#$7^%EHSqnhhVQIgb+MOn6`_5iaRs?@VVK`nNPSOo}OK}^ZP{ns?0vX<;!y1L0H9LQURzl8lY)jRB=-C?>~{T%F{is{K3 +zA1bCU?GBy4+>gu+dWXn9&e8-w1F8NsOM;td?c>%Bw8%#a=K#%J2?S7Ze?chN$XOEI +zHcRiwwahayh-~PSm!aFia=f`im*eR!k4}GWvX4=#l&g=2Eudz@q{`K&nIcY}W+Q2u +z-Uqa76*H;5PN3i!Nx`N{#F91uqvU(TS}~DNMR6o0P)1o$Wa%u3wkz+x#yh-d|K_$# +z&x&H+Z@fUXL%x;tt59vbkl|aI$+tRYviGJ&LDY0j!&c2lW11xj<~b43l#z7Gg_50q +z9zI&kOqF~!VMId9Vx73s7cKYW`VY~HRW{U$zD`sKrab@1M*9wXpE2JYuUe}*r +zRXjs;((a5XuaftOrSD82AMYkpKD90xtqG&$Cd(&9T%Rwr5mH|iT{T}V2oHcP()Sv8 +zTvB{{gDdC}xY{Ti5O&+hY +z2`ViMmL9Ba?qL1mHSBx?m-?*D?S6U#&*FM|qep->jt6BLi{Fv6%SO*u+4J*uJ~d0f +z2Vm1i%m@)1qse#l81MM`y0NL9U)LSf-I_aCqSz`(FYeA2?@nben>c*#aT_(6OQbKG +zS{aOPqvkS?#k%DqUR^)mX|XMGu|}b3I-OU8`;_Q%% +z#s*7C3~7Xyf*M=_f^CZd+dLM*=?71X5jwfkB3f8$v=~~$pr15n*ePAy7MD&7=^)Es +zP07P9gNGM!rX*LFL9PZ9vCr}^bS{@6c?2}jzeo*aM()k5=ic5yrkM7daGjqWn&qW4 +z$fCs@=4bJjV|#sSJ?czPLNm;$zDZ~Jb^zICe3BPX +z^)k@N_md43>|LehN@O0Tcs_*Q$oe9`E%!U~_g#i|`&9KoL-Dx?aoCQ@Pf=^A4A!fC +z*md}+ac3i6tT}4d&vRy*_q1UBv&h-Z_fkZm +za=$P=&pC5p`n!y*`5x2v#5r+Jw^RWy%8l~~SmUe;IMWV5W8M!)M?;G`a6-c@+o7xQ +z4C{2*1h7E~zC|+(cRuNZV8859t75rE{q7gBYdm>fnGvWj(jg?z6QNnO9gMraFp|7Z +z_dn-NuIBY7HaS{?ssiR?gQ+nA-??SJCpm +z<5tE`=@h64Ynh3d>w?LdENTEZ0Gl@mI_N{y6B<3l6UgHY_o7xoTn?F0DMmXs8SC9$ +z4CRkH;? +zU(-F#LSp|9^L_?b@~*E7My&?+v6_F()*_-PW?2u8c$!&8R*-)*%U!NBLKNTPe$=|k +zE#xVSU*Z<(){4K!Eo3K)Wh@T4NoGn>OJa)fUD~5t&n=1&$+yJnMS@~Q=^{Tr*D%X0 +zrb?54EQnp)hJCI^0u4J|NLlto<3pn(eWP?*kEd1oi>)ooGn6S}S1oRR@s8s|8{X0) +z3Vn#+?E(DsjE3Bc4u9;Z2$XT%r^1z<<&lk2Qz0u)S^sC$(#Se^M&_E6$4plZ>1_8! +zE`b^^f{$fY^q23rkh?+>{P))jf}@?Ne`FIvPgb?MIrij-aY*(seg3~Et7PS~$M4bY +zz9lWBAlqAhV;fLTqfgr2e&b{o!%ET(dN2F&tsP6HC+OYvzS87sH4a-yn=!+`VSB%| +zRk!i(NCKeOO7Y3P8L$R@exk(-Y7sAJlJuFJqf=C2t#SUXCGf3h^xU(ybj>ORz8K?%+Ds9yq^Ao*MvdHBV3Assphz=q*i$ +z&C@9|HjKfQ%eXgYoqGHforpHSNuDW#maP+~k5o)KM8zAZUasEp<_w|@xK0(z)l{ua +zeJwn?9*wAsY@_R_KUr_A&WhQ!7#po60;>!sFqDWQUK2mb=RQ~wNfWZ>z>t$w+#<;; +zxJ7bO%52KG9Or9PjUr|HEwp3}N(R~I6J5xWRW8s@MSZDS34)&sP&|J4%`3*BEgV4e +z8$q@u`LkK_=Th7vb1SnJgYxkXyDoJL=-mCcwA(qPRY-doE%%=7k=WKxf +zhu84la?L8%D2HqYq8$_BU^vNxs2O)aIr=%CI^~G38noeqMr==CVqPLUiy$z@D+Q6* +zBx%BXv3K;~IPV9M8kN*(K&sO~%kt_BAf3J_{&ijMaS2=hs$nauGJsEeMvQVy;6!2{ +zqJEB=ZhIf=(@MtNI>sY*_ruRqBJ!I#UXJsuifpKRkC^HD%df>QsV3%Z{cPx6xtEd` +zRu)wRh`EAbg;BwZlrbTdXaMSA#duUk83IPNqoMVH&-=t5%2O*M9R5MW;da}8Es5=YpQ&od_6*2~>k +zbvT6qkqlg?6K(0#S)83hCwtOqS$pU&U8A$C_)3Vz)K1Ekr|!=2DWdbWRytw#us}4a +z6Hh2n$_PLN8!1DE5OPN3@@IgThu@pz~a)g75pFy!R2IyE(%qLzVE^t->GdZuQg)oMH2Z~`GtCdGHPj4Vw2 +zeX_QmzD=K@m5@H*Nb +zj=Q+iH&AP%(_;H@TI^taBdEDAQe@wO^RF!DFAc1tUZ9!IAHEj58KK>bMDGsiCE0yv +zpNh_LU8yiU^I+y8^FmNoxCHXBr=arCNCFUw#ZS=u=H*UVzN}u|`3klFURDUcv5* +z5#$T##4Os`mTb`epF$1QV9>c#=I*XzC{d-Tb-Wxjqr83jn1~!^i*%4I(&5zAh$f+S +z+aZ-g^=BrSsg>52>jpZtwEsK>XTgZ{18^98iy_u3N|Ci|^8{a}MUWv$ ToolBox $3F3 ; toolbox trap $3F3 (unknown) ToolBox $3F4 ; toolbox trap $3F4 (unknown) -@@ -1384,14 +1359,14 @@ FirstOS +@@ -1326,28 +1301,28 @@ FirstOS + OS $16,FInitQueue ; OS trap $16 + OS $17,EjectTrap ; OS trap $17 + OS $18,GetFPosTrap ; OS trap $18 +- OS $19,InitZoneTrap ; OS trap $19 +- OS $1A,GetZone ; OS trap $1A +- OS $1B,SetZone ; OS trap $1B +- OS $1C,FreeMem ; OS trap $1C +- OS $1D,MaxMemTrap ; OS trap $1D +- OS $1E,NewPtrTrap ; OS trap $1E +- OS $1F,DisposePtr ; OS trap $1F +- OS $20,SetPtrSizeTrap ; OS trap $20 +- OS $21,GetPtrSizeTrap ; OS trap $21 +- OS $22,NwHandle ; OS trap $22 +- OS $23,DsposeHandle ; OS trap $23 +- OS $24,SetHandleSizeTrap ; OS trap $24 +- OS $25,__GetHandleSize ; OS trap $25 +- OS $26,HandleZoneTrap ; OS trap $26 +- OS $27,ReallocHandleTrap ; OS trap $27 +- OS $28,RecoverHandleTrap ; OS trap $28 +- OS $29,HLock ; OS trap $29 +- OS $2A,HUnlock ; OS trap $2A +- OS $2B,EmptyHandle ; OS trap $2B +- OS $2C,InitApplZone ; OS trap $2C +- OS $2D,SetApplLimit ; OS trap $2D +- OS $2E,__BlockMove ; OS trap $2E ++ OS $19,Fig_InitZoneTrap ; OS trap $19 ++ OS $1A,Fig_GetZone ; OS trap $1A ++ OS $1B,Fig_SetZone ; OS trap $1B ++ OS $1C,Fig_FreeMem ; OS trap $1C ++ OS $1D,Fig_MaxMemTrap ; OS trap $1D ++ OS $1E,Fig_NewPtrTrap ; OS trap $1E ++ OS $1F,Fig_DisposePtr ; OS trap $1F ++ OS $20,Fig_SetPtrSizeTrap ; OS trap $20 ++ OS $21,Fig_GetPtrSizeTrap ; OS trap $21 ++ OS $22,Fig_NwHandle ; OS trap $22 ++ OS $23,Fig_DsposeHandle ; OS trap $23 ++ OS $24,Fig_SetHandleSizeTrap ; OS trap $24 ++ OS $25,Fig___GetHandleSize ; OS trap $25 ++ OS $26,Fig_HandleZoneTrap ; OS trap $26 ++ OS $27,Fig_ReallocHandleTrap ; OS trap $27 ++ OS $28,Fig_RecoverHandleTrap ; OS trap $28 ++ OS $29,Fig_HLock ; OS trap $29 ++ OS $2A,Fig_HUnlock ; OS trap $2A ++ OS $2B,Fig_EmptyHandle ; OS trap $2B ++ OS $2C,Fig_InitApplZone ; OS trap $2C ++ OS $2D,Fig_SetApplLimit ; OS trap $2D ++ OS $2E,Fig___BlockMove ; OS trap $2E + OS $2F,PostEventTrap ; OS trap $2F + OS $30,OSEventAvailTrap ; OS trap $30 rb + OS $31,GetOSEventTrap ; OS trap $31 +@@ -1355,7 +1330,7 @@ FirstOS + OS $33,VInstall ; OS trap $33 + OS $34,VRemove ; OS trap $34 + OS $35,OffLine ; OS trap $35 +- OS $36,MoreMasters ; OS trap $36 ++ OS $36,Fig_MoreMasters ; OS trap $36 + OS $37,ReadParam ; OS trap $37 + OS $38,WriteParamTrap ; OS trap $38 + OS $39,ReadDateTimeTrap ; OS trap $39 +@@ -1365,7 +1340,7 @@ FirstOS + OS $3D,DrvrInstall ; OS trap $3D + OS $3E,DrvrRemove ; OS trap $3E + OS $3F,InitUtil ; OS trap $3F +- OS $40,ResrvMem ; OS trap $40 ++ OS $40,Fig_ResrvMem ; OS trap $40 + OS $41,SetFilLock ; OS trap $41 new from extensionHFS + OS $42,RstFilLock ; OS trap $42 new from extensionHFS + OS $43,SetFilType ; OS trap $43 +@@ -1373,42 +1348,42 @@ FirstOS + OS $45,FlushFile ; OS trap $45 + OS $46,GetTrapAddressTrap ; OS trap $46 + OS $47,SetTrapAddressTrap ; OS trap $47 +- OS $48,PtrZoneTrap ; OS trap $48 +- OS $49,HPurge ; OS trap $49 +- OS $4A,HNoPurge ; OS trap $4A +- OS $4B,SetGrowZone ; OS trap $4B +- OS $4C,CompactMemTrap ; OS trap $4C +- OS $4D,PurgeMem ; OS trap $4D ++ OS $48,Fig_PtrZoneTrap ; OS trap $48 ++ OS $49,Fig_HPurge ; OS trap $49 ++ OS $4A,Fig_HNoPurge ; OS trap $4A ++ OS $4B,Fig_SetGrowZone ; OS trap $4B ++ OS $4C,Fig_CompactMemTrap ; OS trap $4C ++ OS $4D,Fig_PurgeMem ; OS trap $4D + OS $4E,AddDriveTrap ; OS trap $4E + OS $4F,InstallRDrivers ; OS trap $4F OS $50,RelStringTrap ; OS trap $50 OS $51,ReadXPRam ; OS trap $51 OS $52,WriteXPRam ; OS trap $52 - OS $53,ClkNoMem ; OS trap $53 + OS $53 ;,ClkNoMem ; OS trap $53 OS $54,UprStringTrap ; OS trap $54 - OS $55,__StripAddress ; OS trap $55 (new memory mgr) +- OS $55,__StripAddress ; OS trap $55 (new memory mgr) ++ OS $55,Fig___StripAddress ; OS trap $55 (new memory mgr) OS $56,NewLwrString ; OS trap $56 ;in-ROM script manager - OS $57,SetApplBase ; OS trap $57 +- OS $57,SetApplBase ; OS trap $57 - OS $58,__InsTime ; OS trap $58 - OS $59,__RmvTime ; OS trap $59 - OS $5A,__PrimeTime ; OS trap $5A ++ OS $57,Fig_SetApplBase ; OS trap $57 + OS $58 ;,__InsTime ; OS trap $58 + OS $59 ;,__RmvTime ; OS trap $59 + OS $5A ;,__PrimeTime ; OS trap $5A OS $5B,PowerOff ; OS trap $5B (poweroff trap) <11apr86>/ OS $5C,MemoryDispatch,hasMMU ; OS trap $5C (MemoryDispatch trap) OS $5D ; OS trap $5D (MMU trap, set up later) <2.7> -@@ -1408,7 +1383,7 @@ FirstOS - OS $68,HNoRSRC ; OS trap $68 - OS $69,HGetFlags ; OS trap $69 - OS $6A,HSetFlags ; OS trap $6A + OS $5E,__NMINSTALL ; OS trap $5E (v1.1) tcn + OS $5F,__NMREMOVE ; OS trap $5F (v1.1) tcn + OS $60,TFSDispatch ; OS trap $60 +- OS $61,MaxBlockTrap ; OS trap $61 +- OS $62,PurgeSpaceTrap ; OS trap $62 +- OS $63,MaxApplZone ; OS trap $63 +- OS $64,MoveHHi ; OS trap $64 +- OS $65,StackSpaceTrap ; OS trap $65 +- OS $66,NewEmptyHandleTrap ; OS trap $66 +- OS $67,HRSRC ; OS trap $67 +- OS $68,HNoRSRC ; OS trap $68 +- OS $69,HGetFlags ; OS trap $69 +- OS $6A,HSetFlags ; OS trap $6A - OS $6B,TestManager ; OS trap $6B (test trap) ++ OS $61,Fig_MaxBlockTrap ; OS trap $61 ++ OS $62,Fig_PurgeSpaceTrap ; OS trap $62 ++ OS $63,Fig_MaxApplZone ; OS trap $63 ++ OS $64,Fig_MoveHHi ; OS trap $64 ++ OS $65,Fig_StackSpaceTrap ; OS trap $65 ++ OS $66,Fig_NewEmptyHandleTrap ; OS trap $66 ++ OS $67,Fig_HRSRC ; OS trap $67 ++ OS $68,Fig_HNoRSRC ; OS trap $68 ++ OS $69,Fig_HGetFlags ; OS trap $69 ++ OS $6A,Fig_HSetFlags ; OS trap $6A + OS $6B ;,TestManager ; OS trap $6B (test trap) OS $6C,InitFS ; OS trap $6C OS $6D,InitEvents ; OS trap $6D @@ -7208,26 +7328,33 @@ diff --git a/OS/DispTable.a b/OS/DispTable.a OS $94 ; os trap $94 (unknown) OS $95 ; os trap $95 (unknown) OS $96 ; os trap $96 (unknown) -@@ -1459,8 +1434,8 @@ FirstOS +@@ -1458,9 +1433,9 @@ FirstOS + OS $9A,ProcHelper ; os trap $9A ProcHelper <19> rb OS $9B ; os trap $9B (unknown) OS $9C ; os trap $9C (unknown) - OS $9D,MoveHLow ; os trap $9D MoveHLow tcn +- OS $9D,MoveHLow ; os trap $9D MoveHLow tcn - OS $9E,PowerMgrDispatch,hasPwrControls ; os trap $9E (PowerMgrDispatch Trap) - OS $9F,PowerDispatch,hasPwrControls ; os trap $9F (PwrControls Traps) <17> rb ++ OS $9D,Fig_MoveHLow ; os trap $9D MoveHLow tcn + OS $9E ;,PowerMgrDispatch,hasPwrControls ; os trap $9E (PowerMgrDispatch Trap) + OS $9F ;,PowerDispatch,hasPwrControls ; os trap $9F (PwrControls Traps) <17> rb OS $A0 ; os trap $A0 (unknown) OS $A1 ; os trap $A1 (unknown) OS $A2 ; os trap $A2 (unknown) -@@ -1493,7 +1468,7 @@ FirstOS +@@ -1493,10 +1468,10 @@ FirstOS OS $B6,vWaitUntil ; vector $B6 (iocore) OS $B7,vSyncWait ; vector $B7 (iocore) - OS $B8,__SNDAPPDEAD ; vector $B8 + OS $B8 ;,__SNDAPPDEAD ; vector $B8 OS $B9,vDisPtch ; vector $B9 (deferred task) <2.2> - OS $BA,vIAZInit ; vector $BA <16jun87 CSL> - OS $BB,vIAZPostInit ; vector $BB <16jun87 CSL> +- OS $BA,vIAZInit ; vector $BA <16jun87 CSL> +- OS $BB,vIAZPostInit ; vector $BB <16jun87 CSL> ++ OS $BA,Fig_vIAZInit ; vector $BA <16jun87 CSL> ++ OS $BB,Fig_vIAZPostInit ; vector $BB <16jun87 CSL> + OS $BC,vLaunchInit ; vector $BC <16jun87 CSL> + OS $BD,vCacheFlush ; vector $BD <1.2> + OS $BE,AsyncPatch ; vector $BE @@ -1530,7 +1505,7 @@ FirstOS OS $DA,vExtendFile ; vector $DA OS $DB,vTruncateFile ; vector $DB @@ -21787,6 +21914,363 @@ diff --git a/Internal/C/CodeFragmentsTrap.h.idump b/OS/MPDispatchStub.a.idump similarity index 100% rename from Internal/C/CodeFragmentsTrap.h.idump rename to OS/MPDispatchStub.a.idump +diff --git a/OS/MemoryMgr/FigmentSources/Figment.Make b/OS/MemoryMgr/FigmentSources/Figment.Make +--- a/OS/MemoryMgr/FigmentSources/Figment.Make ++++ b/OS/MemoryMgr/FigmentSources/Figment.Make +@@ -30,6 +30,7 @@ MMAOptions = -i "{MemoryMgrDir}" ∂ + -d patchedIn=0 + + FigMemoryMgrObjs = "{ObjDir}MemMgrGlue.a.o" ∂ ++ "{ObjDir}MemMgrChecks.c.o" ∂ + "{ObjDir}MemMgr.c.o" ∂ + "{ObjDir}MemMgrInternal.c.o" ∂ + "{ObjDir}MemMgrHeap.c.o" ∂ +diff --git a/OS/MemoryMgr/FigmentSources/MemMgr.h b/OS/MemoryMgr/FigmentSources/MemMgr.h +--- a/OS/MemoryMgr/FigmentSources/MemMgr.h ++++ b/OS/MemoryMgr/FigmentSources/MemMgr.h +@@ -200,6 +200,10 @@ + * + ************************************************************************************/ + ++typedef unsigned long ulong; ++typedef unsigned short ushort; ++typedef unsigned char uchar; ++ + #include + + /*************************** Important global constants ****************************/ +@@ -711,7 +715,7 @@ + #define IsBlockInROM(b) (false) + #else + /* hopefully this will work, jeff */ +- #define IsBlockInROM(b) (((Ptr)b) > * (Ptr*) ROMBase) ++ #define IsBlockInROM(b) (((Ptr)b) > * (Ptr*) 0x2AE) + #endif + + #define IsAddressInHeap(addr, h) ((void*)(addr) <= (h)->heapStart || (stdBlock*)(addr) > (h)->backLimit) +@@ -1071,7 +1075,7 @@ + #define ClearBytes CLEARBYTES + void ClearBytes(void* destination, ulong length); + #else +- #define MoveBytes BlockMoveData /* call blockmove since its faster on PDM */ ++ #define MoveBytes BlockMove + /* + * On 040 machines this may be faster, but on PDMs, its faster to call + * the _BlockMove trap. This is the interface to the old code. I keep +@@ -1082,8 +1086,7 @@ + * = { 0x4EB0, 0x81E1, 0x1E00}; // ([$1E00]) + */ + +- void ClearBytes(void* destination, ulong length) +- = { 0x4EB0, 0x81E1, 0x1E04}; /* JSR ([$1E04]) */ ++ #define ClearBytes CLEARBYTES + #endif + void FillBytes(void* destination, long length, long pattern); + +diff --git a/OS/MemoryMgr/FigmentSources/MemMgrBoot.a b/OS/MemoryMgr/FigmentSources/MemMgrBoot.a +--- a/OS/MemoryMgr/FigmentSources/MemMgrBoot.a ++++ b/OS/MemoryMgr/FigmentSources/MemMgrBoot.a +@@ -97,6 +97,7 @@ MMAsmCode PROC + IMPORT ClearBytes + IMPORT InitQTMemory + IMPORT Old_AfterBootSetApplBase ; <7 BT> ++ IMPORT FlushPalettes + + IF forROM THEN + IMPORT PramIO ; +@@ -136,22 +137,7 @@ InitMemMgr MOVE.L #BCMask,Lo3Bytes + + InitMemVect MOVEM.L D0-D3/A0-A3,-(SP) ; Save registers + +- MOVEA.L UnivInfoPtr,a1 ; Get product info pointer +- MOVEA.L A1,A0 ; Make a copy into A1 +- ADDA.L ProductInfo.DecoderInfoPtr(A1),A0 ; Get ptr to hardware bases +- MOVE.L ProductInfo.ExtValid(A1),D1 ; Get external features (0-31) +- MOVE.L #MMPRAMloc,D3 ; Read MMFlags from PRAM +- LEA MMFlags,A3 ; A3 points to MMFlags lomem +- BSR.L PramIO ; Get the current MMFlags +- +- BTST #hasNewMemMgr,UnivROMFlags ; Does this ROM support Figment? +- BEQ.S @noFigment ; -> No. Don't bother w/PRAM +- +- BTST #mmFigEnable,MMFlags ; Is Figment enabled for this boot? +- BEQ.S @noFigment ; -> Nope. Use old MemMgr +- +- BRA.S Fig_InitMemMgr ; -> Call Figment Init +-@noFigment BRA Old_InitMemMgr ; -> Call Old Mem Mgr Init ++ CLR.B MMFlags + EndWith + + ;---------------------------------------------------------------- +@@ -162,11 +148,11 @@ InitMemVect MOVEM.L D0-D3/A0-A3,-(SP) ; Save registers + + Fig_InitMemMgr + IF ForROM THEN ++ BSET #mmFigEnable,MMFlags + BSET #MMStartMode,MMFlags ; Force 32-bit mode + BSET #MMMixed,MMFlags ; Force 32-bit mode + BSET #MMSysheap,MMFlags ; Force 32-bit mode + BSET #MMROZheap,MMFlags ; Force 32-bit mode +- BCLR #mmHighSysHeap,MMFlags ; Force 32-bit mode + ELSE + Move.B #5,MMFlags ; MMStartMode & MMSysheap bits set + ; note: we dont read PRAM here +@@ -180,14 +166,8 @@ Fig_InitMemMgr + MOVE.L D0,$0 ; write address for nil handle + MOVE.L D0,$4 ; write address for nil window pointer + +- CMPI.B #cpu68040,CPUFlag ; Are we less than an 040? +- BLO.S @not040 ; Yes? Then use original MoveBytes. +- + ; Need to set up MoveBytes and ClearBytes vectors +- LEA MoveBytes040,A0 ; get address for MoveBytes on 040 +- BRA.S @3 +- +-@not040 LEA MoveBytes020,A0 ; get address for MoveBytes on 020 ++ LEA @PlainBlockMove,A0 ; get address for MoveBytes on any machine + @3 MOVE.L A0,vMoveBytes ; store MoveBytes address in vector + + LEA ClearBytes,A0 ; get address for ClearBytes +@@ -209,6 +189,8 @@ Fig_InitMemMgr + MOVEM.L (SP)+,D0-D3/A0-A3 ; restore registers + RTS + ++@PlainBlockMove _BlockMove ++ RTS + + + ;---------------------------------------------------------------------- +@@ -280,7 +262,7 @@ v32SetApplBase + ; Need to call Figment instead of a32ZoneAdjustEnd + ; *** BSR a32ZoneAdjustEnd ; Adjust the sysZone end. JC + suba.l BkLim(A6),A0 ; get size to increase in A0 +- move.w #ExtSysZoneSelector, D0 ; ExtendSystemZone selector in D0 ++ move.l #ExtSysZoneSelector, D0 ; ExtendSystemZone selector in D0 + _HeapDispatch + + BSR.S IAZ ; use historical IAZ call +@@ -314,11 +296,6 @@ v32SetApplBase + + IF ForROM THEN + AfterBootSetApplBase +- BTST #mmFigEnable,MMFlags ; Is Figment enabled for this boot? +- BNE.S @hasFigment ; -> Yes. Use the wrapper. +- BRA Old_AfterBootSetApplBase +- +-@hasFigment + _InitApplZone + JSR Fig_SetApplBase + _InitApplZone +@@ -448,17 +425,10 @@ IAZ Move.L A6,-(SP) ;Save A6. + + Move.L BkLim(A6),A0 ;Current Last Block in sysZone. + +- TST.B Zone32Flag(A6) ;is it 32 bit zone +- BNE.S @1 ;branch if yes +- + ; Ordinarily start ApplZone just after SysZone, but if GrowDown is true, <14Apr85> + ; and there's room, start up offset by CacheSize. <27Apr85> +- LEA MinFree24(A0),A0 ;Points to first of cur. applZone. +- BRA.S @5 ; +-@1 + LEA MinFree32(A0),A0 ;Points to first of cur. applZone. + +-@5 + ; Now proceed building the zone... <14Apr85> + Move.L A0,A1 ;New Application zone base. + Add.W #AppZoneSize,A1 ;Compute new end address. +@@ -506,13 +476,8 @@ IAZ Move.L A6,-(SP) ;Save A6. + ; Called by InitApplZone via jIAZInit vector. + ;---------------------------------------------------------------------- + Fig_VIAZINIT ;<7 BT> +- MOVE.L IAZNotify,D0 ; anyone to notify? +- BLE.S @0 ; br if not +- MOVE.L D0,A0 ; give them a call if so +- JSR (A0) +- + @0 MOVE.W #-1,WWExist ; $FF for non-existence (also sets QDExist) +- ST FMExist ; $FF for InitFonts hasn’t been called ++ MOVE.B #-1,FMExist ; $FF for InitFonts hasn’t been called + ; BSET #7,DSWndUpdate ; cancel pending PaintBehind + CLR.L MenuList + ; Clr.L LastFOND ; <06May85> +@@ -553,14 +518,14 @@ Fig_VIAZINIT ;<7 BT> + JSR (A0) ;...the application heap + ENDIF + +- JSR FlushApplVbls ;kill off doomed vbl tasks <27Mar85> ++ BigJSR FlushApplVbls ;kill off doomed vbl tasks <27Mar85> + BigJSR FlushApplNM,A0 ; And bogus NM requests <1.2> + + IF ForROM THEN + BSR.S FlushFontCaches ; flush TrueType caches stb + ENDIF + BSR.S FlushApplPorts ;kill off doomed grafPorts +- BSR.S FlushPalettes ;as well as doomed palettes <10Jun87 EHB> ++ BSR.L FlushPalettes ;as well as doomed palettes <10Jun87 EHB> + + ; this cleanup is needed, for instance, if an ES is done from MacsBug. <10Jun87 EHB> + +@@ -611,7 +576,7 @@ FlushApplPorts + BRA.S @NEXT ;=> and dive into loop + + @SEARCH MOVE.L (A1)+,D0 ;get next element from list +- JSR AppZoneAddr ;in application area (or zero)? ++ BigJSR AppZoneAddr ;in application area (or zero)? + BEQ.S @DELETE ;=>yes, delete it + @NEXT DBRA D1,@SEARCH ;=>else try next in list + BRA.S @DONE ;=>none left, continue +@@ -633,44 +598,6 @@ FlushApplPorts + @DONE RTS + + +-FlushPalettes ; patch rolled in <10Jun87 EHB> +-;----------------------------------------------------------------------- +-; Call DisposePalette for all palettes in the app heap. +-; +-; Registers: D0-D2/A0-A1 +-; Called by vIAZInit. +-;---------------------------------------------------------------------- +- MOVEM.L A2-A3/D3,-(SP) ; save work registers +- MOVE.L PMgrHandle,A2 ; get paletteMgr handle +- CMP.L MinusOne,A2 ; is it there? +- BEQ.S @DONE ; => no, just return +- MOVE.L (A2),A1 ; point to data structure +- MOVE.L PListHandle(A1),A0 ; get handle to palette list +- _HLock ; and lock it down +- MOVE.L (A0),A3 ; point to palette list +- +- Move APalettes(A1),D3 ; get number of active handles +- Beq.s @NoPals ; no friends => go home +- Add FreeSpaces(A1),D3 ; calculate total number of entries +- BRA.S @FindEnd ; => check for no entries +- +-@FindLoop Move.L PaletteRef(A3),D1 ; get first entry +- BEQ.S @FindNext ; => no palette in entry +- MOVE.L D1,D0 ; and get for routine +- JSR AppZoneAddr ; in application area (or zero)? +- BNE.S @FindNext ; => not in app heap +- MOVE.L D1,-(SP) ; push palette handle +- _DisposePalette ; and dispose it in place +-@FindNext AddQ #PLstEntrySz,A3 ; bump to the next entry +-@FindEnd DBra D3,@FindLoop ; repeat for all spaces +- +-@NoPals MOVE.L (A2),A1 ; point to palette stuff +- MOVE.L PListHandle(A1),A0 ; get handle to palette list +- _HUnlock ; and unlock it +- +-@DONE MOVEM.L (SP)+,A2-A3/D3 ; restore work registers +- RTS +- + ;---------------------------------------------------------------------- + ; vIAZPostInit new + ; - last-minute inits after ApplZone has been created. +diff --git a/OS/MemoryMgr/FigmentSources/MemMgrGlue.a b/OS/MemoryMgr/FigmentSources/MemMgrGlue.a +--- a/OS/MemoryMgr/FigmentSources/MemMgrGlue.a ++++ b/OS/MemoryMgr/FigmentSources/MemMgrGlue.a +@@ -71,6 +71,15 @@ + ENDIF + + ++FIG___BLOCKMOVE PROC EXPORT ; slightly out of place... ++ BTST #9,D1 ++ BNE.S @Data ++ DC.W $FC12 ++ RTS ++@Data DC.W $FC14 ++ RTS ++ ++ + MMGlueCode PROC + import c_InitZone + import c_SetApplLimit +@@ -1076,9 +1085,7 @@ HEAPDISPATCH + ENDIF + + +- tst.w D0 ; normalize selector to 0..n +- bmi.s @selectorOutOfRange ; selector is out of range... +- cmp.w #TableSize/2,d0 ; is there a table entry for this one? ++ cmp.w #TableSize/2-1,d0 ; is there a table entry for this one? + bhi.s @selectorOutOfRange ; no, selector is out of range... + lea Table,a2 ; get the address of the selected routine + add.w (a2,d0.w*2),a2 +diff --git a/OS/MemoryMgr/FigmentSources/ProcessMgrHeap.c b/OS/MemoryMgr/FigmentSources/ProcessMgrHeap.c +--- a/OS/MemoryMgr/FigmentSources/ProcessMgrHeap.c ++++ b/OS/MemoryMgr/FigmentSources/ProcessMgrHeap.c +@@ -81,7 +81,7 @@ + #else + #include + #include +- #include ++ #include + #include + #include + #endif +@@ -137,7 +137,7 @@ Size GetSystemHiPurgeBytes(void); + THz c_InitProcessMgrHeap(THz oldHeap) + { + stdHeap* newHeap; +- ushort cMoreMasters; ++ long cMoreMasters; + long VMResult; + + IfIntDebugMsg(LMGetTheZone() != LMGetApplZone(),"TheZone != ApplZone", LMGetTheZone()); +@@ -244,6 +244,7 @@ THz c_InitProcessMgrHeap(THz oldHeap) + + /* Make a good guess for the number of master pointers for the heap */ + cMoreMasters = ((Ptr)newHeap->backLimit - (Ptr)newHeap->heapStart)/kZoneBytesPerMP; ++ if (cMoreMasters > 32000) cMoreMasters = 32000; + if (newHeap->MPCount < cMoreMasters) + newHeap->MPCount = cMoreMasters; + +diff --git a/OS/MemoryMgr/FigmentSources/QTMemory.c b/OS/MemoryMgr/FigmentSources/QTMemory.c +--- a/OS/MemoryMgr/FigmentSources/QTMemory.c ++++ b/OS/MemoryMgr/FigmentSources/QTMemory.c +@@ -50,7 +50,7 @@ + #include + #include + #include +- #include ++ #include + #include + + //#ifdef FOR_POWER_PC_PEOPLE +@@ -169,14 +169,14 @@ void c_TrashProcess(ProcessSerialNumber *psn) + // Boolean processMgrExists = (GetToolTrapAddress(JugglerTrap) != GetToolTrapAddress(UnimplementedTrap)); + Boolean processMgrExists = *(long *)0x103c != *(long *)0x107c; // cheaper + +- if ((*(short *)SysVersion < 0x0700) || !processMgrExists) { ++ if ((*(short *)0x15A /*SysVersion*/ < 0x0700) || !processMgrExists) { + // system 6 world, or somewhere (strange) in the boot process + Ptr zoneBegin, zoneEnd; + + zoneBegin = (Ptr)ApplicZone(); + if (zoneBegin != (Ptr)SystemZone()) { + if (!processMgrExists) +- zoneEnd = *(Ptr *)BufPtr; ++ zoneEnd = *(Ptr *)0x10C /*BufPtr*/; + else { + unsigned long temp; + +@@ -254,7 +254,7 @@ Handle c_NewHandleSystemSafe(Size handleSize) + if (!EnoughSystemHeapSlop()) { + DisposHandle(h); + h = nil; +- *(OSErr *)MemErr = memFullErr; ++ LMSetMemErr(memFullErr); + } + } + +@@ -269,7 +269,7 @@ Ptr c_NewPtrSystemSafe(Size ptrSize) + if (!EnoughSystemHeapSlop()) { + DisposPtr(p); + p = nil; +- *(OSErr *)MemErr = memFullErr; ++ LMSetMemErr(memFullErr); + } + } + diff --git a/OS/OS.make b/OS/OS.make --- a/OS/OS.make +++ b/OS/OS.make @@ -30165,7 +30649,41 @@ diff --git a/OS/TrapDispatcher/Dispatch.a b/OS/TrapDispatcher/Dispatch.a Title 'Dispatch - InitDispatcher' ;_______________________________________________________________________ -@@ -666,18 +659,14 @@ OSLoop move.l (a2)+,d1 ; get the next entry from the ROM dispatch table +@@ -571,33 +564,6 @@ ToolLoop move.l (a2)+,d1 ; get the next entry from the ROM dispatch table + + ; initialize OS table + +- if hasNewHeapMgr Then ; SAM +- +- With ProductInfo +- +- BTST #hasNewMemMgr,UnivROMFlags ; Does this ROM support Figment? +- BEQ.S @noFigment ; -> No. Don't bother w/PRAM +- +- MOVEM.L A0-A3/D1/D3,-(SP) ; save regs +- +- MOVEA.L UnivInfoPtr,a1 ; Get product info pointer +- MOVEA.L A1,A0 ; Make a copy into A1 +- ADDA.L ProductInfo.DecoderInfoPtr(A1),A0 ; Get ptr to hardware bases +- MOVE.L ProductInfo.ExtValid(A1),D1 ; Get external features (0-31) +- MOVE.L #MMPRAMloc,D3 ; Read MMFlags from PRAM +- LEA MMFlags,A3 ; A3 points to MMFlags lomem +- BSR.L PramIO ; Get the current MMFlags +- +- MOVEM.L (SP)+,A0-A3/D1/D3 ; restore regs +- +- BTST #mmFigEnable,MMFlags ; Is Figment enabled for this boot? +- BEQ.S @noFigment ; -> Nope. Use old MemMgr +- +- ADD.L #numOSTrap*4,A2 ; Yes, skip to second table +- +- EndWith +- endif +- + @noFigment lea OSTable,a1 ; a1 := OS dispatch table ptr + move.w #numOsTrap-1,d0 ; d0 := loop counter for toolbox trap table + +@@ -666,18 +632,14 @@ OSLoop move.l (a2)+,d1 ; get the next entry from the ROM dispatch table EndIf ; Not NewBuildSystem ; now install the trap dispatcher @@ -30190,7 +30708,7 @@ diff --git a/OS/TrapDispatcher/Dispatch.a b/OS/TrapDispatcher/Dispatch.a move.l a0,Line1010 ; install the Line-A exception handler IF forRomulator THEN ; register the Line-A handler with the nub -@@ -711,60 +700,5 @@ BadTrap +@@ -711,60 +673,5 @@ BadTrap ; rb, start from PatchProtector.a