Jump to content
IGNORED

TRS-80 diskette transfer rate?


MHaensel

Recommended Posts

1 hour ago, MHaensel said:

How fast were TRS-80 Model I and Model II disks when loading data?

 

For comparison, a stock Commodore 1541 was about 0.4 kilobytes per second (KB/s).

 

 

My Model III is rated up to 250 KB/S as per the Tech Ref Manual.  Model I would probably be similar.  Have no idea on the Model II series, those are 8" drives.

 

I know the 1541 was slow, but are you sure .4 is correct? POINT 4? 🤣  My Model III can save and load cassette data at 1500 baud, maybe I'm wrong on my math here, but wouldn't that be 1.5 KB/S?

The Model I cassette speed was 500 baud, which would still be faster.

 

If you really need to know on the Model I, I think I have the reference manual for that too.

 

  • Like 1
Link to comment
Share on other sites

Thank you! It's more satisfying my curiosity. No need for intense research.

 

A baud rate is bits per second. Divide by 8 to get bytes per second. 1500 baud is about 188 bytes per second, or 0.183 KB/s.

 

And yes, the commodore 1541 was SLOW. It was common to wait a minute or two for a program to load. Calling it twice as fast as Model III cassette sounds about right!

 

Fast loaders helped, but that was a workaround most other systems didn't need.

Link to comment
Share on other sites

A model II 8" disk has 26 sectors of 256 bytes each per track and spins at 360 RPM.  360 RPM is 6 RPS.  So an entire track of 6,656 bytes could be read 6 times in a second for a data rate of 39,936 bytes/second.  The low-level data rate for the system is 16 microseconds/byte or 62,600 kB/second.

 

The Model III low level data rate is 250,000 bits/second or 31,250 bytes/second.  With 18 sectors per track at 300 RPM you get a practical limit of 23,040 bytes/second.

 

For anyone who's interested, this explains how the data transfer rate of the 1541 disk drive was determined:

 

https://www.youtube.com/watch?v=_1jXExwse08&t=1903s

 

The serial I/O chip could do a bit every microsecond but was flawed so the transfer speed was reduced to 1 bit every 20 microseconds.  However, the video display on the C-64 could steal up to 40 microseconds from the 6510 so the transfer speed was reduced to 1 bit every 60 microseconds.

  • Like 1
Link to comment
Share on other sites

9 hours ago, MHaensel said:

A baud rate is bits per second. Divide by 8 to get bytes per second. 1500 baud is about 188 bytes per second, or 0.183 KB/s.

 

Gotcha...I didn't think the tape being faster sounded right. :)   I found a data rate calculator and chose kbps (kilobits per second??) in the dropdown instead of kbytes/s.

 

Link to comment
Share on other sites

I wanted to do some testing, so here's results from WinVICE 3.6.1, PCem 17, and trs80gp 2.4.8. All of this is on emulators, running on interpreted BASIC.

 

Disk Read Speed Benchmarks
Disk Size Emulator reported time for 100KB
[seconds]
Actual time for 100KB
[minutes:seconds]
Actual time for 100KB
[seconds]
Speed [KBps] System notes
492KB 184 3:07 187 0.5 TRS-DOS 2.0a on a TRS-80 Model II
1.25MB 125 2:10 130 0.8 TRSDOS-II 4.4 on a TRS-80 Model 12
170KB 194 4:42 282 0.4 1541 on Commodore 64, Basic v2.0
350KB 108 2:12 132 0.8 1571 on NTSC Commodore 128, Basic v7.0
800KB 98 1:45 105 1.0 1581 on a NTSC Commodore 128, Basic v7.0
360KB 55 0:55 55 1.8 IBM PC 8088 4.77 MHz, BASIC

 

Some things I tried that didn't affect results much:

Change disk motor stepping time on a TRS-80 Model 12

Use the Microsoft BASIC compiler BASCOM on a TRS-80 Model II/12

Use COMAL on the commodore 64 - made things slightly slower

 

I've included my BASIC source code in case anyone wants to try this on real hardware.

 

C64 basic create file.txt c64 basic read file.txt IBM PC GWBasic create file.txt IBM PC GWBasic read file.txt TRS80 Model II Basic interpreter read file.txt TRS80 Model II Basic compiler read file.txt TRS80 Model II Basic interpreter create file.txt

  • Like 1
Link to comment
Share on other sites

  • 1 month later...
On 9/26/2022 at 6:51 PM, Turbo-Torch said:

My Model III is rated up to 250 KB/S as per the Tech Ref Manual.  Model I would probably be similar.  Have no idea on the Model II series, those are 8" drives.

That's really in kb/s (kilobits, not kilobytes), and is the maximum rate at which raw encoded data is read from the disk.  It's the same for the Commodore 1541 (which in most cases uses the same Alps drive mechanism as the Apple Disk II drive).  Additionally, the 1541 can read data from the disk into its buffer at up to 308 kb/s when in the outer track zone.

 

The question is whether the TRS-80 Models I and II ultimately transferred data at the maximum rate or a slower one, and that depends on overhead who knows what other factors.

 

On 9/26/2022 at 6:51 PM, Turbo-Torch said:

I know the 1541 was slow, but are you sure .4 is correct? POINT 4? 🤣

Unfortunately, the final effective data transfer rate of the 1541 to the C64 is indeed 400 bytes/s.  This was the result of Commodore management disagreeing with engineering over the need for the 1541 at all.  The 1540, which was intended for the VIC-20, was a total flop, but the C64's engineers insisted that the C64 needed the 1541, which was originally intended to transfer data much faster, at about 4 kB/s (not point 4, a full 4 or 10 times faster).  But a mistake was made in laying out the C64's mainboard, and the two traces that were needed to enable to faster transfers were deleted.  This could and should have been corrected during assembly with a couple of bodge wires, but management refused to do it, and had the necessary hardware removed from the 1541, which they predicted would sell very poorly anyway (they were dead wrong, at least in North America).  The C64's engineers soon left Commodore--probably not just over this, but I think they didn't get along with management, and management took the opportunity to screw them over in this case.

 

By the way, the fix can still be made on the C64 today, albeit there is no ROM support for it.  All it takes is a couple of wires and four solder points, although the fast transfer mode will only work with the 1571 and 1581 drives, not the 1541 after it was revised.

 

On 9/27/2022 at 7:51 AM, MHaensel said:

And yes, the commodore 1541 was SLOW. It was common to wait a minute or two for a program to load. Calling it twice as fast as Model III cassette sounds about right!

The C64 and 1541 didn't have to be that slow, though.  Physically, even with the missing connections in the C64 and the missing 6526 CIA chip in the 1541, they are still able to transfer data much, much faster because the 1541 is programmable from the computer.  What I wonder is why the Atari disk drives (810 and 1050) are so slow.  I've only ever measured about 1200 bytes/s with them, which while 3 times faster than the C64 and 1541 out of the box, is still really, really slow for floppy drives--about the same speed as the PET.  Does anyone know why this is so?

 

On 9/27/2022 at 7:51 AM, MHaensel said:

Fast loaders helped, but that was a workaround most other systems didn't need.

Even ordinary, garden-variety fastloaders like Epyx's Fast Load achieve over 2 kB/s, and require no hardware modifications whatsoever.  Well, except for the cartridge that provides the firmware, but many software titles--when using the original disks instead of pirated copies--came with their own software-only fastloaders that sped up loads from the 1541 even more, up to 12 kB/s in the case of Epyx's Vorpal, which was used by Winter Games and other games along those lines (except for the original Summer Games, which has no fastloader).  That's way faster than the Atari, and up there with the Apple II.

 

As for other systems needing fastloaders, I recall Atari fastloaders being fairly popular, since Atari drives are pretty sluggish themselves.  Unfortunately, they required hardware mods to be made to the drives--nothing super-hard to do, but the user (or someone they paid) had to make changes and add circuitry to the drives, while on the C64 and 1541, all one needed was some software to speed things up just as much.

 

On 9/27/2022 at 1:17 PM, George Phillips said:

The serial I/O chip could do a bit every microsecond but was flawed so the transfer speed was reduced to 1 bit every 20 microseconds.

The 6526 CIA I/O chips in the C64 were not flawed in this way.  They are perfectly capable of performing 1 Mb/s transfers with other 6526s.  It was the popular 6522 VIA I/O chip that unexpectedly had a bad hardware serial bit-shifter (no one else had tried it before), and this was why the VIC-20, which has a 6522 but no 6526s, could not do the fast transfers.  The problem was supposed to have been fixed in the C64 and 1541, which both had at least one 6526, but like I said earlier, the critical traces were deleted and management refused to have the problem fixed.  Furthermore, they had the 6526 in the 1541 removed, since that was its only purpose.  The C64 retained its 6526s because it was too late to change back to 6522s, but neither of them were connected for fast hardware-assisted transfers.

 

Eventually, third-party developers found other ways to enormously speed up 1541 transfer rates with their fastloaders, which took advantage of the unique programmability of Commodore drives.

Edited by Robert Cook
  • Like 1
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.

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...
  • Recently Browsing   0 members

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