[comp.protocols.time.ntp] NIST time software -- the real scoop

rbthomas@frogpond.rutgers.edu (Rick Thomas) (04/04/91)

It seems I posted a bogus telephone number for getting the NIST
software.  I transposed a couple of digits.  Here is the real scoop --
In fact, the whole telephone time service "HELP" file.  (The phone
number is at the end...)  They take VISA and Master Charge.

Enjoy!


Rick

PS -- the MS-DOS diskette also contains a rudimentary UNIX compatible
clock setter.  It would make a good base from which to launch the
writing of an xntp driver for an "external clock" based on this time
service.  In fact, if all you want is approximate tracking between the
local clock and real time, it may be that simply changing the
"settimeofday" call in parset.c to an appropriate adjtime call and
telling xntpd to use the computer's local clock will do the trick.
(This last sentence will make more sense once you take a look at
the software from NIST.)

========================================================================
                             DESCRIPTION OF THE
                 AUTOMATED COMPUTER TELEPHONE SERVICE (ACTS)


The following is transmitted (at 1200 Baud) after completion of the
telephone connection.

             ? = HELP
             National Institute of Standards and Technology
             Telephone Time Service

                                     D  L D
              MJD  YR MO DA H  M  S  ST S UT1 msADV        <OTM>
             47999 90-04-18 21:39:15 50 0 +.1 045.0 UTC(NIST) *
             47999 90-04-18 21:39:16 50 0 +.1 045.0 UTC(NIST) *
             47999 90-04-18 21:39:17 50 0 +.1 045.0 UTC(NIST) *
             47999 90-04-18 21:39:18 50 0 +.1 045.0 UTC(NIST) *
             47999 90-04-18 21:39:19 50 0 +.1 037.6 UTC(NIST) #
             47999 90-04-18 21:39:20 50 0 +.1 037.6 UTC(NIST) #
             etc..etc...etc.......

UTC = Universal Time Coordinated, the official world time referred to the
zero meridian.
_________________________________________________________________________

DST = Daylight savings time characters, valid for the continental U.S., are
set as follows:
  00 = We are on standard time (ST).    50 = We are on DST.
  99 to 51 = Now on ST, go to DST when your local time is 2:00 am and the
    count is 51.  The count is decremented daily at 00 (UTC).
  49 to 01 = Now on DST, go to ST when your local time is 2:00 am and the
    count is 01.  The count is decremented daily at 00 (UTC).
The two DST characters provide up to 48 days advance notice of a change in
time.  The count remains at 00 or 50 at other times.
_________________________________________________________________________

LS = Leap second flag is set to "1" to indicate that a leap second is to be
added as 23:59:60 (UTC) on the last day of the current UTC month.  The LS
flag will be reset to "0" starting with 23:59:60 (UTC).  The flag will
remain on for the entire month before the second is added.  Leap seconds
are added as needed at the end of any month.  Usually June and/or December
are chosen.

__________________________________________________________________________

DUT1 = Approximate difference between earth rotation time (UT1) and UTC, in
steps of 0.1 second.         DUT1 = UT1 - UTC
___________________________________________________________________________

MJD = Modified Julian Date, often used to tag certain scientific data.
___________________________________________________________________________

The full time format is sent at 1200 Baud, 8 bit, 1 stop, no parity.
The format at 300 Baud is also 8 bit, 1 stop, no parity. 
At 300 Baud the MJD and DUT1 values are deleted and the
time is transmitted only on even seconds.
___________________________________________________________________________

Maximum on line time will be 56 seconds.  If all lines are busy at any time,
the oldest call will be terminated if it has been on line more than 28
seconds, else, the call that first reaches 28 seconds will be terminated. 
___________________________________________________________________________

Current time is valid at the "on-time" marker (OTM), either "*" or "#". 
The nominal on-time marker (*) will be transmitted 45 ms early to account
for the 8 ms required to send 1 character at 1200 Baud, plus an additional
7 ms for delay from NIST to the user, and approximately 30 ms "scrambler"
delay inherent in 1200 Baud modems.  If the caller echoes all characters,
NIST will measure the round trip delay and advance the on-time marker so
that the midpoint of the stop bit arrives at the user on time.  The amount
of msADV will reflect the actual required advance in milliseconds and the
OTM will be a "#".  The NIST system requires 4 or 5 consecutive delay
measurements which are consistent before switching from "*" to "#".
If the user has a 1200 Baud modem with the same internal delay as that used
by NIST, then the "#" OTM should arrive at the user within +-2 ms of the
correct time.  However, NIST has studied different brands of 1200 Baud
modems and found internal delays from 24 ms to 40 ms and offsets of the
"#" OTM of +-10 ms.  For many computer users, +-10 ms accuracy should be
more than adequate since many computer internal clocks can only be set with
granularity of 20 to 50 ms.  In any case, the repeatability of the offset
for the "#" OTM should be within +-2 ms, if the dial-up path is reciprocal
and the user doesn't change the brand or model of modem used. This should
be true even if the dial-up path on one day is a land-line of less than
40 ms (one way) and on the next day is a satellite link of 260 to 300 ms.
In the rare event that the path is one way by satellite and the other way
by land line with a round trip measurement in the range of 90 to 260 ms,
the OTM will remain a "*" indicating 45 ms advance.
___________________________________________________________________________

For user comments write:
NIST-ACTS
Time and Frequency Division
Mail Stop 524
325 Broadway
Boulder, CO  80303

Software for setting (PC)DOS compatable machines is available
on a 360-kbyte diskette for $35.00 from:
NIST Office of Standard Reference Materials
B311-Chemistry Bldg, NIST, Gaithersburg, MD, 20899, (301) 975-6776

--------------------------------------------------------------------------

Mills@udel.edu (04/07/91)

Folks,

The following is offered for what it's worth. The ACTS disk I have
is dated 31 May 1988 and does not include the Sun version. Some time
back I got an update from Judah Levine at NIST which included the
Sun version. Since I use Microsoft C, I modified the code to use
that compiler and also the Sun compiler, then built and tested
both programs successfully. I haven't look at the code or thought
about it since late 1988. I have taken the liberty of stashing the
modified program disk on louie.udel.edu as the files acts.zoo and
acts.arc in two popular PC compressed formats. Should you choose to
snarf either one, please be advised I am not equipped to provide
help and, on Judah's behalf, please don't bug him, either.

It's likely that NIST is distributing newer stuff; if so, somebody
having it might put us straight.

Dave