Subversion Repositories Kolibri OS

Rev

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

Rev Author Line No. Line
529 spraid 1
$Revision: 530 $
488 spraid 2
;-------------------------------------------------------------------------
3
;
4
;    Файл конфигурации
5
;
6
;
7
;     SPraid
8
;
9
;-------------------------------------------------------------------------
10
 
11
conf_file_loaded: db 0			; флаг загрузки конфига
512 spraid 12
conf_path_sect: db 'path',0
488 spraid 13
 
525 diamond 14
conf_fname db '/sys/sys.conf',0
494 spraid 15
 
16
 
512 spraid 17
 
497 spraid 18
proc set_kernel_conf
494 spraid 19
locals
20
  par db 30 dup(?)
21
endl
497 spraid 22
  pushad
494 spraid 23
  ;[gui]
24
  ;mouse_speed
512 spraid 25
  lea eax,[par]
494 spraid 26
  push eax
512 spraid 27
  invoke ini.get_str,conf_fname, ugui, ugui_mouse_speed, eax,30, ugui_mouse_speed_def
497 spraid 28
  pop eax
29
  stdcall strtoint,eax
30
  push eax
494 spraid 31
  pop edx
32
  call _mouse_speed
497 spraid 33
 
34
  popad
35
  ret
494 spraid 36
 
37
  ;mouse_delay
512 spraid 38
  lea eax,[par]
497 spraid 39
  push eax
512 spraid 40
  invoke ini.get_str,conf_fname, ugui, ugui_mouse_delay, eax,30, ugui_mouse_delay_def
497 spraid 41
  pop eax
494 spraid 42
  stdcall strtoint,eax
43
  push eax
44
  pop edx
45
  call _mouse_delay
46
 
47
  ;[dev]
48
  ;sb16
512 spraid 49
  lea eax,[par]
497 spraid 50
  push eax
512 spraid 51
  invoke ini.get_str,conf_fname, udev, udev_sb16, eax,30, udev_sb16_def
497 spraid 52
  pop eax
494 spraid 53
  stdcall strtoint,eax
54
  push eax
55
  pop ecx
56
  call _sb16
57
 
58
  ;sound_dma
512 spraid 59
  lea eax,[par]
497 spraid 60
  push eax
512 spraid 61
  invoke ini.get_str,conf_fname, udev, udev_sound_dma, eax,30, udev_sound_dma_def
497 spraid 62
  pop eax
494 spraid 63
  stdcall strtoint,eax
64
  push eax
65
  pop ecx
66
  call _sound_dma
67
 
68
 
69
  ;midibase
512 spraid 70
  lea eax,[par]
497 spraid 71
  push eax
512 spraid 72
  invoke ini.get_str,conf_fname, udev, udev_midibase, eax,30, udev_midibase_def
497 spraid 73
  pop eax
494 spraid 74
  stdcall strtoint,eax
75
  push eax
76
  pop ecx
77
  call _midibase
512 spraid 78
 
79
 
497 spraid 80
  popad
81
  ret
494 spraid 82
endp
83
 
84
ugui db 'gui',0
85
ugui_mouse_speed db 'mouse_speed',0
497 spraid 86
ugui_mouse_speed_def db '2',0
494 spraid 87
ugui_mouse_delay db 'mouse_delay',0
497 spraid 88
ugui_mouse_delay_def db '0x00A',0
494 spraid 89
 
90
udev db 'dev',0
91
udev_sb16 db 'sb16',0
497 spraid 92
udev_sb16_def db '0x220',0
494 spraid 93
udev_sound_dma db 'sound_dma',0
497 spraid 94
udev_sound_dma_def db '1',0
494 spraid 95
udev_midibase db 'midibase',0
497 spraid 96
udev_midibase_def db '0x320',0
494 spraid 97
 
512 spraid 98
proc set_network_conf
99
locals
100
  par db 30 dup(?)
101
endl
102
  pushad
103
 
104
  ;[net]
105
  ;active
106
  lea eax,[par]
107
  invoke ini.get_int,conf_fname, unet, unet_active, 0
108
  or eax,eax
109
  jz .do_not_set_net
110
  call _net_up
111
 
112
  ;addr
113
  lea eax,[par]
114
  push eax
115
  invoke ini.get_str,conf_fname, unet, unet_addr, eax,30, unet_def
116
  pop eax
117
  stdcall do_inet_adr,eax
118
  push eax
119
  pop ecx
120
  call _net_addr
121
 
122
  ;mask
123
  lea eax,[par]
124
  push eax
125
  invoke ini.get_str,conf_fname, unet, unet_mask, eax,30, unet_def
126
  pop eax
127
  stdcall do_inet_adr,eax
128
  push eax
129
  pop ecx
130
  call _net_mask
131
 
132
  ;gate
133
  lea eax,[par]
134
  push eax
135
  invoke ini.get_str,conf_fname, unet, unet_gate, eax,30, unet_def
136
  pop eax
137
  stdcall do_inet_adr,eax
138
  push eax
139
  pop ecx
140
  call _net_gate
141
.do_not_set_net:
142
  popad
143
  ret
144
 
145
 
146
endp
147
 
148
unet db 'net',0
149
unet_active db 'active',0
150
unet_addr db 'addr',0
151
unet_mask db 'mask',0
152
unet_gate db 'gate',0
153
unet_def db 0
154
 
494 spraid 155
; конверчение строки в DWord в eax (по второму символу определяет систему счисления)
497 spraid 156
 
494 spraid 157
proc strtoint stdcall,strs
158
  pushad
159
 
160
  mov eax,[strs]
161
  inc eax
162
  mov bl,[eax]
163
  cmp bl,'x'
164
  je .hex
165
  cmp bl,'X'
166
  je .hex
167
  jmp .dec
168
.hex:
169
  inc eax
170
  stdcall strtoint_hex,eax
171
  jmp .exit
172
.dec:
173
  dec eax
174
  stdcall strtoint_dec,eax
175
.exit:
497 spraid 176
  mov [esp+28],eax
494 spraid 177
  popad
178
  ret
179
endp
180
 
181
; конверчение строки в DWord в eax для десятичного
182
proc strtoint_dec stdcall,strs
183
  pushad
497 spraid 184
  xor edx,edx
185
  ; поиск конца
186
  mov esi,[strs]
187
@@:
188
  lodsb
189
  or al,al
190
  jnz @b
191
  mov ebx,esi
192
  mov esi,[strs]
193
  dec ebx
194
  sub ebx,esi
195
  mov ecx,1
196
 
197
@@:
198
  dec ebx
199
  or ebx,ebx
200
  jz @f
201
  imul ecx,ecx,10  ; порядок
202
  jmp @b
203
@@:
204
 
205
 xchg ebx,ecx
206
 
494 spraid 207
 
208
  xor ecx,ecx
497 spraid 209
 
494 spraid 210
 
211
@@:
212
  xor eax,eax
213
  lodsb
214
  cmp al,0
497 spraid 215
  je .eend
494 spraid 216
 
217
  sub al,30h
218
  imul ebx
219
  add ecx,eax
497 spraid 220
  push ecx
221
  xchg eax,ebx
222
  mov ecx,10
223
  div ecx
224
  xchg eax,ebx
225
  pop ecx
494 spraid 226
  jmp @b
227
 
497 spraid 228
.eend:
229
  mov [esp+28],ecx
494 spraid 230
  popad
231
  ret
232
endp
233
 
234
; конверчение строки в DWord в eax для шеснадцатиричного
235
proc strtoint_hex stdcall,strs
236
  pushad
497 spraid 237
  xor edx,edx
238
 
239
  mov esi,[strs]
240
  mov ebx,1
241
  add esi,1
242
 
243
@@:
244
  lodsb
245
  or al,al
246
  jz @f
247
  shl ebx,4
248
  jmp @b
249
@@:
494 spraid 250
  xor ecx,ecx
251
  mov esi,[strs]
252
 
253
@@:
254
  xor eax,eax
255
  lodsb
256
  cmp al,0
497 spraid 257
  je .eend
494 spraid 258
 
259
  cmp al,'a'
260
  jae .bm
261
  cmp al,'A'
262
  jae .bb
263
  jmp .cc
497 spraid 264
.bm:    ; 57h
494 spraid 265
  sub al,57h
266
  jmp .do
267
 
497 spraid 268
.bb:    ; 37h
494 spraid 269
  sub al,37h
270
  jmp .do
271
 
497 spraid 272
.cc:    ; 30h
494 spraid 273
  sub al,30h
274
 
275
.do:
276
  imul ebx
277
  add ecx,eax
497 spraid 278
  shr ebx,4
494 spraid 279
 
280
  jmp @b
497 spraid 281
 
282
.eend:
283
  mov [esp+28],ecx
494 spraid 284
  popad
285
  ret
497 spraid 286
endp
494 spraid 287
 
288
 
512 spraid 289
 ; преобразовать адрес в то что нада, если пусто то вернуть 0
290
proc do_inet_adr stdcall,strs
291
  pushad
292
 
293
  mov esi,[strs]
294
  mov ebx,0
295
.next:
296
  push esi
297
@@:
298
  lodsb
299
  or al,al
300
  jz @f
301
  cmp al,'.'
302
  jz @f
303
  jmp @b
304
@@:
305
  mov cl, al
306
  mov [esi-1],byte 0
307
  ;pop eax
308
  call strtoint_dec
309
  rol eax,24
310
  ror ebx,8
311
  add ebx,eax
312
  or cl,cl
313
  jz @f
314
  jmp .next
315
@@:
316
  mov [esp+28],ebx
317
  popad
318
  ret
319
endp
320
 
321
 
494 spraid 322
; установки из setup
323
 
324
_mouse_speed:
325
    mov  eax,18
326
    mov  ebx,19
327
    mov  ecx,1
328
    int 0x40
329
 ret
330
 
331
_mouse_delay:
332
    mov  eax,18
333
    mov  ebx,19
334
    mov  ecx,3
335
    int 0x40
336
 ret
337
 
338
_sb16:
339
    mov  eax,21
340
    mov  ebx,4
341
    int 0x40
342
 ret
343
 
344
_sound_dma:
345
    mov  eax,21
346
    mov  ebx,10
347
    int 0x40
348
 ret
349
 
350
 
351
_midibase:
352
    mov  eax,21
353
    mov  ebx,1
354
    int 0x40
512 spraid 355
 ret
356
 
357
_net_addr:
358
    mov eax,52
359
    mov ebx,3
360
    int 0x40
361
 ret
362
 
363
_net_mask:
364
    mov eax,52
365
    mov ebx,12
366
    int 0x40
367
 ret
368
 
369
_net_gate:
370
    mov eax,52
371
    mov ebx,11
372
    int 0x40
373
 ret
374
 
375
_net_up:
376
    mov eax,52
377
    mov ebx,0
378
    int 0x40
379
    and eax,0xFFFFFF80
380
    add eax,3
381
    mov ecx,eax
382
 
383
    mov eax,52
384
    mov ebx,2
385
    int 0x40
530 mikedld 386
 ret