0
|
1 ********************************************************************
|
|
2 * SWSet - Set time in SmartWatch
|
|
3 *
|
|
4 * $Id$
|
|
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 *
|