{"id":37153,"date":"2004-12-02T07:00:00","date_gmt":"2004-12-02T07:00:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/oldnewthing\/2004\/12\/02\/why-did-windows-95-run-the-timer-at-55ms\/"},"modified":"2004-12-02T07:00:00","modified_gmt":"2004-12-02T07:00:00","slug":"why-did-windows-95-run-the-timer-at-55ms","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/oldnewthing\/20041202-00\/?p=37153","title":{"rendered":"Why did Windows 95 run the timer at 55ms?"},"content":{"rendered":"<p>The story behind the 55ms timer tick rate goes all the way back to the original IBM PC BIOS. The original IBM PC used a 1.19MHz crystal, and 65536 cycles at 1.19MHz equals approximately 55ms. (More accurately, it was more like 1.19318MHz and 54.92ms.)<\/p>\n<p> But that just pushes the question to another level. Why 1.19&#8230;MHz, then? <\/p>\n<p> With that clock rate, 2<sup>16<\/sup> ticks equals approximately 3600 seconds, which is one hour. (If you do the math it&#8217;s more like 3599.59 seconds.) [Update: 4pm, change 2<sup>32<\/sup> to 2<sup>16<\/sup>; what was I thinking?] <\/p>\n<p> What&#8217;s so special about one hour? <\/p>\n<p> The BIOS checked once an hour to see whether the clock has crossed midnight. When it did, it needed to increment the date. Making the hourly check happen precisely when a 16-bit tick count overflowed saved a few valuable bytes in the BIOS. <\/p>\n<p> Another reason for the 1.19MHz clock speed was that it was exactly one quarter of the original CPU speed, namely 4.77MHz, which was in turn 4\/3 times the NTSC color burst frequency of 3.5MHz. Recall that back in these days, personal computers sent their video output to a television set.  Monitors were for the rich kids. Using a timer related to the video output signal saved a few dollars on the motherboard. <\/p>\n<p> <a href=\"http:\/\/blogs.msdn.com\/calvin_hsia\/archive\/2004\/08\/12\/213756.aspx\"> Calvin Hsia has another view of the story behind the 4.77MHz clock<\/a>. <\/p>\n<p> (Penny-pinching was very common at this time. <a href=\"http:\/\/apple2history.org\/museum\/articles\/byte8501\/byte8501.html\"> The Apple&nbsp;][ had its own share of penny-saving hijinks<\/a>.) <\/p>\n","protected":false},"excerpt":{"rendered":"<p>The story behind the 55ms timer tick rate goes all the way back to the original IBM PC BIOS. The original IBM PC used a 1.19MHz crystal, and 65536 cycles at 1.19MHz equals approximately 55ms. (More accurately, it was more like 1.19318MHz and 54.92ms.) But that just pushes the question to another level. Why 1.19&#8230;MHz, [&hellip;]<\/p>\n","protected":false},"author":1069,"featured_media":111744,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[2],"class_list":["post-37153","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oldnewthing","tag-history"],"acf":[],"blog_post_summary":"<p>The story behind the 55ms timer tick rate goes all the way back to the original IBM PC BIOS. The original IBM PC used a 1.19MHz crystal, and 65536 cycles at 1.19MHz equals approximately 55ms. (More accurately, it was more like 1.19318MHz and 54.92ms.) But that just pushes the question to another level. Why 1.19&#8230;MHz, [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/37153","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/users\/1069"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/comments?post=37153"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/37153\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/media\/111744"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/media?parent=37153"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/categories?post=37153"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/tags?post=37153"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}