RighTime v2.54 Copyright 1991-93, GTBecker
Released May 1, 1993 All Rights Reserved
The following files are contained in the evaluation distribution file:
RIGHTIME.TXT (this file) TESTTIME.COM
If any of these files are missing, you do not have a complete evaluation
package. A fresh distribution file of the latest version of RighTime and its
associated programs and documentation is always available on the Air System
Technologies BBS, 214/869-2780 (1200-14400 8N1).
These files are the copyrighted property of G.T. Becker and Air System
Technologies, Inc., of Dallas, Texas, USA.
You may use these evaluation programs for up to one month, and you may -
and are encouraged to - pass the unmodified evaluation distribution file along
to others, but no one may modify, rename or sell the files or programs to
anyone under any circumstances. Although they will continue to function, the
programs will notify you when the evaluation period has elapsed.
If you choose to continue to use RighTime you must register your use.
Registered RighTime users receive a diskette containing the current version of
the registered programs and additional utilities, a printed user manual and
license agreement, automatic notification of new releases, and enthusiastic
support from the author whenever needed. The registered version of RighTime
is functionally identical to the shareware distributed evaluation version,
except that it lacks registration reminders, it is smaller in size, it can
operate in a non-verbose and silent mode, and it is serial-numbered to the
individual or business registrant.
To register, fill in the form at the end of this document and send it
with US $40 for each machine that is to run RighTime to Air System
Technologies, Inc., 14232 Marsh Lane, Suite 339, Dallas, Texas 75234-3899,
What is RighTime Version 2.5?
RighTime is a resident real time clock correcting program for MS-DOS,
PC-DOS and DRDOS running on PC/AT-class machines. It corrects both DOS and
CMOS Real Time Clock (RTC) clock rate error as large as 5.5 minutes per day,
and it increases the DOS clock resolution from about 0.055 second to 0.01
second. It occupies only about 6.5K of system RAM and can normally be loaded
high. If RighTime is installed as suggested, the system clock will behave as
properly and accurately as the system clock of a computer should.
RighTime brings exceptional system time-of-day clock performance to the
machine with no additional hardware. With RighTime installed, the standard
real time clock system becomes an Adaptive Mathematically Compensated Crystal-
controlled Oscillator based clock. Under stable conditions, RighTime can
produce a system clock that keeps time within 0.5 second per week or better
(some users have reported consistent rate accuracy of 0.07 second per week).
An error rate of 0.5 second per week is about 0.8 part per million, or more
than 100 times better than an unconditioned crystal time base alone, or about
30 times better than a moderately conditioned one like a modern watch of
quality. A technical paper about CMOS RTC and DOS clock problems and
RighTime's approach to solving them can be found on the BBS ([email protected]
RighTime Version 2.5 exhibits many new features, but retains version 1.1
compatibility (except /H). In addition to numerous invisible internal
improvements, RighTime Version 2.5 sports the following changes:
* True 0.01 second DOS clock resolution: the 55-millisecond barrier
is broken! The DOS clock increments in 0.01 second steps while
maintaining the standard "tick" rate. [See /TH below.]
* File mode correction storage can be directed to either
RighTime.COM or to a separate data file (RighTime.COR), which will
prevent anti-virus watchdog utilities from flagging RighTime.
* Correction storage can be directed to any valid CMOS RAM address
that is available in the machine, including extended RTC CMOS and
MCA-type (PS/2 and -SL) CMOS RAM. [/R, /RM]
* Four levels of function disabling. [/TH, /TD, /TA, /K]
* Disabled cool correction and improved warm correction application.
[/D, /U, /X]
* Options are provided that allow learning disabling and ignoring
time and date sets. [/L, /I]
* Simple but effective security makes unauthorized time sets
virtually impossible. [/#]
* Automatic Daylight/Standard time change in the USA. [/A]
* Fixed offset values may now range from -90.00 to +90.00 seconds.
* Logging of all time-related activity. [/G]
* Highlighting of significant data and ANSI color screens. [/Y]
* On screen memory-jogging help. [/?]
* Silent and defeatable self test. [/Q]
* Non-verbose mode (registered version only). [/V]
* /W, /C and /O values may be expressed as either integers
(hundredthseconds) or as fractional seconds (i.e. /W-1234 =
/W-12.34), consistent with a new displayed data format.
* RighTime's status report includes duration since last time set,
duration since last applied CMOS adjustment and percentage of warm
system operation (any /F and extended CMOS /R only).
* Intelligent application of warm and cool corrections, weighted
observed error and distributed modification of correction values
(both warm and cool corrections will be modified based on observed
error at timeset and percentage of warm system operation) (any /F
and extended CMOS /R only). Although the practice remains the
ideal, it is no longer necessary to set the clock immediately
after booting and just prior to shutting the system down to learn
the cool and warm corrections; you may set the time at any time,
and RighTime will do its best to adjust the corrections
* Tools are provided to visualize and verify RighTime's actions.
[TestTime, TestIncr, RighTLog, ViewCMOS]
+ An improved TestTime is able to resolve clock error to four
decimal places (to tenths of milliseconds), reports the DOS-
CMOS offset immediately, and displays the DOS time to
+ TestIncr measures and displays the DOS clock resolution.
+ RighTLog displays the record of all time-related activity on
the system. It identifies the source of each timeset and
dateset by program name, making hidden timeset
+ ViewCMOS can now display the first 128 bytes of MCA-type
CMOS on those machines equipped with it.
* SETUPRT2, a full-screen install program, eases first-time
installation and startup as well as reinstallation when changing
* Professional TimeSet v7.1 or later (on May 1, 1993 the current
version was 7.2) by Pete Petrakis (Life Sciences Software,
Stanwood, Washington USA) can directly control several RighTime
functions and provides a RighTime status screen. These two
programs were developed in concert and work exceptionally well
together. TimeSet uses a modem to call any of five atomic clock
time standards (in the USA, Austria, Italy and Sweden) or a
secondary local time source (TimeGen) to set the system clock to
millisecond accuracy. It is highly recommended. Its shareware
evaluation file is available on the Air System Technologies BBS
and on BBSs worldwide.
What Does RighTime Do?
First, here is what RighTime cannot do:
- RighTime cannot correct clock boards or computer motherboard
clocks that do not emulate the PC/AT CMOS RTC hardware clock and
its BIOS support precisely. The large majority of current 80286-,
80386- and 80486-based machines (termed PC/AT-class) are
- RighTime cannot properly correct an unstable clock; most clocks
are slow or fast and they are essentially unvarying. If your
clock wanders aimlessly or has suddenly changed behavior, your
hardware might need repair (perhaps simple battery or CMOS RTC
RighTime exploits the better qualities of each of the two clocks in the
system and improves upon them by doing four fundamental things:
1) RighTime slaves the DOS system clock (which has higher resolution)
to the CMOS RTC (which has higher stability).
2) RighTime augments the DOS clock driver routines with its own
routines, which provide resolution in excess of 0.01 second.
3) RighTime monitors time set commands (and the equivalent system
calls from any program) to learn the CMOS RTC clock error rate.
4) RighTime improves and maintains accuracy by regularly calculating
and applying corrections or adjustments to each clock. The DOS
clock is normally corrected every four seconds. The CMOS RTC is
adjusted as required.
RighTime intrinsically sets the CMOS RTC and solves the midnight
rollover date error that exists in most DOS/BIOS combinations,
eliminating the need for other utility programs or drivers that perform
these functions. Unlike DOS alone, the CMOS RTC seconds transition will
be properly set by RighTime and the time will be set to 0.01 second
resolution, and these qualities will survive through rebooting. If the
machine is powered off, the clocks will be appropriately adjusted for
the off period at the next boot, and a separate correction is learned
and maintained for that period.
Each time you set the time, RighTime will improve the accuracy of the
corrections, which will subsequently improve the accuracy of the clocks.
It should be easy to achieve a worst-case error of less than 0.5 second
per day (usually quickly improving to less than 0.5 second per week).
Numerous options are provided that allow fine tuning the correction
process to your system and application.
An option [/S] is provided which assists in automatic timesetting by
directing RighTime to notify a batch file when a specified number of
days has elapsed since the last timeset or if the program's correction
capabilities have been exceeded. This feature is available both at boot
and when RighTime is resident.
Large time changes will not affect the corrections. This permits
seasonal time changes; these bi-annual changes can also be automated in
RighTime usually runs fine with Microsoft Windows (although Windows
itself lags DOS by a second or two) and with multitaskers and DOS-based
Knowledge Saves Time - Contraindications
Just as with medicine that cures ills, RighTime needs to involve itself
in several areas of the operating system to do its work, and there can be
side-effects. Side-effects of RighTime are usually minor and easily
correctable. Be aware of the following so you'll know what you can do if you
* If your system issues messages that you've never seen before
installing RighTime, or mysteriously locks up or outright crashes,
you should either increase the STACKS parameters in your
CONFIG.SYS file or replace them with STACKS=0,0. There are no
steadfast rules, but if you currently have no STACKS statement or
if you use STACKS=9,128, first try STACKS=0,0 (unless other
software on your system requires an explicit STACK statement; in
that case, try STACKS=16,256). Sophisticated installations might
need even more space.
* If Windows fails to properly load or issues suprising messages,
you might need FILES=15 in your CONFIG.SYS file. (Even if you
have plenty of FILES in UMBs, Windows needs a minimum number in
conventional RAM). After you make any changes to CONFIG.SYS,
reboot the machine.
* Some programs (usually games) reprogram the 8254 timer-counter to
improve the video screen update rate or to produce sounds. Since
the 8254 is part of the DOS clock mechanism, RighTime will
normally immediately correct the mode change - and slow the game.
This protection can be relaxed without compromising the clock by
selectively disabling RighTime [usually /TD] for the duration of
the game and reenabling it afterward.
* Communication sessions can sometimes be disturbed by RighTime. An
option [/M] yields automatic disabling during communication
activity on selected ports. Don't use this option unless you find
that you must; if it is used when it is not required it can worsen
communications rather than improve them.
* Programs that bypass the operating system and control the hardware
directly can cause odd symptoms. Tape backup utilities seem to be
the most common offenders, potentially causing DMA errors with
RighTime's /F options. Most of these programs offer an option
that uses the DOS and BIOS function calls instead; use it, or
disable RighTime [/TA] for the duration of the backup.
* Disk defragmenters (PCCOMPRESS, SPEEDDISK, DOG, etc.) can produce
cross-linked files resulting in loss of data if RighTime is active
(with any /F option). DOS is not aware that these utilities are
moving files around, so RighTime isn't either. RIGHTIME (WITH ANY
/F OPTION) MUST NOT BE RUNNING [/K] WHEN DEFRAGMENTING THE DISK
DRIVE ON WHICH IT RESIDES.
* Some screen savers and program schedulers misfire prematurely and
some on-screen clocks run fast due to RighTime's high resolution
DOS clock mode. Screen savers can also issue unexpected time sets
that will disturb RighTime's learning unless ignored [/I-1]. Some
programs also have difficulty when run from within a DOS window.
Disabling the 0.01 second DOS clock mode [/TH] usually allows
these programs to coexist with RighTime.
* The ideal location in the AUTOEXEC.BAT for RighTime is first. If
you want to load RighTime in high memory, be aware that the
program uses several anti-virus and anti-hacking techniques to
protect itself. This requires a large (about 80K), but brief, use
In most cases, a program conflict can be resolved by temporarily
disabling RighTime. This can be accomplished manually at the DOS
prompt, with a batch file, or via a multiple-command alias in 4DOS or
NDOS. RighTime functions can be quickly reenabled afterward.
Qmodem users: Qmodem apparently issues time sets directly to the
CMOS RTC hardware; RighTime cannot trap or prevent
these time sets which confuse RighTime's learning and
produce poor clock regulation. Several attempts have
been made to discuss this problem with MSI (the
provider of Qmodem) but the company has not responded.
Until this problem is resolved, Qmodem users will need
to decide which product they wish to use more. If you
want RighTime to correct your clocks well, you cannot
RighTime is now provided with a simple installation process that will
assure successful startup. We strongly suggest that you follow this
procedure. After you have some experience with the program you can manipulate
options at the command line level if you wish, but even for these changes the
supplied installer program, SETUPRT2, is recommended.
1) If you are currently running RighTime, kill it (RighTime /K).
2) Make a new directory and get in it, for example:
3) Copy the shareware distribution file into the new directory and
unzip it. Verify that all of the files listed above are present.
4) Run from a pure DOS prompt (not a shell or DOS session):
5) SETUPRT2 will allow you to select many options, but you can
initially accept the defaults by simply selecting "Install"; you
can change them anytime later.
6) When asked to do so, set the time accurately (preferably with
TimeSet). Then type EXIT. Your AUTOEXEC.BAT and, if required,
CONFIG.SYS files will have a line added to them. The existing
files will be renamed with an .RT2 extension.
7) You will normally be directed to reboot by pressing Ctrl-Alt-Del.
8) Set the time accurately for a few days, ideally immediately before
you shutdown your system for the night and immediately after
booting in the morning. If you never shutdown your system, set
the time accurately a few times each day, well spaced.
You should find that your system clocks rapidly become more accurate.
If they do not, check RighTLog for invisible, unexpected time sets (which will
confuse RighTime's learning). The name of the program that set the time is
identified in the log. You might be surprised to find that some programs -
that have no apparent business doing so - set the clock, usually incorrectly
and always disturbing RighTime. You will need to consider an option [/I] that
can deal with these rogue programs; read on.
You will normally not need to proceed beyond this point, but if you have
trouble with the standard installation, the following sections discuss
RighTime in greater detail.
Part of the RighTime process requires storage of some correction data.
The amount of data is small and it must be stored in a place that will survive
rebooting and power failures. To use RighTime, first decide where to store
the corrections. There are two options: disk file and unused CMOS RAM. In
general, try the disk file option first if you can. If you have a hard disk,
you can use the disk file or possibly the CMOS RAM option. If you have only
floppies the disk file option is impractical, so consider the CMOS RAM option.
A diskless machine cannot use the disk option, unless it is equipped with a
non-volatile RAM disk which appears to the system as any other disk would.
The CMOS RAM option will involve some initial bravado: although only the
first 52 bytes of a 64-byte CMOS RAM are defined by the original IBM PC
standard (presumably leaving the last 12 bytes available), most modern BIOSs
use these 12 bytes for other functions. If you have adopted a user-specified
hard disk format, for example, your specification might be stored there.
Sometimes the area is used for the power-on password in machines so equipped.
Many modern machines contain 128-byte CMOS RAM areas, and others (some PS/2
models and SL-based machines) contain 256 bytes of CMOS RAM. SETUPRT2 will
only allow selection of CMOS RAM addresses that allow for the proper storage
of RighTime's correction data, but there is no guarantee that the address you
select is unused in your machine configuration. You can run ViewCMOS to look
at the CMOS RAM contents, but again, there is no guarantee that even a large
block of zeros is free and safe to use. Before attempting to use the CMOS RAM
option, be forewarned that CMOS RAM contains system setup data that RighTime
might inadvertently disturb; be prepared to reset the setup data if the CMOS
RAM option is unsuccessful on your system. If this dissuades you or if you
are otherwise reluctant, use the disk file option if you can.
If you choose the disk file option, RighTime will attempt to write to a
disk file (its own program file or a separate data file) from time to time, so
write access must be allowed. If the "disk" is actually a non-volatile RAM
disk card, the card must remain in the machine if this option is to work
properly. If you use the disk file option on a battery powered hard disk
laptop, you might want to decrease the update frequency to allow your hard
disk to spin down after periods of inactivity to increase the battery life
(see the /U option, Command Line Syntax, below). The disk file option causes
RighTime to maintain an open handle to a file which will present a problem
when running a file-defragmenting utility on the same disk drive that RighTime
is updating, but RighTime can be killed during defragmentation and restarted
afterwards (see the /K option, Killing, Disabling and Reenabling Resident
RighTime can also be configured with no correction storage, with
consequential loss of some of its utility (see No Correction Storage Option,
If you know how fast or slow your clock appears to run per day, you can
optionally speed the learning process of RighTime by suggesting a correction
to the program as a signed number in hundredths of seconds - positive for a
slow clock, negative for a fast clock. For example, if your clock runs about
two minutes fast per day, the suggested correction should be -120.00 (120
seconds). There are actually two corrections that RighTime normally applies,
one while the system is running and warm, and another when the system is
turned off and cool. If you know the cool correction, you can suggest it
also. If you don't know one or either correction, RighTime will determine
them anyway; it'll just take a little longer for the corrections to mature to
If you need to restart RighTime and it is currently resident and
running, you must first kill the resident program (see Disabling and
Reenabling Resident RighTime, below). If appropriate, the corrections that
RighTime has already learned can be suggested to the new program copy.
If you have been using another resident driver or TSR to correct the
weaknesses of your clock, remove all references to it from your CONFIG.SYS and
AUTOEXEC.BAT files and, once you are confident that RighTime is all it
purports to be, remove the other driver or TSR from your system.
Setting the Time
If you have access to a time standard, use it. For best accuracy, use a
telephone service time-setting program such as TimeSet. Alternatively, you
can listen to WWV, CHU or another shortwave time signal, or a radio network
news broadcast, and be prepared to set your clock when you hear the beep on
the minute or hour. Don't use a radio station that is airing a call-in talk
show; the audio is usually delayed six to ten seconds on such programs to
allow for profanity dumping, and so the beep will be equally late. An all-
news format station is probably not delayed. To be certain, call the radio
station and ask for engineering; they will know. Local telephone time
services are usually poor; don't trust that they are correct. What is
important is accuracy.
Do not set the time from within Microsoft Windows. If you do, the
resulting time set will be late. This probably also applies to DESQView and
other multitaskers. Always set the time (or run the time setting program)
from a pure DOS prompt.
RighTime will monitor each time set occurrence, learning from your
adjustments. Whenever you notice or suspect that the indicated DOS system
time is insufficiently correct to satisfy you, reset it accurately. You will
find that the clocks will become more and more accurate and the need for
adjustment will decrease, becoming infrequent; however, you must set the time
accurately at least once per month (an option is provided to assist in
automating this [/S] (see Errorlevels, below).
Allow sufficient time to elapse between time sets so that enough error
exists for RighTime to use in its correction calculations; the more time that
you allow, the better the correction factors that are determined. Careless
timesets will result in poor correction or even wild clock behavior; remember
that you are "training" the program, so do it well. If you are eager, four
hours will probably be an adequate initial wait; of course, you can use your
system as you normally would during this time. Each time the time is set,
RighTime will make appropriate adjustments to the cool and warm correction
After a few days of your diligent time setting, the corrections should
settle to fairly constant numbers which will be true indications of the
uncorrected performance of your CMOS RTC. Once RighTime is installed, you can
display the current corrections by simply running RighTime again at a DOS
prompt (no parameters are required). The correction values and other current
status will be displayed and a functional self test will normally be
performed, verifying that RighTime is currently running properly on your
When running RighTime, whether at installation or when resident, the
program will normally be silent. If RighTime beeps, pay close attention to
its report; it is warning you of an unusual condition or failure. If data
highlighting is not disabled [/Y0], unusual conditions or failures will be
As long as RighTime is in use and you've been diligent in your
adjustments, and the corrections have matured, the CMOS RTC error will not be
more than 0.5 second, and the DOS clock will be much more accurate than that.
RighTime has limits of one week of inactivity, and one month between
time sets, that can be corrected to a maximum of 5 minutes, 27.67 seconds per
occasion; beyond that, all bets are off. In that case, unpredictable, and
probably incorrect, clock changes can occur, but RighTime will advise you of
its difficulty if it can. For example, if your clock runs two minutes slow
per day and you don't use the system for three full days, when you boot up you
will receive a message warning that the clock needs to be adjusted manually
(or automatically; see Errorlevels, below). The subsequent adjustment will
not affect the corrections.
No Correction Storage Option
If you have difficulty with both the CMOS RAM and disk file options or
you need or wish to use neither option, RighTime can still correct the clocks
for as long as the system runs continuously. What RighTime has learned will
be lost when you reboot or power down, and there can be no cool correction.
Otherwise, all of the comments above apply. If you suggest a good warm
correction and you set the clock after you boot, RighTime will serve well.
Killing, Disabling and Reenabling Resident RighTime
There will normally be few, if any, occasions that will require you to
disable RighTime, but some instances exist that can only be resolved by
temporarily removing RighTime from contention. There are four levels of
disabling; each level is more restrictive in what RighTime is permitted to do.
From least restriction to most, the disabling options are /TH, /TD, /TA, and
Once RighTime is resident, it can be disabled by running at a DOS
drv:\path\RighTime /TH [disables 0.01 second DOS clock]
drv:\path\RighTime /TD [disables DOS clock maintenance]
drv:\path\RighTime /TA [disables all functions (including
Resident RighTime can then be reenabled by running:
drv:\path\RighTime /E [enables all functions]
Programs that defragment or reorganize the hard disk must always be run
with no open files. When using RighTime's disk file option [any /F], an
open handle is maintained to a file, so BEFORE RUNNING A DISK
REORGANIZING UTILITY, RighTime MUST BE KILLED. After the utility
completes, RighTime can be restarted with the same command line used in
the AUTOEXEC.BAT file. However, most defragmenting utilities suggest
rebooting afterward; in that case, AUTOEXEC.BAT will restart RighTime.
This precaution is not required when using the CMOS RAM option.
RighTime can be irreversibly disabled (or "killed") by running:
drv:\path\RighTime /K [entire resident program terminated]
The /K switch will cause the function of RighTime to terminate, but the
memory that was allocated to RighTime will remain allocated and
unavailable. If you wish, another copy of RighTime can be started with
different options; in that case, a memory map will indicate multiple
RighTime allocations, but only one will be active.
If it is your intent to permanently remove RighTime from your system,
you can do so by killing the resident program and removing or REMing the
RighTime invocation in your AUTOEXEC.BAT. Rebooting is not immediately
RighTime provides another method to temporarily disable its function in
instances where the program interferes with serial modem communication.
An option will continually test for the presence of Data Carrier Detect
(DCD) from each specified serial port. When DCD is active, RighTime
will be disabled similar to /TA. Normal function will resume when DCD
becomes inactive. Multiple ports can be specified. If any of the
specified ports indicates DCD active, RighTime will be disabled. This
option should not be used unless it is truly required. This option can
worsen communications in some instances.
To activate DCD monitoring, use the /M switch as follows:
drv:\path\RighTime /M1 [for COM1]
drv:\path\RighTime /M2 [for COM2]
drv:\path\RighTime /M3 [for COM3]
drv:\path\RighTime /M4 [for COM4]
Several ports can be simultaneously monitored, for example:
drv:\path\RighTime /M1 /M2
DCD monitoring can be disabled with
For DCD monitoring to function properly, the active modem control
string must contain &C1 for Hayes-compatible modems. This will
cause DCD to properly reflect the presence of carrier. If DCD is
stuck on and a /M switch specifies that port, RighTime will never
be permitted to function. If you run RighTime to display a status
report, the current DCD state will be reported. It should
normally report "... DCD monitoring is enabled", not "... DCD
active; RighTime function disabled".
Microsoft Windows users (in 386-Enhanced mode) will need to
prevent a false contention report by clicking on Control Panel,
386-Enhanced, then select Never Warn for each affected port, then
Normally, RighTime learns from each time set. Some programs invisibly
set the clock - in most cases for no apparently good reason - which
disturbs RighTime's learning. If RighTime is run with logging enabled
[/G], all time and date sets will be logged, and each log entry,
displayed by running RighTLog, identifies the program name of the source
of the time or date set. Once the sources of the offending time or date
sets are identified, RighTime can be selectively controlled to ignore
those errant sets. There are four approaches that work equally well,
although the last of the four might be the easiest.
1) As when temporarily disabling RighTime in the examples
above, the offending program can be preceded by a RighTime
command which will cause the time sets to be ignored as if
the program never issued them. If the program always issues
a pair of sets, one for the date and one for the time,
RighTime can be directed to ignore the following two sets
drv:\path\RighTime /I2 [ignore next two sets]
If the program issues only a time set, it can be ignored
drv:\path\RighTime /I1 [ignore following set]
In each case, once the specified number of sets to be
ignored has been issued by the offending program, RighTime
will resume normal function, accepting and processing time
and date sets. If there are several offending programs,
each will need to be treated similarly.
2) Another method, useful if the offending program issues a
variable number of sets, is to precede the program with a
RighTime command which causes all time and date sets to be
ignored until further notice. The program can then be
followed by a Rightime command which discontinues ignoring
time and date sets. A small batch file might look like
drv:\path\RighTime /I-1 [ignore all sets]
drv:\path\RighTime /I0 [resume allowing sets]
3) A logical extension of that method is to issue the /I-1 in
the AUTOEXEC.BAT invocation of RighTime. This method is the
only way to deal with time sets that are produced by a
resident module like a screen saver. Including /I-1 in the
AUTOEXEC.BAT invocation of RighTime will cause all time and
date sets to be ignored, regardless of the source - even the
DOS prompt TIME and DATE commands - until otherwise
directed. Legitimate time sets - like from TimeSet - can be
permitted by surrounding the TimeSet invocation with the
inverse of the commands above, i.e.
drv:\path\RighTime /I0 [allow sets]
drv:\path\RighTime /I-1 [resume ignoring all sets]
TimeSet v7.10 or later, however, provides for this ability
through its RighTime Control Panel. No additional RighTime
commands are required, but you need to remember to use the
RighTime Control Panel each time you use TimeSet to set the
4) If you will normally be using only one program to set the
time and date, a special form of the /I switch will cause
all time and date sets except those from the specified
program to be ignored; time or date sets from the specified
program will be allowed. For example, if you use TimeSet
and issue a /I"TimeSet" in the AUTOEXEC.BAT invocation of
RighTime, only TimeSet will be allowed to set the time or
date; all other sets will be ignored as if /I-1 had been
issued. If you want to allow the DOS prompt TIME and DATE
commands, you must specify /I"COMMAND" since COMMAND.COM is
the setting program (if you use 4DOS, use /I"4DOS"). If a
network workstation is to be set to a server's time, the
connection processor should be named (under LANtastic, NET
CLOCK \\SERVERNAME will set the date and time to those of
SERVER; if RighTime /I"NET" is invoked, no other time sets
will be allowed).
When combined with the /# switch, these ignore options cannot be
changed by subsequent RighTime executions. This makes it possible
to prevent unauthorized time or date changes. If, for example,
AUTOEXEC.BAT invokes RighTime .../I"NET"/#, logs in and sets the
time to a server, the workstation user will be unable to change
the date and time - unless he uses extraordinary means like
renaming a copy of COMMAND.COM to NET.COM to use its TIME or DATE
command. If absolute security is required, a second RighTime
line, RighTime /I-1/#, should be issued after the time and date is
set in AUTOEXEC.BAT; in this case, the first RighTime invocation
must not express /#, since that would disallow the second RighTime
Learning can also be disabled. This allows for time sets that will not
affect the current corrections. The corrections are essentially fixed
while learning is disabled. Learning can be disabled in the
AUTOEXEC.BAT RighTime invocation and it can be temporarily controlled by
TimeSet v7.10 or later. It cannot be disabled at any other time. To
disable learning, add the /L0 switch to the AUTOEXEC.BAT RighTime
In the registered version only, an additional option is allowed:
drv:\path\RighTime /V0 [non-verbose mode produces no screen
output (including errors), is completely
silent, and disables self-testing]
Included with RighTime is a program tool that can provide some
interesting insight into the relationship of the clocks in your system and the
function of RighTime. TestTime takes no command line parameters. It will
determine and express whether or not RighTime is running in the system, tests
and reports on some critical modes, and it provides a continuous single line
display of the clock system status.
The status line is straightforward:
CMOS=date:hh:mm:ss DOS=date:hh:mm:ss.hh !Appl=+0.00 Meas=+00.0000
CMOS is the CMOS RTC clock data. The equal sign that follows "CMOS"
will flash at a two second rate if the CMOS RTC interrupts are normal.
DOS is the DOS system clock data, including hundredths. The hundredths
digit might appear to be less than a blur due to your video vertical
scan rate. It should be possible to see the difference between 0.01
second DOS clock mode and the standard 0.055 second mode [/TH].
Appl is the current correction being applied to the DOS clock in
hundredths, if RighTime is resident. The exclamation mark (!) before it
indicates the moment that the DOS clock is corrected. This normally
occurs every four seconds, but can be skipped occasionally if internal
resources don't allow it.
Meas is the signed time difference between the CMOS RTC and DOS clock in
seconds, resolved to four decimal places (tenths of milliseconds). A
positive difference indicates that the DOS clock leads the CMOS RTC (it
displays a higher, later, advanced time). Under normal conditions, this
value should be well within a few milliseconds (normally it is within a
few tenths of a millisecond) of the "Appl" value. It is usually
possible to directly view the clock drift at this resolution; the
difference will increase for awhile, then suddenly revert back to a
value close to the "Appl" value each time the DOS clock is corrected.
You can use TestTime to learn much about the behavior of the two clocks
in your system. Try running it without RighTime installed and notice that the
DOS clock is never the same as the CMOS RTC. Set the time and run TestTime
again. If your DOS sets the CMOS RTC, check to see if the seconds are
synchronized, which is indicated by a Meas value of zero. They probably are
not. Run TestTime some time later and see if the relationship between the
clocks has changed; there's a good chance that it will have. Which, if
either, is correct? Notice also that the Meas value flops around several
hundredths of a second; this is due to the 0.055 second standard DOS clock
resolution. Try these things with RighTime installed and see the difference
for yourself. If RighTime is doing its job, you should see that Appl and Meas
are essentially the same value - the former is the cause, and the latter is
TestIncr measures and displays the difference between one unique DOS
clock time and the next. With RighTime running normally, this value should
always be 0.01 second. Without Rightime running or when the 0.01 DOS clock
mode is disabled [/TH], the value will average about 0.0549 second. TestIncr
is for disbelievers.
ViewCMOS displays the content of the CMOS RAM. It can be useful to the
adventurous RighTime user who is searching for an available area in which to
store the corrections. Be warned once again, though, that it is not easy to
identify such a space. Even if many zeros appear to suggest that an area is
unused, remember that zero is a perfectly valid number that might be
significant to the BIOS, and that, even if some space is available, the entire
CMOS RAM might be checksummed. A bad checksum will result from any changes
that are not brought about by the BIOS itself, so the next boot might fail,
forcing you into Setup.
On systems that contain additional CMOS RAM that is addressed like PS/2
MCA CMOS (the 386SL, for example), its presence is indicated. The full-screen
display can be switched from conventional CMOS RAM to the MCA-type CMOS RAM
contents. A message will announce that there is no MCA CMOS available if that
is the case; this is not normally an error message but if you expect that your
machine should have MCA-type CMOS RAM available this message could indicate a
problem with your machine or its setup.
If RighTime is run with logging enabled [/G], file RighTime.Log will be
present in the directory from which RighTime is run. RighTLog will display
this binary file. Each time-related activity will be logged.
The most important of the log's indications is the source of each time
and date set. If a time or date set is present whose source you do not
recognize, it is likely that the time is being set by a program that has no
business doing so. Some program names might contain non-displayable
characters which RighTLog replaces with an underscore; these programs are more
difficult to identify, but are often resident modules like screen savers.
These time and date sets will disturb RighTime's learning and can compromise
the accuracy of the system clocks. As discussed above, these errant time and
date sets must be ignored with RighTime's /I switch.
Each time set log entry also notes the percentage of time since the last
timeset that the system was warm. If this value is much smaller than you
think it should be, RighTime might not have been active when you thought it
should have been. The most common cause of this is using a /M switch that
monitors a communication port whose DCD is stuck active. You might need to
make &C1 a default for your Hayes-compatible modem by doing the following:
from within a communications program (ProComm, Telix, etc.),
Type ATZ and press Enter [you should get an OK]
Type AT&C1&W and press Enter [you should get an OK]
This will initialize your modem to the required DCD mode at power up
and, unless changed, each time ATZ is sent to the modem. Communication
programs can change it, though; if you continue to have this problem,
you'll need to do some more study.
/GA will also log each CMOS RTC adjustment. These entries can become
annoyingly numerous if the warm correction value is large. /GA is not
RighTLog is intended to produce a screen display. If you try to
redirect the output to a printer, you will get unexpected results. RighTLog
writes to the screen in either bottom-to-top or top-to-bottom order, so the
printout could be backwards.
Command Line Syntax
RighTime must be executed in the AUTOEXEC.BAT (or a batch file called by
it) so that it becomes a resident extension of DOS. Most of the 28 options
available can be expressed at this initial resident invocation. RighTime can
also be run as a transient program at the DOS prompt to change modes or to
report on its current status. A smaller number of options are effective in
the transient execution. Each option listed below indicates when - resident
or transient or both - it can be used. The options are not case sensitive
(either /f or /F will work) and space between options is not required. There
must be no space between an option switch and its associated parameter.
RighTime [/F[M|R]|/R[[M]n]|/N] [/Un] [/W[n]] [/C[n]] [/Dn] [/L0]
[/In] [/G[A]] [/K|/T[H|D|A]|/E] [/Mn] [/A] [/Sn] [/Yn] [/On]
[/Xn] [/Hn] [/Q] [/V0]
Storage: /F=File[com|cor] /R=cmosRam[[Mca]addr] /N=None /Umin=Update
Correction: /W[Warm] /C[Cool] /Dmin=warmupDelay /L0=noLearn
State: /Inum|"name"=Ignore /K=Kill /T=Tempdisable[Hund|Dos|All]
Other: /Mport=comport(s) /A=autoseAsonchange /Sdays=autotimeSet
/G=log[All] /Ohunds=Offset /Xhours=eXtrapweight
/V0=notVerbose /Ycolor=forceansi.Sys /Hbytes=stacklengtH
/A Automatic Daylight/Standard time change. Implements the American
standard biannual one hour adjustments at 0200 local time on the
first April and the last October Sundays whether the machine is
running or not. If RighTime is running, there will be no
detrimental effects caused by the time change. If the machine is
not running, the time change will shift the time-since-last-time-
set by one hour which will, in turn, have an effect upon the next
time set's learning. The error will normally be small and will
diminish with subsequent time sets. The Dallas Semiconductor
DS1287 and DS12887 and Motorola's MCCS146818B1M properly implement
the time change rule as do most modern brand name chipset-based
machines, but many machines are supplied with the Motorola
MC146818P or its equivalent even today. Although they might have
been manufactured as late as mid-1991, these parts will misbehave
in April, advancing the clock on the last Sunday (which was the
convention prior to 1986). Some modern chipset-based machines
will not change at all.
[Applicable in resident invocation only.]
/Cn Sets the initial cool correction rate in seconds per day
(default 0, maximum +327.67 or -327.68).
/Dn Changes the cool adjust period allowance (after boot) from the 30
minute default. The valid range is 0 to 60. Consider this option
if your system exhibits a large difference in warm and cool
corrections and cabinet temperature is suspect, or if you need to
disable cool correction.
/D0 Disabled cool correction. Applies the warm correction value
at all times and learns only a warm correction value from
observed error. This is useful to users who never shut down
their systems or who switch to and from other operating
systems that cannot run RighTime.
/E Reenables all temporarily disabled RighTime functions. If /TA has
been in effect for less than the maximum period allowed (this
duration depends on the warm correction value and is displayed
when /TA is invoked) the clocks will be properly adjusted to
correct for the disabled period.
/F (or /FM) Directs RighTime to store corrections in and retrieve
corrections from its own program file.
/FR Directs RighTime to store correction factors in
RIGHTIME.COR, a data file that will be created in RighTime's
/G Activity logging. Creates and maintains a comprehensive file of
all user and program time-related activities. It produces a
binary file, RighTime.Log, which is displayable with program
RighTLog. This is an informative and valuable diagnostic tool.
/GA Includes routine one-second CMOS clock adjustments. On a
machine whose warm correction is large, these will be
frequent and will clutter the log.
/Hn Internal stack length. The default is 160 bytes; valid range is
64 to 1024 bytes. Since RighTime is an operating system
extension, its stacks might be used by other programs for brief
periods. RighTime reports on current internal stack usage.
Following a system crash, when RighTime is restarted it will
report on the stack usage prior to the crash (/F and extended CMOS
/R, only). If the crash was due to insufficient stack space, this
parameter value must be increased. There is no relationship
between this option and the STACKS command in Config.Sys. [The /H
switch of RighTime version 1.1 (for DR DOS 5.0) is no longer
available, but a similar effect can be achieved by using /O-3.]
/In Ignore time and date sets, semi-permanently (/I-1, restored via
/I0), for a specific count (e.g. /I2), or from all but a single
specified program (e.g. /I"TimeSet") to prevent the spurious time
and date sets of GEOS (America Online users take note), several
Norton utilities, games and other facilities from confusing
RighTime's learning and to allow time comparison without setting.
When used with /#, system time sets can be altogether disallowed
or restricted to a specific source. /#/I"NET", for example, would
assure that the time cannot be set from any source other than NET.
The workstation system time could be set no other way, assuring
that the time could be not falsely set. See /#.
[Resident or transient]
/K Terminates (kills) RighTime function. The memory that is occupied
by RighTime remains allocated and unavailable.
/L0 Disables learning. The program ignores errors at time set and
applies fixed corrections. This is useful to programs that reset
the DOS clock and use it as an event timer.
/Mn Directs RighTime to suspend all functions (except time and date
set and read processes) while the specified communications port
indicates that DCD (Carrier Detect) is active. n may be any of 1
through 4, corresponding to COM1 through COM4. This option
prevents RighTime from potentially interfering with high-speed
communications functions; it is usually only required for modem
speeds of 9600 bps and above and should only be used if it is
determined that it is required. Normal function will resume when
communications activity ceases. PROPER DCD CONTROL REQUIRES THAT
&C1 BE PART OF THE ACTIVE HAYES-COMPATIBLE MODEM INITIALIZATION
STRING. Several /M switches may be specified; for example, a
system with both COM1 and COM2 high-speed modems installed would
have /M1 /M2 specified in RighTime's invocation. /M0 disables DCD
monitoring until the next /M invocation. Microsoft Windows might
erroneously report that a communications port is in contention
when a /M switch is used; this can be avoided by clicking on
Control Panel, then 386-Enhanced, selecting the Never Warn button
for each affected port, then OK.
[Resident or transient]
/N Disables correction storage. Learned corrections will be lost at
shutdown and there will be no cool correction possible.
/On Offset allows DOS clock trim in seconds. Default is 0; the
valid range is -90.00 to +90.00. This can be used to anticipate
relay and contactor actuation delays and motor start times in
process control system applications;
/Q Defeats self testing and quiets minor status messages.
[Resident or transient]
/Rn Directs RighTime to store corrections in CMOS RAM.
/Raddr directs RighTime to store corrections in CMOS RAM. The
default address is 63, but it is increasingly unlikely that this
will be a usable address; the address can range to 127. The
specified location is that of the last of 12 bytes for the default
address, or the last of 22 bytes for any other location. Using
the default will not provide full features and is maintained for
compatibility with earlier RighTime versions. This option is
potentially harmful, since a careless value might allow RighTime
to overwrite setup data. Inadvertently changing a hard disk type,
for example, can lead to sadness. Be careful.
/RMaddr will place the corrections in MCA-type CMOS RAM. There is
no default: an address must be specified. The specified location
is that of the last of 22 bytes. The valid address range is 22 to
127 for 82360SL-type CMOS RAM and 274 to 2047 for PS/2 MCA-type
/Sn Changes the period that must elapse since the last timeset before
RighTime will set the corresponding program termination code. The
termination code can be tested with the IF ERRORLEVEL command in a
batch file. If this switch is not expressed, the default period
is 28 days. If more than the specified period has elapsed since
the last time set, RighTime will terminate with ERRORLEVEL set to
[Resident or transient]
/T Temporarily disables RighTime functions.
/TH disables 0.01 second DOS clock maintenance.
/TD or /T disables DOS clock maintenance. CMOS clock
maintenance continues. This mode can persist
/TA disables all RighTime functions (including logging)
and reports the maximum allowable disabled duration.
If the disabled period is expected to exceed this
duration, use /K instead, then restart RighTime as in
the AUTOEXEC.BAT invocation with /D0 to force warm
These disabled modes can be reenabled with /E.
[Resident or transient]
/Un Changes the CMOS RAM or disk file update period from the two
minute default. The valid range is 2 to 60, and the value must be
even. If you think the default is unnecessarily frequent, you can
decrease it by increasing this value. Remember that this is part
of the cool correction process, and less frequency might affect
correction accuracy in severe situations.
/V0 Non-verbose. No screen output will be generated (including error
messages). Available to registered users only.
[Resident or transient]
/Wn Sets the initial warm correction rate in seconds per day
(default 0, maximum +327.67 or -327.68)
/Xn Sets the error extrapolation weighting threshold. This can
desensitize RighTime's learning by decreasing the significance of
the observed error from any time set whose previous time set was
less than n hours ago by a linear factor (e.g. for the 4-hour
default, the observed error from the second of two timesets that
are one hour apart is considered only 0.25 significant), range 1
to 72 hours.
/Yn Forces data highlighting if a non-standard ANSI.SYS is
undetectable or if colors other than the white-on-black default
are desired. n is normally a two-digit value whose first digit
represents the background color, while the second digit determines
the foreground color. Standard ANSI color numbers are expected:
White-on-red, for example, results from /Y17. To force the
default on a non-standard ANSI driver, use /Y07 or simply /Y7.
/Y0 Automatic significant data highlighting (if ANSI.SYS is
present) is defeated with /Y0. To produce a text file of
RighTime's report without ANSI sequences, use /Y0,
redirected to disk.
[Resident or transient]
/# Lock RighTime command line interface. Placed on the AUTOEXEC.BAT
invocation, this switch will prevent any transient RighTime
execution from having effect. Although RighTime command lines
will continue to be checked for validity, no action will be taken
on any command, making it impossible to change RighTime's mode.
If /I-1 is also used in the AUTOEXEC.BAT, it will normally not be
possible for the system time or date to be changed except via the
system BIOS setup screen. See /I.
[Resident or transient]
/? On screen help memory jogger. This is automatically produced if
the command line contains a syntax error.
[Resident or transient]
A sophisticated AUTOEXEC.BAT invocation of RighTime might be:
C:\RT2\RighTime /G /FR /D0 /U20 /S7 /A /I"TimeSet" > C:\RT2\RIGHTIME.RPT
IF ERRORLEVEL 255 ECHO "** Trouble with RighTime load **"
IF ERRORLEVEL 1 TIMESET [in automatic configuration]
IF you have SHARE loaded, this TYPE statement might yield an
"Access denied" error. This message results from a command
processor bug which leaves RIGHTIME.RPT open after RighTime's
startup. A work-around for this idiosyncracy will be posted on
RighTime provides four unique termination ERRORLEVELs. The ERRORLEVEL
value can be tested in a batch file to guide subsequent operations.
Code value Indication
0 Installed normally, cool correction within range, last
timeset within specified elapsed period.
1 Installed, cool correction within range, but more than the
specified period has elapsed since a timeset.
2 Installed, but cool correction was out of range (the system
has been inactive too long), so a timeset is externally
255 Not installed due to syntax error, insufficient memory,
incompatible hardware, etc.
These codes can be tested in a batch file with the IF ERRORLEVEL
command. For example, if the ERRORLEVEL value code is 1, then more than 28
days have elapsed since the last timeset (this duration can be changed with
the /S option). It would be wise to have a NIST telephone service time
setting program such as TimeSet automatically set the time in this situation
to prevent RighTime from exceeding its one month limit, or you could cause
execution of the system DATE and TIME commands to urge the user to set them
If You Have Trouble
Please note the symptoms and circumstances as thoroughly as is
reasonably possible and contact
Air System Technologies, Inc.
14232 Marsh Lane, Suite 339
Dallas, Texas 75234-3899 USA
RighTime Software License Agreement
When you register, this will be the agreement between you (the user) and Air
System Technologies to which both parties are bound upon the payment and
acceptance of the license fee, which is part of the registration fee for
RighTime and its associated programs.
Grant of License
In consideration of the payment of each license fee by the user to Air System
Technologies, Air System Technologies will license to the user a nonexclusive
right to use one copy of each of the software programs in the RighTime package
on one computer at a time. The license is expressly for program use only, per
the terms of the license. No other rights are implied.
Ownership of Software
Air System Technologies is the owner of the software programs and holds full
title to them. The user may own the physical media on which the software
programs are recorded, including the original disk which is provided by Air
System Technologies to the user, but the user does not own the software
programs nor any copy of the software programs.
The software programs and the documentation are copyrighted and therefore may
not be copied without permission. Permission is granted to the licensed user
to make copies of the software programs and the documentation as required in
the conventional course of computer system data backup. Permission is granted
to copy the shareware distribution file in its complete, unmodified form. No
other permission to copy is granted.
Use and Transfer
The Grant of License applies only to one copy of each of the software
programs. Simultaneously functional resident copies of the software programs
each require licensing. You may not transfer any copy (except the shareware
evaluation distribution file) of the software programs to a computer which is
not under your control, nor may you rent, lease, sell or otherwise assign
control of the software programs to anyone.
The license is in effect until it is terminated. When the license is
terminated, the user's rights that are granted by the license are revoked.
The license is automatically terminated without notice upon violation of any
of its terms.
Disclaimer of Warranty
No warranty of performance or suitability is expressed or implied. Every
effort has been made to make the software programs deliver as the
documentation describes, but the correctness for your application or
environment cannot be assured. Air System Technologies cannot assume
responsibility for the failure of the software programs, nor for any
consequence of their use.
RighTime Use Registration Form RighTime Evaluation Version 2.54
Fill out this form, enclose the required funds and mail to:
Air System Technologies, Inc.
14232 Marsh Lane, Suite 339
Dallas, Texas 75234-3899 USA
I would like to register the use of RighTime.
Business name: _______________________________________________________
City:______________________________ State:_________ Zip: _____________
Where did you get RighTime? __________________________________________
Registration is required for each copy of RighTime that is
simultaneously machine resident.
The registration fee is US$ 40.00 each up to 10 copies. Call for larger
How many copies of the RighTime package do you want?_______________________
On what media? 5.25"/360K______ 3.5"/720K______
Total enclosed: US$____________
Make your check or money order payable to Air System Technologies.
Does your business require an invoice?____________