Timing Events on the Commodore 64
Robert S. Owen, CET, Ph.D.
The Commodore-64 contains two "6526 Complex
Interface Adaptor" (CIA)chips. The purpose of these chips is to handle
most of the input and output operations (I/O) with devices ouside of the
machine. These two chips make interfacing of outside devices to the
computer very easy. Input devices (button switches, for example)
or output devices (lights, for example) may be plugged directly (well,
through a buffer) into a plug on the side of the machine and simply accessed
as a memory location.
These 6526 CIA chips have some other interestin
and useful built-in features which include their timers. Each has
a 24-hour time of day (TOD) clock with a programmable alarm. Also,
each 6526 CIA has two independent, linkable 16-bit interval timers.
This, then, bifes us a capability of two 24-hour clocks with alarms and
four independent 16-bit interval timers available in the Commodore 64.
Each TOD clock consists of a 24-hour clock
with tenth-second resolution. Each clock is organized into four registers
(memory locations): tenths of seconds, seconds, minutes, and hours.
An AM/PM flag is on the MSB of the hours register. Each register
reads out in BCD format. In addition to time keeping, each clock
is provided with a programmable alarm function for generating an interrupt
at a desired time. These clocks are referenced to he 60-Hz line frequency.
Each 6526 CIA contains two 16-bit interval
timers: Timer A and Timer B. These timers can be used independently
or linked together (32 bits). These timers can be set in a variety
of modes to allow generation of time delays, variable frequency waveforms,
etc. They can be used to count external inputs or to measure frequency,
pulse width, or delay times of external signal inputs. These functions
are handled independently of the processor. These counters can be
programmed to accept an internal input or to count the internal machine
clock pulses. Using the inernal 1-MHz (nominal) crystal-controlled
clock, these timers can be used to time events or delays to about one microsecond
(.000001 second) resolution. (Programming routines may decrease this
(Crystal accuracy may vary by a few hundred
cycles or so (.05%). Use of a crystal oven and calibration against
a nown source (e.g., WWV) can bring accuracy and drift to within a few
parts per million.)
See my vita for
a listing of research publications with links to abstracts.