| |
TD - (Time Dilation / Time/Date Jumps)
|
|
|
Introduction ?: |
If you're not already familiar with TD, this page won't
make much sense to you !. Sorry!.
Here, I'm presenting only some views on this issue, some facts,
some test results, etc. TD has been controversial; I'm mainly trying to
clarify some TD issues. You're welcome to disagree with opinions expressed
here; but, where possible, technical facts
should be used as the bases of opinions. And, I hope that my definition of
"TD" (ie, Date/Time jumps in PCs, at boot, and possibly subsequently) is
sufficiently close to the "standard" definitions.
For good background info, and views from the people (Jace Crouch and Mike
Echlin) who "identified" TD in 1997, experimented with it, etc, you must
check their web sites.
Also, the content at these sites is evolving, and so you should review the
details there on a regular basis, in my opinion.
Compaq performed some initial TD tests, sometime in mid/late '98 (I don't
recall the dates), and indicated that TD existed. Compaq then made some
arrangements to market and/or recommend some TD software from the
Crouch-Echlin team. (There are still
some references on the web to these arrangements -
corrections welcome!).
Then, Intel and Compaq made additional fresh TD studies, and published
detailed (final ?) findings. Basically, they concluded that TD could exist,
but does not - but, you should read their
full reports, or download a PDF copy from
here. The Intel report is well structured, and includes substantial
accurate relevant technical data. (You'll notice some trivial typos, etc,
but the intent is clear). What's most interesting (IMO) regarding the Intel
comment that they never noticed TD, is that they
seem to have subsequently created something like TD in one of their
own products, and had to issue a BIOS fix to overcome the problem. I haven't
much info on this saga, but check out
some references.
There are many other web sites with TD references. Try some Searches!. If
you know of any good ones, please let us know -
we'll include them here. However, beware!. We've seen some sites which
merely copy TD-data from other sites - sometimes without acknowledgements -
which could be flattering, or theft... But, sometimes the original data
(which is copied) is technically incorrect, or unproved, etc. This activity
has a few consequences, including:
- it indicates that the copier doesn't understand the
issue,
- casual observers might believe something
that's repeated at multiple sites.
Beware !!!. Some TD sites, commentaries, products, etc, are totally
speculative; some seem to be based exclusively on the findings of "others";
some are totally inaccurate, etc. Be cautious !.
Mr. Harlan Smith, now regrettably deceased, played a very significant part
in investigating, highlighting and documenting many Y2K and TD issues. For
some of his concise comments on TD, visit
here or
here.
We would hope that the overall TD issue can be finally resolved, and hope
that the contributions here will lead towards that end, rather than trigger
additional controversy!. |
|
Our Involvement / Background ?: |
I became interested in this matter from the very beginning
(1997) of the public discussions, and keenly watched the developments up
until late '98, and indeed communicated with some of the main TD people.
However, by that time, when it seemed that TD was still a technical
"mystery", with numerous theories, speculation, etc, and no rigid proof, I
also did some investigation into TD. I continued to closely watch the
Intel/Compaq studies and findings, and reports from
Tom Becker and others, and compliment them on their major efforts.
To pre-empt the question: I'm a qualified electronics engineer, but have
spent most of my career (30 years) in software development - perhaps 5% in
hardware (digital electronics, I-O interfaces, CPU cards, comms, etc), and
the 95% in software (numerous assemblers, OS development, microcomputer
systems, microprocessors, some BIOS software, and hi-level apps (commercial,
industrial, scientific), etc). Rightly or wrongly, I believed that the TD
issue had to have specific technical bases, should be fully provable, and
should leave no room for speculation. And, so, I got more
involved... |
|
The Truth on TD - Facts / Opinions: |
In my opinion, Intel's report is very accurate and very
thorough. But, marginally incomplete. (One wonders why the report is
"incomplete" - maybe they didn't try to create TD; maybe they had no wish to
offend BIOS manufacturers; maybe..... ?).
TD does exist.
To clarify, my initial findings and explanations differed from the TD
people, and from Intel. I concluded that:
- TD exists
- There is only a single cause for TD, namely poor BIOS
code
- TD can be easily demonstrated (contrary to Intel's
findings)
- PCs with a potential for TD can be identified
- TD can be easily fixed
- TD is NOT usually Y2K related (though it can be in rare
circumstances)
- TD is NOT dependent on the BIOS "Path" (unless the BIOS
code is very poor)
- TD has been around since the initial IBM PC-AT of 1984
- The poor BIOS code which leads to TD is still common
today
- As the speeds of PCs increase, the probability of TD
decreases
- RTC buffering cloaks TD (where present); the
probability of TD decreases very significantly
- TD can arise at BOOT time, as already claimed/observed
- TD can also arise whenever any PC software issues
RTC-commands to retrieve the Date/Time
- Other factors also influence the probability of TD
(higher in "Busy" PCs, etc).
Here's a simple "test" you should try: approach your PC users, especially
users of older PCs (286/386/486) and users who've been using the PCs for
some years. Ask if they ever observed unexplained incorrect dates/times when
they powered on the system, or indeed, subsequently ?. Simple test, eh ?.
"Poor BIOS code" is where the code accesses the RTC, but does not conform to
the RTC specs. These specs can be breached in many ways - not checking UIP
correctly, not checking UIP at the correct times, not guaranteeing that
accesses will complete within specific times; not enabling and/or not
disabling other PC activities at the correct times; etc, etc.
In general, TD occurs very rarely:
- If the BIOS code in a PC is correct, then it will never
occur in that PC.
- If the BIOS code has RTC "holes", then it may
occur. It is not possible to predict when it might strike in these
PCs, nor at what frequency: there are too many variables, as indicated
above. And, if the RTC is buffered, (ie, an additional buffer/latch), the
probability is greatly reduced, though technically, still not zero
!.
In the following sections, I'll briefly touch on some of the above
opinions... If you'd like further details to be included here,
let me know. Most of the above observations, opinions, facts, should be
considered in light of the Crouch-Echlin and Intel commentaries. |
|
TD and Y2K: |
TD, in general, is not related to Y2K, because most of the
BIOS "holes" I've seen are not Y2K related. This contradicts the
Crouch-Echlin findings. They continue to say that all their observations
occur only with 20xx dates, and that the frequency of TD will
increase on/after 01/01/2000. I don't agree - in general. (One possible
explanation for the C-E theory/findings is that they saw only
Date jumps, and that in all cases, the date jumped to 20xx. With
most of the DATE jumps in my tests, the year did indeed jump up to 20xx, but
that was just the result of some calculations in the PC, and was not
related to the actual date of the PC. In any case, "Time will tell" - unless
"time" itself exhibits TD !. If the incidence of TD significantly increases
after 01/01/2000, then I'm wrong.
[PS: The ideas on this web page were submitted
to CIS and to various NGs in late '98 and throughout '99, and this web page
was composed in early '99. As of the time of writing this PS (April 2000),
I've closely watched the technical Y2K NGs throughout the Y2K changeover,
and have seen just ONE lonely reference to TD, with some speculation that it
might be related to Y2K. Time/Date errors were observed on a single old 386,
which was very rarely switched on. There was no proof that the problems were
Y2K related. I've seen almost NO recent discussion of TD anywhere. And I
recently visited one of the main TD sites, and noticed that the Y2K
countdown clock there was still running (perhaps a few lines of Java). Not
only is the Y2K clock still showing, but the behaviour of the clock reveals
screwed-up software logic on how a countdown should be implemented - some
values are decreasing, some increasing. And this from TD experts ?.
Conclusions - as of April 2000 - you choose... incompetent; brilliant; scam;
the fat lady didn't sing yet... End of PS]
However, there is a relationship between TD and Y2K, in some instances: Poor
BIOS code (related to date handling), usually applies without any
dependency on the century value (19/20).
- In all PCs without "century correcting BIOS code", which
covers all PCs up to about '96/'97, and very many since then, then a
century-dependency cannot apply, and the TD errors cannot be Y2K-related.
- In PCs with "century correcting BIOS code", then poor
date-handling could occur in the non-correcting code, and/or in the
correcting code. If the BIOS code has flaws only in the
non-correcting code, then TD probabilities will not depend on century
values. If the BIOS code has flaws in the new correcting code (irrespective
of flaws in the non-correcting code), then TD probabilities may
depend on century values. In the latter case, flaws may exist only when the
century is 19 (in which case TD will occur only in 19xx), or flaws may exist
only when the century is 20 (in which case TD will occur only in 20xx), or
flaws may exist without reference to the century value (in which case the TD
probability is not century-dependent).
..... whew..... wanna read that previous paragraph again ?.....
And, I've seen different BIOSes which fall into each of the above categories
!. Therefore, TD is somewhat century dependent - though in some BIOSes, TD
probability might be higher only in 19xx, and in others, it's higher in
20xx. Generally, however, TD is not Y2K dependent. |
|
TD Tests / Proof: |
To get at some technical facts, I wrote some test-code to
illustrate TD. This code consists of two programs:
- A TSR program which makes the PC very "busy", so that TD
might occur more frequently than once every few weeks (!), and therefore be
readily "observable". Apart from making the PC "busy" (hopefully in a
"smart" way <wink>), this code does not otherwise intentionally "interfere"
with the operation of the PC in any other way.
- A small standard program which just asks for the DOS
Date/Time (Int-21h), and the RTC Date/Time (through the BIOS, Int-1Ah), and
highlights any "Jumps" in the returned values.
The programs use just standard DOS and BIOS facilities. They do not break
any "rules" (unless via unintentional bugs !!). They do not read the
Date/Time directly from the RTC. These test programs are not for sale, nor
shareware, freeware, etc. (And, in the absence of such code being publicly
available, you are, of course, entitled to totally ignore these notes and
findings !).
Here's a small sample of a test run on a "real" IBM AT, using MS-DOS 5.0
(version is irrelevant). The actual test results contain much additional
trace/diags data, so I'm just showing some relevant data here. Dates are
MM-DD-YYYY:
DOS:05-08-1999 14:25:16
RTC:05-08-1999 14:25:16 START !
DOS:05-08-1999 14:58:37 RTC:65-65-2065
14:59:32 RTC JUMP ?
DOS:05-08-1999 14:58:38 RTC:05-08-1999 14:59:33
RTC JUMP ?
DOS:05-08-1999 14:59:11 RTC:65-65-2065
15:00:07 RTC JUMP ?
DOS:05-08-1999 14:59:11 RTC:05-08-1999 15:00:08
RTC JUMP ?
DOS:05-08-1999 16:31:00 RTC:65-65-2065
16:34:28 RTC JUMP ?
DOS:05-08-1999 16:31:01 RTC:05-08-1999 16:34:29
RTC JUMP ?
DOS:05-08-1999 16:35:04 RTC:05-08-1999 65:65:65
RTC JUMP ?
DOS:05-08-1999 16:35:05 RTC:05-08-1999 16:38:40
RTC JUMP ?
DOS:05-08-1999 16:45:51 RTC:65-65-2065
16:49:44 RTC JUMP ?
DOS:05-08-1999 16:45:52 RTC:05-08-1999 16:49:45
RTC JUMP ?
DOS:05-08-1999 18:09:49 RTC:05-08-1999 65:65:65
RTC JUMP ?
DOS:05-08-1999 18:09:50 RTC:05-08-1999 18:16:02
RTC JUMP ?
DOS:05-08-1999 18:54:44 RTC:65-65-2065
19:02:10 RTC JUMP ?
DOS:05-08-1999 18:54:44 RTC:05-08-1999 19:02:11
RTC JUMP ?
Notice that the RTC yields invalid DATEs or TIMES (where underlined),
sometimes. If DOS were to get invalid results on one of these RTC reads,
(eg, at Boot), then the DOS Date/Time would appear to "Jump".
The "20" century showing in the "Date Jump" readings is caused by the way I
handle the invalid dates in the display routines. It's not coming from the
RTC, nor from the BIOS. The exact cause is as follows: If I get an invalid
YY reading, such as FFh, I run this through a BCD-to-BIN function, which
calculates 15 and 15, and delivers a binary/decimal value of 15*10 + 15 =
165. This is added to the century value of "19", yielding 2065, as
displayed. This BCD-to-BIN function also explains values like 50 (F0), 00
(A0), 65 (FF), etc, in the DD, MO, HH, MI, SS values, where the code
displays only the lower 2 digits. I have not checked how the BCD-to-BIN
functions in DOS/CLOCK$ operate on invalid values - they might yield the
same results as my code, or different results - all depends on how the
programmer intended to process "invalid" values. If the DOS/CLOCK$ BCDtoBIN
functions are similar to mine, it might explain why the E-C people saw only
20xx TD errors!!
...... hmmmm..... didn't think you'd want to read that para again..... |
|
TD Identify: |
I have experimented with some test-code (using two separate
approaches) to identify PCs with poor RTC-based BIOS code. This code also
establishes if there is any Y2K dependency, RTC-double-buffering, etc. If
there is interest in this software, this could be "packaged" and released.
Freeware ?. Shareware ?. Any views ?. |
|
TD Fix ?: |
Based on the above details, and especially on the "tests",
I have written some code to "fix" TD, both at BOOT, and at any time
subsequently. This is a DOS Driver / TSR.
Other software suppliers, especially the Crouch-Echlin people, also supply
TD fixes.
Is it interesting that many software developers can supply TD solutions,
yet I've been unable to locate anybody who has identified TD exactly,
or who can rigourously illustrate it, or who can show a solution actually
working ?:
- How is software developed to fix a problem that is not
accurately defined ?.
- How is this software tested and approved, if the problem
cannot be created/observed ?.
- How can one be sure the "fix" works ?.
Magic ?. Brilliance ?. Snake-oil ?. Commentary - abundant; facts - scarce.
In our TD tests (as per the above examples), we did try some of these other
"fixes". None worked.
If there is interest, I can prepare a "trial" download of the TD-fixer code.
Let me know. However, without some code to identify if your PC has poor
BIOS code, and some code to greatly increase the probability of TD, you may
never observe the fix-code actually "working" !. |
Michael Kennedy |
|
[Top]
[ Home ] [ What's New ] [ Contact Us ] [ Referrals ] [ Feedback ] [ Products Summary ] [ DownLoads ] [ Orders ] [ Links ] [ Anti-Spyware ] |
|