Jump to content

Atari SIO tone specification


Recommended Posts

My son is trying to program a "fake" SIO tone. Where would I find the specification for the tone short of reading the OS source code? Can that tone actually be "spoofed" or is it something POKEY produces as a side effect when accessing SIO?




Link to comment
Share on other sites

Yep, and also the tones are not the data signals themselves. The Atari makes tones while transferring data via SIO, but it is not the data. The exception might be tape. And yeah, there seems to be crosstalk of actual data getting into the sound a little. But anyway, any detail you need just grab that reading material mentioned.

Link to comment
Share on other sites

The crosstalk problem is largely because the SIO cables support audio but the audio wire is not shielded. If you disconnect the audio signal at the computer, the IO becomes silent when the beeps are turned off. Of course, cassettes will always have some additional crosstalk.

Link to comment
Share on other sites

You didn't mention what your son was trying to reproduce the sound on. If it's anything modern, just sample the sound and play it at about nine times a second with a short pause every 18 sectors for the head step.


If the task is to reproduce this sound on the Atari, that's trickier. The problem is that the way the sound is normally generated requires receiving serial data from a device, and you can't spoof that. The basic components are:

  • Send command: quick pop
  • Delay of about 40ms for the disk sector to come around
  • 930-950Hz tone for 68ms to transfer sector

This normally happens back-to-back, so the pop is heard at the end of the last sector tone.


The sector tone is the tricky part. If you just try to play a tone at 940Hz with POKEY, it won't sound right because the waveform is wrong. What you actually want is a train of really short triangular pulses with alternating polarities. This requires assembly language or at least a compiled language due to the timing needed. The way this waveform is actually produced normally is that it's a 19.2KHz square wave with every 20th transition missing, and the part you hear is due to those missing transitions.


Note that this is for disk reads. For disk writes, normally only the command pops are heard. The disk read tone is what's heard the majority of the time, though.


Crossover noise isn't really significant unless the normal sound is turned off -- it's dominated by POKEY's output.

  • Like 1
Link to comment
Share on other sites

Possibly it could be emulated with Timer IRQs... have the timer voice slightly ahead of the audio one, then every fourth IRQ set the volume down to 00 for a short period.


The crosstalk noise that's easiest to hear when quiet IO is set could probably be done by standard methods - it wouldn't need to be real accurate.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Create New...