From 9821025defac01d7b3acfa23eb96023ed4ede899 Mon Sep 17 00:00:00 2001 From: Jeremy Penner Date: Mon, 4 Feb 2019 20:59:52 -0500 Subject: [PATCH] Forp: fix bug when calling C->Forp --- defs.frp | 3 --- forp.c | 16 ++++++---------- game.exe | Bin 101409 -> 101334 bytes game.prj | Bin 4930 -> 4930 bytes 4 files changed, 6 insertions(+), 13 deletions(-) diff --git a/defs.frp b/defs.frp index f9ed1a5..e38ff3b 100755 --- a/defs.frp +++ b/defs.frp @@ -2,9 +2,6 @@ s" forp.log" open const LOGFILE : log-emit LOGFILE fputc ; -stdout -' log-emit task-echo ! - 2 const cell : cells cell * ; diff --git a/forp.c b/forp.c index 9f3ab96..38f4b87 100755 --- a/forp.c +++ b/forp.c @@ -294,25 +294,23 @@ void f_cdef() { // func name -- DROP(1); } +void f_docolon(); +// C code must always call a colon word through f_execute() void f_execute() { cell oldW = W; cell oldIP = IP; - cell *oldRstack; cell retIP; retIP.p = NULL; - RPUSH(retIP); - oldRstack = rstack; + if (W.p->f == f_docolon) { + RPUSH(retIP); + } W = TOP(); DROP(1); W.p->f(); - if (oldRstack == rstack) { - RPOP(); - } W = oldW; IP = oldIP; } -void f_docolon(); void f_colonloop() { while (IP.p) { cell codeptr; @@ -425,9 +423,7 @@ void f_colon() { void f_interpretword() { // codefield flags -- if (!STATE.i || (TOP().u & F_IMMEDIATE)) { DROP(1); - W = TOP(); // w code - DROP(1); - W.p->f(); + f_execute(); } else { DROP(1); f_comma(); diff --git a/game.exe b/game.exe index 0bc30deb8f152fde79a602fe88edbfbaebba70c5..2fb1c446483def12424426881c28b0cc19ca8f27 100755 GIT binary patch delta 13826 zcmb7~2Y6IPqlUkk6xg1G?4~Cq+1-TRdkeioqz4p{UZqGETzU(A!2kl%K?p?xvI0u4 zDgq)PQUnDTK~PLWq$Ky7vjP2||GD>h?tz)S=bbszPT8|FyLMUN<%~c}>#o2`1fV#8 zf`TrKEVTk-Y=Ad0YjT@iLhe84mh!qd;JzhG7QL91>fMv-V?&tf9IX==L+(#b$T1F*d12URw9`yKf!qnEtSnDzIS83*Vo7 z@5$H7v9MQS|#bRyHcjQBt{xkHBX!7Pr^u(R>zp!H1Fh> z4-DGQK<<40;y;ftd!D7Fde1T?9Nv|_M6c|rhW7*$0pErzKp z{`TH^sp?dIWRUmz-yX@XNR?E;TGdWYPMUXX!2>^UCtqW|yPv5e(%;UXR1c%99$7!t z+mZ(?f36jK(mmhYMvQUaFjp6K-8M@Hao;`2QoL5VoHVWFYj>pt7+Gvw;l6fy#z^nw zY+t%}$lu;_&pp#jsoodaY2II+d2hQ&|DaxIluXf5CQoVbhqreK>IOmDD76-@V`CB z0#m(nsccjkQ~`f`W)w;Fj-!gCnnv{`&r^h|FI61Xa2MUJJWpK~)}GEz*PZI?JkQrf zQ@trvWvN+pLwq7Q@yU6)Xk~yQ+LkuOr-mYswLHBsz!O9Ic%GUsvXrastS3Y zRH}_s9jJCu#pZb{Kl3c%>0dzGiFO5T(L7I(U#fQk)tgi^sdAorYEuoM>P|KCPgk1v z&Qni+x=wUG=-y$rZ=ZUWP&K6LN!5nx;8Rb5f2y}URd1?VRG&QcLZt}%S*fNz_2g1L{UgmYgi2Bkd+I60vVNg*4WoPfN1FGor=A{k7wF!jx=z)? zSJ;?Nr667Er}f&CT^(qXN|uDg)KHT#u30=1$ZK?~=T;fqNy(L z&vd`iJ$jVpeKW^1m)Xu!{YLd8Rr4IrHmWbE9#WmAs+!|T;tjQx>M_+`s>B>`ji(+R z?GoB2v>(%&ay$>&(aBV~RCB4GWqT$XQ@!s}J*OJyqWd-5vz@LR9UAc2Ky@kGbAqZF zRUlP+sw3H+NcO!7m4zyWYDc!`39C$?iliz-^-;D5mQ=5WsyJ07)vRofnd-&wX&whv z5vozyo?2A*e@`3eDM^?8dz!arwr4WkWoD~Lb(^Yfw#SdR&M~T5ROhH_XM6TD*Dk7t zR0pU^WP46gt)gm8wS~%-?YTrXhpG$JQYyb}ciphq;L_GqZ&&JJ)P1PGa}Nni5;fdQ z!#0S6?wa9MM1*@-c$}z^wJ?07i7LSPrR8Q~sz=8s^2B0Oj|X~oXI*rbl_E4tlz1UU zX?K39Y9c4AYU%Yt%*wh}rm7T+vVzNR7UEjg=M@_IiL&mOl^upps!aVL5Tk6Jz2CUY zROun=yXRMlX1uLR^Mpf{Qax)b@e{e|)Z_ZX&x)c2qXXwP@lW+=iCMO)Lv^B9){J`9 zh0Hg)52sWL`o=i*xc~hZFTJOY_j6x*k7oJRFD*+=N>Tp?)frJ|Y@O!y4%RtX=VYDP zb?4SuR%daYeRY1XJG0)_I!Ee6)m>d@Lsr*@PCrpTYjTqwQe4Tp(`=w9=V~;d(Vj*l z8{KL2xKWwLl^fS+ysA;p#wm>(HE!1UX5%?c$~I}!MIZOHmbW7}KIqoXAuv)`>0AOJ?dYNa3B^8$3cS~;0%Q>$5Gzq?%P^}?9- zUF%Yv1CEy9zbwCvFJ;lq%`&xrd=V^?lC`i+UOh$;K^euX3;&q+gMm0%L$pFY87G?X z<jrsAH0AS}XP3W6~Setv`ybViVZV%Ut@3PQ07{S{cz)`caCZ0Lp~3c}DHxeCJ3 z6{Y+M5lBN11(E24r3#|Z5oZ-dV=D?2#9$|)0|>Ebhsp}#@CKSID2_cCrXU_!n4us6 z>#`&`e46;chD236!gT~xTK&LGI3i$Z+wE% zRze@FMKuL|u^)>S^uqz%QP3Zs1N`0=J^+Uhp};i|U!sDdK{$-23I^i}<|`P2A8ZYh|IM3JLl3d)OePQp~gi8KY%5F^$qn2vZ+F_|y}u1L{P(M*&S+ZD`032{Tg zY&e8h!5lue>Xu-Xjxyps1#=lP6wJdx98)kKmBc*-3mCeWWVDdsCk2ZTCT5i;EN0lG zz|C-4!4iD$!nHD_rT7l>$`U?gc&s1;O;NraVHxXKrhpd=b}Cqb7C58eBZiaZ8Lecv zreGC=u_B|@45Ji$jOOT9iLi!Ynu4`xg)<7)F}QwJw4TAgGNTO)(F!&)bXTy6VX1=6 z46~{*+QRUOf=?LED%i^KP{B5an5v928A>SF&QL?a4u%d2b~21mu#2IKs~Y1^(Hesl z>}Jp)i(sqHXbrr;OC3|?8R;c&)C8}3ZClOT2~s z3i9y|4k{=Bhf4v3KPELG2=N#@6iD#`9Xb;Hgv2EU{sM^XL5ncA^$90zm&7Du~)Xqrj!5wHI}KhjkEjUqL+|v==Ep z==f?pI*Iz6Ze?Yi*+uw=Bd`lwuR)sNh$+)m@FP}1<-(*QZ}IS=svX@6%hA70@OLTI zL+tZ)@qfvr^1QYZCra zFiV_4wu0H>EE*`7BaFV5_Gc;DHJMJ(dNY@x4Z=KvHVFT(w$FF*uxQnt1%&_X@8DCF^&HpM2Ht z_8EQ&$RcT7RE^bYRgKm9`hOh1$9FvRdkNa$Ws2Lr)_+Ems|If$LA&%k9M0#;d`_cP zv7ex-a7k5=s^0jzpabl^cERr?XczoJf;KSy3EGw4kDxs^GQ}O=b^Zm7R_m7ptv`nd zTJ?ts+5oGwsa5~_Y`RYKT|s+h`mR_$JbhOz;S8U~TGH3AK6$=jKeW%ga|G?9@LPhP zI%Q?q4Xuf)oK(JQXys^dLHv!IiOh6fNTCc=H?%RUt)4%HLtUumyh{5Q6prv5X4Ve7 z%sg5k;ZI)C&#s+!4t>cs*u62vf$KR(!w@7Xi%S`}Zba^4Ss&ozOyW z?oShfBj^i*x&Ia0!B;pfe9Zj_$(J?mtMC=~6SyBpR^dDDtMZDFRrsF!)ufKsywJkW zLc1ST7H!)X*IFF$E0rKFZEDn}n=ovz)uxvyx1oBQLE;4C)ne_&>TS-7R+-h?TohB* zS8sD^U(_4I;pZwPn(9i6*19sHy{?={)0G$9brnQ^T_rJ8S6PhHRS}bQRmDtQH8D?D zUAT2MMTV}9SgoroHtXt%OkIlDtE(>#>KcgSx`yIwT_bT$S4&*bH5FHN&Bb+H3vo-= zQv9lGC4SSj5f623#bezY;!j;Wk*#Yl@?E+P!cX5x1n4^pgT9Lh(x-_eeOFOI-%T{o zza^UTg`*|kHG1$Zqd(sw#_M~DiTd7RioUOyrSB)w_5H;w$|K@vZ(naalh~T+@#hxAbGhUHv%myMDZIW$WJ;&-vLOXqYHW z2A8lH#)x3UWMMT-5wV78BEc|SI1DpHS;I_G-Y`p4GRzjW4e6q;VXkOkm?xSW=8M*b zMIzO(ShP2|MK{9|(cQ3Aykp1^y$s7lU&C@S!mvV&HGCw-8&-)~hL6P@!x}NquvRQI ztaAysVZHdsutBUgY!qt^o5gy=7O~0ji8x@`DvlYpiIav*aoVt5oHy(g-x)p?-y3#| ztA;Fb$FN8IX4or!H|!IC7(N$I4Esfn;eg099OSj}h43>T5&_1;qNwqRFc^;ttMQnK zF&-DijVDB+@uVnYJSEB-`IM+`JR@ou&x$(6uS8?xH=>#GoM>S@FIpQfinhi}qMh-3 z(b0HWykoo~1{kl3!NwoNNZxXzjW@*m##>^d@h36acw4xQcf@+*&tj|buGnt8Cw3Ws z6$gx7am@IeIAMGszA-)&-y44yH;j+O9phv1tML!u$mFj?galTEr-nZo2oQ@Gq> zijdn(QF6N}TJAE%$o-~RdCU|iPnhE6SyO_%XtK*oCWpLYa?0DLB>9^uSw1wClz*B^ z$-hly|$;#dzzcbf##-in7Nr8X>Kk@n_I}S=GJnOxs9A-ZY$m9RGDFZ zLoPSBmut-()Ud&}GAzVc^tKY7pGU;b`(4Um7B2gxVq!7|4@MCO}^N?3+TKg)1ww2YKy%P1LQ z87*y=F*4dRR+hAkljSVqWhKk|vbtrWtY!H?*0Z=|Q_CdT$}(BDvrLg)EK_B7%XImU zWrplynJI@@X2}tj*>bF9j{LwfPfoVXm(wi^*8rc! z9kf?w2Yn{>!TV%Put$~;{#-T;-Y+`^ACLor56TI_U&sZ)U&?jChveSi!}4_S5&2{A zQTZtNm=qz$WoXC=nG|wT)(kl%TZf#MJwndN_d?Ff86jWE-gjM*xZgBu+AEc-PRBsv=+k|Ybd_6T5;1F#);r? z{A!Irt~C<*R=#iBVxhCeAjno6Hd_%+3+oVV(<9DiK)lU}M4JgoHZw}OY(Xez3*l_B z6_sr^RI`PlrY#(`Z4szvi$Z-{G#aw7#w@6*Egr3H2}rd$(9z~ZXIm1|Y$foftt5Kd zN@1X_3`W?>W4x^bCfX{(WvhfKw#t}ptAbg!YM5h-JhU`<#pd=^$4hr{aNa#%giaW}->uqOC5tT}SRTELI11VyO3Ha2=ps zczYLmbJl+_C;Ufpu75VC`7=1fzmk*t>p8D~h*SDMax(vK&f`Z!yp2*3Jy0v+9kh(- ziEa_SF({%h#zpkQf{6au7%>0`A_n3@#2{RXcoz>MhT>twF#H)Y0yz<*P&INiYDSLb zocjbck946;=%Uxd8odGW(Hl`FdK0QfbLq?#y#+0!x1vMzb_|W)ff3O=F+TcJxT1GsPIMNQ zM(@Fz=)Kq$&FQk}{rD^T0P>fOG{T!PjnOlvDOVDjpH>O)c7r!7oUmD`0dyozXPAe@8Y`3r#K$J8|UJ)a5a7pyzzUH7ylUo z680fJVLvJ)96;TKFVHgKOSDcngpLV^@m9hS3`{u2Z~}`GPGN1r8Du4##o>gna5~{@ z+)DTcURT07WG8%!=LzSzc6kAn6Tin>iI*`j@d}0~{(uRI*Dx*dN6bmQj`@itLv}E2vU0kx7RqJFXq4U;FKN%Ca0Po9dj zQ&%ns!nHZlu3v-fZV`1_fe3(2JE0eh>oxA{VZBJf^UCE2^MY0=*lb7Ih z@>2YmoPit3%kWe3a{QdU0{4Drx6qM(D0ipmyPyMk7#0}g}XbwYV2sBH{GrGNRlh7fdRq2uTq6y{O+ zQVqq_AFg5p?G3(BQTx3NN$L+**|~6MuxqTMIfe+0*?AY{8Pp7~Z(DEh^>Q+IHyO&k z(p>hB(ReE3s|Gb;>f4?aRy>`%Isd9S!00=bGwF*On-=B(S5|eM}meXgL{u#OLCf`thM8C`Q z&rn|~^sDHv{L4Q#`A)IxV`?c!i^=whQJEPB;l|75Nf>?l7Rx|4bf8{)Bn%nT>_x&z&b`UyHVpbIkuV z2o|5;PVZ;=$D1u>Fo*^1qz|!_VC>s!S)AaE4%e8uY-~w*rTGJk;uu1oMbpQ^*I;d9 z{gW*<@GcYfQcSm0DNNv+vc-2g_R)M{(ZBYm3jOCaXaD6d75W48SN`R1TUu%l1hq=? zi=~6Rpsu@$?R?XTC!`PrB+^uJAkD=tFZFj7(_<($peAgNUSD^>r*(Z@t(-+}8{j1Ft!54b9on?sTi~g&v0$=#m z_BBIgoA3Ts`%P_4F`11xM{aGakLiUK%(t}>GdPKMo_@Klp_t1FIJI35>&=yeAY3Hh z4eQ3`1Wurl2Zt{civ(xF)pGXA@Frr5HWLWG1Ai&^3Y)g5-8^zHXKIDEt{oV4KZDjkH2Vo z*=?_$fBeydy|I=lhw%iy8@<}Tw0A)JYyN>`q5(&#mrtC3n&?srC2=$?di2{Tecj3-!l12x@*>-Rm=Xp9gAl z*Z$m(u#MvF8pt#?Kg}Nm*oFn3=gN<7n>ZFG94*Yu}W48;*rUTN%Vk{P4C+VB!9lEQhnu06dW&u&_W3 z^Q*{0ieQ~z438~}L;G3}6>CLC?l3V{G|Ct{T*QfH`xXor-};H88E=mg)gq3n#Z7ji zs9N@1qyF-d!{z6r89PUbx5cRp%V_bfc#?5zG>^^AC>YHt@Pfi)kkNLG2oru8{l`W4P%7iYIlUn@}Alq zsdh)HXtdfLqwq@yP$u2l Qw|qQj!}sZCi15Jw0gon^ivR!s delta 13943 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 NVE7LLo0SFSnE(f*B`N>_