Subversion Repositories Kolibri OS

Rev

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

  1. ;
  2. ;
  3. CP866 db '€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯àáâãäåæçèéêëìíîï'
  4.  
  5. ;
  6. ;  ¥à¥ª®¤¨à®¢ª  ¨§ cp1251 ¢ cp866
  7. ;  
  8. ;  [eax] <-- Null-terminated string
  9. ;
  10.  
  11.   win2dos:
  12.     pushad
  13.     pushf
  14.  
  15.     xor ebx, ebx
  16.     xor ecx, ecx
  17.     ;xor edx, edx
  18.  
  19.   w2d_loop:
  20.     mov bl, [eax+ecx]
  21.     cmp bl, 0
  22.     jz  w2d_end
  23.     cmp bl, 0A8h              ; ð
  24.     jz  w2d_yo1
  25.     cmp bl, 0B8h              ; ñ
  26.     jz  w2d_yo2
  27.     cmp bl, 0C0h              ; ãááª ï ¡ãª¢ 
  28.     jnc w2d_rchar
  29.     inc ecx
  30.     jmp w2d_loop
  31.  
  32.   w2d_yo1:
  33.     mov [eax+ecx], byte 0F0h
  34.     inc ecx
  35.     jmp w2d_loop
  36.  
  37.   w2d_yo2:
  38.     mov [eax+ecx], byte 0F1h
  39.     inc ecx
  40.     jmp w2d_loop
  41.  
  42.   w2d_rchar:
  43.     sub bl, 0C0h
  44.     mov bl, [CP866+ebx]
  45.     mov [eax+ecx], bl
  46.     inc ecx
  47.     jmp w2d_loop
  48.  
  49.  
  50.   w2d_end:
  51.  
  52.     popf
  53.     popad
  54.   ret
  55.  
  56.  
  57. CP1251 db 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'
  58.  
  59. ;
  60. ; ¥à¥ª®¤¨à®¢ª  ¨§ CP866 ¢ CP1251
  61. ; [eax] <-- Null termainated string
  62. ;
  63.  
  64.    dos2win:
  65.      pushf
  66.      pushad
  67.  
  68.      xor ebx, ebx
  69.      xor ecx, ecx
  70.  
  71.      dec ecx
  72.  
  73.    d2w_loop:
  74.      inc ecx
  75.      mov bl, [eax+ecx]
  76.      cmp bl, 0
  77.      jz  d2w_end
  78.      cmp bl, 80h
  79.      jnc d2w_rchar
  80.      
  81.      ;inc ecx
  82.      jmp d2w_loop
  83.  
  84.    d2w_yo1:
  85.      mov byte [eax+ecx], 0A8h
  86.      ;inc ecx
  87.      jmp d2w_loop
  88.  
  89.    d2w_yo2:
  90.      mov byte [eax+ecx], 0B8h
  91.      ;inc ecx
  92.      jmp d2w_loop
  93.  
  94.    d2w_rchar:
  95.      cmp bl, 0B0h
  96.      jnc d2w_rchar2
  97.      
  98.      sub bl, 80h
  99.      mov bl, [CP1251+ebx]
  100.      mov [eax+ecx], bl
  101.      jmp d2w_loop
  102.  
  103.    d2w_rchar2:
  104.      cmp bl, 0E0h
  105.      jc d2w_loop
  106.      cmp bl, 0F0h
  107.      jz d2w_yo1
  108.      cmp bl, 0F1h
  109.      jz d2w_yo2
  110.      cmp bl, 0F2h
  111.      jnc d2w_loop
  112.      add bl, 10h
  113.      mov [eax+ecx], bl
  114.      jmp d2w_loop
  115.  
  116.  
  117.      d2w_end:
  118.  
  119.      popad
  120.      popf
  121.    ret
  122.