Subversion Repositories Kolibri OS

Rev

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

Rev Author Line No. Line
488 spraid 1
;-------------------------------------------------------------------------
2
;
3
;    Файл конфигурации
4
;
5
;
6
;     SPraid
7
;
8
;-------------------------------------------------------------------------
9
 
10
conf_file_loaded: db 0			; флаг загрузки конфига
11
 
12
; загрузка ини файла в библиотеку
13
proc load_conf_file
14
  pushad
15
  invoke ini.load,.fname
16
  mov [conf_file_loaded],byte 1
17
  popad
18
  ret
19
  .fname db '%sys%/sys.conf',0
494 spraid 20
endp
21
 
22
 
497 spraid 23
proc set_kernel_conf
494 spraid 24
locals
25
  par db 30 dup(?)
26
endl
497 spraid 27
  pushad
494 spraid 28
  ;[gui]
29
  ;mouse_speed
30
  mov eax,ebp
31
  add eax,par-ebp
32
  push eax
497 spraid 33
  invoke ini.get_str, ugui, ugui_mouse_speed, eax, ugui_mouse_speed_def
34
  pop eax
35
  stdcall strtoint,eax
36
  push eax
494 spraid 37
  pop edx
38
  call _mouse_speed
497 spraid 39
 
40
  popad
41
  ret
494 spraid 42
 
43
  ;mouse_delay
44
  mov eax,ebp
45
  add eax,par-ebp
497 spraid 46
  push eax
494 spraid 47
  invoke ini.get_str, ugui, ugui_mouse_delay, eax, ugui_mouse_delay_def
497 spraid 48
  pop eax
494 spraid 49
  stdcall strtoint,eax
50
  push eax
51
  pop edx
52
  call _mouse_delay
53
 
54
  ;[dev]
55
  ;sb16
56
  mov eax,ebp
57
  add eax,par-ebp
497 spraid 58
  push eax
494 spraid 59
  invoke ini.get_str, udev, udev_sb16, eax, udev_sb16_def
497 spraid 60
  pop eax
494 spraid 61
  stdcall strtoint,eax
62
  push eax
63
  pop ecx
64
  call _sb16
65
 
66
  ;sound_dma
67
  mov eax,ebp
68
  add eax,par-ebp
497 spraid 69
  push eax
494 spraid 70
  invoke ini.get_str, udev, udev_sound_dma, eax, udev_sound_dma_def
497 spraid 71
  pop eax
494 spraid 72
  stdcall strtoint,eax
73
  push eax
74
  pop ecx
75
  call _sound_dma
76
 
77
 
78
  ;midibase
79
  mov eax,ebp
80
  add eax,par-ebp
497 spraid 81
  push eax
494 spraid 82
  invoke ini.get_str, udev, udev_midibase, eax, udev_midibase_def
497 spraid 83
  pop eax
494 spraid 84
  stdcall strtoint,eax
85
  push eax
86
  pop ecx
87
  call _midibase
497 spraid 88
 
89
  popad
90
  ret
494 spraid 91
endp
92
 
93
ugui db 'gui',0
94
ugui_mouse_speed db 'mouse_speed',0
497 spraid 95
ugui_mouse_speed_def db '2',0
494 spraid 96
ugui_mouse_delay db 'mouse_delay',0
497 spraid 97
ugui_mouse_delay_def db '0x00A',0
494 spraid 98
 
99
udev db 'dev',0
100
udev_sb16 db 'sb16',0
497 spraid 101
udev_sb16_def db '0x220',0
494 spraid 102
udev_sound_dma db 'sound_dma',0
497 spraid 103
udev_sound_dma_def db '1',0
494 spraid 104
udev_midibase db 'midibase',0
497 spraid 105
udev_midibase_def db '0x320',0
494 spraid 106
 
107
; конверчение строки в DWord в eax (по второму символу определяет систему счисления)
497 spraid 108
 
494 spraid 109
proc strtoint stdcall,strs
110
  pushad
111
 
112
  mov eax,[strs]
113
  inc eax
114
  mov bl,[eax]
115
  cmp bl,'x'
116
  je .hex
117
  cmp bl,'X'
118
  je .hex
119
  jmp .dec
120
.hex:
121
  inc eax
122
  stdcall strtoint_hex,eax
123
  jmp .exit
124
.dec:
125
  dec eax
126
  stdcall strtoint_dec,eax
127
.exit:
497 spraid 128
  mov [esp+28],eax
494 spraid 129
  popad
130
  ret
131
endp
132
 
133
; конверчение строки в DWord в eax для десятичного
134
proc strtoint_dec stdcall,strs
135
  pushad
497 spraid 136
  xor edx,edx
137
  ; поиск конца
138
  mov esi,[strs]
139
@@:
140
  lodsb
141
  or al,al
142
  jnz @b
143
  mov ebx,esi
144
  mov esi,[strs]
145
  dec ebx
146
  sub ebx,esi
147
  mov ecx,1
148
 
149
@@:
150
  dec ebx
151
  or ebx,ebx
152
  jz @f
153
  imul ecx,ecx,10  ; порядок
154
  jmp @b
155
@@:
156
 
157
 xchg ebx,ecx
158
 
494 spraid 159
 
160
  xor ecx,ecx
497 spraid 161
 
494 spraid 162
 
163
@@:
164
  xor eax,eax
165
  lodsb
166
  cmp al,0
497 spraid 167
  je .eend
494 spraid 168
 
169
  sub al,30h
170
  imul ebx
171
  add ecx,eax
497 spraid 172
  push ecx
173
  xchg eax,ebx
174
  mov ecx,10
175
  div ecx
176
  xchg eax,ebx
177
  pop ecx
494 spraid 178
  jmp @b
179
 
497 spraid 180
.eend:
181
  mov [esp+28],ecx
494 spraid 182
  popad
183
  ret
184
endp
185
 
186
; конверчение строки в DWord в eax для шеснадцатиричного
187
proc strtoint_hex stdcall,strs
188
  pushad
497 spraid 189
  xor edx,edx
190
 
191
  mov esi,[strs]
192
  mov ebx,1
193
  add esi,1
194
 
195
@@:
196
  lodsb
197
  or al,al
198
  jz @f
199
  shl ebx,4
200
  jmp @b
201
@@:
494 spraid 202
  xor ecx,ecx
203
  mov esi,[strs]
204
 
205
@@:
206
  xor eax,eax
207
  lodsb
208
  cmp al,0
497 spraid 209
  je .eend
494 spraid 210
 
211
  cmp al,'a'
212
  jae .bm
213
  cmp al,'A'
214
  jae .bb
215
  jmp .cc
497 spraid 216
.bm:    ; 57h
494 spraid 217
  sub al,57h
218
  jmp .do
219
 
497 spraid 220
.bb:    ; 37h
494 spraid 221
  sub al,37h
222
  jmp .do
223
 
497 spraid 224
.cc:    ; 30h
494 spraid 225
  sub al,30h
226
 
227
.do:
228
  imul ebx
229
  add ecx,eax
497 spraid 230
  shr ebx,4
494 spraid 231
 
232
  jmp @b
497 spraid 233
 
234
.eend:
235
  mov [esp+28],ecx
494 spraid 236
  popad
237
  ret
497 spraid 238
endp
494 spraid 239
 
240
 
241
; установки из setup
242
 
243
_mouse_speed:
244
    mov  eax,18
245
    mov  ebx,19
246
    mov  ecx,1
247
    int 0x40
248
 ret
249
 
250
_mouse_delay:
251
    mov  eax,18
252
    mov  ebx,19
253
    mov  ecx,3
254
    int 0x40
255
 ret
256
 
257
_sb16:
258
    mov  eax,21
259
    mov  ebx,4
260
    int 0x40
261
 ret
262
 
263
_sound_dma:
264
    mov  eax,21
265
    mov  ebx,10
266
    int 0x40
267
 ret
268
 
269
 
270
_midibase:
271
    mov  eax,21
272
    mov  ebx,1
273
    int 0x40
274
 ret