f5215db9b4a08a45562910328f6831578fe25c8a
[rrq/jonasforth.git] / example.f
1 ( vim: syntax=forth
2 )
3
4 : FIB ( n -- Fn )
5   0 1                            ( n a b )
6   0                              ( n a b i )
7   BEGIN
8     ROT                          ( n i a b )
9     DUP ROT +                    ( n i b a+b )
10     ROT ROT                      ( n b a+b i )
11
12     1 +                          ( n b a+b i+1 )
13   DUP 4 PICK = UNTIL
14   DROP SWAP DROP SWAP DROP ;     ( a+b )
15
16 S" HELLO-ADDR" CREATE
17 S" Hello!" DUP ROT
18 STORE-STRING
19 : HELLO
20   ' HELLO-ADDR LIT, TELL NEWLINE ;
21
22 HELLO
23
24 S" 10 FIB = " TELL
25 10 FIB .U
26 SPACE S" (Expected: 59)" TELL NEWLINE
27
28 SYSCODE
29 S" Word: " TELL POP-WORD TELL NEWLINE
30 S" Word: " TELL POP-WORD TELL NEWLINE
31 S" Word: " TELL POP-WORD TELL NEWLINE
32 S" Word: " TELL POP-WORD TELL NEWLINE
33 S" Word: " TELL POP-WORD TELL NEWLINE
34 S" Word: " TELL POP-WORD TELL NEWLINE
35
36 TERMINATE