Subversion Repositories Kolibri OS

Rev

Rev 870 | Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. load_ini:
  2.     mov    [point2],16h
  3.     mcall  70,get_ini
  4.     mov    al,[inicont]
  5.     sub    al,30h
  6.     mov    [firini],al
  7.     mov    [point2],32h
  8.     mcall  70,get_ini
  9.     mov    al,[inicont]
  10.     sub    al,30h
  11.     mov    [lngcrc1],al
  12.     mov    [point2],42h
  13.     mcall  70,get_ini
  14.     mov    al,[inicont]
  15.     sub    al,30h
  16.     mov    [lngcrc2],al
  17.     mov    [point2],52h
  18.     mcall  70,get_ini
  19.     mov    al,[inicont]
  20.     sub    al,30h
  21.     mov    [lngcrc3],al
  22.     mov    [point2],06eh
  23.     mcall  70,get_ini
  24.     mov    al,[inicont]
  25.     sub    al,30h
  26.     mov    [altlng1],al
  27.     mov    [point2],07eh
  28.     mcall  70,get_ini
  29.     mov    al,[inicont]
  30.     sub    al,30h
  31.     mov    [altlng2],al
  32.     mov    [point2],08eh
  33.     mcall  70,get_ini
  34.     mov    al,[inicont]
  35.     sub    al,30h
  36.     mov    [altlng3],al
  37.     mov    [point2],09eh
  38.     mcall  70,get_ini
  39.     mov    al,[inicont]
  40.     sub    al,30h
  41.     mov    [altlng4],al
  42.     mov    [point2],0aeh
  43.     mcall  70,get_ini
  44.     mov    al,[inicont]
  45.     sub    al,30h
  46.     mov    [altlng5],al
  47.     mov    [point2],0beh
  48.     mcall  70,get_ini
  49.     mov    al,[inicont]
  50.     sub    al,30h
  51.     mov    [altlng6],al
  52.     mov    [point2],0ceh
  53.     mcall  70,get_ini
  54.     mov    al,[inicont]
  55.     sub    al,30h
  56.     mov    [altlng7],al
  57.     mov    [point2],0deh
  58.     mcall  70,get_ini
  59.     mov    al,[inicont]
  60.     sub    al,30h
  61.     mov    [altlng8],al
  62.     mov    [point2],0eeh
  63.     mcall  70,get_ini
  64.     mov    al,[inicont]
  65.     sub    al,30h
  66.     mov    [altlng9],al
  67.     mov    [point2],0feh
  68.     mcall  70,get_ini
  69.     mov    al,[inicont]
  70.     sub    al,30h
  71.     mov    [altlng0],al
  72.  
  73. ret
  74. fir_lng:
  75.     mov    al,[firini]
  76.     sub    al,1
  77.     mov    dx,384
  78.     mul    dx
  79.     mov    [point],eax
  80.     mcall  70,get_key
  81.     mov  eax,21
  82.     mov  ebx,2
  83.     mov  ecx,1
  84.     mov  edx,current_keymap
  85.     mcall
  86.     mov  eax,21
  87.     inc  ecx
  88.     mov  edx,current_keymap_shift
  89.     mcall
  90.     mov  eax,21
  91.     inc  ecx
  92.     mov  edx,current_keymap_alt
  93.     mcall
  94.     mov  eax,21
  95.     mov  ecx,9
  96.     movzx  edx,[firini]
  97.     mcall
  98. ret
  99. karu:
  100.     add  [key_r2],1
  101.     cmp  [key_r2],3
  102.     jb   .altes
  103.     mov  [key_r2],0
  104. .altes:
  105.     cmp  [key_r2],0
  106.     je   .klt_1
  107.     cmp  [key_r2],1
  108.     je   .klt_2
  109.     cmp  [key_r2],2
  110.     je   .klt_3
  111.     jmp  still
  112. .klt_1:
  113.     mov  al,[lngcrc1]
  114.     sub  al,1
  115.     mov  [key_r],al
  116.     jmp  alted
  117. .klt_2:
  118.     mov  al,[lngcrc2]
  119.     sub  al,1
  120.     mov  [key_r],al
  121.     jmp  alted
  122. .klt_3:
  123.     mov  al,[lngcrc3]
  124.     sub  al,1
  125.     mov  [key_r],al
  126.     jmp  alted
  127.     ret
  128. alter:
  129.     cmp  [key_r],0
  130.     je   .alt_1
  131.     cmp  [key_r],1
  132.     je   .alt_2
  133.     cmp  [key_r],2
  134.     je   .alt_3
  135.     cmp  [key_r],3
  136.     je   .alt_4
  137.     cmp  [key_r],4
  138.     je   .alt_5
  139.     cmp  [key_r],5
  140.     je   .alt_6
  141.     cmp  [key_r],6
  142.     je   .alt_7
  143. .alt_1:
  144.     mov  al,[altlng1]
  145.     cmp  al,0
  146.     je   .exit
  147.     sub  al,1
  148.     mov  [key_r],al
  149.     jmp  alted
  150.  
  151. .alt_2:
  152.     mov  al,[altlng2]
  153.     cmp  al,0
  154.     je   .exit
  155.     sub  al,1
  156.     mov  [key_r],al
  157.     jmp  alted
  158. .alt_3:
  159.     mov  al,[altlng3]
  160.     cmp  al,0
  161.     je   .exit
  162.     sub  al,1
  163.     mov  [key_r],al
  164.     jmp  alted
  165. .alt_4:
  166.     mov  al,[altlng4]
  167.     cmp  al,0
  168.     je   .exit
  169.     sub  al,1
  170.     mov  [key_r],al
  171.     jmp  alted
  172. .alt_5:
  173.     mov  al,[altlng5]
  174.     cmp  al,0
  175.     je   .exit
  176.     sub  al,1
  177.     mov  [key_r],al
  178.     jmp  alted
  179. .alt_6:
  180.     mov  al,[altlng6]
  181.     cmp  al,0
  182.     je   .exit
  183.     sub  al,1
  184.     mov  [key_r],al
  185.     jmp  alted
  186. .alt_7:
  187.     mov  al,[altlng7]
  188.     cmp  al,0
  189.     je   .exit
  190.     sub  al,1
  191.     mov  [key_r],al
  192.     jmp  alted
  193. .exit:
  194. ret
  195. alted:
  196.     cmp  [key_r],0
  197.     je   alt_1
  198.     cmp  [key_r],1
  199.     je   alt_2
  200.     cmp  [key_r],2
  201.     je   alt_3
  202.     cmp  [key_r],3
  203.     je   alt_4
  204.     cmp  [key_r],4
  205.     je   alt_5
  206.     cmp  [key_r],5
  207.     je   alt_6
  208.     cmp  [key_r],6
  209.     je   alt_7
  210. ret
  211. alt_1:
  212.     mov    [point],0
  213.     mcall  70,get_key
  214.     mov  eax,21       ; english     0
  215.     mov  ebx,2
  216.     mov  ecx,1
  217.     mov  edx,current_keymap
  218.     mcall
  219.     mov  eax,21
  220.     inc  ecx
  221.     mov  edx,current_keymap_shift
  222.     mcall
  223.     mov  eax,21
  224.     mov  ecx,9
  225.     mov  edx,1  ; 1 - english
  226.     mcall
  227. ret
  228. alt_2:
  229.     mov    [point],1536
  230.     mcall  70,get_key
  231.     mov  eax,21       ; finnish
  232.     mov  ebx,2
  233.     mov  ecx,1
  234.     mov  edx,current_keymap
  235.     mcall
  236.     mov  eax,21
  237.     inc  ecx
  238.     mov  edx,current_keymap_shift
  239.     mcall
  240.     mov  eax,21
  241.     mov  ecx,9
  242.     mov  edx,2  ; 2 - finnish
  243.     mcall
  244. ret
  245. alt_3:
  246.     mov    [point],768
  247.     mcall  70,get_key
  248.     mov  eax,21       ; german
  249.     mov  ebx,2
  250.     mov  ecx,1
  251.     mov  edx,current_keymap
  252.     mcall
  253.     mov  eax,21
  254.     inc  ecx
  255.     mov  edx,current_keymap_shift
  256.     mcall
  257.     mov  eax,21
  258.     mov  ecx,9
  259.     mov  edx,3  ; 3 - german
  260.     mcall
  261. ret
  262. alt_4:
  263.     mov    [point],384
  264.     mcall  70,get_key
  265.     mov  eax,21       ; russian
  266.     mov  ebx,2
  267.     mov  ecx,1
  268.     mov  edx,current_keymap
  269.     mcall
  270.     mov  eax,21
  271.     inc  ecx
  272.     mov  edx,current_keymap_shift
  273.     mcall
  274.     mov  eax,21
  275.     mov  ecx,9
  276.     mov  edx,4  ; 4 - russian
  277.     mcall
  278. ret
  279. alt_5:
  280.     mov    [point],1152
  281.     mcall  70,get_key
  282.     mov  eax,21          ;french
  283.     mov  ebx,2
  284.     mov  ecx,1
  285.     mov  edx,current_keymap
  286.     mcall
  287.     mov  eax,21
  288.     inc  ecx
  289.     mov  edx,current_keymap_shift
  290.     mcall
  291.     mov  eax,21
  292.     inc  ecx
  293.     mov  edx,current_keymap_alt
  294.     mcall
  295.     mov  eax,21
  296.     mov  ecx,9
  297.     mov  edx,5  ; 5 - french
  298.     mcall
  299. ret
  300. alt_6:
  301.     mov    [point],1920
  302.     mcall  70,get_key
  303.     mov  eax,21       ; estonian
  304.     mov  ebx,2
  305.     mov  ecx,1
  306.     mov  edx,current_keymap
  307.     mcall
  308.     mov  eax,21
  309.     inc  ecx
  310.     mov  edx,current_keymap_shift
  311.     mcall
  312.     mov  eax,21
  313.     mov  ecx,9
  314.     mov  edx,6  ; 6 - estonian
  315.     mcall
  316. ret
  317. alt_7:
  318.     mov    [point],2304
  319.     mcall  70,get_key
  320.     mov  eax,21       ; ukrainian
  321.     mov  ebx,2
  322.     mov  ecx,1
  323.     mov  edx,current_keymap
  324.     mcall
  325.     mov  eax,21
  326.     inc  ecx
  327.     mov  edx,current_keymap_shift
  328.     mcall
  329.     mov  eax,21
  330.     mov  ecx,9
  331.     mov  edx,7  ; 7 - ukrainian
  332.     mcall
  333. ret
  334. current_keymap:
  335.           rb      128
  336. current_keymap_shift:
  337.           rb      128
  338. current_keymap_alt:
  339.           rb      128
  340. key_r     db      0
  341. key_r2    db      0
  342. key_r3    db      0
  343. inicont   db      0
  344. firini    db      0
  345. lngcrc1   db      0
  346. lngcrc2   db      0
  347. lngcrc3   db      0
  348. altlng1   db      0
  349. altlng2   db      0
  350. altlng3   db      0
  351. altlng4   db      0
  352. altlng5   db      0
  353. altlng6   db      0
  354. altlng7   db      0
  355. altlng8   db      0
  356. altlng9   db      0
  357. altlng0   db      0
  358. get_key:
  359.           dd      0
  360. point     dd      0
  361.           dd      0
  362.           dd      384
  363.           dd      current_keymap
  364.           db      0
  365.           dd      key_file
  366. get_ini:
  367.           dd      0
  368. point2    dd      0
  369.           dd      0
  370.           dd      1
  371.           dd      inicont
  372.           db      0
  373.           dd      ini_file
  374.  
  375. key_file: db      '/rd/1/keymap.key',0
  376. ini_file: db      '/rd/1/lang.ini',0