From c7871b1b618962475a9f9039d4218e5b55e6ea08 Mon Sep 17 00:00:00 2001 From: Yvan Janssens Date: Fri, 22 Mar 2019 15:09:18 +0000 Subject: [PATCH] Updated README --- README.md | 18 +++++++++++------- img/ile_lua.png | Bin 0 -> 19502 bytes 2 files changed, 11 insertions(+), 7 deletions(-) create mode 100755 img/ile_lua.png diff --git a/README.md b/README.md index 88f693f..eb19526 100644 --- a/README.md +++ b/README.md @@ -2,24 +2,28 @@ Port of Lua for the IBM i platform in the ILE subsystem. +![ILE Lua screenshot](https://raw.githubusercontent.com/friedkiwi/lua400/master/img/ile_lua.png) + + ## Installation -TODO: document installation and create release artefacts +No binary releases are available yet, see *Compilation* below. ## Compilation -Prepare the source code with `./prepare.sh`, and upload the resulting ilelua.c file to your IBM i or OS/400 machine. Compile the output with the ILE C compiler. +1. Upload the source tree to your IBM i machine using e.g. SFTP +2. Edit the Makefile to contain the path for the source +3. Issue `make library` to create the LUA library to store the objects and *PGM +4. Issue `make` to build LUA/LUA +5. ??? +6. PROFIT! -TODO: elaborate more ## `midrange` namespace This version of Lua includes a `midrange` namespace with OS/400 specific functionality. -TODO: add more useful bits to the midrange namespace - -TODO: properly document it. - +This is a work-in-progress to allow easier interaction with ILE and IBM i ## Sample code diff --git a/img/ile_lua.png b/img/ile_lua.png new file mode 100755 index 0000000000000000000000000000000000000000..f81b0030bf21ae23f3aef30160228d008207a6e5 GIT binary patch literal 19502 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

_9 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

bju2L4Rc9&0R zg)JI=itc?qH9fW(ejE>9b&T7daQ1?xs_93CyD|h1m`m=pD!-7-HlU9SIA@G(qE$I- z>B0w1dSheKP(~nJ59T*e%6LcFuK`W*Rc9=`WLnGkBiWY?7ee-DiZ35%!M@@(ccOS#%Ym zM;T+JGO`#&A_JYM$cV=wc<+sP4=eE%_S_q8nBba0&M9bgVX$q1S$c;vx}JVyja}q` z?+a$;xy%8bO6ibuaCtp&a2oTy^CoDi?&w6OPb}A~iQ0cU)j4ELpqujwx;9)DUT*J|so(&H7*ae6`i=sJ#U0xJ*lUpjA||0J!?&$5Kimp*cl*_|ZW0wQ&ucU17=>cta> z;k&0>v*2F^yGoc*o>*ow9yfHPV5)1K>FeEFh^e0%X}P}=gRh)_=|dSffY9BI&#Q7Cl;;x=5tXwjem zh&m%if8T27W!Yw%Af0uk9ZK>r;i$W=?reUm zulC#eiTO*{(yGLe`Z!bKP|LC(7;xhNZ)+pNT~&BL=?DBbFzdq=|HYHgwFRGVo02fv zwLbb#89-beK1!%d#t;g$d$eQHtxJU@*9co85ObV)3T!!%X_T zV@5`dUOJ#7-pVUqhX4)wP2wv9Tc z4xBah(bRZwZ_nr|P*QCEMsvs83!pOu-$ByhUHfv1S3a=Z};JnBjdFG()sVewKdR`uRk*?B!~ z?e*ay8%G!31$;t@tg0kG`yab_f_cD#H5@V4dP0j3o_*xDc>={dw$E4|UnO_M&$du= zaLce|B>g5v)s$J$k1^kR!x9FG_dC#G(sRJuC>UW6Gvui&^CJAaJ3}&H+GogHl7#l%v11L(JKkhbdLn?Li?@v1vi8W+ zgk(fWWf7+Q@nsEBZNS}KZnV%a*TbWp6a%Ff+0ZrnCa|6SJJ`# z;Xfe|-FI>kTDQxG`(BcQK!{d0!flA1Ls zJqtiOEMxOt#(a`Ukc3>h+MB!U`&E$O_2Ck(`3cF6i^KQ3STk%1ZN`=cUpbspAM>c3 z2ayM?abbGs~Xz!@C9ai z`~Kc8FY{Xi1PYce=Ot*tl^nbr#q*zB%MS0prgi(9C5Pn$a!_dIE=Mc1_ZHP-+H$il zX@l5smuKH-a|CYW*CAO-A||ZOmXwUDmD!#QE!BIim82DEQk@*8TEYwMpT!RqOb!RO zMor~gqM@LPccBbH~ z&1!eI4{nOB43Ulz9IB`?t^?&mN$`V4dAyuc&H*L{#ln2|c5D+;Y%=WDUY+O$gyJ!m z0Nb8cSS}fXG*r?KYtW|RhbaS@*q3DEz z_yko-lXfU}_Od4)rg(*SkJw*`e{Br3AB!h9Q50|dDu-IY;>Y)ecNxpGP!oX8vv2H{ z&b%6c^V3h6$zkD6qRh!x_RX_H;#M(yVt2*8yAjc!JLot?N-wE5)z)$5<$hWt=@f+R_fkY0+^{Cv#VZ(#BqEfD`%<|WmHlprI&nlJH9tG?b2$7|H+vE|~mOeeS!p>;j@fn@VF$*0j?u7m#qc*Vi`SpZJd zNDYgu0z7tq{}z<+EYattV#Z-fPH~XD<_{M^6a2kGQSOo>`;1F3WTmmd8$XqZn?)O_ zTUgn%kfKiIo9a~YcUb!+ttS|@pz*#UlmJIY_5KJdu2X+7@@24)9Gc)I_?LP7Pkt4R zR3usIS>EVBJZu_l_jvpF==gI_J;7^ryVO87AXr4ErF`g5O#Lm{|4%Uhefwl;^iNH! zHu+XSd#ZZqng6Sy;fiNk+uvh literal 0 HcmV?d00001