aboutsummaryrefslogtreecommitdiff
path: root/amforth-6.5/examples/sierpinsi.frt
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2017-08-19 12:15:28 +0200
committerDimitri Sokolyuk <demon@dim13.org>2017-08-19 12:15:28 +0200
commit67d25d837ac55f28a366c0a3b262e439a6e75fc3 (patch)
treedf7715c7724c5935ab87c807f3b8b4ef529315e3 /amforth-6.5/examples/sierpinsi.frt
parente0d6784e89dba33226c0edb815bb974486fa7c48 (diff)
Add AmForth
Diffstat (limited to 'amforth-6.5/examples/sierpinsi.frt')
-rw-r--r--amforth-6.5/examples/sierpinsi.frt26
1 files changed, 26 insertions, 0 deletions
diff --git a/amforth-6.5/examples/sierpinsi.frt b/amforth-6.5/examples/sierpinsi.frt
new file mode 100644
index 0000000..19fe920
--- /dev/null
+++ b/amforth-6.5/examples/sierpinsi.frt
@@ -0,0 +1,26 @@
+\ Sierpinski fractal
+\ richard.w@gmail.com, clf 13.2.2015
+
+\ additional words from the forth lib
+\ #require buffer.frt
+\ #require blank.frt
+\ #require chars.frt
+
+64 constant size
+char * constant '*'
+size buffer: line[]
+
+line[] size blank '*' size 2/ chars line[] + c! ( init )
+
+: .line[] ( -- ) line[] size type cr ;
+: =*? ( addr -- f ) c@ '*' = ;
+: >char ( f f -- ch ) xor [ '*' bl - ] literal and bl + ;
+: init-flags ( -- f-1 f0 ) 0 line[] =*? ;
+: sierp-line ( -- ) init-flags line[] size bounds do
+ i 1 chars + =*? rot over >char i c!
+ loop 2drop ;
+: sierpinski ( -- ) size 2/ 0 do .line[] sierp-line loop ;
+
+\
+\ sierpinski prints the fractal on the terminal
+\ \ No newline at end of file