Subversion Repositories Kolibri OS

Rev

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