This reminds me: I have a music program that claimed to send multi-voice sound
through either the PC speaker or the cassette interface. While I know how it
did this feat through the PC speaker (tied the speaker to a timer port and
pulsed), I have no idea how the cassette interface stuff worked. Other than
BIOS calls, is there any documentation out there (port addresses, etc.) on the
cassette interface? I have a 5150 right here I'd love to dork around with.
Of course therre's docuemntation. IBM sold a proper TechRef for this
machine with schematics and BIOS source.
Cassette output (which is what you're interested in) uses channel 2 of
the 8253 counter/timer -- the same channel that's used for speaker
output. The output of the 8253 is buffered by U63a ('38), then fed to a
potential divider to set the right audio level (aux or mic levels are set
by a jumper on the mainboard, it simply selects taps on this potential
divider)
Casssette input is doen almost all in software. The incoming signal is
amplified/clipped by U1 (741 op-amp), then fed to port PC4 on the
mainboard 8255.
The motor control relay is driven my port PB3 of this 8255, suitably
buffered. Note that if the relay is not energised, then the aux-level
output is fed back to the cassette input circuit via the relay contacts
to be used for self-test diagnositcs.
-tony