Subversion Repositories Kolibri OS

Rev

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

Rev Author Line No. Line
5849 pathoswith 1
;;;;;;;;;;;;;;;;;;;;;;;
2
;;  SYSTEM SETTINGS  ;;
3
;;;;;;;;;;;;;;;;;;;;;;;
4
 
3221 hidnplayr 5
format binary as ""
5849 pathoswith 6
use32
7
org 0
31 halyavin 8
 
5849 pathoswith 9
db 'MENUET01'
10
dd 1
11
dd START
12
dd IM_END
13
dd I_END
14
dd stack_area
5854 pathoswith 15
dd param
5849 pathoswith 16
dd 0
3221 hidnplayr 17
 
5854 pathoswith 18
include '../../../proc32.inc'
4825 gtament 19
include '../../../macros.inc'
5854 pathoswith 20
include '../../../dll.inc'
5849 pathoswith 21
;---------------------------------------------------------------
5854 pathoswith 22
BootSettings:
23
; Set system language
24
	mov	word[param],0
25
	invoke	ini.get_str, sz_ini, sz_system, sz_language, param, 2, 0
26
	mov	ax, [param]
27
	or	ax, 0x2020	; convert to lowercase
28
	mov	ecx,8
29
	mov	edi,langMarks
30
	repnz scasw
31
	jnz	@f
32
	neg	ecx
33
	add	ecx,8
34
	mcall	21,5
5849 pathoswith 35
@@:
5854 pathoswith 36
 
37
; Set keyboard layout
38
	mov	word[param],0
39
	invoke	ini.get_str, sz_ini, sz_system, sz_keyboard, param, 2, 0
40
	mov	ax, [param]
41
	or	ax, 0x2020
42
	mov	ecx,8
43
	mov	edi,langMarks
44
	repnz scasw
45
	jnz	@f
46
	neg	ecx
47
	add	ecx,7
48
	mov	[keyboard],ecx
4825 gtament 49
	call	_keyboard
5849 pathoswith 50
@@:
5854 pathoswith 51
 
52
; Set font smoothing
53
	mov	dword[param],0
54
	invoke	ini.get_str, sz_ini, sz_system, sz_fontSmooth, param, 4, 0
55
	xor	ecx,ecx
56
	mov	eax,[param]
57
	or	eax,0x20202020
58
	cmp	eax,'off '
59
	jz	@f
60
	inc	ecx
61
	cmp	eax,'on  '
62
	jz	@f
63
	cmp	eax,'sbp '
64
	jnz	.skipFont
65
	inc	ecx
66
@@:
67
	mcall	48,10
68
.skipFont:
69
 
70
; Enable/disable system speaker
71
	mov	dword[param],0
72
	invoke	ini.get_str, sz_ini, sz_system, sz_speaker, param, 4, 0
73
	mov	eax,[param]
74
	or	eax,0x20202020
75
	cmp	eax,'off '
76
	jz	@f
77
	cmp	eax,'on  '
78
	jnz	.skipSpeaker
79
	inc	[speaker_mute]
80
@@:
5849 pathoswith 81
	call	_speaker_mute
5854 pathoswith 82
.skipSpeaker:
83
 
84
; Set mouse speed
85
	invoke	ini.get_int, sz_ini, sz_mouse, sz_speed, 1
86
	mov	edx,eax
87
	mcall	18,19,1
88
 
89
; Set mouse delay
90
	invoke	ini.get_int, sz_ini, sz_mouse, sz_delay, 1
91
	mov	edx,eax
92
	mcall	18,19,3
93
 
94
; Enable/disable LBA access for applications
95
	mov	dword[param],0
96
	invoke	ini.get_str, sz_ini, sz_low_level, sz_lba, param, 4, 0
97
	xor	ecx,ecx
98
	mov	eax,[param]
99
	or	eax,0x20202020
100
	cmp	eax,'off '
101
	jz	@f
102
	cmp	eax,'on  '
103
	jnz	.skipLBA
5849 pathoswith 104
	inc	ecx
105
@@:
5854 pathoswith 106
	mcall	21,11
107
.skipLBA:
108
 
109
; Enable/disable PCI access for applications
110
	mov	dword[param],0
111
	invoke	ini.get_str, sz_ini, sz_low_level, sz_pci, param, 4, 0
112
	xor	ecx,ecx
113
	mov	eax,[param]
114
	or	eax,0x20202020
115
	cmp	eax,'off '
116
	jz	@f
117
	cmp	eax,'on  '
118
	jnz	close
5849 pathoswith 119
	inc	ecx
5854 pathoswith 120
@@:
121
	mcall	21,12
122
	jmp	close
5849 pathoswith 123
;---------------------------------------------------------------
31 halyavin 124
START:
5854 pathoswith 125
	mcall	68,11
126
	stdcall dll.Load, @IMPORT
127
	push	eax
128
	test	eax,eax
129
	jnz	close
31 halyavin 130
 
5854 pathoswith 131
	cmp	[param],dword 'BOOT'
132
	jz	BootSettings
133
	pop	eax
5849 pathoswith 134
; get current settings
135
	mcall	26,2,9
4825 gtament 136
	dec	eax
137
	mov	[keyboard],eax
5849 pathoswith 138
 
139
	mcall	26,5
5854 pathoswith 140
	dec	eax
4825 gtament 141
	mov	[syslang],eax
127 mario79 142
 
5849 pathoswith 143
	mcall	26,11
144
	mov	[lba_read],eax
4825 gtament 145
 
5849 pathoswith 146
	mcall	26,12
147
	mov	[pci_acc],eax
4825 gtament 148
 
5849 pathoswith 149
	mcall	18,8,1
150
	mov	[speaker_mute],eax
31 halyavin 151
 
5849 pathoswith 152
	mcall	48,9
153
	mov	[fontSmoothing],eax
31 halyavin 154
 
5849 pathoswith 155
	call	loadtxt
4825 gtament 156
 
5849 pathoswith 157
draw_infotext:
158
	mov	eax,[syslang]
159
	mov	edi,[text]
5854 pathoswith 160
	lea	esi,[eax*8+langs]
5849 pathoswith 161
	add	edi,28
162
	movsd
163
	movsd
31 halyavin 164
 
5849 pathoswith 165
	mov	eax,[keyboard]
166
	add	edi,LLL-8
167
	lea	esi,[eax*8+langs]
168
	movsd
169
	movsd
170
	add	edi,LLL-8
31 halyavin 171
 
5849 pathoswith 172
	mov	eax,[lba_read]
173
	call	onoff
174
	mov	[edi],ebx
4825 gtament 175
 
5849 pathoswith 176
	mov	eax,[pci_acc]
177
	call	onoff
178
	mov	[edi+LLL],ebx
31 halyavin 179
 
5849 pathoswith 180
	mov	eax,[speaker_mute]
181
	call	onoff
182
	mov	[edi+LLL*2],ebx
4825 gtament 183
 
5849 pathoswith 184
	mov	ebx,'SUBP'
185
	mov	ecx,'IXEL'
186
	cmp	[fontSmoothing],2
187
	jz	@f
188
	mov	eax,[fontSmoothing]
189
	call	onoff
190
	mov	ecx,'    '
191
@@:
192
	mov	[edi+LLL*3],ebx
193
	mov	[edi+LLL*3+4],ecx
4825 gtament 194
 
5849 pathoswith 195
draw_window:
196
	mcall	12,1
197
	mov	ecx,50*65536+32*(4+stringsAmount)
198
	mcall	0,<50,700>,,0xB4111199,0,title
199
; Main buttons
200
	mov	eax,8
201
	mov	ecx,6*65536+26
202
	mov	edx,4
203
	mov	esi,0x5580c0
204
	mov	ebp,stringsAmount
205
@@:
206
	mcall	,<490,24>
4825 gtament 207
	inc	edx
5849 pathoswith 208
	mcall	,<526,24>
4825 gtament 209
	inc	edx
5849 pathoswith 210
	mcall	,<562,120>
211
	inc	edx
212
	add	ecx,32*65536
213
	dec	ebp
214
	jnz	@b
215
; APPLY ALL
216
	add	ecx,32*65536
217
	mcall	,<514,168>,,3,0x005588dd
218
; SAVE ALL
219
	add	ecx,32*65536
4825 gtament 220
	dec	edx
221
	mcall
5849 pathoswith 222
; text
4825 gtament 223
	mov	eax,4
5849 pathoswith 224
	mov	ebx,6*65536+11
225
	mov	ecx,1ffffffh
226
	mov	edx,[text]
4825 gtament 227
	mov	esi,LLL
5849 pathoswith 228
	mov	ebp,stringsAmount
2478 mario79 229
newline:
4825 gtament 230
	mcall
5849 pathoswith 231
	add	ebx,32
4825 gtament 232
	add	edx,esi
233
	dec	ebp
234
	jnz	newline
31 halyavin 235
 
5849 pathoswith 236
	mov	ebp,2
237
	add	ebx,32
2478 mario79 238
@@:
4825 gtament 239
	mcall
5849 pathoswith 240
	add	ebx,32
4825 gtament 241
	add	edx,esi
242
	dec	ebp
243
	jnz	@b
5849 pathoswith 244
 
245
	mcall	12,2
246
 
247
still:
248
	mcall	10
249
	cmp	eax,1
250
	jz	draw_window
251
 
252
	cmp	eax,2
253
	jz	key
254
 
255
	cmp	eax,3
256
	jz	button
257
 
258
	jmp	still
259
;---------------------------------------------------------------
260
key:
261
	mcall	2
262
	jmp	still
263
;---------------------------------------------------------------
264
button:
265
	mcall	17
266
	shr	eax,8
267
	call	dword[eax*4+buttonTab-4]
268
	jmp	draw_infotext
269
close:
270
	pop	eax
271
	mcall	-1
272
language1:
273
	dec	[syslang]
5854 pathoswith 274
	jns	@f
275
	mov	[syslang],7
276
	jmp	@f
5849 pathoswith 277
language2:
278
	inc	[syslang]
5854 pathoswith 279
	cmp	[syslang],8
5849 pathoswith 280
	jnz	@f
5854 pathoswith 281
	mov	[syslang],0
282
@@:
283
	jmp	loadtxt
5849 pathoswith 284
layout1:
285
	dec	[keyboard]
286
	jns	@f
287
	mov	[keyboard],7
288
	ret
289
layout2:
290
	inc	[keyboard]
291
	cmp	[keyboard],8
292
	jnz	@f
293
	mov	[keyboard],0
294
	ret
295
LBA1:
296
	btr	[lba_read],0
297
	ret
298
LBA2:
299
	bts	[lba_read],0
300
	ret
301
PCI1:
302
	btr	[pci_acc],0
303
	ret
304
PCI2:
305
	bts	[pci_acc],0
306
	ret
307
SPEAKER1:
308
	btr	[speaker_mute],0
309
	ret
310
SPEAKER2:
311
	bts	[speaker_mute],0
312
	ret
313
font1:
314
	cmp	[fontSmoothing],0
315
	jz	@f
316
	dec	[fontSmoothing]
317
	ret
318
font2:
319
	cmp	[fontSmoothing],2
320
	jz	@f
321
	inc	[fontSmoothing]
322
@@:
323
	ret
5854 pathoswith 324
apply_all:
325
	call	fontApply
326
	call	_syslang
327
	call	_lba_read
328
	call	_pci_acc
329
	call	_speaker_mute
330
	call	_keyboard
331
	ret
332
_syslang:
333
	mov	ecx,[syslang]
334
	inc	ecx
335
	mcall	21,5
336
	ret
337
_lba_read:
338
	mcall	21,11,[lba_read]
339
	ret
340
_pci_acc:
341
	mcall	21,12,[pci_acc]
342
	ret
343
fontApply:
344
	mcall	48,10,[fontSmoothing]
345
	ret
346
_speaker_mute:
347
	mcall	18,8,1
348
	cmp	[speaker_mute],eax
349
	je	@b
350
	inc	ecx
351
	mcall	18
352
_keyboard:
353
	mov	ebp,[keyboard]
354
	mov	edx,[ebp*4+keymapTab]
355
	mcall	21,2,1
356
	inc	ecx
357
	mov	edx,[ebp*4+shiftKeymapTab]
358
	mcall	21
359
	inc	ecx
360
	mov	edx,[ebp*4+altKeymapTab]
361
	mcall	21
362
	mov	edx,ebp
363
	inc	edx
364
	mov	cl, 9
365
	mcall	21
366
	ret
5849 pathoswith 367
;---------------------------------------------------------------
368
loadtxt:
5854 pathoswith 369
	cmp	[syslang],3
370
	jz	.ru
371
	cmp	[syslang],5
372
	jz	.et
373
	mov	[text],texteng
374
	ret
375
.ru:
5849 pathoswith 376
	mov	[text],textrus
377
	ret
5854 pathoswith 378
.et:
5849 pathoswith 379
	mov	[text],textet
380
	ret
381
;---------------------------------------------------------------
31 halyavin 382
onoff:
5854 pathoswith 383
	cmp	[syslang],3
384
	jz	.ru
385
	cmp	[syslang],5
386
	jz	.et
387
	mov	ebx,'OFF '
388
	test	eax,eax
389
	jz	@f
390
	mov	ebx,'ON  '
391
	ret
392
.ru:
393
	mov	ebx,'НЕТ '
394
	test	eax,eax
395
	jz	@f
4825 gtament 396
	mov	ebx,'ДА  '
397
	ret
5854 pathoswith 398
.et:
399
	mov	ebx,'V─L.'
400
	test	eax,eax
401
	jz	@f
4825 gtament 402
	mov	ebx,'SEES'
5854 pathoswith 403
@@:
4825 gtament 404
	ret
5854 pathoswith 405
;---------------------------------------------------------------
406
saveAll:
407
; system language
408
	mov	eax,[syslang]
409
	mov	ax, [eax*2+langMarks]
410
	mov	[param],eax
411
	invoke	ini.set_str, sz_ini, sz_system, sz_language, param, 2
412
 
413
; keyboard layout
414
	mov	eax,[keyboard]
415
	mov	ax, [eax*2+langMarks]
416
	mov	[param],eax
417
	invoke	ini.set_str, sz_ini, sz_system, sz_keyboard, param, 2
418
 
419
; font smoothing
420
	mov	dword[param],'off'
421
	cmp	[fontSmoothing],0
422
	jz	@f
423
	mov	dword[param],'on '
424
	cmp	[fontSmoothing],1
425
	jz	@f
426
	mov	dword[param],'sbp'
427
@@:
428
	invoke	ini.set_str, sz_ini, sz_system, sz_fontSmooth, param, 3
429
 
430
; system speaker
431
	mov	dword[param],'off'
432
	cmp	[speaker_mute],0
433
	jz	@f
434
	mov	dword[param],'on '
435
@@:
436
	invoke	ini.set_str, sz_ini, sz_system, sz_speaker, param, 3
437
 
438
; LBA access for applications
439
	mov	dword[param],'off'
440
	cmp	[lba_read],0
441
	jz	@f
442
	mov	dword[param],'on '
443
@@:
444
	invoke	ini.set_str, sz_ini, sz_low_level, sz_lba, param, 3
445
 
446
; PCI access for applications
447
	mov	dword[param],'off'
448
	cmp	[pci_acc],0
449
	jz	@f
450
	mov	dword[param],'on '
451
@@:
452
	invoke	ini.set_str, sz_ini, sz_low_level, sz_pci, param, 3
4825 gtament 453
	ret
5849 pathoswith 454
;---------------------------------------------------------------
455
align 4
456
buttonTab:	; button handler pointers: -,+,apply
457
	dd close
458
	dd saveAll
459
	dd apply_all
460
	dd language1
461
	dd language2
462
	dd _syslang
463
	dd layout1
464
	dd layout2
465
	dd _keyboard
466
	dd LBA1
467
	dd LBA2
468
	dd _lba_read
469
	dd PCI1
470
	dd PCI2
471
	dd _pci_acc
472
	dd SPEAKER1
473
	dd SPEAKER2
474
	dd _speaker_mute
475
	dd font1
476
	dd font2
477
	dd fontApply
478
keymapTab:
479
	dd en_keymap
480
	dd fi_keymap
481
	dd ge_keymap
482
	dd ru_keymap
483
	dd fr_keymap
484
	dd et_keymap
485
	dd be_keymap
486
	dd it_keymap
487
shiftKeymapTab:
488
	dd en_keymap_shift
489
	dd fi_keymap_shift
490
	dd ge_keymap_shift
491
	dd ru_keymap_shift
492
	dd fr_keymap_shift
493
	dd et_keymap_shift
494
	dd be_keymap_shift
495
	dd it_keymap_shift
496
altKeymapTab:
497
	dd alt_general
498
	dd alt_general
499
	dd alt_general
500
	dd alt_general
501
	dd fr_keymap_alt_gr
502
	dd alt_general
503
	dd be_keymap_alt_gr
504
	dd it_keymap_alt_gr
31 halyavin 505
 
5849 pathoswith 506
syslang 	dd 0
507
keyboard	dd 0
508
lba_read	dd 0
509
pci_acc 	dd 0
510
speaker_mute	dd 0
511
fontSmoothing	dd 0
512
 
5854 pathoswith 513
@IMPORT:
514
library libini, 'libini.obj'
515
import	libini, \
516
	ini.get_str, 'ini_get_str',\
517
	ini.get_int, 'ini_get_int',\
518
	ini.set_str, 'ini_set_str',\
519
	ini.set_int, 'ini_set_int'
5849 pathoswith 520
 
5854 pathoswith 521
title	db "System settings",0
522
sz_ini	db "/sys/settings/system.ini",0
5849 pathoswith 523
 
5854 pathoswith 524
sz_system	db "system",0
525
sz_language	db "language",0
526
sz_keyboard	db "keyboard",0
527
sz_fontSmooth	db "font smoothing",0
528
sz_speaker	db "speaker mute",0
529
 
530
sz_mouse	db "mouse",0
531
sz_speed	db "speed",0
532
sz_delay	db "delay",0
533
 
534
sz_low_level	db "low-level",0
535
sz_lba		db "LBA",0
536
sz_pci		db "PCI",0
537
 
5849 pathoswith 538
LLL = 56
539
stringsAmount = 6
540
 
541
align 4
542
text	dd 0
543
langs:
544
db 'ENGLISH FINNISH GERMAN  RUSSIAN FRENCH  ESTONIANBELGIAN ITALIAN '
5854 pathoswith 545
langMarks:
546
db	'enfiderufretesit'
5849 pathoswith 547
 
31 halyavin 548
textrus:
5849 pathoswith 549
db 'Язык системы              :              <  >  Применить'
550
db 'Раскладка клавиатуры      :              <  >  Применить'
551
db 'Включить LBA              :              -  +  Применить'
552
db 'Доступ к шине PCI         :              -  +  Применить'
553
db 'Выключить SPEAKER         :              -  +  Применить'
554
db 'Сглаживание шрифтов       :              -  +  Применить'
4825 gtament 555
 
5849 pathoswith 556
db 'ВНИМАНИЕ:                                  Применить все'
557
db 'НЕ ЗАБУДЬТЕ СОХРАНИТЬ НАСТРОЙКИ            Сохранить все'
558
 
31 halyavin 559
texteng:
5849 pathoswith 560
db 'System language           :              <  >    Apply  '
561
db 'Keyboard layout           :              <  >    Apply  '
5854 pathoswith 562
db 'Allow LBA access          :              -  +    Apply  '
563
db 'Allow PCI access          :              -  +    Apply  '
564
db 'Disable SPEAKER           :              -  +    Apply  '
5849 pathoswith 565
db 'Font smoothing            :              -  +    Apply  '
31 halyavin 566
 
5849 pathoswith 567
db 'NOTE:                                        Apply all  '
568
db 'SAVE YOUR SETTINGS BEFORE QUITING KOLIBRI    Save all   '
569
 
3927 kaitz 570
textet:
5849 pathoswith 571
db 'S№steemi keel             :              <  >   Kinnita '
572
db 'Klaviatuuri paigutus      :              <  >   Kinnita '
573
db 'LBA lugemine lubatud      :              -  +   Kinnita '
574
db 'PCI juurdepффs programm.  :              -  +   Kinnita '
5854 pathoswith 575
db 'Disable SPEAKER           :              -  +   Kinnita '
5849 pathoswith 576
db 'Font smoothing            :              -  +   Kinnita '
31 halyavin 577
 
5849 pathoswith 578
db 'M─RKUS:                                    Kinnita kїik '
579
db 'SALVESTA SEADED ENNE KOLIBRIST V─LJUMIST   Salvesta kїik'
580
 
2299 hidnplayr 581
include 'keymaps.inc'
2478 mario79 582
IM_END:
5854 pathoswith 583
param:
4825 gtament 584
	rb 1024
2478 mario79 585
stack_area:
5849 pathoswith 586
I_END: