Browse code

(exercises) Housekeeping

neauoire authored on 10/11/2022 17:08:21
Showing 3 changed files
... ...
@@ -6,14 +6,15 @@
6 6
 
7 7
 	#0000 INC2k ADD2k
8 8
 	&loop
9
-		( print ) DUP2 ,print JSR
10
-		( linebreak ) #0a18 DEO
9
+		DUP2 ,print-hex JSR #0a18 DEO
11 10
 		ADD2k LTH2k ,&loop JCN
12
-	( halt ) #010f DEO
11
+
12
+	( halt )
13
+	#010f DEO
13 14
 
14 15
 BRK
15 16
 
16
-@print ( short* -- )
17
+@print-hex ( short* -- )
17 18
 
18 19
 	SWP ,&byte JSR
19 20
 	&byte ( byte -- ) DUP #04 SFT ,&char JSR
... ...
@@ -8,20 +8,35 @@
8 8
 
9 9
 	#6400
10 10
 	&loop
11
-		( dec ) DUPk ,print-dec JSR
12
-		( space ) #2018 DEO
11
+		( integer )
12
+		DUPk ,print-dec JSR #2018 DEO
13
+		( fizzbuzz )
13 14
 		DUP #03 ,mod JSR ,&no3 JCN ;s/fizz ,print-str JSR &no3
14 15
 		DUP #05 ,mod JSR ,&no5 JCN ;s/buzz ,print-str JSR &no5
15
-		( linebreak ) #0a18 DEO
16
+		#0a18 DEO
16 17
 		INC GTHk ,&loop JCN
17 18
 	POP2
18
-	( halt ) #010f DEO
19
+	( halt )
20
+	#010f DEO
19 21
 
20 22
 BRK
21 23
 
22
-@mod ( a b -- c ) DIVk MUL SUB JMP2r
23
-@print-dec ( num -- ) #0a DIV ,print-num JSR #0a ,mod JSR
24
-@print-num ( num -- ) #30 ADD #18 DEO JMP2r
25
-@print-str ( addr* -- ) &loop LDAk #18 DEO INC2 LDAk ,&loop JCN POP2 JMP2r
24
+@mod ( a b -- c )
25
+	DIVk MUL SUB
26
+JMP2r
27
+
28
+@print-dec ( num -- )
29
+	#0a DIV ,&emit JSR
30
+	#0a ,mod JSR
31
+	&emit
32
+	#30 ADD #18 DEO
33
+JMP2r
34
+
35
+@print-str ( addr* -- )
36
+	&while
37
+		LDAk #18 DEO
38
+		INC2 LDAk ,&while JCN
39
+	POP2
40
+JMP2r
26 41
 
27 42
 @s &fizz "Fizz $1 &buzz "Buzz $1
... ...
@@ -18,20 +18,17 @@ BRK
18 18
 
19 19
 @is-prime ( number* -- flag )
20 20
 
21
-	DUP2 #0001 EQU2 ,&fail JCN
22
-	STH2k
23
-	( range ) #01 SFT2 #0002
21
+	DUP2 ,&t STR2
22
+	( range ) #01 SFT2 #0002 LTH2k ,&fail JCN
24 23
 	&loop
25
-		STH2kr OVR2 ( mod2 ) [ DIV2k MUL2 SUB2 ] ORA ,&continue JCN
26
-			POP2 POP2
27
-			POP2r #00 JMP2r
28
-			&continue
24
+		[ LIT2 &t $2 ] OVR2
25
+			( mod2 ) DIV2k MUL2 SUB2
26
+			ORA #00 EQU ,&fail JCN
29 27
 		INC2 GTH2k ,&loop JCN
30
-	POP2 POP2
31
-	POP2r #01
28
+	POP2 POP2 #01
32 29
 
33 30
 JMP2r
34
-	&fail POP2 #00 JMP2r
31
+	&fail POP2 POP2 #00 JMP2r
35 32
 
36 33
 @print ( short* -- )
37 34