
                 KIWI  (NMEA Version)

Introduction and usage:
-----------------------

The "Kiwi" software allows a user to get 1 millisecond accurate
timing functions.

The program must be run in pure DOS mode (NOT under Windows) on
a PC, that (unlike most new software), older low spec PC's are
fine.  I have it running on a 20 MHz old AT machine! It is ideal
for running on an old laptop.  You can use that ancient PC, that
cannot run modern software anymore, for something useful!

It requires minimal wiring:

A manual switch on a cable (or TTL signal to trigger timestamp)
and the GPS 1PPS (One Pulse Per Second), plug into the Printer
Port of the PC (IBM clone).

The NMEA RS232 (GPS alpha/numeric data) plugs into the PC serial
port (comport).

For those requiring video timing, an optional LED can be
connected to the Printer Port.

Before running the program, the wiring should be completed as
outlined in "wiring.txt".

The GPS should be configured to output 1PPS and the 2 NMEA
sentences GGA and RMC once per second at 4800 baud.

-----------------------------------------------
If you request the GPS receiver to transmit "more" than the two
required sentences (GGA and RMC), it is possible that there is
not enough time in one second for the GPS to transmit all NMEA
data. Sentences can "leak" from one second to the next. This can
cause KIWI to be misled about the correct epoch of the 1PPS.
For reliable operation (and accurate timing) I would advise only
the GGA and RMC sentences be enabled (at a one per second
update).

On option 2, you should only see GGA and RMC being received.

For users of Motorola Oncore receivers, KIWI can "initialise"
your GPS (whether it was left in 9600 or 4800 mode) to the
correct sentences (GGA and RMC) using the following command.

kiwi 1 motorola         (For Motorola GPS on Comport 1)
kiwi 2 motorola         (For Motorola GPS on Comport 2)

The program was developed with a Motorola GT Plus, however the
KIWI program will run with any GPS that has 1PPS digital output
and can output NMEA (GGA and RMC) at 4800 baud.
-----------------------------------------------

If you are using COM 1 then all you need to do is run:

KIWI

If you are using COM 2 make the command line:

KIWI 2

The KIWI menu:
--------------

 1 = Show the Logic Level of 1PPS and Switch
 2 = Show raw NMEA serial data from GPS
 3 = Your reaction time to an object    Appearance
 4 = Your reaction time to an object DISappearance
 5 = Measure PC timing Accuracy

 6 = Position Averaging and Satellite Tracking Info
 7 = Timestamp Function
 8 = Generate Time Signals (sound and sight)

 9 = Linear Time Reduction (of pre-recorded events)

 0 = Quit Program (also ESC Key)


Overview of functions with sample inputs and outputs:
-----------------------------------------------------

 1 = Show the Logic Level of 1PPS and Switch
--------------------------------------------

This allows you to see the LOGIC state of the 1PPS and manual
switch (trigger). If the wiring is correct, you should see the
1PPS go "lo" every second (just briefly). You can use WWV to
compare the time "pip" with the "lo" to ensure you have the
wiring phase correct. The switch should normally be "HI" until
you press the switch, then it should go "lo".

The switch is used in functions 3, 4, 7, and 9.

Example screen:
-----------------------------------------------------------------------

Logic level of input data                        ESC key to quit

The GPS 1PPS should most of the time be logic HI
then for a brief time each second it should go "lo"

To test that you have the correct polarity for the 1PPS, use
radio time pips (WWV etc), if the wiring is correct you should
see the 1PPS go "lo" at the instant of the time "pip".


The SWITCH should normally be logic HI, when you press
the switch, the logic level should go "lo"


GPS 1PPS   Switch
HI         HI
lo         HI
HI         lo

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

Example DATA.TXT:
-----------------------------------------------------------------------
Nothing is written for this function.
-----------------------------------------------------------------------


 2 = Show raw NMEA serial data from GPS
---------------------------------------

This shows the "raw" NMEA serial data coming from the GPS
receiver. You should only see the RMC and GGA sentence as shown
below. This function shows that the serial "receive" data is
being received from the GPS.  Every sentence that KIWI receives
has the checksum verified, sentences that fail are not used for
timing or position information.


Example screen:
-----------------------------------------------------------------------

Press any Key to QUIT

$GPRMC,083654.00,A,4331.1825,S,17242.1378,E,0.0,270.0,210902,, CHK_SUM OK
$GPGGA,083654.00,4331.1825,S,17242.1378,E,1,07,1.3,28.8,M,,M,, CHK_SUM OK
$GPRMC,083655.00,A,4331.1825,S,17242.1377,E,0.0,231.3,210902,, CHK_SUM OK
$GPGGA,083655.00,4331.1825,S,17242.1377,E,1,07,1.3,29.0,M,,M,, CHK_SUM OK
$GPRMC,083656.00,A,4331.1825,S,17242.1377,E,0.0,194.0,210902,, CHK_SUM OK
$GPGGA,083656.00,4331.1825,S,17242.1377,E,1,07,1.3,28.9,M,,M,, CHK_SUM OK

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

Example DATA.TXT:
-----------------------------------------------------------------------
Nothing is written for this function.
-----------------------------------------------------------------------

 3 = Your reaction time to an object    Appearance
--------------------------------------------------

Using the KIWI switch, you can make 10 samples of your response
time to a reappearance of a displayed asterisk used as an
animated star.  The 10 samples are then averaged and displayed
along with the standard deviation value. This can be used for
reporting a PE value to ILOC or IOTA for manually timed events.
The results of these measurements are written to the KIWI
standard output file DATA.TXT

Example screen:
-----------------------------------------------------------------------

REACTION Time Tester                     ESC key to Quit

Wait for STAR to appear, then press switch

Full statistics are given after you have timed 10 events.
These statistics will be saved to DATA.TXT

 <---  Star will appear here,   Space Bar when ready or ESC to Menu
*   0.246 secs
*   0.325 secs
*   0.312 secs
*   0.270 secs
*   0.271 secs
*   0.244 secs
*   0.314 secs
*   0.351 secs
*   0.336 secs
*   0.332 secs
For the above 10 valid results
                 1   0.246
                 2   0.325
                 3   0.312
                 4   0.270
                 5   0.271
                 6   0.244
                 7   0.314
                 8   0.351
                 9   0.336
                10   0.332

              Mean = 0.300 seconds
Standard Deviation = 0.039 seconds
-----------------------------------------------------------------------

Example DATA.TXT:
-----------------------------------------------------------------------
Reaction Time for a STAR to appear.

                 1   0.246
                 2   0.325
                 3   0.312
                 4   0.270
                 5   0.271
                 6   0.244
                 7   0.314
                 8   0.351
                 9   0.336
                10   0.332

              Mean = 0.300 seconds
Standard Deviation = 0.039 seconds
-----------------------------------------------------------------------

 4 = Your reaction time to an object DISappearance
--------------------------------------------------

Using the KIWI switch, you can make 10 samples of your response
time to a disappearance of a displayed asterisk used as an
animated star.  The 10 samples are then averaged and displayed
along with the standard deviation value. This can be used for
reporting a PE value to ILOC or IOTA for manually timed events.
The results of these measurements are written to the KIWI
standard output file DATA.TXT

Example screen:
-----------------------------------------------------------------------

REACTION Time Tester                     ESC key to Quit

Wait for STAR to DISappear, then press switch

Full statistics are given after you have timed 10 events.
These statistics will be saved to DATA.TXT

 <---  Star will DISappear from here,   Space Bar when ready or ESC to Menu
*   0.334 secs
    0.264 secs
    0.342 secs
    0.262 secs
    0.696 secs
    0.545 secs
    0.251 secs
    0.255 secs
    0.319 secs
    0.233 secs
For the above 10 valid results
                 1   0.334
                 2   0.264
                 3   0.342
                 4   0.262
                 5   0.696
                 6   0.545
                 7   0.251
                 8   0.255
                 9   0.319
                10   0.233

              Mean = 0.350 seconds
Standard Deviation = 0.151 seconds
-----------------------------------------------------------------------

Example DATA.TXT:
-----------------------------------------------------------------------
Reaction Time for STAR to DISappear.

                 1   0.334
                 2   0.264
                 3   0.342
                 4   0.262
                 5   0.696
                 6   0.545
                 7   0.251
                 8   0.255
                 9   0.319
                10   0.233

              Mean = 0.350 seconds
Standard Deviation = 0.151 seconds
-----------------------------------------------------------------------


 5 = Measure PC timing Accuracy
-------------------------------

This shows how accurately the PC timing is compared to the 1PPS.
On most PC's the RMS "diff" is 5 microseconds. If the difference
is more than 1 millisecond, a warning is given and perhaps an
explanation so you can track down the problem.

Example screen:
-----------------------------------------------------------------------

                      KIWI  -  Precision Timestamp Utility

Press ESC key to quit to Menu.

The following times are the difference between the PC timing and GPS 1PPS.
Leave this running for an hour or so, the MAX figure will then indicate
the accuracy of your timing measurements with this PC - depends on CPU
clock speed and your hardware. Times are in milliseconds.

Note that 0.001 ms = 1us or one millionth of a second.

Calibration reveals this PC has a clock error of +17.170 seconds per day.
This error, and quartz thermal changes are corrected in the following data.

12:17:26      GPS - PC = 0.000 ms     Max = 0.000 ms     ReSynch # 1
12:17:27      GPS - PC = 0.001 ms     Max = 0.001 ms     ReSynch # 1
12:17:28      GPS - PC = 0.001 ms     Max = 0.001 ms     ReSynch # 1
12:17:29      GPS - PC = 0.003 ms     Max = 0.003 ms     ReSynch # 1
12:17:30      GPS - PC = 0.002 ms     Max = 0.003 ms     ReSynch # 1
12:17:31      GPS - PC = 0.000 ms     Max = 0.003 ms     ReSynch # 2
12:17:32      GPS - PC = 0.001 ms     Max = 0.003 ms     ReSynch # 2
12:17:33      GPS - PC = 0.003 ms     Max = 0.003 ms     ReSynch # 2
12:17:34      GPS - PC = 0.001 ms     Max = 0.003 ms     ReSynch # 2
12:17:35      GPS - PC = 0.001 ms     Max = 0.003 ms     ReSynch # 2

-----------------------------------------------------------------------
The above test shows that the PC is able to time events with a
maximum error of "only" 3 millionths of a second!

Example DATA.TXT:
-----------------------------------------------------------------------
Nothing is written for this function.
-----------------------------------------------------------------------

 6 = Position Averaging and Satellite Tracking Info
---------------------------------------------------

Because any one reading of the lat/lon from a GPS can be up to
50 metres off, averaging the position from the GPS over an hour
or so can provide you with a better position.  This function
will do the averaging for you, show you the Std deviation and
number of samples.

Latitude and Longitude are in WGS84 coordinates.

Example screen:
-----------------------------------------------------------------------

                  Position Averaging and Tracking Info


 29 42' 23.084215" N    StdDev =  0.023074 arc secs
 95 36' 48.085833" W    StdDev =  0.078370 arc secs
      47.4 Hgt metres    StdDev =  0.133286 metres
     155.6 Hgt feet      StdDev =  0.437291 feet

      66 samples         Satellites Tracking = 5


Need to gather at least 5,000 samples to be confident to a 0.2 (arc) second
level (esp for latitude). If you can run the program for 12 hours, you can
be confident down to 0.1 arc seconds. Sampling for longer does not improve
accuracy.

A summary is written to DATA.TXT every 5,000 valid samples.

Press S key to Save current values to DATA.TXT (wait for beep)   ESC for Menu
                      KIWI  -  Precision Timestamp Utility

Timing Data is appended to     DATA..TXT

Press ESC key to quit to Menu.
-----------------------------------------------------------------------

Example DATA.TXT:
-----------------------------------------------------------------------
 29 42' 23.081192" N    StdDev =  0.014902 arc secs
 95 36' 48.087534" W    StdDev =  0.078863 arc secs
      47.4 Hgt metres    StdDev =  0.134946 metres
     155.6 Hgt feet      StdDev =  0.442737 feet
      64 samples, Invalid Fix Count = 0
-----------------------------------------------------------------------

 7 = Timestamp Function
-----------------------

This function, using the KIWI switch, will allow the user to
manually time an event on an audio or video recorder. When the
switch is pressed, an audible tone from the PC speaker is
activated as well as activation of the KIWI LED which can be
placed somewhere in the FOV of the telescope or the chamber of
the CCD camera, or some other device used to produce an audio
and/or video recording.

At the same instance as the switch is pressed, a time in
milliseconds is displayed on the computer monitor for reference.

At the end of the function, all timings are written to the KIWI
standard output file DATA.TXT for future use.


Example screen:
-----------------------------------------------------------------------

                      KIWI  -  Precision Timestamp Utility

Timing Data is appended to     DATA.TXT

Press ESC key to quit to Menu.

Calibration reveals this PC has a clock error of -6.196 seconds per day.
This error, and quartz thermal changes are corrected in the following data.

Started Timing @
00:34:09  HH:MM:SS      23-08-2002  DD-MM-YYYY  UTC
 29 42' 23.2" N
 95 36' 48.1" W
         26.9 Hgt (metres)
         88.3 Hgt (feet)

Press Switch to Time event

00:34:46.458 UTC
00:34:51.411 UTC
00:34:56.435 UTC
00:35:01.407 UTC
00:35:06.408 UTC

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

Example DATA.TXT:
-----------------------------------------------------------------------
Started Timing @
00:34:09  HH:MM:SS      23-08-2002  DD-MM-YYYY  UTC
 29 42' 23.2" N
 95 36' 48.1" W
         26.9 Hgt (metres)
         88.3 Hgt (feet)

00:34:46.458 UTC
00:34:51.411 UTC
00:34:56.435 UTC
00:35:01.407 UTC
00:35:06.408 UTC

Finished Timing @
00:35:38  HH:MM:SS      23-08-2002  DD-MM-YYYY  UTC
 29 42' 23.1" N
 95 36' 48.5" W
         25.0 Hgt (metres)
         81.9 Hgt (feet)
-----------------------------------------------------------------------


 8 = Generate Time Signals (sound and sight)
--------------------------------------------

This function will create an audible tone similar to WWV
from the PC speaker, and also activate an LED flash.

Time pips and LED flashes are coded to give hours and minutes.

The sound pip, and LED flash are synchronized
to better than 0.1 mS to UTC


Example screen:
-----------------------------------------------------------------------

                      KEA - GPS based Audio Time Code Generator

Software by Geoff Hitchcox, Christchurch, New Zealand.

An Integrity Fault generated if 1PPS outside a 50 uS window     ESC for Menu

       Pip = Seconds marker
    Hi Pip = 10 second marker
 Short Pip = 55,56,57,58 second marker
Double Pip = Minutes
Triple Pip = Hours (24HR), lower tone if Hr = Min
Silent Pip = 59th second   "P" Key to Toggle Pips, to gather stats quietly!


DD MM UTC      Number of satellites in position fix
12-09-2002     4

02:02:30

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

Example DATA.TXT:
-----------------------------------------------------------------------
Integrity Fault @ UTC 08-09-2002 20:54:47, 1.0040(secs)=Delta, SVs= 2 FIX=NN
Integrity Fault @ UTC 08-09-2002 20:57:19, 0.9960(secs)=Delta, SVs= 3 FIX=YY
Integrity Fault @ UTC 08-09-2002 21:11:25, 1.0040(secs)=Delta, SVs= 2 FIX=NN
Integrity Fault @ UTC 08-09-2002 21:12:26, 0.9960(secs)=Delta, SVs= 4 FIX=YY
Integrity Fault @ UTC 08-09-2002 21:40:20, 1.0040(secs)=Delta, SVs= 2 FIX=NN
Integrity Fault @ UTC 08-09-2002 21:41:31, 0.9960(secs)=Delta, SVs= 3 FIX=YY
Integrity Fault @ UTC 08-09-2002 21:52:35, 1.0040(secs)=Delta, SVs= 2 FIX=NN
Integrity Fault @ UTC 08-09-2002 21:53:25, 0.9960(secs)=Delta, SVs= 3 FIX=YY
Integrity Fault @ UTC 09-09-2002 04:44:52, 1.0040(secs)=Delta, SVs= 2 FIX=NN
Integrity Fault @ UTC 09-09-2002 04:46:53, 0.9960(secs)=Delta, SVs= 2 FIX=NY
Integrity Fault @ UTC 09-09-2002 06:18:12, 1.0040(secs)=Delta, SVs= 1 FIX=NN
Integrity Fault @ UTC 09-09-2002 06:32:35, 1.0040(secs)=Delta, SVs= 1 FIX=NN
Integrity Fault @ UTC 09-09-2002 06:46:58, 1.0040(secs)=Delta, SVs= 2 FIX=NN
Integrity Fault @ UTC 09-09-2002 06:48:26, 0.9960(secs)=Delta, SVs= 4 FIX=NY
Integrity Fault @ UTC 09-09-2002 06:48:31, 0.9960(secs)=Delta, SVs= 4 FIX=YY
Integrity Fault @ UTC 09-09-2002 06:48:36, 0.9960(secs)=Delta, SVs= 4 FIX=YY
Integrity Fault @ UTC 09-09-2002 06:57:35, 1.0040(secs)=Delta, SVs= 2 FIX=NN
Integrity Fault @ UTC 09-09-2002 06:57:38, 0.9960(secs)=Delta, SVs= 3 FIX=YY

Integrity Fault Summary @ UTC 09-09-2002 07:56:13
Early = 9    Late = 9    Busy = 61    OK = 43083

 29 42' 23.4" N
 95 36' 48.6" W
         22.8 Hgt (metres)
         74.8 Hgt (feet)

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

Integrity Faults occur when the information from the GPS is not 
consistent with itself. Each PPS is timed by the PC, if it is 
outside a window of plus or minus 50 microseconds, an Integrity 
Fault is reported. The "delta" figure shows the time from the 
last "valid" 1PPS to the current PPS. If it is very near 1.0 
seconds and a multiple of 1 or 4 milliseconds, the fault is
caused by the GPS being confused by multipath signals and so
giving a 1PPS that is not aligned to UTC. If "delta" is at any
other number (eg 0.6458 seconds) it indicates that "noise" has
got into the system. 

The "busy" count is not really an error, it just indicates the
number of times the GPS was "too busy" to give a valid
timestamp, the software is designed not to be troubled by this
condition.


 9 = Linear Time Reduction (of pre-recorded events)
---------------------------------------------------

(The following explanation is by Don Oliver, who suggested this
function and supplied the algorithm, thanks Don!)

Using the KIWI switch, an event time can be manually reduced from a
pre-recorded media such as an audio tape or video tape. The switch
is used as a stopwatch and will allow four basic functions using
three stopwatch values from up to 30 iterative passes within the
function gathering the three stopwatch values for each pass.

This function assumes a linear rate of the timing device
and the recording device, whether recording or playing back,
of which they most likely will be or can be assumed over a short
period of time.

Note that these reduced times are only times from one event to the other
and the final UTC timing will have to be derived from these values.

The first option is used as a basic stopwatch mode and the average and
standard deviation values are displayed only. The basic use of this
option would be when there is only one known time mark on the recording
media and the user will measure from, or to, that mark to time the
event. For most cases, only two stopwatch values would be required for
this, but to keep the logic simple in KIWI, the user gets one extra and
must be used whether the user needs it or not. It is most important that
KIWI be calibrated using function 5 if a GPS is attached so that the
stopwatch settings are as accurate as possible using this option, and of
course, an assumption is made at the same time that the recorded media
is playing back at the speed it was recorded at, and more importantly,
that it was running at a correct clock rate speed to begin with. This is
one of the most unreliable situations for an accurate manual time
reduction.

The second, third, and fourth options noted below will use a simple
linear interpolation scaling factor derived from the KIWI measured
time between the two known markers, and what the user defines as the
correct time between those two known time markers, to change the
measured times so that the time between the two known markers is correct.

And so as an example for the classic situation
of an event occurring between two known times;

And the KIWI stopwatch is always running ...

T1 = first known time measured with KIWI switch
T2 = event time measured with KIWI switch
T3 = second known time measured with KIWI switch

and then ...

T13 = real time between T1 and T3 supplied by the user
T1 is shifted to zero
T2 and T3 are shifted to time offsets from T1
LS = linear scaling factor = T13/(T3-T1)
T2S = T2 Scaled = T2*LS = the correct time from T1 to T2
T3S = T3 Scaled = T3*LS = the correct time from T1 to T3

And so continuing;

The second option allows the user to make a forward extrapolation in
time to an event occurring after two known time marks.

The third option allows the user to make a reverse extrapolation in
time to an event occurring before two known time marks.

The fourth option allows the user to make an interpolation in
time to an event occurring between two known time marks,
the classic situation.

The extrapolated and interpolated values from the second, third, and
fourth options are displayed on the monitor as an average value
with standard deviation for the number of iterative passes completed.

The output of this function is also written to the KIWI standard output
file DATA.TXT.

This method, when used with care, can be used to time an event to 1/10th
second or better with an accuracy of 1/2 of that. The PE value can be
assumed to be eliminated in this process since it can be assumed
that the user will respond with the same PE value to the time marks as
the event.

And, it can be easily tested using a valid time-stamped recording.


Example screen for classic situation:
-----------------------------------------------------------------------

              Linear Time Reduction (for pre-recorded events).

PC is CALIBRATED, following timing accuracy is HIGH.

Refer to KIWI documentation for information and use of this function.

T1..........T2.......T3
Two of these must be time references, the other the unknown

ESC key to return to MENU

Sample: 1
Press the SWITCH when you observe T1
Press the SWITCH when you observe T2
Press the SWITCH when you observe T3

   Time from T1 to T2 =    s.sss seconds
   Time from T2 to T3 =    s.sss seconds
   Time from T1 to T3 =    s.sss seconds

Press  Y  to Accept,  N  to try again,  R  to Accept AND Reduce

  Sample #    T1 to T2 (secs)    T2 to T3 (secs)    T1 to T3 (secs)
    1           4.998              4.988              9.986
    2           4.995              5.029             10.024
    3           4.950              4.988              9.938

Average T1 to T2 =     4.981 secs       StdDev =    0.027 secs
Average T2 to T3 =     5.002 secs       StdDev =    0.023 secs
Average T1 to T3 =     9.983 secs       StdDev =    0.043 secs

Enter a number (0 to 3) for one of the following:

0 = No reduction required, return to MENU
1 = T1 to T2 is the known constant
2 = T2 to T3 is the known constant
3 = T1 to T3 is the known constant

Please enter the correct time from T1 to T3 (secs) = 10

   Reduced T1 to T2 =     4.990 secs
   Reduced T2 to T3 =     5.010 secs
   Reduced T1 to T3 =    10.000 secs

Reminder: The above data is saved in   DATA.TXT
Any Key to return to MENU

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

Example DATA.TXT:
-----------------------------------------------------------------------
  Sample #    T1 to T2 (secs)    T2 to T3 (secs)    T1 to T3 (secs)
    1           4.998              4.988              9.986
    2           4.995              5.029             10.024
    3           4.950              4.988              9.938

Average T1 to T2 =     4.981 secs       StdDev =    0.027 secs
Average T2 to T3 =     5.002 secs       StdDev =    0.023 secs
Average T1 to T3 =     9.983 secs       StdDev =    0.043 secs

   Reduced T1 to T2 =     4.990 secs
   Reduced T2 to T3 =     5.010 secs
   Reduced T1 to T3 =    10.000 secs
-----------------------------------------------------------------------


 0 = Quit Program (also ESC Key)
--------------------------------

When exiting the program, the program checks to see if it has a
valid time from the GPS, if it has, it will update the time on
the PC. The value for the "hour" is derived from the CMOS clock
to allow the PC to be running on local timezone.


Example screen:   (the following shows how KIWI uses "local" time)
-----------------------------------------------------------------------

Wed 08-14-2002  7:03:45.23 C:\KIWI >date
Current date is Wed 08-14-2002
Enter new date (mm-dd-yy): 08-15-02

Thu 08-15-2002  7:06:45.99 C:\KIWI >time
Current time is  7:06:50.60a
Enter new time: 2:07

Thu 08-15-2002  2:06:59.97 C:\KIWI >kiwi (and then Esc from kiwi)

                      PC set from GPS to 02:08:32

                KIWI  -  Precision Timestamp Utility


Why Kiwi? (pronounced "key we")

It is the national bird of New Zealand, where this FREEWARE was written.


Software by Geoff Hitchcox, Christchurch, New Zealand.


   "Tis with our judgements as our watches:
   None go just alike, yet each believes his own."

                      Alexander Pope (1688..1744)

NOTE: This freeware software must not be bundled with a commercial product!

Thu 08-15-2002  2:08:36.97 C:\KIWI >

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

Example DATA.TXT:
-----------------------------------------------------------------------
Nothing is written for this function.
-----------------------------------------------------------------------


NOTES:
------

Limitations of the Program:

As with any software design, there are often compromises made or
limitations in function. I think there are three issues the user
should know of.

1. LEAP second.

Function 8 (time pips) are self correcting and are not affected
by leap seconds.

If function 7 is invoked just prior to a leap second change at
UTC midnight, then any timings made after 00:00 UTC will be 1
second fast (assuming leap seconds are added). The next time
function 7 is invoked subsequent to the leap second, the leap
second will be accounted for. This problem only occurs once
every 18 months or 2 years as leap seconds are added to keep UTC
(dependant on earth rotation) in synch with atomic time.

2. Continuous Timestamps.

If you trigger KIWI on a continuous basis (in function 7), then
its accuracy will not be valid after an hour! The program was
designed for "intermittent" timestamps. The program needs at
minimum, 5 seconds contiguous "non triggered time" every 50
minutes for the PC clock to stay phase locked within 1
millisecond of UTC.

3. Running KIWI on a floppy Disk.

If KIWI is placed on a "bootable" DOS floppy disk, then it does 
not matter what the operating system on the Hard Disk is 
(Windows, LINUX, UNIX etc). KIWI will not save any data to the 
floppy OR hard disk. If KIWI is run on a hard disk system, it 
will save its timing data to the hard disk. The reason it will 
not save data to the floppy disk is because it shuts down all 
interrupts and the floppy motor would keep running, so the 
program detects whether it is running on a floppy and advises on 
the screen (in appropriate functions) that it will not save data
to disk.


Acknowledgements:
----------------

The concept for function 9, Linear Time Reduction, was provided
and documented by Don Oliver (Houston,Texas USA).  Many thanks
to Don for the idea and testing.


DISCLAIMER (Oh to keep things tidy):
------------------------------------

GEOFF HITCHCOX DISCLAIMS ALL WARRANTIES, EXPRESSED OR IMPLIED,
INCLUDING BUT NOT LIMITED TO, ANY IMPLIED WARRANTY OF
MERCHANTABILITY OR SUITABILITY FOR A PARTICULAR PURPOSE.

Specifically, the author makes no representation or warranty
that the software is suitable for any particular purpose.

No claim for or right to recover any other damages, including
but not limited to, loss of profit, data, or use of the
software, or special, incidental, or consequential damages or
other similar claims can be made. In no event will the author's
liability for any damages to you or any other party ever exceed
the registration fee paid (US ZERO DOLLARS) to use the software,
regardless of any form of the claim.

Regards,  Geoff Hitchcox

http://www.geocities.com/kiwi_36_nz/

36 Tomrich Street
Christchurch
New Zealand
South Pacific.

 Latitude:  43.5197 degrees SOUTH
Longitude: 172.7022 degrees EAST

Please note: This freeware is not to be bundled with any
commercial application!

---------------End of README.TXT-----------------
