annotate level2/modules/clock2_soft.asm @ 187:0d02be492d77

Brought up to same attr command in OS-9 Level Two, which is the same exact binary except for the edition number (go figure)
author boisy
date Sun, 14 Jul 2002 03:38:25 +0000
parents 6641a883d6b0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1 ********************************************************************
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
2 * Clock2 - Software clock driver
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
3 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
4 * $Id$
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
5 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
6 * This clock driver is not only Y2K compliant, but also will handle
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
7 * leap year calculations correctly for all years from 1900 A.D. to
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
8 * 2155 A.D. Note that this driver is ONLY valid from 1900-2155 and
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
9 * will not handle years outside of this range.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
10 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
11 * Ed. Comments Who YY/MM/DD
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
12 * ------------------------------------------------------------------
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
13 * 1 Obtained source and commented/restructured BGP 98/10/05
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
14 * 2 Fixed leap year assumptions about 1900 and BGP 99/05/02
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
15 * 2100 so that they do not have Feb. 29
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
16
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
17 nam Clock2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
18 ttl Software clock driver
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
19
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
20 rev set 1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
21 edition set 2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
22
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
23 ifp1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
24 use defsfile
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
25 endc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
26
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
27 mod len2,name2,systm+objct,reent+rev,entry,0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
28
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
29 name2 fcs "Clock2"
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
30 fcb edition
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
31
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
32 entry bra Init 0 init hardware
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
33 nop
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
34 bra GetTime 3 get time to D.Time (once a second??)
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
35 nop
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
36 bra SetTime 6 set time fm D.Time
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
37 nop
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
38
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
39 * Init and SetTime do nothing for the software clock
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
40 Init
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
41 SetTime clrb setime must clrb if okay
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
42 rts nothing for this guy
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
43
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
44 GetTime ldd <D.Min get minutes, seconds
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
45 * Second increment
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
46 incb secs+1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
47 cmpb #60 minute yet?
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
48 blo L0080 ..no
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
49 * Minute increment
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
50 inca minute+1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
51 cmpa #60 hour yet?
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
52 blo L007F ..no
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
53 ldd <D.Day get day, hour
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
54 * Hour increment
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
55 incb hour+1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
56 cmpb #24 day yet?
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
57 blo L007C ..no
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
58 * Day increment
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
59 inca day+1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
60 leax >months,pcr point to months table
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
61 ldb <D.Month this month
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
62 cmpa b,x end of month?
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
63 bls L007B ..no
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
64 * Here we are at the case where the incremented day in A is larger
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
65 * than the max day in the month.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
66 * Now's our chance to check for leap year case.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
67 cmpb #2 yes, is it Feb?
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
68 bne L006D ..no, ok
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
69 ldb <D.Year else get year
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
70 beq L006D 1900 has no leap year.. +BGP+ 1999/05/02
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
71 cmpb #200 is year 2100? +BGP+ 1999/05/02
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
72 beq L006D yep, has no leap year.. +BGP+ 1999/05/02
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
73 andb #$03 check for leap year
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
74 cmpd #$1D00 29th on leap year?
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
75 beq L007B ..yes, skip it
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
76 L006D ldd <D.Year else month+1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
77 * Month increment
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
78 incb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
79 cmpb #13 end of year?
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
80 blo L0077 ..no
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
81 * Year increment
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
82 * Note that once A rolls over to 0, it assumes year 1900.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
83 inca year+1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
84 ldb #$01 set month to jan
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
85 L0077 std <D.Year save year, month
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
86 lda #$01 day=1st
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
87 L007B clrb hour=midnite
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
88 L007C std <D.Day save day,hour
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
89 clra minute=00
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
90 L007F clrb seconds=00
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
91 L0080 std <D.Min save min,secs
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
92 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
93
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
94 months fcb $00
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
95 fcb 31 jan
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
96 fcb 28 feb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
97 fcb 31 mar
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
98 fcb 30 apr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
99 fcb 31 may
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
100 fcb 30 jun
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
101 fcb 31 jul
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
102 fcb 31 aug
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
103 fcb 30 sep
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
104 fcb 31 oct
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
105 fcb 30 nov
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
106 fcb 31 dec
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
107
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
108 emod
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
109 len2 equ *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
110 end
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
111