
These two lines set up the variables "f" and "v"
-1 variable f
1 variable v


The word "e" prints a star character on the screen. It is being called by the word "r".
: e
at 42 emit
;


The word "r" rotates its two inputs (i.e. character coordinates) according to the four quarters of the snowflake. It also translates the according to the origo (12,9), and calls the print part. It is being called by the word "k".
: r
v @
*
swap
f @
*
9
+
swap
12
+
e
;


The word "k" draws one quarter snowflake to the screen. It's being called four times by the word "p", which is the main "program".
: k
10 0
do
0
i
r
loop

10 0
do
i
0
r
loop

8 0
do
i
dup
f @
*
9
+
swap
v @
*
12
+
e
loop

(Yes, these are manually entered coordinates. I'm not THAT lazy, but I only started this code just a few hours before the deadline, and now I need to deal with the Christmas tree, so ...)

4 1 r
5 2 r
7 1 r
8 2 r

6 5 r
7 5 r

1 4 r
2 5 r
1 7 r
2 8 r

5 6 r
5 7 r
;


The word "p" is the main program. It sets up the variables for the four quarters of the picture, and calls the word "k".
: p
4 0
do
k
-1 f !
-1 v !
k
1 f !
-1 v !
k
1 f !
1 v !
k
loop
vis
;
