home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / UNIFLEX / UNIFLEX / UniFLEX_Std.Utils1.tar.Z / UniFLEX_Std.Utils1.tar / utils1 / date < prev    next >
Text File  |  1981-09-01  |  15KB  |  800 lines

  1.  opt nol,pag
  2.  ttl Date Utility
  3.  lib sysdef
  4.  opt lis
  5.  pag
  6.  info UniFLEX date
  7.  info Version 1.1, Released May 18, 1981
  8.  info Copyright, (C) 1980, by
  9.  info Technical Systems Consultants, Inc.
  10.  info All rights reserved.
  11.  
  12. * Print and set the date
  13.  
  14.  org 0
  15.  
  16. date sys time,stbuf get system time info
  17.  ldx #stbuf point to time
  18.  lbsr tmloc convert to local time
  19.  ldd 0,s get arg count
  20.  cmpd #1 no args?
  21.  lbls displ display date and time
  22.  sys guid check user id
  23.  cmpd #0 is it super user?
  24.  lbne date8 if not - error
  25.  ldd 0,s get arg count
  26.  leax 4,s point to args
  27.  cmpd #2 1 arg?
  28.  beq date5
  29.  cmpd #3 2 args?
  30.  lbne synerr
  31.  ldx 0,x point to 1st arg
  32.  ldu #dvec point to date vector
  33. date2 cmpu #dvec+6 too many params?
  34.  lbhs synerr if so - error
  35.  lbsr atob convert to binary
  36.  lbne synerr
  37.  std 0,u++ save arg
  38.  lda 0,x+ get next char
  39.  beq date3 if null - finished
  40.  cmpa #'- is it sep char?
  41.  beq date2
  42.  lbra synerr report error
  43. date3 ldd #-1 mark end of vector
  44.  std 0,u
  45.  ldu #dvec point to vector
  46.  ldd 0,u++ get 1st arg
  47.  tst 0,u any more?
  48.  bmi date4
  49.  subd #1 must be month number
  50.  std month save month
  51.  ldd 0,u++ get next param (day)
  52. date4 std mday save the day
  53.  ldd 0,u another param?
  54.  bmi date45
  55.  cmpd #80 its the year (<80)
  56.  bhs date42
  57.  addd #100 make 2000
  58. date42 std year save year
  59. date45 leax 6,s point to next arg
  60.  
  61.  pag
  62.  
  63. * date continued - get hh:mm:ss
  64.  
  65. date5 ldx 0,x poit to string
  66.  lbsr atob convert to binary
  67.  lbne synerr error?
  68.  std dhour save hour
  69.  lda 0,x+ get sep char
  70.  cmpa #': is it ':'?
  71.  lbne synerr
  72.  lbsr atob do conversion
  73.  lbne synerr
  74.  std dmins save minutes
  75.  lda 0,x+ get sep
  76.  beq date6 end of arg?
  77.  cmpa #': is it ':'?
  78.  lbne synerr if not - error
  79.  lbsr atob do conversion
  80.  lbne synerr error?
  81.  std dsec save seconds
  82. date6 lbsr cdate calculate date
  83.  lbsr fixzn add in time zone
  84.  sys time,uphtim get current time
  85.  ldd #('b<<8)|'d set up 'bd' (before date)
  86.  lbsr uphf update history file
  87.  ldx ntime get new time
  88.  ldd ntime+2
  89.  sys stime set the time
  90.  sys time,stbuf get new time
  91.  sys time,uphtim
  92.  ldd #('a<<8)|'d set up 'ad' (after date)
  93.  lbsr uphf update history file
  94.  ldx #stbuf point to new time
  95.  lbsr tmloc convert time
  96.  bra displ display the new time & exit
  97. date8 ldd #2 set file desc
  98.  sys write,nprms,NPSZ output error
  99.  ldd #10 set perm error
  100.  sys term
  101.  
  102. *
  103. * synerr
  104. *
  105. * Report syntax error and exit.
  106. *
  107.  
  108. synerr ldd #2 set file desc
  109.  sys write,synmsg,SYSZ output error
  110.  ldd #$ff set term status
  111.  sys term
  112.  
  113.  pag
  114.  
  115. *
  116. * displ
  117. *
  118. * Display the time and date.
  119. *
  120.  
  121. displ ldx #second point to time vector
  122.  lbsr tasc convert to ascii string
  123.  ldd #1 set file desc
  124.  sys write,tstr,25 output time & date
  125.  ldd #0 set status
  126.  sys term
  127.  
  128. *
  129. * atob
  130. *
  131. * Convert the 2 digit ascii number pointed at by
  132. * X into a binary number returned in D.  Return
  133. * 'ne' if error.
  134. *
  135.  
  136. atob lda 0,x+ get char
  137.  suba #'0 remove bias
  138.  bmi atob2 error?
  139.  cmpa #9 is it digit?
  140.  bhi atob2
  141.  ldb 0,x get next character
  142.  beq atob4 is it null term?
  143.  cmpb #'0 is it term char
  144.  blo atob4
  145.  cmpb #'9
  146.  bhi atob4
  147.  asla multiply by 10
  148.  pshs a
  149.  asla
  150.  asla
  151.  adda 0,s
  152.  sta 0,s save result
  153.  ldb 0,x+ get next char
  154.  subb #'0 remove bias
  155.  bmi atob2 error?
  156.  cmpb #9 is it digit?
  157.  bhi atob2
  158.  clra set hi byte
  159.  addb 0,s+ add in hi digit
  160.  sez set status
  161. atob2 rts return
  162. atob4 tfr a,b get digit
  163.  clra
  164.  rts return
  165.  
  166.  pag
  167.  
  168. *
  169. * cdate
  170. *
  171. * Calculate the actual internal date
  172. *
  173.  
  174. cdate ldd #0 init to zero
  175.  std ntime
  176.  lda dmins+1 get minutes
  177.  ldb #60 60 seconds per minute
  178.  mul find total seconds
  179.  addd dsec add in seconds
  180.  std ntime+2 save time so far
  181.  ldd dhour get hour
  182.  std r0+2 set up for multiply
  183.  ldd #3600 3600 seconds per hour
  184.  std r1+2
  185.  ldd #0 clear out hi words
  186.  std r0
  187.  std r1
  188.  lbsr lmul do hours*3600
  189.  ldd ntime+2 add in result to seconds so far
  190.  addd r0+2
  191.  std ntime+2
  192.  ldd ntime
  193.  adcb r0+1
  194.  adca r0
  195.  std ntime save new result
  196.  bsr clmd calculate days in this year
  197.  lbsr clyd
  198.  ldd mday get month day
  199.  subd #1 remove bias
  200.  addd cmday add in month days
  201.  addd cyday add in year days
  202.  std r0+2 set up for multiply
  203.  ldd #0
  204.  std r0
  205.  ldd #1 set up 86400 (seconds per day)
  206.  std r1 which is $15180
  207.  ldd #$5180
  208.  std r1+2
  209.  lbsr lmul calculate day seconds
  210.  ldd ntime+2 add in to total so far
  211.  addd r0+2
  212.  std ntime+2
  213.  ldd ntime
  214.  adcb r0+1
  215.  adca r0
  216.  std ntime save result
  217.  rts return
  218.  
  219.  pag
  220.  
  221. *
  222. * clmd
  223. *
  224. * Calculate number of days in past months.
  225. *
  226.  
  227. clmd ldd #0 do init
  228.  std cmday
  229.  ldd year get year
  230.  bitb #3 is it leap year?
  231.  bne clmd1
  232.  ldd #29 fix up Feb in table
  233.  std mdays+2
  234. clmd1 ldx #mdays point to month-day table
  235.  ldd #0 set month counter
  236. clmd2 cmpd month current month?
  237.  beq clmd4 if so - done
  238.  pshs d save count
  239.  ldd cmday get day counter
  240.  addd 0,x++ add in to month day count
  241.  std cmday save total
  242.  puls d get month count
  243.  addd #1 bump one
  244.  bra clmd2
  245. clmd4 ldd #28 reset month table
  246.  std mdays+2
  247.  rts return
  248.  
  249.  pag
  250.  
  251. *
  252. * clyd
  253. *
  254. * Calculate days in previous years.
  255. *
  256.  
  257. clyd ldd #0 do init
  258.  std cyday
  259.  ldd #80 set year
  260. clyd2 cmpd year current year?
  261.  beq clyd6
  262.  pshs d save year count
  263.  bitb #3 leap year?
  264.  beq clyd3
  265.  ldd #365 set year day count
  266.  bra clyd4
  267. clyd3 ldd #366 set leap year day count
  268. clyd4 addd cyday add in day count
  269.  std cyday save total
  270.  puls d get year count
  271.  addd #1 bump by one
  272.  bra clyd2 repeat
  273. clyd6 rts return
  274.  
  275.  pag
  276.  
  277. *
  278. * fixzn
  279. *
  280. * Adjust input date & time from local time zone
  281. * to UTC time.
  282. *
  283.  
  284. fixzn tst dlflg daylight savings here?
  285.  beq fixzn1
  286.  ldx #ntime point to it
  287.  lbsr tmutc convert to utc
  288.  lbsr chkdl daylight savings here?
  289.  bne fixzn1
  290.  ldd ntime+2 get time
  291.  subd #3600 if so, subtract 1 hour
  292.  std ntime+2
  293.  bcc fixzn1
  294.  ldd ntime do hi part
  295.  subd #1
  296.  std ntime save new hi
  297. fixzn1 ldd ntime+2 get the new time
  298.  tst eutc east of UTC?
  299.  bne fixzn2
  300.  addd tzn+2 add in time zone since west
  301.  std ntime+2
  302.  ldd ntime
  303.  adcb tzn+1
  304.  adca tzn
  305.  bra fixzn3
  306. fixzn2 subd tzn+2 subtract since east of utc
  307.  std ntime+2
  308.  ldd ntime do lo part
  309.  sbcb tzn+1
  310.  sbca tzn
  311. fixzn3 std ntime save new time
  312. fixzn6 rts return
  313.  
  314.  pag
  315.  
  316. *
  317. * lmul
  318. *
  319. * Long multiply - 32 bits (r0) X 32 bits (r1).
  320. * Result is in r0.
  321. *
  322.  
  323. lmul ldb #32 set loop count
  324.  pshs b
  325.  ldd #0 init variables
  326.  std work
  327.  std work+2
  328.  lsr r0 do initial shift
  329.  ror r0+1
  330.  ror r0+2
  331.  ror r0+3
  332. lmul1 bcc lmul2 need to add?
  333.  ldd work+2
  334.  addd r1+2
  335.  std work+2
  336.  ldd work
  337.  adcb r1+1
  338.  adca r1
  339.  std work save result
  340. lmul2 ror work do shifting
  341.  ror work+1
  342.  ror work+2
  343.  ror work+3
  344.  ror r0
  345.  ror r0+1
  346.  ror r0+2
  347.  ror r0+3
  348.  dec 0,s dec the loop count
  349.  bne lmul1 repeat?
  350.  puls b,pc return
  351.  
  352.  pag
  353.  
  354. *
  355. * tmloc
  356. *
  357. * Convert time pointed at by x to vector time (local).
  358. *
  359.  
  360. tmloc ldd 0,x get time
  361.  std ltime
  362.  ldd 2,x
  363.  std ltime+2
  364.  lda 7,x get day light savings flag
  365.  sta dlflg
  366.  clr eutc init flag
  367.  ldd 5,x get time zone
  368.  bpl tmloc2 west of GMT?
  369.  inc eutc if not - set flag
  370.  coma and make pos number
  371.  comb
  372.  addd #1
  373. tmloc2 std r0+2 save time zone
  374.  ldd #60 calculate zone seconds
  375.  std r1+2
  376.  ldd #0 set hi bytes to 0
  377.  std r0
  378.  std r1
  379.  lbsr lmul calculate time zone seconds
  380.  ldd r0 get result
  381.  std tzn save it
  382.  ldd r0+2
  383.  std tzn+2
  384.  lbsr adjtim adjust time for zone
  385.  ldx #ltime point to time
  386.  lbsr tmutc convert to vector
  387.  tst dlflg do dlst?
  388.  beq tmloc6
  389.  lbsr chkdl in dlst?
  390.  bne tmloc6
  391. tmloc5 ldd #3600 adjust for dlst
  392.  addd ltime+2
  393.  std ltime+2
  394.  ldd ltime
  395.  adcb #0
  396.  adca #0
  397.  std ltime
  398.  ldx #ltime point to time
  399.  lbsr tmutc convert to vector
  400.  inc daylit set daylit flag
  401. tmloc6 ldx #second point to vector
  402.  rts return
  403.  
  404.  pag
  405.  
  406. *
  407. * tmutc
  408. *
  409. * Convert the internal system time (4 bytes
  410. * pointed at by X on entry) to an 18 byte
  411. * vector representing the broken down time.
  412. * The time in this form is UTC (Universal
  413. * Coordinated Time).
  414. *
  415.  
  416. tmutc ldd #0 set daylight savings word
  417.  std daylit
  418.  ldd 0,x get hi word of time
  419.  std r0 save ir divide register
  420.  ldd 2,x get lo word of time
  421.  std r0+2
  422.  ldd #60*60 seconds*minutes constant
  423.  std r1 set up for divide
  424.  lbsr ldiv min*sec=time % 3600
  425.  ldd work hour*day=time / 3600
  426.  pshs d save min*sec
  427.  ldd #24 set up hours per day constant
  428.  std r1
  429.  lbsr ldiv hours= (hour*day) % 24
  430.  ldd work day= (hour*day) / 24
  431.  std hours set hours word
  432.  ldd r0+2 get day number
  433.  std day save the day
  434.  addd #2 add in day bias (Jan 1 80 => Tue)
  435.  std r0 set up for divide
  436.  ldb #7 days per week constant
  437.  stb r1
  438.  lbsr div wday=(day+2) % 7
  439.  ldb work get result
  440.  clra make into word
  441.  std wday set week day
  442.  puls d get min*sec
  443.  std r0 set up for divide
  444.  ldb #60 seconds per minute
  445.  stb r1
  446.  lbsr div seconds= (min*sec) % 60
  447.  ldb work minutes= (min*sec) / 60
  448.  clra
  449.  std second set seconds word
  450.  ldd r0 get minutes
  451.  std minute save it
  452.  
  453.  pag
  454.  
  455. * continue tutc for year and month data
  456.  
  457.  clr 0,-s clear year counter
  458. tutc2 ldx #ylen point to year length table
  459.  lda 0,s get year number
  460.  bita #$3 is it leap year?
  461.  bne tutc3
  462.  leax 2,x if so, move to long year value
  463. tutc3 ldd day get day number
  464.  cmpd 0,x day in current year?
  465.  blo tutc4 if 'lt' - we got the year!
  466.  subd 0,x subtract off years days
  467.  std day save new day count
  468.  inc 0,s bump the year count
  469.  bra tutc2 repeat
  470. tutc4 std yday set day of year word
  471.  puls b get year count
  472.  addb #80 add to '1980'
  473.  clra make 16 bits long
  474.  std year save the year
  475.  bitb #$3 is it leap year?
  476.  bne tutc5
  477.  ldd #29 if so, set Feb day count to 29
  478.  std mdays+2
  479. tutc5 ldx #mdays point to month-day table
  480.  clr 0,-s set month count to zero
  481.  ldd yday get day of the year
  482. tutc6 cmpd 0,x in the month?
  483.  blo tutc7 if 'lt' - we got the month!
  484.  inc 0,s bump the month counter
  485.  subd 0,x++ subtract of this month's days
  486.  bra tutc6
  487. tutc7 addd #1 add 1 to month day (day 1 is 1 - not 0!)
  488.  std mday save the month day
  489.  puls b get the month
  490.  std month save it
  491.  ldd #28 reset month - day table
  492.  std mdays+2
  493.  rts return
  494.  
  495.  pag
  496.  
  497. *
  498. * chkdl
  499. *
  500. * Check if in dlst - return 'eq' if so.
  501. *
  502.  
  503. chkdl ldd #119 check for last Sun in Apr
  504.  bsr fixtim
  505.  std fstdl first day of dlst
  506.  ldd #303 last Sun in Oct
  507.  bsr fixtim
  508.  std lstdl last day of dlst
  509.  ldd yday get day of year
  510.  cmpd fstdl up to 1st day yet?
  511.  blo chkdl6
  512.  bhi chkdl4
  513.  ldd hours on the 1st day - so
  514.  cmpd #2 is it 2:00 AM yet?
  515.  blo chkdl6
  516.  bra chkdl5
  517. chkdl4 ldd yday get day of year
  518.  cmpd lstdl past last day of dlst?
  519.  bhi chkdl6
  520.  blo chkdl5
  521.  ldd hours on the last day - so
  522.  cmpd #1 is it 1:00 AM yet?
  523.  bhs chkdl6
  524. chkdl5 sez we are in dlst!
  525.  rts return
  526. chkdl6 clz not in dlst
  527.  rts return
  528.  
  529.  pag
  530.  
  531. *
  532. * adjtim
  533. *
  534. * Adjust time for time zone.
  535. *
  536.  
  537. adjtim ldd ltime+2 get time
  538.  tst eutc east of UTC?
  539.  bne adjti2
  540.  subd r0+2 subtract time zone minutes
  541.  std ltime+2
  542.  ldd ltime get hi part
  543.  sbcb r0+1
  544.  sbca r0
  545.  bra adjti4
  546. adjti2 addd r0+2 add in minutes
  547.  std ltime+2
  548.  ldd ltime
  549.  adcb r0+1
  550.  adca r0
  551. adjti4 std ltime save new time
  552. adjti5 rts return
  553.  
  554. *
  555. * fixtim
  556. *
  557. * Return the closest day to the date in D
  558. * which is a Sunday.
  559. *
  560.  
  561. fixtim pshs d save day number
  562.  ldd year get year
  563.  bitb #$3 is it leap year?
  564.  puls d
  565.  bne fixti2
  566.  addd #1 if so - bump day number
  567. fixti2 pshs d save day number
  568.  addd #420 add in 420 so no negatives result
  569.  addd wday add in day of week
  570.  subd yday subtract day of year
  571.  std r0 save result
  572.  ldb #7
  573.  stb r1 set up for divide
  574.  lbsr div do: (day+420+wday-yday) % 7
  575.  puls d get day number
  576.  subb work
  577.  sbca #0
  578.  rts return day in d
  579.  
  580.  pag
  581.  
  582. *
  583. * Divide routines for time conversion use.  'Ldiv'
  584. * divides a 32 bit number (r0 -> r0+3) by a 16 bit
  585. * number (r1 -> r1+1) and produces a 32 bit result
  586. * in r0 and a 16 bit remainder in 'work'.  'Div'
  587. * divides a 16 bit number (r0 -> r0+1) by an 8 bit
  588. * number (r1) and produces a 16 bit result (r0)
  589. * and an 8 bit remainder (work).
  590. *
  591.  
  592. div lda #17 set up loop counter
  593.  clrb do initialize
  594.  stb work
  595.  bra div2
  596. div1 ldb work
  597.  subb r1 do subtraction
  598.  bcs div2 s3et new work?
  599.  stb work yes!
  600. div2 rol r0+1 do shift left
  601.  rol r0
  602.  rol work
  603.  deca dec the loop count
  604.  bne div1 repeat?
  605.  com r0 fix up result
  606.  com r0+1
  607.  lsr work fix remainder
  608.  rts
  609.  
  610.  
  611.  pag
  612.  
  613. *
  614. * Long divide
  615. *
  616.  
  617. ldiv ldb #33 set loop counter
  618.  pshs b
  619.  ldd #0 do init
  620.  std work
  621.  bra ldiv2
  622. ldiv1 ldd work do subtraction
  623.  subd r1
  624.  bcs ldiv2 work > r1 ?
  625.  std work set new work value
  626. ldiv2 rol r0+3 do shifting
  627.  rol r0+2
  628.  rol r0+1
  629.  rol r0
  630.  rol work+1
  631.  rol work
  632.  dec 0,s dec the loop count
  633.  bne ldiv1
  634.  com r0 compliment the result
  635.  com r0+1
  636.  com r0+2
  637.  com r0+3
  638.  lsr work adjust the remainder
  639.  ror work+1
  640.  puls b,pc return
  641.  
  642.  pag
  643.  
  644. *
  645. * tasc
  646. *
  647. * Convert the time vector data (18 bytes) pointed
  648. * at by x into an ascii string.  Return x pointing
  649. * to the string.
  650. *
  651.  
  652. tasc tfr x,u save vector pointer
  653.  ldx #tstr point to string
  654.  ldd 4,u get hours
  655.  lbsr cvt convert to ascii
  656.  leax 1,x skip the ':'
  657.  ldd 2,u get minutes
  658.  lbsr cvt convert to ascii
  659.  leax 1,x skip the ':'
  660.  ldd 0,u get seconds
  661.  lbsr cvt convert to ascii
  662.  leax 1,x skip space
  663.  ldd 6,u get day of week
  664.  ldy #dtab point to day table
  665.  bsr tasxfr xfr to string
  666.  ldd 10,u get month
  667.  ldy #mtab point to month table
  668.  bsr tasxfr xfr to string
  669.  ldd 8,u get month day
  670.  bsr cvt convert to ascii
  671.  leax 1,x
  672.  ldd #('1<<8)|'9 set up '19'
  673.  std 0,x save in string
  674.  ldd 12,u get year
  675.  cmpd #100 >100 (year 2000 yet?)
  676.  blo tasc4
  677.  subd #100 remove bias
  678.  pshs d save year
  679.  ldd #('2<<8)|'0 set up '20'
  680.  std 0,x set in string
  681.  puls d reset year
  682. tasc4 leax 2,x
  683.  bsr cvt convert year to ascii
  684.  ldx #tstr point to string
  685.  rts return
  686.  
  687.  pag
  688.  
  689. *
  690. * tasxfr
  691. *
  692. * Transfer the 3 bytes of ascii indexed by b
  693. * at y to location pointed at by x.
  694. *
  695.  
  696. tasxfr pshs b index * 3
  697.  aslb
  698.  addb 0,s+
  699.  leay b,y point to indexed data
  700.  ldd 0,y xfr the data to x
  701.  std 0,x++
  702.  lda 2,y
  703.  sta 0,x
  704.  leax 2,x bump string pointer
  705.  rts return
  706.  
  707. *
  708. * cvt
  709. *
  710. * Convert number in b to ascii at x.
  711. *
  712.  
  713. cvt lda #'0 set ascii 0
  714. cvt2 cmpb #10 >10?
  715.  blo cvt4
  716.  subb #10 subtract off 10
  717.  inca bump ascii
  718.  bra cvt2 repeat
  719. cvt4 addb #'0 make 1's ascii
  720.  std 0,x++ save ascii at x
  721.  rts return
  722.  
  723.  pag
  724.  
  725. *
  726. * uphf
  727. *
  728. * Update the history file
  729. *
  730.  
  731. uphf std uphbuf set up name
  732.  sys open,hisf,1 open file
  733.  bes uphf4 error?
  734.  pshs d save file desc
  735.  sys seek,0,0,2 find eof
  736.  ldd 0,s get file desc
  737.  sys write,uphbuf,16 make entry
  738.  puls d
  739.  sys close close the file
  740. uphf4 rts return
  741.  
  742.  pag
  743.  
  744. *
  745. * Strings and constants
  746. *
  747.  
  748. nprms fcc "Can't set date - No permission",$d
  749. NPSZ equ *-nprms
  750. synmsg fcc 'Command syntax error.',$d
  751. SYSZ equ *-synmsg
  752. hisf fcc '/act/history',0 history file
  753.  
  754. ylen fdb 365 year length
  755.  fdb 366 leap year
  756.  
  757. mdays fdb 31,28,31,30,31,30,31,31,30,31,30,31
  758.  
  759.  
  760. tstr fcc 'xx:xx:xx xxx xxx xx xxxx',$d,0
  761.  
  762. dtab fcc 'SunMonTueWedThuFriSat'
  763.  
  764. mtab fcc 'JanFebMarAprMayJunJulAugSepOctNovDec'
  765.  
  766. second fdb 0 seconds (0-59)
  767. minute fdb 0 minutes (0-59)
  768. hours fdb 0 hours (0-23)
  769. wday fdb 0 week day (0-6) 0=Sunday
  770. mday fdb 0 month day (1-31)
  771. month fdb 0 month (0-11)
  772. year fdb 0 year (80+)
  773. yday fdb 0 day of year (0-355)
  774. daylit fdb 0 daylight savings flag
  775.  
  776.  
  777. r0 fdb 0,0 regs for div and mul
  778. r1 fdb 0,0
  779. work fdb 0,0
  780. day fdb 0 day temp
  781. ntime fdb 0,0 new time
  782. dhour fdb 0 hour of day
  783. dmins fdb 0 min of hour
  784. dsec fdb 0 sec of min
  785. cmday fdb 0 month days
  786. cyday fdb 0 year days
  787. dvec fdb 0,0,0,0 date vector
  788. stbuf fdb 0,0,0,0 time buffer
  789. eutc fcb 0 east of utc flag
  790. fstdl fdb 0 1st day of dlst
  791. lstdl fdb 0 last day of dlst
  792. dlflg fcb 0 dlst flag
  793. ltime fdb 0,0 local time
  794. tzn fdb 0,0 time zone seconds
  795. uphbuf fdb 0,0,0,0,0,0 history buffer
  796. uphtim fdb 0,0,0,0 time for history
  797.  
  798.  
  799.  end date
  800.