home *** CD-ROM | disk | FTP | other *** search
/ Borland Programmer's Resource / Borland_Programmers_Resource_CD_1995.iso / fonts / cw_src / altdll / vk_decod.asm < prev    next >
Assembly Source File  |  1995-05-18  |  6KB  |  209 lines

  1.         include    vkwin.inc
  2.         include    vkoem.inc
  3. memM            =       1
  4. ?WIN        =    0
  5. ?PLM        =    0
  6.         include    cmacros.inc
  7.         sBegin    DATA
  8.         public    _CTable
  9. _CTable        label    byte
  10. CyrTable    label    byte
  11.     ; AsciiTable
  12.     DB    VK_CANCEL ,    03h,    03h,    57
  13.     DB    VK_BACK   ,    08h,    08h,    57
  14.     DB    VK_TAB    ,    09h,    -1,       57
  15.     DB    VK_RETURN ,    0dh,    0dh,    57
  16.     DB    VK_ESCAPE ,    01bh,    01bh,    57
  17.     DB    VK_SPACE  ,    ' ',      ' ',      57
  18.     DB    VK_EXECUTE,    0dh,    0dh,    57
  19.     DB    VK_0      ,    '0',      ')',      11
  20.     DB    VK_1      ,    '1',      '!',       2
  21.     DB    VK_2      ,    '2',      '"',       3
  22.     DB    VK_3      ,    '3',      167,       4
  23.     DB    VK_4      ,    '4',      '$',       5
  24.     DB    VK_5      ,    '5',      ':',     6
  25.     DB    VK_6      ,    '6',      ',',       7
  26.     DB    VK_7      ,    '7',      '.',       8
  27.     DB    VK_8      ,    '8',      ';',       9
  28.     DB    VK_9      ,    '9',      '(',      10
  29.     DB    VK_A      ,    0f4h,      0d4h,      30
  30.     DB    VK_B      ,    0e8h,      0c8h,      48
  31.     DB    VK_C      ,    0f1h,      0d1h,      46
  32.     DB    VK_D      ,    0e2h,      0c2h,      32
  33.     DB    VK_E      ,    0f3h,      0d3h,      18
  34.     DB    VK_F      ,    0e0h,      0c0h,      33
  35.     DB    VK_G      ,    0efh,      0cfh,      34
  36.     DB    VK_H      ,    0f0h,      0d0h,      35
  37.     DB    VK_I      ,    0f8h,      0d8h,      23
  38.     DB    VK_J      ,    0eeh,      0ceh,      36
  39.     DB    VK_K      ,    0ebh,      0cbh,      37
  40.     DB    VK_L      ,    0e4h,      0c4h,      38
  41.     DB    VK_M      ,    0fch,      0dch,      50
  42.     DB    VK_N      ,    0f2h,      0d2h,      49
  43.     DB    VK_O      ,    0f9h,      0d9h,      24
  44.     DB    VK_P      ,    0e7h,      0c7h,      25
  45.     DB    VK_Q      ,    0e9h,      0c9h,      16
  46.     DB    VK_R      ,    0eah,      0cah,      19
  47.     DB    VK_S      ,    0fbh,      0dbh,      31
  48.     DB    VK_T      ,    0e5h,      0c5h,      20
  49.     DB    VK_U      ,    0e3h,      0c3h,      22
  50.     DB    VK_V      ,    0ech,      0cch,      47
  51.     DB    VK_W      ,    0f6h,      0d6h,      17
  52.     DB    VK_X      ,    0f7h,      0d7h,      45
  53.     DB    VK_Y      ,    0edh,      0cdh,      21
  54.     DB    VK_Z      ,    0ffh,      0dfh,      44
  55.     DB    VK_NUMPAD0,    '0',      '0',      57
  56.     DB    VK_NUMPAD1,    '1',      '1',      57
  57.     DB    VK_NUMPAD2,    '2',      '2',      57
  58.     DB    VK_NUMPAD3,    '3',      '3',      57
  59.     DB    VK_NUMPAD4,    '4',      '4',      57
  60.     DB    VK_NUMPAD5,    '5',      '5',      57
  61.     DB    VK_NUMPAD6,    '6',      '6',      57
  62.     DB    VK_NUMPAD7,    '7',      '7',      57
  63.     DB    VK_NUMPAD8,    '8',      '8',      57
  64.     DB    VK_NUMPAD9,    '9',      '9',      57
  65.     DB    VK_MULTIPLY,    '*',      '*',      57
  66.     DB    VK_SUBTRACT,    '-',      '-',      57
  67.     DB    VK_ADD    ,    '+',      '+',      57
  68.         DB      VK_DECIMAL,     0feh,   0deh,   52      ; 57
  69.     DB    VK_DIVIDE ,    '/',      '/',      57
  70.         DB      VK_OEM_1    ,   0e6h,   0c6h,   39      ; 57
  71.     DB    VK_OEM_2    ,    '/',      '?',      53
  72.         DB      VK_OEM_7    ,   0fdh,   0ddh,   40      ; 57
  73.         DB      VK_OEM_4    ,   0f5h,   0d5h,   26      ; 57
  74.     DB    VK_OEM_5    ,    '\',      '|',      43
  75.         DB      VK_OEM_6    ,   0fah,   0dah,   27      ; 57
  76. ;    DB    VK_OEM_3    ,    '`',      '~',      41
  77.      DB    VK_OEM_3    ,    191,      161,      57
  78.     DB    VK_OEM_8    ,    -1,       -1,       13
  79.     DB    VK_OEM_PLUS ,    '=',      '+',      51
  80.     DB    VK_OEM_COMMA,    0e1h,      0c1h,      12
  81.     DB    VK_OEM_MINUS,    '-',      '_',      52
  82.     DB    VK_OEM_PERIOD,    0feh,      0deh,      57
  83.     DB    VK_OEM_102,    '/',       '?',       0    ; -1
  84.     DB    -1, '/', '?', -1
  85. CyrTableEnd    equ    $-CyrTable
  86. CyrCapitalTable label    byte
  87.  
  88.     DB    VK_DECIMAL,    0deh        ; ε
  89.     DB    VK_OEM_1    ,    0c6h        ; ª
  90.     DB    VK_OEM_7    ,    0ddh        ; φ
  91.     DB    VK_OEM_4    ,    0d5h        ; σ
  92.     DB    VK_OEM_6    ,    0dah        ; Ω
  93.     DB    VK_OEM_COMMA,    0c1h          ; í
  94.     DB    VK_OEM_PERIOD,    0deh        ; ε
  95.  
  96. CyrCapitalTableEnd    label byte
  97.  
  98.         sEnd    DATA
  99.  
  100.         sBegin    CODE
  101.         assumes    cs, CODE
  102.         assumes    ds, DATA
  103.  ;
  104.         cProc    CyrLoad, <PUBLIC>
  105.         ParmW    d
  106.         ParmW    i
  107.         cBegin
  108.         mov    bx, offset CyrTable
  109.         add    bx, i
  110.         mov    al, byte ptr d
  111.         mov    [bx], al
  112.         cEnd
  113. ;
  114. ;        cProc    CyrTrs, <PUBLIC>
  115. ;        parmW    vk_key
  116. ;        parmW    shift
  117. ;        parmW    caps
  118. ;        cBegin
  119. ;        mov    bx, vk_key
  120. ;        mov    si, offset CyrTable
  121. ;find_vk    :       mov    al, [si]
  122. ;        cmp    al, -1
  123. ;        je    find_ok
  124. ;        cmp    al, bl
  125. ;        je    find_ok
  126. ;        add    si, 4
  127. ;        jmp    short find_vk
  128. ;find_ok    :    cmp    shift, 0        ; is shift key pressed ?
  129. ;        je    nosh
  130. ;             cmp    caps, 0            ; is caps key toggled ?
  131. ;        je    shifts
  132. ;        jmp    short capssh
  133. ;nosh    :    cmp    caps, 0
  134. ;        je    normal
  135. ;        jmp    capss
  136. ;normal    :    jmp    short CyrTrsDone
  137. ;shifts    :    inc    si
  138. ;        jmp    short CyrTrsDone
  139. ;capssh    :    cmp    bl, VK_0
  140. ;        jl    noact
  141. ;        cmp    bl, VK_9
  142. ;        jg    noact
  143. ;        inc    si
  144. ;        jmp    short CyrTrsDone
  145. ;noact    :       jmp    short CyrTrsDone
  146. ;capss    :    cmp    bl, VK_0
  147. ;        jl    noactc
  148. ;        cmp    bl, VK_9
  149. ;        jg    noactc
  150. ;        jmp    short CyrTrsDone
  151. ;noactc    :    inc    si
  152. ;CyrTrsDone:    inc    si
  153. ;        mov    al, byte ptr [si]
  154. ;        xor    ah, ah
  155. ;        cEnd
  156.         ;
  157.         ;    New TRS function:
  158.         ;
  159.         cProc    CyrNewTrs, <PUBLIC>
  160.         parmW    vk_key
  161.         parmW    shift
  162.         parmW    caps
  163.         cBegin
  164.         mov    bl, BYTE PTR vk_key
  165.         mov    si, offset CyrTable
  166.         inc    si
  167.         inc    si
  168.         inc    si
  169. find_vk    :       mov    al, BYTE PTR [si]
  170.                 cmp     al, 0
  171.         je    find_ok
  172.         cmp    al, bl
  173.         je    find_ok
  174.         add    si, 4
  175.         jmp    short find_vk
  176. find_ok    :    dec    si
  177.         dec    si
  178.         dec    si
  179.         cmp    shift, 0        ; is shift key pressed ?
  180.         je    nosh
  181.              cmp    caps, 0            ; is caps key toggled ?
  182.         je    shifts
  183.         jmp    short capssh
  184. nosh    :    cmp    caps, 0
  185.         je    normal
  186.         jmp    capss
  187. normal    :    jmp    short CyrTrsDone
  188. shifts    :    inc    si
  189.                 jmp     short CyrTrsDone        ;  DMY - Mufel !
  190. capssh  :       cmp     bl, 2                   ;  Scan code of '1'
  191.                 jl      noact                   ;
  192.                 cmp     bl, 11                  ;  Scan code of '0'
  193.         jg    noact
  194.         inc    si
  195.         jmp    short CyrTrsDone
  196. noact   :       jmp     short CyrTrsDone        ;  DMY - Mufel !   
  197. capss   :       cmp     bl, 2                   ;  Scan code of '1'
  198.                 jl      noactc                  ;                  
  199.                 cmp     bl, 11                  ;  Scan code of '0'
  200.                 jg      noactc                                     
  201.         jmp    short CyrTrsDone
  202. noactc    :    inc    si
  203. CyrTrsDone:    inc    si
  204.         mov    al, byte ptr [si]
  205.         xor    ah, ah
  206.         cEnd
  207.         sEnd    CODE
  208.         end
  209.