Subversion Repositories Kolibri OS

Rev

Rev 2639 | Rev 3671 | 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,6
  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,6
  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     nosetkeylbe
  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,5
  442. ;--------------------------------------
  443. nosetkeylbe:
  444.         ret
  445. ;-------------------------------------------------------------------------------
  446. alt_gen:
  447.         mcall   21,,3,alt_general
  448.         ret
  449. ;-------------------------------------------------------------------------------
  450. draw_buttons:
  451.         pusha
  452.         shl  ecx,16
  453.         add  ecx,12
  454.         mcall   8,<(350-57),(46+BBB)>
  455.  
  456.         inc     edx
  457.         mcall   ,<(350-85),9>
  458.  
  459.         inc     edx
  460.         mcall   ,<(350-73),9>
  461.  
  462.         popa
  463.         ret
  464. ;-------------------------------------------------------------------------------
  465. ; ********************************************
  466. ; ******* WINDOW DEFINITIONS AND DRAW  *******
  467. ; ********************************************
  468. draw_window:
  469.         pusha
  470.         mcall   12,1
  471.  
  472.         xor     eax,eax       ; DRAW WINDOW
  473.         xor     esi,esi
  474.         mcall   ,<40,(355+BBB)>,<40,(12*16)>,0xB4111199,,title
  475.        
  476.         mcall   9,procinfo,-1
  477.        
  478.         mov     eax,[ebx+70] ;status of window
  479.         test    eax,100b
  480.         jne     .end
  481.  
  482.         mcall   8,<(350-85),100>,<(5+16*8),12>,100,0x005588dd   ; APPLY ALL
  483.  
  484.         add     ecx,16*65536          ; SAVE ALL
  485.         dec     edx
  486.         mcall
  487.  
  488.         mov     esi,0x5580c0
  489.  
  490.         mov     edx,41
  491.         mov     ecx,5+0*8
  492.         call    draw_buttons
  493.  
  494.         mov     edx,3
  495.         mov     ecx,5+2*8
  496.         call    draw_buttons
  497.  
  498.         mov     edx,91
  499.         mov     ecx,5+4*8
  500.         call    draw_buttons
  501.  
  502.         mov     edx,101
  503.         mov     ecx,5+6*8
  504.         call    draw_buttons
  505.  
  506.         mov     edx,131
  507.         mov     ecx,5+8*8
  508.         call    draw_buttons
  509.  
  510.         mov     edx,141
  511.         mov     ecx,5+10*8
  512.         call    draw_buttons
  513.        
  514.         mov     edx,151
  515.         mov     ecx,5+12*8
  516.         call    draw_buttons
  517.  
  518.         call    draw_infotext
  519. .end:
  520.         mcall   12,2
  521.         popa
  522.         ret
  523. ;-------------------------------------------------------------------------------
  524. draw_infotext:
  525.         pusha
  526.         mov     eax,[keyboard]       ; KEYBOARD
  527.         test    eax,eax
  528.         jnz     noen
  529.         mov     [text00+LLL*1+28],dword 'ENGL'
  530.         mov     [text00+LLL*1+32],dword 'ISH '
  531. ;--------------------------------------
  532. noen:
  533.         cmp     eax,1
  534.         jnz     nofi
  535.         mov     [text00+LLL*1+28],dword 'FINN'
  536.         mov     [text00+LLL*1+32],dword 'ISH '
  537. ;--------------------------------------
  538. nofi:
  539.         cmp     eax,2
  540.         jnz     noge
  541.         mov     [text00+LLL*1+28],dword 'GERM'
  542.         mov     [text00+LLL*1+32],dword 'AN  '
  543. ;--------------------------------------
  544. noge:
  545.         cmp     eax,3
  546.         jnz     nogr
  547.         mov     [text00+LLL*1+28],dword 'RUSS'
  548.         mov     [text00+LLL*1+32],dword 'IAN '
  549. ;--------------------------------------
  550. nogr:
  551.         cmp     eax,4
  552.         jnz     nofr
  553.         mov     [text00+LLL*1+28],dword 'FREN'
  554.         mov     [text00+LLL*1+32],dword 'CH  '
  555. ;--------------------------------------
  556. nofr:
  557.         cmp     eax,5
  558.         jnz     noet
  559.         mov     [text00+LLL*1+28],dword 'ESTO'
  560.         mov     [text00+LLL*1+32],dword 'NIAN'
  561. ;--------------------------------------
  562. noet:
  563.         cmp     eax,6
  564.         jnz     nobe
  565.         mov     [text00+LLL*1+28],dword 'BELG'
  566.         mov     [text00+LLL*1+32],dword 'IAN '
  567. ;--------------------------------------
  568. nobe:
  569.         mov     eax,[syslang]             ; SYSTEM LANGUAGE
  570.         dec     eax
  571.         test    eax,eax
  572.         jnz     noen5
  573.         mov     [text00+LLL*0+28],dword 'ENGL'
  574.         mov     [text00+LLL*0+32],dword 'ISH '
  575. ;--------------------------------------
  576. noen5:
  577.         cmp     eax,1
  578.         jnz     nofi5
  579.         mov     [text00+LLL*0+28],dword 'FINN'
  580.         mov     [text00+LLL*0+32],dword 'ISH '
  581. ;--------------------------------------
  582. nofi5:
  583.         cmp     eax,2
  584.         jnz     noge5
  585.         mov     [text00+LLL*0+28],dword 'GERM'
  586.         mov     [text00+LLL*0+32],dword 'AN  '
  587. ;--------------------------------------
  588. noge5:
  589.         cmp     eax,3
  590.         jnz     nogr5
  591.         mov     [text00+LLL*0+28],dword 'RUSS'
  592.         mov     [text00+LLL*0+32],dword 'IAN '
  593. ;--------------------------------------
  594. nogr5:
  595.         cmp     eax,4
  596.         jne     nofr5
  597.         mov     [text00+LLL*0+28],dword 'FREN'
  598.         mov     [text00+LLL*0+32],dword 'CH  '
  599. ;--------------------------------------
  600. nofr5:
  601.         cmp     eax,5
  602.         jne     noet5
  603.         mov     [text00+LLL*0+28],dword 'ESTO'
  604.         mov     [text00+LLL*0+32],dword 'NIAN'
  605. ;--------------------------------------
  606. noet5:
  607.         mov     eax,[lba_read]
  608.         call    onoff                           ; LBA READ
  609.         mov     [text00+LLL*2+28],ebx
  610.  
  611.         mov     eax,[pci_acc]
  612.         call    onoff                           ; PCI ACCESS
  613.         mov     [text00+LLL*3+28],ebx
  614.        
  615.         mov     eax,[speaker_mute]
  616.         call    onoff                           ; SPEAKER
  617.         mov     [text00+LLL*6+28],ebx
  618.  
  619.         mov     eax,[mouse_speed]               ; MOUSE SPEED
  620.         add     al,48
  621.         mov     [text00+LLL*4+28],al
  622.  
  623.         mov     eax,[mouse_delay]
  624.         mov     esi,text00+LLL*5+32
  625.         call    hexconvert                      ; MOUSE DELAY
  626.         call    text_out
  627.        
  628.         popa
  629.         ret
  630. ;-------------------------------------------------------------------------------
  631. text_out:
  632.         mcall   13,<165,85>,<0,(14*8)>,0x80111199       ;0x80111199-19
  633.  
  634.         mov     edx,text00
  635.         mov     ebx,3*65536+7
  636.         mov     eax,4
  637.         mov     ecx,0xffffff
  638.         mov     esi,LLL
  639.         mov     ebp,text1_strings
  640. ;--------------------------------------
  641. newline:
  642.         mcall
  643.         add     ebx,8+8
  644.         add     edx,esi
  645.         dec     ebp
  646.         jnz     newline
  647.  
  648.         mov     ebp,text2_strings
  649.         add     ebx,8+8
  650. ;--------------------------------------
  651. @@:
  652.         mcall
  653.         add     ebx,8+8
  654.         add     edx,esi
  655.         dec     ebp
  656.         jnz     @b
  657.         ret
  658. ;-------------------------------------------------------------------------------
  659. hexconvert:          ;converting dec to hex in ascii
  660.         xor     ebx,ebx
  661.         mov     bl,al
  662.         and     bl,15
  663.         add     ebx,hex
  664.         mov     cl,[ebx]
  665.         mov     [esi],cl
  666.         shr     eax,4
  667.         xor     ebx,ebx
  668.         mov     bl,al
  669.         and     bl,15
  670.         add     ebx,hex
  671.         mov     cl,[ebx]
  672.         dec     esi
  673.         mov     [esi],cl
  674.         shr     eax,4
  675.         xor     ebx,ebx
  676.         mov     bl,al
  677.         and     bl,15
  678.         add     ebx,hex
  679.         mov     cl,[ebx]
  680.         dec     esi
  681.         mov     [esi],cl
  682.         ret
  683. ;-------------------------------------------------------------------------------
  684. onoff:
  685.         cmp     [syslang],4
  686.         jne     norus1
  687.         mov     ebx,'ДА  '
  688.         cmp     eax,1
  689.         je      exitsub
  690.         mov     ebx,'НЕТ '
  691.         ret
  692. ;--------------------------------------
  693. norus1:
  694.         mov     ebx,'ON  '
  695.         cmp     eax,1
  696.         je      exitsub
  697.         mov     ebx,'OFF '
  698. ;--------------------------------------
  699. exitsub:
  700.         ret
  701. ;-------------------------------------------------------------------------------
  702. _lba_read:
  703.         mcall   21,11,[lba_read]
  704.         ret
  705. ;-------------------------------------------------------------------------------
  706. _pci_acc:
  707.         mcall   21,12,[pci_acc]
  708.         ret
  709. ;-------------------------------------------------------------------------------
  710. _syslang:
  711.         mcall   21,5,[syslang]
  712.         ret
  713. ;-------------------------------------------------------------------------------
  714. _mouse_speed:
  715.         mcall   18,19,1,[mouse_speed]
  716.         ret
  717. ;-------------------------------------------------------------------------------
  718. _mouse_delay:
  719.         mcall   18,19,3,[mouse_delay]
  720.         ret
  721. ;-------------------------------------------------------------------------------
  722. _speaker_mute:
  723.         mcall   18,8,1
  724.         cmp     [speaker_mute],eax
  725.         je      @f
  726.         inc     ecx
  727.         mcall   18
  728. ;--------------------------------------
  729. @@:
  730.         ret
  731. ;-------------------------------------------------------------------------------
  732. loadtxt:
  733.         mov     edi,text00
  734.         mov     ecx,LLL*(text1_strings + text2_strings)/4+1
  735.         cmp     [syslang],4
  736.         jne     norus
  737.  
  738.         mov     esi,textrus
  739.         jmp     sload
  740. ;--------------------------------------
  741. norus:
  742.         mov     esi,texteng
  743. ;--------------------------------------
  744. sload:
  745.         rep     movsd
  746.         ret
  747. ;-------------------------------------------------------------------------------
  748. cleantxt:
  749.         xor     eax,eax
  750.         mov     ecx,LLL*(text1_strings + text2_strings)/4
  751.         cld
  752.         mov     edi,text00
  753.         rep     stosd
  754.         mov     [text00+1711],byte 'x'
  755.         ret
  756. ;-------------------------------------------------------------------------------
  757. ; DATA AREA
  758. count:          db 0x0
  759. blinkpar:       dd 0x0
  760. time:           dw 0x0
  761. date:           dd 0x0
  762. ;-------------------------------------------------------------------------------
  763. textrus:
  764.         db 'Язык системы              : ENGLISH         - +   Применить'
  765.         db 'Раскладка клавиатуры      : ENGLISH         - +   Применить'
  766.         db 'Включить LBA              : OFF             - +   Применить'
  767.         db 'Доступ к шине PCI         : OFF             - +   Применить'
  768.         db 'Скорость курсора мыши     : 1               - +   Применить'
  769.         db 'Задержка ускорения мыши   : 0x00a           - +   Применить'
  770.         db 'Выключить SPEAKER         : OFF             - +   Применить'
  771.        
  772.         db 'ВНИМАНИЕ:                                    Применить все '
  773.         db 'НЕ ЗАБУДЬТЕ СОХРАНИТЬ НАСТРОЙКИ              Сохранить все '
  774. ;-------------------------------------------------------------------------------
  775. texteng:
  776.         db 'System language           : ENGLISH         - +     Apply  '
  777.         db 'Keyboard layout           : ENGLISH         - +     Apply  '
  778.         db 'LBA read enabled          : OFF             - +     Apply  '
  779.         db 'PCI access for appl.      : OFF             - +     Apply  '
  780.         db 'Mouse pointer speed       : 1               - +     Apply  '
  781.         db 'Mouse pointer delay       : 0x00a           - +     Apply  '
  782.         db 'SPEAKER disabled          : OFF             - +     Apply  '
  783. text1_strings = 7
  784.  
  785.         db 'NOTE:                                           Apply all  '
  786.         db 'SAVE YOUR SETTINGS BEFORE QUITING KOLIBRI       Save all   '
  787. text2_strings = 2
  788. ;-------------------------------------------------------------------------------
  789. title   db 'System setup',0
  790.  
  791. hex     db '0123456789ABCDEF'
  792. ;-------------------------------------------------------------------------------
  793. include 'keymaps.inc'
  794. ;-------------------------------------------------------------------------------
  795. read_fileinfo:
  796.         dd 0
  797.         dd 0
  798.         dd 0
  799.         dd 28
  800.         dd keyboard
  801.         db 0
  802.         dd file_name
  803. ;-------------------------------------------------------------------------------
  804. save_fileinfo:
  805.         dd 2
  806.         dd 0
  807.         dd 0
  808.         dd 28
  809.         dd keyboard
  810. file_name:      db '/sys/setup.dat',0
  811. ;-------------------------------------------------------------------------------
  812. keyboard        dd 0x0
  813. syslang         dd 0x4  ; 4 - rus
  814. lba_read        dd 0x1
  815. pci_acc         dd 0x1
  816. mouse_speed     dd 0x2
  817. mouse_delay     dd 0xa
  818. speaker_mute    dd 0    ; 0 - enable, 1 - disable
  819. ;-----------------------------------------------------------------------------
  820. IM_END:
  821. ;-----------------------------------------------------------------------------
  822. align 4
  823. text00:
  824.         rb LLL*(text1_strings + text2_strings)+4
  825. ;-----------------------------------------------------------------------------
  826. align 4
  827. boot_param:
  828. procinfo:
  829.         rb 1024
  830. ;-----------------------------------------------------------------------------
  831. align 4
  832.         rb 0x1000
  833. stack_area:
  834. ;-----------------------------------------------------------------------------
  835. I_END:
  836. ;-------------------------------------------------------------------------------