Subversion Repositories Kolibri OS

Rev

Rev 5632 | Rev 5854 | 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 boot_param
  16. dd 0
  17.  
  18. include '../../../macros.inc'
  19. ;---------------------------------------------------------------
  20. set_language_and_exit:
  21.         mcall   26,2,9
  22.         cmp     eax,1
  23.         je      russian
  24.         xor     eax,eax
  25. @@:
  26.         mov     [keyboard],eax
  27.         call    _keyboard
  28.         jmp     close
  29. russian:
  30.         mov     eax,3
  31.         jmp     @b
  32. ;---------------------------------------------------------------
  33. set_syslanguage_and_exit:
  34.         mcall   26,5
  35.         cmp     eax,6
  36.         jne     @f
  37.         xor     eax,eax
  38. @@:
  39.         inc     eax
  40.         mov     [syslang],eax
  41.         call    _syslang
  42.         jmp     close
  43. ;---------------------------------------------------------------
  44. apply_all_and_exit:
  45.         mov     byte[fileinfo],0
  46.         mcall   70,fileinfo
  47.         call    apply_all
  48.         jmp     close
  49. ;---------------------------------------------------------------
  50. apply_all:
  51.         call    fontApply
  52.         call    _syslang
  53.         call    _lba_read
  54.         call    _pci_acc
  55.         call    _speaker_mute
  56.         call    _keyboard
  57.         ret
  58. ;---------------------------------------------------------------
  59. _syslang:
  60.         mcall   21,5,[syslang]
  61.         jmp     loadtxt
  62. ;---------------------------------------------------------------
  63. _lba_read:
  64.         mcall   21,11,[lba_read]
  65.         ret
  66. ;---------------------------------------------------------------
  67. _pci_acc:
  68.         mcall   21,12,[pci_acc]
  69.         ret
  70. ;---------------------------------------------------------------
  71. fontApply:
  72.         mcall   48,10,[fontSmoothing]
  73.         ret
  74. ;---------------------------------------------------------------
  75. _speaker_mute:
  76.         mcall   18,8,1
  77.         cmp     [speaker_mute],eax
  78.         je      @f
  79.         inc     ecx
  80.         mcall   18
  81. @@:
  82.         ret
  83. ;---------------------------------------------------------------
  84. _keyboard:
  85.         mov     ebp,[keyboard]
  86.         mov     edx,[ebp*4+keymapTab]
  87.         mcall   21,2,1
  88.         inc     ecx
  89.         mov     edx,[ebp*4+shiftKeymapTab]
  90.         mcall   21
  91.         inc     ecx
  92.         mov     edx,[ebp*4+altKeymapTab]
  93.         mcall   21
  94.         mov     edx,ebp
  95.         inc     edx
  96.         mov     cl, 9
  97.         mcall   21
  98.         ret
  99. ;---------------------------------------------------------------
  100. START:
  101.         mov     eax,boot_param
  102.         cmp     [eax],dword 'SLAN'
  103.         je      set_syslanguage_and_exit
  104.  
  105.         cmp     [eax],dword 'LANG'
  106.         je      set_language_and_exit
  107.  
  108.         cmp     [eax],dword 'BOOT'
  109.         je      apply_all_and_exit
  110. ; get current settings
  111.         mcall   26,2,9
  112.         dec     eax
  113.         mov     [keyboard],eax
  114.  
  115.         mcall   26,5
  116.         mov     [syslang],eax
  117.  
  118.         mcall   26,11
  119.         mov     [lba_read],eax
  120.  
  121.         mcall   26,12
  122.         mov     [pci_acc],eax
  123.  
  124.         mcall   18,8,1
  125.         mov     [speaker_mute],eax
  126.  
  127.         mcall   48,9
  128.         mov     [fontSmoothing],eax
  129.  
  130.         call    loadtxt
  131.  
  132. draw_infotext:
  133.         mov     eax,[syslang]
  134.         mov     edi,[text]
  135.         lea     esi,[eax*8+langs-8]
  136.         add     edi,28
  137.         movsd
  138.         movsd
  139.  
  140.         mov     eax,[keyboard]
  141.         add     edi,LLL-8
  142.         lea     esi,[eax*8+langs]
  143.         movsd
  144.         movsd
  145.         add     edi,LLL-8
  146.  
  147.         mov     eax,[lba_read]
  148.         call    onoff
  149.         mov     [edi],ebx
  150.  
  151.         mov     eax,[pci_acc]
  152.         call    onoff
  153.         mov     [edi+LLL],ebx
  154.  
  155.         mov     eax,[speaker_mute]
  156.         call    onoff
  157.         mov     [edi+LLL*2],ebx
  158.  
  159.         mov     ebx,'SUBP'
  160.         mov     ecx,'IXEL'
  161.         cmp     [fontSmoothing],2
  162.         jz      @f
  163.         mov     eax,[fontSmoothing]
  164.         call    onoff
  165.         mov     ecx,'    '
  166. @@:
  167.         mov     [edi+LLL*3],ebx
  168.         mov     [edi+LLL*3+4],ecx
  169.  
  170. draw_window:
  171.         mcall   12,1
  172.         mov     ecx,50*65536+32*(4+stringsAmount)
  173.         mcall   0,<50,700>,,0xB4111199,0,title
  174. ; Main buttons
  175.         mov     eax,8
  176.         mov     ecx,6*65536+26
  177.         mov     edx,4
  178.         mov     esi,0x5580c0
  179.         mov     ebp,stringsAmount
  180. @@:
  181.         mcall   ,<490,24>
  182.         inc     edx
  183.         mcall   ,<526,24>
  184.         inc     edx
  185.         mcall   ,<562,120>
  186.         inc     edx
  187.         add     ecx,32*65536
  188.         dec     ebp
  189.         jnz     @b
  190. ; APPLY ALL
  191.         add     ecx,32*65536
  192.         mcall   ,<514,168>,,3,0x005588dd
  193. ; SAVE ALL
  194.         add     ecx,32*65536
  195.         dec     edx
  196.         mcall
  197. ; text
  198.         mov     eax,4
  199.         mov     ebx,6*65536+11
  200.         mov     ecx,1ffffffh
  201.         mov     edx,[text]
  202.         mov     esi,LLL
  203.         mov     ebp,stringsAmount
  204. newline:
  205.         mcall
  206.         add     ebx,32
  207.         add     edx,esi
  208.         dec     ebp
  209.         jnz     newline
  210.  
  211.         mov     ebp,2
  212.         add     ebx,32
  213. @@:
  214.         mcall
  215.         add     ebx,32
  216.         add     edx,esi
  217.         dec     ebp
  218.         jnz     @b
  219.  
  220.         mcall   12,2
  221.  
  222. still:
  223.         mcall   10
  224.         cmp     eax,1
  225.         jz      draw_window
  226.  
  227.         cmp     eax,2
  228.         jz      key
  229.  
  230.         cmp     eax,3
  231.         jz      button
  232.  
  233.         jmp     still
  234. ;---------------------------------------------------------------
  235. key:
  236.         mcall   2
  237.         jmp     still
  238. ;---------------------------------------------------------------
  239. button:
  240.         mcall   17
  241.         shr     eax,8
  242.         call    dword[eax*4+buttonTab-4]
  243.         jmp     draw_infotext
  244. close:
  245.         pop     eax
  246.         mcall   -1
  247. saveAll:
  248.         mov     byte[fileinfo],2
  249.         mcall   70,fileinfo
  250.         ret
  251. language1:
  252.         dec     [syslang]
  253.         jnz     @f
  254.         mov     [syslang],6
  255.         ret
  256. language2:
  257.         inc     [syslang]
  258.         cmp     [syslang],7
  259.         jnz     @f
  260.         mov     [syslang],1
  261.         ret
  262. layout1:
  263.         dec     [keyboard]
  264.         jns     @f
  265.         mov     [keyboard],7
  266.         ret
  267. layout2:
  268.         inc     [keyboard]
  269.         cmp     [keyboard],8
  270.         jnz     @f
  271.         mov     [keyboard],0
  272.         ret
  273. LBA1:
  274.         btr     [lba_read],0
  275.         ret
  276. LBA2:
  277.         bts     [lba_read],0
  278.         ret
  279. PCI1:
  280.         btr     [pci_acc],0
  281.         ret
  282. PCI2:
  283.         bts     [pci_acc],0
  284.         ret
  285. SPEAKER1:
  286.         btr     [speaker_mute],0
  287.         ret
  288. SPEAKER2:
  289.         bts     [speaker_mute],0
  290.         ret
  291. font1:
  292.         cmp     [fontSmoothing],0
  293.         jz      @f
  294.         dec     [fontSmoothing]
  295.         ret
  296. font2:
  297.         cmp     [fontSmoothing],2
  298.         jz      @f
  299.         inc     [fontSmoothing]
  300. @@:
  301.         ret
  302. ;---------------------------------------------------------------
  303. loadtxt:
  304.         cmp     [syslang],4
  305.         jne     @f
  306.         mov     [text],textrus
  307.         ret
  308. @@:
  309.         cmp     [syslang],6
  310.         jne     @f
  311.         mov     [text],textet
  312.         ret
  313. @@:
  314.         mov     [text],texteng
  315.         ret
  316. ;---------------------------------------------------------------
  317. onoff:
  318.         cmp     [syslang],4
  319.         jne     norus1
  320.         mov     ebx,'„€  '
  321.         cmp     eax,1
  322.         je      exitsub
  323.         mov     ebx,'…’ '
  324.         ret
  325. norus1:
  326.         cmp     [syslang],6
  327.         jne     noet1
  328.         mov     ebx,'SEES'
  329.         cmp     eax,1
  330.         je      exitsub
  331.         mov     ebx,'VÄL.'
  332.         ret
  333. noet1:
  334.         mov     ebx,'ON  '
  335.         cmp     eax,1
  336.         je      exitsub
  337.         mov     ebx,'OFF '
  338. exitsub:
  339.         ret
  340. ;---------------------------------------------------------------
  341. align 4
  342. buttonTab:      ; button handler pointers: -,+,apply
  343.         dd close
  344.         dd saveAll
  345.         dd apply_all
  346.         dd language1
  347.         dd language2
  348.         dd _syslang
  349.         dd layout1
  350.         dd layout2
  351.         dd _keyboard
  352.         dd LBA1
  353.         dd LBA2
  354.         dd _lba_read
  355.         dd PCI1
  356.         dd PCI2
  357.         dd _pci_acc
  358.         dd SPEAKER1
  359.         dd SPEAKER2
  360.         dd _speaker_mute
  361.         dd font1
  362.         dd font2
  363.         dd fontApply
  364. keymapTab:
  365.         dd en_keymap
  366.         dd fi_keymap
  367.         dd ge_keymap
  368.         dd ru_keymap
  369.         dd fr_keymap
  370.         dd et_keymap
  371.         dd be_keymap
  372.         dd it_keymap
  373. shiftKeymapTab:
  374.         dd en_keymap_shift
  375.         dd fi_keymap_shift
  376.         dd ge_keymap_shift
  377.         dd ru_keymap_shift
  378.         dd fr_keymap_shift
  379.         dd et_keymap_shift
  380.         dd be_keymap_shift
  381.         dd it_keymap_shift
  382. altKeymapTab:
  383.         dd alt_general
  384.         dd alt_general
  385.         dd alt_general
  386.         dd alt_general
  387.         dd fr_keymap_alt_gr
  388.         dd alt_general
  389.         dd be_keymap_alt_gr
  390.         dd it_keymap_alt_gr
  391.  
  392. setup.dat:      ; file structure
  393. syslang         dd 0
  394. keyboard        dd 0
  395. lba_read        dd 0
  396. pci_acc         dd 0
  397. speaker_mute    dd 0
  398. fontSmoothing   dd 0
  399.  
  400. fileinfo:
  401.         dd 0
  402.         dd 0
  403.         dd 0
  404.         dd 4*6
  405.         dd setup.dat
  406.         db '/SYS/SETTINGS/SETUP.DAT',0
  407.  
  408. title   db 'System settings',0
  409. hex     db '0123456789ABCDEF'
  410.  
  411. LLL = 56
  412. stringsAmount = 6
  413.  
  414. align 4
  415. text    dd 0
  416. langs:
  417. db 'ENGLISH FINNISH GERMAN  RUSSIAN FRENCH  ESTONIANBELGIAN ITALIAN '
  418.  
  419. textrus:
  420. db 'Ÿ§ëª á¨áâ¥¬ë              :              <  >  à¨¬¥­¨âì'
  421. db ' áª« ¤ª  ª« ¢¨ âãàë      :              <  >  à¨¬¥­¨âì'
  422. db '‚ª«îç¨âì LBA              :              -  +  à¨¬¥­¨âì'
  423. db '„®áâ㯠ª 設¥ PCI         :              -  +  à¨¬¥­¨âì'
  424. db '‚몫îç¨âì SPEAKER         :              -  +  à¨¬¥­¨âì'
  425. db '‘£« ¦¨¢ ­¨¥ èà¨ä⮢       :              -  +  à¨¬¥­¨âì'
  426.  
  427. db '‚ˆŒ€ˆ…:                                  à¨¬¥­¨âì ¢á¥'
  428. db '… ‡€“„œ’… ‘Ž•€ˆ’œ €‘’Ž‰Šˆ            ‘®åà ­¨âì ¢á¥'
  429.  
  430. texteng:
  431. db 'System language           :              <  >    Apply  '
  432. db 'Keyboard layout           :              <  >    Apply  '
  433. db 'LBA read enabled          :              -  +    Apply  '
  434. db 'PCI access for appl.      :              -  +    Apply  '
  435. db 'SPEAKER disabled          :              -  +    Apply  '
  436. db 'Font smoothing            :              -  +    Apply  '
  437.  
  438. db 'NOTE:                                        Apply all  '
  439. db 'SAVE YOUR SETTINGS BEFORE QUITING KOLIBRI    Save all   '
  440.  
  441. textet:
  442. db 'Süsteemi keel             :              <  >   Kinnita '
  443. db 'Klaviatuuri paigutus      :              <  >   Kinnita '
  444. db 'LBA lugemine lubatud      :              -  +   Kinnita '
  445. db 'PCI juurdepääs programm.  :              -  +   Kinnita '
  446. db 'SPEAKER disabled          :              -  +   Kinnita '
  447. db 'Font smoothing            :              -  +   Kinnita '
  448.  
  449. db 'MÄRKUS:                                    Kinnita kõik '
  450. db 'SALVESTA SEADED ENNE KOLIBRIST VÄLJUMIST   Salvesta kõik'
  451.  
  452. include 'keymaps.inc'
  453. IM_END:
  454. boot_param:
  455.         rb 1024
  456. stack_area:
  457. I_END: