NOTES ON RADIOTRACK CARD CONTROL
by Stephen M. Benoit (benoits@servicepro.com)  Dec 14, 1996
----------------------------------------------------------------------------

Document version 1.0

ACKNOWLEDGMENTS
----------------
This document was made based on 'C' code for Linux from Gideon le Grange
(legrang@active.co.za or legrang@cs.sun.ac.za) in 1994, and elaborations from
Frans Brinkman (brinkman@esd.nl) in 1996.  The results reported here are from
experiments that the author performed on his own setup, so your mileage may
vary... I make no guarantees, claims or warranties to the suitability or
validity of this information.  No other documentation on the AIMS
Lab (http://www.aimslab.com/) RadioTrack card was made available to the
author.  This document is offered in the hopes that it might help users who
want to use the RadioTrack card in an environment other than MS Windows.

WHY THIS DOCUMENT?
------------------
I have a RadioTrack card from back when I ran an MS-Windows platform.  After
converting to Linux, I found Gideon le Grange's command-line software for
running the card, and found that it was good!  Frans Brinkman made a
comfortable X-windows interface, and added a scanning feature.  For hack
value, I wanted to see if the tuner could be tuned beyond the usual FM radio
broadcast band, so I could pick up the audio carriers from North American
broadcast TV channels, situated just below and above the 87.0-109.0 MHz range.
I did not get much success, but I learned about programming ioports under
Linux and gained some insights about the hardware design used for the card.

So, without further delay, here are the details.


PHYSICAL DESCRIPTION
--------------------
The RadioTrack card is an ISA 8-bit FM radio card.  The radio frequency (RF)
input is simply an antenna lead, and the output is a power audio signal
available through a miniature phone plug.  Its RF frequencies of operation are
more or less limited from 87.0 to 109.0 MHz (the commercial FM broadcast
band).  Although the registers can be programmed to request frequencies beyond
these limits, experiments did not give promising results.  The variable
frequency oscillator (VFO) that demodulates the intermediate frequency (IF)
signal probably has a small range of useful frequencies, and wraps around or
gets clipped beyond the limits mentioned above.


CONTROLLING THE CARD WITH IOPORT
--------------------------------
The RadioTrack (base) ioport is configurable for 0x30c or 0x20c.  Only one
ioport seems to be involved.  The ioport decoding circuitry must be pretty
simple, as individual ioport bits are directly matched to specific functions
(or blocks) of the radio card.  This way, many functions can be changed in
parallel with one write to the ioport.  The only feedback available through
the ioports appears to be the "Stereo Detect" bit.

The bits of the ioport are arranged as follows:

  MSb                                                         LSb
+------+------+------+--------+--------+-------+---------+--------+
| VolA | VolB | ???? | Stereo | Radio  | TuneA | TuneB   | Tune   |
|  (+) |  (-) |      | Detect | Audio  | (bit) | (latch) | Update |
|      |      |      | Enable | Enable |       |         | Enable |
+------+------+------+--------+--------+-------+---------+--------+


VolA . VolB  [AB......]
-----------
0 0 : audio mute
0 1 : volume +    (some delay required)
1 0 : volume -    (some delay required)
1 1 : stay at present volume

Stereo Detect Enable [...S....]
--------------------
0 : No Detect
1 : Detect

  Results available by reading ioport >60 msec after last port write.
  0xff ==> no stereo detected,  0xfd ==> stereo detected.

Radio to Audio (path) Enable [....R...]
----------------------------
0 : Disable path (silence)
1 : Enable path  (audio produced)

TuneA . TuneB [.....AB.]
-------------
0 0 : "zero" bit phase 1
0 1 : "zero" bit phase 2

1 0 : "one" bit phase 1
1 1 : "one" bit phase 2

  24-bit code, where bits = (freq*40) + 10486188.
  The Most Significant 11 bits must be 1010 xxxx 0x0 to be valid.
  The bits are shifted in LSb first.

Tune Update Enable [.......T]
------------------
0 : Tuner held constant
1 : Tuner updating in progress


PROGRAMMING EXAMPLES
--------------------
Default:        BASE <-- 0xc8  (current volume, no stereo detect,
				radio enable, tuner adjust disable)

Card Off:	BASE <-- 0x00  (audio mute, no stereo detect,
				radio disable, tuner adjust disable)

Card On:	BASE <-- 0x00  (see "Card Off", clears any unfinished business)
		BASE <-- 0xc8  (see "Default")

Volume Down:    BASE <-- 0x48  (volume down, no stereo detect,
				radio enable, tuner adjust disable)
		* wait 10 msec *
		BASE <-- 0xc8  (see "Default")

Volume Up:      BASE <-- 0x88  (volume up, no stereo detect,
				radio enable, tuner adjust disable)
		* wait 10 msec *
		BASE <-- 0xc8  (see "Default")

Check Stereo:   BASE <-- 0xd8  (current volume, stereo detect,
				radio enable, tuner adjust disable)
		* wait 100 msec *
		x <-- BASE     (read ioport)
		BASE <-- 0xc8  (see "Default")

		x=0xff ==> "not stereo", x=0xfd ==> "stereo detected"

Set Frequency:  code = (freq*40) + 10486188
		foreach of the 24 bits in code,
		(from Least to Most Significant):
		  to write a "zero" bit,
		    BASE <-- 0x01  (audio mute, no stereo detect, radio
				    disable, "zero" bit phase 1, tuner adjust)
		    BASE <-- 0x03  (audio mute, no stereo detect, radio
				    disable, "zero" bit phase 2, tuner adjust)
		  to write a "one" bit,
		    BASE <-- 0x05  (audio mute, no stereo detect, radio
				    disable, "one" bit phase 1, tuner adjust)
		    BASE <-- 0x07  (audio mute, no stereo detect, radio
				    disable, "one" bit phase 2, tuner adjust)

----------------------------------------------------------------------------
