[net.micro] C64 and 1541 drive speed

prindle@NADC.ARPA (07/02/84)

Whoops, I neglected to mention, along with inter-byte time, that revolutions
must be optimized to get the most speed out of the drive; that is, in between
blocks read from the disk, the DOS must not do so much processing that the
next block to read has gone past the head and the disk must turn almost an
entire extra revolution to access the desired block.  4MINUT.IMG seems to read/
write exactly 2 blocks per revolution.
Frank

anthro@ut-ngp.UUCP (Michael Fischer) (07/21/84)

<>
I agree in general that the serial bus is not as fast as it should be, but
not by the factor indicated.  4min.img handles about 725 cps.  I'm not 
certain, but I think that it works by setting up the block read and write,
and then lets the reading drive handshake the writing drive. This would
be about the right speed, since the 64's internal rom routines are capable,
even with the screen off, of reading about 850 cps, and the range of variation
in 64s is great enough to settle on some 750 or so (atn sequences take a long
time...a normal (not 4min.img, I dunno) ATN byte is 1ms all by itself.

The reason for the slowness in the 64 rom routines is bad design.  The bit
handshake routines are written as subroutines, which effectively doubles the
amount of time that each bit operation will take.  The actual data bit
handshake is inline, but the control is not.  What this does is create windows
some 24 us wide, and to accomodate the variable 64s, worst case must be
assumed by the sender.  These 24 us here and there add up, and lower the
effective possible speed by some 15%.  Then there is an enormous amount of
time between bytes, some 100-200 us typical.  In a IEEE-488/serial interface
I wrote, I had time to handshake the IEEE-488 byte free on the gap between
bytes.  ARG.  

If the routines were tidied up, and the speed constant (VIC cycle stealing
complicates this) I estimate that the 64 could handle some 1200-1300 cps.
As is it can easily handle 710 (the speed of my interface) for generic
64 and 780 for a 'tuned' 64.  It is interesting to note that LOADING is
slower than SAVING.  The respective speeds are 850 and 930.

The serial disk only goes about 450 cps, and is the real weak link in the
bus, since any 64 can better that speed by 250 cps.

Mike Fischer anthro@utngp