From e3550d4a83f3a31416dd78416216a9825b02cb8f Mon Sep 17 00:00:00 2001 From: David Schmenk Date: Sun, 21 Dec 2025 17:27:53 -0800 Subject: [PATCH] Add fixed point move routine and sample --- images/apple/PLEIADES-2.20.po | Bin 33553920 -> 33553920 bytes images/apple/PLFORTH.po | Bin 143360 -> 143360 bytes images/apple/UPDATE-2.21.po | Bin 143360 -> 143360 bytes src/inc/turtle.plh | 1 + src/libsrc/turtle.pla | 12 ++++++++++++ src/scripts/hrturtle.4th | 32 ++++++++++++++++++++++++++++++++ src/scripts/turtle.4th | 1 + 7 files changed, 46 insertions(+) diff --git a/images/apple/PLEIADES-2.20.po b/images/apple/PLEIADES-2.20.po index 3eadec54317104482fceaa95116c61e587b56ec6..c1552d1a5938d81ba21d2bb66d19e18d0660f29b 100644 GIT binary patch delta 2874 zcmZA2dwk7x9LMooU(s+Wc=vO!G5n)J}#VKsYl{BzgrcWs;!n4DEtKD(~mX$4uq^>yVTQSlu@95JB| zT^r`u>j(^HH`Rt%p;jB~BrD81*=lRGvre&G)~Qx|E8L2(I#`kQO|>248{16{4jSih zB!s&hQ|jAIkBScMS=z=~78@S6WLi*JH+_WIxABfLg!>(inbTv#?dW(%P4kSX(V-I} z9YK@oN0mp7aAx!fc2ve&N!Gw%$NaS5!Ic>{9%{Mmdv0)gWxkC)R)ss+ElIcZK0)}K4dy$xdyd1bo^ZfAVx(frR zBqG}r80h?D#0SRt9*@^G*yT!x-f_$Pofvmn>dr`L&Ot(iL;0Vq94(pNFiG!3?|MYGKh1DA;eH3lNd&15!r;B$RUOkxkMgu9x;N*Cklu{!b5n8 z^9dhOMEHqfVkA*QloF$e(ZmJBg~S-*BI07=65>+gGGZ)oIWdkHPfQ@LASM!J#FfM( z;woY?aW!!bF@?C6xQ@7hlpjw!^9)R zqr_vxxm7-M&ecCHR5$*6VX7tL2M@8B(@N55pNUk5L=0D#CD>Qc$e5gyhprG>?E3qUBm~( zhr~z3$HZ>p6XH{15AhlCIq?Otm-v$Siujt?M|?wkOMFM{C%z|sAbuo%B7P=*A$}!( zBMuP16Mql~i9^Jn#9zeU#9`teqM0}{7tSg;tspDd3b8`1Hr7d2n02z%)@o;+V!5nS zt@c*96=8L-BCU>Alof4tvN~H`tQf1S6>FVlb+fu#x__K?y4Axv!|G}EvU*!*T79f| ztFLvIm028lG0E(VKpM20w53=u;`rWhu&M7D5?95Gzviac?i7$NdSfhZIn;T7i#pC}T3 zQ7lG^5>YBfiP7Q$aiJI^E)o}uOT?w(GBH+MF2;%RVuH9rOcZ6}N-;@XB_@lj#WiAz zxK>;zt`}3qG;xEtQQRb^i<`wQ;#M(3l#2>cDQ1dU;x=)+pqMS@h&#kwai_RT+%2la zJaLbhFYXo9;y$rJEEF|jk+@$h77vIe;z6-gJS3Khhs7h}QSq2~Ts$G36w5`ecuK4g zE5$1Dw5SuS#WUhru|_;6o)>FHy?8;a6EBLF#LMCpv0iKt8^x>QHSxOGBpSpUVzYQt zY!PpXx5YbRtJo&Ci$?LT*dg8%?~9$HN$e6Ih!4d_;$yK}d?G#-d&FnrbMb}PE4~z8 ziLb>z@s0Rad?)sc@5K+|NAZ*RS^Oe?6~BoC;&<_fI4BN@KgD0-Z*f@sBbuEX8kQY# H4j%I_;mlGO delta 2392 zcmbW%Rdf|s7{&2>BPB>6$PEq~OR%8Dg1bWquEnLeI|;UN0t9mLrY#O3cz_lu5Zoou z;_mL=Z|A))owfeI`PP~_XXfdIfBBv&+}g0v%WG~-peu5z*L)jNC*2(E9q1G3=L(4o z_YL0s*mrOL#OLE}w;hSYq=eO8mbdkTmBjL~ zl3K~EsH*Gg%nviz*nRvIg9T*B&f`A;Vg^7QE9a0L0KaO8_iKEmbi?d}ogD&@=_ zw>->M*XfT8Ce7*ilNUmKvZuBCfm0V7_~cIOPQA`~Xxlhf#sI%4r(;@7 zV6w!&(-4<$m8+1ad&F87BcqSx+P2Q+(Z}tP$?MySB>v8*EdC$dE3^6Mj4T#)FY35g zfIDElD<-T)!_elHL#v@o5j1HU+90%c&00--VOO=LA*kQ5S@r+_f_C}O9m@Lp2BUF^ zJ7=tGJ>gHJCo&KjiA+RhA`6j~$VOx*K;$5D61j-nL>?l52qf|n`H1{P0iqxgL=++l z6Ge!kL@}Z`@gq@!C`pteN)u&>V4^Hhjwnx5ASx1-h{{A2qAF31s7}-%Y7(`G+C&|q zE>VxDPc$GJ5+Ot*B9v%MG$EQ2&4}hi3!){_ifB!=A=(n{h@Xh|L>zd$ ze-M8XyNKPy9%3)?7qO4nPaGiPiG#!;;xKW9I7%ENjuR({lf)_FG;xMFOPnLl6BmdC z;v#X0_?!5LxJ+Cjt`gUX>%CUJ|nP23^w68DJv!~^0X@rZa#JRzPE&xq&53*sg5 zig-=DA>I=2i1)+?;v?~i_)L5uz7pSv?^EHN38&>@d0JkUxAlXS#PYF{TFI>BRtn44 zN@=CC{H)Yg8Y``p&T?7)R(dOgmC?#%Wwx?dS*>hVc1z#SVdb=PS-Gt|R)7^~<+buz z`Ky!P0y&VxTDbpn$G#Vn} zqf0oAlA@F-Ey{>sQC5@_5M7%gC4vE9! zh&U>aiR0pgI4Mqv)8dRcE6$1Y;(|yJ7sVyKKi?}Y}7fa5Xa})8)H7UH3}lZj>-#&paKqY>;!BYm5sfLw^{F7cGpQjTp~mW5duK~ z2@VbEg-Z`@t#(y}e5r(5ghW*$)Am%U4ZSqLg(6i{;?z@4RS&(yFuU_jy75GM(5C@GDTqspvvHgdnM_l39{^&6B1jmjK?RVG~^1 z;_j}4RUv+w17DhXL(wf08qd4SKmbBM*vQ`@l`UqJH7`u~8^d-07giyml^-IB2nm1F zwQX8(#nLN#efe&9MZdzy&%(~}VO7$`yzEd{G5rY=Okb(Cf*mT;Mn5X)9$D8Ayv^yV ztZV=ljS*&8MIST}Oz~iDF3yRcnrjiiPtmM&zn2K0eiZ~*ZR5m0Yz6noh2~2`{RVWx zP%;QUTAkbdAlU9K^q7j4XMWS5ZbKM8;JRk(lyn^VofDFU{l!tdyJmTc>s5%r>1gm+ zyGlvRO?!}3m0=Hr`nRwd{(XldSCAYCj9C_1#%vMG&5zkH$Pxu*| zcb{)wbtBR(e-rr&l2bgnvH_WB^xR{GCs_YaxpB91=Lt9O_7pA!o4E*at87@R?BxRC z4@~wG_q8r!arD|OnK+y%v2j_?(8ja&Pes=jZT2|TcOG2IG75b~>s~Y)#K1IhRLy?A6 znUv%Eil({ z;?wki>#L0E;xSRoQOi)|!l>-5&QtdQdfY!9T_>ZDAI%P8I!71oI3nm_lyDHuFpJ8F z)hN0fFRP}T)j1Xe)~JKselA1Kmkm>_1AZx#>kzLz8zT2yh{a=mroam!@RhA5kVIgtg^Gsz1 bHpovZ_BZ+ICO^~U4>b8W!~fj-kz9WZ&kU%~ delta 1307 zcmZvbL1@!Z7{|XaO}n~HEmqgk4OX|=F|ZZaNomnTTkBevCNWJFVV541&Wo^$pa+>J zK|BbNJsgtDaEb_uE1m2l==5TzmoX3zJ9+BKlb1!`LQ|KQ=90(D`+e{K{l9+}cDxHa z-nUu);FI|HF@TQ{-dkugADXguU~j=eR2I^uVmem3T2gaGfWL9*ft$VN*Z-i-hh`aY zyOdQ5vRZ=nbGQizz;(cO{Xn{`N=jL@j`2U~v7^8o(~xVu^9*{hXL+dqI&X>%&yRNG zo5wYIo{^t~fy)^oEzVfg!4PQqOK2~z=}s^pNaFOxqHK|dNWlk;F0IuC%qtfpMa_3W zg@UJ9FjWgN;wv?W_!9+DjZa#I0E}C}!>*eV|HcW9#er+Fj z5+bF7n3Xz11A~AI&N5RYau@@N6eA=F$P7?^e{R)jZji3WGoPj zmv8`nA7aQBCC}JmmIO!4>eOyFW{+upHdaQ^*B5nh*8rlvewbM6o5TS(nM+^-$JU-F za0cDSU2s1_qDj1W(O0aadN;M1& diff --git a/images/apple/UPDATE-2.21.po b/images/apple/UPDATE-2.21.po index 626774b8eae47c2c384ef1cef869f08604558e26..674de6903917ff71c9c5275b6575f1aceb1f92bb 100755 GIT binary patch delta 1192 zcmaJ<&rcIk5PsVqWD{&?LxO=48A7;#)!qI;T7t0B2fJb0U3a&%_F#xe5kiP2g2sad zy&4nJcq1OXc>oQ2Fdp<|<4GYJ^-AL3p>f`JyDi4Jo5}m$%$si}-^}(2zkR~L?g|E; z?e|4$-N7LQ(TJT1e(B)+cIeDh86CZmnqD~@{um_e6;FN=2iW&2mwn;49A0{x-rk5^ zzjeR`8B5CMd`~z#u)gUVJ}(nUGjG zMDEy~w|j!ar4DYbKg{oK`PR;{BY?LGS%a`e$fF1SVf0o=?f2bsaHX60*6nMX^W5Z+ zpX`jFiD+YfvYYl#>`Wq_Mx%I_{h1vVv4&PaE2Ax;t)gwzUT!^%emeSIKTh%k-N*IM z-*kS3oga>VH?jm@AYwLqu& zf(~L*fN{ZT5&0XvA;4f(E9O~s5f&svk*=r|a#ATvbxS_wbUhi+wPM0iLj*@v^tgfY?63_P{?fst%XO z9s8@EBSvFo@>+3LmF8O#!=O7L!Py43r2m>vlW`DS#n{A5Su3(F%&%hCY}Ad7bT4eZ pLjp8cD&Z{^PTFkt5sJ6rL>o@F;ZzITSNC3Vj~DB27VF&j(jV?qCL90& delta 245 zcmZp8z|ru4V*@`c%apaEoRfuFm01{oV6zqLB{oL+&AdGJQ4pDcG;skdR)+qyd?FkS zj~T#>&E;u!OajvwK{^<~q9DfRqZ#WMSwSq*&5TSvjGI|> 4 + oldY = turtleYp4 >> 4 + turtleXp4 = turtleXp4 + mulcos(distp4, turtleAngle) + turtleYp4 = turtleYp4 + mulsin(distp4, turtleAngle) + if pen + clipLine(turtleXp4 >> 4, turtleYp4 >> 4, oldX, oldY) + fin +end + export def penUp#0 pen = 0 end diff --git a/src/scripts/hrturtle.4th b/src/scripts/hrturtle.4th index ed491d5..47b787d 100644 --- a/src/scripts/hrturtle.4th +++ b/src/scripts/hrturtle.4th @@ -51,4 +51,36 @@ SRC" TURTLE.4TH" : RESET PENUP 140 80 MOVETO 0 TURNTO PENDOWN ; +1 VARIABLE MAXDEPTH + +1 VARIABLE DEPTH + +: POW3 + 1 SWAP 1- ?DUP 0= IF EXIT THEN + 0 DO + 3 * + LOOP +; + +: TRIEDGE + DEPTH @ MAXDEPTH @ = IF + 8960 DEPTH @ POW3 / 1 + 1 RSHIFT MOVEP4 + ELSE + 1 DEPTH +! + RECURSE -60 TURN + RECURSE 120 TURN + RECURSE -60 TURN + RECURSE + -1 DEPTH +! + THEN +; + +: SNOWFLAKE MAXDEPTH ! PENUP 0 159 MOVETO 0 TURNTO PENDOWN 1 DEPTH ! TRIEDGE ; + SHOW SPIN RESET SPIRAL RESET ZOOM +0 CLEARTO 3 HGRCOLOR +1 SNOWFLAKE +2 SNOWFLAKE +3 SNOWFLAKE +4 SNOWFLAKE +5 SNOWFLAKE diff --git a/src/scripts/turtle.4th b/src/scripts/turtle.4th index e88bcd8..b40d2e3 100644 --- a/src/scripts/turtle.4th +++ b/src/scripts/turtle.4th @@ -9,5 +9,6 @@ LOOKUP TURNTO PLASMA TURNTO LOOKUP TURN PLASMA TURN LOOKUP MOVETO PLASMA MOVETO LOOKUP MOVE PLASMA MOVE +LOOKUP MOVEP4 PLASMA MOVEP4 LOOKUP PENUP PLASMA PENUP LOOKUP PENDOWN PLASMA PENDOWN