2 files changed +28
-35
lines changed Original file line number Diff line number Diff line change 1
1
2
2
ASM_FLAGS =
3
3
4
+ .PHONY : all clean
5
+
4
6
all : rocket.rom \
5
7
jumping_X_and_O.rom \
6
8
Fishie.rom \
7
9
random_number_test.rom \
8
10
delay_timer_test.rom \
9
- show_bcd.rom
11
+ show_bcd.rom \
12
+ counter.rom
10
13
11
14
rocket.rom : rocket.asm chip8.asm
12
15
customasm -o $@ $(ASM_FLAGS ) $<
@@ -29,6 +32,8 @@ delay_timer_test.rom: delay_timer_test.asm chip8.asm
29
32
show_bcd.rom : show_bcd.asm chip8.asm
30
33
customasm -o $@ $(ASM_FLAGS ) $<
31
34
32
- .phony : clean
35
+ counter.rom : counter.asm chip8.asm
36
+ customasm -o $@ $(ASM_FLAGS ) $<
37
+
33
38
clean :
34
- rm * .rom
39
+ rm -vf * .rom
Original file line number Diff line number Diff line change @@ -65,38 +65,28 @@ count_sm:
65
65
; V5 ... the value we want to output
66
66
;
67
67
write:
68
- LD I , ascii_c ; Draw the label "COUNT = "
69
- DRW V3 , V4 , 5
70
- ADD V3 , 6
71
- LD I , ascii_o
72
- DRW V3 , V4 , 5
73
- ADD V3 , 6
74
- LD I , ascii_u
75
- DRW V3 , V4 , 5
76
- ADD V3 , 6
77
- LD I , ascii_n
78
- DRW V3 , V4 , 5
79
- ADD V3 , 6
80
- LD I , ascii_t
81
- DRW V3 , V4 , 5
82
- ADD V3 , 6
83
- LD I , ascii_eq
84
- DRW V3 , V4 , 5
85
- ADD V3 , 6
86
- LD I , .work ; Now draw the digit
87
- LD B , V5
88
- LD V2 , [ I ]
89
- LD F , V0
68
+ LD V0 , 6 ; 6 characters
69
+ LD V1 , 5 ; address increment
70
+ LD I , ascii_c - 5 ; initial address, offset by 5
71
+ .begin:
72
+ ADD I , V1 ; Load character address.
73
+ DRW V3 , V4 , 5 ; Draw character.
74
+ ADD V3 , 6 ; Increment x-coordinate.
75
+ ADD V0 , - 1 ; Decrement counter.
76
+ SE V0 , 0 ; If characters remain,
77
+ JP .begin ; return to draw next character.
78
+ LD I , digits
79
+ LD B , V5 ; Load
80
+ LD V2 , [ I ] ; Load decimals into V0-V2
81
+ LD F , V0 ; Digit 1
90
82
DRW V3 , V4 , 5
91
83
ADD V3 , 5
92
- LD F , V1
84
+ LD F , V1 ; Digit 2
93
85
DRW V3 , V4 , 5
94
86
ADD V3 , 5
95
- LD F , V2
87
+ LD F , V2 ; Digit 3
96
88
DRW V3 , V4 , 5
97
89
RET
98
- .work:
99
- #res 3
100
90
101
91
;
102
92
; Alphabetic characters
@@ -107,38 +97,36 @@ ascii_c:
107
97
#d8 0b10000000
108
98
#d8 0b10000000
109
99
#d8 0b11111000
110
-
111
100
ascii_o:
112
101
#d8 0b11111000
113
102
#d8 0b10001000
114
103
#d8 0b10001000
115
104
#d8 0b10001000
116
105
#d8 0b11111000
117
-
118
106
ascii_u:
119
107
#d8 0b10001000
120
108
#d8 0b10001000
121
109
#d8 0b10001000
122
110
#d8 0b10001000
123
111
#d8 0b11111000
124
-
125
112
ascii_n:
126
113
#d8 0b10001000
127
114
#d8 0b11001000
128
115
#d8 0b10101000
129
116
#d8 0b10011000
130
117
#d8 0b10001000
131
-
132
118
ascii_t:
133
119
#d8 0b11111000
134
120
#d8 0b00100000
135
121
#d8 0b00100000
136
122
#d8 0b00100000
137
123
#d8 0b00100000
138
-
139
124
ascii_eq:
140
125
#d8 0b00000000
141
126
#d8 0b11111000
142
127
#d8 0b00000000
143
128
#d8 0b11111000
144
- #d8 0b00000000
129
+ #d8 0b00000000
130
+ digits:
131
+ #res 3
132
+
0 commit comments