09963525c9e3a9f343efdafd87bbf476ca05a252
[rrq/jonasforth.git] / sys.f
1 S" :" CREATE ] DOCOL
2   READ-WORD CREATE
3   LIT DOCOL ,
4   ]
5 EXIT [
6
7 : ;
8   LIT EXIT ,
9   [ S" [" FIND >CFA , ]
10   EXIT
11 [ IMMEDIATE
12
13 : / /MOD DROP ;
14 : MOD /MOD SWAP DROP ;
15 : NEG 0 SWAP - ;
16
17 : IF IMMEDIATE
18   ' 0BRANCH ,
19   HERE @
20   0 ,
21 ;
22
23 : THEN IMMEDIATE
24   DUP
25   HERE @ SWAP -
26   SWAP !
27 ;
28
29 : ELSE IMMEDIATE
30   ' BRANCH ,
31   HERE @
32   0 ,
33   SWAP DUP HERE @ SWAP - SWAP !
34 ;
35
36 : BEGIN IMMEDIATE
37   HERE @
38 ;
39
40 : UNTIL IMMEDIATE
41   ' 0BRANCH ,
42   HERE @ - ,
43 ;
44
45 : FIB
46   0 1
47   0
48   BEGIN
49     ROT
50     DUP ROT +
51     ROT ROT
52
53     1 +
54   DUP 4 PICK = UNTIL
55   DROP SWAP DROP SWAP DROP
56 ;
57
58 S" 10 FIB = " TELL
59 10 FIB .U
60 S"  (Expected: 59)" TELL NEWLINE
61