Subversion Repositories Kolibri OS

Rev

Rev 2465 | Rev 3555 | 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: 3500 $
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
497 spraid 70
ugui_mouse_speed_def db '2',0
71
ugui_mouse_delay_def db '0x00A',0
494 spraid 72
udev_midibase db 'midibase',0
497 spraid 73
udev_midibase_def db '0x320',0
1276 Lrz 74
endg
535 spraid 75
;set up netvork configuration
512 spraid 76
proc set_network_conf
77
locals
78
  par db 30 dup(?)
79
endl
2434 Serge 80
        pushad
802 serge 81
 
512 spraid 82
  ;[net]
83
  ;active
2434 Serge 84
        lea     eax, [par]
85
        invoke  ini.get_int, conf_fname, unet, unet_active, 0
86
        or      eax, eax
87
        jz      .do_not_set_net
536 diamond 88
        mov     eax, [stack_config]
89
        and     eax, 0xFFFFFF80
90
        add     eax, 3
91
        mov     [stack_config], eax
92
        call    ash_eth_enable
802 serge 93
 
512 spraid 94
  ;addr
2434 Serge 95
        lea     eax, [par]
96
        push    eax
97
        invoke  ini.get_str, conf_fname, unet, unet_addr, eax, 30, unet_def
98
        pop     eax
99
        stdcall do_inet_adr, eax
536 diamond 100
        mov     [stack_ip], eax
802 serge 101
 
512 spraid 102
  ;mask
2434 Serge 103
        lea     eax, [par]
104
        push    eax
105
        invoke  ini.get_str, conf_fname, unet, unet_mask, eax, 30, unet_def
106
        pop     eax
107
        stdcall do_inet_adr, eax
536 diamond 108
        mov     [subnet_mask], eax
802 serge 109
 
512 spraid 110
  ;gate
2434 Serge 111
        lea     eax, [par]
112
        push    eax
113
        invoke  ini.get_str, conf_fname, unet, unet_gate, eax, 30, unet_def
114
        pop     eax
115
        stdcall do_inet_adr, eax
536 diamond 116
        mov     [gateway_ip], eax
802 serge 117
.do_not_set_net:
2434 Serge 118
        popad
119
        ret
512 spraid 120
 
121
 
122
endp
1276 Lrz 123
iglobal
3500 Serge 124
if lang eq sp
125
  include 'core/conf_lib-sp.inc'
126
else
127
  ugui_mouse_speed db 'mouse_speed',0
128
  ugui_mouse_delay db 'mouse_delay',0
129
  udev db 'dev',0
130
  unet db 'net',0
131
  unet_active db 'active',0
132
  unet_addr db 'addr',0
133
  unet_mask db 'mask',0
134
  unet_gate db 'gate',0
135
end if
512 spraid 136
unet_def db 0
1276 Lrz 137
endg
535 spraid 138
; convert string to DWord
494 spraid 139
proc strtoint stdcall,strs
2434 Serge 140
        pushad
802 serge 141
 
2434 Serge 142
        mov     eax, [strs]
143
        inc     eax
144
        mov     bl, [eax]
145
        cmp     bl, 'x'
146
        je      .hex
147
        cmp     bl, 'X'
148
        je      .hex
149
        jmp     .dec
494 spraid 150
.hex:
2434 Serge 151
        inc     eax
152
        stdcall strtoint_hex, eax
153
        jmp     .exit
494 spraid 154
.dec:
2434 Serge 155
        dec     eax
156
        stdcall strtoint_dec, eax
494 spraid 157
.exit:
2434 Serge 158
        mov     [esp+28], eax
159
        popad
160
        ret
494 spraid 161
endp
162
 
535 spraid 163
; convert string to DWord for decimal value
494 spraid 164
proc strtoint_dec stdcall,strs
2434 Serge 165
        pushad
166
        xor     edx, edx
497 spraid 167
  ; поиск конца
2434 Serge 168
        mov     esi, [strs]
497 spraid 169
@@:
2434 Serge 170
        lodsb
171
        or      al, al
172
        jnz     @b
173
        mov     ebx, esi
174
        mov     esi, [strs]
175
        dec     ebx
176
        sub     ebx, esi
177
        mov     ecx, 1
497 spraid 178
 
179
@@:
2434 Serge 180
        dec     ebx
181
        or      ebx, ebx
182
        jz      @f
183
        imul    ecx, ecx, 10; порядок
184
        jmp     @b
497 spraid 185
@@:
186
 
2434 Serge 187
        xchg    ebx, ecx
497 spraid 188
 
802 serge 189
 
2434 Serge 190
        xor     ecx, ecx
494 spraid 191
 
802 serge 192
 
193
@@:
2434 Serge 194
        xor     eax, eax
195
        lodsb
196
        cmp     al, 0
197
        je      .eend
802 serge 198
 
2434 Serge 199
        sub     al, 30h
200
        imul    ebx
201
        add     ecx, eax
202
        push    ecx
203
        xchg    eax, ebx
204
        mov     ecx, 10
205
        div     ecx
206
        xchg    eax, ebx
207
        pop     ecx
208
        jmp     @b
802 serge 209
 
497 spraid 210
.eend:
2434 Serge 211
        mov     [esp+28], ecx
212
        popad
213
        ret
494 spraid 214
endp
215
 
535 spraid 216
;convert string to DWord for hex value
494 spraid 217
proc strtoint_hex stdcall,strs
2434 Serge 218
        pushad
219
        xor     edx, edx
497 spraid 220
 
2434 Serge 221
        mov     esi, [strs]
222
        mov     ebx, 1
223
        add     esi, 1
497 spraid 224
 
225
@@:
2434 Serge 226
        lodsb
227
        or      al, al
228
        jz      @f
229
        shl     ebx, 4
230
        jmp     @b
497 spraid 231
@@:
2434 Serge 232
        xor     ecx, ecx
233
        mov     esi, [strs]
494 spraid 234
 
802 serge 235
@@:
2434 Serge 236
        xor     eax, eax
237
        lodsb
238
        cmp     al, 0
239
        je      .eend
802 serge 240
 
2434 Serge 241
        cmp     al, 'a'
242
        jae     .bm
243
        cmp     al, 'A'
244
        jae     .bb
245
        jmp     .cc
497 spraid 246
.bm:    ; 57h
2434 Serge 247
        sub     al, 57h
248
        jmp     .do
802 serge 249
 
497 spraid 250
.bb:    ; 37h
2434 Serge 251
        sub     al, 37h
252
        jmp     .do
494 spraid 253
 
497 spraid 254
.cc:    ; 30h
2434 Serge 255
        sub     al, 30h
802 serge 256
 
257
.do:
2434 Serge 258
        imul    ebx
259
        add     ecx, eax
260
        shr     ebx, 4
494 spraid 261
 
2434 Serge 262
        jmp     @b
497 spraid 263
 
264
.eend:
2434 Serge 265
        mov     [esp+28], ecx
266
        popad
267
        ret
802 serge 268
endp
494 spraid 269
 
270
 
535 spraid 271
; convert string to DWord for IP addres
512 spraid 272
proc do_inet_adr stdcall,strs
2434 Serge 273
        pushad
802 serge 274
 
2434 Serge 275
        mov     esi, [strs]
276
        mov     ebx, 0
512 spraid 277
.next:
2434 Serge 278
        push    esi
512 spraid 279
@@:
2434 Serge 280
        lodsb
281
        or      al, al
282
        jz      @f
283
        cmp     al, '.'
284
        jz      @f
285
        jmp     @b
512 spraid 286
@@:
2434 Serge 287
        mov     cl, al
288
        mov     [esi-1], byte 0
512 spraid 289
  ;pop eax
2434 Serge 290
        call    strtoint_dec
291
        rol     eax, 24
292
        ror     ebx, 8
293
        add     ebx, eax
294
        or      cl, cl
295
        jz      @f
296
        jmp     .next
512 spraid 297
@@:
2434 Serge 298
        mov     [esp+28], ebx
299
        popad
300
        ret
512 spraid 301
endp