Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1.  
  2. format MS COFF
  3.  
  4. public EXPORTS
  5.  
  6. section '.flat' code readable align 16
  7.  
  8. ; int version()
  9. version:
  10.         mov     eax, 1
  11.         ret
  12.  
  13.  
  14. ; void __stdcall dos2win (const char text_in[], char text_out[])
  15. dos2win:
  16.         push    ecx
  17.         push    edx
  18.  
  19.         mov     ecx, [esp+12]
  20.         mov     edx, [esp+16]
  21.  
  22.         pushad
  23.  
  24.         mov     ebx, d2w
  25.         mov     [charset], ebx
  26.         call    translate8
  27.  
  28.         popad
  29.  
  30.         pop     edx
  31.         pop     ecx
  32.         ret     8
  33.  
  34. ; void __stdcall win2dos (const char text_in[], char text_out[])
  35. win2dos:
  36.         push    ecx
  37.         push    edx
  38.  
  39.         mov     ecx, [esp+12]
  40.         mov     edx, [esp+16]
  41.  
  42.         pushad
  43.  
  44.         mov     ebx, w2d
  45.         mov     [charset], ebx
  46.         call    translate8
  47.  
  48.         popad
  49.  
  50.         pop     edx
  51.         pop     ecx
  52.         ret     8
  53.  
  54. ; void __stdcall koi2dos (const char text_in[], char text_out[])
  55. koi2dos:
  56.         push    ecx
  57.         push    edx
  58.  
  59.         mov     ecx, [esp+12]
  60.         mov     edx, [esp+16]
  61.  
  62.         pushad
  63.  
  64.         mov     ebx, k2d
  65.         mov     [charset], ebx
  66.         call    translate8
  67.  
  68.         popad
  69.  
  70.         pop     edx
  71.         pop     ecx
  72.         ret     8
  73.  
  74. translate8:
  75.         mov     byte al, [ecx]
  76.  
  77.         cmp     al, 0
  78.         je      _translate8_end
  79.  
  80.         cmp     al, 127
  81.         jb      _translate8_copy
  82.  
  83.         and     eax, 127
  84.         mov     ebx, [charset]
  85.         add     ebx, eax       
  86.  
  87.         mov     byte al, [ebx]
  88.  
  89.         _translate8_copy:
  90.                 mov     byte [edx], al
  91.  
  92.                 inc     edx
  93.                 inc     ecx
  94.  
  95.                 jmp     translate8
  96.  
  97.         _translate8_end:
  98.                 mov     byte [edx], 0
  99.                 ret
  100.  
  101.  
  102. align 16
  103. EXPORTS:
  104.                 dd      szVersion,      version
  105.                 dd      szDos2win,      dos2win
  106.                 dd      szWin2dos,      win2dos
  107.                 dd      szKoi2dos,      koi2dos
  108.                 dd      0,              0
  109.  
  110. szVersion       db      'version',0
  111. szDos2win       db      'dos2win',0
  112. szWin2dos       db      'win2dos',0
  113. szKoi2dos       db      'koi2dos',0
  114.  
  115. d2w             db      192, 193, 194, 195, 196, 197, 198, 199
  116.                 db      200, 201, 202, 203, 204, 205, 206, 207
  117.                 db      208, 209, 210, 211, 212, 213, 214, 215
  118.                 db      216, 217, 218, 219, 220, 221, 222, 223
  119.                 db      224, 225, 226, 227, 228, 229, 230, 231
  120.                 db      232, 233, 234, 235, 236, 237, 238, 239
  121.                 db      32,  32,  32,  32,  32,  32,  32,  32
  122.                 db      32,  32,  32,  32,  32,  32,  32,  32
  123.                 db      32,  32,  32,  32,  32,  32,  32,  32
  124.                 db      32,  32,  32,  32,  32,  32,  32,  32
  125.                 db      32,  32,  32,  32,  32,  32,  32,  32
  126.                 db      32,  32,  32,  32,  32,  32,  32,  32
  127.                 db      240, 241, 242, 243, 244, 245, 246, 247
  128.                 db      248, 249, 250, 251, 252, 253, 254, 255
  129.                 db      168, 184, 170, 186, 175, 191, 161, 162
  130.                 db      176, 32,  32,  32,  185, 164, 32,  32
  131.  
  132.  
  133. w2d             db      32,  32,  44,  32,  34,  32,  32,  32
  134.                 db      94,  32,  32,  60,  32,  32,  32,  32
  135.                 db      32,  39,  39,  34,  34,  32,  45,  45
  136.                 db      126, 32,  32,  62,  32,  32,  32,  32
  137.                 db      32,  246, 247, 74,  253, 131, 32,  32
  138.                 db      240, 32,  242, 34,  32,  32,  32,  244
  139.                 db      248, 32,  73,  105, 163, 32,  32,  250
  140.                 db      241, 252, 243, 34,  106, 83,  115, 245
  141.                 db      128, 129, 130, 131, 132, 133, 134, 135
  142.                 db      136, 137, 138, 139, 140, 141, 142, 143
  143.                 db      144, 145, 146, 147, 148, 149, 150, 151
  144.                 db      152, 153, 154, 155, 156, 157, 158, 159
  145.                 db      160, 161, 162, 163, 164, 165, 166, 167
  146.                 db      168, 169, 170, 171, 172, 173, 174, 175
  147.                 db      224, 225, 226, 227, 228, 229, 230, 231
  148.                 db      232, 233, 234, 235, 236, 237, 238, 239
  149.  
  150.  
  151. k2d             db      196, 179, 218, 191, 192, 217, 195, 180
  152.                 db      194, 193, 197, 223, 220, 219, 221, 222
  153.                 db      176, 177, 178, 32,  254, 249, 251, 32
  154.                 db      32,  32,  32,  32,  248, 32,  250, 32
  155.                 db      205, 186, 184, 241, 214, 201, 184, 183
  156.                 db      187, 212, 211, 200, 190, 189, 188, 198
  157.                 db      199, 204, 181, 240, 182, 185, 209, 210
  158.                 db      203, 207, 208, 202, 216, 215, 206, 32
  159.                 db      238, 160, 161, 230, 164, 165, 228, 163
  160.                 db      229, 168, 169, 170, 171, 172, 173, 174
  161.                 db      175, 239, 224, 225, 226, 227, 166, 162
  162.                 db      236, 235, 167, 232, 237, 233, 231, 234
  163.                 db      158, 128, 129, 150, 132, 133, 148, 131
  164.                 db      149, 136, 137, 138, 139, 140, 141, 142
  165.                 db      143, 159, 144, 145, 146, 147, 134, 130
  166.                 db      156, 155, 135, 152, 157, 153, 151, 154
  167.  
  168. section '.data' data readable writable align 16
  169.  
  170. charset         rd      1