Subversion Repositories Kolibri OS

Rev

Rev 5849 | Rev 5874 | 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 stack_area
  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 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
  49.         call    _keyboard
  50. @@:
  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. @@:
  81.         call    _speaker_mute
  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
  104.         inc     ecx
  105. @@:
  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
  119.         inc     ecx
  120. @@:
  121.         mcall   21,12
  122.         jmp     close
  123. ;---------------------------------------------------------------
  124. START:
  125.         mcall   68,11
  126.         stdcall dll.Load, @IMPORT
  127.         push    eax
  128.         test    eax,eax
  129.         jnz     close
  130.  
  131.         cmp     [param],dword 'BOOT'
  132.         jz      BootSettings
  133.         pop     eax
  134. ; get current settings
  135.         mcall   26,2,9
  136.         dec     eax
  137.         mov     [keyboard],eax
  138.  
  139.         mcall   26,5
  140.         dec     eax
  141.         mov     [syslang],eax
  142.  
  143.         mcall   26,11
  144.         mov     [lba_read],eax
  145.  
  146.         mcall   26,12
  147.         mov     [pci_acc],eax
  148.  
  149.         mcall   18,8,1
  150.         mov     [speaker_mute],eax
  151.  
  152.         mcall   48,9
  153.         mov     [fontSmoothing],eax
  154.  
  155.         call    loadtxt
  156.  
  157. draw_infotext:
  158.         mov     eax,[syslang]
  159.         mov     edi,[text]
  160.         lea     esi,[eax*8+langs]
  161.         add     edi,28
  162.         movsd
  163.         movsd
  164.  
  165.         mov     eax,[keyboard]
  166.         add     edi,LLL-8
  167.         lea     esi,[eax*8+langs]
  168.         movsd
  169.         movsd
  170.         add     edi,LLL-8
  171.  
  172.         mov     eax,[lba_read]
  173.         call    onoff
  174.         mov     [edi],ebx
  175.  
  176.         mov     eax,[pci_acc]
  177.         call    onoff
  178.         mov     [edi+LLL],ebx
  179.  
  180.         mov     eax,[speaker_mute]
  181.         call    onoff
  182.         mov     [edi+LLL*2],ebx
  183.  
  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
  194.  
  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>
  207.         inc     edx
  208.         mcall   ,<526,24>
  209.         inc     edx
  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
  220.         dec     edx
  221.         mcall
  222. ; text
  223.         mov     eax,4
  224.         mov     ebx,6*65536+11
  225.         mov     ecx,1ffffffh
  226.         mov     edx,[text]
  227.         mov     esi,LLL
  228.         mov     ebp,stringsAmount
  229. newline:
  230.         mcall
  231.         add     ebx,32
  232.         add     edx,esi
  233.         dec     ebp
  234.         jnz     newline
  235.  
  236.         mov     ebp,2
  237.         add     ebx,32
  238. @@:
  239.         mcall
  240.         add     ebx,32
  241.         add     edx,esi
  242.         dec     ebp
  243.         jnz     @b
  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]
  274.         jns     @f
  275.         mov     [syslang],7
  276.         jmp     @f
  277. language2:
  278.         inc     [syslang]
  279.         cmp     [syslang],8
  280.         jnz     @f
  281.         mov     [syslang],0
  282. @@:
  283.         jmp     loadtxt
  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
  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
  367. ;---------------------------------------------------------------
  368. loadtxt:
  369.         cmp     [syslang],3
  370.         jz      .ru
  371.         cmp     [syslang],5
  372.         jz      .et
  373.         mov     [text],texteng
  374.         ret
  375. .ru:
  376.         mov     [text],textrus
  377.         ret
  378. .et:
  379.         mov     [text],textet
  380.         ret
  381. ;---------------------------------------------------------------
  382. onoff:
  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
  396.         mov     ebx,'„€  '
  397.         ret
  398. .et:
  399.         mov     ebx,'VÄL.'
  400.         test    eax,eax
  401.         jz      @f
  402.         mov     ebx,'SEES'
  403. @@:
  404.         ret
  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
  453.         ret
  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
  505.  
  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.  
  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'
  520.  
  521. title   db "System settings",0
  522. sz_ini  db "/sys/settings/system.ini",0
  523.  
  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.  
  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 '
  545. langMarks:
  546. db      'enfiderufretesit'
  547.  
  548. textrus:
  549. db 'Ÿ§ëª á¨áâ¥¬ë              :              <  >  à¨¬¥­¨âì'
  550. db ' áª« ¤ª  ª« ¢¨ âãàë      :              <  >  à¨¬¥­¨âì'
  551. db '‚ª«îç¨âì LBA              :              -  +  à¨¬¥­¨âì'
  552. db '„®áâ㯠ª 設¥ PCI         :              -  +  à¨¬¥­¨âì'
  553. db '‚몫îç¨âì SPEAKER         :              -  +  à¨¬¥­¨âì'
  554. db '‘£« ¦¨¢ ­¨¥ èà¨ä⮢       :              -  +  à¨¬¥­¨âì'
  555.  
  556. db '‚ˆŒ€ˆ…:                                  à¨¬¥­¨âì ¢á¥'
  557. db '… ‡€“„œ’… ‘Ž•€ˆ’œ €‘’Ž‰Šˆ            ‘®åà ­¨âì ¢á¥'
  558.  
  559. texteng:
  560. db 'System language           :              <  >    Apply  '
  561. db 'Keyboard layout           :              <  >    Apply  '
  562. db 'Allow LBA access          :              -  +    Apply  '
  563. db 'Allow PCI access          :              -  +    Apply  '
  564. db 'Disable SPEAKER           :              -  +    Apply  '
  565. db 'Font smoothing            :              -  +    Apply  '
  566.  
  567. db 'NOTE:                                        Apply all  '
  568. db 'SAVE YOUR SETTINGS BEFORE QUITING KOLIBRI    Save all   '
  569.  
  570. textet:
  571. db 'Süsteemi keel             :              <  >   Kinnita '
  572. db 'Klaviatuuri paigutus      :              <  >   Kinnita '
  573. db 'LBA lugemine lubatud      :              -  +   Kinnita '
  574. db 'PCI juurdepääs programm.  :              -  +   Kinnita '
  575. db 'Disable SPEAKER           :              -  +   Kinnita '
  576. db 'Font smoothing            :              -  +   Kinnita '
  577.  
  578. db 'MÄRKUS:                                    Kinnita kõik '
  579. db 'SALVESTA SEADED ENNE KOLIBRIST VÄLJUMIST   Salvesta kõik'
  580.  
  581. include 'keymaps.inc'
  582. IM_END:
  583. param:
  584.         rb 1024
  585. stack_area:
  586. I_END: