Subversion Repositories Kolibri OS

Rev

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

Rev Author Line No. Line
750 victor 1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2
;;                                                              ;;
2465 Serge 3
;; Copyright (C) KolibriOS team 2004-2011. All rights reserved. ;;
750 victor 4
;; Distributed under terms of the GNU General Public License    ;;
5
;;                                                              ;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7
 
488 spraid 8
;-------------------------------------------------------------------------
535 spraid 9
;Loading configuration from ini file
10
;    {SPraid.simba}
488 spraid 11
;-------------------------------------------------------------------------
12
 
593 mikedld 13
$Revision: 2465 $
14
 
1276 Lrz 15
iglobal
2434 Serge 16
conf_path_sect:
17
                db 'path',0
488 spraid 18
 
525 diamond 19
conf_fname db '/sys/sys.conf',0
1276 Lrz 20
endg
535 spraid 21
; set soke kernel configuration
497 spraid 22
proc set_kernel_conf
802 serge 23
        locals
24
          par db 30 dup(?)
25
        endl
26
 
27
        pushad
28
;[gui]
29
;mouse_speed
30
 
2434 Serge 31
        lea     eax, [par]
32
        push    eax
33
        invoke  ini.get_str, conf_fname, ugui, ugui_mouse_speed, \
34
                eax,30, ugui_mouse_speed_def
35
        pop     eax
36
        stdcall strtoint, eax
536 diamond 37
        mov     [mouse_speed_factor], ax
802 serge 38
 
39
;mouse_delay
2434 Serge 40
        lea     eax, [par]
41
        push    eax
42
        invoke  ini.get_str, conf_fname, ugui, ugui_mouse_delay, \
43
                eax,30, ugui_mouse_delay_def
44
        pop     eax
45
        stdcall strtoint, eax
536 diamond 46
        mov     [mouse_delay], eax
494 spraid 47
 
802 serge 48
 
49
;midibase
2434 Serge 50
        lea     eax, [par]
51
        push    eax
52
        invoke  ini.get_str, conf_fname, udev, udev_midibase, eax, 30, udev_midibase_def
53
        pop     eax
54
        stdcall strtoint, eax
802 serge 55
 
536 diamond 56
        cmp     eax, 0x100
57
        jb      @f
58
        cmp     eax, 0x10000
59
        jae     @f
60
        mov     [midi_base], ax
61
        mov     [mididp], eax
62
        inc     eax
63
        mov     [midisp], eax
64
@@:
802 serge 65
        popad
66
        ret
494 spraid 67
endp
1276 Lrz 68
iglobal
494 spraid 69
ugui db 'gui',0
70
ugui_mouse_speed db 'mouse_speed',0
497 spraid 71
ugui_mouse_speed_def db '2',0
494 spraid 72
ugui_mouse_delay db 'mouse_delay',0
497 spraid 73
ugui_mouse_delay_def db '0x00A',0
494 spraid 74
 
75
udev db 'dev',0
76
udev_midibase db 'midibase',0
497 spraid 77
udev_midibase_def db '0x320',0
1276 Lrz 78
endg
535 spraid 79
;set up netvork configuration
512 spraid 80
proc set_network_conf
81
locals
82
  par db 30 dup(?)
83
endl
2434 Serge 84
        pushad
802 serge 85
 
512 spraid 86
  ;[net]
87
  ;active
2434 Serge 88
        lea     eax, [par]
89
        invoke  ini.get_int, conf_fname, unet, unet_active, 0
90
        or      eax, eax
91
        jz      .do_not_set_net
536 diamond 92
        mov     eax, [stack_config]
93
        and     eax, 0xFFFFFF80
94
        add     eax, 3
95
        mov     [stack_config], eax
96
        call    ash_eth_enable
802 serge 97
 
512 spraid 98
  ;addr
2434 Serge 99
        lea     eax, [par]
100
        push    eax
101
        invoke  ini.get_str, conf_fname, unet, unet_addr, eax, 30, unet_def
102
        pop     eax
103
        stdcall do_inet_adr, eax
536 diamond 104
        mov     [stack_ip], eax
802 serge 105
 
512 spraid 106
  ;mask
2434 Serge 107
        lea     eax, [par]
108
        push    eax
109
        invoke  ini.get_str, conf_fname, unet, unet_mask, eax, 30, unet_def
110
        pop     eax
111
        stdcall do_inet_adr, eax
536 diamond 112
        mov     [subnet_mask], eax
802 serge 113
 
512 spraid 114
  ;gate
2434 Serge 115
        lea     eax, [par]
116
        push    eax
117
        invoke  ini.get_str, conf_fname, unet, unet_gate, eax, 30, unet_def
118
        pop     eax
119
        stdcall do_inet_adr, eax
536 diamond 120
        mov     [gateway_ip], eax
802 serge 121
.do_not_set_net:
2434 Serge 122
        popad
123
        ret
512 spraid 124
 
125
 
126
endp
1276 Lrz 127
iglobal
512 spraid 128
unet db 'net',0
129
unet_active db 'active',0
130
unet_addr db 'addr',0
131
unet_mask db 'mask',0
132
unet_gate db 'gate',0
133
unet_def db 0
1276 Lrz 134
endg
535 spraid 135
; convert string to DWord
494 spraid 136
proc strtoint stdcall,strs
2434 Serge 137
        pushad
802 serge 138
 
2434 Serge 139
        mov     eax, [strs]
140
        inc     eax
141
        mov     bl, [eax]
142
        cmp     bl, 'x'
143
        je      .hex
144
        cmp     bl, 'X'
145
        je      .hex
146
        jmp     .dec
494 spraid 147
.hex:
2434 Serge 148
        inc     eax
149
        stdcall strtoint_hex, eax
150
        jmp     .exit
494 spraid 151
.dec:
2434 Serge 152
        dec     eax
153
        stdcall strtoint_dec, eax
494 spraid 154
.exit:
2434 Serge 155
        mov     [esp+28], eax
156
        popad
157
        ret
494 spraid 158
endp
159
 
535 spraid 160
; convert string to DWord for decimal value
494 spraid 161
proc strtoint_dec stdcall,strs
2434 Serge 162
        pushad
163
        xor     edx, edx
497 spraid 164
  ; поиск конца
2434 Serge 165
        mov     esi, [strs]
497 spraid 166
@@:
2434 Serge 167
        lodsb
168
        or      al, al
169
        jnz     @b
170
        mov     ebx, esi
171
        mov     esi, [strs]
172
        dec     ebx
173
        sub     ebx, esi
174
        mov     ecx, 1
497 spraid 175
 
176
@@:
2434 Serge 177
        dec     ebx
178
        or      ebx, ebx
179
        jz      @f
180
        imul    ecx, ecx, 10; порядок
181
        jmp     @b
497 spraid 182
@@:
183
 
2434 Serge 184
        xchg    ebx, ecx
497 spraid 185
 
802 serge 186
 
2434 Serge 187
        xor     ecx, ecx
494 spraid 188
 
802 serge 189
 
190
@@:
2434 Serge 191
        xor     eax, eax
192
        lodsb
193
        cmp     al, 0
194
        je      .eend
802 serge 195
 
2434 Serge 196
        sub     al, 30h
197
        imul    ebx
198
        add     ecx, eax
199
        push    ecx
200
        xchg    eax, ebx
201
        mov     ecx, 10
202
        div     ecx
203
        xchg    eax, ebx
204
        pop     ecx
205
        jmp     @b
802 serge 206
 
497 spraid 207
.eend:
2434 Serge 208
        mov     [esp+28], ecx
209
        popad
210
        ret
494 spraid 211
endp
212
 
535 spraid 213
;convert string to DWord for hex value
494 spraid 214
proc strtoint_hex stdcall,strs
2434 Serge 215
        pushad
216
        xor     edx, edx
497 spraid 217
 
2434 Serge 218
        mov     esi, [strs]
219
        mov     ebx, 1
220
        add     esi, 1
497 spraid 221
 
222
@@:
2434 Serge 223
        lodsb
224
        or      al, al
225
        jz      @f
226
        shl     ebx, 4
227
        jmp     @b
497 spraid 228
@@:
2434 Serge 229
        xor     ecx, ecx
230
        mov     esi, [strs]
494 spraid 231
 
802 serge 232
@@:
2434 Serge 233
        xor     eax, eax
234
        lodsb
235
        cmp     al, 0
236
        je      .eend
802 serge 237
 
2434 Serge 238
        cmp     al, 'a'
239
        jae     .bm
240
        cmp     al, 'A'
241
        jae     .bb
242
        jmp     .cc
497 spraid 243
.bm:    ; 57h
2434 Serge 244
        sub     al, 57h
245
        jmp     .do
802 serge 246
 
497 spraid 247
.bb:    ; 37h
2434 Serge 248
        sub     al, 37h
249
        jmp     .do
494 spraid 250
 
497 spraid 251
.cc:    ; 30h
2434 Serge 252
        sub     al, 30h
802 serge 253
 
254
.do:
2434 Serge 255
        imul    ebx
256
        add     ecx, eax
257
        shr     ebx, 4
494 spraid 258
 
2434 Serge 259
        jmp     @b
497 spraid 260
 
261
.eend:
2434 Serge 262
        mov     [esp+28], ecx
263
        popad
264
        ret
802 serge 265
endp
494 spraid 266
 
267
 
535 spraid 268
; convert string to DWord for IP addres
512 spraid 269
proc do_inet_adr stdcall,strs
2434 Serge 270
        pushad
802 serge 271
 
2434 Serge 272
        mov     esi, [strs]
273
        mov     ebx, 0
512 spraid 274
.next:
2434 Serge 275
        push    esi
512 spraid 276
@@:
2434 Serge 277
        lodsb
278
        or      al, al
279
        jz      @f
280
        cmp     al, '.'
281
        jz      @f
282
        jmp     @b
512 spraid 283
@@:
2434 Serge 284
        mov     cl, al
285
        mov     [esi-1], byte 0
512 spraid 286
  ;pop eax
2434 Serge 287
        call    strtoint_dec
288
        rol     eax, 24
289
        ror     ebx, 8
290
        add     ebx, eax
291
        or      cl, cl
292
        jz      @f
293
        jmp     .next
512 spraid 294
@@:
2434 Serge 295
        mov     [esp+28], ebx
296
        popad
297
        ret
512 spraid 298
endp