Subversion Repositories Kolibri OS

Rev

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