Subversion Repositories Kolibri OS

Rev

Rev 5919 | Rev 5973 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. ;;;;;;;;;;;;;;;;;;;;;;;
  2. ;;  SYSTEM SETTINGS  ;;
  3. ;;;;;;;;;;;;;;;;;;;;;;;
  4.  
  5. format binary as ""
  6. use32
  7. org 0
  8.  
  9. db 'MENUET01'
  10. dd 1
  11. dd START
  12. dd IM_END
  13. dd I_END
  14. dd I_END
  15. dd param
  16. dd 0
  17.  
  18. include '../../../proc32.inc'
  19. include '../../../macros.inc'
  20. include '../../../dll.inc'
  21. ;---------------------------------------------------------------
  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
  35. @@:
  36.  
  37. ; Set font smoothing
  38.         mov     dword[param],0
  39.         invoke  ini.get_str, sz_ini, sz_system, sz_fontSmooth, param, 4, 0
  40.         xor     ecx,ecx
  41.         mov     eax,[param]
  42.         or      eax,0x20202020
  43.         cmp     eax,'off '
  44.         jz      @f
  45.         inc     ecx
  46.         cmp     eax,'on  '
  47.         jz      @f
  48.         cmp     eax,'sbp '
  49.         jnz     .skipFont
  50.         inc     ecx
  51. @@:
  52.         mcall   48,10
  53. .skipFont:
  54.  
  55. ; Enable/disable system speaker
  56.         mov     dword[param],0
  57.         invoke  ini.get_str, sz_ini, sz_system, sz_speaker, param, 4, 0
  58.         mov     eax,[param]
  59.         or      eax,0x20202020
  60.         cmp     eax,'off '
  61.         jz      @f
  62.         cmp     eax,'on  '
  63.         jnz     .skipSpeaker
  64.         inc     [speaker_mute]
  65. @@:
  66.         call    _speaker_mute
  67. .skipSpeaker:
  68.  
  69. ; Set font size
  70.         invoke  ini.get_int, sz_ini, sz_system, sz_fontSize, 9
  71.         mov     ecx,eax
  72.         mcall   48,12
  73.  
  74. ; Set mouse speed
  75.         invoke  ini.get_int, sz_ini, sz_mouse, sz_speed, 1
  76.         mov     edx,eax
  77.         mcall   18,19,1
  78.  
  79. ; Set mouse delay
  80.         invoke  ini.get_int, sz_ini, sz_mouse, sz_delay, 1
  81.         mov     edx,eax
  82.         mcall   18,19,3
  83.  
  84. ; Enable/disable LBA access for applications
  85.         mov     dword[param],0
  86.         invoke  ini.get_str, sz_ini, sz_low_level, sz_lba, param, 4, 0
  87.         xor     ecx,ecx
  88.         mov     eax,[param]
  89.         or      eax,0x20202020
  90.         cmp     eax,'off '
  91.         jz      @f
  92.         cmp     eax,'on  '
  93.         jnz     .skipLBA
  94.         inc     ecx
  95. @@:
  96.         mcall   21,11
  97. .skipLBA:
  98.  
  99. ; Enable/disable PCI access for applications
  100.         mov     dword[param],0
  101.         invoke  ini.get_str, sz_ini, sz_low_level, sz_pci, param, 4, 0
  102.         xor     ecx,ecx
  103.         mov     eax,[param]
  104.         or      eax,0x20202020
  105.         cmp     eax,'off '
  106.         jz      @f
  107.         cmp     eax,'on  '
  108.         jnz     close
  109.         inc     ecx
  110. @@:
  111.         mcall   21,12
  112.         jmp     close
  113. ;---------------------------------------------------------------
  114. START:
  115.         mcall   68,11
  116.         stdcall dll.Load, @IMPORT
  117.         push    eax
  118.         test    eax,eax
  119.         jnz     close
  120.  
  121.         cmp     [param],dword 'BOOT'
  122.         jz      BootSettings
  123.         pop     eax
  124.  
  125. ; get current settings
  126.         mcall   26,5
  127.         dec     eax
  128.         mov     [syslang],eax
  129.  
  130.         mcall   26,11
  131.         mov     [lba_read],eax
  132.  
  133.         mcall   26,12
  134.         mov     [pci_acc],eax
  135.  
  136.         mcall   18,8,1
  137.         mov     [speaker_mute],eax
  138.  
  139.         mcall   48,9
  140.         mov     [fontSmoothing],eax
  141.  
  142.         mcall   48,11
  143.         mov     [fontSize],eax
  144.  
  145. loadtxt:
  146.         cmp     [syslang],3
  147.         jz      .ru
  148.         cmp     [syslang],5
  149.         jz      .et
  150.         mov     [text],texteng
  151.         jmp     draw_window
  152. .et:
  153.         mov     [text],textet
  154.         jmp     draw_window
  155. .ru:
  156.         mov     [text],textrus
  157.  
  158. draw_window:
  159.         mcall   12,1
  160.         mov     ecx,50*65536+32*(4+stringsAmount)
  161.         mcall   0,<50,700>,,0xB4111199,0,title
  162. ; Main buttons
  163.         mov     eax,8
  164.         mov     ecx,6*65536+26
  165.         mov     edx,4
  166.         mov     esi,0x5580c0
  167.         mov     ebp,stringsAmount
  168. @@:
  169.         mcall   ,<490,24>
  170.         inc     edx
  171.         mcall   ,<526,24>
  172.         inc     edx
  173.         mcall   ,<562,120>
  174.         inc     edx
  175.         add     ecx,32*65536
  176.         dec     ebp
  177.         jnz     @b
  178. ; APPLY ALL
  179.         add     ecx,32*65536
  180.         mcall   ,<514,168>,,3,0x005588dd
  181. ; SAVE ALL
  182.         add     ecx,32*65536
  183.         dec     edx
  184.         mcall
  185.         mcall   12,2
  186.  
  187. draw_infotext:
  188.         mov     eax,[syslang]
  189.         mov     edi,[text]
  190.         lea     esi,[eax*8+langs]
  191.         add     edi,28
  192.         movsd
  193.         movsd
  194.         add     edi,LLL-8
  195.  
  196.         mov     eax,[lba_read]
  197.         call    onoff
  198.         mov     [edi],ebx
  199.  
  200.         mov     eax,[pci_acc]
  201.         call    onoff
  202.         mov     [edi+LLL],ebx
  203.  
  204.         mov     eax,[speaker_mute]
  205.         call    onoff
  206.         mov     [edi+LLL*2],ebx
  207.  
  208.         mov     ebx,'SUBP'
  209.         mov     ecx,'IXEL'
  210.         cmp     [fontSmoothing],2
  211.         jz      @f
  212.         mov     eax,[fontSmoothing]
  213.         call    onoff
  214.         mov     ecx,'    '
  215. @@:
  216.         mov     [edi+LLL*3],ebx
  217.         mov     [edi+LLL*3+4],ecx
  218.  
  219.         mov     eax,[fontSize]
  220.         mov     bl, 10
  221.         div     bl
  222.         add     ax, '00'
  223.         mov     [edi+LLL*4],ax
  224. ; draw text
  225.         mcall   13,<342,96>,32*stringsAmount,80111199h
  226.         mov     eax,4
  227.         mov     ebx,6*65536+11
  228.         mov     ecx,1ffffffh
  229.         mov     edx,[text]
  230.         mov     esi,LLL
  231.         mov     ebp,stringsAmount
  232. newline:
  233.         mcall
  234.         add     ebx,32
  235.         add     edx,esi
  236.         dec     ebp
  237.         jnz     newline
  238.  
  239.         mov     ebp,2
  240.         add     ebx,32
  241. @@:
  242.         mcall
  243.         add     ebx,32
  244.         add     edx,esi
  245.         dec     ebp
  246.         jnz     @b
  247.  
  248. still:
  249.         mcall   10
  250.         cmp     eax,1
  251.         jz      draw_window
  252.  
  253.         cmp     eax,2
  254.         jz      key
  255.  
  256.         cmp     eax,3
  257.         jz      button
  258.  
  259.         jmp     still
  260. ;---------------------------------------------------------------
  261. key:
  262.         mcall   2
  263.         jmp     still
  264. ;---------------------------------------------------------------
  265. button:
  266.         mcall   17
  267.         shr     eax,8
  268.         call    dword[eax*4+buttonTab-4]
  269.         jmp     draw_infotext
  270. close:
  271.         pop     eax
  272.         mcall   -1
  273. language1:
  274.         dec     [syslang]
  275.         jns     @f
  276.         mov     [syslang],7
  277.         jmp     @f
  278. language2:
  279.         inc     [syslang]
  280.         cmp     [syslang],8
  281.         jc      @f
  282.         mov     [syslang],0
  283. @@:
  284.         pop     eax
  285.         jmp     loadtxt
  286. LBA1:
  287.         btr     [lba_read],0
  288.         ret
  289. LBA2:
  290.         bts     [lba_read],0
  291.         ret
  292. PCI1:
  293.         btr     [pci_acc],0
  294.         ret
  295. PCI2:
  296.         bts     [pci_acc],0
  297.         ret
  298. SPEAKER1:
  299.         btr     [speaker_mute],0
  300.         ret
  301. SPEAKER2:
  302.         bts     [speaker_mute],0
  303.         ret
  304. font1:
  305.         cmp     [fontSmoothing],0
  306.         jz      @f
  307.         dec     [fontSmoothing]
  308.         ret
  309. font2:
  310.         cmp     [fontSmoothing],2
  311.         jz      @f
  312.         inc     [fontSmoothing]
  313.         ret
  314. fontSize1:
  315.         cmp     [fontSize],10
  316.         jc      @f
  317.         dec     [fontSize]
  318. @@:
  319.         ret
  320. fontSize2:
  321.         inc     [fontSize]
  322.         ret
  323. apply_all:
  324.         call    _lba_read
  325.         call    _pci_acc
  326.         call    _speaker_mute
  327.         call    fontApply
  328.         call    fontSizeApply
  329. _syslang:
  330.         mov     ecx,[syslang]
  331.         inc     ecx
  332.         mcall   21,5
  333.         ret
  334. _lba_read:
  335.         mcall   21,11,[lba_read]
  336.         ret
  337. _pci_acc:
  338.         mcall   21,12,[pci_acc]
  339.         ret
  340. fontApply:
  341.         mcall   48,10,[fontSmoothing]
  342.         ret
  343. fontSizeApply:
  344.         mcall   48,12,[fontSize]
  345.         ret
  346. _speaker_mute:
  347.         mcall   18,8,1
  348.         cmp     [speaker_mute],eax
  349.         jz      @f
  350.         inc     ecx
  351.         mcall   18
  352. @@:
  353.         ret
  354. ;---------------------------------------------------------------
  355. onoff:
  356.         cmp     [syslang],3
  357.         jz      .ru
  358.         cmp     [syslang],5
  359.         jz      .et
  360.         mov     ebx,'OFF '
  361.         test    eax,eax
  362.         jz      @f
  363.         mov     ebx,'ON  '
  364.         ret
  365. .ru:
  366.         mov     ebx,'…’ '
  367.         test    eax,eax
  368.         jz      @f
  369.         mov     ebx,'„€  '
  370.         ret
  371. .et:
  372.         mov     ebx,'VÄL.'
  373.         test    eax,eax
  374.         jz      @f
  375.         mov     ebx,'SEES'
  376. @@:
  377.         ret
  378. ;---------------------------------------------------------------
  379. saveAll:
  380. ; system language
  381.         mov     eax,[syslang]
  382.         mov     ax, [eax*2+langMarks]
  383.         mov     [param],eax
  384.         invoke  ini.set_str, sz_ini, sz_system, sz_language, param, 2
  385.  
  386. ; font size
  387.         invoke  ini.set_int, sz_ini, sz_system, sz_fontSize, [fontSize]
  388.  
  389. ; font smoothing
  390.         mov     dword[param],'off'
  391.         cmp     [fontSmoothing],0
  392.         jz      @f
  393.         mov     dword[param],'on '
  394.         cmp     [fontSmoothing],1
  395.         jz      @f
  396.         mov     dword[param],'sbp'
  397. @@:
  398.         invoke  ini.set_str, sz_ini, sz_system, sz_fontSmooth, param, 3
  399.  
  400. ; system speaker
  401.         mov     dword[param],'off'
  402.         cmp     [speaker_mute],0
  403.         jz      @f
  404.         mov     dword[param],'on '
  405. @@:
  406.         invoke  ini.set_str, sz_ini, sz_system, sz_speaker, param, 3
  407.  
  408. ; LBA access for applications
  409.         mov     dword[param],'off'
  410.         cmp     [lba_read],0
  411.         jz      @f
  412.         mov     dword[param],'on '
  413. @@:
  414.         invoke  ini.set_str, sz_ini, sz_low_level, sz_lba, param, 3
  415.  
  416. ; PCI access for applications
  417.         mov     dword[param],'off'
  418.         cmp     [pci_acc],0
  419.         jz      @f
  420.         mov     dword[param],'on '
  421. @@:
  422.         invoke  ini.set_str, sz_ini, sz_low_level, sz_pci, param, 3
  423.         ret
  424. ;---------------------------------------------------------------
  425. ; DATA
  426. align 4
  427. buttonTab:      ; button handler pointers: -,+,apply
  428.         dd close
  429.         dd saveAll
  430.         dd apply_all
  431.         dd language1
  432.         dd language2
  433.         dd _syslang
  434.         dd LBA1
  435.         dd LBA2
  436.         dd _lba_read
  437.         dd PCI1
  438.         dd PCI2
  439.         dd _pci_acc
  440.         dd SPEAKER1
  441.         dd SPEAKER2
  442.         dd _speaker_mute
  443.         dd font1
  444.         dd font2
  445.         dd fontApply
  446.         dd fontSize1
  447.         dd fontSize2
  448.         dd fontSizeApply
  449.  
  450. @IMPORT:
  451. library libini, 'libini.obj'
  452. import  libini, \
  453.         ini.get_str, 'ini_get_str',\
  454.         ini.get_int, 'ini_get_int',\
  455.         ini.set_str, 'ini_set_str',\
  456.         ini.set_int, 'ini_set_int'
  457.  
  458. title   db "System settings",0
  459. sz_ini  db "/sys/settings/system.ini",0
  460.  
  461. sz_system       db "system",0
  462. sz_language     db "language",0
  463. sz_fontSize     db "font height",0
  464. sz_fontSmooth   db "font smoothing",0
  465. sz_speaker      db "speaker mute",0
  466.  
  467. sz_mouse        db "mouse",0
  468. sz_speed        db "speed",0
  469. sz_delay        db "delay",0
  470.  
  471. sz_low_level    db "low-level",0
  472. sz_lba          db "LBA",0
  473. sz_pci          db "PCI",0
  474.  
  475. LLL = 56
  476. stringsAmount = 6
  477.  
  478. align 4
  479. langs:
  480. db 'ENGLISH FINNISH GERMAN  RUSSIAN FRENCH  ESTONIANSPANISH ITALIAN '
  481. langMarks:
  482. db      'enfiderufretspit'
  483.  
  484. textrus:
  485. db 'Ÿ§ëª á¨áâ¥¬ë              :              <  >  à¨¬¥­¨âì'
  486. db '‚ª«îç¨âì LBA              :              -  +  à¨¬¥­¨âì'
  487. db '„®áâ㯠ª 設¥ PCI         :              -  +  à¨¬¥­¨âì'
  488. db '‚몫îç¨âì SPEAKER         :              -  +  à¨¬¥­¨âì'
  489. db '‘£« ¦¨¢ ­¨¥ èà¨ä⮢       :              -  +  à¨¬¥­¨âì'
  490. db '‚ëá®â  èà¨ä⮢            :              -  +  à¨¬¥­¨âì'
  491.  
  492. db '‚ˆŒ€ˆ…:                                  à¨¬¥­¨âì ¢á¥'
  493. db '… ‡€“„œ’… ‘Ž•€ˆ’œ €‘’Ž‰Šˆ            ‘®åà ­¨âì ¢á¥'
  494.  
  495. texteng:
  496. db 'System language           :              <  >    Apply  '
  497. db 'Allow LBA access          :              -  +    Apply  '
  498. db 'Allow PCI access          :              -  +    Apply  '
  499. db 'Disable SPEAKER           :              -  +    Apply  '
  500. db 'Font smoothing            :              -  +    Apply  '
  501. db 'Font height               :              -  +    Apply  '
  502.  
  503. db 'NOTE:                                        Apply all  '
  504. db 'SAVE YOUR SETTINGS BEFORE QUITING KOLIBRI    Save all   '
  505.  
  506. textet:
  507. db 'Süsteemi keel             :              <  >   Kinnita '
  508. db 'LBA lugemine lubatud      :              -  +   Kinnita '
  509. db 'PCI juurdepääs programm.  :              -  +   Kinnita '
  510. db 'Disable SPEAKER           :              -  +   Kinnita '
  511. db 'Font smoothing            :              -  +   Kinnita '
  512. db 'Font height               :              -  +   Kinnita '
  513.  
  514. db 'MÄRKUS:                                    Kinnita kõik '
  515. db 'SALVESTA SEADED ENNE KOLIBRIST VÄLJUMIST   Salvesta kõik'
  516.  
  517. IM_END:
  518.  
  519. text    dd  ?
  520.  
  521. syslang         dd  ?
  522. lba_read        dd  ?
  523. pci_acc         dd  ?
  524. speaker_mute    dd  ?
  525. fontSmoothing   dd  ?
  526. fontSize        dd  ?
  527.  
  528. param:
  529.         rb 1024
  530. I_END: