From 38832640e7e4830300a092fd588c4a4cccdd1ee0 Mon Sep 17 00:00:00 2001 From: David Schmenk Date: Sun, 7 Jan 2024 12:20:58 -0800 Subject: [PATCH] Don't add new word to vocabulary until after it's done compiling --- images/apple/PLFORTH.PO | Bin 143360 -> 143360 bytes src/toolsrc/plforth.pla | 11 ++++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/images/apple/PLFORTH.PO b/images/apple/PLFORTH.PO index 94c60ee206e125bb64d5031b07c4e43e55896f7e..643f673dc89c53a1ec847666ac559ffaaefbb5f1 100755 GIT binary patch delta 3967 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 delta 3872 zcmYk-d32Li8prYbzJ1dLBCVxuXws%HC2f-?ZR06|E0CsX8=5vH38jG0BOnJD7Z8px z3=prfiK6EMor!R-!qp!>+4eQ;82@ZLTkls%jI^qD>)Kq3ix9BE~@3OKH7VyIXFhT(lDG9(v_sGVwNdlAm}#vCN(1AkHDSx;1~4 zyog+%c;V+lui{RQHu?O4sMtU+#jV9gHU-27WRpkp*ZCs)7v$w`rBL5X*qrG4xnJDr zQOlirk6ixzJxS4sUt|%_cr;?6u#=54%^&8s9=}bg#)*6^_J&kHY3n zbzZFsU7~@y(wls()JIXpyu3xIT1+8N^(sz%7U4ieQq{;nT+AoW@oLe!@CdP#ysa#) zJ4a(af4x{vV?ue4?ndNVXEmK=<*D7BI$yL-yhXjGT#H4*jp9@CxpEV^rbg_cP%4t6 zu|N}}LsUI0Qm$4EJ1KMc0+B$yxJ(XIn5rW6?7Pk?M5rRUyI@-%s&y4f!I)nZ5!)-0 znyUPwlDN0R)Eo*%V`30RN85;B&Z^3UM7ZOElHNA-*xibfp4fDJJH@bEV^d!)v>q zWLHP0EzzUvCS^~;-*vm$B2v3|j4zy8+>n^x)ta2{y(6}wDDi98AU?GG)Q!AOI91L^ zCr*{|rP@CDZH}Ti5`%s(Q8pze{ytOL(6;aQdsSs~qTyUQuXD~VQ5Ggr&bv8SdHx~O zW_PhYH!^|>M8rm+N|GT2-i8n4j$DX=NdRn@7l-80YVw)4wF7;L_6ALc= zSuxuB{>QDvZ4RM&(2QAFiFMe6Q>ZKwY6F_F0^i^Oa*Ku9h`D$i&)`jL!;d(OPGpq` zH3o?tXvYyaoI;H_MO@uP=;adX0F1?COvPL*!E$WCRvbYmvPy+ohQ&CD4k&J+rofIe z+=hCzVmcnia%_glBUC3wc;Z4`NNC3y7-jqfm{2a%W!QpqP%4Dl6FJZkKnUxw1?||2 z1L#1ySEx2rB8I7$;}vpfl8`a*Fk~ynx9z-gCFT08EFmo@fCDAVzDrR`;-iSIS;82X zWs!H0r{F%!z#lP>nPfJf{0RB6EVDGo&)_*ckC*T=UPl`?;(ctzN7#;?_yW7|BlhEH zmWa#agx_!xm-zrC+bol_g-nAP8R(NO3>$r&Tm&cF@M0i*2%-^DjKC<2!JU|bdoT?% zFcS~*o)2foEpj2nBQR(@m8}`iW~*`~^~-o2TURt4@Yner*Re+*r(=b zMrMvCvvY*Bq7Wr0g*QhSbBxiyT(Pn*isHODQ3fyiV<2wDAk-oR z?pQezT(NQ-?!i>dz)UR0qj&;OVg*)VHU5fqXv2Hhf{*bj;=6ch$9MPvC(w!0I143L z$Yi9$0xJqp1SiViMI{DeFsd*V+^Dh%!_k7#XvMf(VNA(2%X@P9-!zTJ49vuA%!35? zt6YRf@i+&b%c(YH)JMcA*;RMd$Jd&(JrdWkxwx-JrR*N-7 zTIt!XJpW=sDQ;jez-pGavsPI%jaoJhrQd*&7>h}`oB330rku|DfYofo$@A$yMs09@ zIqOQ!zsUJD^k2n0_>le%_WpzQbI$D{{}5;JD-F%28X0idOoofK(w1u6#9C!bGiq6f zp_$%j*1Ir;{(Y>o*&k=um?ZkpiLM@Y`u(=woK!+%`D?* zXTSh6$&>sVt4azTwOFu;of(Rjk;b_5Vv|=14VhZl%;DUV3 zSc0YbN%CoWEAbb+gtd4d+p!a0V;>IU7*2CO*{;c+b|LfZabY;@s^PM0M!8*;gY3en zwVRAEb;O<|C$VW7X479xe<^!bkzXOdPTt7uGyFiWgWgGc=czA4Ef6vlX7q*y`REG= zN>Cc-r3_vS!0i}<8U)c)AdKk+n*0-a9u{LM3_OKrnXhHOp4^6wcn@3g2|i=Kt3Z|C zlK0_foS=8MKr=3LE}o=wVWGFqGt(W0N7rNpIiPFCP&DXCvWa;MMq@lC;%-dC4ED~_ z9da(KWTeo6kCbvNtxdV%qiZk7i*cbNL9o?mDj*X{BojV>Ce^?vdK dS?MdJ390D0>G}-iS0$054p^9}yqu}p{|hY|??3 ^(dentry + i) break @@ -1260,7 +1261,7 @@ def newdict#0 namechars++ namelen-- loop - ^bldptr = 0 // Flags + ^bldptr = 0 // Flags bldptr++ *bldptr = plist; // Link ptr bldptr = bldptr + 2 @@ -1268,11 +1269,11 @@ def newdict#0 bldptr = bldptr + 2 *bldptr = bldptr + 2 // Point CFA to PFA heapalloc(bldptr - vlist + 2) - addhash(vlist) end def _plasma_(a)#0 newdict *(_cfa_(vlist)) = a // PLASMA code address + addhash(vlist) end def _var_(a)#0 newdict @@ -1282,6 +1283,7 @@ def _var_(a)#0 pfillw(heapmark + 3) // Poiner to variable in PFA pfillb($5C) // RET pfillw(a) // Variable storage + addhash(vlist) end def _const_(a)#0 newdict @@ -1290,6 +1292,7 @@ def _const_(a)#0 pfillb($2C) // CONSTANT WORD pfillw(a) pfillb($5C) // RET + addhash(vlist) end def _create_#0 newdict @@ -1314,6 +1317,7 @@ def _itcdoes_(a)#0 ^(_ffa_(vlist)) = ^(_ffa_(vlist)) | itc_flag *(_cfa_(vlist)) = @_dodoes_ *(_pfa_(vlist)) = a // Fill in DOES code address + addhash(vlist) end def _pbcdoes_(a)#0 // @@ -1321,6 +1325,7 @@ def _pbcdoes_(a)#0 // ^(_pfa_(vlist) + 6) = $C4 // JUMP DOES> directly *(_pfa_(vlist) + 7) = a + addhash(vlist) end def _does_#0 if state & comp_itc_flag @@ -1352,7 +1357,6 @@ def _colon_#0 newdict state = state | comp_mode if state & comp_itc_flag - ^(_ffa_(vlist)) = itc_flag *(_cfa_(vlist)) = @_docolon_ else // comp_pbc_flag pfillb($20) // Hack - get VM entry vector from divmod @@ -1374,6 +1378,7 @@ def _exit_#0 end def _semi_#0 _exit_ + addhash(vlist) state = state & ~comp_flag end def _forcecomp_#0