Subversion Repositories Kolibri OS

Rev

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