home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / ZCPR33 / A-R / JULIAN.LBR / JUL2BIN.ZZ0 / JUL2BIN.Z80
Text File  |  2000-06-30  |  1KB  |  67 lines

  1. ; routine  jul2bin
  2.  
  3. ; author:  Bridger Mitchell & Howard Goldstein
  4.  
  5. ; date:  4/16/1988
  6.  
  7. ;     Julian to binary date routine.
  8. ;
  9. ;>>    hl = days since 77/12/31 (Julian date)
  10. ;<<    b = month (1=jan...)
  11. ;    c = year (78...)
  12. ;    l = day (1...31)
  13. ;    a = day (copy of l)
  14. ;
  15.     entry    jul2bin
  16.  
  17.     extrn    dpermo
  18.  
  19.     cseg
  20.  
  21. ; convert hl = days to yr,mo,da
  22. ;
  23. jul2bin:
  24.     PUSH    DE
  25.     ld    c,78        ;set yr = 78
  26. yrlp:    ld    b,1        ;set mo = 1
  27.     ld    de,dpermo    ;point at table
  28. molp:    ld    a,(de)        ;get # days in mo
  29.     push    de
  30.     ld    e,a
  31.     ld    d,0
  32.     or    a
  33.     sbc    hl,de        ;subtract days in mo
  34.     jr    c,j2bin9        ;done if <= 0
  35.     jr    z,j2bin9
  36.     ld    a,b        ;if mo == Feb
  37.     cp    2
  38.     jr    nz,j2bin3
  39.     ld    a,c        ;..and yr%4 == 0
  40.     and    00000011b
  41.     jr    nz,j2bin3
  42.     dec    hl        ;have feb. of leap year
  43.     ld    a,h        ;if days left was 1 (Mar 1)
  44.     or    l
  45.     jr    nz,j2bin3
  46.     ld    l,29        ;..it's Feb. 29th
  47.     jr    j2bin8
  48. j2bin3:
  49.     pop    de        ;mo tbl 
  50.     inc    de        ;point at next month
  51.     inc    b        ;mo++
  52.     ld    a,b
  53.     cp    13
  54.     jr    c,molp        ;do next month
  55.     inc    c        ;yr++
  56.     jr    yrlp        ;do next year
  57. ;
  58. ; done --
  59. j2bin9:    add    hl,de        ;add back subtracted size of next month
  60. j2bin8    pop    de        ;clear stack
  61.     ld    a,l        ; # days in cur. month
  62.     POP    DE
  63.     ret
  64. ;
  65. ;
  66.     end
  67.