Mercurial > hg > Members > kono > os9 > sbc09
comparison CoCoOS9/level2v3/CMDS/swset.asm @ 31:bd2b07db8917 cocoos9lv2v3
CoCoOS9 version
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 14 Jul 2018 15:16:13 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
30:7b1b25ff010a | 31:bd2b07db8917 |
---|---|
1 ******************************************************************** | |
2 * SWSet - Set time in SmartWatch | |
3 * | |
4 * $Id: swset.asm,v 1.1.1.1 2001/02/21 23:30:54 boisy Exp $ | |
5 * | |
6 * Copyright May, 1990 by Robert Gault | |
7 * | |
8 * SWSET will set the smartwatch in either 12hr or 24hr mode | |
9 * time will be sent to OS-9 in 24hr mode for compatability | |
10 * see new DATE which presents time in 12hr. mode with day of week | |
11 * and SWREAD which sends data from clock to OS-9 | |
12 * | |
13 * Ed. Comments Who YY/MM/DD | |
14 * ------------------------------------------------------------------ | |
15 * 1 Revised: clock disable; no relocation RG 95/07/04 | |
16 | |
17 nam SWSet | |
18 ttl Set time in SmartWatch | |
19 | |
20 ifp1 | |
21 use defsfile | |
22 endc | |
23 | |
24 type set prgrm+objct | |
25 revs set reent+1 | |
26 edition set 1 | |
27 | |
28 mod pgrmend,name,type,revs,start,size | |
29 | |
30 | |
31 locblk0 rmb 2 pointer to block 0 | |
32 locblk3E rmb 2 pointer to block $3E ie. disk ROM | |
33 temp1 rmb 1 | |
34 temp2 rmb 1 | |
35 clkbyte rmb 1 | |
36 clkflag rmb 1 | |
37 mpiimage rmb 1 | |
38 alrtimag rmb 8 storage for the allert code with following: | |
39 csec rmb 1 | |
40 sec rmb 1 | |
41 min rmb 1 | |
42 hour rmb 1 | |
43 daywk rmb 1 | |
44 daymn rmb 1 | |
45 month rmb 1 | |
46 year rmb 1 | |
47 stopbyte rmb 1 | |
48 rawdata rmb 18 | |
49 stack rmb 200 | |
50 size equ . | |
51 | |
52 rom equ $FFDE | |
53 ram equ $FFDF | |
54 multipac equ $FF7F | |
55 cartI equ $FF22 | |
56 skp1 equ $21 | |
57 skp2 equ $8C code for cmpx #nn | |
58 | |
59 name fcs /SWSet/ | |
60 fcb edition | |
61 | |
62 clknfnd fcb C$LF | |
63 fcc /no clock found/ | |
64 fcb C$LF | |
65 fcc /I'm running Setime/ | |
66 fcb C$CR | |
67 setime fcc /setime/ | |
68 fcb C$CR | |
69 swread fcc /swread/ | |
70 fcb C$CR | |
71 | |
72 query lda #1 | |
73 os9 I$Writln | |
74 clra path 0 | |
75 leax temp1,u storage | |
76 ldy #1 | |
77 os9 I$Read | |
78 lda temp1 get key | |
79 rts | |
80 | |
81 start leax alrtimag,u point to image of allert code | |
82 ldb #8 | |
83 leay allert,pcr | |
84 s1loop lda ,y+ transfer to data | |
85 sta ,x+ | |
86 decb | |
87 bne s1loop | |
88 ldb #8 | |
89 s2loop clr ,x+ clear out the time date data | |
90 decb | |
91 bne s2loop | |
92 dec ,x mark stop byte | |
93 lda multipac | |
94 anda #3 keep IRQ | |
95 ora #$30 start with slot 4 | |
96 sta mpiimage save setting | |
97 lda #1 | |
98 leax crmesage,pcr copyright message | |
99 ldy #mesage1-crmesage | |
100 os9 I$WritLn | |
101 getfunc leax mesage1,pcr select time or disable clock | |
102 ldy #mesage2-mesage1 | |
103 bsr query | |
104 anda #$DF | |
105 cmpa #'D disable | |
106 lbeq killit | |
107 cmpa #'T timer | |
108 lbeq doit | |
109 cmpa #'C clock | |
110 bne getfunc | |
111 getday leax mesage2,pcr | |
112 ldy #mesage3-mesage2 get day of week | |
113 bsr query | |
114 suba #'0 | |
115 blo getday | |
116 cmpa #7 | |
117 bhi getday | |
118 sta daywk convert from ascii to number | |
119 tmode leax mesage3,pcr 12 or 24 hour time | |
120 ldy #mesage4-mesage3 | |
121 bsr query | |
122 cmpa #'1 error trap | |
123 blo tmode | |
124 cmpa #'2 | |
125 bhi tmode | |
126 beq date | |
127 lda #%10000000 12 hr bit | |
128 sta hour | |
129 getAMPM leax mesage4,pcr | |
130 ldy #mesage5-mesage4 | |
131 lbsr query | |
132 clrb | |
133 anda #$df | |
134 cmpa #'A | |
135 beq AMPMcode | |
136 cmpa #'P | |
137 bne getAMPM | |
138 ldb #%100000 PM bit | |
139 AMPMcode orb hour | |
140 stb hour | |
141 date leax mesage5,pcr get date and time | |
142 lda #1 | |
143 ldy #endmes-mesage5 | |
144 os9 I$Writln | |
145 clra | |
146 leax rawdata,u | |
147 ldy #18 | |
148 os9 I$ReadLn | |
149 leax rawdata,u | |
150 clr temp1 | |
151 bsr ascbcd | |
152 stb year | |
153 bsr ascbcd | |
154 stb month | |
155 bsr ascbcd | |
156 stb daymn | |
157 bsr ascbcd | |
158 tst hour | |
159 beq sthour | |
160 cmpb #$12 max in 12 hour mode | |
161 bhi date | |
162 orb hour | |
163 sthour stb hour | |
164 bsr ascbcd | |
165 stb min | |
166 bsr ascbcd | |
167 stb sec | |
168 bra doit | |
169 | |
170 ascbcd clr temp2 | |
171 bsr data1 | |
172 bne noinfo | |
173 com temp2 | |
174 tfr a,b | |
175 bsr data1 | |
176 bne endasc | |
177 lslb | |
178 lslb | |
179 lslb | |
180 lslb | |
181 pshs a | |
182 addb ,s+ | |
183 inca | |
184 endasc rts | |
185 noinfo leas 2,s | |
186 bra doit | |
187 | |
188 data1 lda ,x+ | |
189 beq nomore | |
190 cmpa #C$CR | |
191 beq nomore | |
192 cmpa #C$SPAC | |
193 beq data2 | |
194 cmpa #'/ | |
195 beq data2 | |
196 cmpa #': | |
197 beq data2 | |
198 suba #'0 | |
199 bcs error | |
200 cmpa #9 | |
201 bhi error | |
202 orcc #4 | |
203 rts | |
204 data2 tst temp2 | |
205 beq data1 | |
206 rts | |
207 nomore com temp1 | |
208 rts | |
209 error leas 4,s | |
210 lbra date | |
211 | |
212 doit pshs u | |
213 ldb #1 | |
214 ldx #$3E disk rom | |
215 os9 f$mapblk | |
216 bcs exit2 | |
217 stu locblk3E | |
218 ldx #0 | |
219 os9 f$mapblk | |
220 bcs exit2 | |
221 leax ,u | |
222 stx locblk0 | |
223 ldu ,s | |
224 bsr reloc | |
225 ldb #1 | |
226 ldu locblk3E | |
227 os9 f$clrblk | |
228 ldb #1 | |
229 ldu locblk0 | |
230 os9 f$clrblk | |
231 puls u | |
232 tst clkflag | |
233 bne exit | |
234 lda #2 | |
235 leax clknfnd,pcr | |
236 ldy #40 | |
237 os9 I$Writln | |
238 lda #$11 | |
239 ldb #2 | |
240 leax setime,pcr | |
241 ldy #0 | |
242 leas stack,u | |
243 leau size,u | |
244 os9 F$Chain | |
245 exit lda #$11 | |
246 ldb #2 | |
247 leax swread,pcr | |
248 ldy #0 | |
249 leas stack,u | |
250 leau size,u | |
251 os9 F$Chain | |
252 exit2 leas 2,s | |
253 coma | |
254 os9 F$Exit | |
255 | |
256 killit lda #C$SPAC | |
257 sta daywk | |
258 bra doit | |
259 | |
260 reloc pshs cc | |
261 lda d.hinit,x get $FF90 image | |
262 ldb multipac | |
263 pshs d | |
264 anda #$CC external disk rom access | |
265 orcc #$50 | |
266 sta $FF90 set for external ROM | |
267 sta rom | |
268 ldx locblk3E | |
269 ldb mpiimage get new value | |
270 clr clkflag | |
271 | |
272 findclk stb multipac set new slot | |
273 leay allert,pcr | |
274 lda 4,x clear clock | |
275 clrb | |
276 bita #1 | |
277 beq low | |
278 comb | |
279 low stb clkbyte | |
280 bsr nxtbyte | |
281 bsr gettime | |
282 tst clkflag | |
283 bne found | |
284 ldb mpiimage | |
285 bitb #$30 test for last try | |
286 beq found | |
287 subb #$10 next slot | |
288 stb mpiimage | |
289 lbra findclk | |
290 | |
291 nxtbyte ldb #8 bits/byte | |
292 lda ,y+ | |
293 cmpa #-1 | |
294 bne nxtbit | |
295 rts | |
296 nxtbit lsra | |
297 bcs high | |
298 cmpa ,x talk to clock; faster than tst | |
299 fcb skp2 | |
300 high cmpa 1,x | |
301 decb | |
302 bne nxtbit | |
303 bra nxtbyte | |
304 | |
305 gettime lda #8 bytes to read | |
306 pshs a | |
307 timebyte ldb #8 | |
308 timebit lsr 4,x read clock | |
309 rora | |
310 decb | |
311 bne timebit | |
312 cmpa clkbyte | |
313 beq maybe | |
314 inc clkflag | |
315 maybe dec ,s | |
316 bne timebyte | |
317 leas 1,s | |
318 rts | |
319 | |
320 found tst clkflag | |
321 beq noclk1 | |
322 leay alrtimag,u | |
323 lda 4,x | |
324 bsr nxtbyte | |
325 noclk1 sta ram | |
326 puls d | |
327 stb multipac | |
328 tst cartI | |
329 sta $ff90 | |
330 puls cc,pc | |
331 | |
332 allert fcb $C5,$3A,$A3,$5C,$C5,$3A,$A3,$5C,$ff | |
333 crmesage fcb C$LF | |
334 fcc /Set Smartwatch/ | |
335 fcb C$LF | |
336 fcc /(c) May, 1990 by Robert Gault/ | |
337 fcb C$LF | |
338 fcb C$CR | |
339 mesage1 fcc /Select clock, timer, or disable/ | |
340 fcb C$LF | |
341 fcc /<C>lock; <T>imer; <D>isable ->/ | |
342 mesage2 fcb C$LF | |
343 fcc /Enter the day 0-7; Mon=1 Sun=7/ | |
344 fcb C$LF | |
345 fcc /day = ->? / | |
346 mesage3 fcb C$LF | |
347 fcc /Select 12 or 24 hour clock/ | |
348 fcb C$LF | |
349 fcc /<1> = 12; <2> = 24 ->/ | |
350 mesage4 fcb C$LF | |
351 fcc /Select <A>M or <P>M ->/ | |
352 mesage5 fcb C$LF | |
353 fcc /Enter as much of the date & time as desired/ | |
354 fcb C$LF | |
355 fcc !yy/mm/dd hh:mm:ss! | |
356 fcb C$LF | |
357 fcc /->/ | |
358 endmes equ * | |
359 emod | |
360 pgrmend equ * |