Subversion Repositories Kolibri OS

Rev

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

  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. ;;                               ;;
  3. ;;          DEVICE SETUP         ;;
  4. ;;                               ;;
  5. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  6. ; version:      1.15
  7. ; last update:  20/04/2012
  8. ; changed by:   Marat Zakiyanov aka Mario79, aka Mario
  9. ; changes:      Add the flag of speaker mute.
  10. ;               Correcting setup.dat
  11. ;---------------------------------------------------------------------
  12. ; version:      1.14
  13. ; last update:  20/03/2012
  14. ; changed by:   Marat Zakiyanov aka Mario79, aka Mario
  15. ; changes:      optimisations and code refactoring
  16. ;---------------------------------------------------------------------
  17. ; Authors: Ville       - original version
  18. ;          A. Ivushkin - autostart (w launcher)
  19. ;          M. Lisovin  - added many feauters (apply all, save all, set time...)
  20. ;          I. Poddubny - fixed russian keymap
  21. ;14/08/06  Mario79 - added regulation of mouse features
  22. ;-------------------------------------------------------------------------------
  23. format binary as ""
  24.  
  25.         use32
  26.         org 0x0
  27.  
  28.         db 'MENUET01'   ; 8 byte identifier
  29.         dd 0x01         ; header version
  30.         dd START        ; pointer to program start
  31.         dd IM_END       ; size of image
  32.         dd I_END        ; reguired amount of memory
  33.         dd stack_area   ; stack pointer (esp)
  34.         dd boot_param   ; boot parameters
  35.         dd 0x0          ; path
  36. ;-------------------------------------------------------------------------------
  37. include '..\..\..\macros.inc'
  38. ;-------------------------------------------------------------------------------
  39. LLL equ (56+3)
  40. BBB equ 25
  41. ;-------------------------------------------------------------------------------
  42. apply_all:
  43.         call    _pci_acc    ;12
  44.         call    _syslang    ;5
  45.         call    _keyboard    ;2
  46.         call    _mouse_speed
  47.         call    _mouse_delay
  48.         call    _speaker_mute
  49.         ret
  50. ;-------------------------------------------------------------------------------
  51. apply_all_and_exit:
  52.         mcall   70,read_fileinfo
  53.         call    apply_all
  54.         jmp     close
  55. ;-------------------------------------------------------------------------------
  56. set_language_and_exit:
  57.         mcall   26,2,9
  58.         cmp     eax,1
  59.         je      russian
  60.  
  61.         xor     eax,eax
  62. ;--------------------------------------
  63. set_lang_now:
  64.         mov     [keyboard],eax
  65.         call    _keyboard
  66.         jmp     close
  67. ;--------------------------------------
  68. russian:
  69.         mov     eax,3
  70.         jmp     set_lang_now
  71. ;-------------------------------------------------------------------------------
  72. set_syslanguage_and_exit:
  73.         mcall   26,5
  74.         cmp     eax,6
  75.         jne     temp
  76.         xor     eax,eax
  77. ;--------------------------------------
  78. temp:
  79.         inc     eax
  80.         mov     [syslang],eax
  81.         call    _syslang
  82.         jmp     close
  83. ;-------------------------------------------------------------------------------
  84. get_setup_values:
  85.         mcall   26,2,9
  86.         dec     eax
  87.         mov     [keyboard],eax
  88.  
  89.         mcall   26,5
  90.         mov     [syslang],eax
  91.  
  92.         mcall   26,11
  93.         mov     [lba_read],eax
  94.  
  95.         mcall   26,12
  96.         mov     [pci_acc],eax
  97.  
  98.         mcall   18,19,0
  99.         mov     [mouse_speed],eax
  100.  
  101.         mcall   18,19,2
  102.         mov     [mouse_delay],eax
  103.        
  104.         mcall   18,8,1
  105.         mov     [speaker_mute],eax
  106.         ret
  107. ;-------------------------------------------------------------------------------
  108. START:
  109.         mov     eax,boot_param
  110.         cmp     [eax],dword 'SLAN'
  111.         je      set_syslanguage_and_exit
  112.  
  113.         cmp     [eax],dword 'LANG'
  114.         je      set_language_and_exit
  115.  
  116.         cmp     [eax],dword 'BOOT'
  117.         je      apply_all_and_exit
  118.  
  119.         call    get_setup_values
  120.         call    loadtxt
  121.         call    draw_infotext
  122. ;-------------------------------------------------------------------------------
  123. red:
  124.         call    draw_window
  125. ;-------------------------------------------------------------------------------
  126. still:
  127. sysevent:
  128.         mcall   23,8          ; wait here for event with timeout
  129.         cmp     eax,1
  130.         jz      red
  131.  
  132.         cmp     eax,2
  133.         jz      key
  134.  
  135.         cmp     eax,3
  136.         jz      button
  137.  
  138.         jmp     still
  139. ;-------------------------------------------------------------------------------
  140. key:
  141.         mcall   2
  142.         jmp     still
  143. ;-------------------------------------------------------------------------------
  144. button:
  145.         mcall   17
  146.         cmp     ah,99
  147.         jne     nosaveall
  148.         mcall   70,save_fileinfo
  149.         jmp     still
  150. ;--------------------------------------    
  151. nosaveall:
  152.         cmp     ah,100
  153.         jne     no_apply_all
  154.         call    apply_all
  155.         jmp     still
  156. ;--------------------------------------
  157. no_apply_all:
  158.         cmp     ah,1    ; CLOSE APPLICATION
  159.         jne     no_close
  160. ;--------------------------------------
  161. close:
  162.         or      eax,-1
  163.         mcall
  164. ;--------------------------------------
  165. no_close:
  166.         cmp     ah,4    ; SET KEYBOARD
  167.         jnz     nokm
  168.         mov     eax,[keyboard]
  169.         test    eax,eax
  170.         je      downuplbl
  171.         dec     eax
  172.         jmp     nodownup
  173. ;--------------------------------------
  174. downuplbl:
  175.         mov     eax,7
  176. ;--------------------------------------
  177. nodownup:
  178.         mov     [keyboard],eax
  179.         call    draw_infotext
  180. ;--------------------------------------
  181. nokm:
  182.         cmp     ah,5
  183.         jnz     nokp
  184.         mov     eax,[keyboard]
  185.         cmp     eax,7
  186.         je      updownlbl
  187.         inc     eax
  188.         jmp     noupdown
  189. ;--------------------------------------
  190. updownlbl:
  191.         xor     eax,eax
  192. ;--------------------------------------
  193. noupdown:
  194.         mov     [keyboard],eax
  195.         call    draw_infotext
  196. ;--------------------------------------
  197. nokp:
  198.         cmp     ah,92   ; SET LBA READ
  199.         jne     no_lba_d
  200. ;--------------------------------------
  201. slbal:
  202.         btc     [lba_read],0
  203.         call    draw_infotext
  204.         jmp     still
  205. ;--------------------------------------
  206. no_lba_d:
  207.         cmp     ah,93
  208.         jne     no_lba_i
  209.         jmp     slbal
  210. ;--------------------------------------
  211. no_lba_i:
  212.         cmp     ah,91
  213.         jne     no_set_lba_read
  214.         call    _lba_read
  215.         jmp     still
  216. ;--------------------------------------
  217. no_set_lba_read:
  218.         cmp     ah,102  ; SET PCI ACCESS
  219.         jne     no_pci_d
  220. ;--------------------------------------
  221. pcip:
  222.         btc     [pci_acc],0
  223.         call    draw_infotext
  224.         jmp     still
  225. ;--------------------------------------
  226. no_pci_d:
  227.         cmp     ah,103
  228.         jne     no_pci_i
  229.         jmp     pcip
  230. ;--------------------------------------
  231. no_pci_i:
  232.         cmp     ah,101
  233.         jne     no_set_pci_acc
  234.         call    _pci_acc
  235.         jmp     still
  236. ;--------------------------------------
  237. no_set_pci_acc:
  238.         cmp     ah,42   ; SET SYSTEM LANGUAGE BASE
  239.         jnz     nosysm
  240.         mov     eax,[syslang]
  241.         dec     eax
  242.         jz      still
  243.         mov     [syslang],eax
  244.         call    draw_infotext
  245. ;--------------------------------------
  246. nosysm:
  247.         cmp     ah,43
  248.         jnz     nosysp
  249.         mov     eax,[syslang]
  250.         cmp     eax,6
  251.         je      nosysp
  252.         inc     eax
  253.         mov     [syslang],eax
  254.         call    draw_infotext
  255. ;--------------------------------------
  256. nosysp:
  257.         cmp     ah,41
  258.         jnz     nosyss
  259.         call    _syslang
  260.         call    cleantxt
  261.         call    loadtxt
  262.         call    draw_window
  263. ;--------------------------------------
  264. nosyss:
  265.         cmp     ah,132  ; SET MOUSE SPEED
  266.         jnz     .nominus
  267.         mov     eax,[mouse_speed]
  268.         sub     eax,2
  269.         cmp     eax,9
  270.         jb      @f
  271.         mov     eax,8
  272. ;--------------------------------------
  273. @@:
  274.         inc     eax
  275.         mov     [mouse_speed],eax
  276.         call    draw_infotext
  277. ;--------------------------------------
  278. .nominus:
  279.         cmp     ah,133
  280.         jnz     .noplus
  281.         mov     eax,[mouse_speed]
  282.         cmp     eax,9
  283.         jb      @f
  284.         mov     eax,0
  285. ;--------------------------------------
  286. @@:
  287.         inc     eax
  288.         mov     [mouse_speed],eax
  289.         call    draw_infotext
  290. ;--------------------------------------
  291. .noplus:
  292.         cmp     ah,131
  293.         jnz     .noapply
  294.         call    _mouse_speed
  295. ;--------------------------------------    
  296. .noapply:
  297. mousedelay:
  298.         cmp     ah,142        ; SET MOUSE DELAY
  299.         jnz     .nominus
  300.         mov     eax,[mouse_delay]
  301.         sub     eax,2
  302.         cmp     eax,0xfff
  303.         jb      @f
  304.         mov     eax,0xffe
  305. ;--------------------------------------
  306. @@:
  307.         inc     eax
  308.         mov     [mouse_delay],eax
  309.         call    draw_infotext
  310. ;--------------------------------------
  311. .nominus:
  312.         cmp     ah,143
  313.         jnz     .noplus
  314.         mov     eax,[mouse_delay]
  315.         cmp     eax,0xfff
  316.         jb      @f
  317.         mov     eax,0
  318. ;--------------------------------------
  319. @@:
  320.         inc     eax
  321.         mov     [mouse_delay],eax
  322.         call    draw_infotext
  323. ;--------------------------------------
  324. .noplus:
  325.         cmp     ah,141
  326.         jnz     speakermute
  327.         call    _mouse_delay
  328. ;--------------------------------------
  329. speakermute:
  330.         cmp     ah,152  ; SET SPEAKER
  331.         jne     no_speaker_d
  332. ;--------------------------------------
  333. speaker_p:
  334.         btc     [speaker_mute],0
  335.         call    draw_infotext
  336.         jmp     still
  337. ;--------------------------------------
  338. no_speaker_d:
  339.         cmp     ah,153
  340.         jne     no_speaker_i
  341.         jmp     speaker_p
  342. ;--------------------------------------
  343. no_speaker_i:
  344.         cmp     ah,151
  345.         jne     .noapply
  346.         call    _speaker_mute
  347.         jmp     still
  348. ;--------------------------------------
  349. .noapply:
  350.         cmp     ah,3          ; SET KEYMAP
  351.         jne     still
  352.         call    _keyboard
  353.         jmp     still
  354. ;-------------------------------------------------------------------------------
  355. _keyboard:
  356.         cmp     [keyboard],0    ; english
  357.         jnz     nosetkeyle
  358.        
  359.         mcall   21,2,1,en_keymap
  360.        
  361.         inc     ecx
  362.         mcall   21,,,en_keymap_shift
  363.  
  364.         mcall   21,,9,1
  365.         call    alt_gen
  366. ;--------------------------------------
  367. nosetkeyle:
  368.         cmp     [keyboard],1    ; finnish
  369.         jnz     nosetkeylfi
  370.  
  371.         mcall   21,2,1,fi_keymap
  372.        
  373.         inc     ecx
  374.         mcall   21,,,fi_keymap_shift
  375.  
  376.         mcall   21,,9,2
  377.         call    alt_gen
  378. ;--------------------------------------
  379. nosetkeylfi:
  380.         cmp  [keyboard],2       ; german
  381.         jnz  nosetkeylge
  382.  
  383.         mcall   21,2,1,ge_keymap
  384.        
  385.         inc     ecx
  386.         mcall   21,,,ge_keymap_shift
  387.  
  388.         mcall   21,,9,3
  389.         call    alt_gen
  390. ;--------------------------------------
  391. nosetkeylge:
  392.         cmp     [keyboard],3    ; russian
  393.         jnz     nosetkeylru
  394.    
  395.         mcall   21,2,1,ru_keymap
  396.        
  397.         inc     ecx
  398.         mcall   21,,,ru_keymap_shift
  399.  
  400.         mcall   21,,9,4
  401.         call    alt_gen
  402. ;--------------------------------------
  403. nosetkeylru:
  404.         cmp     [keyboard],4    ;french
  405.         jnz     nosetkeylfr
  406.  
  407.         mcall   21,2,1,fr_keymap
  408.        
  409.         inc     ecx
  410.         mcall   21,,,fr_keymap_shift
  411.  
  412.         inc  ecx
  413.         mcall   21,,,fr_keymap_alt_gr
  414.  
  415.         mcall   21,,9,5
  416. ;--------------------------------------
  417. nosetkeylfr:
  418.         cmp     [keyboard],5    ; estonian
  419.         jnz     nosetkeylet
  420.  
  421.         mcall   21,2,1,et_keymap
  422.        
  423.         inc     ecx
  424.         mcall   21,,,et_keymap_shift
  425.  
  426.         mcall   21,,9,6
  427.         call    alt_gen
  428. ;--------------------------------------
  429. nosetkeylet:
  430.         cmp     [keyboard],6    ;belgian
  431.         jnz     nosetkeylit
  432.  
  433.         mcall   21,2,1,be_keymap
  434.        
  435.         inc     ecx
  436.         mcall   21,,,be_keymap_shift
  437.  
  438.         inc  ecx
  439.         mcall   21,,,be_keymap_alt_gr
  440.  
  441.         mcall   21,,9,7
  442. ;--------------------------------------
  443. nosetkeylit:
  444.         cmp     [keyboard],7    ;italian
  445.         jnz     nosetkeylbe
  446.        
  447.         mcall   21,2,1,it_keymap
  448.        
  449.         inc     ecx
  450.         mcall   21,,,it_keymap_shift
  451.        
  452.         inc     ecx
  453.         mcall   21,,,it_keymap_alt_gr
  454.        
  455.         mcall   21,,9,8
  456. ;--------------------------------------
  457.  
  458. nosetkeylbe:
  459.         ret
  460. ;-------------------------------------------------------------------------------
  461. alt_gen:
  462.         mcall   21,,3,alt_general
  463.         ret
  464. ;-------------------------------------------------------------------------------
  465. draw_buttons:
  466.         pusha
  467.         shl  ecx,16
  468.         add  ecx,12
  469.         mcall   8,<(350-57),(46+BBB)>
  470.  
  471.         inc     edx
  472.         mcall   ,<(350-85),9>
  473.  
  474.         inc     edx
  475.         mcall   ,<(350-73),9>
  476.  
  477.         popa
  478.         ret
  479. ;-------------------------------------------------------------------------------
  480. ; ********************************************
  481. ; ******* WINDOW DEFINITIONS AND DRAW  *******
  482. ; ********************************************
  483. draw_window:
  484.         pusha
  485.         mcall   12,1
  486.  
  487.         xor     eax,eax       ; DRAW WINDOW
  488.         xor     esi,esi
  489.         mcall   ,<40,(355+BBB)>,<40,(12*16)>,0xB4111199,,title
  490.        
  491.         mcall   9,procinfo,-1
  492.        
  493.         mov     eax,[ebx+70] ;status of window
  494.         test    eax,100b
  495.         jne     .end
  496.  
  497.         mcall   8,<(350-85),100>,<(5+16*8),12>,100,0x005588dd   ; APPLY ALL
  498.  
  499.         add     ecx,16*65536          ; SAVE ALL
  500.         dec     edx
  501.         mcall
  502.  
  503.         mov     esi,0x5580c0
  504.  
  505.         mov     edx,41
  506.         mov     ecx,5+0*8
  507.         call    draw_buttons
  508.  
  509.         mov     edx,3
  510.         mov     ecx,5+2*8
  511.         call    draw_buttons
  512.  
  513.         mov     edx,91
  514.         mov     ecx,5+4*8
  515.         call    draw_buttons
  516.  
  517.         mov     edx,101
  518.         mov     ecx,5+6*8
  519.         call    draw_buttons
  520.  
  521.         mov     edx,131
  522.         mov     ecx,5+8*8
  523.         call    draw_buttons
  524.  
  525.         mov     edx,141
  526.         mov     ecx,5+10*8
  527.         call    draw_buttons
  528.        
  529.         mov     edx,151
  530.         mov     ecx,5+12*8
  531.         call    draw_buttons
  532.  
  533.         call    draw_infotext
  534. .end:
  535.         mcall   12,2
  536.         popa
  537.         ret
  538. ;-------------------------------------------------------------------------------
  539. draw_infotext:
  540.         pusha
  541.         mov     eax,[keyboard]       ; KEYBOARD
  542.         test    eax,eax
  543.         jnz     noen
  544.         mov     [text00+LLL*1+28],dword 'ENGL'
  545.         mov     [text00+LLL*1+32],dword 'ISH '
  546. ;--------------------------------------
  547. noen:
  548.         cmp     eax,1
  549.         jnz     nofi
  550.         mov     [text00+LLL*1+28],dword 'FINN'
  551.         mov     [text00+LLL*1+32],dword 'ISH '
  552. ;--------------------------------------
  553. nofi:
  554.         cmp     eax,2
  555.         jnz     noge
  556.         mov     [text00+LLL*1+28],dword 'GERM'
  557.         mov     [text00+LLL*1+32],dword 'AN  '
  558. ;--------------------------------------
  559. noge:
  560.         cmp     eax,3
  561.         jnz     nogr
  562.         mov     [text00+LLL*1+28],dword 'RUSS'
  563.         mov     [text00+LLL*1+32],dword 'IAN '
  564. ;--------------------------------------
  565. nogr:
  566.         cmp     eax,4
  567.         jnz     nofr
  568.         mov     [text00+LLL*1+28],dword 'FREN'
  569.         mov     [text00+LLL*1+32],dword 'CH  '
  570. ;--------------------------------------
  571. nofr:
  572.         cmp     eax,5
  573.         jnz     noet
  574.         mov     [text00+LLL*1+28],dword 'ESTO'
  575.         mov     [text00+LLL*1+32],dword 'NIAN'
  576. ;--------------------------------------
  577. noet:
  578.         cmp     eax,6
  579.         jnz     nobe
  580.         mov     [text00+LLL*1+28],dword 'BELG'
  581.         mov     [text00+LLL*1+32],dword 'IAN '
  582. ;--------------------------------------
  583. nobe:
  584.         cmp     eax,7
  585.         jnz     noit
  586.         mov     [text00+LLL*1+28],dword 'ITAL'
  587.         mov     [text00+LLL*1+32],dword 'IAN'
  588. ;--------------------------------------
  589. noit:
  590.         mov     eax,[syslang]             ; SYSTEM LANGUAGE
  591.         dec     eax
  592.         test    eax,eax
  593.         jnz     noen5
  594.         mov     [text00+LLL*0+28],dword 'ENGL'
  595.         mov     [text00+LLL*0+32],dword 'ISH '
  596. ;--------------------------------------
  597. noen5:
  598.         cmp     eax,1
  599.         jnz     nofi5
  600.         mov     [text00+LLL*0+28],dword 'FINN'
  601.         mov     [text00+LLL*0+32],dword 'ISH '
  602. ;--------------------------------------
  603. nofi5:
  604.         cmp     eax,2
  605.         jnz     noge5
  606.         mov     [text00+LLL*0+28],dword 'GERM'
  607.         mov     [text00+LLL*0+32],dword 'AN  '
  608. ;--------------------------------------
  609. noge5:
  610.         cmp     eax,3
  611.         jnz     nogr5
  612.         mov     [text00+LLL*0+28],dword 'RUSS'
  613.         mov     [text00+LLL*0+32],dword 'IAN '
  614. ;--------------------------------------
  615. nogr5:
  616.         cmp     eax,4
  617.         jne     nofr5
  618.         mov     [text00+LLL*0+28],dword 'FREN'
  619.         mov     [text00+LLL*0+32],dword 'CH  '
  620. ;--------------------------------------
  621. nofr5:
  622.         cmp     eax,5
  623.         jne     noet5
  624.         mov     [text00+LLL*0+28],dword 'ESTO'
  625.         mov     [text00+LLL*0+32],dword 'NIAN'
  626. ;--------------------------------------
  627. noet5:
  628.         mov     eax,[lba_read]
  629.         call    onoff                           ; LBA READ
  630.         mov     [text00+LLL*2+28],ebx
  631.  
  632.         mov     eax,[pci_acc]
  633.         call    onoff                           ; PCI ACCESS
  634.         mov     [text00+LLL*3+28],ebx
  635.        
  636.         mov     eax,[speaker_mute]
  637.         call    onoff                           ; SPEAKER
  638.         mov     [text00+LLL*6+28],ebx
  639.  
  640.         mov     eax,[mouse_speed]               ; MOUSE SPEED
  641.         add     al,48
  642.         mov     [text00+LLL*4+28],al
  643.  
  644.         mov     eax,[mouse_delay]
  645.         mov     esi,text00+LLL*5+32
  646.         call    hexconvert                      ; MOUSE DELAY
  647.         call    text_out
  648.        
  649.         popa
  650.         ret
  651. ;-------------------------------------------------------------------------------
  652. text_out:
  653.         mcall   13,<165,85>,<0,(14*8)>,0x80111199       ;0x80111199-19
  654.  
  655.         mov     edx,text00
  656.         mov     ebx,3*65536+7
  657.         mov     eax,4
  658.         mov     ecx,0xffffff
  659.         mov     esi,LLL
  660.         mov     ebp,text1_strings
  661. ;--------------------------------------
  662. newline:
  663.         mcall
  664.         add     ebx,8+8
  665.         add     edx,esi
  666.         dec     ebp
  667.         jnz     newline
  668.  
  669.         mov     ebp,text2_strings
  670.         add     ebx,8+8
  671. ;--------------------------------------
  672. @@:
  673.         mcall
  674.         add     ebx,8+8
  675.         add     edx,esi
  676.         dec     ebp
  677.         jnz     @b
  678.         ret
  679. ;-------------------------------------------------------------------------------
  680. hexconvert:          ;converting dec to hex in ascii
  681.         xor     ebx,ebx
  682.         mov     bl,al
  683.         and     bl,15
  684.         add     ebx,hex
  685.         mov     cl,[ebx]
  686.         mov     [esi],cl
  687.         shr     eax,4
  688.         xor     ebx,ebx
  689.         mov     bl,al
  690.         and     bl,15
  691.         add     ebx,hex
  692.         mov     cl,[ebx]
  693.         dec     esi
  694.         mov     [esi],cl
  695.         shr     eax,4
  696.         xor     ebx,ebx
  697.         mov     bl,al
  698.         and     bl,15
  699.         add     ebx,hex
  700.         mov     cl,[ebx]
  701.         dec     esi
  702.         mov     [esi],cl
  703.         ret
  704. ;-------------------------------------------------------------------------------
  705. onoff:
  706.         cmp     [syslang],4
  707.         jne     norus1
  708.         mov     ebx,'„€  '
  709.         cmp     eax,1
  710.         je      exitsub
  711.         mov     ebx,'…’ '
  712.         ret
  713. ;--------------------------------------
  714. norus1:
  715.         mov     ebx,'ON  '
  716.         cmp     eax,1
  717.         je      exitsub
  718.         mov     ebx,'OFF '
  719. ;--------------------------------------
  720. exitsub:
  721.         ret
  722. ;-------------------------------------------------------------------------------
  723. _lba_read:
  724.         mcall   21,11,[lba_read]
  725.         ret
  726. ;-------------------------------------------------------------------------------
  727. _pci_acc:
  728.         mcall   21,12,[pci_acc]
  729.         ret
  730. ;-------------------------------------------------------------------------------
  731. _syslang:
  732.         mcall   21,5,[syslang]
  733.         ret
  734. ;-------------------------------------------------------------------------------
  735. _mouse_speed:
  736.         mcall   18,19,1,[mouse_speed]
  737.         ret
  738. ;-------------------------------------------------------------------------------
  739. _mouse_delay:
  740.         mcall   18,19,3,[mouse_delay]
  741.         ret
  742. ;-------------------------------------------------------------------------------
  743. _speaker_mute:
  744.         mcall   18,8,1
  745.         cmp     [speaker_mute],eax
  746.         je      @f
  747.         inc     ecx
  748.         mcall   18
  749. ;--------------------------------------
  750. @@:
  751.         ret
  752. ;-------------------------------------------------------------------------------
  753. loadtxt:
  754.         mov     edi,text00
  755.         mov     ecx,LLL*(text1_strings + text2_strings)/4+1
  756.         cmp     [syslang],4
  757.         jne     norus
  758.  
  759.         mov     esi,textrus
  760.         jmp     sload
  761. ;--------------------------------------
  762. norus:
  763.         mov     esi,texteng
  764. ;--------------------------------------
  765. sload:
  766.         rep     movsd
  767.         ret
  768. ;-------------------------------------------------------------------------------
  769. cleantxt:
  770.         xor     eax,eax
  771.         mov     ecx,LLL*(text1_strings + text2_strings)/4
  772.         cld
  773.         mov     edi,text00
  774.         rep     stosd
  775.         mov     [text00+1711],byte 'x'
  776.         ret
  777. ;-------------------------------------------------------------------------------
  778. ; DATA AREA
  779. count:          db 0x0
  780. blinkpar:       dd 0x0
  781. time:           dw 0x0
  782. date:           dd 0x0
  783. ;-------------------------------------------------------------------------------
  784. textrus:
  785.         db 'Ÿ§ëª á¨áâ¥¬ë              : ENGLISH         - +   à¨¬¥­¨âì'
  786.         db ' áª« ¤ª  ª« ¢¨ âãàë      : ENGLISH         - +   à¨¬¥­¨âì'
  787.         db '‚ª«îç¨âì LBA              : OFF             - +   à¨¬¥­¨âì'
  788.         db '„®áâ㯠ª 設¥ PCI         : OFF             - +   à¨¬¥­¨âì'
  789.         db '‘ª®à®áâì ªãàá®à  ¬ëè¨     : 1               - +   à¨¬¥­¨âì'
  790.         db '‡ ¤¥à¦ª  ã᪮७¨ï ¬ëè¨   : 0x00a           - +   à¨¬¥­¨âì'
  791.         db '‚몫îç¨âì SPEAKER         : OFF             - +   à¨¬¥­¨âì'
  792.        
  793.         db '‚ˆŒ€ˆ…:                                    à¨¬¥­¨âì ¢á¥ '
  794.         db '… ‡€“„œ’… ‘Ž•€ˆ’œ €‘’Ž‰Šˆ              ‘®åà ­¨âì ¢á¥ '
  795. ;-------------------------------------------------------------------------------
  796. texteng:
  797.         db 'System language           : ENGLISH         - +     Apply  '
  798.         db 'Keyboard layout           : ENGLISH         - +     Apply  '
  799.         db 'LBA read enabled          : OFF             - +     Apply  '
  800.         db 'PCI access for appl.      : OFF             - +     Apply  '
  801.         db 'Mouse pointer speed       : 1               - +     Apply  '
  802.         db 'Mouse pointer delay       : 0x00a           - +     Apply  '
  803.         db 'SPEAKER disabled          : OFF             - +     Apply  '
  804. text1_strings = 7
  805.  
  806.         db 'NOTE:                                           Apply all  '
  807.         db 'SAVE YOUR SETTINGS BEFORE QUITING KOLIBRI       Save all   '
  808. text2_strings = 2
  809. ;-------------------------------------------------------------------------------
  810. title   db 'System setup',0
  811.  
  812. hex     db '0123456789ABCDEF'
  813. ;-------------------------------------------------------------------------------
  814. include 'keymaps.inc'
  815. ;-------------------------------------------------------------------------------
  816. read_fileinfo:
  817.         dd 0
  818.         dd 0
  819.         dd 0
  820.         dd 28
  821.         dd keyboard
  822.         db 0
  823.         dd file_name
  824. ;-------------------------------------------------------------------------------
  825. save_fileinfo:
  826.         dd 2
  827.         dd 0
  828.         dd 0
  829.         dd 28
  830.         dd keyboard
  831. file_name:      db '/sys/setup.dat',0
  832. ;-------------------------------------------------------------------------------
  833. keyboard        dd 0x0
  834. syslang         dd 0x4  ; 4 - rus
  835. lba_read        dd 0x1
  836. pci_acc         dd 0x1
  837. mouse_speed     dd 0x2
  838. mouse_delay     dd 0xa
  839. speaker_mute    dd 0    ; 0 - enable, 1 - disable
  840. ;-----------------------------------------------------------------------------
  841. IM_END:
  842. ;-----------------------------------------------------------------------------
  843. align 4
  844. text00:
  845.         rb LLL*(text1_strings + text2_strings)+4
  846. ;-----------------------------------------------------------------------------
  847. align 4
  848. boot_param:
  849. procinfo:
  850.         rb 1024
  851. ;-----------------------------------------------------------------------------
  852. align 4
  853.         rb 0x1000
  854. stack_area:
  855. ;-----------------------------------------------------------------------------
  856. I_END:
  857. ;-------------------------------------------------------------------------------