Browse code

(fib.tal) Formatted

Devine Lu Linvega authored on 21/07/2023 17:18:49
Showing 1 changed files
... ...
@@ -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