home *** CD-ROM | disk | FTP | other *** search
/ FreeWare Collection 2 / FreeSoftwareCollection2pd199x-jp.img / ms_dos / ish / ish200s / encode.asm < prev    next >
Assembly Source File  |  1990-06-14  |  4KB  |  237 lines

  1. ;
  2. ;        ish file converter for MS-DOS  Ver 2.00 (90/3/27)
  3. ;
  4. ;
  5. ;        Copyright (c) 1986, 1987, 1989, 1990  by  M. ishizuka
  6. ;        All rights reserved.
  7. ;
  8.  
  9.  
  10.  
  11. ;-----------------------------------------------;
  12. ;                        ;
  13. ;    encode_7bit_old                ;
  14. ;                        ;
  15. ;    INPUT :    si (source pointer)        ;
  16. ;        di (destination pointer)    ;
  17. ;    OUTPUT:    si (next source pointer)    ;
  18. ;        di (next destination pointer)    ;
  19. ;    ERROR :    NON                ;
  20. ;    BREAK :    flags, al, bx, cx, dl        ;
  21. ;                        ;
  22. ;-----------------------------------------------;
  23.  
  24. encode_7bit_old:
  25.         mov    cx, 80d - 1
  26.         jmp    encode_7bit_1
  27.  
  28.  
  29.  
  30.  
  31. ;-----------------------------------------------;
  32. ;                        ;
  33. ;    encode_7bit                ;
  34. ;                        ;
  35. ;    INPUT :    si (source pointer)        ;
  36. ;        di (destination pointer)    ;
  37. ;    OUTPUT:    si (next source pointer)    ;
  38. ;        di (next destination pointer)    ;
  39. ;    ERROR :    NON                ;
  40. ;    BREAK :    flags, al, bx, cx, dl        ;
  41. ;                        ;
  42. ;-----------------------------------------------;
  43.  
  44. encode_7bit:    mov    cx, 79d - 1        ; encode 7bit
  45. encode_7bit_1:    xor    dl, dl
  46.         mov    bx, offset encode_table_jis8
  47. ext_dl_6_5:
  48.         ext dl, 6
  49.         xlat
  50.         stosb
  51. encode_7bit_2:
  52. ext_dl_6_1:
  53.         ext dl, 6
  54.         xlat
  55.         stosb
  56.         loop    encode_7bit_2
  57.         or    dl, dl
  58.         jz    encode_7bit_3
  59.         inc    si
  60. encode_7bit_3:    ret
  61. ;
  62. encode_13bit:            ; encode 13bit
  63.         mov    dx, 5b00h    ; 5bh = 91d
  64.         mov    bx, offset encode_table_jis7
  65. ext_dl_5_3:
  66.         ext    dl, 5
  67.         xlat
  68.         stosb
  69.         mov    cx, 3
  70. encode_13bit_1:
  71. ext_dl_5_1:
  72.         ext    dl, 5
  73.         xlat
  74.         stosb
  75.         loop    encode_13bit_1
  76.         mov    cx, 74d/2
  77. encode_13bit_2:
  78. ext_dl_12_1:
  79.         ext    dl, 12
  80.         div    dh
  81.         xlat
  82.         stosb
  83.         mov    al, ah
  84.         xlat
  85.         stosb
  86.         loop    encode_13bit_2
  87.         inc    si
  88.         ret
  89.  
  90.  
  91.  
  92. ;-----------------------------------------------;
  93. ;                        ;
  94. ;    encode_14bit                ;
  95. ;                        ;
  96. ;    INPUT :    si (source pointer)        ;
  97. ;        di (destination pointer)    ;
  98. ;    OUTPUT:    si (next source pointer)    ;
  99. ;        di (next destination pointer)    ;
  100. ;    ERROR :    NON                ;
  101. ;    BREAK :    flags, ax, bx, cx, dx        ;
  102. ;                        ;
  103. ;-----------------------------------------------;
  104.  
  105. encode_14bit:    lodsb
  106.         mov    bx, offset encode_table_jis7
  107.         xlat
  108.         stosb
  109.         mov    cx, 123d * 256d + 75d    ; ch := 123d , cl := 75d
  110.         mov    dx, 182d * 256d        ; dh := 182d , dl := 0
  111. encode_14bit_1:
  112. ext_dl_13_1:
  113.         ext    dl, 13
  114.         cmp    ax, 91d * 123d
  115.         jc    encode_14bit_6
  116.         sub    ax, 91d * 123d
  117.         div    dh
  118.         mov    bx, offset encode_table_nonkana
  119.         xlat
  120.         stosb
  121.         dec    cl
  122.         mov    al, ah
  123. encode_14bit_2:    mov    bx, offset encode_table_nonkana2
  124.         xlat
  125.         stosb
  126. encode_14bit_3:    dec    cl
  127.         jns    encode_14bit_1
  128.         mov    bx, offset encode_table_jis7
  129.         inc    cl
  130.         jz    encode_14bit_4
  131.         inc    cl
  132.         jz    encode_14bit_5
  133.         ret
  134.  
  135. encode_14bit_4:
  136. ext_dl_12_2:
  137.         ext    dl, 12
  138.         mov    dh, 91d
  139.         div    dh
  140.         xlat
  141.         stosb
  142.         mov    al, ah
  143.         xlat
  144.         stosb
  145.         ret
  146.  
  147. encode_14bit_5:
  148. ext_dl_5_2:
  149.         ext    dl, 5
  150.         xlat
  151.         stosb
  152.         ret
  153.  
  154. encode_14bit_6:    div    ch
  155.         mov    bx, offset encode_table_jis7
  156.         xlat
  157.         stosb
  158.         dec    cl
  159.         mov    al, ah
  160.         xlat
  161.         stosb
  162.         cmp    al, 80h
  163.         jb    encode_14bit_3
  164.         dec    cl
  165. ext_dl_6_2:
  166.         ext    dl, 6
  167.         jmp    encode_14bit_2
  168.  
  169.  
  170.  
  171. ;-----------------------------------------------;
  172. ;                        ;
  173. ;    encode_15bit                ;
  174. ;                        ;
  175. ;    INPUT :    si (source pointer)        ;
  176. ;        di (destination pointer)    ;
  177. ;    OUTPUT:    si (next source pointer)    ;
  178. ;        di (next destination pointer)    ;
  179. ;    ERROR :    NON                ;
  180. ;    BREAK :    flags, ax, bx, cx, dx        ;
  181. ;                        ;
  182. ;-----------------------------------------------;
  183.  
  184. encode_15bit:    mov    dx, 0b600h    ; 0b6h = 182d
  185. ext_dl_6_3:
  186.         ext    dl, 6
  187.         mov    bx, offset encode_table_jis8
  188.         xlat
  189.         stosb
  190.         mov    cx, 76d/2
  191. encode_15bit_1:
  192. ext_dl_14_1:
  193.         ext    dl, 14
  194.         div    dh
  195.         xor    ch, 0ffh
  196.         mov    bx, offset encode_table_sjis
  197.         js    encode_15bit_2
  198.         mov    bx, offset encode_table_sjis2
  199. encode_15bit_2:    xlat
  200.         stosb
  201.         and    al, 0e0h
  202.         jns    encode_15bit_3
  203.         add    al, 60h
  204.         add    al, al
  205. encode_15bit_3:    and    ch, al
  206.         mov    al, ah
  207.         xor    ch, 0ffh
  208.         mov    bx, offset encode_table_sjis
  209.         js    encode_15bit_4
  210.         mov    bx, offset encode_table_sjis2
  211. encode_15bit_4:    xlat
  212.         stosb
  213.         and    al, 0e0h
  214.         jns    encode_15bit_5
  215.         add    al, 60h
  216.         add    al, al
  217. encode_15bit_5:    and    ch, al
  218.         dec    cl
  219.         jnz    encode_15bit_1
  220. ext_dl_6_4:
  221.         ext    dl, 6
  222.         xor    ch, 0ffh
  223.         mov    bx, offset encode_table_sjis
  224.         js    encode_15bit_6
  225.         mov    bx, offset encode_table_sjis2
  226. encode_15bit_6:    xlat
  227.         stosb
  228.         and    al, 0e0h
  229.         jns    encode_15bit_7
  230.         add    al, 60h
  231.         add    al, al
  232.         and    ch, al
  233.         jns    encode_15bit_7
  234.         add    byte ptr [di-1], 40h
  235. encode_15bit_7:    inc    si
  236.         ret
  237.