projects
/
rrq
/
jonasforth.git
/ blob
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
history
|
raw
|
HEAD
Reimplement HELLO in Forth
[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
: C,
59
HERE @ C!
60
HERE @ 1 +
61
HERE ! ;
62
63
: OVER
64
SWAP DUP ROT ;
65
66
: STORE-STRING
67
BEGIN
68
OVER C@ C,
69
SWAP 1 + SWAP
70
1 - DUP 0 = UNTIL
71
DROP DROP ;
72
73
S" HELLO-ADDR" CREATE
74
S" Hello!" DUP ROT
75
STORE-STRING
76
: HELLO
77
' HELLO-ADDR LIT [ , ] TELL NEWLINE ;
78
79
HELLO
80
81
S" 10 FIB = " TELL
82
10 FIB .U
83
S" (Expected: 59)" TELL NEWLINE
84