... | ... |
@@ -1,54 +1,47 @@ |
1 |
-( Fibonacci: |
|
2 |
- A series of numbers where the next number |
|
3 |
- is made of the two numbers before it ) |
|
4 |
- |
|
5 |
-|0100 @on-reset |
|
6 |
- |
|
7 |
- #0019 #0000 |
|
8 |
- &l |
|
9 |
- DUP2 pdec #2018 DEO |
|
10 |
- DUP2 fib pdec #2018 DEO |
|
11 |
- DUP2 #0000 #0001 ROT2 fibr pdec #0a18 DEO POP2 POP2 |
|
12 |
- INC2 GTH2k ?&l |
|
1 |
+( Fibonacci: Numbers made of the two numbers before it ) |
|
2 |
+ |
|
3 |
+|0100 |
|
4 |
+ |
|
5 |
+@on-reset |
|
6 |
+ #0019 #0001 |
|
7 |
+ &l ( -- ) |
|
8 |
+ ( index ) DUP2 pdec #2018 DEO |
|
9 |
+ ( recursive ) DUP2 fib pdec #2018 DEO |
|
10 |
+ ( tail-recursive ) DUP2 #0000 #0001 ROT2 fibr pdec |
|
11 |
+ ( lb ) #0a18 DEO |
|
12 |
+ POP2 POP2 INC2 GTH2k ?&l |
|
13 | 13 |
POP2 POP2 |
14 |
- #800f DEO |
|
14 |
+ ( end ) #800f DEO |
|
15 |
+ BRK |
|
15 | 16 |
|
16 |
-BRK |
|
17 |
- |
|
18 |
-( recursive ) |
|
17 |
+( |
|
18 |
+@|recursive ) |
|
19 | 19 |
|
20 | 20 |
@fib ( num* -- numfib* ) |
21 |
- #0001 GTH2k ?&ok |
|
22 |
- POP2 JMP2r &ok |
|
23 |
- SUB2k fib STH2 INC2 |
|
24 |
- SUB2 fib STH2r |
|
25 |
- ADD2 |
|
26 |
-JMP2r |
|
21 |
+ #0001 GTH2k ?&>ok |
|
22 |
+ POP2 JMP2r &>ok |
|
23 |
+ ( a ) SUB2k fib STH2 |
|
24 |
+ ( b ) INC2 SUB2 fib STH2r |
|
25 |
+ ( res ) ADD2 JMP2r |
|
27 | 26 |
|
28 |
-( tail-recursive ) |
|
27 |
+( |
|
28 |
+@|tail-recursive ) |
|
29 | 29 |
|
30 | 30 |
@fibr ( a* b* num* -- a* b* numfib* ) |
31 |
- ORAk ?&no-0 |
|
32 |
- POP2 OVR2 JMP2r &no-0 |
|
33 |
- DUP2 #0001 NEQ2 ?&no-1 |
|
34 |
- POP2 DUP2 JMP2r &no-1 |
|
35 |
- #0001 SUB2 STH2 |
|
36 |
- SWP2 ADD2k NIP2 STH2r |
|
37 |
-!fibr |
|
31 |
+ DUP2 #0001 NEQ2 ?&>no-1 |
|
32 |
+ POP2 DUP2 JMP2r &>no-1 |
|
33 |
+ ( a ) #0001 SUB2 STH2 |
|
34 |
+ ( b ) SWP2 ADD2k NIP2 STH2r !fibr |
|
38 | 35 |
|
39 |
-( print routine ) |
|
36 |
+( |
|
37 |
+@|stdlib ) |
|
40 | 38 |
|
41 | 39 |
@pdec ( short* -- ) |
42 |
- |
|
43 | 40 |
#2710 LIT2r 00fb |
44 |
- &w |
|
45 |
- DIV2k #000a DIV2k MUL2 SUB2 SWPr |
|
46 |
- EQUk OVR STHkr EQU AND ?&skip |
|
47 |
- DUP LIT "0 ADD #19 DEO INCr |
|
48 |
- &skip |
|
49 |
- POP2 #000a DIV2 |
|
50 |
- SWPr INCr STHkr ?&w |
|
51 |
- POP2r POP2 POP2 |
|
52 |
- |
|
53 |
-JMP2r |
|
41 |
+ &w ( -- ) |
|
42 |
+ DIV2k #000a DIV2k MUL2 SUB2 SWPr EQUk OVR STHkr EQU AND ?&>skip |
|
43 |
+ DUP LIT "0 ADD #18 DEO |
|
44 |
+ INCr &>skip |
|
45 |
+ POP2 #000a DIV2 SWPr INCr STHkr ?&w |
|
46 |
+ POP2r POP2 POP2 JMP2r |
|
54 | 47 |
|