Subversion Repositories Kolibri OS

Rev

Rev 2434 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
431 serge 1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2
;;                                                              ;;
2465 Serge 3
;; Copyright (C) KolibriOS team 2004-2011. All rights reserved. ;;
431 serge 4
;; Distributed under terms of the GNU General Public License    ;;
5
;;                                                              ;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7
 
593 mikedld 8
$Revision: 2465 $
9
 
10
 
1 ha 11
;setting date,time,clock and alarm-clock
12
;add sys_settime at servetable as for ex. 22 fcn:
13
; 22 - SETTING DATE TIME, CLOCK AND ALARM-CLOCK
14
; ebx =0 - set time ecx - 00SSMMHH
15
; ebx =1 - set date ecx=00DDMMYY
16
; ebx =2 - set day of week ecx- 1-7
17
; ebx =3 - set alarm-clock ecx - 00SSMMHH
18
; out: 0 -Ok 1 -wrong format 2 -battery low
19
sys_settime:
1279 Lrz 20
 
2434 Serge 21
        cli
22
        mov     al, 0x0d
23
        out     0x70, al
24
        in      al, 0x71
25
        bt      ax, 7
26
        jnc     bat_low
27
        cmp     ebx, 2;day of week
28
        jne     nosetweek
29
        test    ecx, ecx   ;test day of week
30
        je      wrongtime
31
        cmp     ecx, 7
32
        ja      wrongtime
33
        mov     edx, 0x70
34
        call    startstopclk
35
        dec     edx
36
        mov     al, 6
37
        out     dx, al
38
        inc     edx
39
        mov     al, cl
40
        out     dx, al
41
        jmp     endsettime
1 ha 42
  nosetweek:           ;set date
2434 Serge 43
        cmp     ebx, 1
44
        jne     nosetdate
45
        cmp     cl, 0x99;test year
46
        ja      wrongtime
47
        shl     ecx, 4
48
        cmp     cl, 0x90
49
        ja      wrongtime
50
        cmp     ch, 0x99;test month
51
        ja      wrongtime
52
        shr     ecx, 4
53
        test    ch, ch
54
        je      wrongtime
55
        cmp     ch, 0x12
56
        ja      wrongtime
57
        shl     ecx, 8
58
        bswap   ecx   ;ebx=00YYMMDD
59
        test    cl, cl ;test day
60
        je      wrongtime
61
        shl     ecx, 4
62
        cmp     cl, 0x90
63
        ja      wrongtime
64
        shr     ecx, 4
65
        cmp     ch, 2 ;February
66
        jne     testday
67
        cmp     cl, 0x29
68
        ja      wrongtime
69
        jmp     setdate
1 ha 70
    testday:
2434 Serge 71
        cmp     ch, 8
72
        jb      testday1;Aug-Dec
73
        bt      cx, 8
74
        jnc     days31
75
        jmp     days30
1 ha 76
    testday1:
2434 Serge 77
        bt      cx, 8 ;Jan-Jul ex.Feb
78
        jnc     days30
1 ha 79
    days31:
2434 Serge 80
        cmp     cl, 0x31
81
        ja      wrongtime
82
        jmp     setdate
1 ha 83
    days30:
2434 Serge 84
        cmp     cl, 0x30
85
        ja      wrongtime
1 ha 86
    setdate:
2434 Serge 87
        mov     edx, 0x70
88
        call    startstopclk
89
        dec     edx
90
        mov     al, 7    ;set days
91
        out     dx, al
92
        inc     edx
93
        mov     al, cl
94
        out     dx, al
95
        dec     edx
96
        mov     al, 8    ;set months
97
        out     dx, al
98
        inc     edx
99
        mov     al, ch
100
        out     dx, al
101
        dec     edx
102
        mov     al, 9    ;set years
103
        out     dx, al
104
        inc     edx
105
        shr     ecx, 8
106
        mov     al, ch
107
        out     dx, al
108
        jmp     endsettime
1 ha 109
    nosetdate:       ;set time or alarm-clock
2434 Serge 110
        cmp     ebx, 3
111
        ja      wrongtime
112
        cmp     cl, 0x23
113
        ja      wrongtime
114
        cmp     ch, 0x59
115
        ja      wrongtime
116
        shl     ecx, 4
117
        cmp     cl, 0x90
118
        ja      wrongtime
119
        cmp     ch, 0x92
120
        ja      wrongtime
121
        shl     ecx, 4
122
        bswap   ecx    ;00HHMMSS
123
        cmp     cl, 0x59
124
        ja      wrongtime
125
        shl     ecx, 4
126
        cmp     cl, 0x90
127
        ja      wrongtime
128
        shr     ecx, 4
1279 Lrz 129
 
2434 Serge 130
        mov     edx, 0x70
131
        call    startstopclk
132
        dec     edx
133
        cmp     ebx, 3
1279 Lrz 134
 
2434 Serge 135
        je      setalarm
136
        xor     eax, eax;al=0-set seconds
137
        out     dx, al
138
        inc     edx
139
        mov     al, cl
140
        out     dx, al
141
        dec     edx
142
        mov     al, 2 ;set minutes
143
        out     dx, al
144
        inc     edx
145
        mov     al, ch
146
        out     dx, al
147
        dec     edx
148
        mov     al, 4 ;set hours
149
        out     dx, al
150
        inc     edx
151
        shr     ecx, 8
152
        mov     al, ch
153
        out     dx, al
154
        jmp     endsettime
1 ha 155
   setalarm:
2434 Serge 156
        mov     al, 1;set seconds for al.
157
        out     dx, al
158
        inc     edx
159
        mov     al, cl
160
        out     dx, al
161
        dec     edx
162
        mov     al, 3;set minutes for al.
163
        out     dx, al
164
        inc     edx
165
        mov     al, ch
166
        out     dx, al
167
        dec     edx
168
        mov     al, 5;set hours for al.
169
        out     dx, al
170
        inc     edx
171
        shr     ecx, 8
172
        mov     al, ch
173
        out     dx, al
174
        dec     edx
175
        mov     al, 0x0b;enable irq's
176
        out     dx, al
177
        inc     dx
178
        in      al, dx
179
        bts     ax, 5;set bit 5
180
        out     dx, al
1 ha 181
    endsettime:
2434 Serge 182
        dec     edx
183
        call    startstopclk
184
        sti
185
        and     [esp+36-4], dword 0
186
        ret
1 ha 187
   bat_low:
2434 Serge 188
        sti
189
        mov     [esp+36-4], dword 2
190
        ret
1 ha 191
   wrongtime:
2434 Serge 192
        sti
193
        mov     [esp+36-4], dword 1
194
        ret
431 serge 195
 
1 ha 196
startstopclk:
2434 Serge 197
        mov     al, 0x0b
198
        out     dx, al
199
        inc     dx
200
        in      al, dx
201
        btc     ax, 7
202
        out     dx, al
203
        ret