Subversion Repositories Kolibri OS

Rev

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

  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. ;;                               ;;
  3. ;;          DEVICE SETUP         ;;
  4. ;;                               ;;
  5. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  6.  
  7. ; Authors: Ville       - original version
  8. ;          A. Ivushkin - autostart (w launcher)
  9. ;          M. Lisovin  - added many feauters (apply all, save all, set time...)
  10. ;          I. Poddubny - fixed russian keymap
  11. ;14/08/06  Mario79 - added regulation of mouse features
  12.  
  13. ;******************************************************************************
  14.   use32
  15.   org        0x0
  16.   db      'MENUET01'   ; 8 byte identifier
  17.   dd      0x01           ; header version
  18.   dd      START        ; pointer to program start
  19.   dd      I_END        ; size of image
  20.   dd      0x4000      ; reguired amount of memory
  21.   dd      0x4000      ; stack pointer (esp)
  22.   dd      I_PARAM,0    ; parameters, reserved
  23. ;  include 'lang.inc'
  24.   include 'macros.inc'
  25. ;******************************************************************************
  26.  
  27. LLL equ (56+3)
  28. BBB equ 25
  29.  
  30. ;******************************************************************************
  31. apply_all:
  32.  
  33.     call _midibase    ;1
  34.     call _sound_dma    ;10
  35.     call _pci_acc    ;12
  36.     call _sb16        ;4
  37.     call _wssp        ;6
  38.     call _syslang    ;5
  39.     call _keyboard    ;2
  40.     call _mouse_speed
  41.     call _mouse_delay
  42.     call get_disk_info
  43.     cmp  [cd],0
  44.     jne  no_cd
  45.     call _cdbase    ;3
  46.   no_cd:
  47.     cmp  [hd],0
  48.     jne  no_hd
  49.     call _lba_read    ;11
  50.     call _hdbase    ;7
  51.     call _f32p        ;8
  52.   no_hd:
  53. ret
  54. ;-------------------------------------------------------------------------------
  55. get_disk_info:
  56.     mov  [hd],1
  57.     mov  [cd],1
  58.     mov  [hdbase],0
  59.     mov  [cdbase],0
  60.     mcall 18,11,1,table_area
  61.  
  62.   ide_0:
  63.     mov  al,[table_area+1]
  64.     shr  al,6
  65.     cmp  al,0
  66.     je        ide_1
  67.     cmp  al,01b
  68.     jnz  ide_0_cd
  69.     mov  [hdbase],1
  70.     mov  [hd],0
  71.     jmp  ide_1
  72.  
  73.   ide_0_cd:
  74.     cmp  al,10b
  75.     jnz  ide_1
  76.     mov  [cdbase],1
  77.     mov  [cd],0
  78.     cmp  [hd],0
  79.     je         all_device
  80.  
  81.   ide_1:
  82.     mov  al,[table_area+1]
  83.     shl  al,2
  84.     shr  al,6
  85.     cmp  al,0
  86.     je        ide_2
  87.     cmp  al,01b
  88.     jnz  ide_1_cd
  89.     cmp  [hd],0
  90.     je         ide_11
  91.     mov  [hdbase],2
  92.     mov  [hd],0
  93.   ide_11:
  94.     cmp  [cd],0
  95.     je         all_device
  96.     jmp  ide_2
  97.  
  98.   ide_1_cd:
  99.     cmp  al,10b
  100.     jnz  ide_2
  101.     cmp  [cd],0
  102.     je         ide_11_cd
  103.     mov  [cdbase],2
  104.     mov  [cd],0
  105.   ide_11_cd:
  106.     cmp  [hd],0
  107.     je         all_device
  108.  
  109.  ide_2:
  110.     mov  al,[table_area+1]
  111.     shl  al,4
  112.     shr  al,6
  113.     cmp  al,0
  114.     je        ide_3
  115.     cmp  al,01b
  116.     jnz  ide_2_cd
  117.     cmp  [hd],0
  118.     je         ide_21
  119.     mov  [hdbase],3
  120.     mov  [hd],0
  121.   ide_21:
  122.     cmp  [cd],0
  123.     je         all_device
  124.     jmp  ide_3
  125.  
  126.   ide_2_cd:
  127.     cmp  al,10b
  128.     jnz  ide_3
  129.     cmp  [cd],0
  130.     je         ide_21_cd
  131.     mov  [cdbase],3
  132.     mov  [cd],0
  133.   ide_21_cd:
  134.     cmp  [hd],0
  135.     je         all_device
  136.  
  137.   ide_3:
  138.     mov  al,[table_area+1]
  139.     shl  al,6
  140.     shr  al,6
  141.     cmp  al,0
  142.     je        not_device
  143.     cmp  al,01b
  144.     jnz  ide_3_cd
  145.     cmp  [hd],0
  146.     je         ide_31
  147.     mov  [hdbase],4
  148.     mov  [hd],0
  149.   ide_31:
  150.     cmp  [cd],0
  151.     jmp   all_device
  152.  
  153.   ide_3_cd:
  154.     cmp  al,10b
  155.     jnz  not_device
  156.     cmp  [cd],0
  157.     je         all_device
  158.     mov  [cdbase],4
  159.     mov  [cd],0
  160.  
  161.   all_device:
  162.   not_device:
  163.     ret
  164.  
  165. hd db 0
  166. cd db 0
  167. ;******************************************************************************
  168. apply_all_and_exit:
  169.     mcall 70,read_fileinfo
  170.     call apply_all
  171.     jmp  close
  172.  
  173. ;******************************************************************************
  174. set_language_and_exit:
  175.     mov  eax,26
  176.     mov  ebx,2
  177.     mov  ecx,9
  178.     int  0x40
  179. ;    cmp  eax,5
  180. ;    jne  @f
  181. ;    xor  eax,eax
  182. ;@@: mov  [keyboard],eax
  183.     cmp  eax,1
  184.     je        russian
  185.     xor  eax,eax
  186. set_lang_now:
  187.     mov  [keyboard],eax
  188.     call _keyboard
  189.     jmp  close
  190. russian:
  191.     mov  eax,3
  192.     jmp  set_lang_now
  193.  
  194. set_syslanguage_and_exit:
  195.     mov  eax,26
  196.     mov  ebx,5
  197. ;    mov  ecx,9
  198.     int  0x40
  199.     cmp  eax,6
  200.     jne  temp      ;@f
  201.     xor  eax,eax
  202. ;@@: inc  eax
  203. temp: inc  eax
  204.     mov  [syslang],eax
  205.     call _syslang
  206.     jmp  close
  207.  
  208. get_setup_values:
  209.     mcall 26,1
  210.     mov [midibase],eax
  211.     mcall 26,2,9
  212.     dec  eax
  213.     mov [keyboard],eax
  214.     mcall 26,3
  215.     mov [cdbase],eax
  216.     mcall 26,4
  217.     mov [sb16],eax
  218.     mcall 26,5
  219.     mov [syslang],eax
  220.     mcall 26,6
  221.     cmp eax,0x530
  222.     jne s_wss_2
  223.     mov eax,1
  224.     jmp get_other
  225. s_wss_2:
  226.     cmp eax,0x608
  227.     jne s_wss_3
  228.     mov eax,2
  229.     jmp get_other
  230. s_wss_3:
  231.     cmp eax,0xe80
  232.     jne s_wss_4
  233.     mov eax,3
  234.     jmp get_other
  235. s_wss_4:
  236.     mov eax,4
  237. get_other:
  238.     mov [wss],eax
  239.     mcall 26,7
  240.     mov [hdbase],eax
  241.     mcall 26,8
  242.     mov [f32p],eax
  243.     mcall 26,10
  244.     mov [sound_dma],eax
  245.     mcall 26,11
  246.     mov [lba_read],eax
  247.     mcall 26,12
  248.     mov [pci_acc],eax
  249.     mcall 18,19,0
  250.     mov [mouse_speed],eax
  251.     mcall 18,19,2
  252.     mov [mouse_delay],eax
  253.     ret
  254.  
  255. ;******************************************************************************
  256.  
  257. START:
  258.     cmp  [I_PARAM], 'SLAN'
  259.     je         set_syslanguage_and_exit
  260.  
  261.     cmp  [I_PARAM], 'LANG'
  262.     je         set_language_and_exit
  263.  
  264.     cmp  [I_PARAM], 'BOOT'
  265.     je         apply_all_and_exit
  266.  
  267.     call get_setup_values
  268.     call loadtxt
  269. red:
  270.     call draw_window
  271.  
  272. still:
  273.  
  274.     cmp  word [blinkpar],0
  275.     jne  blinker
  276.     mov  eax,29     ;get system date
  277.     int  0x40
  278.     cmp  eax,[date]
  279.     je         gettime
  280.     mov  [date],eax
  281.  gettime:
  282.     mov  eax,3        ;get system time
  283.     int  0x40
  284.     cmp  ax,[time]
  285.     je         sysevent
  286.     mov  [time],ax
  287.     call drawtime
  288.  
  289.  sysevent:
  290.     mov  eax,23
  291.     mov  ebx,8        ; wait here for event with timeout
  292.     int  0x40
  293.  
  294.     cmp  eax,1
  295.     jz         red
  296.     cmp  eax,2
  297.     jz         key
  298.     cmp  eax,3
  299.     jz         button
  300.  
  301.     jmp  still
  302.  
  303.  blinker:
  304.     cmp  byte [count],6
  305.     jb         noblink
  306.     btc  dword [blinkpar],16
  307.     mov  byte [count],0
  308.     call drawtime
  309.  noblink:
  310.     inc  byte [count]
  311.     jmp  sysevent
  312.  
  313. incdectime:
  314.     cmp byte [blinkpar],0
  315.     je        still
  316.     mov esi,time
  317.     mov bl,0x23  ;border
  318.     cmp byte [blinkpar],1
  319.     je        hours
  320.     mov bl,0x59       ;minutes
  321.     inc esi
  322.   hours:
  323.     mov al,byte [esi]
  324.     cmp ah,112
  325.     je        dectime
  326.     cmp al,bl
  327.     je        noinctime
  328.      inc al
  329.      daa
  330.     jmp incdectime1
  331.   noinctime:
  332.     xor al,al
  333.   incdectime1:
  334.     mov byte [esi],al
  335.     jmp still
  336.   dectime:
  337.     cmp al,0
  338.     je        nodectime
  339.     dec al
  340.     das
  341.     jmp incdectime1
  342.   nodectime:
  343.     mov al,bl
  344.     jmp incdectime1
  345.  
  346. incdecdate:
  347.     cmp byte [blinkpar+1],0
  348.     je        still
  349.     mov esi,date
  350.     mov bl,0      ;border of years
  351.     cmp byte [blinkpar+1],1
  352.     jne days
  353.     mov bl,0x12     ;months
  354.     inc esi
  355.   days:
  356.     cmp byte [blinkpar+1],2
  357.     jne nodays
  358.     mov bl,0x31
  359.     add esi,2
  360.   nodays:
  361.     mov al,byte [esi]
  362.     cmp ah,122
  363.     je        decdate
  364.     cmp al,bl
  365.     je        noincdate
  366.     inc al ;add al,1
  367.     daa
  368.     jmp incdecdate1
  369.   noincdate:
  370.     mov al,1
  371.   incdecdate1:
  372.     mov byte [esi],al
  373.     jmp still
  374.   decdate:
  375.     cmp al,1
  376.     je        nodecdate
  377.     dec al
  378.     das
  379.     jmp incdecdate1
  380.   nodecdate:
  381.     mov al,bl
  382.     jmp incdecdate1
  383.  
  384.  
  385.   key:
  386.     ;mov  eax,2
  387.     int  0x40
  388.     cmp  ah,27
  389.     jne  still
  390.     mov  dword [blinkpar],0
  391.     call drawtime
  392.     jmp  still
  393.  
  394.   button:
  395.  
  396.     mov  eax,17
  397.     int  0x40
  398.  
  399.     cmp  ah,112
  400.     je         incdectime
  401.     cmp  ah,113
  402.     je         incdectime
  403.     cmp  ah,122
  404.     je         incdecdate
  405.     cmp  ah,123
  406.     je         incdecdate
  407.     cmp  ah,111
  408.     jne  noseltime
  409.     mov  al, [blinkpar]
  410.     cmp  al,2
  411.     jae  seltime
  412.     inc  al
  413.     jmp  seltime1
  414.   seltime:
  415.     xor  al,al
  416.   seltime1:
  417.     mov  [blinkpar],al
  418.     call drawtime
  419.     jmp  still
  420. noseltime:
  421.     cmp  ah,121
  422.     jne  noseldate
  423.     mov  al,byte [blinkpar+1]
  424.     cmp  al,3
  425.     jae  seldate
  426.     inc  al
  427.     jmp  seldate1
  428.  seldate:
  429.     xor  al,al
  430.  seldate1:
  431.     mov  [blinkpar+1],al
  432.     call drawtime
  433.     jmp  still
  434. noseldate:
  435.     cmp  ah,99
  436.     jne  nosaveall
  437.     mcall 70,save_fileinfo
  438.     call settime
  439.     mov  dword [blinkpar],0
  440.     call drawtime
  441.     jmp  still
  442. nosaveall:
  443.     cmp  ah,100
  444.     jne  no_apply_all
  445.     call apply_all
  446.     jmp  still
  447. no_apply_all:
  448.  
  449.     cmp  ah,1           ; CLOSE APPLICATION
  450.     jne  no_close
  451. close:
  452.     or         eax,-1
  453.     int  0x40
  454.   no_close:
  455.  
  456.     cmp  ah,11         ; SET MIDI BASE
  457.     jnz  nosetbase1
  458.     call _midibase
  459.    nosetbase1:
  460.     cmp  ah,12
  461.     jnz  nomm
  462.     sub  [midibase],2
  463.     call draw_infotext
  464.   nomm:
  465.     cmp  ah,13
  466.     jnz  nomp
  467.     add  [midibase],2
  468.     call draw_infotext
  469.   nomp:
  470.  
  471.  
  472.     cmp  ah,4           ; SET KEYBOARD
  473.     jnz  nokm
  474.     mov  eax,[keyboard]
  475.     test eax,eax
  476.     je         downuplbl
  477.     dec  eax
  478.     jmp  nodownup
  479.    downuplbl:
  480.     mov  eax,5
  481.    nodownup:
  482.     mov  [keyboard],eax
  483.     call draw_infotext
  484.   nokm:
  485.     cmp  ah,5
  486.     jnz  nokp
  487.     mov  eax,[keyboard]
  488.     cmp  eax,5
  489.     je         updownlbl
  490.     inc  eax
  491.     jmp  noupdown
  492.    updownlbl:
  493.     xor  eax,eax
  494.    noupdown:
  495.     mov  [keyboard],eax
  496.     call draw_infotext
  497.   nokp:
  498.  
  499.  
  500.     cmp  ah,22          ; SET CD BASE
  501.     jnz  nocm
  502.     mov  eax,[cdbase]
  503.     sub  eax,2
  504.     and  eax,3
  505.     inc  eax
  506.     mov  [cdbase],eax
  507.     call draw_infotext
  508.   nocm:
  509.     cmp  ah,23
  510.     jnz  nocp
  511.     mov  eax,[cdbase]
  512.     and  eax,3
  513.     inc  eax
  514.     mov  [cdbase],eax
  515.     call draw_infotext
  516.   nocp:
  517.     cmp  ah,21
  518.     jnz  nocs
  519.     call _cdbase
  520.   nocs:
  521.  
  522.     cmp  ah,62        ; SET HD BASE
  523.     jnz  hnocm
  524.     mov  eax,[hdbase]
  525.     sub  eax,2
  526.     and  eax,3
  527.     inc  eax
  528.     mov  [hdbase],eax
  529.     call draw_infotext
  530.   hnocm:
  531.     cmp  ah,63
  532.     jnz  hnocp
  533.     mov  eax,[hdbase]
  534.     and  eax,3
  535.     inc  eax
  536.     mov  [hdbase],eax
  537.     call draw_infotext
  538.   hnocp:
  539.     cmp  ah,61
  540.     jnz  hnocs
  541.     call _hdbase
  542.   hnocs:
  543.  
  544.     cmp  ah,82        ; SET SOUND DMA
  545.     jne  no_sdma_d
  546.     mov  eax,[sound_dma]
  547.     dec  eax
  548.    sdmal:
  549.     and  eax,3
  550.     mov  [sound_dma],eax
  551.     call draw_infotext
  552.     jmp  still
  553.   no_sdma_d:
  554.     cmp  ah,83
  555.     jne  no_sdma_i
  556.     mov  eax,[sound_dma]
  557.     inc  eax
  558.     jmp  sdmal
  559.   no_sdma_i:
  560.     cmp  ah,81
  561.     jne  no_set_sound_dma
  562.     call _sound_dma
  563.     jmp  still
  564.   no_set_sound_dma:
  565.  
  566.     cmp  ah,92         ; SET LBA READ
  567.     jne  no_lba_d
  568.   slbal:
  569.     btc  [lba_read],0
  570.     call draw_infotext
  571.     jmp  still
  572.    no_lba_d:
  573.     cmp  ah,93
  574.     jne  no_lba_i
  575.     jmp  slbal
  576.   no_lba_i:
  577.     cmp  ah,91
  578.     jne  no_set_lba_read
  579.     call _lba_read
  580.     jmp  still
  581.    no_set_lba_read:
  582.  
  583.  
  584.     cmp  ah,102       ; SET PCI ACCESS
  585.     jne  no_pci_d
  586.   pcip:
  587.     btc  [pci_acc],0
  588.     call draw_infotext
  589.     jmp  still
  590.   no_pci_d:
  591.     cmp  ah,103
  592.     jne  no_pci_i
  593.     jmp  pcip
  594.    no_pci_i:
  595.     cmp  ah,101
  596.     jne  no_set_pci_acc
  597.     call _pci_acc
  598.     jmp  still
  599.   no_set_pci_acc:
  600.  
  601.  
  602.   set_partition:
  603.     cmp  ah,72        ; SET FAT32 PARTITION
  604.     jnz  .nominus
  605.     mov  eax,[f32p]
  606.     sub  eax,2
  607. ;   and  eax,15          ; 3 - four partitions, 7 - eight p., 15 - sixteen, etc.
  608.     cmp  eax,15
  609.     jb        @f
  610.     mov  eax,14
  611. @@:
  612.     inc  eax
  613.     mov  [f32p],eax
  614.     call draw_infotext
  615.   .nominus:
  616.     cmp  ah,73
  617.     jnz  .noplus
  618.     mov  eax,[f32p]
  619. ;   and  eax,15          ; 3 - four partitions, 7 - eight p., 15 - sixteen, etc.
  620.     cmp  eax,15
  621.     jb        @f
  622.     mov  eax,0
  623. @@:
  624.     inc  eax
  625.     mov  [f32p],eax
  626.     call draw_infotext
  627.   .noplus:
  628.     cmp  ah,71
  629.     jnz  .noapply
  630.     call _f32p
  631.   .noapply:
  632.  
  633.     cmp  ah,32        ; SET SOUND BLASTER 16 BASE
  634.     jnz  nosbm
  635.     sub  [sb16],2
  636.     call draw_infotext
  637.   nosbm:
  638.     cmp  ah,33
  639.     jnz  nosbp
  640.     add  [sb16],2
  641.     call draw_infotext
  642.   nosbp:
  643.     cmp  ah,31
  644.     jnz  nosbs
  645.     call _sb16
  646.   nosbs:
  647.  
  648.     cmp  ah,52        ; SET WINDOWS SOUND SYSTEM BASE
  649.     jnz  nowssm
  650.     mov  eax,[wss]
  651.     sub  eax,2
  652.     and  eax,3
  653.     inc  eax
  654.     mov  [wss],eax
  655.     call draw_infotext
  656.   nowssm:
  657.     cmp  ah,53
  658.     jnz  nowssp
  659.     mov  eax,[wss]
  660.     and  eax,3
  661.     inc  eax
  662.     mov  [wss],eax
  663.     call draw_infotext
  664.   nowssp:
  665.     cmp  ah,51
  666.     jnz  nowsss
  667.     call _wssp
  668.   nowsss:
  669.  
  670.     cmp  ah,42          ; SET SYSTEM LANGUAGE BASE
  671.     jnz  nosysm
  672.     mov  eax,[syslang]
  673.     dec  eax
  674.     jz         still
  675.     mov  [syslang],eax
  676.     call draw_infotext
  677.   nosysm:
  678.     cmp  ah,43
  679.     jnz  nosysp
  680.     mov  eax,[syslang]
  681.     cmp  eax,6
  682.     je         nosysp
  683.     inc  eax
  684.     mov  [syslang],eax
  685.     call draw_infotext
  686.   nosysp:
  687.     cmp  ah,41
  688.     jnz  nosyss
  689.     call _syslang
  690.     call cleantxt
  691.     call loadtxt
  692.     call draw_window
  693.     call drawtime
  694.   nosyss:
  695.     cmp  ah,132        ; SET MOUSE SPEED
  696.     jnz  .nominus
  697.     mov  eax,[mouse_speed]
  698.     sub  eax,2
  699.     cmp  eax,9
  700.     jb        @f
  701.     mov  eax,8
  702. @@:
  703.     inc  eax
  704.     mov  [mouse_speed],eax
  705.     call draw_infotext
  706.   .nominus:
  707.     cmp  ah,133
  708.     jnz  .noplus
  709.     mov  eax,[mouse_speed]
  710.     cmp  eax,9
  711.     jb        @f
  712.     mov  eax,0
  713. @@:
  714.     inc  eax
  715.     mov  [mouse_speed],eax
  716.     call draw_infotext
  717.   .noplus:
  718.     cmp  ah,131
  719.     jnz  .noapply
  720.     call _mouse_speed
  721.   .noapply:
  722.  mousedelay:
  723.     cmp  ah,142        ; SET MOUSE DELAY
  724.     jnz  .nominus
  725.     mov  eax,[mouse_delay]
  726.     sub  eax,2
  727.     cmp  eax,0xfff
  728.     jb        @f
  729.     mov  eax,0xffe
  730. @@:
  731.     inc  eax
  732.     mov  [mouse_delay],eax
  733.     call draw_infotext
  734.   .nominus:
  735.     cmp  ah,143
  736.     jnz  .noplus
  737.     mov  eax,[mouse_delay]
  738.     cmp  eax,0xfff
  739.     jb        @f
  740.     mov  eax,0
  741. @@:
  742.     inc  eax
  743.     mov  [mouse_delay],eax
  744.     call draw_infotext
  745.   .noplus:
  746.     cmp  ah,141
  747.     jnz  .noapply
  748.     call _mouse_delay
  749.   .noapply:
  750.  
  751.     cmp  ah,3         ; SET KEYMAP
  752.     jne  still
  753.     call _keyboard
  754.     jmp  still
  755.  
  756.   _keyboard:
  757.     cmp [keyboard],0
  758.     jnz  nosetkeyle
  759.     mov  eax,21       ; english
  760.     mov  ebx,2
  761.     mov  ecx,1
  762.     mov  edx,en_keymap
  763.     int  0x40
  764.     mov  eax,21
  765.     inc  ecx
  766.     mov  edx,en_keymap_shift
  767.     int  0x40
  768.     mov  eax,21
  769.     mov  ecx,9
  770.     mov  edx,1
  771.     int  0x40
  772.     call alt_gen
  773.   nosetkeyle:
  774.     cmp  [keyboard],1
  775.     jnz  nosetkeylfi
  776.     mov  eax,21       ; finnish
  777.     mov  ebx,2
  778.     mov  ecx,1
  779.     mov  edx,fi_keymap
  780.     int  0x40
  781.     mov  eax,21
  782.     inc  ecx
  783.     mov  edx,fi_keymap_shift
  784.     int  0x40
  785.     mov  eax,21
  786.     mov  ecx,9
  787.     mov  edx,2
  788.     int  0x40
  789.     call alt_gen
  790.   nosetkeylfi:
  791.     cmp  [keyboard],2
  792.     jnz  nosetkeylge
  793.     mov  eax,21       ; german
  794.     mov  ebx,2
  795.     mov  ecx,1
  796.     mov  edx,ge_keymap
  797.     int  0x40
  798.     mov  eax,21
  799.     inc  ecx
  800.     mov  edx,ge_keymap_shift
  801.     int  0x40
  802.     mov  eax,21
  803.     mov  ecx,9
  804.     mov  edx,3
  805.     int  0x40
  806.     call alt_gen
  807.   nosetkeylge:
  808.     cmp  [keyboard],3
  809.     jnz  nosetkeylru
  810.     mov  eax,21       ; russian
  811.     mov  ebx,2
  812.     mov  ecx,1
  813.     mov  edx,ru_keymap
  814.     int  0x40
  815.     mov  eax,21
  816.     inc  ecx
  817.     mov  edx,ru_keymap_shift
  818.     int  0x40
  819.     call alt_gen
  820.     mov  eax,21
  821.     mov  ecx,9
  822.     mov  edx,4
  823.     int  0x40
  824.   nosetkeylru:
  825.     cmp  [keyboard],4        ;french
  826.     jnz  nosetkeylfr
  827.     mov  eax,21
  828.     mov  ebx,2
  829.     mov  ecx,1
  830.     mov  edx,fr_keymap
  831.     int  0x40
  832.     mov  eax,21
  833.     inc  ecx
  834.     mov  edx,fr_keymap_shift
  835.     int  0x40
  836.     mov  eax,21
  837.     inc  ecx
  838.     mov  edx,fr_keymap_alt_gr
  839.     int  0x40
  840.     mov  eax,21
  841.     mov  ecx,9
  842.     mov  edx,5
  843.     int  0x40
  844.   nosetkeylfr:
  845.     cmp  [keyboard],5
  846.     jnz  nosetkeylet
  847.     mov  eax,21       ; estonian
  848.     mov  ebx,2
  849.     mov  ecx,1
  850.     mov  edx,et_keymap
  851.     int  0x40
  852.     mov  eax,21
  853.     inc  ecx
  854.     mov  edx,et_keymap_shift
  855.     int  0x40
  856.     mov  eax,21
  857.     mov  ecx,9
  858.     mov  edx,6
  859.     int  0x40
  860.     call alt_gen
  861.   nosetkeylet:
  862.     ret
  863.  
  864.  alt_gen:
  865.    mov eax,21
  866.    mov ecx,3
  867.    mov edx,alt_general
  868.    int 0x40
  869.    ret
  870.  
  871.  
  872.  
  873. draw_buttons:
  874.  
  875.     pusha
  876.  
  877.     shl  ecx,16
  878.     add  ecx,12
  879.     mov  ebx,(350-50)*65536+46+BBB
  880.  
  881.     mov  eax,8
  882.     int  0x40
  883.  
  884.     mov  ebx,(350-79)*65536+9
  885.     inc  edx
  886.     int  0x40
  887.  
  888.     mov  ebx,(350-67)*65536+9
  889.     inc  edx
  890.     int  0x40
  891.  
  892.     popa
  893.     ret
  894.  
  895.  
  896.  
  897. ; ********************************************
  898. ; ******* WINDOW DEFINITIONS AND DRAW  *******
  899. ; ********************************************
  900.  
  901.  
  902. draw_window:
  903.  
  904.     pusha
  905.  
  906.     mov  eax,12
  907.     mov  ebx,1
  908.     int  0x40
  909.  
  910.     xor  eax,eax       ; DRAW WINDOW
  911.     mov  ebx,40*65536+355+BBB
  912.     mov  ecx,40*65536+320
  913.     mov  edx,0x83111199
  914. ;    mov  esi,0x805588dd
  915. ;    mov  edi,0x005588dd
  916.     int  0x40
  917.  
  918.     mov  eax,4
  919.     mov  ebx,8*65536+8
  920.     mov  ecx,0x10ffffff
  921.     mov  edx,labelt
  922.     cmp  [syslang],4
  923.     je         ruslabel
  924.     add  edx,20
  925.   ruslabel:
  926.     mov  esi,19 ;26
  927.     int  0x40
  928.  
  929. ;    mov  eax,8               ; CLOSE BUTTON
  930. ;    mov  ebx,(355+BBB-19)*65536+12
  931. ;    mov  ecx,5*65536+12
  932. ;    mov  edx,1
  933. ;    mov  esi,0x005588dd
  934. ;    int  0x40
  935.  
  936.     mov  eax,8             ; APPLY ALL
  937.     mov  ebx,(350-79)*65536+100
  938.     mov  ecx,282*65536+12
  939.     mov  edx,100
  940.     mov  esi,0x005588dd
  941.     int  0x40
  942.     add  ecx,16*65536         ; SAVE ALL
  943.     dec  edx
  944.     int  0x40
  945.  
  946.     mov  esi,0x5580c0
  947.  
  948.     mov  edx,11
  949.     mov  ecx,43
  950.     call draw_buttons
  951.  
  952.     mov  edx,41
  953.     mov  ecx,43+8*8
  954.     call draw_buttons
  955.  
  956.     mov  edx,21
  957.     mov  ecx,43+4*8
  958.     call draw_buttons
  959.  
  960.     mov  edx,31
  961.     mov  ecx,43+2*8
  962.     call draw_buttons
  963.  
  964.     mov  edx,3
  965.     mov  ecx,43+10*8
  966.     call draw_buttons
  967.  
  968.     mov  edx,51
  969.     mov  ecx,43+12*8
  970.     call draw_buttons
  971.  
  972.     mov  edx,61
  973.     mov  ecx,43+6*8
  974.     call draw_buttons
  975.  
  976.     mov  edx,91
  977.     mov  ecx,43+18*8
  978.     call draw_buttons
  979.  
  980.     mov  edx,71
  981.     mov  ecx,43+14*8
  982.     call draw_buttons
  983.  
  984.     mov  edx,81
  985.     mov  ecx,43+16*8
  986.     call draw_buttons
  987.  
  988.     mov  edx,101
  989.     mov  ecx,43+20*8
  990.     call draw_buttons
  991.  
  992.     mov  edx,111
  993.     mov  ecx,43+22*8 ; 22
  994.     call draw_buttons
  995.  
  996.     mov  edx,121
  997.     mov  ecx,43+24*8 ; 24
  998.     call draw_buttons
  999.  
  1000.     mov  edx,131
  1001.     mov  ecx,43+26*8 ; 26
  1002.     call draw_buttons
  1003.  
  1004.     mov  edx,141
  1005.     mov  ecx,43+28*8 ; 26
  1006.     call draw_buttons
  1007.  
  1008.     call draw_infotext
  1009.  
  1010.     mov  eax,12
  1011.     mov  ebx,2
  1012.     int  0x40
  1013.  
  1014.     popa
  1015.     ret
  1016.  
  1017.  
  1018.  
  1019. draw_infotext:
  1020.  
  1021.     pusha
  1022.  
  1023.     mov  eax,[keyboard]       ; KEYBOARD
  1024.     test eax,eax
  1025.     jnz  noen
  1026.     mov  [text00+LLL*10+28],dword 'ENGL'
  1027.     mov  [text00+LLL*10+32],dword 'ISH '
  1028.   noen:
  1029.     cmp  eax,1
  1030.     jnz  nofi
  1031.     mov  [text00+LLL*10+28],dword 'FINN'
  1032.     mov  [text00+LLL*10+32],dword 'ISH '
  1033.   nofi:
  1034.     cmp  eax,2
  1035.     jnz  noge
  1036.     mov  [text00+LLL*10+28],dword 'GERM'
  1037.     mov  [text00+LLL*10+32],dword 'AN  '
  1038.   noge:
  1039.     cmp  eax,3
  1040.     jnz  nogr
  1041.     mov  [text00+LLL*10+28],dword 'RUSS'
  1042.     mov  [text00+LLL*10+32],dword 'IAN '
  1043.   nogr:
  1044.     cmp  eax,4
  1045.     jnz  nofr
  1046.     mov  [text00+LLL*10+28],dword 'FREN'
  1047.     mov  [text00+LLL*10+32],dword 'CH  '
  1048.   nofr:
  1049.     cmp  eax,5
  1050.     jnz  noet
  1051.     mov  [text00+LLL*10+28],dword 'ESTO'
  1052.     mov  [text00+LLL*10+32],dword 'NIAN'
  1053.   noet:
  1054.  
  1055.     mov  eax,[syslang]            ; SYSTEM LANGUAGE
  1056.     dec  eax
  1057.     test eax,eax
  1058.     jnz  noen5
  1059.     mov  [text00+LLL*8+28],dword 'ENGL'
  1060.     mov  [text00+LLL*8+32],dword 'ISH '
  1061.   noen5:
  1062.     cmp  eax,1
  1063.     jnz  nofi5
  1064.     mov  [text00+LLL*8+28],dword 'FINN'
  1065.     mov  [text00+LLL*8+32],dword 'ISH '
  1066.   nofi5:
  1067.     cmp  eax,2
  1068.     jnz  noge5
  1069.     mov  [text00+LLL*8+28],dword 'GERM'
  1070.     mov  [text00+LLL*8+32],dword 'AN  '
  1071.   noge5:
  1072.     cmp  eax,3
  1073.     jnz  nogr5
  1074.     mov  [text00+LLL*8+28],dword 'RUSS'
  1075.     mov  [text00+LLL*8+32],dword 'IAN '
  1076.   nogr5:
  1077.     cmp  eax,4
  1078.     jne  nofr5
  1079.     mov  [text00+LLL*8+28],dword 'FREN'
  1080.     mov  [text00+LLL*8+32],dword 'CH  '
  1081.   nofr5:
  1082.     cmp  eax,5
  1083.     jne  noet5
  1084.     mov  [text00+LLL*8+28],dword 'ESTO'
  1085.     mov  [text00+LLL*8+32],dword 'NIAN'
  1086.   noet5:
  1087.  
  1088.     mov  eax,[midibase]
  1089.     mov  esi,text00+LLL*0+32
  1090.     call hexconvert           ; MIDI BASE
  1091.  
  1092.  
  1093.     mov  eax,[sb16]           ; SB16 BASE
  1094.     mov  esi,text00+LLL*2+32
  1095.     call hexconvert
  1096.  
  1097.  
  1098.     mov  eax,[wss]         ; WSS BASE
  1099.     cmp  eax,1
  1100.     jnz  nowss1
  1101.     mov  [wssp],dword 0x530
  1102.   nowss1:
  1103.     cmp  eax,2
  1104.     jnz  nowss2
  1105.     mov  [wssp],dword 0x608
  1106.   nowss2:
  1107.     cmp  eax,3
  1108.     jnz  nowss3
  1109.     mov  [wssp],dword 0xe80
  1110.   nowss3:
  1111.     cmp  eax,4
  1112.     jnz  nowss4
  1113.     mov  [wssp],dword 0xf40
  1114.   nowss4:
  1115.  
  1116.     mov  eax,[wssp]
  1117.     mov  esi,text00+LLL*12+32
  1118.     call hexconvert
  1119.  
  1120.     mov  eax,[cdbase]          ; CD BASE
  1121.     cmp  eax,1
  1122.     jnz  noe1
  1123.     mov  [text00+LLL*4+28],dword 'PRI.'
  1124.     mov  [text00+LLL*4+32],dword 'MAST'
  1125.     mov  [text00+LLL*4+36],dword 'ER  '
  1126.   noe1:
  1127.     cmp  eax,2
  1128.     jnz  nof1
  1129.     mov  [text00+LLL*4+28],dword 'PRI.'
  1130.     mov  [text00+LLL*4+32],dword 'SLAV'
  1131.     mov  [text00+LLL*4+36],dword 'E   '
  1132.   nof1:
  1133.     cmp  eax,3
  1134.     jnz  nog1
  1135.     mov  [text00+LLL*4+28],dword 'SEC.'
  1136.     mov  [text00+LLL*4+32],dword 'MAST'
  1137.     mov  [text00+LLL*4+36],dword 'ER  '
  1138.   nog1:
  1139.     cmp  eax,4
  1140.     jnz  nog2
  1141.     mov  [text00+LLL*4+28],dword 'SEC.'
  1142.     mov  [text00+LLL*4+32],dword 'SLAV'
  1143.     mov  [text00+LLL*4+36],dword 'E   '
  1144.   nog2:
  1145.  
  1146.  
  1147.     mov  eax,[hdbase]            ; HD BASE
  1148.     cmp  eax,1
  1149.     jnz  hnoe1
  1150.     mov  [text00+LLL*6+28],dword 'PRI.'
  1151.     mov  [text00+LLL*6+32],dword 'MAST'
  1152.     mov  [text00+LLL*6+36],dword 'ER  '
  1153.   hnoe1:
  1154.     cmp  eax,2
  1155.     jnz  hnof1
  1156.     mov  [text00+LLL*6+28],dword 'PRI.'
  1157.     mov  [text00+LLL*6+32],dword 'SLAV'
  1158.     mov  [text00+LLL*6+36],dword 'E   '
  1159.   hnof1:
  1160.     cmp  eax,3
  1161.     jnz  hnog1
  1162.     mov  [text00+LLL*6+28],dword 'SEC.'
  1163.     mov  [text00+LLL*6+32],dword 'MAST'
  1164.     mov  [text00+LLL*6+36],dword 'ER  '
  1165.   hnog1:
  1166.     cmp  eax,4
  1167.     jnz  hnog2
  1168.     mov  [text00+LLL*6+28],dword 'SEC.'
  1169.     mov  [text00+LLL*6+32],dword 'SLAV'
  1170.     mov  [text00+LLL*6+36],dword 'E   '
  1171.   hnog2:
  1172.  
  1173.  
  1174.     mov  eax,[f32p]        ; FAT32 PARTITION
  1175.     add  al,48
  1176.     mov  [text00+LLL*14+28],al
  1177.  
  1178.     mov  eax,[sound_dma]      ; SOUND DMA
  1179.     add  eax,48
  1180.     mov  [text00+LLL*16+28],al
  1181.  
  1182.     mov  eax,[lba_read]
  1183.     call onoff          ; LBA READ
  1184.     mov  [text00+LLL*18+28],ebx
  1185.  
  1186.     mov  eax,[pci_acc]
  1187.     call onoff          ; PCI ACCESS
  1188.     mov  [text00+LLL*20+28],ebx
  1189.  
  1190.     mov  eax,[mouse_speed]      ; MOUSE SPEED
  1191.     add  al,48
  1192.     mov  [text00+LLL*26+28],al
  1193.  
  1194.     mov  eax,[mouse_delay]
  1195.     mov  esi,text00+LLL*28+32
  1196.     call hexconvert           ; MOUSE DELAY
  1197.  
  1198.     mov  eax,13
  1199.     mov  ebx,175*65536+85
  1200.     mov  ecx,40*65536+245
  1201.     mov  edx,0x80111199-19
  1202.     int  0x40
  1203.  
  1204.     mov  edx,text00
  1205.     mov  ebx,10*65536+45
  1206.     mov  eax,4
  1207.     mov  ecx,0xffffff
  1208.     mov  esi,LLL
  1209.   newline:
  1210.     int  0x40
  1211.     add  ebx,8
  1212.     add  edx,LLL
  1213.     cmp  [edx],byte 'x'
  1214.     jnz  newline
  1215.  
  1216.     popa
  1217.     ret
  1218.  
  1219.   drawtime:
  1220.     mov  ax,[time]      ;hours 22
  1221.     mov  cl,1
  1222.     call unpacktime
  1223.     mov  [text00+LLL*22+28],word bx
  1224.     mov  al,ah          ;minutes
  1225.     inc  cl
  1226.     call unpacktime
  1227.     mov  [text00+LLL*22+31],word bx
  1228.     mov  eax,[date]
  1229.     mov  ch,3
  1230.     call unpackdate
  1231.     mov  [text00+LLL*24+34],word bx    ;year   24
  1232.     mov  al,ah
  1233.     mov  ch,1
  1234.     call unpackdate
  1235.     mov  [text00+LLL*24+28],word bx    ;month
  1236.     bswap eax
  1237.     mov  al,ah
  1238.     inc  ch
  1239.     call unpackdate
  1240.     mov  [text00+LLL*24+31],word bx    ;day
  1241.  
  1242.     mov  eax,13
  1243.     mov  ebx,175*65536+85
  1244.     mov  ecx,40*65536+245
  1245.     mov  edx,0x80111199-19
  1246.     int  0x40
  1247.  
  1248.     mov  edx,text00
  1249.     mov  ebx,10*65536+45
  1250.     mov  eax,4
  1251.     mov  ecx,0xffffff
  1252.     mov  esi,LLL
  1253.   newline1:
  1254.     int  0x40
  1255.     add  ebx,8
  1256.     add  edx,LLL
  1257.     cmp  [edx],byte 'x'
  1258.     jnz  newline1
  1259.     ret
  1260.  
  1261.   unpacktime:
  1262.     cmp  byte [blinkpar],cl    ;translate packed number to ascii
  1263.     jne  unpack1
  1264.   chkblink:
  1265.     bt dword [blinkpar],16
  1266.     jnc  unpack1
  1267.     xor  bx,bx
  1268.     ret
  1269.   unpackdate:
  1270.     cmp  byte [blinkpar+1],ch
  1271.     je         chkblink
  1272.   unpack1:
  1273.     xor  bx,bx
  1274.     mov  bh,al
  1275.     mov  bl,al
  1276.     and  bh,0x0f
  1277.     shr  bl,4
  1278.     add  bx,0x3030
  1279.     ret
  1280.  
  1281.   hexconvert:        ;converting dec to hex in ascii
  1282.     xor  ebx,ebx
  1283.     mov  bl,al
  1284.     and  bl,15
  1285.     add  ebx,hex
  1286.     mov  cl,[ebx]
  1287.     mov  [esi],cl
  1288.     shr  eax,4
  1289.     xor  ebx,ebx
  1290.     mov  bl,al
  1291.     and  bl,15
  1292.     add  ebx,hex
  1293.     mov  cl,[ebx]
  1294.     dec  esi
  1295.     mov  [esi],cl
  1296.     shr  eax,4
  1297.     xor  ebx,ebx
  1298.     mov  bl,al
  1299.     and  bl,15
  1300.     add  ebx,hex
  1301.     mov  cl,[ebx]
  1302.     dec  esi
  1303.     mov  [esi],cl
  1304.     ret
  1305.  
  1306. onoff:
  1307.     cmp [syslang],4
  1308.     jne norus1
  1309.     mov ebx,'„€  '
  1310.     cmp eax,1
  1311.     je        exitsub
  1312.     mov ebx,'…’ '
  1313.     ret
  1314.  norus1:
  1315.     mov ebx,'ON  '
  1316.     cmp eax,1
  1317.     je        exitsub
  1318.     mov ebx,'OFF '
  1319.  exitsub:
  1320.     ret
  1321.  
  1322. _midibase:
  1323.     mov  eax,21
  1324.     mov  ebx,1
  1325.     mov  ecx,[midibase]
  1326.     int  0x40
  1327.  ret
  1328.  
  1329. _cdbase:
  1330.     mov  eax,21
  1331.     mov  ebx,3
  1332.     mov  ecx,[cdbase]
  1333.     int  0x40
  1334.  ret
  1335.  
  1336. _hdbase:
  1337.     mov  eax,21
  1338.     mov  ebx,7
  1339.     mov  ecx,[hdbase]
  1340.     int  0x40
  1341.     ret
  1342.  
  1343. _sound_dma:
  1344.     mov  eax,21
  1345.     mov  ebx,10
  1346.     mov  ecx,[sound_dma]
  1347.     int  0x40
  1348.     ret
  1349.  
  1350. _lba_read:
  1351.     mov  eax,21
  1352.     mov  ebx,11
  1353.     mov  ecx,[lba_read]
  1354.     int  0x40
  1355.     ret
  1356.  
  1357. _pci_acc:
  1358.     mov  eax,21
  1359.     mov  ebx,12
  1360.     mov  ecx,[pci_acc]
  1361.     int  0x40
  1362.     ret
  1363.  
  1364. _f32p:
  1365.     mov  eax,21
  1366.     mov  ebx,8
  1367.     mov  ecx,[f32p]
  1368.     int  0x40
  1369.  ret
  1370.  
  1371. _sb16:
  1372.     mov  eax,21
  1373.     mov  ebx,4
  1374.     mov  ecx,[sb16]
  1375.     int  0x40
  1376.     ret
  1377.  
  1378. _wssp:
  1379.     mov  eax,21
  1380.     mov  ebx,6
  1381.     mov  ecx,[wssp]
  1382.     int  0x40
  1383.  ret
  1384.  
  1385. _syslang:
  1386.     mov  eax,21
  1387.     mov  ebx,5
  1388.     mov  ecx,[syslang]
  1389.     int  0x40
  1390.  ret
  1391.  
  1392. _mouse_speed:
  1393.     mov  eax,18
  1394.     mov  ebx,19
  1395.     mov  ecx,1
  1396.     mov  edx,[mouse_speed]
  1397.     int  0x40
  1398.  ret
  1399.  
  1400. _mouse_delay:
  1401.     mov  eax,18
  1402.     mov  ebx,19
  1403.     mov  ecx,3
  1404.     mov  edx,[mouse_delay]
  1405.     int  0x40
  1406.  ret
  1407.  
  1408. loadtxt:
  1409.     cld
  1410.     mov  edi,text00
  1411.     mov  ecx,488 ;28
  1412.     cmp  [syslang],4
  1413.     jne  norus
  1414.     mov  esi,textrus
  1415.     jmp  sload
  1416.   norus:
  1417.     mov  esi,texteng
  1418.   sload:
  1419.     rep  movsd
  1420.     ret
  1421.  
  1422. cleantxt:
  1423.     xor  eax,eax
  1424.     mov  ecx,428
  1425.     cld
  1426.     mov  edi,text00
  1427.     rep stosd
  1428.     mov  [text00+1711],byte 'x'
  1429.     ret
  1430.  
  1431. settime:
  1432.     mov  dx,0x70
  1433.     call startstopclk
  1434.     dec  dx
  1435.     mov  al,2           ;set minutes
  1436.     out  dx,al
  1437.     inc  dx
  1438.     mov  al,byte [time+1]
  1439.     out  dx,al
  1440.     dec  dx
  1441.     mov  al,4           ;set hours
  1442.     out  dx,al
  1443.     inc  dx
  1444.     mov  al,byte [time]
  1445.     out  dx,al
  1446.     dec  dx
  1447.     mov  al,7           ;set day
  1448.     out  dx,al
  1449.     inc  dx
  1450.     mov  al,byte [date+2]
  1451.     out  dx,al
  1452.     dec  dx
  1453.     mov  al,8           ;set month
  1454.     out  dx,al
  1455.     inc  dx
  1456.     mov  al,byte [date+1]
  1457.     out  dx,al
  1458.     dec  dx
  1459.     mov  al,9           ;set year
  1460.     out  dx,al
  1461.     inc  dx
  1462.     mov  al,byte [date]
  1463.     out  dx,al
  1464.     dec  dx
  1465.     call startstopclk
  1466.     ret
  1467.  
  1468. startstopclk:
  1469.     mov  al,0x0b
  1470.     out  dx,al
  1471.     inc  dx
  1472.     in         al,dx
  1473.     btc  ax,7
  1474.     out  dx,al
  1475.     ret
  1476.  
  1477. ; DATA AREA
  1478. count:          db 0x0
  1479. blinkpar: dd 0x0
  1480. time:        dw 0x0
  1481. date:        dd 0x0
  1482.  
  1483. textrus:
  1484.  
  1485.     db ' §  MIDI ROLAND MPU-401  : 0x320           - +   à¨¬¥­¨âì'
  1486.     db '                                                           '
  1487.     db ' §  SoundBlaster 16      : 0x240           - +   à¨¬¥­¨âì'
  1488.     db '                                                           '
  1489.     db ' §  CD-ROM               : PRI.SLAVE       - +   à¨¬¥­¨âì'
  1490.     db '                                                           '
  1491.     db ' §  †„-1                 : PRI.MASTER      - +   à¨¬¥­¨âì'
  1492.     db '                                                           '
  1493.     db 'Ÿ§ëª á¨áâ¥¬ë              : ENGLISH         - +   à¨¬¥­¨âì'
  1494.     db '                                                           '
  1495.     db ' áª« ¤ª  ª« ¢¨ âãàë      : ENGLISH         - +   à¨¬¥­¨âì'
  1496.     db '                                                           '
  1497.     db ' §  WSS                  : 0x200           - +   à¨¬¥­¨âì'
  1498.     db '                                                           '
  1499.     db ' §¤¥« FAT32 ­  †„-1      : 1               - +   à¨¬¥­¨âì'
  1500.     db '                                                           '
  1501.     db '‡¢ãª®¢®© ª ­ « DMA        : 1               - +   à¨¬¥­¨âì'
  1502.     db '                                                           '
  1503.     db '‚ª«îç¨âì LBA              : OFF             - +   à¨¬¥­¨âì'
  1504.     db '                                                           '
  1505.     db '„®áâ㯠ª 設¥ PCI         : OFF             - +   à¨¬¥­¨âì'
  1506.     db '                                                           '
  1507.     db '‘¨á⥬­®¥ ¢à¥¬ï           :  0:00           - +     ‚ë¡®à  '
  1508.     db '                                                           '
  1509.     db '‘¨á⥬­ ï ¤ â  (¬,¤,£)    : 00/00/00        - +     ‚ë¡®à  '
  1510.     db '                                                           '
  1511.     db '‘ª®à®áâì ªãàá®à  ¬ëè¨     : 1               - +   à¨¬¥­¨âì'
  1512.     db '                                                           '
  1513.     db '‡ ¤¥à¦ª  ã᪮७¨ï ¬ëè¨   : 0x00a           - +   à¨¬¥­¨âì'
  1514.     db '                                                           '
  1515.     db '‚ˆŒ€ˆ…:                                    à¨¬¥­¨âì ¢á¥ '
  1516.     db 'ˆ‘Ž‹œ‡“‰’… „Ž‘’“ Š FAT ‘ Ž‘’ŽŽ†Ž‘’œž!                  '
  1517.     db '… ‡€“„œ’… ‘Ž•€ˆ’œ €‘’Ž‰Šˆ              ‘®åà ­¨âì ¢á¥ '
  1518.     db 'x'
  1519.  
  1520. texteng:
  1521.  
  1522.     db 'MIDI: ROLAND MPU-401 BASE : 0x320           - +     APPLY  '
  1523.     db '                                                           '
  1524.     db 'SOUND: SB16 BASE          : 0x240           - +     APPLY  '
  1525.     db '                                                           '
  1526.     db 'CD-ROM BASE               : PRI.SLAVE       - +     APPLY  '
  1527.     db '                                                           '
  1528.     db 'HARDDISK-1 BASE           : PRI.MASTER      - +     APPLY  '
  1529.     db '                                                           '
  1530.     db 'SYSTEM LANGUAGE           : ENGLISH         - +     APPLY  '
  1531.     db '                                                           '
  1532.     db 'KEYBOARD LAYOUT           : ENGLISH         - +     APPLY  '
  1533.     db '                                                           '
  1534.     db 'WINDOWS SOUND SYSTEM BASE : 0x200           - +     APPLY  '
  1535.     db '                                                           '
  1536.     db 'FAT32-1 PARTITION IN HD-1 : 1               - +     APPLY  '
  1537.     db '                                                           '
  1538.     db 'SOUND DMA CHANNEL         : 1               - +     APPLY  '
  1539.     db '                                                           '
  1540.     db 'LBA READ ENABLED          : OFF             - +     APPLY  '
  1541.     db '                                                           '
  1542.     db 'PCI ACCESS FOR APPL.      : OFF             - +     APPLY  '
  1543.     db '                                                           '
  1544.     db 'SYSTEM TIME               :  0:00           - +    SELECT  '
  1545.     db '                                                           '
  1546.     db 'SYSTEM DATE (M,D,Y)       : 00/00/00        - +    SELECT  '
  1547.     db '                                                           '
  1548.     db 'Mouse pointer speed       : 1               - +     APPLY  '
  1549.     db '                                                           '
  1550.     db 'Mouse pointer delay       : 0x00a           - +     APPLY  '
  1551.     db '                                                           '
  1552.     db 'NOTE:                                           APPLY ALL  '
  1553.     db 'TEST FAT FUNCTIONS WITH EXTREME CARE                       '
  1554.     db 'SAVE YOUR SETTINGS BEFORE QUIT MENUET           SAVE ALL   '
  1555.     db 'x'
  1556.  
  1557. labelt:
  1558.     db         '€‘’Ž‰Š€ “‘’Ž‰‘’‚ DEVICE SETUP       '
  1559.  
  1560. hex db         '0123456789ABCDEF'
  1561.  
  1562. alt_general:
  1563.  
  1564. ;     db   ' ',27
  1565. ;     db   ' @ $  {[]}\ ',8,9
  1566. ;     db   '            ',13
  1567. ;     db   '             ',0,'           ',0,'4',0,' '
  1568. ;     db   '             ',180,178,184,'6',176,'7'
  1569. ;     db   179,'8',181,177,183,185,182
  1570. ;     db   'ABCD',255,'FGHIJKLMNOPQRSTUVWXYZ'
  1571. ;     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1572. ;     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1573. ;     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1574.  
  1575.  
  1576. en_keymap:
  1577.  
  1578.      db   '6',27
  1579.      db   '1234567890-=',8,9
  1580.      db   'qwertyuiop[]',13
  1581.      db   '~asdfghjkl;',39,96,0,'\zxcvbnm,./',0,'45 '
  1582.      db   '@234567890123',180,178,184,'6',176,'7'
  1583.      db   179,'8',181,177,183,185,182
  1584.      db   'AB<D',255,'FGHIJKLMNOPQRSTUVWXYZ'
  1585.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1586.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1587.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1588.  
  1589.  
  1590. en_keymap_shift:
  1591.  
  1592.      db   '6',27
  1593.      db   '!@#$%^&*()_+',8,9
  1594.      db   'QWERTYUIOP{}',13
  1595.      db   '~ASDFGHJKL:"~',0,'|ZXCVBNM<>?',0,'45 '
  1596.      db   '@234567890123',180,178,184,'6',176,'7'
  1597.      db   179,'8',181,177,183,185,182
  1598.      db   'AB>D',255,'FGHIJKLMNOPQRSTUVWXYZ'
  1599.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1600.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1601.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1602.  
  1603.  
  1604. fr_keymap:
  1605.  
  1606.      db   '6',27
  1607.      db   '&Ž"',39,'(-_“)=',8,9
  1608.      db   'azertyuiop^$',13
  1609.      db   '~qsdfghjklm’',0,0,'*wxcvbn,;:!',0,'45 '
  1610.      db   '@234567890123',180,178,184,'6',176,'7'
  1611.      db   179,'8',181,177,183,185,182
  1612.      db   'AB<D',255,'FGHIJKLMNOPQRSTUVWXYZ'
  1613.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1614.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1615.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1616.  
  1617.  
  1618.  
  1619. fr_keymap_shift:
  1620.  
  1621.  
  1622.      db   '6',27
  1623.      db   '1234567890+',8,9
  1624.      db   'AZERTYUIOP•”',13
  1625.      db   '~QSDFGHJKLM%',0,'–WXCVBN?./',0,'45 '
  1626.      db   '@234567890123',180,178,184,'6',176,'7'
  1627.      db   179,'8',181,177,183,185,182
  1628.      db   'AB>D',255,'FGHIJKLMNOPQRSTUVWXYZ'
  1629.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1630.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1631.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1632.  
  1633.  
  1634. fr_keymap_alt_gr:
  1635.  
  1636.  
  1637.      db   '6',27
  1638.      db   28,'~#{[|˜\^@]}',8,9
  1639.      db   'azertyuiop^$',13
  1640.      db   '~qsdfghjklm’',0,0,'*wxcvbn,;:!',0,'45 '
  1641.      db   '@234567890123',180,178,184,'6',176,'7'
  1642.      db   179,'8',181,177,183,185,182
  1643.      db   'AB<D',255,'FGHIJKLMNOPQRSTUVWXYZ'
  1644.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1645.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1646.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1647.  
  1648.  
  1649.  
  1650.  
  1651. fi_keymap:
  1652.  
  1653.      db   '6',27
  1654.      db   '1234567890+[',8,9
  1655.      db   'qwertyuiop',192,'~',13
  1656.      db   '~asdfghjkl',194,193,'1',0,39,'zxcvbnm,.-',0,'45 '
  1657.      db   '@234567890123',180,178,184,'6',176,'7'
  1658.      db   179,'8',181,177,183,185,182
  1659.      db   'AB<D',255,'FGHIJKLMNOPQRSTUVWXYZ'
  1660.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1661.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1662.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1663.  
  1664.  
  1665. fi_keymap_shift:
  1666.  
  1667.      db   '6',27
  1668.      db   '!"#%&/()=?]',8,9
  1669.      db   'QWERTYUIOP',200,'~',13
  1670.      db   '~ASDFGHJKL',202,201,'1',0,'*ZXCVBNM;:_',0,'45 '
  1671.      db   '@234567890123',180,178,184,'6',176,'7'
  1672.      db   179,'8',181,177,183,185,182
  1673.      db   'AB>D',255,'FGHIJKLMNOPQRSTUVWXYZ'
  1674.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1675.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1676.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1677.  
  1678.  
  1679.  
  1680. ge_keymap:
  1681.  
  1682.      db   '6',27
  1683.      db   '1234567890?[',8,9
  1684.      db   'qwertzuiop',203,'~',13
  1685.      db   '~asdfghjkl',194,193,'1',0,39,'yxcvbnm,.-',0,'45 '
  1686.      db   '@234567890123',180,178,184,'6',176,'7'
  1687.      db   179,'8',181,177,183,185,182
  1688.      db   'AB<D',255,'FGHIJKLMNOPQRSTUVWXYZ'
  1689.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1690.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1691.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1692.  
  1693.  
  1694. ge_keymap_shift:
  1695.  
  1696.      db   '6',27
  1697.      db   '!"#$%&/()=',197,']',8,9
  1698.      db   'QWERTZUIOP',195,'~',13
  1699.      db   '~ASDFGHJKL',202,201,'1',0,'*YXCVBNM;:_',0,'45 '
  1700.      db   '@234567890123',180,178,184,'6',176,'7'
  1701.      db   179,'8',181,177,183,185,182
  1702.      db   'AB>D',255,'FGHIJKLMNOPQRSTUVWXYZ'
  1703.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1704.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1705.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1706.  
  1707. ru_keymap:
  1708.  
  1709.      db   '6',27
  1710.      db   '1234567890-=',8,9
  1711.      db   '©æ㪥­£èé§åê',13
  1712.      db   0,"ä뢠¯à®«¤¦í"
  1713.      db   0xf1, '-/'
  1714.      db   "ïçᬨâì¡î",'.-','45 '
  1715.      db   '@234567890123',180,178,184,'6',176,'7'
  1716.      db   179,'8',181,177,183,185,182
  1717.      db   'AB<D',255,'FGHIJKLMNOPQRSTUVWXYZ'
  1718.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1719.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1720.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1721.  
  1722.  
  1723.  
  1724. ru_keymap_shift:
  1725.  
  1726.      db   '6',27
  1727.      db   '!"N;%:?*()_+',8,0
  1728.      db   "‰–“Š…ƒ˜™‡•š",13
  1729.      db   0,"”›‚€Ž‹„†"
  1730.      db   0xf0, '-\'
  1731.      db   "Ÿ—‘Œˆ’œž",',-','45 '
  1732.      db   '@234567890123',180,178,184,'6',176,'7'
  1733.      db   179,'8',181,177,183,185,182
  1734.      db   'AB>D',255,'FGHIJKLMNOPQRSTUVWXYZ'
  1735.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1736.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1737.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1738.  
  1739. et_keymap:
  1740.  
  1741.      db   '6',27
  1742.      db   '1234567890+´',8,9
  1743.      db   'qwertyuiopüõ',13
  1744.      db   '~asdfghjklöä','1',0,'<zxcvbnm,.-',0,'45 '
  1745.      db   '@234567890123',180,178,184,'6',176,'7'
  1746.      db   179,'8',181,177,183,185,182
  1747.      db   'AB<D',255,'FGHIJKLMNOPQRSTUVWXYZ'
  1748.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1749.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1750.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1751.  
  1752.  
  1753. et_keymap_shift:
  1754.  
  1755.      db   '6',27
  1756.      db   '!"#¤%&/()=?`',8,9
  1757.      db   'QWERTYUIOPÜÕ',13
  1758.      db   '~ASDFGHJKLÖÄ','1',0,'>ZXCVBNM;:_',0,'45 '
  1759.      db   '@234567890123',180,178,184,'6',176,'7'
  1760.      db   179,'8',181,177,183,185,182
  1761.      db   'AB>D',255,'FGHIJKLMNOPQRSTUVWXYZ'
  1762.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1763.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1764.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1765.  
  1766. read_fileinfo:
  1767.        dd 0
  1768.        dd 0
  1769.        dd 0
  1770.        dd 56
  1771.        dd keyboard
  1772.        db 0
  1773.        dd file_name
  1774.  
  1775. save_fileinfo:
  1776.        dd 2
  1777.        dd 0
  1778.        dd 0
  1779.        dd 56
  1780.        dd keyboard
  1781. file_name:   db '/rd/1/setup.dat',0
  1782.  
  1783. I_PARAM   dd 0
  1784.  
  1785. keyboard     dd 0x0
  1786. midibase     dd 0x320
  1787. cdbase         dd 0x2
  1788. sb16         dd 0x220
  1789. syslang      dd 0x1
  1790. wss         dd 0x1
  1791. wssp         dd 0x0
  1792. hdbase         dd 0x1
  1793. f32p         dd 0x1
  1794. sound_dma    dd 0x1
  1795. lba_read     dd 0x1
  1796. pci_acc      dd 0x1
  1797. mouse_speed  dd 0x3
  1798. mouse_delay  dd 0x10
  1799. text00:
  1800.  
  1801. I_END:
  1802. table_area:
  1803.