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 *