Subversion Repositories Kolibri OS

Rev

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