[time-nuts] Using a frequency synthesizer replacement for motherboard oscillator

David davidwhess at gmail.com
Sun Dec 2 00:29:04 UTC 2012

Originally the IBM PC design used an 8253 or 8254 PIT, programmable
interval timer, located at ports 40h to 43h with Timer 0 clocked at
1.193182 MHz (1/3rd of 3.579545 MHz or 1/12th of 14.318 MHz) and set
to divide by 65536 which generated about an 18.2 Hz interrupt rate on
IRQ 0.  Timer 1 generated the since deprecated DRAM refresh clock and
Timer 2 goes to the PC speaker.

Some of the early IBM PC non-compatible hardware implemented a fixed
divisor for Timer 0 which caused problems for software expecting to be
able to reprogram the divider.

I do not know how they generate the 1.193182 MHz PIT clock now.  Early
on they just used an additional oscillator, usually 14.318 MHz, which
was separate from the CPU clock.  I lost interest and started doing
all of my precision timer functions in external hardware when Intel's
SMM, system management mode, started adding unacceptable jitter to
interrupt service routines.

Now of course a variety of higher precision timers are included.
Either the 1.193182 MHz based PIT via interrupt 0 or the 32.768 kHz
based RTC via interrupt 8 can be used to calibrate the CPU timers when
the CPU clock is unknown.

There was a hoax at about the time that the 12 MHz 286 microprocessors
became available where a couple of guys were wiring a small capacitor
across the 32.768 kHz clock crystal causing the RTC to run slow which
caused the CPU clock speed measured via software to appear many times
higher.  Conveniently the wall clock time as measured by the now
slowed RTC showed the same thing.  I remember an interview the guys
gave where they declined to describe their improvements to the 286 but
said the process amounted to collecting groups of instructions and
ramming them through as fast as possible and that it might be feasible
with a 386 as well.

On Sat, 1 Dec 2012 12:34:43 -0700, "Mark Allwright"
<mark.allwright at shaw.ca> wrote:

>You need to replace the clock that drives the CPU; in some designs this was 
>the 14.318 MHz oscillator that would be multiplied up to the required 
>frequency.  You could also replace the 14.318 MHz oscillator with a TCXO or 
>better; make your own simple OCXO around a 14.318 MHz oscillator or lock a 
>14.318 MHz oscillator to a high stability reference oscillator (Rb, GPSDO 
>etc.).  You would need to do some circuit surgery on the PC motherboard for 
>this type of stuff.
>Some links:
><http://www.moshier.net/#Rubid_pc> Lock 14.318 MHz to Rb
><http://www.wraith.sf.ca.us/ntp/#ocxo-osc> Simple oven
><http://www.techlib.com/electronics/ovenckts.htm> More simple oven circuits
><http://www.febo.com/pages/soekris/index.html> John's note for the Soekris 
>and clock hacking

More information about the time-nuts mailing list