| ... | ... |
@@ -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 |