Ethan Dicks wrote:
On Sun, Nov 18, 2007 at 10:22:36PM -0000, Ensor
wrote:
Hi,
....I think he was joking, of course, given the
horrendous bottlenecks in its software and its bus
protocol.
To be fair, the only thing wrong with the CBM serial bus was the speed it
ran at....or rather the lack of it....
Indeed. There's a well-documented saga of how the bit-serialization was
supposed to be done in hardware, but could not due to bugs with the interface
chip. IIRC, it was a CB2 problem with the 6522 VIAs on the 1540 drive and
the on the VIC-20 (the first machine to use the CBM serial bus). IIRC, the
problem was fixed with the 6526 CIAs, but the moment had passed.
Have fun: (From Commodore Trivia 8)
Q $07B) When the VIC-20 was designed, the serial port throughput was roughly
equivalent to the throughput of the IEEE-488 bus? Why isn't it
very fast in production VICs?
A $07B) Let's go back to question $04F:
<begin insert>
Q $04F) What was the primary reason Commodore went to a serial bus
with the introduction of the VIC-20?
A $04F) Jim Butterfield supplied me with this one:
As you know, the first Commodore computers used the IEEE bus
to connect to peripherals such as disk and printer. I
understand that these were available only from one source:
Belden cables. A couple of years into Commodore's computer
career, Belden went out of stock on such cables (military
contract? who knows?). In any case, Commodore were in
quite
a fix: they made computers and disk drives, but couldn't
hook 'em together! So Tramiel issued the order: "On our
next
computer, get off that bus. Make it a cable anyone can
manufacture". And so, starting with the VIC-20 the serial
bus was born. It was intended to be just as fast as the
IEEE-488 it replaced.
<end insert>
And here is what Jim Butterfield followed up with:
"Technically, the idea was sound: the 6522 VIA chip has a "shift
register" circuit that, if tickled with the right signals (data and
clock) will cheerfully collect 8 bits of data without any help from
the CPU. At that time, it would signal that it had a byte to be
collected, and the processor would do so, using an automatic
handshake built into the 6522 to trigger the next incoming byte.
Things worked in a similar way outgoing from the computer, too.
We early PET/CBM freaks knew, from playing music, that there was
something wrong with the 6522's shift register: it interfered with
other functions. The rule was: turn off the music before you
start
the tape! (The shift register was a popular sound generator). But
the Commodore engineers, who only made the chip, didn't know this.
Until they got into final checkout of the VIC-20.
By this time, the VIC-20 board was in manufacture. A new chip could
be designed in a few months (yes, the silicon guys had application
notes about the problem, long since), but it was TOO LATE!
A major software rewrite had to take place that changed the VIC-20
into a "bit-catcher" rather than a "character-catcher". It
called for
eight times as much work on the part of the CPU; and unlike the
shift
register plan, there was no timing/handshake slack time. The whole
thing slowed down by a factor of approximately 5 to 6.
When the 64 came out, the problem VIA 6522 chip had been
replaced by the CIA 6526. This did not have the shift register
problem which had caused trouble on the VIC-20, and at that time it
would have been possible to restore plan 1, a fast serial bus.
Note
that this would have called for a redesign of the 1540 disk drive,
which also used a VIA. As best I can estimate - and an article in
the IEEE Spectrum magazine supports this - the matter was discussed
within Commodore, and it was decided that VIC-20 compatibility was
more important than disk speed. Perhaps the prospect of a 1541
redesign was an important part of the decision, since current
inventories needed to be taken into account. But to keep the
Commodore 64 as a "bit-banger", a new problem arose.
The higher-resolution screen of the 64 (as compared to the VIC-20)
could not be supported without stopping the CPU every once in a
while.
To be exact: Every 8 screen raster lines (each line of text),
the CPU
had to be put into a WAIT condition for 42 microseconds, so as to
allow the next line of screen text and color nybbles to be swept
into
the chip.(More time would be needed if sprites were being used).
But the bits were coming in on the serial bus faster than that:
a bit would come in about every 20 microseconds! So the poor CPU,
frozen for longer than that, would miss some serial bits completely!
Commodore's solution was to slow down the serial bus even more.
That's why the VIC-20 has a faster serial bus than the 64, even
though
the 64 was capable, technically, of running many times faster.
Fast disk finally came into its own with the Commodore 128."
--Jim