home *** CD-ROM | disk | FTP | other *** search
/ FreeWare Collection 2 / FreeSoftwareCollection2pd199x-jp.img / ms_dos / ish / ish200s / timezone.asm < prev    next >
Assembly Source File  |  1990-06-14  |  6KB  |  305 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. ;    get_num2                ;
  14. ;                        ;
  15. ;    INPUT :    si (pointer)            ;
  16. ;        bx (handle)            ;
  17. ;    OUTPUT:    al (number)            ;
  18. ;        si (next pointer)        ;
  19. ;    ERROR :    error_42            ;
  20. ;    BREAK : flags, ah            ;
  21. ;                        ;
  22. ;-----------------------------------------------;
  23.  
  24. get_num2:    call    get_para_char
  25.         jc    error_42
  26.         sub    al, '0'
  27.         jc    error_42
  28.         cmp    al, 10d
  29.         jnc    error_42
  30.         mov    ah, al
  31.         call    get_para_char
  32.         jc    error_42
  33.         sub    al, '0'
  34.         jc    error_42
  35.         cmp    al, 10d
  36.         jnc    error_42
  37.         add    ah, ah
  38.         add    al, ah
  39.         add    ah, ah
  40.         add    ah, ah
  41.         add    al, ah
  42.         ret
  43.  
  44.  
  45.  
  46. ;-----------------------------------------------;
  47. ;                        ;
  48. ;    skip_cr_lf                ;
  49. ;                        ;
  50. ;    INPUT :    si (pointer)            ;
  51. ;        bx (handle)            ;
  52. ;    OUTPUT:    si (next pointer)        ;
  53. ;        al (next character)        ;
  54. ;        flags (NC: ok)            ;
  55. ;              (CY: end of file)        ;
  56. ;    ERROR :    NON                ;
  57. ;    BREAK : flags                ;
  58. ;                        ;
  59. ;-----------------------------------------------;
  60.  
  61. skip_cr_lf:    call    get_para_char
  62.         jc    skip_cr_lf_ret
  63.         cmp    al, 0dh
  64.         jz    skip_cr_lf
  65.         cmp    al, 0ah
  66.         jz    skip_cr_lf
  67.         dec    si
  68. skip_cr_lf_ret:    ret
  69.  
  70.  
  71.  
  72. ;-----------------------------------------------;
  73. ;                        ;
  74. ;    get_and_check                ;
  75. ;                        ;
  76. ;    INPUT :    si (pointer)            ;
  77. ;        bx (handle)            ;
  78. ;        cl (check character)        ;
  79. ;    OUTPUT:    si (next pointer)        ;
  80. ;        al (character)            ;
  81. ;    ERROR :    error_42            ;
  82. ;    BREAK : flags, al            ;
  83. ;                        ;
  84. ;-----------------------------------------------;
  85.  
  86. get_and_check:    call    get_para_char
  87.         jc    error_42
  88.         cmp    al, cl
  89.         jnz    error_42
  90.         ret
  91.  
  92.  
  93.  
  94. ;-----------------------------------------------;
  95. ;                        ;
  96. ;    skip_space2                ;
  97. ;                        ;
  98. ;    INPUT :    si (pointer)            ;
  99. ;        bx (handle)            ;
  100. ;    OUTPUT:    si (next pointer)        ;
  101. ;        al (next character)        ;
  102. ;    ERROR :    error_42            ;
  103. ;    BREAK : flags, al            ;
  104. ;                        ;
  105. ;-----------------------------------------------;
  106.  
  107. skip_space2:
  108.         call    get_para_char
  109.         jc    error_42
  110.         cmp    al, ' '
  111.         jz    skip_space2
  112.         cmp    al, 9
  113.         jz    skip_space2
  114.         dec    si
  115.         ret
  116.  
  117.  
  118.  
  119. ;-----------------------------------------------;
  120. ;                        ;
  121. ;    skip_to_cr_lf                ;
  122. ;                        ;
  123. ;    INPUT :    si (pointer)            ;
  124. ;        bx (handle)            ;
  125. ;    OUTPUT:    si (next pointer)        ;
  126. ;        al (next character)        ;
  127. ;        flags (NC: ok)            ;
  128. ;              (CY: end of file)        ;
  129. ;    ERROR :    NON                ;
  130. ;    BREAK : flags, al            ;
  131. ;                        ;
  132. ;-----------------------------------------------;
  133.  
  134. skip_to_cr_lf:    call    get_para_char
  135.         jc    skip_to_cr_lf_ret
  136.         cmp    al, 0dh
  137.         jz    skip_to_cr_lf_1
  138.         cmp    al, 0ah
  139.         jnz    skip_to_cr_lf
  140. skip_to_cr_lf_1:
  141.         dec    si
  142. skip_to_cr_lf_ret:
  143.         ret
  144.  
  145.  
  146.  
  147. ;-----------------------------------------------;
  148. ;                        ;
  149. ;    set_utc                    ;
  150. ;                        ;
  151. ;    INPUT :    NON                ;
  152. ;    OUTPUT:    NON                ;
  153. ;    ERROR :    NON                ;
  154. ;    BREAK : flags, ax, bx, cx, dx, si    ;
  155. ;                        ;
  156. ;-----------------------------------------------;
  157.  
  158. set_utc:    mov    ax, word ptr save_date
  159.         mov    bl, al
  160.         and    bl, 1fh
  161.         dec    bl
  162.         mov    byte ptr utc[4], bl
  163.         shr    ax, 1
  164.         shr    al, 1
  165.         shr    al, 1
  166.         shr    al, 1
  167.         shr    al, 1
  168.         dec    al
  169.         mov    byte ptr utc[5], al
  170.         mov    al, ah
  171.         xor    ah, ah
  172.         add    ax, 1980d
  173.         mov    word ptr utc[6], ax
  174.         xor    ax, ax
  175.         mov    word ptr utc, ax
  176.         mov    word ptr utc[2], ax
  177.         mov    al, byte ptr difference_of_time[2]
  178.         cbw
  179.         mov    si, ax
  180.         mov    ax, word ptr save_time
  181.         mov    bl, al
  182.         xor    bh, bh
  183.         and    bl, 1fh
  184.         shl    bl, 1
  185.         shr    ax, 1
  186.         shr    ax, 1
  187.         shr    ax, 1
  188.         shr    al, 1
  189.         shr    al, 1
  190.         mov    cl, al
  191.         xor    ch, ch
  192.         mov    al, 60d
  193.         mul    ah
  194.         add    ax, cx
  195.         mov    cx, 60d
  196.         mul    cx
  197.         add    ax, bx
  198.         adc    dx, 0
  199.         add    ax, word ptr difference_of_time
  200.         adc    dx, si
  201.         mov    si, offset utc
  202. ;        jmp    local_time_to_utc
  203.  
  204.  
  205.  
  206. ;-----------------------------------------------;
  207. ;                        ;
  208. ;    local_time_to_utc            ;
  209. ;                        ;
  210. ;    INPUT :    ax (difference of time low)    ;
  211. ;        dx (difference of time high)    ;
  212. ;        si (pointer)            ;
  213. ;           (dword ptr[si]: difference of time)
  214. ;           (byte ptr [si+4]: date - 1)    ;
  215. ;           (byte ptr [si+5]: month - 1)    ;
  216. ;           (word ptr [si+6]: year)    ;
  217. ;    OUTPUT:    NON                ;
  218. ;    ERROR :    NON                ;
  219. ;    BREAK : flags, ax, bx, cx, dx        ;
  220. ;                        ;
  221. ;-----------------------------------------------;
  222.  
  223. local_time_to_utc:
  224.         mov    bx, word ptr [si]
  225.         mov    cx, word ptr [si+2]
  226.         or    dx, dx
  227.         jns    local_time_to_utc_0
  228.         add    ax, 1
  229.         adc    dx, 0
  230. local_time_to_utc_0:
  231.         and    ax, 0fffeh
  232.         add    bx, ax
  233.         adc    cx, dx
  234.         mov    al, 0
  235.         js    local_time_to_utc_5
  236. local_time_to_utc_1:
  237.         cmp    cx, 1
  238.         jc    local_time_to_utc_3
  239.         jnz    local_time_to_utc_2
  240.         cmp    bx, 20864d        ; 3600d*24d - 65536d
  241.         jc    local_time_to_utc_3
  242. local_time_to_utc_2:
  243.         sub    bx, 20864d        ; 3600d*24d - 65536d
  244.         sbb    cx, 1
  245.         inc    al
  246.         jmp    local_time_to_utc_1
  247.  
  248. local_time_to_utc_3:
  249.         mov    word ptr [si], bx
  250.         mov    word ptr [si+2], cx
  251.         mov    dx, word ptr [si+4]
  252.         mov    cx, word ptr [si+6]
  253.         add    dl, al
  254.         cmp    dl, 28d
  255.         jc    local_time_to_utc_9
  256.         mov    bx, offset month_table
  257.         mov    al, dh
  258.         xlat
  259.         test    cl, 3
  260.         jnz    local_time_to_utc_4
  261.         cmp    al, 28d
  262.         jnz    local_time_to_utc_4
  263.         inc    al
  264. local_time_to_utc_4:
  265.         cmp    dl, al
  266.         jc    local_time_to_utc_9
  267.         sub    dl, al
  268.         inc    dh
  269.         cmp    dh, 12d
  270.         jc    local_time_to_utc_9
  271.         sub    dh, 12d
  272.         inc    cx
  273.         jmp    local_time_to_utc_9
  274.  
  275. local_time_to_utc_5:
  276.         inc    al
  277.         add    bx, 20864d        ; 3600d*24d - 65536d
  278.         adc    cx, 1
  279.         js    local_time_to_utc_5
  280.         mov    word ptr [si], bx
  281.         mov    word ptr [si+2], cx
  282.         mov    dx, word ptr [si+4]
  283.         mov    cx, word ptr [si+6]
  284.         sub    dl, al
  285.         jnc    local_time_to_utc_9
  286.         sub    dh, 1
  287.         jnc    local_time_to_utc_7
  288.         add    dh, 12d
  289.         dec    cx
  290. local_time_to_utc_7:
  291.         mov    bx, offset month_table
  292.         mov    al, dh
  293.         xlat
  294.         test    cl, 3
  295.         jnz    local_time_to_utc_8
  296.         cmp    al, 28d
  297.         jnz    local_time_to_utc_8
  298.         inc    al
  299. local_time_to_utc_8:
  300.         add    dl, al
  301. local_time_to_utc_9:
  302.         mov    word ptr [si+4], dx
  303.         mov    word ptr [si+6], cx
  304.         ret
  305.