Subversion Repositories Kolibri OS

Rev

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