Jump to content
Sign in to follow this  
Maury Markowitz

How did the 410/1010 work?

Recommended Posts

I'm reading over the hardware manual, and if I'm reading it correctly the system wrote to tape by connecting either channel 1 or channel 2 of the POKEY to the data pins if a particular bit was a 1 or 0. However...

 

1) normally a bit was triggered to the data pins from the shift register when the clock pins went high. But that clock was driven off a POKEY channel. So where was the clock signal for the cassette write? in channels 3 and 4?

 

2) normally the signal from the POKEY went to the clock pins. Was this true here as well, and the 410/1010 read those pins instead of the data pins?

 

3) a post here states that the *reading* was accomplished in the deck itself using narrow bandpass filters. if that is the case, what was the output? async bits on the DATA pins?

 

4) what were the two frequencies for mark and space.

 

Also speculation: given this system, would it not have been possible to make a modem that used POKEY as the A/D?

  • Like 1

Share this post


Link to post
Share on other sites

Just a few details off the top of my head. The cassette deck has FSK decoding built in, but not encoding. So, channels 1 and 2 are set to the FSK frequencies which are sent on SIO pin 5 instead of the data bits in 2-tone mode. These tones go straight to the head in record mode. The 410 has frequency detectors for playback to convert the audio to a normal bit stream.

 

The cassette drive uses:

Ground

Motor Control

Audio

Data In

Data Out

 

The 410 FSM sheds some light on this:

http://www.atarimania.com/documents/Atari_410_Program_Cassette_Recorder_Field_Service_Manual.pdf

 

 

EDIT:

 

1. AUDF3 is the baud rate according the OS listing.

2. Cassette uses data pins.

3. Yes, regular async data stream.

4. According to the 410 schematic, they're around 4 and 5KHz.

 

OSB:

HITONE  =       $05         ;FSK HI FREQ POKEY COUNTE VALUE (5326 HZ)
LOTONE  =       $07         ;FSK LO FREQ POKEY COUNTER VALUE (3995 HZ)

        LDY     #LOTONE     ;SET FSK TONE FREQUENCIES
        STY     AUDF2
        LDY     #HITONE
        STY     AUDF1
  • Like 1

Share this post


Link to post
Share on other sites

The clock signal is present as an output on the mode that the OS uses by default.

 

It's not used even by the disk drives, most use bit-banging software delay between bit reads.

For cassette operations the clock is irrelevant. Tape blocks use the 2 speed measurement bytes $55,$55 (lsb is transmitted first). Software monitors the bitstream and uses the time elapsed to lookup a table containing input bitrate settings for AUDF3/4. This is mainly to compensate for tape stretch but also allows custom tape bitrates to be read without extra software.

 

For read operations the cassette unit itself actually translates the tones to a 0 or 1. The frequencies used are 3995 and 5327 Hz (from DeRe Atari)

 

As the clock line isn't used in tape operations, reading relies on the start bit (0). Bit-banging could be used but since Pokey has the automatic serial shift register it's used. Supposedly there's a 5% tolerance on the set vs actual clock speed.

Edited by Rybags

Share this post


Link to post
Share on other sites

 

Just a few details off the top of my head. The cassette deck has FSK decoding built in, but not encoding. So, channels 1 and 2 are set to the FSK frequencies which are sent on SIO pin 5 instead of the data bits in 2-tone mode. These tones go straight to the head in record mode. The 410 has frequency detectors for playback to convert the audio to a normal bit stream.

Most excellent Bryan, this is very helpful!

 

The clock signal is present as an output on the mode that the OS uses by default.

 

It's not used even by the disk drives, most use bit-banging software delay between bit reads.

For cassette operations the clock is irrelevant. Tape blocks use the 2 speed measurement bytes $55,$55 (lsb is transmitted first). Software monitors the bitstream and uses the time elapsed to lookup a table containing input bitrate settings for AUDF3/4. This is mainly to compensate for tape stretch but also allows custom tape bitrates to be read without extra software.

You use a few terms I'm not familiar with. So let me explain what I understood from the manual and perhaps you can point out where I go wrong.

 

As I read it, the programmer would set the base clock rates using the audio channels.

Then the POKEY would read or write bits from the shift register on every assert of the clock.

When the register completed the 10-bit read/write, it did an NMI for more data.

 

Is this correct?

 

I have not heard the term "bit-banging" before.

I believe the last part you are saying the system used an async read/write, basing the rate stored in $55,$55 ($56?). Is this a "clockless mode" that was used in async modes?

Share this post


Link to post
Share on other sites

As I read it, the programmer would set the base clock rates using the audio channels.

Then the POKEY would read or write bits from the shift register on every assert of the clock.

When the register completed the 10-bit read/write, it did an NMI for more data.

 

Is this correct?

 

I have not heard the term "bit-banging" before.

I believe the last part you are saying the system used an async read/write, basing the rate stored in $55,$55 ($56?). Is this a "clockless mode" that was used in async modes?

 

Pokey can only generate IRQs, not NMIs. Bit-banging means to implement something in software that is more commonly done in hardware. For example, the 1050's serial communications aren't handled by any sort of UART. It's all done with 6532/RIOT pins and software timing code.

 

Oh yeah, while I'm here, what was the PROCEED pin used for?

 

I don't know if anything used it. It was available on the PIA, so they hooked it up.

Share this post


Link to post
Share on other sites

Proceed and Interrupt are pins present on the SIO plug but not used by the Atari tape or disks. Or most peripherals for that matter.

 

In theory they could be used for unsolicited interrupts, e.g. to implement a plug and play where the device gets attention then sends driver code. But Atari didn't quite do things that way so it's a feature not really ever taken advantage of.

 

The serial IO is a little more sophisticated than you'd first believe. There's logic in Pokey that allows that clock drift of 5% or so, and will reset the clock in certain circumstances.

But when we say "clock" it's not necessarily referring to the clock signal on the pin. For the most part we can ignore that signal as it's also not used by Atari's tape or disk drives.

Share this post


Link to post
Share on other sites
basing the rate stored in $55,$55 ($56?)

 

By this it was meant that two bytes, both of value $55 (so binary 01010101) are part of the input stream pre-block-amble and the timing of this is used to establish the baud rate.

 

Read the Cassette section of De Re Atari for more

Edited by Wrathchild

Share this post


Link to post
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.

Guest
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.

Loading...
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...