Model GCW-1001
The purpose of this page is to document the various features of the Heath
Most Accurate Clock II (Model GCW-1001) that are available to the programmer.
Unfortunately, the clock was discontinued by Heath and is no longer available
except on the used market. However, if you have one of these clocks with the
RS-232 interface, there are several interesting pieces of information (other
than the time) that you can retrieve from the clocks CPU. The information in
this document is based on firmware version 1.02 (11/92).
The "A" command returns an ASCII time string in the format:
HH:MM:SS.T xx
This command is the only useful command if connected via a terminal. All
other commands return hexadecimal information which must be interpreted by
a computer running appropriate software.
The "D" command returns 24 pairs of bytes (48 bytes total) containing the variable divisor value at the end of each of the previous 24 hours. This allows the trimming process to be observed (trimming is described in the reference manual which accompanies the clock). UTC hour 00 is always returned first. The first byte of each pair is the high byte of the divisor * 16; the second byte is the low byte * 16. For example, the byte pair 3C10 would be returned for a divisor of 03C1 hex (961 decimal).
The "I" command returns 8 bytes of information on the clocks operation and
configuration. These bytes are defined as follows:
| TH | TL | ER | DH | DL | U1 | I1 | I2 | , where
TH = minutes since timebase last trimmed (high byte)
TL = minutes since timebase last trimmed (low byte)
ER = last accumulated error in 1.25 ms increments
DH = high byte of (current variable divisor * 16)
DL = low byte of (current variable divisor * 16)
U1 = UT1 offset (/.1 s): | + | 4 | 2 | 1 | 0 | 0 | 0 | 0 |
I1 = information byte #1:
| W | C | D | I | U | T | Z | 1 | , where
W = set by WWV(H)
C = CAPTURE LED on
D = TRIM DN LED on
I = HI SPEC LED on
U = TRIM UP LED on
T = DST switch on
Z = UTC switch on
1 = UT1 switch on
I2 = information byte #2:
| 8 | 8 | 4 | 2 | 1 | D | d | S | , where
8, 8, 4, 2, 1 = TIME ZONE switch settings
D = DST bit (#55) in last correct frame
d = DST bit (#2) in last correct frame
S = clock is in simulation mode
The Daylight Savings Time bits #2 and #55 are documented at the National
Institute of Standards and Technology web site at
http://www.bldrdoc.gov/timefreq/general/pdf/1383.pdf on page 54
of the PDF (document page 48).
The "P" command returns 24 bytes containing the number of WWV BCD frames received without error during UTC hours 00 through 23, providing an indication of hourly propagation on 10MHz. These bytes are updated each hour to reflect the previous 24 hour period. UTC hour 00 is always returned first.
The "T" command returns the UTC time in the following format:
| HH | MM | SS | T | , where
HH = tens-of-hours and hours (packed BCD)
MM = tens-of-minutes and minutes (packed BCD)
SS = tens-of-seconds and seconds (packed BCD)
T = tenths-of-seconds (BCD)
The information returned is always in UTC regardless of the switch settings
on the clock. It is up to the programmer to adjust the displayed time
to the local time zone (if applicable) and daylight savings time (if
applicable) based on the switch settings on the radio (see the "I" command).
The "@" command is undocumented in the programming documentation. This
command dumps the contents of the clocks scratchpad memory. This information
is 181 bytes long and contains all of the information returned by the other
commands as well additional information on the running status of the clock.
Most of this information is of little use to the programmer. The following
table documents those fields which may be of interest. The byte number
offsets are zero based (C style arrays). Under the data column, information
in parentheses is the data register name as defined in the GCW-1001 firmware:
| Byte Offset | Data |
|---|---|
| 42 | Switch 1 settings (SWITCH1) |
| 43 | Switch 2 settings (SWITCH2) |
| 631 | UTC Hours value-packed BCD (HOURS) |
| 641 | UTC Minutes value-packed BCD (MINUTES) |
| 651 | UTC Seconds value-packed BCD (SECONDS) |
| 661 | UTC tenths-of-seconds value-packed BCD (TENTHS) |
| 71-722 | Minutes since last trimmed (ELAPSD) |
| 733 | Signed value of accumulated timebase error (ERROR) |
| 74-754 | Variable divisor (VDIV) |
| 765 | UT1 value (SUT1) |
| 776 | Information flags (SINFO1) |
| 787 | More Information flags (SINFO2) |
| 83-968 | ASCII formatted time |
| 98 | Number of minutes until HI SPEC expires (SPECTMR) |
| 99 | Number of valid frames during current hour (FRAMES) |
| 109-1329 | Total valid frames at end each UTC hour (PROPHST) |
| 133-18110 | Variable divisor at end of each UTC hour (DIVHST) |
|
1 Byte values 63-66 are identical to the information
returned by the "T" command.
2 Byte values 71-72 are identical to the TH and TL bytes returned by the "I" command. 3 Byte value 73 is identical to the ER byte returned by the "I" command. 4 Bytes values 74-75 are identical to the DH and DL bytes returned by the "I" command. 5 Byte value 76 is identical to the U1 byte returned by the "I" command. 6 Byte value 77 is identical to the I1 byte returned by the "I" command. 7 Byte value 78 is identical to the I2 byte returned by the "I" command. 8 Bytes values 83-96 are identical to the information returned by the "A" command. 9 Bytes values 103-132 are identical to the information returned by the "P" command. 10 Bytes values 133-181 are identical to the information returned by the "D" command. |
The following tables document the bit patterns for SWITCH1 and SWITCH2 data as returned in bytes 42 and 43:
| Bit | Switch 1 setting |
|---|---|
| 0 | Time zone bit 0 (S_TZ1) |
| 1 | Time zone bit 1 (S_TZ2) |
| 2 | Time zone bit 2 (S_TZ4) |
| 3 | Time zone bit 3 (S_TZ8A) |
| 4 | Time zone bit 4 (S_TZ8B) |
| 5 | 12 hour mode selected (S_12HR) |
| 6 | Display UTC instead of local time (S_UTC) |
| 7 | UT1 correction selected (S_UT1) |
| Bit | Switch 2 setting |
|---|---|
| 0 | Propagation delay bit 0 (S_PROP1) |
| 1 | Propagation delay bit 1 (S_PROP2) |
| 2 | Propagation delay bit 2 (S_PROP4) |
| 3 | Propagation delay bit 3 (S_PROP8) |
| 4 | Daylight Savings Time enabled (S_DST) |
| 5 | Test mode (S_TEST) |
| 6 | Minutes set / test 0 / dim 0 (S_MINSET) |
| 7 | Hours set / test 1 / dim 1 (S_HRSET) |
The "`" (ASCII 96) command is undocumented in the programming documentation. This command displays an "Easter Egg" with the names of all of the developers involved in creating the clock.
Utilizing the information returned by the "@" command, I have written a 'C' program for MSDOS mode that will display the current status of the clock. An actual screen dump from this program is available here.
Feature information on the Heath Most Accurate Clock II (Model GCW-1001) had been
available from Ricky Ponder's Web site at http://www.cheta.net/ricky-ponder/mac.htm. However, it is no longer online. A copy of that web page can be viewed here.
Compiled by Robert G. Schaffrath, N2JTX