... | ... |
@@ -24,6 +24,10 @@ |
24 | 24 |
%SCALEY { 2// .center/y LDZ2 ++ RADIUS -- } |
25 | 25 |
%12HOURS { #0c MOD } |
26 | 26 |
|
27 |
+%IS-UC { DUP #40 > SWP #5b < AND } |
|
28 |
+%IS-LC { DUP #60 > SWP #7b < AND } |
|
29 |
+%IS-NUM { DUP #2f > SWP #3a < AND } |
|
30 |
+ |
|
27 | 31 |
( devices ) |
28 | 32 |
|
29 | 33 |
|00 @System [ &vector $2 &pad $6 &r $2 &g $2 &b $2 ] |
... | ... |
@@ -35,7 +39,8 @@ |
35 | 39 |
|
36 | 40 |
|0000 |
37 | 41 |
|
38 |
-@current $1 |
|
42 |
+@last |
|
43 |
+ &day $1 &sec $1 |
|
39 | 44 |
@center |
40 | 45 |
&x $2 &y $2 |
41 | 46 |
@date |
... | ... |
@@ -66,7 +71,7 @@ |
66 | 71 |
( center ) |
67 | 72 |
.Screen/width DEI2 2// |
68 | 73 |
DUP2 .center/x STZ2 |
69 |
- DUP2 #0048 -- .date/x STZ2 |
|
74 |
+ DUP2 #0028 -- .date/x STZ2 |
|
70 | 75 |
#0020 -- .time/x STZ2 |
71 | 76 |
.Screen/height DEI2 2// |
72 | 77 |
DUP2 .center/y STZ2 |
... | ... |
@@ -83,23 +88,40 @@ |
83 | 88 |
INC GTHk ,&loop JCN |
84 | 89 |
POP2 |
85 | 90 |
|
86 |
-( continue ) |
|
91 |
+BRK |
|
87 | 92 |
|
88 | 93 |
@on-frame ( -> ) |
89 | 94 |
|
90 |
- ( only draw once per second ) |
|
91 |
- .DateTime/second DEI .current LDZ = ,&skip JCN |
|
95 |
+ ( once per second ) |
|
96 |
+ .DateTime/second DEI |
|
97 |
+ DUP .last/sec LDZ = ,&same-sec JCN |
|
92 | 98 |
( clear ) #00 ,draw-needles JSR |
93 |
- ( update ) ,update-needles JSR |
|
99 |
+ ( update ) ;make-needles JSR2 |
|
94 | 100 |
( draw ) #01 ,draw-needles JSR |
95 |
- ;draw-display JSR2 |
|
96 |
- &skip |
|
97 |
- |
|
98 |
- .DateTime/second DEI .current STZ |
|
101 |
+ .time/x LDZ2 .Screen/x DEO2 |
|
102 |
+ .time/y LDZ2 .Screen/y DEO2 |
|
103 |
+ ;make-time JSR2 |
|
104 |
+ ;time-txt ;draw-text JSR2 |
|
105 |
+ DUP .last/sec STZ |
|
106 |
+ &same-sec |
|
107 |
+ POP |
|
108 |
+ |
|
109 |
+ ( once per day ) |
|
110 |
+ .DateTime/day DEI |
|
111 |
+ DUP .last/day LDZ = ,&same-day JCN |
|
112 |
+ .date/x LDZ2 .Screen/x DEO2 |
|
113 |
+ .date/y LDZ2 .Screen/y DEO2 |
|
114 |
+ .DateTime/dotw DEI 4* TOS ;week-txt ++ ;draw-text JSR2 |
|
115 |
+ .DateTime/month DEI 4* TOS ;month-txt ++ ;draw-text JSR2 |
|
116 |
+ ;make-date JSR2 |
|
117 |
+ ;date-txt ;draw-text JSR2 |
|
118 |
+ DUP .last/day STZ |
|
119 |
+ &same-day |
|
120 |
+ POP |
|
99 | 121 |
|
100 | 122 |
BRK |
101 | 123 |
|
102 |
-@draw-needles ( mul -- ) |
|
124 |
+@draw-needles ( draw -- ) |
|
103 | 125 |
|
104 | 126 |
STH |
105 | 127 |
.center/x LDZ2 .center/y LDZ2 |
... | ... |
@@ -111,81 +133,33 @@ BRK |
111 | 133 |
|
112 | 134 |
RTN |
113 | 135 |
|
114 |
-@update-needles ( -- ) |
|
115 |
- |
|
116 |
- #00 .DateTime/second DEI 2** ;table ++ LDA2 |
|
117 |
- TOS SCALEY .needles/sy STZ2 |
|
118 |
- TOS SCALEX .needles/sx STZ2 |
|
119 |
- #00 .DateTime/minute DEI 2** ;table ++ LDA2 |
|
120 |
- TOS 20** RADIUS ++ #0024 // SCALEY #0007 ++ .needles/my STZ2 |
|
121 |
- TOS 20** RADIUS ++ #0024 // SCALEX #0007 ++ .needles/mx STZ2 |
|
122 |
- #00 .DateTime/hour DEI 12HOURS #20 SFTk NIP ADD 2** ;table ++ LDA2 |
|
123 |
- TOS 4// DUP2k ++ ++ #0020 ++ SCALEY .needles/hy STZ2 |
|
124 |
- TOS 4// DUP2k ++ ++ #0020 ++ SCALEX .needles/hx STZ2 |
|
125 |
- |
|
126 |
-RTN |
|
127 |
- |
|
128 |
-@draw-display ( -- ) |
|
129 |
- |
|
130 |
- ( auto addr ) #04 .Screen/auto DEO |
|
131 |
- |
|
132 |
- ( dotw ) |
|
133 |
- .date/x LDZ2 .Screen/x DEO2 |
|
134 |
- .date/y LDZ2 .Screen/y DEO2 |
|
135 |
- .DateTime/dotw DEI 4* TOS ;dotw ++ ;draw-dotw JSR2 |
|
136 |
- ( date ) |
|
137 |
- .Screen/x DEI2 #001c ++ .Screen/x DEO2 |
|
138 |
- .DateTime/month DEI2 |
|
139 |
- SWP INC ,&number JSR |
|
140 |
- ;font/slash ,&char JSR |
|
141 |
- ,&number JSR |
|
142 |
- ( time ) |
|
143 |
- .time/y LDZ2 .Screen/y DEO2 |
|
144 |
- .time/x LDZ2 .Screen/x DEO2 |
|
145 |
- .DateTime/hour DEI2 |
|
146 |
- SWP ,&number JSR |
|
147 |
- ;font/spacer ,&char JSR |
|
148 |
- ,&number JSR |
|
149 |
- ;font/spacer ,&char JSR |
|
150 |
- .DateTime/second DEI |
|
151 |
- ,&number JSR |
|
152 |
- |
|
153 |
- ( auto none ) #00 .Screen/auto DEO |
|
154 |
- |
|
155 |
-RTN |
|
156 |
- &pady ( -- ) |
|
157 |
- .Screen/y DEI2 #0008 ++ .Screen/y DEO2 RTN |
|
158 |
- &char ( char* -- ) |
|
136 |
+@draw-text ( addr* -- ) |
|
137 |
+ |
|
138 |
+ ( auto addr ) #06 .Screen/auto DEO |
|
139 |
+ &while |
|
140 |
+ LDAk |
|
141 |
+ DUP IS-LC ,&lc JCN |
|
142 |
+ DUP IS-UC ,&uc JCN |
|
143 |
+ DUP IS-NUM ,&num JCN |
|
144 |
+ DUP LIT '/ = ,&slash JCN |
|
145 |
+ DUP LIT ': = ,&colon JCN |
|
146 |
+ POP ;font/blank |
|
147 |
+ &end |
|
159 | 148 |
.Screen/addr DEO2 |
160 |
- #03 .Screen/sprite DEO |
|
161 |
- ,&pady JSR |
|
162 |
- #03 .Screen/sprite DEO |
|
163 |
- ,&reset JSR |
|
164 |
- RTN |
|
165 |
- &digit ( number -- ) |
|
166 |
- 10* TOS ;font ++ .Screen/addr DEO2 |
|
167 |
- #03 .Screen/sprite DEO |
|
168 |
- ,&pady JSR |
|
169 |
- #03 .Screen/sprite DEO |
|
170 |
- RTN |
|
171 |
- &number ( number -- ) |
|
172 |
- DUP #0a DIV ,&digit JSR |
|
173 |
- ,&reset JSR |
|
174 |
- #0a MOD ,&digit JSR |
|
175 |
- &reset |
|
149 |
+ #0303 .Screen/sprite DEO .Screen/sprite DEO |
|
150 |
+ .Screen/y DEI2 #0010 -- .Screen/y DEO2 |
|
176 | 151 |
.Screen/x DEI2 #0008 ++ .Screen/x DEO2 |
177 |
- .Screen/y DEI2 #0008 -- .Screen/y DEO2 |
|
178 |
- RTN |
|
179 |
- |
|
180 |
-@draw-dotw ( str* -- ) |
|
181 |
- |
|
182 |
- DUP2 #0003 ++ SWP2 |
|
183 |
- &loop |
|
184 |
- LDAk #41 - TOS 10** ;font/letters ++ ;draw-display/char JSR2 |
|
185 |
- INC2 GTH2k ,&loop JCN |
|
186 |
- POP2 POP2 |
|
152 |
+ INC2 LDAk ,&while JCN |
|
153 |
+ POP2 |
|
154 |
+ ( auto none ) #00 .Screen/auto DEO |
|
155 |
+ .Screen/x DEI2 #0008 ++ .Screen/x DEO2 |
|
187 | 156 |
|
188 | 157 |
RTN |
158 |
+ &lc #61 - TOS 10** ;font/lc ++ ,&end JMP |
|
159 |
+ &uc #41 - TOS 10** ;font/uc ++ ,&end JMP |
|
160 |
+ &num #30 - TOS 10** ;font/num ++ ,&end JMP |
|
161 |
+ &slash POP ;font/slash ,&end JMP |
|
162 |
+ &colon POP ;font/colon ,&end JMP |
|
189 | 163 |
|
190 | 164 |
@draw-line ( x1 y1 x2 y2 color -- ) |
191 | 165 |
|
... | ... |
@@ -215,8 +189,54 @@ RTN |
215 | 189 |
|
216 | 190 |
RTN |
217 | 191 |
|
218 |
-@dotw |
|
219 |
- "Sun $1 "Mon $1 "Tue $1 "Wed $1 "Thu $1 "Fri $1 "Sat $1 |
|
192 |
+@make-needles ( -- ) |
|
193 |
+ |
|
194 |
+ #00 .DateTime/second DEI 2** ;table ++ LDA2 |
|
195 |
+ TOS SCALEY .needles/sy STZ2 |
|
196 |
+ TOS SCALEX .needles/sx STZ2 |
|
197 |
+ #00 .DateTime/minute DEI 2** ;table ++ LDA2 |
|
198 |
+ TOS 20** RADIUS ++ #0024 // SCALEY #0007 ++ .needles/my STZ2 |
|
199 |
+ TOS 20** RADIUS ++ #0024 // SCALEX #0007 ++ .needles/mx STZ2 |
|
200 |
+ #00 .DateTime/hour DEI 12HOURS #20 SFTk NIP ADD 2** ;table ++ LDA2 |
|
201 |
+ TOS 4// DUP2k ++ ++ #0020 ++ SCALEY .needles/hy STZ2 |
|
202 |
+ TOS 4// DUP2k ++ ++ #0020 ++ SCALEX .needles/hx STZ2 |
|
203 |
+ |
|
204 |
+RTN |
|
205 |
+ |
|
206 |
+@make-date ( -- ) |
|
207 |
+ |
|
208 |
+ .DateTime/day DEI |
|
209 |
+ DUP #0a DIV #30 + ;date-txt STA |
|
210 |
+ #0a MOD #30 + ;date-txt INC STA |
|
211 |
+ |
|
212 |
+RTN |
|
213 |
+ |
|
214 |
+@make-time ( -- ) |
|
215 |
+ |
|
216 |
+ .DateTime/hour DEI ;time-txt/h ,decimal JSR |
|
217 |
+ .DateTime/minute DEI ;time-txt/m ,decimal JSR |
|
218 |
+ .DateTime/second DEI ;time-txt/s ,decimal JSR |
|
219 |
+ |
|
220 |
+RTN |
|
221 |
+ |
|
222 |
+@decimal ( -- ) |
|
223 |
+ |
|
224 |
+ STH2 |
|
225 |
+ DUP #0a DIV #30 + STH2kr STA |
|
226 |
+ #0a MOD #30 + STH2r INC2 STA |
|
227 |
+ |
|
228 |
+RTN |
|
229 |
+ |
|
230 |
+@time-txt |
|
231 |
+ &h "00: &m "00: &s "00 $1 |
|
232 |
+@date-txt |
|
233 |
+ "00 $1 |
|
234 |
+@week-txt |
|
235 |
+ "Sun $1 "Mon $1 "Tue $1 "Wed $1 "Thu $1 "Fri $1 |
|
236 |
+ "Sat $1 |
|
237 |
+@month-txt |
|
238 |
+ "Jan $1 "Feb $1 "Mar $1 "Apr $1 "May $1 "Jun $1 |
|
239 |
+ "Jul $1 "Aug $1 "Sep $1 "Oct $1 "Nov $1 "Dec $1 |
|
220 | 240 |
|
221 | 241 |
@table ( 60 positions on a circle ) |
222 | 242 |
8000 8d00 9a02 a706 b40b c011 cb18 d520 |
... | ... |
@@ -229,6 +249,7 @@ RTN |
229 | 249 |
4b0b 5806 6502 7200 |
230 | 250 |
|
231 | 251 |
@font |
252 |
+ &num |
|
232 | 253 |
0018 2442 4242 4242 4242 4242 4224 1800 |
233 | 254 |
0008 1828 0808 0808 0808 0808 0808 1c00 |
234 | 255 |
0018 2442 4202 0202 0408 1020 4040 7e00 |
... | ... |
@@ -239,11 +260,7 @@ RTN |
239 | 260 |
007e 4202 0204 0404 0808 0810 1010 1000 |
240 | 261 |
0018 2442 4242 2418 2442 4242 4224 1800 |
241 | 262 |
0018 2442 4242 4242 261a 0202 0408 3000 |
242 |
- &spacer |
|
243 |
- 0000 0000 0010 1000 0000 0000 1010 0000 |
|
244 |
- &slash |
|
245 |
- 0202 0404 0808 1010 2020 4040 8080 0000 |
|
246 |
- &letters |
|
263 |
+ &uc |
|
247 | 264 |
0010 1028 2844 4444 8282 fe82 8282 0000 |
248 | 265 |
00f8 4442 4242 4478 4442 4242 44f8 0000 |
249 | 266 |
003c 4282 8280 8080 8080 8282 423c 0000 |
... | ... |
@@ -270,12 +287,7 @@ RTN |
270 | 287 |
0042 4242 2424 1818 1824 2442 4242 0000 |
271 | 288 |
0082 8282 4444 2828 1010 1010 1038 0000 |
272 | 289 |
007e 4204 0408 0810 1020 2040 427e 0000 |
273 |
- 0e08 0808 0808 0808 0808 0808 0808 080e |
|
274 |
- 0082 8282 4444 fe28 10fe 1010 1010 1000 |
|
275 |
- 7010 1010 1010 1010 1010 1010 1010 1070 |
|
276 |
- 1028 4400 0000 0000 0000 0000 0000 0000 |
|
277 |
- 0000 0000 0000 0000 0000 0000 0000 00fe |
|
278 |
- 1010 1008 0000 0000 0000 0000 0000 0000 |
|
290 |
+ &lc |
|
279 | 291 |
0000 0000 0030 0808 3848 4848 4834 0000 |
280 | 292 |
0060 2020 202c 3222 2222 2222 322c 0000 |
281 | 293 |
0000 0000 001c 2240 4040 4040 221c 0000 |
... | ... |
@@ -302,4 +314,9 @@ RTN |
302 | 314 |
0000 0000 00ee 4428 1010 1028 44ee 0000 |
303 | 315 |
0000 0000 00ee 4444 4448 2828 1010 2040 |
304 | 316 |
0000 0000 007c 4408 0810 2020 447c 0000 |
305 |
- |
|
317 |
+ &colon |
|
318 |
+ 0000 0000 0010 1000 0000 0000 1010 0000 |
|
319 |
+ &slash |
|
320 |
+ 0202 0404 0808 1010 2020 4040 8080 0000 |
|
321 |
+ &blank |
|
322 |
+ 0000 0000 0000 0000 0000 0000 0000 0000 |