From faf7939a320af96656c5bc1f006397c502f67402 Mon Sep 17 00:00:00 2001 From: IgorA Date: Sun, 22 Nov 2020 13:13:45 +0000 Subject: [PATCH] 1) some programs use new macros load_lib.mac 2) bcc32 add example use libimg.obj git-svn-id: svn://kolibrios.org@8236 a494cfbc-eb01-0410-851d-a64ba20cac60 --- .../examples/file_open/file_open_cpp.bat | 4 +- programs/bcc32/examples/libimg_1/1.png | Bin 0 -> 37591 bytes programs/bcc32/examples/libimg_1/Makefile | 19 +++ programs/bcc32/examples/libimg_1/libimg_1.cpp | 81 +++++++++ .../bcc32/examples/libimg_1/libimg_1_cpp.bat | 16 ++ .../bcc32/examples/template/template_cpp.bat | 4 +- programs/bcc32/examples/window/window_cpp.bat | 4 +- programs/bcc32/include/kolibri.h | 3 +- programs/bcc32/include/kos_func.inc | 59 ++++--- programs/bcc32/include/kos_start.inc | 14 +- programs/bcc32/include/l_libimg.h | 53 ++++++ programs/bcc32/include/load_lib.h | 18 ++ programs/demos/free3d/trunk/free3d.asm | 25 +-- programs/demos/use_mb/use_mb.asm | 161 ++++++------------ .../examples/example3/trunk/example3.asm | 19 +-- programs/develop/fasm/1.71/fasm.asm | 22 +-- programs/develop/h2d2b/trunk/h2d2b.asm | 18 +- programs/develop/heed/trunk/heed.asm | 25 +-- programs/develop/kol_f_edit/kol_f_edit.asm | 88 +++------- .../buf2d/trunk/examples/e0_dr_lines.asm | 24 +-- .../buf2d/trunk/examples/e1_scaling.asm | 24 +-- .../buf2d/trunk/examples/e2_images.asm | 33 ++-- .../buf2d/trunk/examples/e3_text.asm | 33 ++-- .../buf2d/trunk/examples/e4_graf_ed.asm | 24 +-- .../buf2d/trunk/examples/e5_lines_sm.asm | 24 +-- programs/load_lib.mac | 16 +- programs/other/rtfread/trunk/rtfread.asm | 18 +- 27 files changed, 417 insertions(+), 412 deletions(-) create mode 100644 programs/bcc32/examples/libimg_1/1.png create mode 100644 programs/bcc32/examples/libimg_1/Makefile create mode 100644 programs/bcc32/examples/libimg_1/libimg_1.cpp create mode 100644 programs/bcc32/examples/libimg_1/libimg_1_cpp.bat create mode 100644 programs/bcc32/include/l_libimg.h create mode 100644 programs/bcc32/include/load_lib.h diff --git a/programs/bcc32/examples/file_open/file_open_cpp.bat b/programs/bcc32/examples/file_open/file_open_cpp.bat index cbdfdf2637..5df7d4f826 100644 --- a/programs/bcc32/examples/file_open/file_open_cpp.bat +++ b/programs/bcc32/examples/file_open/file_open_cpp.bat @@ -2,8 +2,8 @@ Set NAME=file_open Set BCC_DIR=..\..\..\bcc32 kos32-bcc -S -v- -R- -6 -a4 -O2 -Og -Oi -Ov -OS -k- -D__KOLIBRI__ -I..\..\..\bcc32\include %NAME%.cpp -echo STACKSIZE equ 102400> kos_make.inc -echo HEAPSIZE equ 102400>> kos_make.inc +echo STACKSIZE equ 8192> kos_make.inc +echo HEAPSIZE equ 0>> kos_make.inc echo include "%BCC_DIR%\include\kos_start.inc">> kos_make.inc echo include "%BCC_DIR%\include\kos_func.inc">> kos_make.inc echo include "%BCC_DIR%\include\kos_heap.inc">> kos_make.inc diff --git a/programs/bcc32/examples/libimg_1/1.png b/programs/bcc32/examples/libimg_1/1.png new file mode 100644 index 0000000000000000000000000000000000000000..00bb723cf4d0a637a5b1df3e1efa4a9d6944112b GIT binary patch literal 37591 zcmV)9K*hg_P)0ssI2jw@Nv00004XF*Lt006O% z3;baP00009a7bBm000ic000ic0Tn1pfB*mh8FWQhbW?9;ba!ELWdLwtX>N2bZe?^J zG%heMF*(%MvSa`Nl2l1VK~#8NrM-lB;Yp#^$4~$0W&QT^=9b)` ze|`AzQ+IsG9dzjNa^dmmQJ3{oPx18p>?hJKAAdeQzr6kW_3-rc`276*{_*;2c)F4X?kI%;+A5S`T;~(#jg{Hvt{O}-HErxsH%N2vyz2U(3XW(1J2cRc{ z1>cvq*Qe*Fho{Ha_qWIAr`Pv)UGwtx_WJoL9P4=X@mCNpcK?s?1@51IA|JU>$bNo{ zU4O^lVpsS23#JzqzdnEc)^Pyqf5q-s_|78?@{R{TpXdPYiQqu??zlM(=G6LMu>0rt zKfw3?7~l%BLa={+{`&R#`T6_f{qyZv$IJ7>^YhP-m!BWcKi{8zyglltu`4tO$A+wc z`|+qh{dj%)`S|qn`RV7Ij>jJ_4?^>WU6U&R7QP1JzyE_@m$J>uegKiHj>qRmy}+It zp=6Gi*B4>eAbxxheBTA!9=~2c|9%Xz|4#@GQg4pyNp=1E{OLRP{T|kLx4a`ceNWKa zcL(%ohWk799;ExvKc6~E!?!1Z==}Sq7}5<5|Lv9BFA@KR-Np0`QiWX~0&$OnVhw2h zWeJI2I&wr# zmj`3_I0|AZ1X1s^;cMP~{PFns^W`y&`)tw`f=3$^cVSH-QZN(n9)3JMSN(n?CJfdK z+SkP>T|J0tSYr1Pv1_80RN$vj`=HnI@bmTKePI+-eTQJ-_3rw6b@4Bpec|;lzy-%< z-@gOb%9!u|U5AD8-uSwF!S{PQ^xcb_D9f_xMXO)vHrV~u8{Dam{`yh&^{-OZ{|@MR zcJ7P7<(2UBd$D^f2_zEW+8Y&n2Vw(P-|Xwl`>W~JH2M4>x(%)VKrp<%=o<5`0FB<& zuiPLi;>Yh731Y)nzlw3izKWiF;i2q%gFgbVpXFV}SU>d~joki5z=U)Lx^EG@M(O4- zcAp*v+@Fd8b>6(a3e%DkmI@#50`ap5IM4yX3$MAbpxi&@8nC;7UTy~EMRqRuHr%&= zs@`4I`we6_hP&r50~Z8;6Wi@deWN}neky7quq$r6kp#i+LAOFJ$I6Di=HCFFGvo`1 ziQ)1xZZW#2)3-|ZJB9Ec!2SI7`Tp_#^7JSb`|;S=%g_|#3X}%bgAnl|m{Z!kyjYNQ6!MRvou z(GSnBuTL*8PcP52f)92TgXVbq5V(CD$U7kTH+sGe_3$Nf6wr6>#9=io9OnXG|1g!1K?S05N22x)pYPO$>xL#bMC{I>7F4M{f?= za=j(5fbIb9^2Q9=1Z#qq&>RA;X%Hd%Z}2_DLrM1r$_25g_gMnR@YVkx1j=Wd3j5_nzS!!KK-*LFyRgs5HdnY4v|N-88^nguC4D^@$=`tL)c;ow=jOTY%J0aTH2VpqyizalX? zzCrd^sd{^t^X}hW#wGX)SM#*g0)j!fw`Oo?<(!0ZEHV1>_KuL4IF5DyvJv7T zY?yatD9{O}Y-e5(O~Z)EN;?yzi;4RDuwzj6M*7zWNT@Y(?D-y^NRVH8zx_s=&L*Xo@q>EOWoL;v}BeU4x2U<(ozH2*vrn!+W= zua_T2tu0<%F2(+OvOcy{cr{pmy;TZ>Z*i@y299T=)+mG*6Ko~L@I~X=xP@?y9dJwQ?BEFc(&~{=0+wFOC?H<#9-H?IFm{@mu_K{Hp80@xXVub}{-D!9&$i z2*a9RZ+2r{{i``}2iX&&{OKFu8nwTSRuQc-WG|1uKi+=n8p)Cd_7!$R!+(@Z zi}UsVBBR%bP-r(-DnfEX`dCmF#TwZ^e!czpe6jgp>sM0vLE=I2pGjBpQ|u_`H#Y4$ z39DA`0y9K~*i-cRbY~6U-gI)p=5irEO4kONV$WXyH`uM%4Xu8BDuA2F>=e7VUaamF zTGda7VoR}r^_FoXaD!TM!rbc{yvAMH7E?>=ob}uRQ?t4SWym z{?`)!SAM;_NspKZU z0Nx4TxLr4iiNhlk0iS~S8|#7aE?HuEVIoeMVlPrbq<^nmz?t9rRBeO)`toj*!J1(+ z7lOMV!AtfD!Np=P471+x@%_!dL+}AyTcm3#+d3=ABP?b9-x4}5J9?%^H-#1whHXjUG0e7%# zy(^Pgyn7dueFY-s!+AZwh=4Ca{FR}To)F_czNqfz?dkP(3tw&=R(#gbu)rP2zKejL zUsdy9DEEjz^*0p$4aBENz+uR7uM;lU_W09P;4-*0v${&*faw7D7Q17L-Ics7aQ9w! zyxU)^9PUi0V)qRHHyY#0LpJ;$uzRBr5_0)XnQcGb5U%UDql|8@xWmKKt?c`a`@c6(QG5s1@nz zf-gU~p22wvVl_xqKP3h9lPtse?}F)9X**?SFgFpNeoEc`NCCrheB3J-YW3E{Mu9Au z+n4t@-Q`K@;zgx8IvHKBqg=|fvWkPM6L|yKBJvBe7p!-_7#{Qi8GR8ZgrtpeYFatN>X!X#l6rTsHUBDR#^#MxDfSdqUZY@|XM zSLeyAplq-TsleB=AsID^4e4ARMccn?0Ic6{v;kTpRXF_Bzz<}xFG#t$1V!{X3(}+$+Y4=|r ze?DIRI5-P%=g{Tm!xEX<-+i#&#T~PK3pWS8HXPzG$TSd}l3){LbqysACf&$fBX|yB z*Zu+~t(Nug^JcK}UkUes>!v4QUsab&Dd@~q0fQv3jNWIh{ZA=l_%wz-KQTA>lUxX0 zqsx@$_{O@qKB||ODS}Z5^;h`bBlYf<0C$cJ%Wj}t?{*7rzAFtoxpr9g*5|s3x9$*` z)PpUsB(W|i^Xpg0-g#R?qJ{NQ+5JtGx2w1GNoq~kPtm7HRMwKLQ<3P)qe{OeF+UW0 zy-Q~~_9Ca?Gf<(|`>Rm<`|asdN!KmC3acD=+) z!m4xz-u00*gq_-hbfp=DU5No5p=2XFW|=Bu4O~fB30Z4~!LG}0@D>)hstIlqX1^48y*$Pf z2o?o0BiK2Dm{vbO-yiKKgmM48$xm=@OzZoysqPhzEYK8i^-$!=<}gyF4MMI?Pq?7W zg}h=pT~NMPz=d}uZH3Ru2C-q_t828D3qI8h5}9^+Zx!wN+y1HL>9xR&eNi{U;O6#9 z{C<9D^^aqqOqy|NBZR8R;F25%ceEoh)xFPJJRTo(UtwCZ0n|Fw^Wt6v7rvGOUyfUf z72V#W_G_)+6+Sj|_P2(a8@2F_OK{z+X#uw6!PdA!B?_T zs68rg2B`w83c-crTo87|yTxvVfupP2GKPz1O@YepZjx9J^whMOtII>+_mVeagOYO< z--L|a2t=|i7g~+3UsELMN_JPihoQ+KO9y}aae}}lluwTd{0{;?#ehKkoiG^S{`2ui zM{#`HI<^&wmpSlPx}6~GJ|%Xr?19?vnqjIkPm%gx2?9Wwyz7(JEtPD)z5Ld)?Rpo9 zQO5;3#}oVi7BTBJD*S&7cBx`9aC0~>@b)Ax)&%V4Fm*9Jn0+>XDq&pBfhb)k(gJj&zjb8sciqEdS3zj;&nDGg?bHgpj}p6rZxX*) z3evkSdK6v*Sq`dr1>a&g4`A^0qKnAEXOrhxjU7}8jG z<~cPF4`O7S9n?Q0w)2(F!zp?bSY6bc{IHn#4!gqQzvA^|+}qa0sgXUZ0w{&)aa4$( zZr7Jg*a=xH$GhXgZW2;|obXq`DwR2L(pO`PKN0nxe-$^XT}r@xe$nxyLM=Ux3S|Ym zJfNx99bv+)vs~{w6lociSY-(!)t)govZnUCxLxXVPBHdK+8o1)FVA{30qi!j5 zbf6aa3dh2rC^R6BzZ*uRiC2L7OI$X>m!h*Xdp!9w7pkK>YLkU@<%6MLuPhy)H(Te* zseE`;ucz+r!nVj|W7^8WsC|1=(3Vo#zX*W834^=V-0#Y|?`pEHDy^FumxNZQgq_RZ zX@k=!xO^&M+lJ`#st zPI!Oyx(~C8J6+h7CSK|ip?Nn%NWaDc)2|o>jvaaSU=FG3THhdBPw$td=XkYi(PH!QA8>h>fPEqQ!7Q8C z?L%=|%GZz?@+gqV%2wd=ey?2r1GvMu{{`H?CS9kzb&P_q{3@_1IucpyC2A!wp6!>2 z|0Ew@)fW4za8B2|(n@J0wGxOd--KW-B)=#Upes>^fUX=&-|%h%HRT$u8LSSUABBUo z9RB=myTDJKX2$k@eacvP$daAI5q<2Zu~B_9uuD)c`Rl61toSQWDPN?pi&)KtT`vZl zU9A_PQ-tkU&7})qE>N~(pd09B=>axn%A*xF^nH5C_33ArhVR_`Wv!TI;P9?*$?bK= z9FYyZrA>yg@9n<>zD3 z0@flTmrV&}-6-MR^HUoc{ti~ay=C23L)cx-E1deJF81Hydt?eO_zJTUo*&P0L!W-X zzDPa_wgRt;0QGgIqR+hpUau9uiz!o)tzs0xS|wMCmJDdsUd5bp9hN8__cfAOm_%PF zqb$o?3oDXWU%5cT_yR*v_mv|{i$U7L5}zeRqjO=jrtl=EHsvo?1@LYvvyzgH-ffxU zI9%Xf1gz!WkX6bcq1Dr%)1*t0m%Gm^19F1duLXi&F%1z0D7-7#VBmI{H5e>pi`43b z1ZUwrFeavR1Fx@iPB_k#WrI5=S^#-Z!dId=T)Xv<=z)N*OuV*bUu&SF9a@dsoms6);;0(+2KD@)vfI zw&7a4q)!h9Bs|D3GN5jIR6gRkYkE-zO?OSuI9`o+#&v8y{%_<)sL4`Hf){emnB ztblo@%L2nni#37UK-|VH4O#!>LN6z1lZX>#xvJr8g*^@0j(fQw-5oIVeLuo|Gr|Hl zUcK^BU)x|@TBY>LliVfooJ@P^fftKK<3>d!qS%B)&PWxzH8=yHKZ2}}rc9GHeQ*Vq zgMGW3)~W9==2)Ap?_yBXxqz$dEjO z-gTUmriMKw{IEz^H}o2~@UB@ieYiSUzU{&$b4#I2)`vJ>y4fTbfVlN>(CisWqZ^?x zU|>lQ>J=ZFbjcxvca5d?;2=R$(da6iv`*+Eo#?*HDIq3{5%^mGpN3i<1I>^VBG|3z zy8@%#mm?uKKN73yts2Vl-5^@21#DouAE{dxg4f%+tq^yCWxH;UI)tr7bPf2IcA9@F zDb$iJ;M%8440Mcsk+6JmJgx{y#{-LUYWDKeBx?Ei;IE&>cb8oN6x~Vx;Fa-z^IEUK z-@F?GHJtmVWULuoBrP2x?5e=(^+6Joa1F6b2tU+FX92Gyx;A7??62Dh&|AeKomwBa zonh7tj{P&;!;&{A8?6d%EVE9CW(fOI#^tc7UZ;U1MQi`n!f%ZKL&Dndibx2X8qi+% z!E2?X5pTK3YD^9yKhdJ0+e%Pw6WYxr8y9W4mdrRNRk3r*xHCj7X`#aN6V|qcDSaaap!q@2n9M;W>NE3^Qbxv`Oy>0g4=_j zC;f(Ai^=u3p4B9+f&tO0!haP3Dq*V%808{uS}Cx5Rb6b7uBm(#^9f%1m1=Gm2H=-j7-7KzW~AC z^^`L~>~><@X?6W;`yrl`KrHM^qR8AAf`wVRQ4Z=&v>BTfuBDP+7c6ssTIPZP8neu! z;!853bC9g6W-w}vMf?0p6Ic)QkeA>#+c%|iA00eJCDTJoWtKCs`l))t7a!zWr9BKj zY==Z(xt?AcSpf!Ojwn=RH=-GQvIW*D5;y5)tX&Ji^jwu6F&SivSuLc7YxAjtUDJFD ze2v|wm*kjo2oi{d_B$lq(CE#<&n@*P9CD78qJ<&dxT+JYg|Mv`ylAH&2e960-1Ao$ z9w3@fb6Y8k_`+zCm<;v={M@Eulkv0_pQRDEPlE>MlyV)JEn$mY`(pBxdmP#lJ@4pUmm zthzRV6tR)eBRo-2HHBB6h3NDZ6JnG&czsZw)~2@0n13pd5WnIm-+ue~kCFvLx-Dw) zg9wq2BGi2f%48MfVdd&U0eWRPOt`QK2`KYPW;LmbA}>~3?m6f zn+lzjfZ2eH@-Zah6!{Cit)!7=i2VI&F@R>UG1`EKs$4r_cGDWD1#GRPEl2`uGv3!+ z+Ls`WD-Jdd%wz5*5n;^c*Xes}!U9g6nwy*GZ`3oQOTYbmH?P*oU)tf{C|SW=Tp16E9~X$K&U zWQu(-2RmSQVso0dX)vTE%e2%n1*%p_PSxaxE#-CDs#ifK6&zCa;_I!d_3XCfX5xX~k+7?JX@{7of}B@MlDV*EO28;r&>_5n zS|=l7idCT|3964sFPQN*a(|spORmAUA%%OCfZ-cpf#G>AJ#WY!4V@tjOk)_yYh;lk z$OY8!|LZ>@x&3$E(MXjJM&`~fERm79WG({YyOV&rUhFV^QJ!roOK55Zb-{J{secxZ z?*_L_+_potU|fwA6UJrwr}5^dYrNw#zRoi&5umX{a z!tux)k)R6?2@zoVimDL#aHQ*`Do26ywC zO=)i&EjwP2l`f-5Q^aUjA>4^myYisDIy$xVyvpEFTQi;)=F<8M{_w-Q2xT3f*yuDC zz$KG#K-r(f8@o)RZwMxV(CZW zuPm#Q2KV^cqxZxY&*0#=Y7eftNlN-F>QU8>?@qt?-3)}Q#(+my*H#q*;@V`)v#{Ey z%rt-?HKA4E+fXcCL8*&+mqcuU-Z`x?UlTSZxgSgH(Xcl z6?*{%?0?g*cEiH=+V^11I=e9~TM7v~OtoXKDHGRj znYO4@B&z7m*PPjeKY#S>pi>m-;^3aFo4b!zuuU&_j9^kex)x);EjB5I}|P^ zW8StOYvvBc^(>8bSS*8%^*BbMK%c6p*sigbVv!;+gs?!_^y!`%m&m|vxtS^fULV|_ z>bU^1!*U8y?JD6xg%_o+t@5@!sB?@0F>6jnm(&^!WK=ftS3O7!1X*v6!}NfiTE`^D zSYwQ8G&fH^43ohKi)QdKi-xljxCfzt(?N9vY!jsg!Ivqvu>PtNa3nmLR7JWO{Gs3`s<%khUvM-4C{BXaPgJ=LG65oD zfE)y+5zI7^Vw3OX??v%PB;uA+f(xuXd(Vrby&B%l*`J=T*g^wNRNh zU1)ww9Mi3k2+0Qn!ZNudLZ4DE<|kx?LUfcCHm^(Z#X`CTw;l@A@*za60$=}>{*m}m z%duk#r&^he4^FU0fiHS@1p_G$Uz7fyPH9Ny`KrKKH@B+vTO}MIY9;ez(u`~ZD8?%< z;&{M|*s+&Ysbf#XuhL_kK0d}_F6a?Jt~}LTsl;uePno;V;8?gkv8(1VJr1xA#Gf?# zn!Cv7(uMz*)>&cKYQe3lUK5>`nNQGPNeZ0|kpWG`WmE(K79loCRISdgE+wVpg49BR zgqCA3v2}b2n-VPXNosgqCTo>vbWyCk2^_Fn^2WYM&MXsZRSn~tku2y;Bzg@JcwME5 zbRQsctkH3lM;LHYVaEz>E(Z&IJxEj!ZVWY1Y}5kfyiRm2kma%!b9&DF_OW;~3e--N z@2IyX>?TH3FB^_iig-eoBB>iaK_1EdI$5`R3h1IgkXB;OBedr3i)UrVz zefn4^MoEgldDJZfx8#`AhW7%A0#0e7AJz&|)EkCt$jI!YBqj=R&Z|i=AW{>GbsgX` z;id}|Go=Q`gsG3`35J_Nd z5H~lo;h|D$%=jry_#PP_29!`2r}c z)?wy|6Qs-fX{w&nBjYwGkoDqgO4E(gMyo$jN6P~O>r^kGUJ@V^k>Ao}$UyORoA)f`S;oz+Id|q9i$v ze-;CY(r$c)R7x0&pC3}RE?W5YnVK>+V7*#8Ycc~H1gQjD^$fwEZVbw$2OLr94ajP- z6n53N)wT*FUAm&~*?;sndQ8!UZm_7mn`bDcVdFwSbxQb?t(6$`5T7-C_Pmw=+N*GO z^+t&t;#>c4>0Pt9{=RK$J|$2iRv`Yk zP{22s^O|1gp`5z%mpX^<*cHR#)?dRso)Gc`aa2wcX?DRhs6moe6#7d~ozgA;n)(~< z9B2d1=~;#U>OrtgW-<=Y^(SSFL&Gw*QvS=BHzQbu*i>*IGhnFZp3WJ8Tk%;OC<2bs z9_-sCQY#&Tk_Da1`YBq{_xeY*iy92$F>*dsPQd&N69X<14G!^8y(?2dK(wJlhHENU zvba;LmEtT&m%z>(kKY_Z;$Zp)3x&IM0#lX(ly17jGBJr(95N$S9a$C<#lzg7Fofp| zZz?Yiy!62f!Fs2O*b=ny5k(*K6VB$OA`i9huR9=c8}qQbplqdkLZt&eZbx6X!7dvG_fGY0!A2^*3AlQL-R>amLQvm%@tmf5CUt0IXSxmu?2%PG3W%l zr%15#z(~WyxoQ^2gM>>06w6k=SJrp2^0+@Lu2og|i>eD;Y4!f19tYRm#;p`^|M+W` zE1HtgOCw94cf-x%z2oM~Jd-V3(z zRCQG<)bom~kj+R+_LaF=i>+tWR}3#^nv<3^RkYce%EOwZDgUK57iVp+IfMrYUJdOt zL_II|Jf%WB@JJ8tb0W)iSDVQxvN*W9H>gE(nx40~XZ#0acb$Q|5e>N;U^V|QI-BD? z7(1cW1$wlG7IE)oX^1%TOYW^nwJ@cKC{}|8`D#kcG{Z`sn1ZQdsT{&IotGG8#TadAD^Bg zGJ#T3qFz!7c(;+Q7PxNKHO}7j&OL`vXR1nbqkzSxnG0(MrODO?tp{(3cQv)(k3Jr2 z-($qF;yLqrSXpZ#b}Zf14uB?3+E@*zY*#~XUgv>a&T^T3B}jzbR113;hX*A-i7egZ zqbl-`7tf4QXV1jrC33b&3|tJ9$(M?Qlb_4}HsM{zC|+ls$`Mwi0rUuwdd-zYj;ADi zp+EL5#RE5xxD_8%(ytgS&akn$z#OJx~X&Y9pf0!=b0w>DIgt@Shp@51ZSurR>(D%Ta93Wn+VK*O=se@siO1AN?v%O@}^%dukOMsGsynG(j~EG z$P)QG*0L@h$5_ZT10gcS;1UeMuB&}4-Oz=)vCcBJI%-~`Zu#fe>p#E5GFouVmuO$& zm5spz;tUy(K|Zyux!^b&&W>bs(pd1-HTop0B5;DQ&2U8ECeDBfLeXtz80j5(-fkvE>zbr&S|mhzWqTqTKatm%4xiKQ$|`Rl2*i3Ilexl{ zvB{JlMt>T7nJ>X9CmNwda-#$ooPZ0!yTGOg1Go3bWX3PL3$pgo_p7G`;Zku0Gu2Ktf z%4~;4atK7q)ah3hlR2b||K-Z@(6B!>`XCbdYH>_icS;k--$|`w)_2`N&zYJM*d=rm?+U~^Pi#pJ0R!BYLA9dK6kQD+zj+hrkE1c#9oNb=&3@V1lxCOhZz)S%Uc|p=$E5VJ|oHkyIQ-ST=s5iXR%I+n_ znOjLxpTNd0k5ETq+ae}^Myh`yIOR2mATf3|Sxyh=$4`>Nv*{A~bea?JC0t92q%ozn zsOYYwdjntH_o&~Ek1LR|6>xS@b#6B8!$w;jwDAxeDq_$Eiq2>Z%?{~Gp1K6g-qt3K zb7JtR%|bx;h*`nzLBxQ-rz-`=$OF&R0IX?2w6u5;E4Xt@*XsnZgXR%jivNsV#eL46 zrwH1eqjk#z9ea)XE9rnl>y-^C&hn6xjMC~-3&NtH33l~iIE6R7n-$g?&ahTwBPp!g z2fl)`&J;=`usKV*DH_RgndwY!53U0m|JY2g1m$8E`cHds#BSOxlf|$*!Qi7L{E|8A z4N`c3nJ`c@bDt$(NBfuf)x`#hU&V_NZbF!6B4cTL=28=8brQzaa%svX82nsEq1lLO zy;)&b$kn5^Yc{c(F+)U46Om8yd|yr@mvqU@5%kYlajA%#+H;YUAY~>~c}=1yVt;aG znLm;ggM%=?TXqRvij6|I3}G>1)u4sOd%90XEqUNFkT9qBFHm}1LqxDfyLc+GXTUt^ zSD{9K($4j|ED&qEMEzASET(}lDqLj6QFJ7x)F-aBTf+*k@60M~v8xOA0kX>1;=x;J z?h3yheCRepqabe07VM z_Y2XXmUoS~bJ=d2fwLTI0o3Bvkf_bKq=K{b``kk;2EkM&pgQ=|<(|%N=&Y*^)a<-^ zi&2-+Su-%HSM=!Wd))3d6a4*07Otuhh@IuSZDDu)5#LlL?&<9v!F8RHfx2 zHzChw7rq$mYi6g9is{gI!aZxMulfE^rd!%wYJyy9?ZI zQavQtl&m)uu(KHWdd`SZY`v>5Ch3FBc6Jw~O{<(ct_T19Tc0#(uxz1f7o>4p${PL6 z>1@tkFf1sH8mWl6b+cVMD5PfT$!smhYC@`QT_@F)`_=1lhm)Qq!JMei+)NfgDgt$@ z11QH6byb(jVlZ?BbS;r}yS#ym-xG^9P?k-X{R50hqdcxc46+Qc*ODq`%D#<|M?ML~ ze4P?m1!n?HWwSel<1;9d$WQ5@bE!E=TGf9e4B9u6S5zR<@#fCaPP2 zF3aY96}9{|Yh8`fx>x?_BngrLQ^|qetP5IG2(6bDByB$8;_ogdJ;5-}=G9&oa(71; z6glXlbMv1+C2uCJW1Wh66qhq&|IY7s9JF%nv`*kISW9^Q(xRldk+Vd<`h}~w7M&qL zhjUt$9kY#UR|DF;klH80VLqi6$?I02SX|~M3hs{a!*ZKr<8(yyxZN`s{DvbH3`ET% zu;kSu;4z)KpeM_~z^tS~vzS;>og@c(!v(mh8yt;$*^peRBFyC3ook3B@LTcaOs27N zG3ol#h>ErN)A^WrXu#LJo8buv23A1Vn&dmSDWMZb_O2evCn-5kP8+R*Gu663kJ6*k~Dxw zxo~rp5&H>jE$m!NN&*bl6ezv1LX5C{xV99M7ezh!wd2@F>O#XQszY z6^nuBEL}>0`I_@hq;MhwI1(a{5^#-G5HIbUV)JiEH+t90eb=szY+DY_pCJ|b14|M1V&E;?G$mnutU>kuXlW5?sJ# zs$u!49$nKW9mpPJE0G9;!c~Aj`za{#;$(~piZ7e9^fRjeox*) z1cNoP@8V#KHpte$vW;5?l4 znKfQOu2Q&W3s6y~WUJyOcRnV@ z*8d_cykVuj+FVF!VrIX`vK1*JwEe_6C6KKGbzNRO} z<nz(Ao%)=%&%;nLC{7JQ^6WT z4M99^TE@F2ewdXPCD&<4b3KA8ewKJQZNuyV?SY{s-B^dSdU7)JX~1*4pr6a@QlNc) zthAiWJ(1kj8u$+MBdI-)ry41GH!rwPR4zw)4rGm5ek}^S#9z<8QinpK1Kc_B=3V5C zY|?J*lnd7Ikso0u_Ydz*kr!~h{>?A(=MV{&LdjD!PnK<`?8VvyaKx6*@@y^_TRf&<&XOV`Cwt)%A4R zZ&ZEj;Q-1V=y32U#DsM1;HF~1(F43|=PTZ=6Qou^W?T-Uv@Lib)GKyfU*?E3BW(t_ zv#jqo?XPy!OGIa|%ajB9bvq2wVjVX4Q(K&5$A~nTL1@Kj0wsXpEQ*OCegJvG#1a3}`*7UHRR7FsYG|XLg z-|4)o8R9sk0)cF8289r?!N+sTwy($XNZ%)*Ox6UgoEcso5t5v(n=$Q4#Q=87Bff!L zsF+{QLMpkdv13VOw6X{4MFfXg+ePeGl5x`+wkO?e;oGr+VQwZ#(v7@hg1q!(SZoN- zvNFJZR?WDUb(>|)mf6x;-nBf)8XBn(wa~~c?N*df#u4L47oio1y?rNPgk77p(<-xP zQCSKhm>AzjpiHxxQzZJ8BB49YFw2O;wONHPaL0S$jU#*wua1mRTXO2o(u~9nQYwBS ztgl4hN!CtjCKvJ|*1?&WVpnMUYRiE!MzaB3aP!U|SMbl*6u;&mQQoQ=#lk3QZTo~1g`d1sF~xe6KF!Ya5pzxD2Xi_vy@Y8D1|3Boif%uNe1Vo13U zXF8Gx)@`hJ?ZPH8W)P>wz<)|ka;;z9Dj>!TcDgQ~c=B)({xhZ*DvD1|5&n)NhVM82 z70A@!Akrm$C4?1)l6onri93d6>vPkPO^CLntGCWJr8-Dh;2#p?Mepjifwj<_F>)&h zt-tdHVD}zh9$!*MC1h*!t+`1UY6e}p+TCTYAnaIt>uLu#w%*i(#6)ZM-ibq(A`|PG zjE*JQQ70rjmg@_$3FAT>d|!4JN&%3nBiNmaDJPmNK`AB~zKnxD9OcQhfdnE&Jf*vJ zV_!f^Ci0c7ijV^269{%=pP_fz8*s#~iPqE_-Ys%-0}oq`2b7R*O2ejs%@1k^4l$P- z$JDe(Xs1>sGOn?KnAzPavq3W$0Uen?b?!PG-0IA=AX561cP`!yn`ZKZb-CXgK*v^$ zR*wFGl4I-o3(%nE4?T;{Lr)e;S)<{bh%Na$(rIGW#N88|VKVrrCotHxTz1yYuDkE( ztcU*Vnn_y?l=tVwlr`(=_H{xnK~I+W&@EpQG0Lo-5bbpmE|e=h6SwhwgA9N1^r+E_ zoKYhTHFK^tt|bi3=>gL-0w)PMh~MhM3wN62G@DF2Re7IljVJT&!9TrsyP(Xb6`A{6 zM{Hztz3S(MU)T*yPQ80vj&eZhrySP@ zwK#YZy59OVwWogKsmAgqU|F5*sv4lrabbgFlbii&VK+$~*C?u1K{W~NF+m=j7eTI$ z$mT_)`|9=RdbP#qe!=;g8J?bV-QRsUIN-DDO)_?|Tg;`&$I@0mamwOoH!*=cASGc@ zYXnoELm`VzVlpuJwaLr72M(G^DU6e}BNz&ufiFQ@dfJ9{@R&e0JOrMQjCkkfa$N8O zy8~aR1{llWaXyTb%1EBX0}1;=`OJZ2Un(7*ZkEl|joOT^^5&Jgl3{yZlj$~fSlPKg z4Et%-e8mj<4dvh!l>&Su?^*|)hLP`%uDC>&`Vf@nded%!AK6eyUpg_&mTqnx*+|=q zR&Pd)v;-%qjojn{d2t*)GpcNUP$eg51?!b;pAL@I=f2;j@QA4+vXDQKYE))Mc3wJOG!St+ytY1_k-F#&MvrV zLarYyUTl9rr<6uCGf8bm>vd;}w2oezpJmDpV^v{L58?An$o%XiNy9YzQWeA|il||gp3#F5*&LArv5JUSO@Yo z&A47S4M(?Ono7;PY3{6M2zH%yOFdL+`@*gZ5>k$n%7jz^cWE}g&BR4Y{$SHnZerta zaGlX47lCc`T}IEHsKjmkLl2QFabB` zW`4}w(wbjAh1cxMhCkjjkPR+pUm#uBMTQe>aETx4>{7QH8LkDpmlRG4-5seaP}Xz# z$iU1u8Jhl?(LpBF^!yyyP5uC*>R{Ee!_pS#vmy2`vcVT=#AHn;_u~ghlM{`K&WmOo zm6QW-Mz?THx~+Rx7o)}-Gdh2)s(3)8alt^y=lo07OrXx%Ih zfDNoTVk)nug3-Em3KddY4r=g9_#iQ^}vz!TA|SWUMvb{+Ypl(B*T zVPV##o*o2>T{1R`=?ayb9Y1rBw9ycWYqc?i}e3g_xZOIwUjgIx9u0$Zt3B*^2F5MT6QYYvhZI z3ucagH+C}|i0N!xE_R{bn*cvRz`xa>ZitQE2BTHN7vCgFK+QFE}1Y-A`?VIz$}jSj%&G=pgS2Jj-LP5{FJTPGvjumzln zpr$b@TdX@|B%j~mXG-YBBX6UA$0|U3fM;m5T%VXx^aCN zH}!rF4-CXi3S;Jy`wfE|ab)(Sc83o`rMQ<4fiD?2&ok{vQ(ee_@;~o$5M2$Rf$~4^ zq3Xc#6qJ+h-b5NCG^!7Pe4 zVp|1VU!S}^eG}=AoSA|@q8WURFJ$isMCna~HRSF^widHcb;Aq#)GNF`-v#O`O2awGbirt_+2*nHU!a?2gsq z7ba9;V}aeQ={ZWMi(T_^rENs54x!fjn}=)NLosE{ddg?*Ew?z5nGJJoN-r_QU@eYJWdChmSGxv&Nqv0AWuOSgtlC@gc4+}Pr1)udyv z0$c@@3|dW6y#;zV*tN0Z`kWALz*_81h60BHh~SG^0C=U2>W$H>0Y|o}rzN^Q_;Hfw z_7%YvE^diw<4x)oJcpr$?XDejwL67r=-oX5{AhFXz~$tVQvri|@y}Gom@kQEmv8r%%&7Ek5Hy>n*q;JbA-uS)#U;?JX2=Bt5iItyorH7izdc*J4}ev#1co(+ z(VX)^X9aTvp;*SbmU?NAOQ9TJ@mDdxs(2oY;~KX(-;=8|qZzNETTB0rcX)UAc~wW9Lo&c*KyVdUD99~ojHHQn9o&#^@@Jk2qTWm{B%Z%XZ5i`6)!K( zg6hyCFv*W&pBK%L5hqsdG<6PkOR+?0S&J|DA{Al;u~Zhg%-*a~n7xbLaGIg6Ug0qV z7zxtgCh-{;Z94^?4NKI^K64jmEt{r;;6+xyukZ#VR7DW18TgyTw z4A(Q?x4YF-0W1!7HDwz49aN@A(oHmnMTeX<;c3EsCKxwZ40eSo_om~>;$Ee3DJnu8 zly7PylAKjhr+zYoD}@a&%wC|9b%HZeWyNt6a1AnDn3y_ZG`!mcLEJ9yG2!sPE46FH z#%ewF0HE}G-91*Xx%(x^TN}#=W0>y1h`k}4EXay4yh6P;iihd9}dMwBm- z-OUTWiV$q&CYuF2F4Vy5jyp%imgiPH%>IEp>Up;ny38!tE|07SbcC0+RoARG$fjrp zuDylqGQ{Ly&pC}|V82yQa$rm0^wV#!$j(2e-T=1~`?7`G2oV#^FwI=ryePpaa|$!`%@|e3$suASp1pNwnoTh| zcuk6{4-0UeaR{xVh6P0F#q@sW^v*nLSE>Nz%=-0Saj8BLT(Q+6N`9#e5W&=J%vCaXJ@v!TY{Q+C zfr3<~xG7J;rYEbO&8cZr#DZyoh-Pxc2ut$Gg^n4bm~;BbqJdq;!X=~Y)->;wlu`t# zg(!!&e_XbyMlDBUkrqh{d(08RnM=#_Gj$FrQrZ00s@v7L_FugZaP5LiVzSHC93`sR zpNAbyVB%BAf_r1A#76S=ijzDFGQdqEQ}zxLMZG#O*TuL`k%h$7jUE?9JwuW_Wid zUF*R~(`Yr&OVSzW6Dg-Fb1%)im{75quDI=-GG?PduQVD$azWoHVTZF_c_}Cdw{h$F zqNCdT$aZs3-|f=F|1yxsdu%CIaaJXG#ikmJ04FsyGZuJjQo( zt260eV>B@JVPhc!2M(iG*tLBt)C#-Vmkpl*`^fguCTHuRC~EkI#(Aw1X8E2j+EfI#vrbK zDzLmR0b=$Lh$1&E1UR0EpRvQFYn@~^ZpaaY^Sb>+c(>ElyX#iYsN_?aiOYsAQjdH) zDXGPFNI8lM*=80u)Vo{6d6GMy-VS-sDr(KZIQYX5?5xX7zfwZWW7D<|#B%&lN)hZTb8GC*Fq;%?k?AGz3GX^*IYX^iC*&<;oN&tRGmNbMF=b35S6|6y z1qh^gHCR<{N@J#h%M|PQ(2J4@q)z!ZHiU1mem8}dsLQ15GhTUTKdxO>y|-*atIlZ$ zKp4&*(M5pe#ohT*X@iuWWtSFxg(>ItGe*m<S~s$`;EBVHpg+`}_262p48G-5%#rDtbXf-8Fx zGXzPqztwrFz}Xl<85rda<6pglapJbr+@LO^90Fov*8>P`E457Q(hRmyjUQ@%6WCSe zW~5p-!XV&dkX{RdBW$pHty0p0nhJ_;@ls{$DW!^#^3y%y&N5_mPKZX%3~LSS63M0S zr4mzH>&4S`Ws^&AyfdEFg~%`CMl-=KX%gp4TZn0G;E{B05;t5B4}PM_=TQed#(wjw zTSRB&9d!$EJrp}+lRg|9d1NBeg6qNq^niC#kVwe5AG>28Z^Eu##Z`inhvhqlqGI3n z8cv?e7c0&9{DDFkaNCG`vj%YOp(55Ojo)O#<{G>w>)p+?SUL+Y8c+ntE`xMrMnw-o610$EiOuE`tC?J4$%=5BwFjj)vbsb(M*Ud9$4 zZQS2F47dt7!;FCsV@vTxDN26`TZP3@L)ARAV86odMQk>V)y(fUK1U&QKf)HaWO<71FF` z1T%7B8J87+I)uA`EMC|*mH)b4A6BA`ib7%+GG1%M-WdD%uVaz2p7ITCWfl*TttZ=c zXX*`IVTUhR*}KlKnJdf0GmC9scCxijw+5FS7TnZMWXINQS)5=$MeDhSmkPwkScqda zzHcV6W(9UtVr#Rs{673v<#^%{M}gV9lWnuuhJ#t9V3$&T2AKN#j(kqZb({HOcbvct zr)EI3C+%c^D2G`#Rvi*Kz>4Aq$D1(z`BObRt{Bu)CJge2?wx?etoF8S#A;M?oYcf^ zW@v_z?JDnN7~K{*Wt$>icQCq^WS&2cFiq;S+Vf*EHznAf?ih;AJSDC8g0GCQCc{Vw zEd#jH`yS_{S@^-n)r7pMhbC(%REWY!B#w*J@4%thI6G?{)Z2>f zy7|>Xl4lX(7lYcgLORk+qF=_{q(`NU)T5*KXsT`Zj#Il#X zcg_k83%JQGqj9Nnyb@_NN+`Y;n6@-0H_pg)>XoUlRZOpEQQgnGR^to-&BSb7NPOm# z2TOsGkBI4PrQtR>13Dtu22{4bYx{KW+o`%CT?1EdNi1q2%@b49>#PI`ku2h&y65!` zoOAL>B1dvstc4g)#K=6aNLW3fb%>XBMxl7{trdl%E=%ML51q1W;&g&Se=C79Fq#4& ze+Qffm7!?>3~hT{h=$`ByYD&!)uZ91Ko?Ta;gK`+?&?{hAKb6TC=i`*nYFJ%OteRy zda7s6uClqZiRiF0`n$l*{w3vI=mcA5xAtwWA@t@#+tk_`-(sWW2w=V|%bHDzugdFC zk&f*Szb^2CD-Rgs(6-aQ?DSnX6PZjzBD2T_pDlhRetD??t`w$DGWwfhNG~8#-Wu{w zzgkesChpxtD5}YLc+w&)(iL`9)Rt1%Sey(w4pL{@akl7k$BG*|x@n>N@)O2w!a}hG znt@Seq4sM=iy`Z#t*O~tgV%GPJPO<~5CIn4oWU>-zsQs%<0Ua0pDV=f$S=so81^+W zu;>VK!a9H2w7f%RiTtK;ag^@$*U`Hnv*{-Cx7EcC_%3z_2aDsn{YexT zsbh{_B!_pF>HBf1#I#u;aLd(}sRL#yp(Ysh<|2UWCAZc>H zCEafCN}U>FJwVT{SoRIP(_8#qVV9k={A-*a>6||wK7RY>4}n;*J8G3waBy5SXPXJ1 zKb%6&lEB0XIs8reLx>q1Qw3hrgIEbr6+v!{n0@(gV8?YWU^u?Z6(QWl8L+j< z{4(*DE(^hg-fn_LdkMQ8eU2`?d6tRBHpE%kFiUXP;)HGqp1SshSI}*jiY2HgvdN+E zGUh0-h`(!MYeobA!Pt$TAmD;pCZ1b#VRbY4CX%3IS+8sHGMp1u+Nkdn=ol2H{v_F+82c(-xX$0PIe`lM<` zBPVgPN_HEV#t`iK?8=7do2|{1KD`CQmm%Z!GHWSR01y$bY?$zTg+!gpV4{VWR_(Mo z(QB2G6kJI@?y_&{UzORhS_pPcGx381^dx>U&c?4`>^O&fhPI*vyR`dP?2e_HdKcoh zJ?GV2n)Ivyi zk7!@ZU*VFHI(t(x;68J+_Y_;ASoD4wi=AW>q-%Dc+6F5Mwc!$nSxrxk;--WN-n|5q)q z(G{^d!D5!BU0W^0vtlyuku$+2D0PV;<9QcTs1AIY|1c)QuDlft6~UJUQRqwn1aNov z)A$VWFGCyMh*(RookV;4c>a{LC>KTe!g>mnQ)6(Yc6Ue&XBUjSESs}EA!gnJIUNph zhww`4tF=L#iWK8|nKt`QfXF$<^_)>Y18J40b2oU>3#EC6#B!cAiN% z^=Kx>kY!fGl#gYtG(D#kqCQ$mc+F~2v~aDN>A0+0l8Lc?MZrW=G?y6B610^^v3O%e zU7DDe;iQ@tfthTMHgK<4$`PfESvL_3;Mj_J1jc^Bm|~O6EcLF>Fwr{G=*Ma1#RM^B z+{uvH9gBjbXv7xh-%Z-L$Wwg?1hS zt#T{0toO1L7P8Vd2qnc44Ei;hg~jOP4#J>gtomg0f^Ob59cEy#f4Wy$@915@Ss`1c zJJf3s3#O63g>PVL)E2TP-G4sK)1h7ya5OYU4s2{=?79v!?2ClBskuSs0%h{inNMwx zj37qTYsVlF7?|T{=ND1=rUD&A?NlBiYN_BMa{=Qz4HGwmRl7NeiHKt|R3{YHL#Y13 z=ww7Rr=DRJ`gAJ@vT6XyyI`!7?n2i%DmerBqC=8A8w7K1Kwv#dR`|ApVp>+pZEHmb zb2yZ%R*e!8o(WBw96~MRpge`*^W#A@YWe|QA88%$0 z*iEdG%Gc2|0-TqKffIS z??S*q=cj-A0LQ+N?z*ZAH*2J+vw>jsG_re8YwX486ASP#KUo2(fm&iR;25P*Kg&W}(Nggp`I}qfzTx$HnQM2(fEZUHx)Z+af{@Caw)bQc z2M+|N!a*-`LKYLD1!8uI3bGx;CAn|BHuGd%h;tnH*3-pjxN*d8@SWOA9ErILF{Lfu znY-9pzQiI9N&;dF--I>n#a`YW9oZyPlJ!p8vW0JX_b3j|lcH-us@@>xNmAlATb!VI zx5*8B?W{$Kx>-D5JVBc+k&Gp)XTecn)agR6EcFaT%!oh~4nhHNo`^ zo(AGKqepAa@sJ|)Nqre+RzVza+ZM?Aa0rHxxuZ!=EiuaBhM_NoGsZh5f=s2zZXX0~ zMSwnWUTrJ-@|BoQq9#d=@}VK0!i)Kkp;9)3Cxnf4pcB<8-)IRp*1xL)Nu@}hC8Kcw zx}a-PMi{)>M%2;bUA+buwZv`2E)C<%en%tIQ5Rk=^q2{=1X*zGBar1VMi1-?tiSOY z4m6istqmd)2DoMDU>AYW4!I}TNzA)PLa zS`DC!W-f26ZBvY1om3E8x&EX=ejad6527wHpIuDOhhPiNI5cQtsRWeu9ERW_-9Q^p z&0od>E|T~PPp+9Dk9hO;4bZ$sGxG9*~g|TQUKL5zu4?X9L2+{&1&9E9b*v$$~k$bS10>jL{oG-@ck?O_O3f9du z`ciWNMQc-Rf-{#l;Oyc>vnJyBChhD9BTVD;2PD1n_fCC+Gg{;ckL-?RWh8l#V9P7u z6!_Yjn89o-SXa)%VR!5s>|R$!PdkBk+&wJL7QrFi3ZND)`Q4HBOo?=V+S#B~Y5+m| zm*^Jh=_7?i{!ADt7bz9hw3P|lNaNSzy7F*su&bX|4!y>_YYry4*v=@*p@d!k$-`!V zHTCATqGawaK!GVlJ9O*UpQl^uHC`2USrq_W<8R?>P!_Kv9%`KVS2~c5)ZELnBQEU5 zb_jfVg>`xRQt7W8u!7p);4%%$#~?KzCP{`uLJSaPb68h-5d_4|@~1Wud$Oq!-Hh|3 zunUR0-yM@HSj4!1>Kc|c&dY<_5lbbtru9S|>nT|N)+(|Fjs6pY4eM$8E2G~4_u$l< zc{VAtTn}XOj>aw#?SWlvLAL4h*@az5El2W3IAv*VXw>Xp!ng|lhE#uONov>G$|{eb z*N--caA$IBZIC1s?N7y`av_J_DdHg*9e_qxP&VnlAliNyHp4Tza1@{`w{HqxW(`0U zley3;*E{u|n`r3!&KM+KtIB-*>YZ5g0J>%%=)=^T}{_v5uv+Nz|M5 zbg`R-x46M`0L`NfxFz<&scsX2rSk-fH_FLa9Am*#L2P>^-QVV?P%IWiY!}_2zb4lJ zf-4e|j3D6aj5B+>-S%f`GT}DV;`&Sq@2T2$r3UjyQVLy14Bn-dg|&FxI#}G`OV|#b z^VcNOoJ6e0%!ksIszGWT#-2`DANTRx1IO3O0EM*q3SD=Kp3y+*k3BpE4 zS=A&r9;KT|KfG%wYj;KqhJ!uMSjAO^ALF2bqE18^KQl3$fY zxAcrJ=7`N9T1a<)%54bm#?uv)QN77NRNxM3uRtw$mFbHep*yDXJL4uQB=X@*e-V1u zn&FDlA_lO-P5~G3Pzx3?ZBVl6)<_KjQ%iN2V!hs9MySYNp+{o*>~CwN?ifQYf2D}W z3q3tarCz2w#LD4`V0~*9CoJmH8zMXZCmjR{OMRN^Yoo`ydn2v}xUunvzsa~Fd{cx} z?AAKG!ETyNDz#}+$_JQ&eNyGP0n|BAo=1&3E)Lb+6p$V6uu<9sc*Vv`3 zEC~B0f%}eHaFk}WMHNI6_-B+ZWz7NcaSZjAl6A*lA2Pg(T|Z!`U1vxT3?*AO&=-Sv z4Mt$eg?57q!?H-h~O%#}Z zeFVeSL9Yvrmbl~)E=tw`y{ZLnTL3_IfGOQ-ar1 z4D4fG51yKyJf>MlXPWpSbLpa z*pLe7^b0_=waG@~>V2-;5b`smCc73lEy1DgMaMQw12NMMW4JrLg+-JVL$nqu+Af?WoE;vSeyDL|uD_$cdH9qe18rxPjKvK8G5 zF)B`|-mUzFXq}rV#Npi-VF-rtcdd8FCTsF+s253q8b;lYs}Q7eGBhjU(shqkkHzZ` zD!~Bp0EQJ&c~ia(@Edzvrm4Ohi-EunDn*qFCBT|L*&9muMUccT*YpnhU3Je|&+S_n z6*NceX5FvLOI@X}WLY2zBv+hQ!ue2t9yJMSIWE*zNThHZ*J83_dqJ>x)0&G+G^hGw z8Qyhi=(q|K{%8CnJxc_&UCmu8^&GiN)oTIMagT!A9Vu1FT6!LCi&3%k5K=Ll1d zoLmFCHb}+LHS(azj#;jW+hoL|)*p`E9UsorRW1#KU>%XXen4y7Nt;DTSSlbJl2@y` z-DoVrHz~uQ5be9vJCL1dOucbnm%uKPHwexw;am^zg58u{U&7tkJvFXtUc-Vcf)wTO zwKZHL(oe0-Ce;K`JRN)nvnGEXhxnlF)-zBoCG8v0SUnBpQZzFu z)rXx;H4c8g;JYBcDha21zI2=SOH>pFVn(qUnwbnBcpMKpOxYQ;KiNtxdoR~s%p$O6WnM-iCNjRnzQlXx}V7CZH{YNuI8d>8SSjn8><`S{lTS#O^-XX1fj+WJabeZqF5Wy^LR`abYYqTCUfgRl@g z>_~$$0tJ+}oVUpfMygyT5R()myHWGF9GPlhp29u>2|PmoAUkdYQ5we3nwN*F8|9GD zWQ>%&SvyD6@&Vk)!BhiR)TaBgG62-F6TF+CQUvS*yKuQdTy;^8tcj0NLHcBs2m z^%7`e?qbk~cdHPlN)U%Z_o4*CvM0o;uqHkOm_T|XNR7dc^RNX1U>YT0 zE8tMKd!=!y@cEsbMF`lQTzv_`FA8?U%GJ%Sxrvq0yaTsUEI67Z^C2yrqg8sstXXk| z@MNActtf$c;5*n=SQ+egyB9C10i5F=$;athAwdPcF{(1HLQmT2`?Tm~{3FjreKH#Lr=NyP%1A=FFV!rUIS0)D+hw1Rk3 zbRGAU?h>W|I-)f$kr_!XsBB1J;6OQvv_m-*vO~IOYM{Aa<^zwSNXJm6g`--^ zd5vAe*9;ebfLt-+p~y=u1i7?{|C%}TU6PZ#g2IU7xi5KX6LSJh`etJ(T=9p+1N5`2 z=R%X56BR#4yVVw{H2UGgiWQJTi$FF#&r};ix;_n3hdCorYQ0eu+cxQ>U7YFFLs8)3 zArcd2QNBpzN1~gjfO_X>Eg0E{qIOKN>YRQ1edC-1#cPU{+nGm(8Q!f9?p?YuN#*j$ z=t)eVgEsiBz#gTZ3Izx#S4l z5z{VQc(>68cJDEzG^SO!lQy@;VU3oya3?Z1gY<%L)@UqYT9z@|A~WJ}S;97@1i1Y( zU8WA#HVIr)IT0Iua)}Q0=~GEV41Sj`I$ho_uTY3B9@VyzAkD8t1BtSsnct;x_EwsF8*ZkhBlic=!a+mqB-X9Ijdl9=Sp&mPKa5vJPZGe0OZhNZY>1 zL}?ffu@0)0L$|}bTMI#tkmKNPCa@nG9vuEdEw(5w=+?k(y~OBRa%t;@B{DPD;?YJz zjP)A@eE4Fb=M?5n@+`s^jhk}Eu_*?xXc#>#F?7%B@W>VnG0@minxJ?{`mMAR05{Ef?76I*#H}cmGLksh}=?j<{ zwl7{Lvmun!B#t5BTd5}EOzkjE}G-R6MN-rxW0+iaQ;eIk|s1!aUkWe z+yzb6Q1_6+UA&lG5`QCYr;N911FiK&hWX)0ppsocSk16jC3h#}FLpO25#^Bg6*)_+ z4PL?SX1{cK(ixW+*a9@FC|4(}T1X%`&O@uroRXE|JU+1$<>Z5!n9MBu5sLLfpBtkV zh}gg`Di%A8l*Aghz&9pCs~k}dNq<}#m+@RVF1^bFWzCSdcoOabB5`pw1HV#KKUpzi zeCmA>okV*sfSRGaq}fcdv0WS<(PFOv&U*p1sG<+<(m^OTvVpNEO+lwcK6Fc=kJsN& zuUVhP?yF$Pm8FmZHvqkG4ErvuqZ#5z7`_AaOaSrlSMVJLKN`2|S6zZ+De?9_g3_4| z@i(!Wz*TXm6dWer_a@8QB;s(0i4S^;*=9=Y*a6J^{smUehWJD`@} zH*Z%%1BR>hHV6iqDPth(1}WqNL>wlP%leM$1?Vm0y_F5gJ_NfY&(H~t-dL2tD;LZT zDV=R}!6z?&m+}|aR!=5^*&-A}2Fld+8FsaMq7A5>N=~WK9u~v~WJ%mH)}^?2>8eL$ zwv>!~GI=xLss5Pc?%?r;ot#rpY7n%q#Wgh20dwtTq|$wxRl zl{YIA7RObt=-0$mlEN_`#z%|BZD&Lh5a^1Cv3&2@?O_Obk`!L?((Myzmk=e(8WPb( ztyA}iLM2{yc7BHMj;EVCZszcKH{=xBQi`8=OLwO@O~8GPL6({rb5*M!!G28zBljL&FxkKKy+QLsy}OZhIt|H@3q8CRETo;}xi3@kY#y zU|<7y^DBd`7ODFzH1qj-Zy5=c3-P(VuVIz&t1W<>B zrjfE3hJ(0QKBT(Zqb zZRo?XzOlPytc;1CgjV}-ru&zroUxM0qPa?o{=pa#_H>Qiv^?x^r@*mt7Q*+>>1Z$t zCAeAS3;J_2Ey3h7u4^BTgV*+oV#U|P_k z4v8|yCJS);BB#A#H7*LFoz*R?XtPO|*%|aUDEEz5Lab$mBGQu@uL{1+l&ur@&S&Gs zu-8+QZONI5U!6oOOpWh#Z*s4xa!gzinpbe2(}24-hMU5M0j{y@Qk!FkAEZKS$CBAX zGoV4+@k<#vMmJT6aeo^^4WQ8#wD%+qEyXf{HNjShR_f=&z_M(B;UWn_%+sEkG2D%6 zk22)QnBAf2;@vBkHlYB_RO&^6M5mUsUG`Ay;zq4^5epV%V2@J`Y;eDe2Ha29l8J_K zGh1$=H0K>$864I`yyB@v7!aA+8XKk@_B|NX=gCBPQMY`-NQDFylr=`~4}&@s8~YYX z(4lYB8xkf?b^pb| zN6R{`*eV=De5M5H8}Zw5JbgXdm=afcB&9#Pjbk-33n?btQr$IlJBpO{Nu7xC4e~L? zr2<75BY=2Th^eH*9sBR6TcHx{Y+GE8F<$4j>P5D>%Dwi-Ga=|(3k z-&{-?_#U1>-Ac~s5wFOeh>d3acTa~4ojn;SQ#`B&;Ie@lAa-EtZ`1=4gEJXesM~7X zO$$v@o@&~rf}10}8~iwVF9NlwpqwE-W4kzT{RP(B%ZT{e3mL=~k8Flz&9p)^v1M^W zxBYNt&G83?e9BkvuXR+Zsh9E<0yszqGoe}{JPOeg_89;ZvC+cLnwB*r@mx%yZ2?Nf zS-XtT*}BW5&?qBp$yk}yX6;mbPr@^bB#V^wE|un~3nOAn*-DXzt=mv6ORe!_Un0f6 zQO^ZIUMt&md-h4dXZWTeo>Euyx8RZ~LpTyFE{PIuIQRq^AN?$ObAgSO=TEwD*h8JG zzWm*rk;mp4!w|WFE453yAHD$fqM27Ba1SznquWwbnPA({K4+JY1BgSbc7S|OR-A^G#|(X*{w2NZI+$F)*z=q z4Ak~AA0}xIf6i$uj4I16*t3nWZqP#BwkTUA3m8Z3Ic0m3q-bhancgh%WF?TfdeBto zm`5q;a^|+P7YeNKC~w#ZcJV`M@^RTxDVDJbGu43;vGd#b$iQyOv@IAI3D2;F+$+ls zg&hsC51S&q9s=NCu)ui%`0j!mC$&Ql?tnY!kDD`k0}tOd%06uK8N}1Y0PhxIDYXH? zlZ?2l6zl6>N#HMa9+s*MXdXK`nUuk9GzmC6PlGDmXb&pQb-~|nf|ColxpJd4WbRq7 zvr)mJPtv?J9|d|hsng)tsNys41pvzDmUXr1RTE0{J|#FrBdGN$TE~gJW*Hs1tjEzC z1che7%`BjItpT=&OdYlqI!?Ppb#P2B*Y)N>e7Zy%Z0nfaw3rX*THQcvtDT2z67Xo;)c&@q>5~Uko>^Qa}0F<{3y0pE)1Me<6yY9`UzK-<=OfG7k7jh{Am8afW#!EJ%!1Y%%#B$s35NpiEbPq*W2{o3$T0=7Ego;(;KiFC z{Q%&OxUFs%9}`RA$V430Zd9?wJ-I=hJH}0W=M@g-AQiiDa{^z_q-nn{C5|m_JnXPK z4DuP0G#>x1jsYpan$Q#mbgz^-e}@0UyN4Z)@@ec<*EZuWr_fKYpGiN?`5*AD2e*}F zIDo7|e1@04(rX@I`7_TKI!nC6tnh9K*kI*dXZ5=TLz@7SmM>Lb%i}&cWC258--5ql zzO@)2&Oz8Fqj#5ftJKy|7DFAQb7u1fwvWyAwP{-?0t@f9q$cc3y{}g&P8XdweUPMu z!>N(yI;ArB+mA+a4pCb&X6KClWZxT-YUnNWF7J>CuQpb$!DK+7M;;`~;qrv%knUtn zui92X%q@3b;#y;C9DEe{BU8QUWMOt!KJ8K?b*fl`;EHuzB%;F!k^QF+og^Pk1@kzS zLs2P6Tg!vd2BsMHE;xC20L^AwhjA7-_GIYEOdGbYOy;lgpG}FYbCWQak9|wUN6Q6& zbhGkal7F40*zDjZ<#pQV2ms(+Jz5AJ#ziprNFa6O7uq|X1~RZKWcyh|)PPdprj&LH z)yEH>oE$MrmA7LS7r)RDvmQ6F$Q7Wu_h_9o5(fPcCK%_xc7~0 zAlsZ3KlS;s&;y9_F4!ed6Lv}BZ=H%RL}P`^S#Ycq%r5b9quPDVSiJc%z;sRD%N&Tk zkSd(K!X6+st?K;jY#W-GTRrk>ip{~gAKDob?%xxw@vH>J#Amu4RWXsE=8Kl~uogdLpdXRc`h z2B;<4=~_A_An6jY+bZ%n1{9K)bkV+@`r+gf)GUhPi9C5T!BLjckY*F#1!U z;7muXH*&(Cx-x^IIMu?km&w5HH->C*%w2-cT)$pp7}_LF12Y8j?-tLCgI>FSzep&-u{6|tn7Kz|GqoUbM(04}rn zmv_@r5z-|k)37vi!Sv!%9mZv+sz1_JNm__v25^vX4iKBO1y&E*p1mL=7~o^PGcSVZ zhi-u5zv8cv7RhFa$t`y)rD-2$&SV@6{d8@Ax>#+p)Rw*}S8cA}RafbUnPRjyZ&8sW z!2R;^E(Ci_STa>$w`C7)=(pRDFOQ@#CPN6!*i9<`rk#tL*RhbAH(B6Pvme3j1q2_8 z>UeU|*J$3z)-2x>uH7u?^En8Gu18DuuCn3C zK3)-XPI8WASr~m!hOQ5@0<316@m$sPepTKJhm!M|VS{zh!3fD90PYpOX5U<+cjAw- zqev4xWxd|}rg;mU&?KJjo1Sv*C6)mN7IUtzv$SBo6XU-rEzbtCiP(HO8920TxfxAt z2hE%D#)80nfiejMgI)Umh-M%IxWVDbtW%pB&6g2x-wwG*LXa(XKYx{diB2YK;2Uph z?U=+!LC>Zk{P|E|bsl3Fvs^U3w4x0_EgVPQ98sX3`f8CF;6l2id@_KwnxSWA2c4W! zID&OD!@b#5PHqKeB|*>UTjYV-z&94#UJfD;4!$CXUGAXvfp4D$wZj@HV$S(6f?*1+ z{B&prfQzBK+nym0(7Ob4tro}PMbU=L>r6$hQuzRU<4#OfgI(UNK{NxWtnn;^B+Vuu zrheHp14HMOh*Gp>@NL-j1rS?oWNSOacdoBsFp-;U)2Whh2jH#&)DOjP;j-&#E67?_ zT2(1iNVnAc{_x^2FVzK%z0V;^{`lpIW*;%jLM>M&0;gsDuf0G#ewdn(>G(=La{ff& zSxdmgLG!$k)b}KgyvP-?yXtn5z~?wX{@P$JpbuwXZ-32)n%~G%y)Wzj`V0nNNVlox z`RI74uyPoBJ|z|_Shmjvb}M!x)AvCT*5UO_jf7Uv?yXk@YMzr2P$C|#E}*$m-a@>O z02*fvMG}YDUcoRli8uSW;Y;5j(Oymf=Y);I6a+~+M+)0U@NV;VG%IbLfoo4Z5m@6e zB)pNWvUhDCR6C-68R;1(;T-XFJeKhkdAeT-9E_?7Sm&DySLsWNx_x*PZU5HsU=QK* zK^&YvrH(8)g{XobpP#;g{)*e6dj;R_vQ(_rP;9*0)MQ=Jm|w%Zn8Qp>eBEHY@gl(O z>XDN$d9n$-fFMN+OmdHWBxut-fX-K?LvfQ7qk~;FrachQp!$~mS(%B|fMC(P$f%_3iUH=-8;M1St{~H*2g+_}KRi zPa}MJDBook2MTGbX99iRUCx2g@pyByY;wK3(ilhQ{S!t!fJlO~nziw~!h%U3Fk-CK z+sV5#03BP6`Ab*UqcVfGpFBvaB?pB9O8j}yNyjA$B;tWyw@WRsuPk^?Cbm|qy(*zc zXF?D_+MDE)@IiuB*U~@{s5dST}mlLY#eyj*aKpxS%vV8z)|BYQiHR zGFA*b%r%fobOG*aEkkFo#Cv`=e2rk$A>Ld&>sxooyg;q?{#gu31)iebM9i zaD1iVEE>i(iNii_cTQK0U2O(nYAYa_4|mXns%uS6<{}% z7-TmN(Rg71mu$j7w!2>9c|pCk5t5GpzTGV*WXv^)2SbEKd1I^qcV#HFhYZ-7ca-|1 zJhFnxz7;k4s64pD@n#>QiFX^kzJ@V97NB$`(ZO+T2R&XM!$ZxWy1)VrK*#G{4mL4s zSXjqEk)+sJOjvQ|iP4LdycC|3A>6hfd$+Y3 ze5%w!PEoc(`?psC%h>Yq@}y1dQ$1*qx%O%%BT=Tf9l6^WSk!Um>jP&V;1cG0f^ z<%$7v#c14ZVk3u4TN|5Ixf?!tTEmgRj)I^mJl`nI)>5qB`t1qPkg)g|F%Y791KbcW z{q9XYSlxOL=(xNw;KItGQV+Nk)C?ow^(?O{hd~xzG|mDk?+DvZ+#nNKK6ouQE;WWf zc=e%Qb4?#mH_#jQuc`=p)s;dapwyLfJn0;mBj*FVQi9IxDO4g{$c8)F7sy+%fO6b} zZmh{h3Oiaon*-#UV~>!`bp_40NASJ>7_mG%!!7krkk|J2@gnjvcrj&kwDp{RZ6eyy z5KT?5t+8&dVK-+~HtFyJ!uE_kGf^)&F*vvHsxS6U6{9f(uDz(jzHzTo)`*q6`HRdR z*%_mVis@H-XgBW`?g*fclY~P3yiA66`{2JC$MJyCyE^EJa7XAAn-dyhP*~c|q>^bl zPO>1~1YXL;muAWwFHg^}Is#vhwF|h7T?qzV=|4S*MS46wc)=AYbv)%T-I_?}=aaTu z6GlBzT8D4!pCMXb7IuZp{PpogXNw;E@zICQiaC6P9NE8a4^PO-p>e)!EttJH4^CaE zF*x@8^$wILN@w?w%Lcpc@QEoQ!Ad23 z-88xy^%f$6N#IemKp{l3 zToZdmGdydde|=%ye|dd+d3*Mu3;OGuf9e=A4#HjxH4dRI$CCty4n0l|=?7i*g9!0D zCHBO~-8n-7asBBXsA{ExwO`lnfu*!xB=17cb)vj?nwY((H$f)TM zvtkSr*ad3#*h8Ehq{n4W1{z)HFU_9w*&C;=OD$#~yJ3+4PdDtPm!Z%Mn1EVP8{i6C z!7;$iaf@2Btg#z(=6HV7@q8V5O#eyH^ue?EW_not!&aHu#v`vfl+~Lwl*VjT!MuCJT_RlqLv_De+9VGugPmTbOXdJ5nfgL zlUIJ6Y_p8`}(tzRT8m4F>wc_ZGne+z6GPMR%_d&792bUdEPr|A_-OgGzhc z0vFEy7Q4&$i{L{-0NH5tgLhFN!`8Ws5I2Z};}USD4d_6K-yJ7>i(@dI1{mLEPGC;s z9z&%$ox-~gKr4QVU~SekxG#1mNWD854pzR1d9gb{-{|f3Le2!@HUhq&lT`4yytqzI zG0$imW{^R;bk8~a5a0?}=-OdH#K0yq+v|pkHI>F;5O*dq5e;B;CJj-a!8dc7&BGyU zoK5@M7C>gOPnwy^(Cx^;KoB$wTo!8tZWIE?_0iiySP;yGs@}bs<2=MMN_SYNc=E3b z`_K%%P04k1g^jlBM4Fe;hXMh9*xDN3VE3TvN{AD?hl=w#ljE zRp^h1mH@syb!H$0yFnNbxp+6f4hV{sO1Fcma4<0_bIGrl)PfbOR*tbC>BT&I8J{)?~s>${VJ!BGaeo6k_wOn7HWL{{g!r`@Va8j+%tCH^$qX#EQS0C z1}5QBjUnZ|nqeWnx0yRO=)57(@0^NLe&AYcJaFBYtc`a#tKMzdP5faD-RwqDi#M6x z;JCrrwy$-P17(xpR5HD(^GXR{NYpJrR362Aa8fOrwVJ`dhEtRMkB?R+4xk;talx&# ziQBdc#}KEh_UKlK#cSE{J$4V$y^q{)|8&Ot%fySDy=Fzlt=>KIBbQX@f&escusf1> zb@|<2|99-(IIqC>^w%z+-|_C8nJ2-|<;74vnfNos+@UUNIP5h_YTm8>HIgq=`9?Q) zDTp(8ojHeqxzfCKxVEK-Cdz;~WgC*$70H_UYW_0|vhqJVFB_trJroZtO&d@ybV!#WZ-V(C=;2X>ctSN;-W z%J(<~@hMLY*8a&%d3|mdh%f5h5bf@Qv3r~?Cw7Gr07^85^t8;4Y$YE-XFX{JP?&^8 zr{HY;10}rM3*>fyQ4w?t(>%;`rC!lz4&~wWrBw%~p`gNm$tccKB#gr>%Y9o{&cq!Y zHwS{&4Di#b888`c@bp#ho>tNE*PF~aH2|c4I(q*2Cr}k+YZ3J63eG|7q zoIDOuTEs&$$tLpI9)kHA6grYcv$>XbVn(`JElf9CrqL)~blpP4ZuRb6MgR{rA7#DL zM(#(f7ONG*^~O{CH|*+pzd1<`1RwC-v+F|SL~LJ;yt^3gCb2vx(ih>og5ipU4vh=x z9=^nlR~X7X)7LjrYUQukluz;-?4}gc2USWrrnYHsAJjH6-h|vu=;lB5#`nUv!XU=& z;&F*<6Z4JU9hN0PZ#>PblEhVBabdT)j7fGJ z+V>m1dnkmwr0=o2cnx;-)=mWba`Se#*i9DtIu_H%qg^7TSZRJ?X5|K*nIaKv5rkPh zP&gaeFup;I*vO1_ur1wY?<({t(Hk=p5^`ya-4^F@*;D} zX#YYg%&$#kq%H@g`*vWLN?bB+XG->8u{*ihenVIKV7}4I-!%}geYuuRxMdsGjm^~{g z7CWRfr4F5aSy2%~Ed{=~4b?44#hvvGsl`#VO$Ns3f{h4GTWXCxL67Sp%ezOI|3&qd zdNkWIx5Nwr2@mJ_&UxpE3|cJGN4>B7)qWuiUdvdWmDFKy<=qwVWyDLNKJ z;xN~vrS+Gd+i#&}zc|>e2zy-%=SVMwXN!VIHl4u(E^2doj0Fy5)cR>&Wdp!BfIeyo?zL}u7xw)Q zl;2{vR~~d5-rYk_c_P?ke4P>#CPsc3@u%-G;-r+n3L8sxkAd~b9xovJ2poFe1fb)e zOo`bc8}4vC3ivOYVSUE3;9~aUd`~X?sZ5Asu{mM4oB(6%e&PKHw(p$XR>kFFsp;Pa`1Nqyl%r6 zpZk&uN9mkR=wXU!<)wGk?8}AO`S50wm`gw0Liwv2UT3YS4Z(9+&;I`bY7Owc{f|tx P00000NkvXXu0mjfU&`)B literal 0 HcmV?d00001 diff --git a/programs/bcc32/examples/libimg_1/Makefile b/programs/bcc32/examples/libimg_1/Makefile new file mode 100644 index 0000000000..ea30d5c77f --- /dev/null +++ b/programs/bcc32/examples/libimg_1/Makefile @@ -0,0 +1,19 @@ +# Path to /programs +SVN_PROGR:=../../.. + +# Path to /programs/bcc32 +SVN_BCC32:=$(SVN_PROGR)/bcc32 + +# Path to t2fasm +T2FASM:=$(SVN_BCC32)/t2fasm + +# Path to include +INCLUDE:=$(SVN_BCC32)/include + +# Path to Bin folder +KOS32_BCC:=/home/autobuild/borlandcpp/bin + +# Filename without .cpp +FILENAME:=libimg_1 + +include $(SVN_BCC32)/Makefile_app diff --git a/programs/bcc32/examples/libimg_1/libimg_1.cpp b/programs/bcc32/examples/libimg_1/libimg_1.cpp new file mode 100644 index 0000000000..d7f21fcb1f --- /dev/null +++ b/programs/bcc32/examples/libimg_1/libimg_1.cpp @@ -0,0 +1,81 @@ +#include +#include +#include +#include +#include + +using namespace Kolibri; + +const char header[] = "Image"; +unsigned char* img_d = 0; +long img_w, img_h; +char library_path[2048]; + +namespace Kolibri{ + char CurrentDirectoryPath[2048]; +} + +bool KolibriOnStart(TStartData &kos_start, TThreadData /*th*/) +{ + kos_start.Left = 10; + kos_start.Top = 40; + kos_start.Width = 280; + kos_start.Height = 200; + kos_start.WinData.WindowColor = 0xFFFFFF; + kos_start.WinData.WindowType = 0x33; // 0x34 - fixed, 0x33 - not fixed + kos_start.WinData.Title = header; + LoadLibrary("libimg.obj", library_path, "/sys/lib/libimg.obj", &import_libimg); + return true; +} + +void KolibriOnPaint(void) +{ + // If button have ID 1, this is close button + DrawButton(2,0xf0f0f0, 10,10,50,20); + DrawText(20,16,0,"Open"); + if(img_d) PutImage(img_d,10,40,img_w,img_h); +} + +void KolibriOnButton(long id, TThreadData /*th*/) +{ + FileInfoBlock* file; + long int k; + + switch(id){ + case 2: + file = FileOpen("1.png"); + if (!file){ + SetWindowCaption("Error open file '1.png'"); + break; + } + k = FileGetLength(file); + if (k > 0){ + if(img_d) Free(img_d); + img_d = (unsigned char*)Alloc(k); + if (img_d){ + if (FileRead(file, img_d, k) != k){ + Free(img_d); img_d = 0; + } + else{ + Image* img; + img = img_decode(img_d,k,0); + img_w = img->Width; + img_h = img->Height; + img_d = (unsigned char*)ReAlloc(img_d, 3*img_w*img_h); + //if (!img_d){ ... } + img_to_rgb2(img,img_d); + img_destroy(img); + SetWindowCaption("1.png"); + Redraw(1); + } + } + } + FileClose(file); + //break; + }; +} + +bool KolibriOnClose(TThreadData /*th*/) { + if(img_d) {Free(img_d); img_d = 0;} + return true; +} \ No newline at end of file diff --git a/programs/bcc32/examples/libimg_1/libimg_1_cpp.bat b/programs/bcc32/examples/libimg_1/libimg_1_cpp.bat new file mode 100644 index 0000000000..6e367994bd --- /dev/null +++ b/programs/bcc32/examples/libimg_1/libimg_1_cpp.bat @@ -0,0 +1,16 @@ +Set NAME=libimg_1 +Set BCC_DIR=..\..\..\bcc32 +kos32-bcc -S -v- -R- -6 -a4 -O2 -Og -Oi -Ov -OS -k- -D__KOLIBRI__ -I..\..\..\bcc32\include %NAME%.cpp + +echo STACKSIZE equ 8192> kos_make.inc +echo HEAPSIZE equ 0>> kos_make.inc +echo include "%BCC_DIR%\include\kos_start.inc">> kos_make.inc +echo include "%BCC_DIR%\include\kos_func.inc">> kos_make.inc +echo include "%BCC_DIR%\include\kos_heap.inc">> kos_make.inc + +echo include "kos_make.inc" > f_%NAME%.asm +t2fasm < %NAME%.asm >> f_%NAME%.asm +fasm f_%NAME%.asm %NAME%.kex +if exist %NAME%.kex kpack %NAME%.kex +if exist %NAME%.kex del kos_make.inc +pause diff --git a/programs/bcc32/examples/template/template_cpp.bat b/programs/bcc32/examples/template/template_cpp.bat index 19d88a0b65..3f5dc0fea9 100755 --- a/programs/bcc32/examples/template/template_cpp.bat +++ b/programs/bcc32/examples/template/template_cpp.bat @@ -2,8 +2,8 @@ Set NAME=template Set BCC_DIR=..\..\..\bcc32 kos32-bcc -S -v- -R- -6 -a4 -O2 -Og -Oi -Ov -OS -k- -D__KOLIBRI__ -I..\..\..\bcc32\include %NAME%.cpp -echo STACKSIZE equ 102400> kos_make.inc -echo HEAPSIZE equ 102400>> kos_make.inc +echo STACKSIZE equ 8192> kos_make.inc +echo HEAPSIZE equ 0>> kos_make.inc echo include "%BCC_DIR%\include\kos_start.inc">> kos_make.inc echo include "%BCC_DIR%\include\kos_func.inc">> kos_make.inc echo include "%BCC_DIR%\include\kos_heap.inc">> kos_make.inc diff --git a/programs/bcc32/examples/window/window_cpp.bat b/programs/bcc32/examples/window/window_cpp.bat index 70b0fcc1ac..3090e59082 100755 --- a/programs/bcc32/examples/window/window_cpp.bat +++ b/programs/bcc32/examples/window/window_cpp.bat @@ -2,8 +2,8 @@ Set NAME=window Set BCC_DIR=..\..\..\bcc32 kos32-bcc -S -v- -R- -6 -a4 -O2 -Og -Oi -Ov -OS -k- -D__KOLIBRI__ -I..\..\..\bcc32\include %NAME%.cpp -echo STACKSIZE equ 102400> kos_make.inc -echo HEAPSIZE equ 102400>> kos_make.inc +echo STACKSIZE equ 8192> kos_make.inc +echo HEAPSIZE equ 0>> kos_make.inc echo include "%BCC_DIR%\include\kos_start.inc">> kos_make.inc echo include "%BCC_DIR%\include\kos_func.inc">> kos_make.inc echo include "%BCC_DIR%\include\kos_heap.inc">> kos_make.inc diff --git a/programs/bcc32/include/kolibri.h b/programs/bcc32/include/kolibri.h index 2db579e992..17dc794dd7 100644 --- a/programs/bcc32/include/kolibri.h +++ b/programs/bcc32/include/kolibri.h @@ -8,7 +8,7 @@ namespace Kolibri // All kolibri functions, types and data are nested in the (Kolibri) namespace. { const char *DebugPrefix = "User program: "; - char CommandLine[257]; + char CommandLine[4096]; struct TWindowData // Data for drawing a window. { @@ -135,6 +135,7 @@ namespace Kolibri // All kolibri functions, types and data are nested in the ( //_ of the stack if (stack_end) is zero or (stack_size) is not zero, in this case stack //_ will be deleted automaticaly from dynamic memory at the finish of the thread. void DrawText(short x, short y, int color, const char* string); + void PutImage(unsigned char* img_data, long img_l, long img_t, long img_w, long img_h); void SetWindowCaption(const char* caption); } diff --git a/programs/bcc32/include/kos_func.inc b/programs/bcc32/include/kos_func.inc index 07124ad8b0..54c189601b 100644 --- a/programs/bcc32/include/kos_func.inc +++ b/programs/bcc32/include/kos_func.inc @@ -77,16 +77,13 @@ proc @Kolibri@Main$qv mov ebx,esp mov ecx,-1 int 0x40 - mov ebx,[esp+26] - mov edx,[esp+30] + mov ebx,[esp+process_information.used_memory] + mov edx,[esp+process_information.PID] lea eax,[ebx-0x20] add esp,1024 cmp esp,eax cmova esp,eax and esp,not 3 -if defined @Kolibri@CommandLine - mov byte [@Kolibri@CommandLine+256], 0 -end if xor eax,eax cld mov edi,@Kolibri@_ThreadTable @@ -173,10 +170,10 @@ end if mov ebx,esp mov ecx,-1 int 0x40 - mov eax,[esp+34] - mov ebx,[esp+38] - mov ecx,[esp+42] - mov edx,[esp+46] + mov eax,[esp+process_information.box.left] + mov ebx,[esp+process_information.box.top] + mov ecx,[esp+process_information.box.width] + mov edx,[esp+process_information.box.height] add esp,1024 cmp ecx,[esp+KOLIBRI_THREAD_DATA_LAST_SX*4] jnz .main_size @@ -332,15 +329,6 @@ end if ret endp -macro call func -{ - if func eq __chkstk - sub esp,eax - else - call func - end if -} - proc @Kolibri@Redraw$qippv push ebp mov ebp,[esp+12] @@ -379,7 +367,7 @@ proc @Kolibri@Redraw$qippv add ecx,5-1 mov edx,[ebp+KOLIBRI_THREAD_DATA_C_WINDOW*4] mov edi,[ebp+KOLIBRI_THREAD_DATA_TITLE*4] - xor eax,eax + xor eax,eax ;SF_CREATE_WINDOW int 0x40 .redraw_picture: call @@KolibriOnPaint$qv @@ -420,13 +408,13 @@ proc @Kolibri@ExitProcess$qv mov ecx,-1 int 0x40 mov esi,eax - mov edi,[esp+30] + mov edi,[esp+process_information.PID] .exit_process_loop: mov eax,SF_THREAD_INFO mov ebx,esp mov ecx,esi int 0x40 - mov eax,[esp+30] + mov eax,[esp+process_information.PID] cmp eax,edi jz .exit_process_continue mov ebx,eax @@ -476,16 +464,16 @@ end if jmp .exit_process_wait_loop endp -proc @Kolibri@ExitThread$qppv,@Kolibri@ThreadMain$qpvt1 +proc @Kolibri@ExitThread$qppv mov esp,[esp+4] - jmp Kolibri_main_end + jmp @Kolibri@ThreadMain$qpvt1.main_end endp -proc @Kolibri@ReturnMessageLoop$qppv,@Kolibri@ThreadMain$qpvt1 +proc @Kolibri@ReturnMessageLoop$qppv mov esp,[esp+4] bt dword [esp+KOLIBRI_THREAD_DATA_FLAG*4],30 - jc Kolibri_main_end - jmp Kolibri_main_cycle + jc @Kolibri@ThreadMain$qpvt1.main_end + jmp @Kolibri@ThreadMain$qpvt1.main_cycle endp proc @Kolibri@Delay$qui uses ebx @@ -598,6 +586,17 @@ proc @Kolibri@DrawText$qssipxc uses ebx ret endp +proc @Kolibri@PutImage$qpucllll uses ebx + mov eax,SF_PUT_IMAGE + mov ebx,[esp+8] + mov ecx,[esp+20-2] + mov cx,[esp+24] + mov edx,[esp+12-2] + mov dx,[esp+16] + int 0x40 + ret +endp + proc @Kolibri@SetWindowCaption$qpxc uses ebx mov eax,SF_SET_CAPTION mov ebx,2 @@ -621,7 +620,7 @@ proc @Kolibri@GetProcessInfo$qpuipct1t1piui uses ebx esi edi .get_proc_info_no_usecpu: or edi,[1024+12+8+esp] jz .get_proc_info_no_name - lea esi,[esp+10] + lea esi,[esp+process_information.process_name] cld movsd movsd @@ -631,19 +630,19 @@ proc @Kolibri@GetProcessInfo$qpuipct1t1piui uses ebx esi edi .get_proc_info_no_name: or edi,[1024+12+12+esp] jz .get_proc_info_no_mem - mov ecx,[esp+26] + mov ecx,[esp+process_information.used_memory] mov [edi],ecx xor edi,edi .get_proc_info_no_mem: or edi,[1024+12+16+esp] jz .get_proc_info_no_pid - mov ecx,[esp+30] + mov ecx,[esp+process_information.PID] mov [edi],ecx xor edi,edi .get_proc_info_no_pid: or edi,[1024+12+20+esp] jz .get_proc_info_no_rect - lea esi,[esp+34] + lea esi,[esp+process_information.box] cld movsd movsd diff --git a/programs/bcc32/include/kos_start.inc b/programs/bcc32/include/kos_start.inc index 1051e0d11d..da68806c78 100644 --- a/programs/bcc32/include/kos_start.inc +++ b/programs/bcc32/include/kos_start.inc @@ -6,10 +6,22 @@ org 0 dd I_END dd U_END+STACKSIZE+HEAPSIZE dd U_END+STACKSIZE - dd @Kolibri@CommandLine,0 +if defined @Kolibri@CommandLine + dd @Kolibri@CommandLine +else + dd 0 +end if +if defined @Kolibri@CurrentDirectoryPath + dd @Kolibri@CurrentDirectoryPath +else + dd 0 +end if include "..\..\..\KOSfuncs.inc" include "..\..\..\proc32.inc" +include "..\..\..\macros.inc" +include "..\..\..\dll.inc" +include "..\..\..\load_lib.mac" ptr equ offset equ diff --git a/programs/bcc32/include/l_libimg.h b/programs/bcc32/include/l_libimg.h new file mode 100644 index 0000000000..ce17f33689 --- /dev/null +++ b/programs/bcc32/include/l_libimg.h @@ -0,0 +1,53 @@ +#ifndef __L_LIBIMG_H_INCLUDED_ +#define __L_LIBIMG_H_INCLUDED_ +// +// libimg.obj +// + +struct Image{ + long Checksum; // ((Width ROL 16) OR Height) XOR Data[0] ; ignored so far + long Width; + long Height; + long Next; + long Previous; + long Type; // one of Image.bppN + long Data; + long Palette; // used iff Type eq Image.bpp1, Image.bpp2, Image.bpp4 or Image.bpp8i + long Extended; + long Flags; // bitfield + long Delay; // used iff Image.IsAnimated is set in Flags +}; + +// +// libimg - import table +// +void (__stdcall* import_libimg)() = (void (__stdcall*)())&"lib_init"; +//"img_is_img"; +//"img_info"; +//"img_from_file"; +//"img_to_file"; +//"img_from_rgb"; +//"img_to_rgb"; +void (__stdcall* img_to_rgb2)(Image* img, unsigned char* out) = (void (__stdcall*)(Image*, unsigned char*))&"img_to_rgb2"; +//"img_encode"; +Image* (__stdcall* img_decode)(unsigned char* data, long length, long options) = (Image* (__stdcall*)(unsigned char*, long, long))&"img_decode"; +Image* (__stdcall* img_create)(long width, long height, long type) = (Image* (__stdcall*)(long, long, long))&"img_create"; +bool (__stdcall* img_destroy)(Image* img) = (bool (__stdcall*)(Image*))&"img_destroy"; +//"img_destroy_layer"; +//"img_count"; +//"img_lock_bits"; +//"img_unlock_bits"; +//"img_flip"; +//"img_flip_layer"; +//"img_rotate"; +//"img_rotate_layer"; +//"img_draw"; +//"img_scale"; +//"img_get_scaled_size"; +Image* (__stdcall* img_convert)(Image* src, Image* dst, long dst_type, long flags, long param) = (Image* (__stdcall*)(Image*, Image*, long, long, long))&"img_convert"; +//"img_formats_table"; +asm{ + dd 0,0 +} + +#endif \ No newline at end of file diff --git a/programs/bcc32/include/load_lib.h b/programs/bcc32/include/load_lib.h new file mode 100644 index 0000000000..e60106c4f0 --- /dev/null +++ b/programs/bcc32/include/load_lib.h @@ -0,0 +1,18 @@ +#ifndef __LOAD_LIB_H_LINCLUDED_ +#define __LOAD_LIB_H_INCLUDED_ + +// macros '@use_library' and 'load_library' defined in file 'load_lib.mac' + +asm{ + @use_library mem.Alloc,mem.Free,mem.ReAlloc,dll.Load +} + +bool LoadLibrary(const char* lib_name, char* lib_path, const char* system_path, void* myimport) +{ + asm{ + load_library [ebp+8], [ebp+12], [ebp+16], [ebp+20] + } + return true; +} + +#endif \ No newline at end of file diff --git a/programs/demos/free3d/trunk/free3d.asm b/programs/demos/free3d/trunk/free3d.asm index ec3efdc94f..02a51840ba 100644 --- a/programs/demos/free3d/trunk/free3d.asm +++ b/programs/demos/free3d/trunk/free3d.asm @@ -50,7 +50,8 @@ org 0x0 ;--------------------------------------------------------------------- include '../../../macros.inc' ;include 'macros.inc' -include '../../../develop/libraries/box_lib/load_lib.mac' +include '../../../KOSfuncs.inc' +include '../../../load_lib.mac' ;include 'load_lib.mac' @use_library ;--------------------------------------------------------------------- @@ -1233,28 +1234,18 @@ icons_file_name db 'texture_24b.png',0 ;--------------------------------------------------------------------- plugins_directory db 0 -system_dir_Boxlib db '/sys/lib/box_lib.obj',0 +;system_dir_Boxlib db '/sys/lib/box_lib.obj',0 system_dir_CnvPNG db '/sys/lib/cnv_png.obj',0 -system_dir_Sort db '/sys/lib/sort.obj',0 +;system_dir_Sort db '/sys/lib/sort.obj',0 system_dir_UNPACK db '/sys/lib/archiver.obj',0 -ihead_f_i: -ihead_f_l db 'System error',0 - -er_message_found_lib1 db 'cnv_png.obj - Not found!',0 -er_message_import1 db 'cnv_png.obj - Wrong import!',0 - -err_message_found_lib2 db 'archiver.obj - Not found!',0 -err_message_import2 db 'archiver.obj - Wrong import!',0 - - align 4 l_libs_start: -library01 l_libs system_dir_CnvPNG+9,path,file_name,system_dir_CnvPNG,\ -er_message_found_lib1,ihead_f_l,cnv_png_import,er_message_import1,ihead_f_i,plugins_directory +library01 l_libs system_dir_CnvPNG+9,file_name,system_dir_CnvPNG,\ +cnv_png_import,plugins_directory -library02 l_libs system_dir_UNPACK+9,path,file_name,system_dir_UNPACK,\ -err_message_found_lib2,ihead_f_l,UNPACK_import,err_message_import2,ihead_f_i,plugins_directory +library02 l_libs system_dir_UNPACK+9,file_name,system_dir_UNPACK,\ +UNPACK_import,plugins_directory end_l_libs: ;--------------------------------------------------------------------- diff --git a/programs/demos/use_mb/use_mb.asm b/programs/demos/use_mb/use_mb.asm index 8bf88d4c8e..966156ec45 100644 --- a/programs/demos/use_mb/use_mb.asm +++ b/programs/demos/use_mb/use_mb.asm @@ -2,35 +2,27 @@ ;и другим программистам, а также ;Теплову Алексею ( www.lrz.land.ru) use32 - org 0x0 + org 0 db 'MENUET01' ;идентиф. исполняемого файла всегда 8 байт - dd 0x1 - dd start - dd i_end ; размер приложения - dd mem - dd stacktop - dd 0x0 ;library_path - dd cur_dir_path + dd 0,start,i_end,mem,stacktop,0,cur_dir_path +include '../../KOSfuncs.inc' include '../../macros.inc' -include '../../develop/libraries/box_lib/load_lib.mac' +include '../../proc32.inc' +include '../../load_lib.mac' include 'lang.inc' @use_library align 4 start: + mcall SF_SET_EVENTS_MASK,0x25 ;маска ожидаемых событий - mov eax,40 - mov ebx,0x25 ;маска ожидаемых событий - mcall - - sys_load_library msgbox_name, cur_dir_path, library_path, system_path, \ - err_message_found_lib, head_f_l, msgbox_lib_import, err_message_import, head_f_i + sys_load_library msgbox_name, library_path, system_path, msgbox_lib_import red_win: - mcall 12,1 + mcall SF_REDRAW,SSF_BEGIN_DRAW xor eax,eax mov ebx,50*65536+200 @@ -40,7 +32,7 @@ red_win: mov edi,hed mcall - mov eax,8 ;кнопка + mov eax,SF_DEFINE_BUTTON mov ebx,10*65536+30 mov ecx,110*65536+20 mov edx,7 @@ -71,28 +63,28 @@ red_win: mov ebx,50*65536+115 mov ecx,0x4000d0 or ecx,0x80000000 - mov edx,txt140 + mov edx,txt5 mcall mov ebx,50*65536+90 - mov edx,txt139 + mov edx,txt4 mcall mov ebx,50*65536+65 - mov edx,txt138 + mov edx,txt3 mcall mov ebx,50*65536+40 - mov edx,txt137 + mov edx,txt2 mcall mov ebx,50*65536+15 - mov edx,txt136 + mov edx,txt1 mcall push eax ebx ecx edx esi ;line numbers - mov eax,47 + mov eax,SF_DRAW_NUMBER mov esi,0xd00000 mov ebx,0x10000 ;format @@ -122,11 +114,11 @@ red_win: pop esi edx ecx ebx eax call draw_square - mcall 12,2 + mcall SF_REDRAW,SSF_END_DRAW +align 4 still: - mov eax,10 - mcall + mcall SF_WAIT_EVENT cmp al,1 ;изм. положение окна jz red_win @@ -135,7 +127,7 @@ still: jmp still button: - mcall 17 ;получить код нажатой кнопки + mcall SF_GET_BUTTON cmp ah,3 jz but_1 @@ -151,64 +143,46 @@ button: cmp ah,1 jne still .exit: - mcall -1 ;выход из программы + mcall SF_TERMINATE_PROCESS but_1: - push thread - push msgbox_1 - call [mb_create] + stdcall [mb_create],msgbox_1,thread jmp still but_2: - push thread - push msgbox_2 - call [mb_create] - ;mov eax,5 - ;mov ebx,50 - ;int 0x40 - push msgbox_2_funct - call [mb_setfunctions] + stdcall [mb_create],msgbox_2,thread + stdcall [mb_setfunctions],msgbox_2_funct jmp still but_3: - push thread - push msgbox_3 - call [mb_create] + stdcall [mb_create],msgbox_3,thread jmp still but_4: - push thread - push msgbox_4 - call [mb_create] + stdcall [mb_create],msgbox_4,thread jmp still but_5: - push thread - push msgbox_5 - call [mb_create] - - mcall 5,100 ;stop program - - push msgbox_5_2 - call [mb_reinit] - + stdcall [mb_create],msgbox_5,thread + mcall SF_SLEEP,100 ;stop program + stdcall [mb_reinit],msgbox_5_2 jmp still if lang eq ru - txt136 db 'простое',0 - txt137 db '3 кнопки',0 - txt138 db '3 строки',0 - txt139 db 'большое',0 - txt140 db 'mb_reinit',0 + txt1 db 'простое',0 + txt2 db '3 кнопки',0 + txt3 db '3 строки',0 + txt4 db 'большое',0 + txt5 db 'mb_reinit',0 hed db 'Пример использования MsgBox',0 else - txt136 db 'Simple',0 - txt137 db '3 buttons',0 - txt138 db '3 lines',0 - txt139 db 'Big',0 - txt140 db 'mb_reinit',0 + txt1 db 'Simple',0 + txt2 db '3 buttons',0 + txt3 db '3 lines',0 + txt4 db 'Big',0 + txt5 db 'mb_reinit',0 hed db 'MsgBox usage example',0 -end if +end if ;sc system_colors @@ -240,20 +214,18 @@ else end if db 0 msgbox_2_funct: - dd 0 - dd 0 - dd fun_show_help + dd 0,0,fun_show_help msgbox_3: dw 0 db 'MBox 3 lines',0 ;+2 = +MB_TEXT_OFFSET if lang eq ru db 'Строка 1',13,'Строка 2',13,'Строка 3',0 - db '2009 г.',0 ;button1 + db '2020 г.',0 ;button1 else db 'Line 1',13,'Line 2',13,'Line 3',0 - db 'Year 2009',0 ;button1 -end if + db 'Year 2020',0 ;button1 +end if db 0 msgbox_4: dw 0 @@ -282,21 +254,9 @@ end if db ' @......@....@..@....@.........@',13 db ' @@@@@@@@@@@@@@@@@@@@@@@@@@@@@',0 if lang eq ru - db 'Пн',0 - db 'Вт',0 - db 'Ср',0 - db 'Чт',0 - db 'Пт',0 - db 'Сб',0 - db 'Воскресение',0 + db 'Пн',0,'Вт',0,'Ср',0,'Чт',0,'Пт',0,'Сб',0,'Воскресение',0 else - db 'Sun',0 - db 'Mon',0 - db 'Tue',0 - db 'Wed',0 - db 'Thu',0 - db 'Fri',0 - db 'Sat',0 + db 'Sun',0,'Mon',0,'Tue',0,'Wed',0,'Thu',0,'Fri',0,'Sat',0 end if db 0 msgbox_5: @@ -310,7 +270,7 @@ else db 'Message',0 ;+2 = +MB_TEXT_OFFSET db 'Running process ...',0 db 'Stop',0 - db 'Abort',0 + db 'Terminate',0 end if db 0 msgbox_5_2: @@ -339,38 +299,20 @@ msgbox_lib_import: ;-------------------------------------------------- system_path db '/sys/lib/' msgbox_name db 'msgbox.obj',0 -err_message_found_lib db 'Sorry I cannot load library msgbox.obj',0 -head_f_i: -head_f_l db 'System error',0 -err_message_import db 'Error on load import library msgbox.obj',0 ;-------------------------------------------------- draw_square: cmp byte[sh_help],0 je @f push eax ebx ecx edx - mov eax,13 ;рисование прямоугольника - mov ebx,105*65536+70 - mov ecx,15*65536+50 - mov edx,0x8080ff - int 0x40 + mcall SF_DRAW_RECT, 105*65536+70, 15*65536+50, 0x8080ff + mcall SF_DRAW_TEXT, 110*65536+25, 0xffffff, txt_help - mov eax,4 ;рисование текста - mov ebx,110*65536+25 - mov ecx,0xffffff - mov edx,txt_help - mov esi,9 - mcall - - mov eax,47 mov esi,0xffff mov ebx,0x10000 ;format - xor ecx,ecx - mov cl,byte[sh_help] - mov dx,150 - shl edx,16 - mov dx,40 - int 0x40 + movzx ecx,byte[sh_help] + mov edx,(150 shl 16)+40 + mcall SF_DRAW_NUMBER pop edx ecx ebx eax @@: @@ -390,6 +332,7 @@ else txt_help db 'Help...' end if +align 16 i_end: ;конец кода rb 1024 thread: diff --git a/programs/develop/examples/example3/trunk/example3.asm b/programs/develop/examples/example3/trunk/example3.asm index 4c410df20c..d4491f9345 100644 --- a/programs/develop/examples/example3/trunk/example3.asm +++ b/programs/develop/examples/example3/trunk/example3.asm @@ -16,14 +16,14 @@ include 'lang.inc' include '../../../../macros.inc' include '../../../../proc32.inc' include '../../../../KOSfuncs.inc' -include '../../../../develop/libraries/box_lib/load_lib.mac' +include '../../../../load_lib.mac' include '../../../../dll.inc' KMENUITEM_NORMAL equ 0 KMENUITEM_SUBMENU equ 1 KMENUITEM_SEPARATOR equ 2 -@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load +@use_library mem.Alloc,mem.Free,mem.ReAlloc,dll.Load start: ; start of execution @@ -264,22 +264,9 @@ align 4 system_dir_0 db '/sys/lib/' lib_name_0 db 'kmenu.obj',0 -if lang eq ru - head_f_i: - head_f_l db 'Системная ошибка',0 - err_msg_found_lib_0 db 'Не найдена библиотека ',39,'kmenu.obj',39,0 - err_msg_import_0 db 'Ошибка при импорте библиотеки ',39,'kmenu',39,0 -else - head_f_i: - head_f_l db 'System error',0 - err_msg_found_lib_0 db 'Sorry I cannot found library ',39,'kmenu.obj',39,0 - err_msg_import_0 db 'Error on load import library ',39,'kmenu.obj',39,0 -end if - align 4 l_libs_start: - lib_0 l_libs lib_name_0, sys_path, file_name, system_dir_0,\ - err_msg_found_lib_0, head_f_l, import_libkmenu,err_msg_import_0,head_f_i + lib_0 l_libs lib_name_0, file_name, system_dir_0, import_libkmenu l_libs_end: align 4 diff --git a/programs/develop/fasm/1.71/fasm.asm b/programs/develop/fasm/1.71/fasm.asm index a830f6f80b..ee1c6ffd36 100644 --- a/programs/develop/fasm/1.71/fasm.asm +++ b/programs/develop/fasm/1.71/fasm.asm @@ -1,7 +1,7 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; ;; flat assembler source ;; -;; Copyright (c) 1999-2012, Tomasz Grysztar ;; +;; Copyright (c) 1999-2020, Tomasz Grysztar ;; ;; All rights reserved. ;; ;; ;; ;; KolibriOS port by KolibriOS Team ;; @@ -42,7 +42,8 @@ purge add,sub ; macros.inc does incorrect substitution include 'fasm.inc' include '../../../develop/libraries/box_lib/trunk/box_lib.mac' -include '../../../develop/libraries/box_lib/load_lib.mac' +include '../../../KOSfuncs.inc' +include '../../../load_lib.mac' @use_library center fix true @@ -476,12 +477,6 @@ text: s_dbgdescr db 'Создавать отладочную информацию',0 - err_message_found_lib0 db 'Не найдена библиотека box_lib.obj',0 ;строка, которая будет в сформированном окне, если библиотека не будет найдена - err_message_import0 db 'Ошибка при импорте библиотеки box_lib.obj',0 - err_message_found_lib1 db 'Не найдена библиотека proc_lib.obj',0 - err_message_import1 db 'Ошибка при импорте библиотеки proc_lib.obj',0 - head_f_i: - head_f_l db 'Системная ошибка',0 ;заголовок окна, при возникновении ошибки else text: db ' InFile:' @@ -496,13 +491,6 @@ text: s_dbgdescr db 'Generate debug information',0 - err_message_found_lib0 db 'Sorry I cannot found library box_lib.obj',0 - err_message_import0 db 'Error on load import library box_lib.obj',0 - err_message_found_lib1 db 'Sorry I cannot found library proc_lib.obj',0 - err_message_import1 db 'Error on load import library proc_lib.obj',0 - - head_f_i: - head_f_l db 'System error',0 ;заголовок окна, при возникновении ошибки end if system_dir0 db '/sys/lib/' @@ -547,8 +535,8 @@ aOpenDialog_Start db 'OpenDialog_start',0 ;--------------------------------------------------------------------- ;library structures l_libs_start: - lib0 l_libs lib0_name, cur_dir_path, library_path, system_dir0, err_message_found_lib0, head_f_l, import_box_lib, err_message_import0, head_f_i - lib1 l_libs lib1_name, cur_dir_path, library_path, system_dir1, err_message_found_lib1, head_f_l, import_proc_lib,err_message_import1, head_f_i + lib0 l_libs lib0_name, library_path, system_dir0, import_box_lib + lib1 l_libs lib1_name, library_path, system_dir1, import_proc_lib load_lib_end: edit1 edit_box 153, 72, 3, 0xffffff, 0xA4C4E4, 0x80ff, 0, 0x10000000,(outfile-infile-1), infile, mouse_dd, 0, 11,11 diff --git a/programs/develop/h2d2b/trunk/h2d2b.asm b/programs/develop/h2d2b/trunk/h2d2b.asm index 37daa11211..8b06a978e9 100644 --- a/programs/develop/h2d2b/trunk/h2d2b.asm +++ b/programs/develop/h2d2b/trunk/h2d2b.asm @@ -19,7 +19,8 @@ use32 include '../../../proc32.inc' include '../../../macros.inc' ; макросы облегчают жизнь ассемблерщиков! -include '../../../develop/libraries/box_lib/load_lib.mac' +include '../../../KOSfuncs.inc' +include '../../../load_lib.mac' include '../../../develop/libraries/box_lib/trunk/box_lib.mac' include 'lang.inc' @@ -289,12 +290,9 @@ editboxes_end: system_dir_0 db '/sys/lib/' lib_name_0 db 'box_lib.obj',0 -err_msg_found_lib_0 db 'Не найдена библиотека ',39,'box_lib.obj',39,0 -err_msg_import_0 db 'Ошибка при импорте библиотеки ',39,'box_lib',39,0 l_libs_start: - lib_0 l_libs lib_name_0, sys_path, library_path, system_dir_0,\ - err_msg_found_lib_0,head_f_l,import_box_lib,err_msg_import_0,head_f_i + lib_0 l_libs lib_name_0, library_path, system_dir_0,import_box_lib l_libs_end: align 4 @@ -312,8 +310,8 @@ dd 0,0 ;sz_edit_box_set_text db 'edit_box_set_text',0 i_end: - sys_colors system_colors - rb 0x400 ;stack - sys_path rb 4096 - library_path rb 4096 -e_end: ; метка конца программы + sys_colors system_colors + sys_path rb 4096 + library_path rb 4096 + rb 0x400 ; stack +e_end: ; метка конца программы diff --git a/programs/develop/heed/trunk/heed.asm b/programs/develop/heed/trunk/heed.asm index ca3b18d0f5..3d133696de 100644 --- a/programs/develop/heed/trunk/heed.asm +++ b/programs/develop/heed/trunk/heed.asm @@ -60,10 +60,11 @@ use32 _title equ 'HeEd 0.16', 0 include 'lang.inc' +include '../../../KOSfuncs.inc' include '../../../config.inc' ;for nightbuild include '../../../macros.inc' include '../../libraries/box_lib/trunk/box_lib.mac' -include '../../libraries/box_lib/load_lib.mac' +include '../../../load_lib.mac' @use_library ;-------------------------------------------------------------------- @@ -3289,23 +3290,9 @@ help_but_text = menu_text_area_3 ;db 'Help',0 head_f_i: if lang eq ru - head_f_l db 'ошибка',0 - err_message_found_lib1 db 'box_lib.obj - Не найден!',0 - err_message_found_lib2 db 'proc_lib.obj - Не найден!',0 - - err_message_import1 db 'box_lib.obj - Ошибка импорта!',0 - err_message_import2 db 'proc_lib.obj - Ошибка импорта!',0 - error_open_file_string db "Файл не найден!",0 error_save_file_string db "Файл не сохранен!",0 else - head_f_l db 'error',0 - err_message_found_lib1 db 'box_lib.obj - Not found!',0 - err_message_found_lib2 db 'proc_lib.obj - Not found!',0 - - err_message_import1 db 'box_lib.obj - Wrong import!',0 - err_message_import2 db 'proc_lib.obj - Wrong import!',0 - error_open_file_string db "Isn't found!",0 error_save_file_string db "Isn't saved!",0 end if @@ -3397,14 +3384,10 @@ koi8_r file 'koi8-r-8x16' title db _title ;--------------------------------------------------------------------- l_libs_start: -; load_library boxlib_name,cur_dir_path,buf_cmd_lin,system_path,\ -; err_message_found_lib,head_f_l,myimport,err_message_import,head_f_i -library01 l_libs system_dir_Boxlib+9, cur_dir_path, buf_cmd_lin, system_dir_Boxlib, \ -err_message_found_lib1, head_f_l, Box_lib_import, err_message_import1, head_f_i +library01 l_libs system_dir_Boxlib+9, buf_cmd_lin, system_dir_Boxlib, Box_lib_import -library02 l_libs system_dir_ProcLib+9, cur_dir_path, buf_cmd_lin, system_dir_ProcLib, \ -err_message_found_lib2, head_f_l, ProcLib_import, err_message_import2, head_f_i +library02 l_libs system_dir_ProcLib+9, buf_cmd_lin, system_dir_ProcLib, ProcLib_import end_l_libs: ;--------------------------------------------------------------------- diff --git a/programs/develop/kol_f_edit/kol_f_edit.asm b/programs/develop/kol_f_edit/kol_f_edit.asm index 866042abfd..bbdafdd74a 100644 --- a/programs/develop/kol_f_edit/kol_f_edit.asm +++ b/programs/develop/kol_f_edit/kol_f_edit.asm @@ -3,9 +3,10 @@ use32 db 'MENUET01' dd 1,start,i_end,mem,stacktop,buf_cmd_lin,sys_path +include '../../KOSfuncs.inc' include '../../macros.inc' include '../../proc32.inc' -include '../../develop/libraries/box_lib/load_lib.mac' +include '../../load_lib.mac' include '../../develop/libraries/box_lib/trunk/box_lib.mac' include '../../dll.inc' include '../../system/skincfg/trunk/kglobals.inc' @@ -13,7 +14,7 @@ include '../../system/skincfg/trunk/unpacker.inc' include 'strlen.inc' include 'obj_codes.inc' -@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc, dll.Load +@use_library mem.Alloc,mem.Free,mem.ReAlloc, dll.Load hed db 'kol_f_edit 29.09.20',0 @@ -88,12 +89,12 @@ macro load_image_file path,buf,size { ; cmp ebx,0xffffffff je @f ;определяем вид изображения и переводим его во временный буфер image_data - stdcall dword[img_decode], dword[buf],ebx,0 - mov dword[image_data],eax + stdcall [img_decode], [buf],ebx,0 + mov [image_data],eax ;преобразуем изображение к формату rgb - stdcall dword[img_to_rgb2], dword[image_data],dword[buf] + stdcall [img_to_rgb2], [image_data],[buf] ;удаляем временный буфер image_data - stdcall dword[img_destroy], dword[image_data] + stdcall [img_destroy], [image_data] @@: } @@ -205,8 +206,8 @@ start: mcall 48,3,sc,sizeof.system_colors mcall 40,0x27 - stdcall dword[tl_data_init], tree1 - stdcall dword[tl_data_init], tree2 + stdcall [tl_data_init], tree1 + stdcall [tl_data_init], tree2 copy_path fn_icon,sys_path,file_name,0 ;формируем полный путь к файлу изображения, подразумеваем что он в одной папке с программой mov [run_file_70.Function], 0 @@ -478,15 +479,15 @@ pushad mcall 4,10*65536+35,0x80ff0000,txtErrOpen @@: - stdcall [edit_box_draw], dword edit1 - stdcall [edit_box_draw], dword edit_sav + stdcall [edit_box_draw], edit1 + stdcall [edit_box_draw], edit_sav mov dword[w_scr_t1.all_redraw],1 - ;stdcall [scrollbar_ver_draw],dword w_scr_t1 - stdcall [tl_draw],dword tree1 + ;stdcall [scrollbar_ver_draw], w_scr_t1 + stdcall [tl_draw], tree1 mov dword[w_scr_t2.all_redraw],1 - ;stdcall [scrollbar_ver_draw],dword w_scr_t2 - stdcall [tl_draw],dword tree2 + ;stdcall [scrollbar_ver_draw], w_scr_t2 + stdcall [tl_draw], tree2 cmp byte[show_mode],0 ;условие видимости окна конструктора jne @f @@ -502,10 +503,10 @@ popad align 4 mouse: - stdcall [edit_box_mouse], dword edit1 - stdcall [edit_box_mouse], dword edit_sav - stdcall [tl_mouse], dword tree1 - stdcall [tl_mouse], dword tree2 + stdcall [edit_box_mouse], edit1 + stdcall [edit_box_mouse], edit_sav + stdcall [tl_mouse], tree1 + stdcall [tl_mouse], tree2 cmp byte[show_mode],1 ;условие видимости текстового окна jne @f stdcall [ted_mouse], tedit0 @@ -516,10 +517,10 @@ mouse: align 4 key: mcall 2 - stdcall [edit_box_key], dword edit1 - stdcall [edit_box_key], dword edit_sav - stdcall [tl_key], dword tree1 - stdcall [tl_key], dword tree2 + stdcall [edit_box_key], edit1 + stdcall [edit_box_key], edit_sav + stdcall [tl_key], tree1 + stdcall [tl_key], tree2 jmp still @@ -1328,39 +1329,6 @@ foc_obj dd 0 ; obj_count_txt_props dd 0 ;количество используемых текстовых свойств obj_m_win dd 0 ;структура главного окна -; -if 1 ;lang eq ru - - err_message_found_lib0 db 'Не найдена библиотека box_lib.obj',39,'" -tE',0 - err_message_import0 db 'Ошибка при импорте библиотеки box_lib.obj',39,'" -tW',0 - err_message_found_lib1 db 'Не найдена библиотека proc_lib.obj',39,'" -tE',0 - err_message_import1 db 'Ошибка при импорте библиотеки proc_lib.obj',39,'" -tW',0 - err_message_found_lib2 db 'Не удалось найти библиотеку buf2d.obj',39,'" -tE',0 - err_message_import2 db 'Ошибка при импорте библиотеки buf2d.obj',39,'" -tW',0 - err_message_found_lib3 db 'Не удалось найти библиотеку libimg.obj',39,'" -tE',0 - err_message_import3 db 'Ошибка при импорте библиотеки libimg.obj',39,'" -tW',0 - err_message_found_lib4 db 'Не удалось найти библиотеку msgbox.obj',39,'" -tE',0 - err_message_import4 db 'Ошибка при импорте библиотеки msgbox.obj',39,'" -tW',0 - - head_f_i: - head_f_l db '"Системная ошибка',0 ;заголовок окна, при возникновении ошибки -else - - err_message_found_lib0 db 'Sorry I cannot found library box_lib.obj',39,'" -tE',0 - err_message_import0 db 'Error on load import library box_lib.obj',39,'" -tW',0 - err_message_found_lib1 db 'Sorry I cannot found library proc_lib.obj',39,'" -tE',0 - err_message_import1 db 'Error on load import library proc_lib.obj',39,'" -tW',0 - err_message_found_lib2 db 'Sorry I cannot found library buf2d.obj',39,'" -tE',0 - err_message_import2 db 'Error on load import library buf2d.obj',39,'" -tW',0 - err_message_found_lib3 db 'Sorry I cannot found library libimg.obj',39,'" -tE',0 - err_message_import3 db 'Error on load import library libimg.obj',39,'" -tW',0 - err_message_found_lib4 db 'Sorry I cannot found library msgbox.obj',39,'" -tE',0 - err_message_import4 db 'Error on load import library msgbox.obj',39,'" -tW',0 - - head_f_i: - head_f_l db '"System error',0 ;заголовок окна, при возникновении ошибки -end if - system_dir0 db '/sys/lib/' lib0_name db 'box_lib.obj',0 @@ -1624,11 +1592,11 @@ dd 0,0 ;library structures l_libs_start: - lib0 l_libs lib0_name, sys_path, library_path, system_dir0, err_message_found_lib0, head_f_l, import_box_lib, err_message_import0, head_f_i - lib1 l_libs lib1_name, sys_path, library_path, system_dir1, err_message_found_lib1, head_f_l, import_proc_lib,err_message_import1, head_f_i - lib2 l_libs lib2_name, sys_path, library_path, system_dir2, err_message_found_lib2, head_f_l, import_buf2d_lib, err_message_import2, head_f_i - lib3 l_libs lib3_name, sys_path, library_path, system_dir3, err_message_found_lib3, head_f_l, import_libimg, err_message_import3, head_f_i - lib4 l_libs lib4_name, sys_path, library_path, system_dir4, err_message_found_lib4, head_f_l, import_msgbox_lib, err_message_import4, head_f_i + lib0 l_libs lib0_name, library_path, system_dir0, import_box_lib + lib1 l_libs lib1_name, library_path, system_dir1, import_proc_lib + lib2 l_libs lib2_name, library_path, system_dir2, import_buf2d_lib + lib3 l_libs lib3_name, library_path, system_dir3, import_libimg + lib4 l_libs lib4_name, library_path, system_dir4, import_msgbox_lib load_lib_end: diff --git a/programs/develop/libraries/buf2d/trunk/examples/e0_dr_lines.asm b/programs/develop/libraries/buf2d/trunk/examples/e0_dr_lines.asm index 27fb62fac2..ac3cb57d77 100644 --- a/programs/develop/libraries/buf2d/trunk/examples/e0_dr_lines.asm +++ b/programs/develop/libraries/buf2d/trunk/examples/e0_dr_lines.asm @@ -1,23 +1,19 @@ use32 - org 0x0 - db 'MENUET01' ;идентиф. исполняемого файла всегда 8 байт - dd 0x1 - dd start - dd i_end ;размер приложения - dd mem,stacktop - dd 0,cur_dir_path + org 0 + db 'MENUET01' + dd 1,start,i_end,mem,stacktop,0,cur_dir_path +include '../../../../../KOSfuncs.inc' include '../../../../../macros.inc' include '../../../../../proc32.inc' -include '../../../../../develop/libraries/box_lib/load_lib.mac' +include '../../../../../load_lib.mac' include '../../../../../dll.inc' -@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc, 0 ;dll.Load +@use_library mem.Alloc,mem.Free,mem.ReAlloc, 0 ;dll.Load align 4 start: - load_library vectors_name, cur_dir_path, library_path, system_path, \ - err_message_found_lib, head_f_l, import_buf2d_lib, err_message_import, head_f_i + load_library lib0_name, library_path, system_path, import_buf2d_lib cmp eax,-1 jz button.exit @@ -132,11 +128,7 @@ buf_0: ;-------------------------------------------------- system_path db '/sys/lib/' -vectors_name db 'buf2d.obj',0 -err_message_found_lib db 'Sorry I cannot load library buf2d.obj',0 -head_f_i: -head_f_l db 'System error',0 -err_message_import db 'Error on load import library buf2d.obj',0 +lib0_name db 'buf2d.obj',0 ;-------------------------------------------------- i_end: ;конец кода diff --git a/programs/develop/libraries/buf2d/trunk/examples/e1_scaling.asm b/programs/develop/libraries/buf2d/trunk/examples/e1_scaling.asm index 7d9c2beca2..ad54fcd8bd 100644 --- a/programs/develop/libraries/buf2d/trunk/examples/e1_scaling.asm +++ b/programs/develop/libraries/buf2d/trunk/examples/e1_scaling.asm @@ -1,23 +1,19 @@ use32 - org 0x0 - db 'MENUET01' ;идентиф. исполняемого файла всегда 8 байт - dd 0x1 - dd start - dd i_end ;размер приложения - dd mem,stacktop - dd 0,cur_dir_path + org 0 + db 'MENUET01' + dd 1,start,i_end,mem,stacktop,0,cur_dir_path +include '../../../../../KOSfuncs.inc' include '../../../../../macros.inc' include '../../../../../proc32.inc' -include '../../../../../develop/libraries/box_lib/load_lib.mac' include '../../../../../dll.inc' +include '../../../../../load_lib.mac' -@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc, 0 ;dll.Load +@use_library mem.Alloc,mem.Free,mem.ReAlloc, 0 ;dll.Load align 4 start: - load_library vectors_name, cur_dir_path, library_path, system_path, \ - err_message_found_lib, head_f_l, import_buf2d_lib, err_message_import, head_f_i + load_library lib0_name, library_path, system_path, import_buf2d_lib cmp eax,-1 jz button.exit @@ -164,11 +160,7 @@ buf_1: ;-------------------------------------------------- system_path db '/sys/lib/' -vectors_name db 'buf2d.obj',0 -err_message_found_lib db 'Sorry I cannot load library buf2d.obj',0 -head_f_i: -head_f_l db 'System error',0 -err_message_import db 'Error on load import library buf2d.obj',0 +lib0_name db 'buf2d.obj',0 ;-------------------------------------------------- i_end: ;конец кода diff --git a/programs/develop/libraries/buf2d/trunk/examples/e2_images.asm b/programs/develop/libraries/buf2d/trunk/examples/e2_images.asm index 58bf8ce906..cfef634911 100644 --- a/programs/develop/libraries/buf2d/trunk/examples/e2_images.asm +++ b/programs/develop/libraries/buf2d/trunk/examples/e2_images.asm @@ -1,18 +1,15 @@ use32 - org 0x0 - db 'MENUET01' ;идентиф. исполняемого файла всегда 8 байт - dd 0x1 - dd start - dd i_end ;размер приложения - dd mem,stacktop - dd 0,sys_path + org 0 + db 'MENUET01' + dd 1,start,i_end,mem,stacktop,0,cur_dir_path +include '../../../../../KOSfuncs.inc' include '../../../../../macros.inc' include '../../../../../proc32.inc' -include '../../../../../develop/libraries/box_lib/load_lib.mac' +include '../../../../../load_lib.mac' include '../../../../../dll.inc' -@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc, dll.Load +@use_library mem.Alloc,mem.Free,mem.ReAlloc, dll.Load struct FileInfoBlock Function dd ? @@ -58,12 +55,12 @@ macro load_image_file path,buf,size { ; cmp ebx,0xffffffff je @f ;определяем вид изображения и переводим его во временный буфер image_data - stdcall dword[img_decode], dword[buf],ebx,0 - mov dword[image_data],eax + stdcall [img_decode], [buf],ebx,0 + mov [image_data],eax ;преобразуем изображение к формату rgb - stdcall dword[img_to_rgb2], dword[image_data],dword[buf] + stdcall [img_to_rgb2], [image_data],[buf] ;удаляем временный буфер image_data - stdcall dword[img_destroy], dword[image_data] + stdcall [img_destroy], [image_data] @@: } @@ -146,23 +143,17 @@ draw_window: popad ret -head_f_i: -head_f_l db 'Системная ошибка',0 system_dir0 db '/sys/lib/' name_buf2d db 'buf2d.obj',0 -err_message_found_lib0 db 'Не удалось найти библиотеку buf2d.obj',0 -err_message_import0 db 'Ошибка при импорте библиотеки buf2d.obj',0 system_dir1 db '/sys/lib/' name_libimg db 'libimg.obj',0 -err_message_found_lib1 db 'Не удалось найти библиотеку libimg.obj',0 -err_message_import1 db 'Ошибка при импорте библиотеки libimg.obj',0 ;library structures l_libs_start: - lib0 l_libs name_buf2d, sys_path, file_name, system_dir0, err_message_found_lib0, head_f_l, import_buf2d_lib, err_message_import0, head_f_i - lib1 l_libs name_libimg, sys_path, file_name, system_dir1, err_message_found_lib1, head_f_l, import_libimg, err_message_import1, head_f_i + lib0 l_libs name_buf2d, file_name, system_dir0, import_buf2d_lib + lib1 l_libs name_libimg, file_name, system_dir1, import_libimg load_lib_end: align 4 diff --git a/programs/develop/libraries/buf2d/trunk/examples/e3_text.asm b/programs/develop/libraries/buf2d/trunk/examples/e3_text.asm index cbfa6fa0a7..8e8fe8ed27 100644 --- a/programs/develop/libraries/buf2d/trunk/examples/e3_text.asm +++ b/programs/develop/libraries/buf2d/trunk/examples/e3_text.asm @@ -1,18 +1,15 @@ use32 - org 0x0 - db 'MENUET01' ;идентиф. исполняемого файла всегда 8 байт - dd 0x1 - dd start - dd i_end ;размер приложения - dd mem,stacktop - dd 0,sys_path + org 0 + db 'MENUET01' + dd 1,start,i_end,mem,stacktop,0,cur_dir_path +include '../../../../../KOSfuncs.inc' include '../../../../../macros.inc' include '../../../../../proc32.inc' -include '../../../../../develop/libraries/box_lib/load_lib.mac' +include '../../../../../load_lib.mac' include '../../../../../dll.inc' -@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc, dll.Load +@use_library mem.Alloc,mem.Free,mem.ReAlloc, dll.Load struct FileInfoBlock Function dd ? @@ -56,12 +53,12 @@ macro load_image_file path,buf,size { ; cmp ebx,0xffffffff je @f ;определяем вид изображения и переводим его во временный буфер image_data - stdcall dword[img_decode], dword[buf],ebx,0 - mov dword[image_data],eax + stdcall [img_decode], [buf],ebx,0 + mov [image_data],eax ;преобразуем изображение к формату rgb - stdcall dword[img_to_rgb2], dword[image_data],dword[buf] + stdcall [img_to_rgb2], [image_data],[buf] ;удаляем временный буфер image_data - stdcall dword[img_destroy], dword[image_data] + stdcall [img_destroy], [image_data] @@: } @@ -137,23 +134,17 @@ draw_window: popad ret -head_f_i: -head_f_l db 'Системная ошибка',0 system_dir0 db '/sys/lib/' name_buf2d db 'buf2d.obj',0 -err_message_found_lib0 db 'Не удалось найти библиотеку buf2d.obj',0 -err_message_import0 db 'Ошибка при импорте библиотеки buf2d.obj',0 system_dir1 db '/sys/lib/' name_libimg db 'libimg.obj',0 -err_message_found_lib1 db 'Не удалось найти библиотеку libimg.obj',0 -err_message_import1 db 'Ошибка при импорте библиотеки libimg.obj',0 ;library structures l_libs_start: - lib0 l_libs name_buf2d, sys_path, file_name, system_dir0, err_message_found_lib0, head_f_l, import_buf2d_lib, err_message_import0, head_f_i - lib1 l_libs name_libimg, sys_path, file_name, system_dir1, err_message_found_lib1, head_f_l, import_libimg, err_message_import1, head_f_i + lib0 l_libs name_buf2d, file_name, system_dir0, import_buf2d_lib + lib1 l_libs name_libimg, file_name, system_dir1, import_libimg load_lib_end: align 4 diff --git a/programs/develop/libraries/buf2d/trunk/examples/e4_graf_ed.asm b/programs/develop/libraries/buf2d/trunk/examples/e4_graf_ed.asm index 8fee0b9ef6..d2442d26df 100644 --- a/programs/develop/libraries/buf2d/trunk/examples/e4_graf_ed.asm +++ b/programs/develop/libraries/buf2d/trunk/examples/e4_graf_ed.asm @@ -1,26 +1,22 @@ use32 - org 0x0 - db 'MENUET01' ;шфхэЄшЇ. шёяюыэ хьюую Їрщыр тёхуфр 8 срщЄ - dd 0x1 - dd start - dd i_end ;ЁрчьхЁ яЁшыюцхэш  - dd mem,stacktop - dd 0,cur_dir_path + org 0 + db 'MENUET01' + dd 1,start,i_end,mem,stacktop,0,cur_dir_path +include '../../../../../KOSfuncs.inc' include '../../../../../macros.inc' include '../../../../../proc32.inc' -include '../../../../../develop/libraries/box_lib/load_lib.mac' +include '../../../../../load_lib.mac' include '../../../../../dll.inc' -@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc, 0 ;dll.Load +@use_library mem.Alloc,mem.Free,mem.ReAlloc, 0 ;dll.Load buf2d_l equ word[edi+4] ;юЄёЄєя ёыхтр buf2d_t equ word[edi+6] ;юЄёЄєя ётхЁїє align 4 start: - load_library vectors_name, cur_dir_path, library_path, system_path, \ - err_message_found_lib, head_f_l, import_buf2d_lib, err_message_import, head_f_i + load_library lib0_name, library_path, system_path, import_buf2d_lib cmp eax,-1 jz button.exit @@ -171,11 +167,7 @@ buf_0: ;-------------------------------------------------- system_path db '/sys/lib/' -vectors_name db 'buf2d.obj',0 -err_message_found_lib db 'Sorry I cannot load library buf2d.obj',0 -head_f_i: -head_f_l db 'System error',0 -err_message_import db 'Error on load import library buf2d.obj',0 +lib0_name db 'buf2d.obj',0 ;-------------------------------------------------- i_end: ;ъюэхЎ ъюфр diff --git a/programs/develop/libraries/buf2d/trunk/examples/e5_lines_sm.asm b/programs/develop/libraries/buf2d/trunk/examples/e5_lines_sm.asm index 7de5e94675..0cbf375440 100644 --- a/programs/develop/libraries/buf2d/trunk/examples/e5_lines_sm.asm +++ b/programs/develop/libraries/buf2d/trunk/examples/e5_lines_sm.asm @@ -1,18 +1,15 @@ use32 - org 0x0 - db 'MENUET01' ;идентиф. исполняемого файла всегда 8 байт - dd 0x1 - dd start - dd i_end ;размер приложения - dd mem,stacktop - dd 0,cur_dir_path + org 0 + db 'MENUET01' + dd 1,start,i_end,mem,stacktop,0,cur_dir_path +include '../../../../../KOSfuncs.inc' include '../../../../../macros.inc' include '../../../../../proc32.inc' -include '../../../../../develop/libraries/box_lib/load_lib.mac' +include '../../../../../load_lib.mac' include '../../../../../dll.inc' -@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc, 0 ;dll.Load +@use_library mem.Alloc,mem.Free,mem.ReAlloc, 0 ;dll.Load buf2d_l equ word[edi+4] ;отступ слева buf2d_t equ word[edi+6] ;отступ сверху @@ -20,8 +17,7 @@ buf2d_color equ dword[edi+16] ;цве align 4 start: - load_library vectors_name, cur_dir_path, library_path, system_path, \ - err_message_found_lib, head_f_l, import_buf2d_lib, err_message_import, head_f_i + load_library lib0_name, library_path, system_path, import_buf2d_lib cmp eax,-1 jz button.exit @@ -165,11 +161,7 @@ buf_0: ;-------------------------------------------------- system_path db '/sys/lib/' -vectors_name db 'buf2d.obj',0 -err_message_found_lib db 'Sorry I cannot load library buf2d.obj',0 -head_f_i: -head_f_l db 'System error',0 -err_message_import db 'Error on load import library buf2d.obj',0 +lib0_name db 'buf2d.obj',0 ;-------------------------------------------------- i_end: ;конец кода diff --git a/programs/load_lib.mac b/programs/load_lib.mac index 303523fff9..c41c10a8e7 100644 --- a/programs/load_lib.mac +++ b/programs/load_lib.mac @@ -192,7 +192,7 @@ macro sys_load_library library_name__, library_path__, system_path__, myimport, local i_begin local i_error local i_exit - + push ebx mcall SF_SYS_MISC,SSF_LOAD_DLL,system_path__ ; load of sys directory test eax,eax jnz i_begin @@ -218,15 +218,18 @@ align 4 call l_lib_init_error_window notify_window_run [arrea_xx] ; создаем окно @notify i_exit: + pop ebx } ;--------------------------------------------------------------------- +;output: +; eax - если удачно то 0 macro load_library library_name__, library_path__, system_path__, myimport, point_dir_name__ { local i_begin local i_error local i_exit - + push ebx if point_dir_name__ eq copy_path library_name__, [32], library_path__,0 else @@ -252,6 +255,7 @@ align 4 call l_lib_init_error_window notify_window_run [arrea_xx] ; создаем окно @notify i_exit: + pop ebx ;--------------------------------------------------------------------- } @@ -441,6 +445,7 @@ pop ebx eax ; myimport - импортируемые функции ;output: ; eax - если удачно то 0 или указатель на имя функции которую не удалось загрузить +; ebx - разрушается macro import_boxlib myimport { local import_loop @@ -452,9 +457,10 @@ local import_done local exit local import_not_found ; initialize import - + push esi mov edx, eax - mov esi,myimport + mov esi, myimport + cld import_loop: lodsd ;mov eax,dword[esi] ;add esi,4 ;получаем в eax указатель на имя импортируемой функции test eax, eax @@ -465,6 +471,7 @@ import_find: test ebx, ebx jz import_not_found ;если указатель на имя функции = 0 (в библиотеке) push eax ;eax - указатель на имя экспортируемой функции (в пользовательской программе) +align 4 lp: mov cl, [eax] cmp cl, [ebx] ;сравниваем имена функций в библиотеке и в пользовательской программе @@ -512,6 +519,7 @@ import_not_found: import_done: xor eax,eax ;=0 все загрузилось удачно exit: + pop esi } ;--------------------------------------------------------------------- diff --git a/programs/other/rtfread/trunk/rtfread.asm b/programs/other/rtfread/trunk/rtfread.asm index c734d8d898..d89f754b95 100644 --- a/programs/other/rtfread/trunk/rtfread.asm +++ b/programs/other/rtfread/trunk/rtfread.asm @@ -60,7 +60,8 @@ AR_OFFSET equ 10 include '../../../config.inc' ;for nightbuild include '../../../macros.inc' ; макросы облегчают жизнь ассемблерщиков! include '../../../develop/libraries/box_lib/trunk/box_lib.mac' -include '../../../develop/libraries/box_lib/load_lib.mac' +include '../../../KOSfuncs.inc' +include '../../../load_lib.mac' @use_library @@ -749,26 +750,15 @@ skin_height dd 0x0 ;--------------------------------------------------------------------- l_libs_start: -library01 l_libs system_dir_ProcLib+9, cur_dir_path, library_path, system_dir_ProcLib, \ -err_message_found_lib2, head_f_l, ProcLib_import, err_message_import2, head_f_i +library01 l_libs system_dir_ProcLib+9, library_path, system_dir_ProcLib, ProcLib_import -library02 l_libs system_dir_Boxlib+9, cur_dir_path, library_path, system_dir_Boxlib, \ -err_message_found_lib1, head_f_l, Box_lib_import, err_message_import1, head_f_i +library02 l_libs system_dir_Boxlib+9, library_path, system_dir_Boxlib, Box_lib_import end_l_libs: ;--------------------------------------------------------------------- system_dir_ProcLib db '/sys/lib/proc_lib.obj',0 system_dir_Boxlib db '/sys/lib/box_lib.obj',0 -head_f_i: -head_f_l db 'error',0 - -err_message_found_lib1 db 'box_lib.obj - Not found!',0 -err_message_found_lib2 db 'proc_lib.obj - Not found!',0 - -err_message_import1 db 'box_lib.obj - Wrong import!',0 -err_message_import2 db 'proc_lib.obj - Wrong import!',0 - ;--------------------------------------------------------------------- align 4 ProcLib_import: