Subversion Repositories Kolibri OS

Rev

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