Jump to content
Sign in to follow this  
evilmoo

SIO transfer limit

Recommended Posts

What's the theoretical limit on the transfer on a single SIO request?  Is it 65,535 because DBYTLO/HI is a 16-bit integer, or is it lower?

 

(I know each SIO command has its own limit as defined by the device's firmware -- I'm asking for possible new devices and commands.)

Share this post


Link to post
Share on other sites
Posted (edited)

Yes, the theoretical limit of the OS SIO code would be 65535 bytes. The practical limit is about 47k as the OS SIO code needs to store the data somewhere (eg $0400-$BFFF).

 

I haven't tried doing such large transfers yet so I'm not 100% sure if it really works or if there might be a bug in the OS SIO code. However I'm doing 8k transfers in the The!Cart flasher and that works just fine.

 

so long,

 

Hias

Edited by HiassofT
  • Like 3

Share this post


Link to post
Share on other sites

Afaik, tapes using non-standard block lengths (longer than the standard 128 Bytes) also use SIO instead of CIO... here is some guessing by ear:

 

- Creative Sparks seems to use 256 or 384 Bytes per block

- Novagen seems to use 512 Bytes per block

- ESC, Ariola and a few others  seem to use 1024 Bytes per block

- Digital Integration (Fighter Pilot) seems to use 2048 bytes (or more?) per block + the awful Lenslok!

- Aacksosoft (BC's Quest for Tires) seems to use 16384 Bytes per block (the whole game is one block!)

 

Share this post


Link to post
Share on other sites
1 hour ago, HiassofT said:

Yes, the theoretical limit of the OS SIO code would be 65535 bytes. The practical limit is about 47k as the OS SIO code needs to store the data somewhere (eg $0400-$BFFF).

 

I haven't tried doing such large transfers yet so I'm not 100% sure if it really works or if there might be a bug in the OS SIO code. However I'm doing 8k transfers in the The!Cart flasher and that works just fine.

 

so long,

 

Hias

I can confirm @HiassofT's observations with my work on #FujiNet. I have done 4K to 8K transfers of TCP data over SIO, and it works just fine. Quite a long beep. ;)

 

-Thom

  • Like 1

Share this post


Link to post
Share on other sites

Hi,

 

   I think Datasoft used long data blocks (>128 bytes) on their tapes, I think maybe Canyon Climber, but it's been a long day (don't know if anyone with an original can confirm?). Also, I remember SubLogic's Night Mission Pinball (tape version, great game) loaded a single data block of about 32K, but I can't remember the exact details.

 

   I think when I was writing Dump1050 I managed to transfer 4k of data at once, but that was because of (my) buggy code, or it might have been messing around with the German Atari Magazin tutorials and I hadn't figured out how to use the Happy ROM correctly. 

Share this post


Link to post
Share on other sites

PC-Link transfers blocks of the size equal to the available memory buffer (32k+ for base RAM, 16k for ext banks) without any problem via SIO, so I guess there are not any "there might be a bug" which could limit the size of a single transfer apart from practical circumstances (like the size of the actual memory buffer).

  • Thanks 1

Share this post


Link to post
Share on other sites
1 hour ago, E474 said:

Hi,

 

   I think Datasoft used long data blocks (>128 bytes) on their tapes, I think maybe Canyon Climber, but it's been a long day (don't know if anyone with an original can confirm?). Also, I remember SubLogic's Night Mission Pinball (tape version, great game) loaded a single data block of about 32K, but I can't remember the exact details.

 

   I think when I was writing Dump1050 I managed to transfer 4k of data at once, but that was because of (my) buggy code, or it might have been messing around with the German Atari Magazin tutorials and I hadn't figured out how to use the Happy ROM correctly. 

 

All the Datasoft tapes I had (including Canyon Climber) used standard blocks with 128 bytes. Activision also used standard blocks. Do not know about Sublogic's Night Mission Pinball though, since I never had it on tape... 

Share this post


Link to post
Share on other sites

That's annoying, now I'm going to be wondering which set of games I was thinking of! 

Share this post


Link to post
Share on other sites

Doesn't the APE or Aspeqt built in binary loader use long blocks?

 

Tape - I did an Atari AsmEd loader that had the entire 8K cart as a single block at higher bitrate.  A problem doing that is that there's no compensation for tape stretch or speed variations though Pokey can supposedly handle +-5%

 

In theory you could do a longer SIO block with a custom routine.  e.g. fill a 130XE extended banks area with switching along the way.  Even the 64K limit could be gotten around that way.

Share this post


Link to post
Share on other sites

The 850 handler bootstrap mechanism uses longer blocks. Actually, the full handler is downloaded in one block. The 850 bootstrap is performed in 3 steps: First, a tiny bootstrap function is loaded. This function loads custom SIO parameters, over SIO, and then these parameters describe a big block of data that is used to transfer the handler in one go, then the handler is relocated.

 

Share this post


Link to post
Share on other sites
3 hours ago, thorfdbg said:

The 850 handler bootstrap mechanism uses longer blocks. Actually, the full handler is downloaded in one block. The 850 bootstrap is performed in 3 steps: First, a tiny bootstrap function is loaded. This function loads custom SIO parameters, over SIO, and then these parameters describe a big block of data that is used to transfer the handler in one go, then the handler is relocated.

 

The 1030 handler is even more...interesting, with the handler and modemlink software using two different loaders with different cycle counts resulting in two different loading pitches as it "shifts gears" ;)

 

-Thom

  • Like 1

Share this post


Link to post
Share on other sites
9 minutes ago, tschak909 said:

The 1030 handler is even more...interesting, with the handler and modemlink software using two different loaders with different cycle counts resulting in two different loading pitches as it "shifts gears" ;)

 

-Thom

Oh, very vaguely remember that from when I owned a 1030 and used it daily for BBS’ing as a teenager. Thanks for that weird little memory blurb. :)

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