From 41838ddb4c303e31442d9013ee42fc10373a15b2 Mon Sep 17 00:00:00 2001 From: 0CodErr <0CodErr@kolibrios.org> Date: Mon, 2 Oct 2017 18:43:24 +0000 Subject: [PATCH] upload RUN sources; upload KolibriOS.lib git-svn-id: svn://kolibrios.org@7039 a494cfbc-eb01-0410-851d-a64ba20cac60 --- contrib/sdk/lib/KolibriOS.lib | Bin 0 -> 148362 bytes programs/system/RunOD/1/LScript.x | 24 + programs/system/RunOD/1/RUN.asm | 655 ++++++++++++++++++++++++++++ programs/system/RunOD/1/make.bat | 7 + programs/system/RunOD/1/make_en.bat | 2 + programs/system/RunOD/1/make_it.bat | 2 + programs/system/RunOD/1/make_ru.bat | 2 + programs/system/RunOD/1/make_sp.bat | 2 + 8 files changed, 694 insertions(+) create mode 100644 contrib/sdk/lib/KolibriOS.lib create mode 100644 programs/system/RunOD/1/LScript.x create mode 100644 programs/system/RunOD/1/RUN.asm create mode 100644 programs/system/RunOD/1/make.bat create mode 100644 programs/system/RunOD/1/make_en.bat create mode 100644 programs/system/RunOD/1/make_it.bat create mode 100644 programs/system/RunOD/1/make_ru.bat create mode 100644 programs/system/RunOD/1/make_sp.bat diff --git a/contrib/sdk/lib/KolibriOS.lib b/contrib/sdk/lib/KolibriOS.lib new file mode 100644 index 0000000000000000000000000000000000000000..d6ce5b95029c69fcf4dcc8e0be75b8dc31bf009d GIT binary patch literal 148362 zcmeIb4{%(`c_-Ebf+PrnBvwnwl(de9E6UcN)e;~960{{7B)}CZ5xWRMF4uBa&=7b_ z&JvhG4Q9xt;?1ok+b1q`myP2%j-%x2l#9#da;a3JN{1C)u3fE5=jgmDM{!*#E|p7? z|3vXQj^n#Xj&l+7`+eW*?)T>PU}m_)aIKk#>cQ*p^}P3{zpual-M#;Ph04O^pBg-v zPamUWM~_X6jvO03lFyIGrQ~NmKRPl#a!BAG9W|C%u@ z$17T>*=V{^JL=%$+rcwjqs%csAo<)0lehUK5{*7BLJ8N>1~zN+On ze#aP=-~3H2zlFYJ`R!lU^4S-RVfh?jET6}3W%-IW1rMh%qd`v!dm9 zKV}TeOHXL|GWwF`_s(hg${Ax=ejndq`RZjYe}MliUt84jhj@RM|M>@6{%D&qEdORe z%Qt{emOuWWmTyiP!}2E&YWbEihUMFTq2*8U`&s_{H?{n4pE8E!fByw7{}%7h@_*pn zS^iJJS^lq2YWa8Q1D5|AzlG)dcu$u9=fhh5U*M1B|NFX@+vszYTrMtKUNSkBtzXiz z{aYr-vg0?j?EIw3vFrkjWzQdJx$h55j^+N(YI)<|n;grJ{FRnB|Fy}nycIB(AN@-$ zZ~I%5W7+>DEpPu9CdcxQB`rVxgvqhI>#~;jte70jdtcCU@Rv-EW%Ma6hd*d?EaM;6 za`d9fu^c<2)ln^uO0~@t>L;%i_nh zJcYhyx%}%|o_^lsSe8&{DgB(574#QN1%1a-{jQd)KQK9#>u=KXpFU)AEYB`#`9~i$ zIhLP)PRl1gWpXUPh-a|;<8>`JK5cR=Yrm%DpHxhakR3{xdCq_?*eHd>wto@<+fO%fIu-fBy}WWBCt%rR4{IW^yQf=9^mj{@(Pl^#7ff?R!lh%fNTE41Uk_vFzHW zWzPeqkLA8MX}SM|>0^20Wi3DQwCQ7cGwLjF{fL$yJ!kq@-ZrLX|3jvaHYpq%>m)P9b z;>y%gapfY>ai*|Zom(oS>$Fwog8lkbt+HB1m&DDaX0O>7 zm`9dstCt^HDzB_uk19bGLhL|`Bd zE_k^81+Jm}c?6uD#ZY`|skp%B)dBS0j+g0GVQi@@?u&9MextLq=;sK7eQ_3q75Tf@ zf$g2e|f}KURN7g5()7A@gxD9rHEa;GZs33-W{%MDFh(PrXGQkoN$yxH5NrwHhs-E)D->43z-xU!cPm84io1vqNT^9%4(5P5iL>>`3?v*zM?+}brF-NODnai8=@Jg-b|Z9 zXq0RE2DY7o>{}$8$pDIpI^8;qSaM!2S;%ksBN1hXEchd zdezAZl@53jd8@~+m8jdMs@mJLmGVOTaQUf;y0kxge1^PLuEpoE>{I6)<`y zSJhjgI#Z~?I#X=0bzIl$klZJ(pVpB;dCf}v>%=B{Y^4eosbf{Gq!^-4lQy%3BFr)N zkE`m{m8ft9sBq#QgU$i81=QR{m>yH*rE(>HND8E_M3h4j(ZQmUomF|JTs#AHxmLKO zgH;=G8{6uUF@05E=R2OCuKz*uyewG03~=K0 zZOa5mpQ+lq@Kxd7cupF`CoAN`k5ynN%bk*dd2=c%tQ=p0B1kk(CTn_4O>VuS=Xf@o z(E`yXJX6@&s1V;uulTx|JYAycGH>)h>a$b$L5nlsx&<1I>3Vz}s`67$(Y}|faShj2 z#YR$F3&SW~=k-(5#}{A&t@5W`qr}O8*orK^zF9rYOgbe2qi)_LYyR5#5_M^RRqJN* zOu4YAX8a?S^0FH0S(r(KtQ8Z2qW3-cbZJp^^!daMEKESwslu=5dHj90rK{HUgiV_U$|j zzr%jn0?AghUnkT|KDH8-)Gsw}{JESeGu0;6KlNA*a=XIs=?R{OGwP#I!*B<8Zb0IT z(uI@uY+hlpD@vfTlZxjcFLk{oD!6-Gn}+=kVolcEHOMl5i4|=I{Q-1tNk+bz1nIpw zD&bDF<_%hzKfo;&a{= z=5OrHRYJ^w^xMg1N``d}l?nl@Ek`O<ArerL0GU&FVcO z3KN&DJJn}Q7p_0{)P*R5guoS7lY5Jk*~&RyrPEpK(m3rr(XXUoa#OMGW}sk63s=)? z&n!fuUkcU0X45wHP<_{v7JLdi;}V50UaB4_Hz2)w*Nn7FgS1t`GlM%NJTr04Ic8jQ z2hlgO!d#wUD}1YX^iR4|X+e(&94B(O_}syr=LBC#c~0Uwyd}IFFVTl$&#g}*zNA&Y zfz<|_vqHX-fy(nO)OsrtUw7V$49s~e8eNeGdhY<5*$UrJltbq!r~~Nl^ZKK`3}sU9 zDi*sp>g89c8SjCKmTKGEyTq11s!pYn8@L+ZPlr0Y*)sw)-OfO z&OrGDT4H(^oW$Q2^T}CUY?Op(>y&wRFKn*-mhL{RkUnwP*I+SG$m5GrVRlSCUr_^hQUTEVyZ&nV8Qzpp@1OV-#@5PAY} zSTuL%@hNP;5`1~KRa|x7I#Yy48;{fPX)UhA?i2gXxaz)1X=%U5a}yilvrBZ=CMsxD zEw7~15L~YZp;c`azkE?~juy!(u8Jug-&U-DG|9mDb^^3|N3w=%LT_`IYgL4-`KwcP zGa1txWGdYP$(p^Eh=S^62Z)=yx_UtB8mT8F15}ME2%b0R;ao}CC3OI_SXsmidp!fF z0>VSkd2^vqtct)ilkOC~=FU%C*U?!A&=wMJ)qBLDS2jBvRV#%BbXcOI?dOV@N(FdU zc|p$!zY@9o#HWBVPOmzlJB^{S6@k03jk76iEjA-kRsT&jBpqld;6_|ZYpJ%AJC77v#%K7DX7o8qAGRN6uUB=1T4NnzQ{gcuH$!=)6& zAR*vK#1d0Tec<0hp?x`mwJ;ydPePoYNH;&}HFZ(K^%mlT@fPAk@G&G2c#k0nKX?KT z!Nh$Ux&VD5j<5Tx903ySR#1I-S)p(ksb!JkO{;YmlPKgj5}{(>GL8->zMF~sCL4oa z+AyyNr(?Jd?t8^r8-YurPz2yKB^=nHkjj4+N~DSg<}WE}L6;MT>*00AfV+?mhqU@nAZ0SIO7-i~OsOJ;9v2P2dIF@)ebf3D`=sv0~yQZlKU;qHalEy+Elpz`qN`zrN zFl9w}u&7<&LLP^ziP`W@dW-4*9%Ps6o$>ER5+y>5g4r3+gW zOl>QWq?YKwDHpSa*1MT4Jn2TZFz-C}kc4+H0d!(K0ZZ{z2Tyux?avMPYF&Hhp;ZV- zHsE>0u#F2Df!CNY~Oi5v?0CdnNWcx(gw72>13*MBfq`Qk^=4h8aC3h9z|pfb8gX zZajBednKuTB)*{Fl=gwES-rsmK|eNc#yvtkYF-~eTgPKuBb9CH6srTmf`gQj)CYeh zE2D5*sH}-J0N=Py_OPXZ(z3^az3c%fATa<{juQK%+=CPfzf&DVd{6Z-`j_fp>QRb; z3HOkAm9k)Zjbf;Dhx&?=kl6K;1gXC#35oTd7*y}1iNQ(FObp6+Vv=y}wiuFfxhO2| zR*Y+_5h$e2G_3>Dmy-OxYklIn=izm}5^W#yjOdj*uSX0__#M)aglI^*7?O>$(&C^_ zymbBpH#2i0Ju`E3WaP*Z%+?$mi`@$Oj}D&6VWJ$4i#cPq$XPD;FmpWQTt6PbzkXcj z@sRxAVe)3=qYuMLR8Vlk&q*`#(!&>5R~t5nFFc2K2M(N=``xy2q>n;Cd@@@Jp?a=&>6wZ6FEUwp7l z&hVLiW(PjE7)(7x{XTqdHTUClo7s!c?Pec7*@9P%)N&?o`s5AX42bq6uk(1L{=>a_ z=L7hhOgnuxnh_%e(iHDUEunb4e;ki%gm=D!#rv4N^)AyXyoc}d+@ncsKDa? zM*tZx#PkmH7JLqxx8idr`p}qNC`uRn@9APcYTDO?^B6|Sqwojxng0l%FfDBkLETKK zgNH1Jl^Haph{HNVJD=bLkK#d%D1vltDMClwcD!3>IKe)4K;nooo#6xzgxh5(A|Gfs zw?2X=fEtVe4|t^k1@MbGjB?^*CqB0bHv5GSY!!TM2UM|3?0M{xN2ECwse=da*=HWY zXWO&cWb9+Uy`7KWi0hALxqf%!dI-IJiyeQLaE&`{h-=CTr3d1g9KlUP%*;rPkt)Nu zDQ1slG5ZDlu12GH0#CN1_!NJ?d4uWHD1M(jkI&Sj(I}n_x66#;=|DU1_1m?FZr28G z*Y@46?Y&(azFix-U3=&4+JW1({O#HU>!0< zGnUs=W!NTiTV?%#@b?|UqX*4?T-|AY44*^hUHIH(-hKQbL-7XnsG9A9;&<-m8<){XUty@r^ss{y46!_D4-_yHV+{Iv_P@ zN(z+;{GUTVswViOsHL?N(iOjNZS`A9)5$b)+b!sujqiK z6vC@Jv}Uaz&dTbp=h9@5w}`FH^3vee8**umaL=V_jf?vXlEb7mu}`fx?gyqfmKevYiBXunkN>w-f)Z)<9>`&|7J+P(r}d>zpzegvUz+Y zE1N$9^5XBon`Qj(^a@!kOzr3UOs8aX+A?wDH{*3n`z&3%%s8LmFiITc2OQ_H*3W#U z|A2Yg{`KAX)AdKtkQVxz#UN{8+*5*Yi6uBSnyuoK+ZOxeh}Qw}&F?U8!ugwCcv7v+Gx?IeHq%)@(J2+jaFYeIC=gZ+1KQwxwy~ji4N*-sHUg8OlF{lHb9_yihj6y)Ip5&_sD{@y`} z_U@Djzz}paY82EZc1t|JUZcQ;4K)gCv#NFQO&Bk7ODd9z-0F%4N14^(kLH{rt50;j z)o~Ktdusq6o5d+`>jbu2@&5{nT@q4^a#x4{cXXmXydTPPiO0d18rdD$yr0fR`}1U& zi6fTv8M~uFlqh3&H1IF13&zh6{5+QXHqX5}$+Vvh?F_cJQGaUu{gUysRV)b~^>3yJ z1a!aTnx|M$Gr0mPvO4U5ZBY}*dKJ1m(tiY)lH{(t4FuD&NPK9@xbM>rOq3gN&JJ9vF7{9+)T%EMxeMx!LVuUwYow(;o zLRZPr$jWQklQdAL_BG+~t>}HP&6C8Rm4kNJCo(SUNn%XN>wV-UN;6F7w+usPHXl4R zKI-+p7IMJGdOU)?&%=5i*TpM9RJ@*egrD+EjQbkp!jWS=oC^xwM}c$@5Cb({)^iGQAsE1Q|^~ zt%>RV=GG;s)Q6w>BKv@9;4An~0E<7!2hzE{)Z_Y*rRVdzm<3HcK;r`Z@3}d1ztU7k z4S?U^o%_(M;O2?N3V`WE4VXSWGTzqcwo63xGPs4K&#hB>-c4P9vgfmfT=kT|7a_{$}eK)?6!=I9a%NXIzj=iR(90Go) zU*>jfmAM_7J+MQ@@}PM8c8X7KNV0x*iO+90`k9vB+wpmy=vG`aiDy8+oN`TcJ) zqd5N&u?qK@V>o}a`AK}f#k>!nZ#D17=L3fPin#{LV_5S%hQdqn%IiGn8|1;x>N5}H zQ?}mlG#D=(ohD3OKlEgzdkyH3ti zn2_i3nR+zhW9b|Kj638rKzqsXvB|*wl#fx95YicX`A>&IIy;{P>41##JI_C`R@}>XW98^oMEQ3k+zACa=YX_*!gI*DhDO!VW;Fg44HQTvdfUG?iSkEBeNEUWu}70 zEom9^@RUVPrkIfn_#oYmpz!BvKBQ2VP)STna<0_lmnmt%cAe<)9dxQ3q%w(b(&hXQ zi0=dB%liCcCOk9#qyv)gJ zGn7kSo1p{}UZNYT3?4k}1V^4nGyQgKA{!;`di|Elgi^%X`F%+}rLz=)w}5VJv28g< zmLlkH;Q_*wfM&8f${RaIGYx1VLo*>- zXvg}w@c8IUAweUy56K29ijWPIl;%20l5S{KZ58U-COP2SC6n7`e={p@P`oBK`#TSa z&DEm#(_F1#(OT{kt>q0efBSy1Zq(;T`e>%RsFq`Ch*p!I^y1;W_m*SJUH?dVIn(Lh-y{s*ZYQ;0H&3IvkO<#*A#+JMQiLOtihTm!W z;NfG(#C(W9nsVpB?A>nW&f=}23I%a5HbYBUI7yE8Q{_;0H3 zIicZcqsJf6#mXQ0?lpfPO?m#1Pvah2BPNiK?RpRT5OQnSKa!0S^|0@-pS#!CC;#x+ zKjg4)x8aF*ud!rM2PQonZZG5dNH#mAM-Pr3%)O=uY8aj#n2o99Ke3CBrG*5Dbl?!% z8ea%Rd3v^iEa%iA+kmkhZyPXvM@*;p!c$bIVZ`-Bd-H4qKECe8^^c>sZ!s)(mvF6k z%*UBQSv!y;nuqFloceISi%ZV*<-H3$+ul1O=P8r3@-$R?v@-N=JLf2Z{zsCTvBbjmwC%+5$0jl9DR zyvP~vaL9|iPA0wy>+sSiKwq-rliELrX`FWMP9fuuxFzsg)8~4tYN0RnAU#MNk8XAw z)q$k%{9Z|cRkeU)w}=Ke=##;lf&llZe0I*n`x zHV2QkxgKxNdaJ|u3Di3|n>MV2#p~~4J4x9$T+yB0OPu_EYW6(V+>W=9ZK{KfW<7Y_ zt%FGvkIwnKG`dMjIcP7s&PmpKqmHI}8l!lzci!Sq^f6n3+&+4^ElX|eh&APV-gzgt z*~OAjg;g&$IU7TLZ5H?0Yz%5>JXBwM7-!VK>o?QYfnKXrup!2Du@Ws{1LEtT1s9ra zO^yd5H5c*VMmjj(-Rj^PRr_Jx?~)l8_i65L6>>y6ez(JVVV>a%&$ zVd*}d-UC|(eI1O_eY#S-8dX}&#ygzl|6M=kr-8m(#NlR*c^%Id|HQWPPn^iXXYb2uZUH&3y!g~m78GI5{DlTtSs=E4aPWqdzQoN9G1?_|809w zcBv{bJl3ASJup|Qhv8dHvhEOu!yY?gcy75|u3j#dE;%GS2=IKQy)2C0Naiq-gK{9= z;gG|xLwIg5k}FX(6D`AdQzW}8Fx=)E=7BxzdwDj%FS73XuuQ@>3z&8bFE45BU$O)qXOTXvQMPKWY;Qk%V$DwC|hw5>3H&TzYNK9c=_`>YfvFS(W)TD2U-Lc+$ z4C!3*CWbL&nB>qk>6(aO;6jmXbhVFrU!u zonnxHff7bX+{)5a3!3VK<2}32l0rZxY`fQ50c`=V70{;}YXx()i>0XQi9o7?|3k^Z zZd3gCGBYjuy=;)st}NC#V`pcFW4p|KNU!axbF-<%+qv2FTM(n9LfPEaF*l%iu9>+ zjca1WvRS!6>Ix~q&01@P0>%US`4{mD)I9JmxreJ*M_11EgRvr;lQYd%?cf^8p&Xjf z+9{eVr0>g5>fNE7oJo2AbURr)<;K6#4T>U!C0ZFaL1Qzx>yjH2Lzs9lo*s#)W|! z^Zhp-8{$eT{Y~de_CZf$Z*tY7epxkZtE_R`Y`2g7Xs_$2*xf$J1@_45w!<=S@;+JB zR`)2T%%{xA8Ou{fQB(ZjL=N7O2Y+;*>|#Xv;!d`le_Qg?ap4uvRE`GMNMp{vZ-vIj z0ui6?UVH7QfPhy`4F0n#PYgJ^( zL^6rLsV))7-0k`t&JUuSZw@An`<7SVVnSDPZne$gW7ej(@K8x$J!|0+>ze1u(QdI` zEM4K$9E){V6@fBye5!TZE|iVe^%`Ux=L70D&BI5Y4MfdvANI_l?Pk9IV*)X7{PN3mGaV(AHiCuEI!f}jstl!-R*^w z0GZ5v?28fIDK8v#JRYiZ*%{BmpAiRNEmn(Hi&b^N)dPw5RGLIn&K+3CqKEfef_LJe zHU9|h!z)p==(+eDtK{Q{N0O79n&R4d%)GvR z84qjZXQh2-{j3l1rLYrLzC-&?)}Klo4v6PtP+p#vFAtCVtgnO+?<*NW4Jz5AQT1B6a%DQY zT3m=8Ei6Yu0vV`KLTb^AJE4T0zYLw8PLA%dzl`I}(*Rdcs;7b3aL zxN1v&akoH*=LtPZASI;SXLp$r6w6lM%W{KoBtA9p&s|^9Wd}1*%7xdg1N34eH~U(X z{mo({8uzfc&c;TfdbcKqc*#-rSTrH)O)zT*`l8JT5(Oy zfCrV9c(-A&cwjY|@aC)J|FUeXjfpgu>&Hk0I6OCh0S{}W;XQ=+uo|95taqDEX?P=H z%`Kzhz1Gz&*58jG87~;?R~>$3{p|q93SU$1-ui08yU>3II|5RB-y?er>yEr_~N@Gd}nu7Jfi+p>H5a1Zs?#VZOAV!XGf>GdL`>`XamLx|2#GEti1DE@%AGheRvV;qvF~|2YdD5i>s>}wc)krGy`VtXJ+PHQ;vsed7c9q z-Y=93zc9CUeqi*aU;KLY?Q72ty?7hP-+uPSzyALJvUcbfzgOLJ z<9`M86JH+qcfV2l>$MaA;b-SRLR0XCRwzTWYq&yIzgUKLH)+cH?J|M~u+BIm=gfH? zG^B^*+T^?AwaNDbJ}f-rKG~Q24YH=q{gQ99*Sr^3-)Iiv^G)UuKKGf!__f{P$EyHmJDebsk}_;%ue75UU>IRZP?=kIo*S;eu-_k($xrSRkjj z>#Ylt!Yyh7_iAk|`YL#Ep!7+O=cGrh;5j(%&QRzgnx;h(G{Kh0%Ffl%Mn5d4ArXxPE&PEU8oy_dW z6Wurz<3EA31jfnOf%3V9Lg`Ggq|U+^>vfli`J;9g29e(s^T+HA4?ots-p_CV-7i+< zUaXk?^0$Xy{?72unSDFYW5-j3mG-t~OE9~3i{wgME0gNtHqq79${dh+T03MFbjIUo zOYFzzkXQ?xo2lG_az2OaYJ;Zz3~UqD{*^#ZFBdK)2}bIql4I>q$zj*pQ%P6Py(Dtl zn0rYq(L(0oF-Z#Xb1!*~`aC_8$_4T`b8LU6@JxawphmfVq&<&uZ>2=^s2z?}*H}lY+kMJciQ%?_$g}+7T&JWG}t8lDIN#_DG4G?QOUWs%^ zqzsgFHQv??-vC|pEJD!J&D26%4J-rtYSZg3v}O@Di!C#?iHDaKqB9~7SX=?(|KV~g z>KFjdkG7R#6v!j&;T+w4GqudhUBBZLO ziv)ayT`wghE<~$*v*JRyb%KLrr3AT$mlE+@KW>poyej{QE5be8zBzdu&A7){U}e^> z&prMSI{fAipxbY;_6k6B8MF9fV_lH4V58jQW*T95C9XMaj~G=STd86pE}bEkf>3_A z+|iaOAh6HgGhi`|auV|RRW>IV26z8L5cD*cSSu)j1+iXf*Awa!@SO; zfyY58VzyAMD93kI(n5PyLLe`oH|yjUop>*j^r$k1IRUSx<3;4!8_hZ)E01Hi+~ge zbTBb$GfrEP0f!yccsl6nhyYpd9Yh4w+ni2)rHHltfGkBIvB_7v5|J-?qf%?`_*^7wsl6)-QR(o&zfml;XJK#Q}sKa z$(YZANe^wscgK3#H;}J~v%Eb$q$YZXtu8YCbSzG_Z;ofX20AUP?V^L%Yu|jbx4^R2 zHf6ce3@tEf-;m|Ndm056lD=4a3<@otYI9 z@|c7?FloO9>=yOZWM+lX%19oT4jx}W39w8LgBkWE{^Ye976SN)_+eU~{XttRov}rJ zza29(tTnd75c7kQx3$yIt4_a-`eRu06!H$#w7+?sN7zGm?lNNau+A_g{25&>H3cD` zINFw#-kU3?-HlI6AL}%()}9;!aYz~;rv$aiBj|6lG@(9Py7=qoiZ%1jhHW{;G-u+d zln_#2l~`{xa%=TS&lP&M+}+&q7)Vcy?yN0Gh}R7BsFD8{7p^39LR$mZKQuDhR+e^e z^)B?N9vs#28k%I-cPTQjxNB^yQ#0T}5!5G~pWZcx;3H!?ge{7Xj1k9&+rn{AEBvD6Wx+D$oetlUrsrCFp5C(n(d{t! zK@YD_jUR}w*Z9*Qp@WIG_(IQ53#99zyq~&tycon?@zXZr{o%;Ug<@&3d`*^ilNC9^ z4bmV;fYFh*boaoBUxC1(T@#vS&q!ic>NZRV8CZ9(E zTA&BSt1Tk-m}db&l~wRItkGn_^JWk{du*I)dVJhTZe-VM>w;tQTCB@z zB{!UJt@_@Qe4BT9E!i;v`<>W68x>*(uEW~b&FRu?xl*-byoK!8z$(mFp(eDhz3qfl z>5OMSBxOUM`PZzyy+@Eg@bmu@{y)bQ$)Qiaxn-}sN^kYRQVrZHIgQ)IlWw&)TID-L z8t*idin94UU^&40(EG;hNAWtGHX+=O{C=Eav>$0}v^$@?=jb2D(^|)M=b|v3!u8|p z??X=}Hojb|Vb(ljFhecxZkLU~Xhe>@d_dwbJ7ng(=E8EkBqK1aHNrbCg=Wj2o}Gfd zzBq$5It!dFpRSWGCfcHl@vI-d>!pB@1&1Oey-$+ACsH6VZ&EN`JyCn=sR$|2$r`W^ z7j7*7`LC%C;AT^JuF%~X(V_rw8brr4q66~&^y*Y$;c|4cRJgdrrT5cyV%zEItzkPm z*1Owcll;lMXtCXaU+(nksp;bj3t;Co%&#e$>p;Y`TlJ_lO!xBcC_j0q2Uajm#q2KG z=FKooZwwDgkv`eAcJlNp7t*drbv=x@Zg2I&L%mTgU5yXL^$DEa;=-sM!gWAKyY0y_ zTWQ`TYs9ZxC%2`s+>4}J^d|9pZ}-8n7(HKtGc|!>tpmr0M{G81OE^Aaqb^<#>-so~ z1kGscLJR*AN#IW7DC$RNzT-x5lsvBIV4sC-a9onu3;!oL`k68k;cAuDa^;aqdHIpz z66~=ojMU&fEiF-l$W{0elZdW}# z07&aOv;jTPlf>!LVzCk}Ad5B&6VP-8izQcDT=m>p2%bi|-jgHdJT2?Z_vGLq3Hg!D z#$vq2XJhe6wMmhwsO{}u5>JSpavtUHJSp;|tgWInqoyAUXgQe7Bc5=PX0d!+ZF?MHT!mdGDIxn~(DN zekh6Wr6ol+)}C|Nb}+&9cw1w;=j9`c~`(j$M9tl8vYKTPTZKb#+Svl>X@)GU|Xllq1k?pY({G zPas)Nb+y74JvM>)b05cJx;rOJ7AK7THHn0*Hugl+oGb==x5_?<+hiZa?UGHEUZ0TI zuFuH=XhWVriz6>>XaSHONDhj3B@I0XY1FEzgv_S8f55uy`ti?v%;z^_CVY$?+&+o# z?D!||@%B73d?(|t3Wir|)tTaAvBeP|Sb?(ZF-)c`Ntn;as~y~JkIkKM_*ykaY!b-^ z$=2e-Yt=J5K4NE4dF$?r8*unBbcLNCH%)1}Xd4FwV+cA=NyEbs|D4`epyB5XUF}cStU-&BEOe$dK%LyGv%o?KbZMWRL85J1p5c_sLr1 z_dAT^azZMMqNeyEoCmoCeFgl{@&4JCSm4=})AAA~+qK3g#sfJ$J-P|dP44wdHy{I{ z3I6vMMwV`9#kHPt5E-g=(*bbZYDr_jMS`>`wT^D}#& zUmkkt&$kRN>rQ#Y?aa?*%BbBfllH+jndf0w!POZa#O0u@zEr>N5-ucYf?@15@1-~D zfV3emVFZD65aV8nBCgQuFy5YjIWP~TM-}K|*(v8QLT=I4%Gu*C zi_y!FPvb$2JQVbvTm4n_#9@=~kp4Qt4oDotVrYh-pIN7k<8~SSHO-S%&m~nnenA)S zV}h|}mB34}_UztQC+9hJtVKDp72n7 zX+J)9%kHa`7a?tfI&E58=Y6@@AiGM}d=yftlsW&vrmST^B4ykveGFta)jh^+cAKZ0 zuD5e1(dl-{$9v+*WNd?nVxM$CPQls4$5&Pq`@$|#5b_MShe}Jh53Kju^J-3`w{KA~ zbS&fbHPe)SFCI!8W~)&a*fnFw?d|T}#BV#PN= zjTqPve&B1w{vjK|Yzh0vvRcBgf&sOzUGBlVcg8!~G3`>7OQxnnQapct==s|4b6-bl?RZE(^!$=O&rGjoTu~#968b!=N`8??jEyU?+y4My7y)ulzkb`ZDqJ6 zqYuQ_HsRInt`13k(C0PK;uCB?8dc#=zA_zMEiPb<$Sh1oIkKVs45en0d))0K#uYq?k69o@>2Sclaru}cwi(=ohjeU-QaQGMrAwHVY!&r93o37Uuc)>h>83#<4P4Eft(Ck20lYWG`GoZ>c^%?2Aht$21SOZ1 z2P%W_1F!nw@)f0Zh#{yF+v`+_fji2e%jyrb{CCJIrh^id+$nw|8;N{7uI?5sVvqQZ zR4bsxx{==~rU10ET!YV@jKT9}u5dLvTUeehu3l-)chH*+Eq%!kt7Wds>?-o)&Eg7t zS`H&ieMZ^rY1${=%3yXv04dUMgWp1v;VX z0HllR@ufm#S+nU|paHi|uGb#B-eREfc#Hb;X6XhSSqv6~czi4y7;OZm6|u6P#YB7i zO}iDp~!^6X-k$c%7R`fi18F=^v)Org^Ia;%D9=er9VSQu7;<`479q z+q_3C#9^6fb)Wc|-ynXX`^`bL+$*{vSrYFIPa}%AE5=b%?BGO>K)zavux5+TL`xzl zJh2Ik6xH6EOMyM^x?X<}vLU%`eoUI^_LPv#Q6kNF{efQS6d}wZ8XWpd%uet+*@i1)EiWh*69 zm6~yqKJX9rU@MtQ#C$pro-rTtAmtdW<?=Bn4R8lw<_uM1yrm~08} zPCxN_XV=SzBgDI?7597}wZN#v9Q|&!uGXlaH~Kjic{uBX?%quu z{To@Be3L*_lDMx`Dp9FAEo(1hm2O3U9guuN*LIJc3{Cle!1CyN{!cNysZmK{Ip?H) zmj6>f@cf_j;P5J}Ur{VvzrFmFUJRODFNYiN;!#qr|GJ4m1Krbw>yJHkA&Rh1N3v!P z9v&HKFYlno<1;uv35cDoa!>LO0$J(Aa&)nF$?lPtt`qNv+QPfj1iXgV^${hBEK|FF zkqL;Ko_|ET^L&0kYH6F4T3%k-(7I#x2a#T`VdFd~b_-X|6_-`luY-Z}A08QRZ_h*< zee%@s1dPf?egH}z>j%)CO$YF%oykOb0PmGN$f-kqfPA=J#t(2H&`vyzbat#gX_oeWTA22z)zSN_aQ%_jC-L5 zayUy3Ycs>Lc3UeuC}*<|IhO4%8^rE_?44}az{mqaj-md(JpSjhWr|QoLBJa!G^?h}1JS9?O_ksAtTr zt>USt>pchJIp%1;7ugATtmqZ|uh@SOXM+85sd_3ZUb>7K&BVN`66{V`!xlJR~vhvsnbRLA@;z`-$V3?Bx4)hC5DA&t4syesoU50?jnT zu|W3e)eSVmtkuBv>3_(qhBN4F_zZI$UF|4M0sB!++Y8hy^C&um1N3L+r44C-V=<LLNo=K`apz*Nz>Wo+URpG-78Mw8jmxt6}sg zz)`^V&QXA3*Xn~=ZV=8GBMHpaE|wy-0DYB|aHuW2KcE|Qy#**bA;;WiSpm3pLIz~5 z07AS47<-j5@kmy=Z63VbXD0AT%P@`kDNI?Dl~EgAp+?DNv`!ROTinN^ zH?N(YE(d)|-d99CY?hR`GhdNKtk?y%0=?j{TLG&jUJ#gZ()GN+=bLcKz&+15p>CK* zQC^_4R-qWwRwGR=$Ckky=m~(*1Oc<<)z-Ykftl>j;em}J&e<6!or^d(h$Ls$O$$Ym zLvz{EoEMzdj(krC;y64%@bY(tciyRvkdzD5`?ibUXFygr*&(ym2E_~Dqt5gRco~tM zWfJxw3mpLMDHR^h5!Air71O>bs+f1EcVqRc92I- zil>7Fko4fzLvKk=1nkEiJpd(24`j{voF2kH1f_?SD8iD-R!q#XN*XxQR&Hu94;^UM z!^sG-8}4Q90QnIQ)eiDFqc(s|+m0`AryW7MtC0d^YI5vCZkla0cG%{t`glUu`wV2X zKgq2#*3P?`?5*30q?Uf!Eqbf$7HxO*BPrQk6D*zpO6UODSRxe@A4_ChNwBXo(g!iZ zCytW6$H$#S5W61Rq6N}MyZ4b}a(IvJ*b*eN>)56S9=j1sB$h}KumSntuhP)o1x@m4m( z!JpG7d%lt@C|zK4zAH#AI*#o!L^foglo4}iVnsxA8R7C*y^QGk*n&_DXBXUUuThL0 zqBlVU+1LUlgO4qcc7z6iSm6n71}Q~DbGeX>BwyZuCy+;3o}kux=T^wh2gYzHAN@eM zUF$hyAHt8k2_;~_hYecg0m)VMnO(e1*0k9!d7uM=HSZ~I<{b>rIiD*pT#2fW$?OEx z0aFl41!vK_s z>ELL4Hegme=z3l+bCKEecbnG}qvYc}yu8oyda9_N*FT6FrNs5sYP5_sCv-BRuL}Qn z`=PZo`kk++C*hq=D3-qj2=37;=nclap#4mtbg71YG*!h*fiULB4~-J-@zGTJ_vVan z0LtO8FJqpd%^LH~`tfAU%lIV0RHksGKs*Z;^bLTivEZ9vNU z9byUEHOLqV;$C_oX^@QzkumWbstfQXAq{kAgelA+ik{Ilk`#n8Vf=`d?JdzqVE??X z*91O*&fe5jh;aW6H38z@YXULuFBD6Q=zQB>LYn@uVkitgo!X1)L zG$`I8&emwm7xv>?nvc=a6fUvyQr+9~?p_ z-&20T=#b|J9ET3)a|?xdO+uvssgoBRasIp>-qB$=VtpdR3qrg_a>fMj{N`q9hrD+V zW4MolS$IO4e{F>K%Y_v+31hsoE_io(eoJ_FD;s+m(9;hkSVRN;MNtyZ54>jmkb3?$ z*$>Ia2%71Ks{2{m$m)lbCOlLQFp4zkn8Jr2t1QMVRVZ~RfL!5-jRdzu9X*eM^f5o2 z%{Yz9Eo%Ck#TA;_jJ(c6F|S_2%Y{m`I1?>namuNs@+$4ddJwVS-Ymqx`ZYcMP|(l8 z2lOLmuvSCv04>K>)~{(~H&Wl%-FOE?C)^>c*bGXPxLy5__sXLvb%^bdpoGU(BJP}2 z2LZJ#MbV0j6}I44a9X988(qJq8PN;V!S2u8+>fBM(lwKWvAwO5Ph!_Jn-rwX$Lp0@ zNkII1jYXOO!b36MkF$e^kG7R9FxImKr3d+8`TXPS5*pm9!~A!Laml%enqxLO(urS- zS!x#BMGqJdeQ$@1_dyx&?T++-B`EPiri`u7JCvwlgiGxNoCrG1n|cldxx+o~FEr72 z?`R?q`tcUSe$=ww0RUrOKpitC10p_21mqEi+M0#zW~X_M-=hbihyHs<4~lCm8?y93 zev?O0+3+CFln=m#T#6PPlZdOdACI=V5}BnTPZhnK5_I#;ElL!k479SVuId7JGp8h! zQ!GN@Oc60nRRN? zUKN$`A@6a>D~xs-k5QWECUk}isx)j@+`~3ldlspM^Ry3!+lVYNN3q|K7Pd;nXq%z> zVOKAt@nJp4%n{rvc7okGi(4q@-pc$=Yq2JB3H3J^qdVOwX`GD~qT*G$nS^fQswEt5 zve=?7aV$G$y+zWO5T!^I;)D3o zO)hg}{R*vQC}gz>;%%F(f3BV;wg_Q7o0mo^@zE#x8|SL!l}DrMH6)==M^}prlo0hG zVt=B&{qkJo!t0V3HyHnF|HM>3zuW2 zjznZhL(RYh>n@Y1B~E`Rs}Vkm$2PJa_*QnT>zLYZIyKh!u{#n+qp{v#?~Ke?5Alw< zb%`tRNkn*qToYbSW1Lwgc0UZY5%{9?0kh^kMbz5TyeMQH3SxC!Lz7F?$jjZ{7A@ho zmq&sg*MsyTl3WHhc{5c0P2uIuB8MFDJV-~nTIHmsn$BIWRgqjqpMYc;+dA>yUd%8M zFoMv{{b@=te_>ne$$WJqBFvi(aIT^ur&zqzi*E|Ah zWHyRGEr?paj(XM1t@W1G-UFjP&LG81!YabX$r`YKti5%JMzUO;zLG}Rm&g~15r=Zm ze$y$gJ{&(+pWYbzd&BKATs>JWe8 z`sqb8830m8JLb4^OENsLPjQa|(B<(y#hW9;n^6GQ3-T0jC`18sOJziMGBiN2P{Gl* zR+AXZ`uV$_3b;haE!oC!lQg+zR6sqzQvoHw`O-{bSP2pXrrPq+41bL^lp{6i`v-2y9&<{MJAgBXo5rWQ} z3x%R?ju>Z#HS^%ZSfF6R;XQa=t^ZLmzXSab-%4OLtN+m=P#uw2r9^O;GL!BUBYte8 zJzw16EU)ioUz}L&lInZ+vigWyYWnJDvzlJk7Z=d+9cE8l*SVo}0HK0Mu*uvrEsobQ z=hN}y_2V!q8rf?H`0lYiq%rUx#u;EU_?1@0yB8V0c|1R7EM@FRP5T-ra?rEKgNV@4 zFJoR1uRL2$g&NLA)k7#+Q6Bw^dB(TS@?Es_;zjI?b_a_ zwmND{N@0%aGsyp`~33IOMkv)aC!Lo z^ZSH_>}`Q+XvJ-jIK7S6lK0zHV`*gAxnGRh49Z&aIwNFAax*EV)N-H}?&%_%p%;kp z2r*#&;1kyw<4M*?9qr})x-}+x)In+!8&RlZu#P&`UYFECyORf5rRMrhT6&m9LKjjv zQ&rN3;|Fl;w6Nk()`#%I2Hb<3&vFmt^PS@!4Y)!k0-UzL9GA(+pO8HB^ucW_licGe zParScSx#Rg4noU;adhT&?#E}lE6;AgL9p;_f<#yYg^aqmZz~isKAMdZf4VIS8OCqx zOrBq-DCF@A>yqgg#}vfvuy^fQ%q@142U^G%U_^O~WQ5t-1Jn`H>(9^z*&!Lcc3mp& zQZ*#hvP-CCw|IyKHC9RK9c6lE&$Fp*fN|{U7>!frTveZXrldyU7 F{{!1u(>DMB literal 0 HcmV?d00001 diff --git a/programs/system/RunOD/1/LScript.x b/programs/system/RunOD/1/LScript.x new file mode 100644 index 0000000000..2cc4ff9007 --- /dev/null +++ b/programs/system/RunOD/1/LScript.x @@ -0,0 +1,24 @@ +PATH_SIZE = 1024; +PARAMS_SIZE = 256; +STACK_SIZE = 1024; + +SECTIONS +{ + .all : AT(0){ + LONG(0x554e454D); + LONG(0x31305445); + LONG(1); + LONG("@Main"); + LONG(END); + LONG($END + PATH_SIZE + PARAMS_SIZE + STACK_SIZE); + LONG($END + PATH_SIZE + PARAMS_SIZE + STACK_SIZE); + LONG($END + PATH_SIZE); + LONG($END); + *(.text) + *(.rdata) + *(.data) + } +END = .; + .bss ALIGN(16) : {*(.bss)} +$END = .; +} \ No newline at end of file diff --git a/programs/system/RunOD/1/RUN.asm b/programs/system/RunOD/1/RUN.asm new file mode 100644 index 0000000000..824faebe0f --- /dev/null +++ b/programs/system/RunOD/1/RUN.asm @@ -0,0 +1,655 @@ +Comment *--------------------+ +| | +| Run with OpenDialog | +| UASM + KolibriOS.lib | +| | ++----------------------------* +.586 +.Model Flat, StdCall +Option CaseMap: None + +Public @Main + +FALSE = 0 +TRUE = Not FALSE + +CStr Macro QuotedText:VarArg +Local LocalText +.Const +LocalText db QuotedText,0 +.Code +ExitM +EndM + +IfDef LANG_IT + szProgramRunSuccessfully equ + szFileNotFound equ + szFileIsNotExecutable equ + szTooManyProcesses equ + szAccessDenied equ + szOutOfMemory equ + szUnknownError equ + szTypeNameOfProgram equ + szRun equ + szTitle equ + szPressF1 equ + szHelpInfo equ +ElseIfDef LANG_SP + szProgramRunSuccessfully equ + szFileNotFound equ + szFileIsNotExecutable equ + szTooManyProcesses equ + szAccessDenied equ + szOutOfMemory equ + szUnknownError equ + szTypeNameOfProgram equ + szRun equ + szTitle equ + szPressF1 equ + szHelpInfo equ +ElseIfDef LANG_RU + szProgramRunSuccessfully equ + szFileNotFound equ + szFileIsNotExecutable equ + szTooManyProcesses equ + szAccessDenied equ + szOutOfMemory equ + szUnknownError equ + szTypeNameOfProgram equ + szRun equ + szTitle equ + szPressF1 equ + szHelpInfo equ +ElseIfDef LANG_EN + szProgramRunSuccessfully equ + szFileNotFound equ + szFileIsNotExecutable equ + szTooManyProcesses equ + szAccessDenied equ + szOutOfMemory equ + szUnknownError equ + szTypeNameOfProgram equ + szRun equ + szTitle equ + szPressF1 equ + szHelpInfo equ +Else + .Err LANG_?? +EndIf + +; Events +REDRAW_EVENT = 1 +KEY_EVENT = 2 +BUTTON_EVENT = 3 +BACKGROUND_EVENT = 5 +MOUSE_EVENT = 6 +IPC_EVENT = 7 +NETWORK_EVENT = 8 +DEBUG_EVENT = 9 + +; Window Style Constants +WS_SKINNED_FIXED = 4000000H +WS_COORD_CLIENT = 20000000H +WS_CAPTION = 10000000H + +; Caption Style Constants +CS_MOVABLE = 0 + +; Event Mask Constants +EM_REDRAW = 001H +EM_KEY = 002H +EM_BUTTON = 004H +EM_BACKGROUND = 010H +EM_MOUSE = 020H +EM_IPC = 040H +EM_NETWORK = 080H +EM_DEBUG = 100H + +; Draw zero terminated string for DrawText +DT_ZSTRING = 080000000H + +; Charset specifiers for DrawText +DT_CP866_8X16 = 10000000H + +; bits for the GetControlKeyState +LEFT_SHIFT_PRESSED = 1 +RIGHT_SHIFT_PRESSED = 2 +LEFT_CTRL_PRESSED = 4 +RIGHT_CTRL_PRESSED = 8 + +TOpenDialog Struct + mode Dword ? + procinfo Dword ? + com_area_name Dword ? + com_area Dword ? + opendir_path Dword ? + dir_default_path Dword ? + start_path Dword ? + draw_Window Dword ? + status Dword ? + openfile_path Dword ? + filename_area Dword ? + filter_area Dword ? + x_size Word ? + x_start SWord ? + y_size Word ? + y_start SWord ? +TOpenDialog EndS + +TEditBox Struct + x_size Dword ? + left SDword ? + top SDword ? + color Dword ? + shift_color Dword ? + focus_border_color Dword ? + blur_border_color Dword ? + text_color Dword ? + max Dword ? + text Dword ? + mouse_variable Dword ? + flags Dword ? + count Dword ? + pos Dword ? + offs Dword ? + cl_curs_x SWord ? + cl_curs_y SWord ? + shift Word ? + shift_old Word ? + height Dword ? + char_width Dword ? +TEditBox EndS + +TStandartColors Struct + frames Dword ? + grab Dword ? + grab_button Dword ? + grab_button_text Dword ? + grab_text Dword ? + work Dword ? + work_button Dword ? + work_button_text Dword ? + work_text Dword ? + work_graph Dword ? +TStandartColors EndS + +TRect Struct + Left SDword ? + Top SDword ? + Right SDword ? + Bottom SDword ? +TRect EndS + +TSize Struct + SizeY Word ? + SizeX Word ? +TSize EndS + +TKeyboardInput Struct + Flag Byte ? + Code Byte ? + Union + Scan Byte ? + Control Word ? + EndS +TKeyboardInput EndS + +TButtonInput Struct + MouseButton Byte ? + ID Word ? + HiID Byte ? +TButtonInput EndS + +; Button identifiers +BUTTON_RUN = 10 +BUTTON_BROWSE = 20 + +KEY_SCAN_ENTER = 01CH +KEY_SCAN_INSERT = 052H +KEY_SCAN_F1 = 03BH + +KEY_CODE_0 = 030H + +PROC_INFO_BUFFER_SIZE = 1024 +OPEN_FILE_PATH_BUFFER_SIZE = 4096 +FILE_NAME_AREA_BUFFER_SIZE = 1024 +OPEN_DIR_PATH_BUFFER_SIZE = OPEN_FILE_PATH_BUFFER_SIZE - FILE_NAME_AREA_BUFFER_SIZE + +EDIT1_TEXT_BUFFER_SIZE = 4096 +TMP_BUFFER_SIZE = 4096 + +GetButton Proto +GetKey Proto +WaitEvent Proto +BeginDraw Proto +EndDraw Proto +DrawWindow Proto Left:SDword, Top:SDword, Right:SDword, Bottom:SDword, Caption:Ptr, BackColor:Dword, Style:Dword, CapStyle:Dword +ThreadTerminate Proto +LoadLibrary Proto Path:Ptr +GetProcAddress Proto hLib:Ptr, ProcName:Ptr +SetEventMask Proto EventMask:Dword +GetScreenSize Proto +GetSkinHeight Proto +HeapAllocate Proto Bytes:Dword +DrawButton Proto Left:SDword, Top:SDword, Right:SDword, Bottom:SDword, BackColor:Dword, Style:Dword, ID:Dword +RunFile Proto Path:Ptr, CmdLine:Ptr +GetStandardColors Proto ColorTable:Ptr, TableSize:Dword +DrawText Proto X:SDword, Y:SDword, Text:Ptr, ForeColor:Dword, BackColor:Dword, Flags:Dword, Count:Dword +GetControlKeyState Proto + +EditBoxDraw_proto TypeDef Proto :Ptr +EditBoxKey_proto TypeDef Proto :Ptr +EditBoxMouse_proto TypeDef Proto :Ptr +EditBoxSetText_proto TypeDef Proto :Ptr, :Ptr + +OpenDialogInit_proto TypeDef Proto :Ptr +OpenDialogStart_proto TypeDef Proto :Ptr + +OpenDialogInit_proc TypeDef Ptr OpenDialogInit_proto +OpenDialogStart_proc TypeDef Ptr OpenDialogStart_proto + +EditBoxDraw_proc TypeDef Ptr EditBoxDraw_proto +EditBoxKey_proc TypeDef Ptr EditBoxKey_proto +EditBoxMouse_proc TypeDef Ptr EditBoxMouse_proto +EditBoxSetText_proc TypeDef Ptr EditBoxSetText_proto +; -------------------------------------------------------- ; +.Const; -------------------------------------------------- ; +; -------------------------------------------------------- ; +szFFFFFFFFOpenDialog db "FFFFFFFF_open_dialog",0 +szSYS db "/sys",0 +szOpenDialPath db "/sys/File managers/opendial",0 +szEmpty db 0 +; -------------------------------------------------------- ; +.Data; --------------------------------------------------- ; +; -------------------------------------------------------- ; +FileFilter Dword 0 + +OD TOpenDialog <\ + 0,\ + Offset ProcInfoBuffer,\ + Offset szFFFFFFFFOpenDialog,\ + 0,\ + Offset OpenDirPathBuffer,\ + Offset szSYS,\ + Offset szOpenDialPath,\ + Offset OnRedraw,\ + 0,\ + 0,\ + Offset FileNameAreaBuffer,\ + Offset FileFilter,\ + 414,\ + 0,\ + 414,\ + 0\ +> + +Edit1 TEditBox <\ + 0,\ + 5,\ + 26,\ + 00FFFFFFH,\ + 00A4C4E4H,\ + 0,\ + 0,\ + DT_CP866_8X16,\ + EDIT1_TEXT_BUFFER_SIZE,\ + Offset Edit1TextBuffer,\ + Offset Edit1MouseVariable,\ + 4002H,\ + 0,\ + 0,\ + 0,\ + 0,\ + 0,\ + 0,\ + 0\ +> +; -------------------------------------------------------- ; +.Data? ; ------------------------------------------------- ; +; -------------------------------------------------------- ; +BoxLib Dword ? +ProcLib Dword ? + +OpenDialogInit OpenDialogInit_proc ? +OpenDialogStart OpenDialogStart_proc ? + +EditBoxDraw EditBoxDraw_proc ? +EditBoxKey EditBoxKey_proc ? +EditBoxMouse EditBoxMouse_proc ? +EditBoxSetText EditBoxSetText_proc ? + +SC TStandartColors <> +Window TRect <> +Screen TSize <> + +RunResult Dword ? +RunParams Dword ? +RunPath Dword ? + +AlwaysWithoutQuote Dword ? +ClearBeforeInsert Dword ? + +Key TKeyboardInput <> +Button TButtonInput <> + +FileNameAreaBuffer Byte FILE_NAME_AREA_BUFFER_SIZE Dup (?) +OpenFilePathBuffer Byte OPEN_FILE_PATH_BUFFER_SIZE Dup (?) +OpenDirPathBuffer Byte OPEN_DIR_PATH_BUFFER_SIZE Dup (?) +ProcInfoBuffer Byte PROC_INFO_BUFFER_SIZE Dup (?) + +Edit1MouseVariable Dword ? +Edit1TextBuffer Byte EDIT1_TEXT_BUFFER_SIZE + 2 Dup (?) ; buffer for Edit1.text +TmpBuffer Byte TMP_BUFFER_SIZE Dup (?) ; this buffer uses in StrInsert +; -------------------------------------------------------- ; +.Code ; -------------------------------------------------- ; +; -------------------------------------------------------- ; +OnRedraw Proc + Invoke BeginDraw + Invoke GetStandardColors, Offset SC, SizeOf(SC) + + mov eax, SC.work_graph + mov Edit1.focus_border_color, eax + + Invoke DrawWindow, Window.Left, Window.Top, Window.Right, Window.Bottom, szTitle, SC.work, WS_SKINNED_FIXED + WS_COORD_CLIENT + WS_CAPTION, CS_MOVABLE + Invoke DrawText, 5, 5, szTypeNameOfProgram, SC.work_text, 0, DT_ZSTRING + DT_CP866_8X16, 0 +; Browse button + mov eax, Window.Right + sub eax, 70 + Invoke DrawButton, eax, 26, 52, 21, SC.work_button, 0, 20 + mov eax, Window.Right + sub eax, 56 + Invoke DrawText, eax, 29, CStr("..."), SC.work_button_text, 0, DT_ZSTRING + DT_CP866_8X16, 0 +; Run button + mov eax, Window.Right + sub eax, 22 + Invoke DrawButton, 5, 52, eax, 21, SC.work_button, 0, 10 + mov eax, Window.Right + shr eax, 1 + sub eax, 40 + Invoke DrawText, eax, 55, szRun, SC.work_button_text, 0, DT_ZSTRING + DT_CP866_8X16, 0 +; Result text + Invoke DrawText, 5, 80, RunResult, SC.work_text, 0, DT_ZSTRING + DT_CP866_8X16, 0 + Invoke EditBoxDraw, Offset Edit1 + Invoke EndDraw + ret +OnRedraw Endp +; -------------------------------------------------------- ; +StrInsert Proc Uses esi edi Src:Ptr, Dst:Ptr, Pos:Dword +Local TotalLength:Dword + + mov TotalLength, 0 + + mov esi, Dst + mov edi, Offset TmpBuffer + mov ecx, Pos + add TotalLength, ecx + rep movsb + + mov edi, Src + mov ecx, 0FFFFFFFFH + xor eax, eax + repne scasb + mov eax, 0FFFFFFFEH + sub eax, ecx + add TotalLength, eax + + mov esi, Src + mov edi, Offset TmpBuffer + add edi, Pos + mov ecx, eax + rep movsb + + push edi + + mov edi, Dst + add edi, Pos + mov ecx, 0FFFFFFFFH + xor eax, eax + repne scasb + mov eax, 0FFFFFFFEH + sub eax, ecx + inc eax + add TotalLength, eax + + pop edi + + mov esi, Dst + add esi, Pos + mov ecx, eax + rep movsb + + mov esi, Offset TmpBuffer + mov edi, Dst + mov ecx, TotalLength + rep movsb + + ret +StrInsert Endp +; -------------------------------------------------------- ; +OnButtonRun Proc +Local TmpChar: Byte +Local StartWithQuote: Dword +; need to split path & params + mov eax, Edit1.text +; Skip Spaces + .While Byte Ptr [eax] == ' ' + inc eax + .EndW + mov StartWithQuote, 0 +; Skip Possible Quotation Mark + .If Byte Ptr [eax] == '"' + mov StartWithQuote, TRUE + inc eax + .EndIf + mov RunPath, eax +; Find Space Or Quote Or EndOfString + .Repeat + .If Byte Ptr [eax] == ' ' + .If !StartWithQuote + mov TmpChar, ' ' + mov Byte Ptr [eax], 0 + push eax ; save pointer + inc eax +; Skip Spaces + .While Byte Ptr [eax] == ' ' + inc eax + .EndW + .Break + .EndIf + .ElseIf Byte Ptr [eax] == '"' + mov TmpChar, '"' + mov Byte Ptr [eax], 0 + push eax ; save pointer + inc eax +; Skip Spaces + .While Byte Ptr [eax] == ' ' + inc eax + .EndW +; params can be written immediately after quotation mark +; without any spaces +; like this way: "path"params + .Break + .ElseIf Byte Ptr [eax] == 0 + push eax ; save pointer + mov TmpChar, 0 + .Break + .EndIf + inc eax + .Until 0 + mov RunParams, eax + Invoke RunFile, RunPath, RunParams + test eax, eax + .If SIGN? + .If eax == -5 + mov RunResult, szFileNotFound + .ElseIf eax == -31 + mov RunResult, szFileIsNotExecutable + .ElseIf eax == -32 + mov RunResult, szTooManyProcesses + .ElseIf eax == -10 + mov RunResult, szAccessDenied + .ElseIf eax == -30 + mov RunResult, szOutOfMemory + .Else + mov RunResult, szUnknownError + .EndIf + .Else + mov RunResult, szProgramRunSuccessfully + .EndIf + + pop eax ; restore char changed by 0 + mov cl, TmpChar + mov Byte Ptr [eax], cl + + Invoke OnRedraw + ret +OnButtonRun Endp +; -------------------------------------------------------- ; +OnButtonBrowse Proc +Local NeedQuote:Dword + + Invoke OpenDialogStart, Offset OD + .If OD.status != 0 + +; need to check if spaces are in path and if so then quote path + mov eax, OD.openfile_path +; by default assume quote not needed + mov NeedQuote, 0 + .While Byte Ptr [eax] + .If Byte Ptr [eax] == ' ' +; need quote + mov NeedQuote, TRUE + .EndIf + inc eax + .EndW +; eax -> zero byte + .If NeedQuote && !AlwaysWithoutQuote + mov Byte Ptr [eax], '"' + mov Byte Ptr [eax + 1], 0 + push eax ; save pointer + mov eax, OD.openfile_path + dec eax + .Else + mov eax, OD.openfile_path + .EndIf + + .If ClearBeforeInsert + Invoke EditBoxSetText, Offset Edit1, Offset szEmpty + .EndIf + + Invoke StrInsert, eax, Edit1.text, Edit1.pos + + .If NeedQuote && !AlwaysWithoutQuote + pop eax ; restore zero changed by quote + mov Byte Ptr [eax], 0 + .EndIf + + Invoke EditBoxSetText, Offset Edit1, Edit1.text + .EndIf + ret +OnButtonBrowse Endp +; -------------------------------------------------------- ; +@Main: + Invoke SetEventMask, EM_REDRAW + EM_KEY + EM_BUTTON + EM_MOUSE + Invoke LoadLibrary, CStr("/sys/lib/box_lib.obj") + mov BoxLib, eax + Invoke LoadLibrary, CStr("/sys/lib/proc_lib.obj") + mov ProcLib, eax + Invoke GetProcAddress, BoxLib, CStr("edit_box") + mov EditBoxDraw, eax + Invoke GetProcAddress, BoxLib, CStr("edit_box_key") + mov EditBoxKey, eax + Invoke GetProcAddress, BoxLib, CStr("edit_box_mouse") + mov EditBoxMouse, eax + Invoke GetProcAddress, BoxLib, CStr("edit_box_set_text") + mov EditBoxSetText, eax + Invoke GetProcAddress, ProcLib, CStr("OpenDialog_init") + mov OpenDialogInit, eax + Invoke GetProcAddress, ProcLib, CStr("OpenDialog_start") + mov OpenDialogStart, eax + +; it need for case if spaces are present in filepath + lea eax, [OpenFilePathBuffer + 1] + mov OD.openfile_path, eax + mov OpenFilePathBuffer, '"' + + Invoke OpenDialogInit, Offset OD + + Invoke GetScreenSize + mov Screen, eax + shr eax, 17 + add eax, 90 + mov Window.Right, eax + + Invoke GetSkinHeight + add eax, 100 + mov Window.Bottom, eax + + movzx eax, Screen.SizeX + sub eax, Window.Right + shr eax, 1 + mov Window.Left, eax + + movzx eax, Screen.SizeY + sub eax, Window.Bottom + sub eax, 100 + mov Window.Top, eax + + mov eax, Window.Right + sub eax, 80 + mov Edit1.x_size, eax + + mov RunResult, szPressF1 + + .Repeat + Invoke WaitEvent + .If eax == REDRAW_EVENT + Invoke OnRedraw + .ElseIf eax == KEY_EVENT + Invoke GetControlKeyState + .If eax & (RIGHT_SHIFT_PRESSED Or LEFT_SHIFT_PRESSED) + mov AlwaysWithoutQuote, TRUE + .Else + mov AlwaysWithoutQuote, FALSE + .EndIf + .If eax & (RIGHT_CTRL_PRESSED Or LEFT_CTRL_PRESSED) + mov ClearBeforeInsert, FALSE + .Else + mov ClearBeforeInsert, TRUE + .EndIf + Invoke GetKey + mov Key, eax + .If Key.Scan == KEY_SCAN_ENTER + Invoke OnButtonRun + ; need check Code cause numpad0.Scan = Insert.Scan + .ElseIf (Key.Scan == KEY_SCAN_INSERT) && \ + (Key.Code != KEY_CODE_0) + Invoke OnButtonBrowse + .ElseIf Key.Scan == KEY_SCAN_F1 + Invoke RunFile, CStr("/SYS/@NOTIFY"), szHelpInfo + .Else + Invoke EditBoxKey, Offset Edit1 + .EndIf + .ElseIf eax == BUTTON_EVENT + Invoke GetButton + mov Button, eax + .If Button.ID == 1 + Invoke ThreadTerminate + .ElseIf Button.ID == BUTTON_RUN + Invoke OnButtonRun + .ElseIf Button.ID == BUTTON_BROWSE + Invoke OnButtonBrowse + .EndIf + .ElseIf eax == MOUSE_EVENT + Invoke EditBoxMouse, Offset Edit1 + .EndIf + .Until 0 +END \ No newline at end of file diff --git a/programs/system/RunOD/1/make.bat b/programs/system/RunOD/1/make.bat new file mode 100644 index 0000000000..c8b8165b29 --- /dev/null +++ b/programs/system/RunOD/1/make.bat @@ -0,0 +1,7 @@ +: %KolibriOS% - directory which contains KolibriOS.lib +@jwasm -zt0 -coff -Fi lang.inc RUN.asm +@ld -T LScript.x RUN.obj -o RUN.kex -L %KolibriOS% -l KolibriOS +@objcopy -O binary -j .all RUN.kex +@del RUN.obj +@del lang.inc +@pause \ No newline at end of file diff --git a/programs/system/RunOD/1/make_en.bat b/programs/system/RunOD/1/make_en.bat new file mode 100644 index 0000000000..8d8937be91 --- /dev/null +++ b/programs/system/RunOD/1/make_en.bat @@ -0,0 +1,2 @@ +@echo LANG_EN = 1 > lang.inc +make.bat \ No newline at end of file diff --git a/programs/system/RunOD/1/make_it.bat b/programs/system/RunOD/1/make_it.bat new file mode 100644 index 0000000000..928ae1eda6 --- /dev/null +++ b/programs/system/RunOD/1/make_it.bat @@ -0,0 +1,2 @@ +@echo LANG_IT = 1 > lang.inc +make.bat \ No newline at end of file diff --git a/programs/system/RunOD/1/make_ru.bat b/programs/system/RunOD/1/make_ru.bat new file mode 100644 index 0000000000..ed7dc3ac0d --- /dev/null +++ b/programs/system/RunOD/1/make_ru.bat @@ -0,0 +1,2 @@ +@echo LANG_RU = 1 > lang.inc +make.bat \ No newline at end of file diff --git a/programs/system/RunOD/1/make_sp.bat b/programs/system/RunOD/1/make_sp.bat new file mode 100644 index 0000000000..4f1309c367 --- /dev/null +++ b/programs/system/RunOD/1/make_sp.bat @@ -0,0 +1,2 @@ +@echo LANG_SP = 1 > lang.inc +make.bat \ No newline at end of file