home *** CD-ROM | disk | FTP | other *** search
/ CBM Funet Archive / cbm-funet-archive-2003.iso / cpm / archivers / ark11.com / ARKDATE.MAC < prev   
Text File  |  1979-11-30  |  4KB  |  189 lines

  1. ;
  2.  
  3. ; arkdate - SUPPORT FOR tIME AND dATE STAMPING
  4.  
  5. ;
  6.  
  7. ; 4/18/89 -- wRITTEN FOR z80dos FILE-MODIFY STAMPS
  8.  
  9. ;
  10.  
  11. ;
  12.  
  13. ; tHE USER SHOULD USE THE AREA STARTING AT z80dATE
  14.  
  15. .Z80
  16.  
  17. ASEG; KEEP m80 HAPPY....
  18.  
  19. ORG103H
  20.  
  21.  
  22.  
  23. YR:db88; [103H]
  24.  
  25. MO:db4; [104H]
  26.  
  27. DAY:db14; [105H]
  28.  
  29. HOUR:DB0; [106H]
  30.  
  31. MIN:DB0; [107H]
  32.  
  33.  
  34.  
  35. tdATE_:JPsIGNON; tODAY'S-dATE (CALLED AT INIT-TIME)           [108H]
  36.  
  37. fdATE_:JPz80dATE; fILE-dATE (CALLED IMMEDIATELY AFTER f_open)  [10bH]
  38.  
  39. cdATE_: DS3; CONVERT AND SAVE DATE (DON'T OVERWRITE THIS) [10eH]
  40.  
  41. pUTS_:DS3; HANDY OUTPUT ROUTINE
  42.  
  43.  
  44.  
  45. sIGNON:LDHL,vERSION
  46.  
  47. CALLpUTS_
  48.  
  49. RET
  50.  
  51.  
  52.  
  53. vERSION:
  54.  
  55. DB'z80dos vERSION',10,0
  56.  
  57.  
  58.  
  59. ;  gET z80-dos DATE, CONVERT TO yymmddhhmm AND SAVE AT 0103H -- do not
  60.  
  61. ;  alter bc, ix, OR iy
  62.  
  63. z80dATE:PUSHIX
  64.  
  65. PUSHIY
  66.  
  67. PUSHBC
  68.  
  69. LDC,54; z80dOS gET-sTAMP
  70.  
  71. CALL5
  72.  
  73. LDDE,MO
  74.  
  75. INCHL; SKIP OVER CREATION DATE
  76.  
  77. INCHL;   AND WE POINT TO lAST mODIFY
  78.  
  79. LDBC,4; ONLY CARE ABOUT THE NEXT 4 (NO SECONDS)
  80.  
  81. LDIR; AND MOVE FOR EASIER ACCESS
  82.  
  83.  
  84.  
  85. LDHL,(MO)
  86.  
  87. ;
  88.  
  89. ; datehl CONVERTS THE VALUE IN hl TO bcd YEAR, MONTH, DAY
  90.  
  91. ; FOR USE WITH z80dos TIME STAMPS.
  92.  
  93. ;
  94.  
  95. ; iNPUTS:hl CONTAINS HEX DAYS SINCE dECEMBER 31, 1977
  96.  
  97. ;
  98.  
  99. ; oUTPUTS:h CONTAINS bcd 20TH CENTURY YEAR
  100.  
  101. ;l CONTAINS bcd MONTH
  102.  
  103. ;a CONTAINS bcd DAY
  104.  
  105. ;
  106.  
  107. ;zERO FLAG SET (z) AND a=0 IF INVALID DATE (ZERO) DETECTED,
  108.  
  109. ;zERO FLAG RESET (nz) AND a=0FFH OTHERWISE.
  110.  
  111.  
  112.  
  113. ; cONVERTED TO 8080 FROM datehl BY cARSON wILSON WHO aDAPTED FROM b5c-cpm3.ins
  114.  
  115.  
  116.  
  117. dATEhl:
  118.  
  119. lda,h
  120.  
  121. orl; tEST BLANK DATE (ZERO)
  122.  
  123. JPz,NODATE; MAKE DATE = 00/00/00 00:00
  124.  
  125. ld(days),hl; sAVE INITIAL VALUE
  126.  
  127. ldb,78; sET YEARS COUNTER
  128.  
  129. LOOP:
  130.  
  131. CALLCKLEAP
  132.  
  133. ldde,-365; sET UP FOR SUBTRACT
  134.  
  135. JRnz,nolpy; sKIP IF NO LEAP YEAR
  136.  
  137. decde; sET FOR LEAP YEAR
  138.  
  139. NOLPY:
  140.  
  141. addhl,de; sUBTRACT
  142.  
  143. JRnc,ydone; cONTINUE IF YEARS DONE
  144.  
  145. lda,h
  146.  
  147. orl
  148.  
  149. JRz,ydone
  150.  
  151. ld(days),hl; eLSE SAVE DAYS COUNT
  152.  
  153. incb; iNCREMENT YEARS COUNT
  154.  
  155. JRloop; aND DO AGAIN
  156.  
  157. ;
  158.  
  159. ; tHE YEARS ARE NOW FINISHED, THE YEARS COUNT IS IN 'b' (hl IS INVALID)
  160.  
  161. ;
  162.  
  163. YDONE:
  164.  
  165. lda,b
  166.  
  167. ld(YR),a; SAVE YEAR
  168.  
  169. ;
  170.  
  171. CALLCKLEAP; cHECK IF LEAP YEAR
  172.  
  173. lda,-28
  174.  
  175. jpnz,febno; fEBRUARY NOT 29 DAYS
  176.  
  177. lda,-29; lEAP YEAR
  178.  
  179. FEBNO:
  180.  
  181. ld(feb),a; sET FEBRUARY
  182.  
  183. ldhl,(days); gET DAYS COUNT
  184.  
  185. ldde,mtable; pOINT TO MONTHS TABLE
  186.  
  187. ldb,0ffh; sET UP 'b' FOR SUBTRACT
  188.  
  189. lda,0; sET A FOR # OF MONTHS
  190.  
  191. MLOOP:
  192.  
  193. pushaf
  194.  
  195. lda,(de); gET MONTH
  196.  
  197. ldc,a; pUT IN 'c' FOR SUBTRACT
  198.  
  199. popaf
  200.  
  201. ld(days),hl; SAVE DAYS COUNT
  202.  
  203. addhl,bc; sUBTRACT
  204.  
  205. incde; iNCREMENT MONTHS COUNTER
  206.  
  207. inca
  208.  
  209. JRc,mloop; lOOP FOR NEXT MONTH
  210.  
  211.  
  212.  
  213. ;
  214.  
  215. ; tHE MONTHS ARE FINISHED, DAYS COUNT IS ON STACK.  fIRST, CALCULATE
  216.  
  217. ; MONTH.
  218.  
  219. ;
  220.  
  221. MDONE:
  222.  
  223. ldb,a; sAVE MONTHS
  224.  
  225. ldhl,(days)
  226.  
  227. lda,h
  228.  
  229. orl
  230.  
  231. JRnz,nzd
  232.  
  233. decde
  234.  
  235. decde
  236.  
  237. lda,(de)
  238.  
  239. cpl
  240.  
  241. inca
  242.  
  243. ldl,a
  244.  
  245. decb
  246.  
  247. NZD:
  248.  
  249. lda,l; rETRIEVE BINARY DAY OF MONTH
  250.  
  251. LD(DAY),A
  252.  
  253. ;
  254.  
  255. lda,b; rETRIEVE THE BINARY MONTH
  256.  
  257. LD(MO),A
  258.  
  259. ;
  260.  
  261. ora; sET nz FLAG
  262.  
  263.  
  264.  
  265. JTOC4:LDA,(HOUR); z80dos (AND dri) WANT THE TIME AS bcd --
  266.  
  267. CALLBCD2BIN;  BETTER CONVERT IT TO BINARY FOR ark
  268.  
  269. LD(HOUR),A
  270.  
  271. LDA,(MIN)
  272.  
  273. CALLBCD2BIN
  274.  
  275. LD(MIN),A
  276.  
  277. NODATE:POPBC
  278.  
  279. POPIY
  280.  
  281. POPIX
  282.  
  283. CALLcdATE_; MAKE IT READABLE TO ark
  284.  
  285. RET
  286.  
  287.  
  288.  
  289.  
  290.  
  291. BCD2BIN: LDD,A
  292.  
  293. AND0FH; e = THE 1'S DIGIT
  294.  
  295. LDE,A
  296.  
  297. LDA,D; GET BACK OUR bcd NUMBER
  298.  
  299. AND0F0H; MASK OFF ONES FOR JUST THE 10'S
  300.  
  301. RRCA
  302.  
  303. RRCA
  304.  
  305. RRCA
  306.  
  307. RRCA; AND PUT IN ls BITS
  308.  
  309. LDD,A; SAVE A COPY FOR MULTIPLYING BACK
  310.  
  311. ADDA,A;  TIMES 2
  312.  
  313. ADDA,A;    "   4
  314.  
  315. ADDA,A;  TIMES 8
  316.  
  317. ADDA,D;  TIMES 9
  318.  
  319. ADDA,D;  TIMES 10
  320.  
  321. ADDA,E; ADD IN ONES
  322.  
  323. RET; AND WE'RE DONE!
  324.  
  325.  
  326.  
  327.  
  328.  
  329. ;
  330.  
  331. ; sUPPORT rOUTINES:
  332.  
  333. ;
  334.  
  335.  
  336.  
  337. ;
  338.  
  339. ; cHECK FOR LEAP YEARS.
  340.  
  341. ;
  342.  
  343. CKLEAP:
  344.  
  345. lda,b
  346.  
  347. and0fch
  348.  
  349. cpb
  350.  
  351. RET
  352.  
  353.  
  354.  
  355.  
  356.  
  357. MTABLE:
  358.  
  359. DB-31;jANUARY
  360.  
  361. FEB:DB-28;fEBRUARY
  362.  
  363. DB-31,-30,-31,-30;mAR-jUN
  364.  
  365. DB-31,-31,-30;jUL-sEP
  366.  
  367. DB-31,-30,-31;oCT-dEC
  368.  
  369.  
  370.  
  371. DAYS:DW0; TEMP STORAGE
  372.  
  373.  
  374.  
  375. END
  376.  
  377.