Sunday, May 24, 2009

Y2010 Patch for Newton MessagePad 2100s


10-29-2006
Originally uploaded by Camera Wences

Eckhart Köppen successfully patched the Newton OS against the Year 2010 problem, saving this hardware from a nasty bug.

Eckhart describes the problem this way:

The NewtonOS has a bug in handling years past 18:48:31 on January 5, 2010. The bug is located in the NewtonScript interface of certain time functions, and it is caused by an overflow of a NewtonScript integer value. This bug seems to only occur in NewtonOS 2.1 devices.

The overflow happens in all NewtonScript functions which use seconds as the resolution. In contrast to the 32 bit unsigned integer used by the C++ functions, NewtonScript integers are only 30 bit wide. While the C++ functions can handle times from 1904 until 2040 without an overflow, the NewtonScript functions had to be designed with a smaller range of applicable times due to the limited precision.

The seconds-based functions are implemented by taking the value of the real-time clock, subtracting the offset to January 1st 1993, and converting the results to a NewtonScript integer. This limited range causes an overflow on Tuesday, January 5, 2010 at 6:48:31 PM.

This is the list of affected functions:

SetSysAlarm
TimeInSeconds
TimeToTimeInSeconds
TimeInSecondsToTime


Eckhart's patch includes a diagnostic package to scan your Newton's Dates and make sure there are no repeating alarms that could trigger the bug. The patch itself updates the NewtonOS System to 71J059. Not since Paul Guyot's 710031 patch has anyone outside of Apple successfully patched the operating system. Way to go Eckhart, and thanks for keeping our Newtons running!

No comments: