Subversion Repositories Kolibri OS

Rev

Rev 109 | Rev 275 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

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