From 9c76ea92c39a84c81bde1d2286c258fe2ed1f2cd Mon Sep 17 00:00:00 2001 From: David Schmenk Date: Thu, 11 Dec 2025 18:28:45 -0800 Subject: [PATCH] Simplify turtle API --- images/apple/PLEIADES-2.20.po | Bin 33553920 -> 33553920 bytes images/apple/PLFORTH.po | Bin 143360 -> 143360 bytes src/inc/turtle.plh | 7 ++----- src/libsrc/turtle.pla | 20 ++------------------ src/scripts/grturtle.4th | 8 ++++---- src/scripts/hrturtle.4th | 8 ++++---- src/scripts/turtle.4th | 7 ++----- 7 files changed, 14 insertions(+), 36 deletions(-) diff --git a/images/apple/PLEIADES-2.20.po b/images/apple/PLEIADES-2.20.po index 4f09208cba5d66f197a7a2d1725a7f47b91fe5c8..644f5f426017f575008bb8ba81615ac618d4bee8 100644 GIT binary patch delta 2908 zcmb`|eSD4eAII@?ot@=0G`7yL-fR-H3d>D}$`;Gg%*;q6QJC)N22Hg)^(M;FY8NV& zYVL2BEeYM2S{Ti45>hFJbVpK1pSR!5qx${v`=|4Gyq@QCo%6lE*Lggy^LSi2r_YAw zSgYpxd^46uh84{7&9)&Xq@-JLjNcoY?Iy&gPb)dnaK!k3eVm##)H%1ZWMy{6gvQMs zk5>CV2R!G7c(?H~XHwpY(i2YMcz4TaZ z=UMeEzjeM9V%4`ASPiWUtWc|w)!5Rx;bmtQUl_Eret3{~l*iMqQ3FqCS^dd@WMq1;niB_gXYlc-|&9UZL3#}E_T5E%~+1hGVc|Eggyxntm+q~C0V8;i&-Et4x zeAMd+%ROepNy`cHXS`K;MLD+aSdqvNX`)f4}P6Z&0FJxirwRa77@yv}r`V(>uCr+_^Iv zYMWjIQ=_%!|9_~}e_rYKiHeAJ>zYNxx(lKr;tE?t?D{9SE-fgkh$~$ch#&h;?)s-6 zTpSwV6i50TB7$f_G$oo5k;Fv=h~`8KB8rG6S`rr%t%ysA)e)GNGApogNU1n!Ne`Z5Mn5CD>00?jTlbcPK+Q%5_b@H z5~GOG#26xj7)#tm+)dm=+)La?j3dSq_Y)5g4-yX%6Nrh#B;sKrlbB3ALOe=5Mr0A$ zL=KTltt3#FNByVg~UP@iZ}$$S0m5W)aU41;lg2^F$%x60?ap#9ZP9 z;zi;mVjeM{C?Z}a77(uxuM)2j#l%8l5wVz9LM$bg5zC1c#7bfnv6@&zln}2IYl%{# zjCg}sN4!a_C*C495F3e2#M{I>#Jj|M#Ac$L*h0Kdd_YtX9}-)MZNzq>lGs7)Bt9al zh+RZAQA5-cb;QTSZsHSS53!fnM|?``Cq5%SC%zyK5ML5s5eJE{iEoHQ#9`tH@hx$b z_>TCV_<{J5_=z}194CGzP7uEkCy8H)--uJhY2pm=J8^b8oSASeuN7qZtYGUrtDfbz z&bLCW`c?z0p>=^3YBjPNTVYnXb)gloBCIA>Q>&R3XDMZS1O%o5Lv0`Z)9UK9#f%ocORT=9ZPyet-oSH!F0HBl@U zibZ0vSR$5+Wn#HlAy$f2VzpQ!O2q48ttb^`;tjD*yeZa;x5NgqQEU=#i+9Ak;ytlh zl#4Cmeer>)5Fd)IVw>15D#Z@5Q+y<<#4b@SYDBH56CaD+;uEn)>=paOr((bOOnffB z5C_DU;wy1bd@a5ahs0rVM0_ibitoht;s^1g_(>cS$HmX$g!o0A6u*k!#3^xFoDsh} Mo63vMI^Bo;0n3kb>i_@% delta 3005 zcmZA2d7O>qAI9-Bk``@Wy$Jb&Eh^-Q>NJA8t*agoO}Bi$FC zy415Ue~{UzKxJ?0fQb0i31N*gFNO6UdS^L)d=HmrQo6TzW=3+(sG0k#{O>h582w^vne{Z zdYc4)=LCOjtD5!vZ5+q(goTDUVQxo{mj5&w_}yszf2W0qx||Hxe@~lwbDhU3U=_3q zSzfEKRm2Ll?ylYbtCi{~jySux&T?3;cHaq^L;H>e! zv7t5(ICK2x?NG2#vadq9W|59N$y#A$Slg}hR-IywyNT62*fiOfmE6GXq{LVqt!`E? ztB=*s8fJ~L##<@YENi~C&{}1sS((;0YnQd(I%MTpr>(QrMeDM4&ARP&=DI@~rxXlv zQVLrUAx`9)wCK~O|6!}sS|u1llSKwKAfAq*Y7PCnR7HJFYiQd z-r-i>W|1~HniuCy${!rg-tYIW$RFnB960FrW<(x2b~4+JZ_gj>KbCuHcWz7X`TW_Q z-Fpw^PwNyro_+L0ytj$I_Z>Uc!P~r;?U8?fQkUm+-a66esZ_DrfA*2>q?1KL9G`Yl zp}RY&Q1Ps)YkjNT!FDr!q4(MjjgO7))IK^YrfqC&aPN9w-KMdvV*J{={~WTLcFUgfR!{M{7R+-M3{Fk+jm?VM;7W0A-RNsJAlRU6316^q*%B3l zVP#A746aG{Rb5@$<60eF!bOxIN)q=GrHInR{RD^yh%!W3B8n(SlqV_>4-yrLNFGo zh-Zl2#Ir;nqA!t11c-h_e_{YJkVqn)BL)$Ji6O*LVi+-;7(t9AMiHZlF~sx4SYjOU z0`Vg85;2}gCMFOm#6)5eF`1Y`keEtLBc>BGh?j|1h?&GJVm2{{m`ltfQi)fI`NRSu zNGv2?BNh>_6N`x@#8P4zv7A^zyg|H4tRz+utBEzlT4Eiso=77$5b4BQL*k0M|@3uL!2kRB`y%( z5f_O|#P`Gx#E-;J#LvWK;tKH#@hkBgah3R;xJLXz{7GCVZV)$#Tg2@daLt0ta$6ym z$0}eIvDq)qh?z2i+rLFrd{oVss8LO-n zWtFqaTNSJat%_D9tFl$as%llU970!RlX)rr`d3~4BKs+KI6%9or(O5htnuy0mQ_)OBi{_$*XenBW z7|~j^5pBg2qMe8p?L`L>C*nm%ksvw=zvwKwh_0fWcv5s1J;YO@r+8ZQ63>X<;#tv0 z^c9IBAo_{^Vt^PZlEiajkQgk6h@oPb7%oPLkz$k>EyjrF#aJ;;ydYi_FNyIYSxgWq zVxpKNCW|S8Vyc)Xri&TkW$}ubDQ1b;Vvd+A=807Cs+cbph@e;~UK5MN>teB3B9@9} zV!2o$-Vkq!m131xE!K#&Vx3qo(!>UlF5VIuVx!n3Hj7O0w%8)JiY&2Byd&Nf?}_c= zeX&FA6uZQ3u}AC``$V?bFAj)aiR0o!kt;qDdE$gPDNc!x#V6uZ zaaw#PJ{MnzGvZ6}l{hQTiLb>s;=K4)ToB)hi{g^_Ui=__6hDcd#bt3t{33o8zlp2j acX3VpA^sHC#SL*&+;Z*AUVhuvxaVJH!>0uR diff --git a/images/apple/PLFORTH.po b/images/apple/PLFORTH.po index 5a3d8da878b3461b8e35085934f84ee7382aa462..c282318596b35177b8b7258681ed3e7eb07d114e 100644 GIT binary patch delta 1736 zcmai!Uq}>t6vxk*9d$Ch#qKrDgyt3{MS5+mY^^9=H+OBEnPz9BBDfe7){CGK_*7d^ z4+Rwq{Sq$Ar7m`f%QebB*dGYWAZpjLHTw%eaG|i5>Y*36&Q8we{8nh-!kE96hM2S z_4S7^E|%@)gyUhq5z@^tOkHymfB-^PI2FI7K4NM{M77<-7v%OUaBeXaCa&f$%*RC+ z%Zv7jRcwt><8JB!(XHN1Eemc?bvsdO1Bl~98%g!Df!3qJnBDJMv|#xZ6-$QiRfYBxV-XJ~$gdluuo*&dg$ z7oc)p5zHN&?ZpKm^RLBy;#Dvec4IAeu}!tOq*!r-aFjSr3=w%A5DM9`S{yuFAwbki z_=wF!BM~GFVh8aDv4?0U4iR0%apEKqBf5z=af$ek=qGLwcZmnYr~qfjg!R$qWWOTb z()0g9UGzQK9|UkmKauf;Ko>*{h$8lK9d6rnKY2fu8XHYL3`oDZ$w;O&Ny!+hbkv;~ zc{)tbr!z)C8gf4xPLAnPo`>#tN5)mD&_fM+H&BP=Ro32OavO4+i|K9rvh~4ozov$? zs@3+ii`QvdF7wk8pGj%0_cY~gQnvESi5Zj&r-sbdiuY*2PjUN;)$K=agRxe6<(!^A zC^I95sRZm;AU>pE=eXmckD8+o9Kew(_W3+k6wBG```IW{5S8uf#@};4wP@P|EZL3T zbARG7CbnVeRD-26Xc5&vEvHd(8|GS*fR#bR;V6#L;gHYm$pn-) z8IBsoXH;RYRiW29`K{lRUy$>APJXYsP9(0O;K821P!N)j$WCL=-zW-?pM1A3qv%RK z9jAv$9Jqp;3z}qKwbh+DnU*z1bUD+HpTEp_PxoZa{V22XL0rx*^ka3;O+0w1`X)-> E0Lqz?p#T5? delta 1961 zcmZvdVN6?96vxkbeU=A^G{worh;|TWwg}ELL6`*EQlL`aE3dC}E;EK0I~<9|v1s;1 z)@ZWCm}N_2?l4NWsCAi3khKA0_F)r?l64eo8S2z5e&B=Qi~Hmkil>jh%Dd3ym!5m? z`Ja34z31L{=Du|1zVx+6toWe0x)NX(9C;%e5Ni$^J&-p9XbkvW!2wrO@TH*U9ROHw zh7x$QOdtJUI3d;?x=2@?$N+WF8wxm?6BMKlKYM5kn>acK{SVtPHYuc`xUwOg@J&f z%*iA?%jFea-A34__9&{>R}`uwe1;dckJfO>4~=d~zQHGJ%}yf_K<*TXu=Ws_{Nz?) zows}Qq9J!0c0xy^Sr}g%ed3z=xZ7ZF&?kG8;-Nu~fd!uDPK^Z|Sl#+5mq;5t+1E>J zmo+2f+yq$Rm}H)oO*nANO81h|?{gbM$X$U_c<>0PTqWhRrZQ`TEoGLV?dHquJk?J! zR)@Coev9xLK%=b^dS}X=xJ!JzOblDY!X-PrA%!6&DcJFu>Q7m;Ak1EZ^7gC zFubpg*pCWF1U%ueT?cK1oom6<<0(^O=6C?O=O9C#9zeU z#6QHp#JT_%1k0g_)dG=H!e)WG3ssi(NHsNT2nW$XG!bn?C(+H$K8J&2bMvWGCONA~ zd+hTI^V#fDCY$m~U3M}SvWhgK8>!@+CSBIe%=`~OYSN_rPWo<=#&77xTspISE7L8l z=&kQ=&ED3V&Z@=a!csu$$p3$zUX~?yRq^~cjHpcrO}ArhlYZfuV;H#`&jQ1IEhS)| zN0EI>(?R13ir-QRU*$`9VmqZ?gqxH%NjbzTSGQ5_E>ymu73Zi5KjbbwYkwWNThE55 z%Use4*sq0D&F?j0fp~|~*ukZdppp(upTKm}t{$J?uX;V2L;r2O*N%KAo4tt5oqlhR zd5FTx`OXTzqV$IXj(l77_4aLe74*eURz8kTd+AAg(WQ3N42AIl<*?Cd#L0KLU7r38 z$4!1lCsW4JDWn$SDCCeu#__$lO^6^9hjC}&h(E^Kv7czUhb-p1pN9QzB_w+`?Mjy1 zlH9JO;i*2=snSB|@eZsvzbZ@p8 O#{;x2ix^Abss8}M@!psK diff --git a/src/inc/turtle.plh b/src/inc/turtle.plh index 67e0b4e..f28acc6 100644 --- a/src/inc/turtle.plh +++ b/src/inc/turtle.plh @@ -2,13 +2,10 @@ import turtle predef initTurtle(width, height)#0 predef clipLine(x1, y1, x2, y2)#0 predef clipRect(left, top, right, bottom)#0 - predef fillRect(left, top, right, bottom)#0 predef turnTo(angle)#0 - predef turnLeft(angle)#0 - predef turnRight(angle)#0 + predef turn(angle)#0 predef moveTo(x, y)#0 - predef moveForward(dist)#0 - predef moveBackward(dist)#0 + predef move(dist)#0 predef penUp#0 predef penDown#0 end diff --git a/src/libsrc/turtle.pla b/src/libsrc/turtle.pla index 8f122f0..a73573b 100644 --- a/src/libsrc/turtle.pla +++ b/src/libsrc/turtle.pla @@ -94,14 +94,6 @@ export def clipRect(left, top, right, bottom)#0 clipBottom = bottom end -export def fillRect(left, top, right, bottom)#0 - var y - - for y = top to bottom - clipLine(left, y, right, y) - next -end - export def initTurtle(width, height, linefunc)#0 drawLine = linefunc clipRect(0, 0, width - 1, height - 1) @@ -117,11 +109,7 @@ export def turnTo(angle)#0 while turtleAngle < 0; turtleAngle = turtleAngle + 360; loop end -export def turnLeft(angle)#0 - turnTo(turtleAngle - angle) -end - -export def turnRight(angle)#0 +export def turn(angle)#0 turnTo(turtleAngle + angle) end @@ -133,7 +121,7 @@ export def moveTo(x, y)#0 turtleYp4 = y << 4 end -export def moveForward(dist)#0 +export def move(dist)#0 var oldX, oldY oldX = turtleXp4 >> 4 @@ -145,10 +133,6 @@ export def moveForward(dist)#0 fin end -export def moveBackward(dist)#0 - moveForward(-dist) -end - export def penUp#0 pen = 0 end diff --git a/src/scripts/grturtle.4th b/src/scripts/grturtle.4th index fee952c..23b0a26 100644 --- a/src/scripts/grturtle.4th +++ b/src/scripts/grturtle.4th @@ -12,10 +12,10 @@ PFA PLOT SETLINEPLOT ; : SQUARE - DUP MOVEFORWARD 90 TURNRIGHT - DUP MOVEFORWARD 90 TURNRIGHT - DUP MOVEFORWARD 90 TURNRIGHT - MOVEFORWARD 90 TURNRIGHT + DUP MOVE 90 TURN + DUP MOVE 90 TURN + DUP MOVE 90 TURN + MOVE 90 TURN ; : SPIN diff --git a/src/scripts/hrturtle.4th b/src/scripts/hrturtle.4th index 37a14ad..994d775 100644 --- a/src/scripts/hrturtle.4th +++ b/src/scripts/hrturtle.4th @@ -16,10 +16,10 @@ SRC" TURTLE.4TH" ; : SQUARE - DUP MOVEFORWARD 90 TURNRIGHT - DUP MOVEFORWARD 90 TURNRIGHT - DUP MOVEFORWARD 90 TURNRIGHT - MOVEFORWARD 90 TURNRIGHT + DUP MOVE 90 TURN + DUP MOVE 90 TURN + DUP MOVE 90 TURN + MOVE 90 TURN ; : SPIN diff --git a/src/scripts/turtle.4th b/src/scripts/turtle.4th index d76980b..e88bcd8 100644 --- a/src/scripts/turtle.4th +++ b/src/scripts/turtle.4th @@ -5,12 +5,9 @@ LOOKUP INITTURTLE PLASMA INITTURTLE LOOKUP CLIPLINE PLASMA CLIPLINE LOOKUP CLIPRECT PLASMA CLIPRECT -LOOKUP FILLRECT PLASMA FILLRECT LOOKUP TURNTO PLASMA TURNTO -LOOKUP TURNLEFT PLASMA TURNLEFT -LOOKUP TURNRIGHT PLASMA TURNRIGHT +LOOKUP TURN PLASMA TURN LOOKUP MOVETO PLASMA MOVETO -LOOKUP MOVEFORWARD PLASMA MOVEFORWARD -LOOKUP MOVEBACKWARD PLASMA MOVEBACKWARD +LOOKUP MOVE PLASMA MOVE LOOKUP PENUP PLASMA PENUP LOOKUP PENDOWN PLASMA PENDOWN