As I suspected, and mentioned on last week’s podcast, the driver problem that dogged Zune 30 devices on December 31, 2008 was, in fact, Toshiba’s fault and not Microsoft’s. I assume all those anti-Microsoft rants will be adjusted accordingly.
After doing some poking around in the source code for the Zune's clock driver (available free from the Freescale website), I found the root cause of the now-infamous Zune 30 leapyear issue that struck everyone on New Year's Eve.
The Zune's real-time clock stores the time in terms of days and seconds since January 1st, 1980. When the Zune's clock is accessed, the driver turns the number of days into years/months/days and the number of seconds into hours/minutes/seconds. Likewise, when the clock is set, the driver does the opposite.
The Zune frontend first accesses the clock toward the end of the boot sequence. Doing this triggers the code that reads the clock and converts it to a date and time.
As Sebastian V. notes in an email (thanks for the heads-up), “Apparently, the Zune 30 was not the only device which had the Y2K9 issue. Also Toshiba Gigabeat S30 and S60 have had the same problem. Both Microsoft's and Toshiba's devices share similar hardware, including the Freescale MC13783 processor.” This is exactly what I suspected, since the first-gen Zune is just a rebranded (and slightly modified) Toshiba design.
Time to move on to some real news…