547887f2894b1be397683889ffd475c87904a2f0
[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 S" Word:" TELL NEWLINE
29 SYSCODE POP-WORD TELL NEWLINE
30 S" Remaining:" TELL NEWLINE
31 TELL
32
33 TERMINATE