Subversion Repositories Kolibri OS

Rev

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

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