Subversion Repositories Kolibri OS

Rev

Rev 120 | Rev 275 | 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,4
  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,4
  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,4
  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,4
  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.     ret
  846.  
  847.  alt_gen:
  848.    mov eax,21
  849.    mov ecx,3
  850.    mov edx,alt_general
  851.    int 0x40
  852.    ret
  853.  
  854.  
  855.  
  856. draw_buttons:
  857.  
  858.     pusha
  859.  
  860.     shl  ecx,16
  861.     add  ecx,12
  862.     mov  ebx,(350-50)*65536+46+BBB
  863.  
  864.     mov  eax,8
  865.     int  0x40
  866.  
  867.     mov  ebx,(350-79)*65536+9
  868.     inc  edx
  869.     int  0x40
  870.  
  871.     mov  ebx,(350-67)*65536+9
  872.     inc  edx
  873.     int  0x40
  874.  
  875.     popa
  876.     ret
  877.  
  878.  
  879.  
  880. ; ********************************************
  881. ; ******* WINDOW DEFINITIONS AND DRAW  *******
  882. ; ********************************************
  883.  
  884.  
  885. draw_window:
  886.  
  887.     pusha
  888.  
  889.     mov  eax,12
  890.     mov  ebx,1
  891.     int  0x40
  892.  
  893.     xor  eax,eax       ; DRAW WINDOW
  894.     mov  ebx,40*65536+355+BBB
  895.     mov  ecx,40*65536+320
  896.     mov  edx,0x83111199
  897. ;    mov  esi,0x805588dd
  898. ;    mov  edi,0x005588dd
  899.     int  0x40
  900.  
  901.     mov  eax,4
  902.     mov  ebx,8*65536+8
  903.     mov  ecx,0x10ffffff
  904.     mov  edx,labelt
  905.     cmp  [syslang],4
  906.     je         ruslabel
  907.     add  edx,20
  908.   ruslabel:
  909.     mov  esi,19 ;26
  910.     int  0x40
  911.  
  912. ;    mov  eax,8               ; CLOSE BUTTON
  913. ;    mov  ebx,(355+BBB-19)*65536+12
  914. ;    mov  ecx,5*65536+12
  915. ;    mov  edx,1
  916. ;    mov  esi,0x005588dd
  917. ;    int  0x40
  918.  
  919.     mov  eax,8             ; APPLY ALL
  920.     mov  ebx,(350-79)*65536+100
  921.     mov  ecx,282*65536+12
  922.     mov  edx,100
  923.     mov  esi,0x005588dd
  924.     int  0x40
  925.     add  ecx,16*65536         ; SAVE ALL
  926.     dec  edx
  927.     int  0x40
  928.  
  929.     mov  esi,0x5580c0
  930.  
  931.     mov  edx,11
  932.     mov  ecx,43
  933.     call draw_buttons
  934.  
  935.     mov  edx,41
  936.     mov  ecx,43+8*8
  937.     call draw_buttons
  938.  
  939.     mov  edx,21
  940.     mov  ecx,43+4*8
  941.     call draw_buttons
  942.  
  943.     mov  edx,31
  944.     mov  ecx,43+2*8
  945.     call draw_buttons
  946.  
  947.     mov  edx,3
  948.     mov  ecx,43+10*8
  949.     call draw_buttons
  950.  
  951.     mov  edx,51
  952.     mov  ecx,43+12*8
  953.     call draw_buttons
  954.  
  955.     mov  edx,61
  956.     mov  ecx,43+6*8
  957.     call draw_buttons
  958.  
  959.     mov  edx,91
  960.     mov  ecx,43+18*8
  961.     call draw_buttons
  962.  
  963.     mov  edx,71
  964.     mov  ecx,43+14*8
  965.     call draw_buttons
  966.  
  967.     mov  edx,81
  968.     mov  ecx,43+16*8
  969.     call draw_buttons
  970.  
  971.     mov  edx,101
  972.     mov  ecx,43+20*8
  973.     call draw_buttons
  974.  
  975.     mov  edx,111
  976.     mov  ecx,43+22*8 ; 22
  977.     call draw_buttons
  978.  
  979.     mov  edx,121
  980.     mov  ecx,43+24*8 ; 24
  981.     call draw_buttons
  982.  
  983.     mov  edx,131
  984.     mov  ecx,43+26*8 ; 26
  985.     call draw_buttons
  986.  
  987.     mov  edx,141
  988.     mov  ecx,43+28*8 ; 26
  989.     call draw_buttons
  990.  
  991.     call draw_infotext
  992.  
  993.     mov  eax,12
  994.     mov  ebx,2
  995.     int  0x40
  996.  
  997.     popa
  998.     ret
  999.  
  1000.  
  1001.  
  1002. draw_infotext:
  1003.  
  1004.     pusha
  1005.  
  1006.     mov  eax,[keyboard]       ; KEYBOARD
  1007.     test eax,eax
  1008.     jnz  noen
  1009.     mov  [text00+LLL*10+28],dword 'ENGL'
  1010.     mov  [text00+LLL*10+32],dword 'ISH '
  1011.   noen:
  1012.     cmp  eax,1
  1013.     jnz  nofi
  1014.     mov  [text00+LLL*10+28],dword 'FINN'
  1015.     mov  [text00+LLL*10+32],dword 'ISH '
  1016.   nofi:
  1017.     cmp  eax,2
  1018.     jnz  noge
  1019.     mov  [text00+LLL*10+28],dword 'GERM'
  1020.     mov  [text00+LLL*10+32],dword 'AN  '
  1021.   noge:
  1022.     cmp  eax,3
  1023.     jnz  nogr
  1024.     mov  [text00+LLL*10+28],dword 'RUSS'
  1025.     mov  [text00+LLL*10+32],dword 'IAN '
  1026.   nogr:
  1027.     cmp  eax,4
  1028.     jnz  nofr
  1029.     mov  [text00+LLL*10+28],dword 'FREN'
  1030.     mov  [text00+LLL*10+32],dword 'CH  '
  1031.   nofr:
  1032.  
  1033.  
  1034.     mov  eax,[syslang]            ; SYSTEM LANGUAGE
  1035.     dec  eax
  1036.     test eax,eax
  1037.     jnz  noen5
  1038.     mov  [text00+LLL*8+28],dword 'ENGL'
  1039.     mov  [text00+LLL*8+32],dword 'ISH '
  1040.   noen5:
  1041.     cmp  eax,1
  1042.     jnz  nofi5
  1043.     mov  [text00+LLL*8+28],dword 'FINN'
  1044.     mov  [text00+LLL*8+32],dword 'ISH '
  1045.   nofi5:
  1046.     cmp  eax,2
  1047.     jnz  noge5
  1048.     mov  [text00+LLL*8+28],dword 'GERM'
  1049.     mov  [text00+LLL*8+32],dword 'AN  '
  1050.   noge5:
  1051.     cmp  eax,3
  1052.     jnz  nogr5
  1053.     mov  [text00+LLL*8+28],dword 'RUSS'
  1054.     mov  [text00+LLL*8+32],dword 'IAN '
  1055.   nogr5:
  1056.     cmp  eax,4
  1057.     jne  nofr5
  1058.     mov  [text00+LLL*8+28],dword 'FREN'
  1059.     mov  [text00+LLL*8+32],dword 'CH  '
  1060.   nofr5:
  1061.  
  1062.  
  1063.     mov  eax,[midibase]
  1064.     mov  esi,text00+LLL*0+32
  1065.     call hexconvert           ; MIDI BASE
  1066.  
  1067.  
  1068.     mov  eax,[sb16]           ; SB16 BASE
  1069.     mov  esi,text00+LLL*2+32
  1070.     call hexconvert
  1071.  
  1072.  
  1073.     mov  eax,[wss]         ; WSS BASE
  1074.     cmp  eax,1
  1075.     jnz  nowss1
  1076.     mov  [wssp],dword 0x530
  1077.   nowss1:
  1078.     cmp  eax,2
  1079.     jnz  nowss2
  1080.     mov  [wssp],dword 0x608
  1081.   nowss2:
  1082.     cmp  eax,3
  1083.     jnz  nowss3
  1084.     mov  [wssp],dword 0xe80
  1085.   nowss3:
  1086.     cmp  eax,4
  1087.     jnz  nowss4
  1088.     mov  [wssp],dword 0xf40
  1089.   nowss4:
  1090.  
  1091.     mov  eax,[wssp]
  1092.     mov  esi,text00+LLL*12+32
  1093.     call hexconvert
  1094.  
  1095.     mov  eax,[cdbase]          ; CD BASE
  1096.     cmp  eax,1
  1097.     jnz  noe1
  1098.     mov  [text00+LLL*4+28],dword 'PRI.'
  1099.     mov  [text00+LLL*4+32],dword 'MAST'
  1100.     mov  [text00+LLL*4+36],dword 'ER  '
  1101.   noe1:
  1102.     cmp  eax,2
  1103.     jnz  nof1
  1104.     mov  [text00+LLL*4+28],dword 'PRI.'
  1105.     mov  [text00+LLL*4+32],dword 'SLAV'
  1106.     mov  [text00+LLL*4+36],dword 'E   '
  1107.   nof1:
  1108.     cmp  eax,3
  1109.     jnz  nog1
  1110.     mov  [text00+LLL*4+28],dword 'SEC.'
  1111.     mov  [text00+LLL*4+32],dword 'MAST'
  1112.     mov  [text00+LLL*4+36],dword 'ER  '
  1113.   nog1:
  1114.     cmp  eax,4
  1115.     jnz  nog2
  1116.     mov  [text00+LLL*4+28],dword 'SEC.'
  1117.     mov  [text00+LLL*4+32],dword 'SLAV'
  1118.     mov  [text00+LLL*4+36],dword 'E   '
  1119.   nog2:
  1120.  
  1121.  
  1122.     mov  eax,[hdbase]            ; HD BASE
  1123.     cmp  eax,1
  1124.     jnz  hnoe1
  1125.     mov  [text00+LLL*6+28],dword 'PRI.'
  1126.     mov  [text00+LLL*6+32],dword 'MAST'
  1127.     mov  [text00+LLL*6+36],dword 'ER  '
  1128.   hnoe1:
  1129.     cmp  eax,2
  1130.     jnz  hnof1
  1131.     mov  [text00+LLL*6+28],dword 'PRI.'
  1132.     mov  [text00+LLL*6+32],dword 'SLAV'
  1133.     mov  [text00+LLL*6+36],dword 'E   '
  1134.   hnof1:
  1135.     cmp  eax,3
  1136.     jnz  hnog1
  1137.     mov  [text00+LLL*6+28],dword 'SEC.'
  1138.     mov  [text00+LLL*6+32],dword 'MAST'
  1139.     mov  [text00+LLL*6+36],dword 'ER  '
  1140.   hnog1:
  1141.     cmp  eax,4
  1142.     jnz  hnog2
  1143.     mov  [text00+LLL*6+28],dword 'SEC.'
  1144.     mov  [text00+LLL*6+32],dword 'SLAV'
  1145.     mov  [text00+LLL*6+36],dword 'E   '
  1146.   hnog2:
  1147.  
  1148.  
  1149.     mov  eax,[f32p]        ; FAT32 PARTITION
  1150.     add  al,48
  1151.     mov  [text00+LLL*14+28],al
  1152.  
  1153.     mov  eax,[sound_dma]      ; SOUND DMA
  1154.     add  eax,48
  1155.     mov  [text00+LLL*16+28],al
  1156.  
  1157.     mov  eax,[lba_read]
  1158.     call onoff          ; LBA READ
  1159.     mov  [text00+LLL*18+28],ebx
  1160.  
  1161.     mov  eax,[pci_acc]
  1162.     call onoff          ; PCI ACCESS
  1163.     mov  [text00+LLL*20+28],ebx
  1164.  
  1165.     mov  eax,[mouse_speed]      ; MOUSE SPEED
  1166.     add  al,48
  1167.     mov  [text00+LLL*26+28],al
  1168.  
  1169.     mov  eax,[mouse_delay]
  1170.     mov  esi,text00+LLL*28+32
  1171.     call hexconvert           ; MOUSE DELAY
  1172.  
  1173.     mov  eax,13
  1174.     mov  ebx,175*65536+85
  1175.     mov  ecx,40*65536+245
  1176.     mov  edx,0x80111199-19
  1177.     int  0x40
  1178.  
  1179.     mov  edx,text00
  1180.     mov  ebx,10*65536+45
  1181.     mov  eax,4
  1182.     mov  ecx,0xffffff
  1183.     mov  esi,LLL
  1184.   newline:
  1185.     int  0x40
  1186.     add  ebx,8
  1187.     add  edx,LLL
  1188.     cmp  [edx],byte 'x'
  1189.     jnz  newline
  1190.  
  1191.     popa
  1192.     ret
  1193.  
  1194.   drawtime:
  1195.     mov  ax,[time]      ;hours 22
  1196.     mov  cl,1
  1197.     call unpacktime
  1198.     mov  [text00+LLL*22+28],word bx
  1199.     mov  al,ah          ;minutes
  1200.     inc  cl
  1201.     call unpacktime
  1202.     mov  [text00+LLL*22+31],word bx
  1203.     mov  eax,[date]
  1204.     mov  ch,3
  1205.     call unpackdate
  1206.     mov  [text00+LLL*24+34],word bx    ;year   24
  1207.     mov  al,ah
  1208.     mov  ch,1
  1209.     call unpackdate
  1210.     mov  [text00+LLL*24+28],word bx    ;month
  1211.     bswap eax
  1212.     mov  al,ah
  1213.     inc  ch
  1214.     call unpackdate
  1215.     mov  [text00+LLL*24+31],word bx    ;day
  1216.  
  1217.     mov  eax,13
  1218.     mov  ebx,175*65536+85
  1219.     mov  ecx,40*65536+245
  1220.     mov  edx,0x80111199-19
  1221.     int  0x40
  1222.  
  1223.     mov  edx,text00
  1224.     mov  ebx,10*65536+45
  1225.     mov  eax,4
  1226.     mov  ecx,0xffffff
  1227.     mov  esi,LLL
  1228.   newline1:
  1229.     int  0x40
  1230.     add  ebx,8
  1231.     add  edx,LLL
  1232.     cmp  [edx],byte 'x'
  1233.     jnz  newline1
  1234.     ret
  1235.  
  1236.   unpacktime:
  1237.     cmp  byte [blinkpar],cl    ;translate packed number to ascii
  1238.     jne  unpack1
  1239.   chkblink:
  1240.     bt dword [blinkpar],16
  1241.     jnc  unpack1
  1242.     xor  bx,bx
  1243.     ret
  1244.   unpackdate:
  1245.     cmp  byte [blinkpar+1],ch
  1246.     je         chkblink
  1247.   unpack1:
  1248.     xor  bx,bx
  1249.     mov  bh,al
  1250.     mov  bl,al
  1251.     and  bh,0x0f
  1252.     shr  bl,4
  1253.     add  bx,0x3030
  1254.     ret
  1255.  
  1256.   hexconvert:        ;converting dec to hex in ascii
  1257.     xor  ebx,ebx
  1258.     mov  bl,al
  1259.     and  bl,15
  1260.     add  ebx,hex
  1261.     mov  cl,[ebx]
  1262.     mov  [esi],cl
  1263.     shr  eax,4
  1264.     xor  ebx,ebx
  1265.     mov  bl,al
  1266.     and  bl,15
  1267.     add  ebx,hex
  1268.     mov  cl,[ebx]
  1269.     dec  esi
  1270.     mov  [esi],cl
  1271.     shr  eax,4
  1272.     xor  ebx,ebx
  1273.     mov  bl,al
  1274.     and  bl,15
  1275.     add  ebx,hex
  1276.     mov  cl,[ebx]
  1277.     dec  esi
  1278.     mov  [esi],cl
  1279.     ret
  1280.  
  1281. onoff:
  1282.     cmp [syslang],4
  1283.     jne norus1
  1284.     mov ebx,'„€  '
  1285.     cmp eax,1
  1286.     je        exitsub
  1287.     mov ebx,'…’ '
  1288.     ret
  1289.  norus1:
  1290.     mov ebx,'ON  '
  1291.     cmp eax,1
  1292.     je        exitsub
  1293.     mov ebx,'OFF '
  1294.  exitsub:
  1295.     ret
  1296.  
  1297. _midibase:
  1298.     mov  eax,21
  1299.     mov  ebx,1
  1300.     mov  ecx,[midibase]
  1301.     int  0x40
  1302.  ret
  1303.  
  1304. _cdbase:
  1305.     mov  eax,21
  1306.     mov  ebx,3
  1307.     mov  ecx,[cdbase]
  1308.     int  0x40
  1309.  ret
  1310.  
  1311. _hdbase:
  1312.     mov  eax,21
  1313.     mov  ebx,7
  1314.     mov  ecx,[hdbase]
  1315.     int  0x40
  1316.     ret
  1317.  
  1318. _sound_dma:
  1319.     mov  eax,21
  1320.     mov  ebx,10
  1321.     mov  ecx,[sound_dma]
  1322.     int  0x40
  1323.     ret
  1324.  
  1325. _lba_read:
  1326.     mov  eax,21
  1327.     mov  ebx,11
  1328.     mov  ecx,[lba_read]
  1329.     int  0x40
  1330.     ret
  1331.  
  1332. _pci_acc:
  1333.     mov  eax,21
  1334.     mov  ebx,12
  1335.     mov  ecx,[pci_acc]
  1336.     int  0x40
  1337.     ret
  1338.  
  1339. _f32p:
  1340.     mov  eax,21
  1341.     mov  ebx,8
  1342.     mov  ecx,[f32p]
  1343.     int  0x40
  1344.  ret
  1345.  
  1346. _sb16:
  1347.     mov  eax,21
  1348.     mov  ebx,4
  1349.     mov  ecx,[sb16]
  1350.     int  0x40
  1351.     ret
  1352.  
  1353. _wssp:
  1354.     mov  eax,21
  1355.     mov  ebx,6
  1356.     mov  ecx,[wssp]
  1357.     int  0x40
  1358.  ret
  1359.  
  1360. _syslang:
  1361.     mov  eax,21
  1362.     mov  ebx,5
  1363.     mov  ecx,[syslang]
  1364.     int  0x40
  1365.  ret
  1366.  
  1367. _mouse_speed:
  1368.     mov  eax,18
  1369.     mov  ebx,19
  1370.     mov  ecx,1
  1371.     mov  edx,[mouse_speed]
  1372.     int  0x40
  1373.  ret
  1374.  
  1375. _mouse_delay:
  1376.     mov  eax,18
  1377.     mov  ebx,19
  1378.     mov  ecx,3
  1379.     mov  edx,[mouse_delay]
  1380.     int  0x40
  1381.  ret
  1382.  
  1383. loadtxt:
  1384.     cld
  1385.     mov  edi,text00
  1386.     mov  ecx,488 ;28
  1387.     cmp  [syslang],4
  1388.     jne  norus
  1389.     mov  esi,textrus
  1390.     jmp  sload
  1391.   norus:
  1392.     mov  esi,texteng
  1393.   sload:
  1394.     rep  movsd
  1395.     ret
  1396.  
  1397. cleantxt:
  1398.     xor  eax,eax
  1399.     mov  ecx,428
  1400.     cld
  1401.     mov  edi,text00
  1402.     rep stosd
  1403.     mov  [text00+1711],byte 'x'
  1404.     ret
  1405.  
  1406. settime:
  1407.     mov  dx,0x70
  1408.     call startstopclk
  1409.     dec  dx
  1410.     mov  al,2           ;set minutes
  1411.     out  dx,al
  1412.     inc  dx
  1413.     mov  al,byte [time+1]
  1414.     out  dx,al
  1415.     dec  dx
  1416.     mov  al,4           ;set hours
  1417.     out  dx,al
  1418.     inc  dx
  1419.     mov  al,byte [time]
  1420.     out  dx,al
  1421.     dec  dx
  1422.     mov  al,7           ;set day
  1423.     out  dx,al
  1424.     inc  dx
  1425.     mov  al,byte [date+2]
  1426.     out  dx,al
  1427.     dec  dx
  1428.     mov  al,8           ;set month
  1429.     out  dx,al
  1430.     inc  dx
  1431.     mov  al,byte [date+1]
  1432.     out  dx,al
  1433.     dec  dx
  1434.     mov  al,9           ;set year
  1435.     out  dx,al
  1436.     inc  dx
  1437.     mov  al,byte [date]
  1438.     out  dx,al
  1439.     dec  dx
  1440.     call startstopclk
  1441.     ret
  1442.  
  1443. startstopclk:
  1444.     mov  al,0x0b
  1445.     out  dx,al
  1446.     inc  dx
  1447.     in         al,dx
  1448.     btc  ax,7
  1449.     out  dx,al
  1450.     ret
  1451.  
  1452. ; DATA AREA
  1453. count:          db 0x0
  1454. blinkpar: dd 0x0
  1455. time:        dw 0x0
  1456. date:        dd 0x0
  1457.  
  1458. textrus:
  1459.  
  1460.     db ' §  MIDI ROLAND MPU-401  : 0x320           - +   à¨¬¥­¨âì'
  1461.     db '                                                           '
  1462.     db ' §  SoundBlaster 16      : 0x240           - +   à¨¬¥­¨âì'
  1463.     db '                                                           '
  1464.     db ' §  CD-ROM               : PRI.SLAVE       - +   à¨¬¥­¨âì'
  1465.     db '                                                           '
  1466.     db ' §  †„-1                 : PRI.MASTER      - +   à¨¬¥­¨âì'
  1467.     db '                                                           '
  1468.     db 'Ÿ§ëª á¨áâ¥¬ë              : ENGLISH         - +   à¨¬¥­¨âì'
  1469.     db '                                                           '
  1470.     db ' áª« ¤ª  ª« ¢¨ âãàë      : ENGLISH         - +   à¨¬¥­¨âì'
  1471.     db '                                                           '
  1472.     db ' §  WSS                  : 0x200           - +   à¨¬¥­¨âì'
  1473.     db '                                                           '
  1474.     db ' §¤¥« FAT32 ­  †„-1      : 1               - +   à¨¬¥­¨âì'
  1475.     db '                                                           '
  1476.     db '‡¢ãª®¢®© ª ­ « DMA        : 1               - +   à¨¬¥­¨âì'
  1477.     db '                                                           '
  1478.     db '‚ª«îç¨âì LBA              : OFF             - +   à¨¬¥­¨âì'
  1479.     db '                                                           '
  1480.     db '„®áâ㯠ª 設¥ PCI         : OFF             - +   à¨¬¥­¨âì'
  1481.     db '                                                           '
  1482.     db '‘¨á⥬­®¥ ¢à¥¬ï           :  0:00           - +     ‚ë¡®à  '
  1483.     db '                                                           '
  1484.     db '‘¨á⥬­ ï ¤ â  (¬,¤,£)    : 00/00/00        - +     ‚ë¡®à  '
  1485.     db '                                                           '
  1486.     db '‘ª®à®áâì ªãàá®à  ¬ëè¨     : 1               - +   à¨¬¥­¨âì'
  1487.     db '                                                           '
  1488.     db '‡ ¤¥à¦ª  ã᪮७¨ï ¬ëè¨   : 0x00a           - +   à¨¬¥­¨âì'
  1489.     db '                                                           '
  1490.     db '‚ˆŒ€ˆ…:                                    à¨¬¥­¨âì ¢á¥ '
  1491.     db 'ˆ‘Ž‹œ‡“‰’… „Ž‘’“ Š FAT ‘ Ž‘’ŽŽ†Ž‘’œž!                  '
  1492.     db '… ‡€“„œ’… ‘Ž•€ˆ’œ €‘’Ž‰Šˆ              ‘®åà ­¨âì ¢á¥ '
  1493.     db 'x'
  1494.  
  1495. texteng:
  1496.  
  1497.     db 'MIDI: ROLAND MPU-401 BASE : 0x320           - +     APPLY  '
  1498.     db '                                                           '
  1499.     db 'SOUND: SB16 BASE          : 0x240           - +     APPLY  '
  1500.     db '                                                           '
  1501.     db 'CD-ROM BASE               : PRI.SLAVE       - +     APPLY  '
  1502.     db '                                                           '
  1503.     db 'HARDDISK-1 BASE           : PRI.MASTER      - +     APPLY  '
  1504.     db '                                                           '
  1505.     db 'SYSTEM LANGUAGE           : ENGLISH         - +     APPLY  '
  1506.     db '                                                           '
  1507.     db 'KEYBOARD LAYOUT           : ENGLISH         - +     APPLY  '
  1508.     db '                                                           '
  1509.     db 'WINDOWS SOUND SYSTEM BASE : 0x200           - +     APPLY  '
  1510.     db '                                                           '
  1511.     db 'FAT32-1 PARTITION IN HD-1 : 1               - +     APPLY  '
  1512.     db '                                                           '
  1513.     db 'SOUND DMA CHANNEL         : 1               - +     APPLY  '
  1514.     db '                                                           '
  1515.     db 'LBA READ ENABLED          : OFF             - +     APPLY  '
  1516.     db '                                                           '
  1517.     db 'PCI ACCESS FOR APPL.      : OFF             - +     APPLY  '
  1518.     db '                                                           '
  1519.     db 'SYSTEM TIME               :  0:00           - +    SELECT  '
  1520.     db '                                                           '
  1521.     db 'SYSTEM DATE (M,D,Y)       : 00/00/00        - +    SELECT  '
  1522.     db '                                                           '
  1523.     db 'Mouse pointer speed       : 1               - +     APPLY  '
  1524.     db '                                                           '
  1525.     db 'Mouse pointer delay       : 0x00a           - +     APPLY  '
  1526.     db '                                                           '
  1527.     db 'NOTE:                                           APPLY ALL  '
  1528.     db 'TEST FAT FUNCTIONS WITH EXTREME CARE                       '
  1529.     db 'SAVE YOUR SETTINGS BEFORE QUIT MENUET           SAVE ALL   '
  1530.     db 'x'
  1531.  
  1532. labelt:
  1533.     db         '€‘’Ž‰Š€ “‘’Ž‰‘’‚ DEVICE SETUP       '
  1534.  
  1535. hex db         '0123456789ABCDEF'
  1536.  
  1537. alt_general:
  1538.  
  1539. ;     db   ' ',27
  1540. ;     db   ' @ $  {[]}\ ',8,9
  1541. ;     db   '            ',13
  1542. ;     db   '             ',0,'           ',0,'4',0,' '
  1543. ;     db   '             ',180,178,184,'6',176,'7'
  1544. ;     db   179,'8',181,177,183,185,182
  1545. ;     db   'ABCD',255,'FGHIJKLMNOPQRSTUVWXYZ'
  1546. ;     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1547. ;     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1548. ;     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1549.  
  1550.  
  1551. en_keymap:
  1552.  
  1553.      db   '6',27
  1554.      db   '1234567890-=',8,9
  1555.      db   'qwertyuiop[]',13
  1556.      db   '~asdfghjkl;',39,96,0,'\zxcvbnm,./',0,'45 '
  1557.      db   '@234567890123',180,178,184,'6',176,'7'
  1558.      db   179,'8',181,177,183,185,182
  1559.      db   'AB<D',255,'FGHIJKLMNOPQRSTUVWXYZ'
  1560.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1561.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1562.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1563.  
  1564.  
  1565. en_keymap_shift:
  1566.  
  1567.      db   '6',27
  1568.      db   '!@#$%^&*()_+',8,9
  1569.      db   'QWERTYUIOP{}',13
  1570.      db   '~ASDFGHJKL:"~',0,'|ZXCVBNM<>?',0,'45 '
  1571.      db   '@234567890123',180,178,184,'6',176,'7'
  1572.      db   179,'8',181,177,183,185,182
  1573.      db   'AB>D',255,'FGHIJKLMNOPQRSTUVWXYZ'
  1574.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1575.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1576.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1577.  
  1578.  
  1579. fr_keymap:
  1580.  
  1581.      db   '6',27
  1582.      db   '&Ž"',39,'(-_“)=',8,9
  1583.      db   'azertyuiop^$',13
  1584.      db   '~qsdfghjklm’',0,0,'*wxcvbn,;:!',0,'45 '
  1585.      db   '@234567890123',180,178,184,'6',176,'7'
  1586.      db   179,'8',181,177,183,185,182
  1587.      db   'AB<D',255,'FGHIJKLMNOPQRSTUVWXYZ'
  1588.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1589.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1590.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1591.  
  1592.  
  1593.  
  1594. fr_keymap_shift:
  1595.  
  1596.  
  1597.      db   '6',27
  1598.      db   '1234567890+',8,9
  1599.      db   'AZERTYUIOP•”',13
  1600.      db   '~QSDFGHJKLM%',0,'–WXCVBN?./',0,'45 '
  1601.      db   '@234567890123',180,178,184,'6',176,'7'
  1602.      db   179,'8',181,177,183,185,182
  1603.      db   'AB>D',255,'FGHIJKLMNOPQRSTUVWXYZ'
  1604.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1605.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1606.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1607.  
  1608.  
  1609. fr_keymap_alt_gr:
  1610.  
  1611.  
  1612.      db   '6',27
  1613.      db   28,'~#{[|˜\^@]}',8,9
  1614.      db   'azertyuiop^$',13
  1615.      db   '~qsdfghjklm’',0,0,'*wxcvbn,;:!',0,'45 '
  1616.      db   '@234567890123',180,178,184,'6',176,'7'
  1617.      db   179,'8',181,177,183,185,182
  1618.      db   'AB<D',255,'FGHIJKLMNOPQRSTUVWXYZ'
  1619.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1620.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1621.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1622.  
  1623.  
  1624.  
  1625.  
  1626. fi_keymap:
  1627.  
  1628.      db   '6',27
  1629.      db   '1234567890+[',8,9
  1630.      db   'qwertyuiop',192,'~',13
  1631.      db   '~asdfghjkl',194,193,'1',0,39,'zxcvbnm,.-',0,'45 '
  1632.      db   '@234567890123',180,178,184,'6',176,'7'
  1633.      db   179,'8',181,177,183,185,182
  1634.      db   'AB<D',255,'FGHIJKLMNOPQRSTUVWXYZ'
  1635.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1636.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1637.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1638.  
  1639.  
  1640. fi_keymap_shift:
  1641.  
  1642.      db   '6',27
  1643.      db   '!"#%&/()=?]',8,9
  1644.      db   'QWERTYUIOP',200,'~',13
  1645.      db   '~ASDFGHJKL',202,201,'1',0,'*ZXCVBNM;:_',0,'45 '
  1646.      db   '@234567890123',180,178,184,'6',176,'7'
  1647.      db   179,'8',181,177,183,185,182
  1648.      db   'AB>D',255,'FGHIJKLMNOPQRSTUVWXYZ'
  1649.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1650.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1651.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1652.  
  1653.  
  1654.  
  1655. ge_keymap:
  1656.  
  1657.      db   '6',27
  1658.      db   '1234567890?[',8,9
  1659.      db   'qwertzuiop',203,'~',13
  1660.      db   '~asdfghjkl',194,193,'1',0,39,'yxcvbnm,.-',0,'45 '
  1661.      db   '@234567890123',180,178,184,'6',176,'7'
  1662.      db   179,'8',181,177,183,185,182
  1663.      db   'AB<D',255,'FGHIJKLMNOPQRSTUVWXYZ'
  1664.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1665.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1666.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1667.  
  1668.  
  1669. ge_keymap_shift:
  1670.  
  1671.      db   '6',27
  1672.      db   '!"#$%&/()=',197,']',8,9
  1673.      db   'QWERTZUIOP',195,'~',13
  1674.      db   '~ASDFGHJKL',202,201,'1',0,'*YXCVBNM;:_',0,'45 '
  1675.      db   '@234567890123',180,178,184,'6',176,'7'
  1676.      db   179,'8',181,177,183,185,182
  1677.      db   'AB>D',255,'FGHIJKLMNOPQRSTUVWXYZ'
  1678.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1679.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1680.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1681.  
  1682. ru_keymap:
  1683.  
  1684.      db   '6',27
  1685.      db   '1234567890-=',8,9
  1686.      db   '©æ㪥­£èé§åê',13
  1687.      db   0,"ä뢠¯à®«¤¦í"
  1688.      db   0xf1, '-/'
  1689.      db   "ïçᬨâì¡î",'.-','45 '
  1690.      db   '@234567890123',180,178,184,'6',176,'7'
  1691.      db   179,'8',181,177,183,185,182
  1692.      db   'AB<D',255,'FGHIJKLMNOPQRSTUVWXYZ'
  1693.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1694.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1695.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1696.  
  1697.  
  1698.  
  1699. ru_keymap_shift:
  1700.  
  1701.      db   '6',27
  1702.      db   '!"N;%:?*()_+',8,0
  1703.      db   "‰–“Š…ƒ˜™‡•š",13
  1704.      db   0,"”›‚€Ž‹„†"
  1705.      db   0xf0, '-\'
  1706.      db   "Ÿ—‘Œˆ’œž",',-','45 '
  1707.      db   '@234567890123',180,178,184,'6',176,'7'
  1708.      db   179,'8',181,177,183,185,182
  1709.      db   'AB>D',255,'FGHIJKLMNOPQRSTUVWXYZ'
  1710.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1711.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1712.      db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1713.  
  1714. read_fileinfo:
  1715.        dd 0
  1716.        dd 0
  1717.        dd 0
  1718.        dd 56
  1719.        dd keyboard
  1720.        db 0
  1721.        dd file_name
  1722.  
  1723. save_fileinfo:
  1724.        dd 2
  1725.        dd 0
  1726.        dd 0
  1727.        dd 56
  1728.        dd keyboard
  1729. file_name:   db '/rd/1/setup.dat',0
  1730.  
  1731. I_PARAM   dd 0
  1732.  
  1733. keyboard     dd 0x0
  1734. midibase     dd 0x320
  1735. cdbase         dd 0x2
  1736. sb16         dd 0x220
  1737. syslang      dd 0x1
  1738. wss         dd 0x1
  1739. wssp         dd 0x0
  1740. hdbase         dd 0x1
  1741. f32p         dd 0x1
  1742. sound_dma    dd 0x1
  1743. lba_read     dd 0x1
  1744. pci_acc      dd 0x1
  1745. mouse_speed  dd 0x3
  1746. mouse_delay  dd 0x10
  1747. text00:
  1748.  
  1749. I_END:
  1750. table_area:
  1751.