From b08970ae8a81bb9a9e51d32bda4ba76a1443d9f5 Mon Sep 17 00:00:00 2001 From: Virgil Dupras Date: Fri, 22 May 2020 13:48:30 -0400 Subject: [PATCH] Add word ?DUP --- blk/046 | 4 ++-- blk/154 | 2 +- blk/307 | 12 ++++++++---- blk/357 | 8 ++++---- blk/360 | 2 +- blk/362 | 2 +- blk/364 | 2 +- blk/367 | 2 +- blk/370 | 2 +- blk/381 | 4 ++-- blk/387 | 2 +- blk/414 | 2 +- emul/forth.bin | Bin 5905 -> 5916 bytes 13 files changed, 24 insertions(+), 20 deletions(-) diff --git a/blk/046 b/blk/046 index 85164be..9285ef2 100644 --- a/blk/046 +++ b/blk/046 @@ -2,6 +2,7 @@ Parameter Stack DROP a -- DUP a -- a a +?DUP DUP if a is nonzero OVER a b -- a b a ROT a b c -- b c a SWAP a b -- b a @@ -12,5 +13,4 @@ SWAP a b -- b a 'S Returns current stack pointer, not counting the push it's making right now. S0 Returns address of PSP TOS. When PSP is empty, - 'S == S0 - (cont.) + 'S == S0 (cont.) diff --git a/blk/154 b/blk/154 index 4351798..22b42b9 100644 --- a/blk/154 +++ b/blk/154 @@ -3,7 +3,7 @@ hit 0. ) : ENDCASE BEGIN - DUP NOT IF DROP EXIT THEN + ?DUP NOT IF EXIT THEN [COMPILE] THEN AGAIN ; IMMEDIATE diff --git a/blk/307 b/blk/307 index fe3500a..1d1afe5 100644 --- a/blk/307 +++ b/blk/307 @@ -1,9 +1,13 @@ ( a -- a a ) CODE DUP - HL POPqq, ( A ) - chkPS, - HL PUSHqq, ( A ) - HL PUSHqq, ( A ) + HL POPqq, chkPS, + HL PUSHqq, HL PUSHqq, +;CODE + +CODE ?DUP + HL POPqq, chkPS, + HL PUSHqq, + HLZ, IFNZ, HL PUSHqq, THEN, ;CODE ( a -- ) diff --git a/blk/357 b/blk/357 index 92dde38..7bf7b59 100644 --- a/blk/357 +++ b/blk/357 @@ -5,12 +5,12 @@ - SWAP EXIT ( 0-n f ) THEN 0 SWAP _pdacc ( a r f ) - DUP IF 2DROP 0 EXIT THEN - BEGIN ( a r 0 ) - DROP SWAP 1+ ( r a+1 ) + ?DUP IF 2DROP 0 EXIT THEN + BEGIN ( a r ) + SWAP 1+ ( r a+1 ) DUP C@ ( r a c ) ROT SWAP ( a r c ) _pdacc ( a r f ) - DUP UNTIL + ?DUP UNTIL 1 = ( a r f ) ROT DROP ( r f ) ; diff --git a/blk/360 b/blk/360 index e400a39..59b1089 100644 --- a/blk/360 +++ b/blk/360 @@ -6,7 +6,7 @@ 0 ( a r ) BEGIN SWAP C@+ ( r a+1 c ) - DUP NOT IF 2DROP 1 EXIT THEN ( r, 1 ) + ?DUP NOT IF DROP 1 EXIT THEN ( r, 1 ) _ ( r a n ) DUP 0< IF ROT 2DROP 0 EXIT THEN ( a 0 ) ROT 16 * + ( a r*16+n ) diff --git a/blk/362 b/blk/362 index e8788f9..e940db4 100644 --- a/blk/362 +++ b/blk/362 @@ -6,7 +6,7 @@ 0 ( a r ) BEGIN SWAP C@+ ( r a+1 c ) - DUP NOT IF 2DROP 1 EXIT THEN ( r 1 ) + ?DUP NOT IF DROP 1 EXIT THEN ( r 1 ) _ ( r a n ) DUP 0< IF ROT 2DROP 0 EXIT THEN ( a 0 ) ROT 2 * + ( a r*2+n ) diff --git a/blk/364 b/blk/364 index 89c12ba..865da53 100644 --- a/blk/364 +++ b/blk/364 @@ -1,7 +1,7 @@ : CE!t7n-+dtxW0CD?qy4|PT-oU7K;M`=XUbwJ{o_pJO^>)qe z8pa#hm`E|lzsPeV>bJ|l6`m8cqbc>f9o%_nfH+@1YB?vc(=8g z4$`VGu}EN+B-U&z2Nm1GBxai(B!HF}a~Y_-QBW_S+(Pb+9m(alq~)PxGEG}=u4X;7 z>Y2Re)vwi;kXOC7CXgro5lcP*p*R)4WPvhczBYw$3eTW}L#^O4`Lxv=zj6)jaP-p(y>0HCb~ zeym?)&n_?3)Bv&muhHGnaBn(lQHrZCLC*R)Gnuv_C<~X~19&-i9>kH}9v7p4$Z_1- zf#3`Z1k$B2GGZos${C60)UIHUm7iIph-4Elx3R8uTrO;ZK=k&M-65UrNi{l=X~<)s zE@fkYsF|T)B2p?`1oyK)8h+-7hZ&nRxio~y&%QnU%#=XxPMQ^8kp6V|nV$%3BAFIg z@IUu9GHxi^c}NJ9lOhFdV1Wd=5B}UXc7{PIcC2cPMT*X{@qi$_fDq4+yFu?=e z$%qGj2%3o^7swu-b5}2aec5bOHlu|wp;<0(KM&S@gF~5vcXR5ww9pB@5^gy@x~wST+c)&&R=)v~<-UIb z-BeFu?JsVRyD7brK9PxGhisYsB%k1`Y;O2gJFV>WX!y z-KbL$(x7hf70tEGZF1dY?zlMJ_~ld7yF4|6-GL3HI}D<0^;(ERu|xo+%rG(B6*Z$0 z)@i^JqHwQiMic3JHIP{vO)mU{K75~5%zX{Kw);`oX_54BO##8hyA?C8i)W{l|$ zlTKHan>cJ;Pl{tiuY~3nL>rG+bZ=3J+H3-t6F_5&9X1)XdVD({wKCLDBzRic+U?@G zu?@AMIl2VU*1`t{snoA-FS@Q=SGE_;tI*fh(poKI#3y~?q)(i5#}ZXw|1rqfye73C z^d``SJpqh4N0Zv6p4D;)RJfx7Rh_4~k*8@`qqzZ^ zeMb)t95{g7gUmo*vyKv~SLbkMP$M;KjJE+_smYToIB62Nom#y%4aj$NU}W^rL4O!I zWrLWbfxM7Z4oNwEsCZhxt~A5Y5KY63n&L{8Wxb{{H=EB~*OkJ_C#xLt>k2zBWgqbG z$;&pV4wAc6%`&6O=XsSaD}v+@<@6biE#J2pnPW2=;Y2gN3R7%(cS6MY0YHOa;CI2z z5KLv)q{6TH+l9i@P|`Tz70yc)nuT4sQdB9_7D9ESSXaA*mg|ai>$+l)i#S9n`d}3% zCGIe3>ldmy!e3Us-(R<;djJ1deX``gsaEe$EnV`b(O>6_xvmiO68ZgB{(C5oM}s__ z8ItQSxnt~FETCOXHA-oHPvZ$uW0adHC zic+7^=G7(?e28|X+8c$9T*YYlWV*dDdAOSaZ!W+uTSJsi?n;^wCn|qhuUB_jb#=*F zsdcIUvM!=JKS9d)e3R%?2fW&3({aXi+oiHI{F&2tS-V8F4_LS=mjv&JtK7H-j2y5u z2_BA&p65%2d-fo#jzS3)q3}ZVvNa`i_8-cOjU3y14{|jH=2vX|*^GGc{A<=GtS?*n znGNs>Qoj$Rt+pv!h+^H{(MT+qj=IPy=H(61SO!hfVm?NKqz>wVKM zOLeU@<%Bnr@i=Ek)*cr%&yjvO$~tyx$MM7_ZsXnUerPgC!?=~7K=YD^B}}0I0J}8$ z1MKPsH5cBrehy`K1yg9LXp&Y|UxOq*Yq$$6JYwr%G50u+aQVzEx4_^mZc+;@J!Z7; z0Z~Gl7^R#;Sy(>St*bH($B_oMpk5qzCe0nuG$-jDyRLq}lpAHTR3<%=jHcSw3$p{n zHE~wsPsz-L7ij`P4<{3;bTEMAkw(+A#iT2i_4lNDrZy1;T?hkP%GhAlxCTSNTOTEF*dP;PO29Ke;45 z_oYtr1+MN`T5_dC_~g|oCv!7WlwW8JOo1y!e6^K{`>_&ZlAYzcopGe-DhvpvYS3Cd zvuD5<@01ITO+aB&LS=a<-pM(ub8c{kDAg0@rN)3)%$SH580F~aktpqX7{u~j?_Pw? zOQT~02c9s-GY1ci3?3PNnu;-o#r=W}*pYKYoL+i*c;ujw86GnRhe0POHhb@enLLmU z@`^QLZA5+yH{!9h_g;Dl_IOe2KXXp&JZ83d-Skbzyt9^a4(r?s6fsOC||bXGxE4t^UZ0&gO`AxJa06}C*&i6oI?Vko&_#tGMq zga6}f_lEpgMtjrsCX2;uju5*Y#^~ysu85P1hf7dbc`OhLv>q~*ue)!#@g65u z>Xp?E&T%)}A0jgnPqf^F4q!pNE%Ra{#j$B)=Grif)(dhITuw2t!O(j(dxx|-yz!K9B}MFRR!KfgQ#K3w^M$Sdn-Rl?lbgx8Q(vWvzF#6B=wyEJXvuu zPtVtCA*?IVC*^WsIK=vL5zPRUEFc9;(olW@GpAuBEnW>c@;5`%YgK1 z?e&8qyNeXD zGdi#{^740>s?cub*!>EZ%LHnqh)S$4R;K8WTv(l3h4#ZjS7EQ@jiwSd=<1Z^5xZPv zqw!SKE$m8xR#L8=PgyE>v5D@8CA{=4^cU`q9l=<_2A~#ETl1thk&eaJ3A9uy9qf0( zos&rI-Xb`WPkbzm-wR$s!OL6f6)ZA*OCcCR?l6OD^T7xwyL)2sXgQt4w)fqt0=hqs z-&;lB#sP=zt0mA=i(xonl}h^S_PXdr!6q-5{EsU}hrvI)7#;(gR;^KI@V>&&9reHo KP#k#})c*}A(oF9F literal 5905 zcmai2eN5YTdVhW|CSbtW5CUo1+s{CXT_Azb?3#`@+nCg=v3<5lgQ7H-Hwae>5zw`1 zl7{Qub-PJSn(qJbM^>pqi>hpEZqc-6oz+b}mWW76rFCN&TewTg5shlsJ7rDT=kxvA zA(c*>NbKM9e4qEX@AGr6)W`)4k$>GHxobx5Z;jlDk()AB?n&;vk^6~pPkt@;L?nlQ zH$cbl%lbRIKb94-Yp!jU<%dhTCnRuWBIp6);mh)HpYd=jQQg4##8tC&?I}6)LEz5A z`iJ$zkB*O@3~rI4n#E_uu@;{-7T=P^55IPDi*Ff=AFexpv)H8nYOi&rw~MI+T=NNd zcXg#bV%6NBNMKepHr-VTD%wJlbXO@z0Id*n3#hzNP_LlnrRDecCRZI{M;3%blbMj zwx%aObWHDWZY%}1EN|Pk?bgc6_4}6I{L6r~nqFCQZoc2K^wB4a_4s>D7N?9)7RO|9 z$e??l1YR2&eLX1tbH?fc^R8C4?EiB8r>hf73$=IQ;o|a=PXMQ%`)tF7m6x~3O4YrG z%S#LZwAI6p+I#fu)=GUn5Vijq-5-q%WTP%)Q_T&?shv+Jvu*@s>BdI@Z!Lce;@*Lj zmna~X8MoeaGQ|uso0*qFsS-YuTZJ&WFPg3>U~VZ?Di(RsOB874x6g0hlc?`o@jsxw zpS@#HMPOolbTsHkrk8sA_ta+(HZ`sOHSoKrYcnf@yb3XpDt}Bm?a8!OAgPc?pfTen zAhL&0DA8M{yaD&=cgNrSvteSBX;y(U`Sb_lZ~m1+?oXzx9+6%gfAh~3Hj&IKEcnlS zfaE%c^)VzgRf?enY^A`KGJvYo;1Utfc!*#KVM&)aIA1ki*=m=x8daUn7bMu(pX~L+ z4@L7vkr!m&p7+(Pes4A1YHls}ez8}D-tRBynXI1xTTeM*h(+?4$B5rk@MMx;PZ>d+ zk3FqQJQeX*z^RXjS{(sJD$>KYpk+_X>Is?>qpiBy6xdh}8H;0IFAk}I{yu$M9Q$f< z=pm28gHa0j13U&Mj!$M%!7|xYgRaOU(iwF3rW*DLFquwfLq!JF@A_$dmGkS3C`S5I zPZmOsz~La^vYsmEG-m$pqSmoqg#fdz5^q#wgnxKtnT|Cpj(S! zX`ZC5gwL9+rA?K@x^kzji2&nKPj}joIt?}v+|^V7>(%kD76yaVP3kTlXAw#N~&37Khd1aGl+BHL_o)R%Vqw2XYmgp^oz@Gr}n`i8>d}kn*MK5~V z>^a+!Vu(0v)k)yh!y{usx#+4k?-*eTg_G%Qy|_G%eHCh>=`;p_2V^HFM#iQ{H!QZ? zF_v-ISu2L;pe@kcfoS6~XO|a+rOT~=%L-`iD1}Xqte@M?qfSD#MT)1B)^1nNtzD=M z%hRrat_~hJVoIO6y=cu?Gqx99HKDJoqq9cEh$kU+5>hAqvBVaz|0&36p5Lqnd4Fhs zr9##|hK%%}TP=@mUPM$DY(MBC{w7Q`kKb%J&sz%!RHUZ`Rh_4~ou_Hppt%j2Lnn_N zK6(_n2bqJurjBB%HZSAMkydH2h<5`omOjbh#IJC>t!iryP~ha@iOJ)~f)V7D29cvh z$|0!|k{0ajra61fXn>(%nS&XgO}0r{-#5u!ZPEeqtr>;0U#>IgYX;rd(vJoYQlF&Tr<5Y^9cNP~j4sYFAp;4DHyO;fPllq>L=A!=%JxCbd0M z%@}`E^^suXhUz2#zv`*t-=^ApOtp3?m_>*E#U@r(Sn7-Q_xb#HHjhV(ygoLh8>AQw zk^wcFB+}8{fnstH=eTOjNC&0}U^d_ka?Tu-A%qS-iD4HuJ8*dx{W|a+-Z$ zn{}NBZXu5g$Fe%g+?=&)3nRjb5sD}*r%N(Q=Yiv6Qxm5Sehb-}1@qf(el{RpoPiD2aLMTsKGT4JA`J#W z+U&mI4oj@RKiV4$WusmxQ8V+lYAr{m#rl1{8Zrkt4d#KIE?kebQc3(u@HB#?vsV>%y;?z?< zos7qs9bJ7aYfh3rI7%J6t?%K9Chp??_B3w;u`qJ=C(vBBqvb>@g?El+@jW40O=v&%Wg^)p$10fq-fezU-mN=NtYR3&7g)oqhG z)P)tGZrjvpIEOUQf@*c#mrU=CW|^e9Qrmo|jLkD%rjy>AjApuOmDx?gnmBLqQ!|tB zx(p-ekz^v14JEQ1Cf_X`F8Qd8ck6*z-$CA>#_!k>?ATfTrjGOfw)gNHZqNu_@SU zbBMp#K+G%#0IANxA+b}X4@&0jBjsnUoSnj_R=*u|sqz`C2mkLF`aCRs@qx?>jLQ+A z>EDOt+I%0#|GC^Y$---?2-U`0fC6_a5n8ODC30D5V{5%SG6fqs8?Hic;FaU2uok)i zE&z=7WqP=mz(`|I#s2D}Pr(gwMYa2aHBr8VemZYW%YR{;kn20{4#RUw~V75qAjNKiGbO zX=Y;wVM!FjtyavB0<2YW^Wn_n8HZv<{vC>Ubbwu7xn*E$K|FHyZtLp`TDnKLyJ>cY z{Fh+p-T{UgtJ4eB9A~5}QFN8ycVjAWAK{*$&0st1c%xCJNsJH%lNV;3@?P@rKhE}V z&7Tcg7rYlJ7Oy)>?DH_jHZOR0SFnIsh8#G$Nd3U`7S110!QYqxhACO?JX(n}fcymb%wQ#*Rz|tAQW%%~&UVOcBRBq1!g8 zzCzi2g;=~89c)k{2YyRyd>aITiDRQ&Tl3+KPA%78uDdHv_~=1c z(!KFS$G6Y}6vVxm>x~vi(?%*ae$L)rr1!1@Q^PJWaZoa_XW`QcUxSq@o$)ouA6M!H zjCO4>?bx*w6{G#quMxW|SdP(Tyqm8g1?&A-<8ESD#ABIkHSnt#&t6p|OIUQ)Dp^)N zvSjVXT&q@#evfL5E5Ol#(kkxR)#i^&=>W^;F3M+G{$3SFHk!s|nB9lfq#2vkMT@(X zZk3BJU3b4KCgUCBS?poMm|~m_i$yicq)2dq}q4Qu(C!S3YU(_hhx4w-BMTR)hRqm8O0?fM=?%=jnO57Q(s&eOfLH z!=sj%>yVZ~$VjDMO}W}=dz$_PS>qj4ZQZHTs5I9fzP>Slw%O^8RNSeWmj8yM^dQ~D z4M4N_)%C?G^hcW!2KBm&w{p*!Dj!}y_%oiqj!gJ54Nvq+puO67QRWjbk+XPnbA&yk zpWKgm&;9+I-e0Y(lS7lICgp;=P9peK>+s3Rp!YS>_#v#!Qcz0gMEnW#_Ml>x1$+&G_g zea%Ql_r?-+@+0&YZjZg8Si%jU0a4rVWFV1^#WyRoR;nF5;DtM9klKSqbV4USmc=gz zKSaUnd+KeszNZk35If9~hI}w0$^KL<9<7u=#LoAlEd}&}JpSMo`7sU{w%@}`CoBqs uQ7bvnc+e|9P;B~&$^Xpa^f>$h#_>DYw;G&Ahg%Dud!7MKf$GRl(EeXY%Nia4