Browse code

(fizzbuzz.tal) Removed macros from fizzbuzz

neauoire authored on 10/03/2022 18:05:00
Showing 1 changed files
... ...
@@ -3,41 +3,30 @@
3 3
 	for multiples of five, print "Buzz"
4 4
 	for multiples of both three and five, print "FizzBuzz" )
5 5
 
6
-%MOD  { DIVk MUL SUB }
7
-%HALT { #01 #0f DEO }
8
-%EMIT { #18 DEO }
9
-%RTN  { JMP2r }
10
-
11
-@program
12
-
13
-|0100 ( -> )
6
+|0100 ( -> ) @program
14 7
 
15 8
 	#6400
16 9
 	&loop
17
-		LITr 00
18
-		DUP #03 MOD ,&no3 JCN ;fizz-txt ;print-str JSR2 INCr &no3
19
-		DUP #05 MOD ,&no5 JCN ;buzz-txt ;print-str JSR2 INCr &no5
20
-		STHr ,&resume JCN
21
-		( print decimal )
22
-		DUPk #0a DIV #30 ADD EMIT
23
-		#0a MOD #30 ADD EMIT
24
-		&resume
25
-		( add linebreak ) #0a EMIT
10
+		( dec )
11
+		DUPk #0a DIV ,print-num JSR
12
+		#0a ,mod JSR ,print-num JSR
13
+		( space )
14
+		#2018 DEO
15
+		( text )
16
+		DUP #03 ,mod JSR ,&no3 JCN ;s/fizz ,print-str JSR &no3
17
+		DUP #05 ,mod JSR ,&no5 JCN ;s/buzz ,print-str JSR &no5
18
+		( linebreak ) #0a18 DEO
26 19
 		INC GTHk ,&loop JCN
27 20
 	POP2
28
-
29
-	HALT
21
+	( halt ) 
22
+	#010f DEO
30 23
 
31 24
 BRK
32 25
 
33
-@print-str ( addr* -- )
34
-	
35
-	&loop
36
-		LDAk EMIT 
37
-		INC2 LDAk ,&loop JCN
38
-	POP2
39
-
40
-RTN
26
+@mod ( a b -- c ) DIVk MUL SUB JMP2r
27
+@print-num ( num -- ) #30 ADD #18 DEO JMP2r
28
+@print-str ( addr* -- ) &loop LDAk #18 DEO INC2 LDAk ,&loop JCN POP2 JMP2r
41 29
 
42
-@fizz-txt "Fizz $1
43
-@buzz-txt "Buzz $1
30
+@s 
31
+	&fizz "Fizz $1
32
+	&buzz "Buzz $1