Jump to content
Sign in to follow this  
danwinslow

High Speed SIO

Recommended Posts

Anyone have any info on how to set pokey for high speed IO, ie., 38.4k or 56k baud rates? I sort of thought sticking $10 into $D204 would work, but doesn't seem to do much.

I am setting up the DCB myself, and jumping to $E459.

Edited by danwinslow

Share this post


Link to post
Share on other sites

You can't.

 

You must use your own routines if you want a custom SIO speed. There are sources available. Or, as it was sometimes done, copy the SIO routines to RAM and modify them.

Share this post


Link to post
Share on other sites
bump?

914691[/snapback]

 

 

 

Word of $30C, 30D : Timer1

It's the start setting of the transfer speed

 

Word of $310,311 : Timer2

Final transfer speed.

 

If that helps.

 

But I'm not shure about the values.

Share this post


Link to post
Share on other sites
Word of $30C, 30D : Timer1

It's the start setting of the transfer speed

 

Word of $310,311 : Timer2

Final transfer speed.

 

No, these locations are used only by the casette handler. They are used for adjusting the bit-rate to the incoming record.

 

They are not used at all for other devices. And even for tape handling they are not useful for any user's purpose. They are set by SIO, so whatever you put before entering SIO is ignored.

Share this post


Link to post
Share on other sites
I am using my own routines. I guess I will have to disassemble a high speed io routine.

 

Hmm, don't understand. Didn't you say you were calling SIO?

 

Anyway, you probably don't need any disassembling. There are several different sources available. And if you already have your own low speed routines, then (as long as they aren't too slow) they are suitable for any speed. The only difference is the specific value for the Pokey divisor.

Share this post


Link to post
Share on other sites

OK, now I understand what you meant, Ijor. You are correct, I am calling standard SIO. But there must be some value I can stick somewhere, to in effect duplicate what the OS does with the speed divisor byte returned from a $3F query. It must put it somewhere. I doubt if there is a whole seperate routine, its just a divisor value. I don't know where to put it or what else might be done.

 

It may be that SpartaDos is responding to it rather than the native SIO vector. In which case you are saying that I need to write my own SIO...or use the equivalent of the speedy upload. That would help the most I think, if there were a listing somewhere of one of the uploadable high speed SIO patches...does anyone know of any online accessible?

Edited by danwinslow

Share this post


Link to post
Share on other sites

I think what Ijor is trying to get across is you need to write your own serial ISR for Pokey to do high speed I/O.

 

When you put your divisor into Pokey and call the SIO vector, the OS serial ISR will immediately write $28 to that divisor location during its setup for SIO.

 

You need to bypass the OS SIO routine by providing your own serial ISR and transaction handler.

Share this post


Link to post
Share on other sites
OK, now I understand what you meant, Ijor. You are correct, I am calling standard SIO.

 

Oh, sorry for not being clear enough. I meant you must use your own SIO code, and not call SIO ($E459) at all.

 

But there must be some value I can stick somewhere ...

It may be that SpartaDos is responding to it rather than the native SIO vector.

 

The divisor is fixed in the ROM code, it is not read from a memory variable. So there is no way to use ROM SIO for custom speeds. If you want, and for quick testing purposes, you can “patch” SIO. Copy the SIO routines to RAM under the OS and modify the instruction with the fixed divisor. This is of course a quick dirty hack.

 

Yes, SpartaDOS and every other high-speed software have its own SIO routines. As a matter of fact, SpartaDos has a public/published vector for high-speed SIO. That is, you can call a vector in SpartaDos for using their high speed SIO code.

 

That would help the most I think, if there were a listing somewhere of one of the uploadable high speed SIO patches

 

Happy version 7 comes to mind. It includes high-speed SIO source code. You might need to remove/modify the happy detection code (don’t remember if it’s specific for the Happy or USD generic). But the actual SIO and interrupt code should be usable for any high speed device.

Share this post


Link to post
Share on other sites
Word of $30C, 30D : Timer1

It's the start setting of the transfer speed

 

Word of $310,311 : Timer2

Final transfer speed.

 

No, these locations are used only by the casette handler. They are used for adjusting the bit-rate to the incoming record.

 

They are not used at all for other devices. And even for tape handling they are not useful for any user's purpose. They are set by SIO, so whatever you put before entering SIO is ignored.

914739[/snapback]

 

Curious :?

 

Description for $30C,30D:

Register for storing the starting transferspeed.

600 Baud for Cassette

19200 Baud for the Diskdrive.

Share this post


Link to post
Share on other sites
LSIO COMTAB-10 

This is a pointer to the SpartaDOS high speed SIO routine. You can use the address contained here instead of $E459, the OS SIOV, to perform high speed sector I/O with your programs.

 

That's interesting...so I can let sparta handle it. I suppose I could take that tack with any DOS I find myself in...some do have high speed support and some don't. The question then would be determinng which one of a zillion or so possible DOS's are loaded. Hmm I think short term I will go with supporting a few of the major DOS's through their own routines, and then work on a generic high speed routine of my own later.

Thanks, folks.

Share this post


Link to post
Share on other sites
Curious  :?

 

Description for $30C,30D:

Register for storing the starting transferspeed.

600 Baud for Cassette

19200 Baud for the Diskdrive.

 

That description is wrong. Where you find that description?

Share this post


Link to post
Share on other sites
Curious  :?

 

Description for $30C,30D:

Register for storing the starting transferspeed.

600 Baud for Cassette

19200 Baud for the Diskdrive.

 

That description is wrong. Where you find that description?

914791[/snapback]

 

It's called "ATARI Profibuch" written by Julian Reschke & Andreas Wiethoff.

Share this post


Link to post
Share on other sites
It's called "ATARI Profibuch" written by Julian Reschke & Andreas Wiethoff.

 

Sorry, I don’t know that book/reference, but again, the description is wrong. Those locations are used as I explained above.

 

It is not too difficult to verify by yourself if you want. Just poke random values there before calling SIO and you would see that they don’t affect anything at all. For smart devices, you will see that SIO didn’t change the values. And for the tape, they will be ignored and replaced. They are timers used for auto-sensing the tape bit-rate speed.

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