Subj : Re: Plus 4 rom error - is there any place to report it?
To   : George
From : Jim Brain
Date : Mon Nov 15 2021 12:44 am

On 11/14/2021 1:12 PM, George wrote:
> Jim Brain says...
>
>   > I forwarded it the cbm-hackers mailing list, where a
>   > bunch of the technical gurus hang out.
>
> Thanks very much, Jim.  It's too bad the +4 didn't get wider
> use.  The 6551 ACIA was a major improvement over the
> horrendous emulation fiasco in the C64.  I wrote replacement
> code for the C64, but still only got it up to 2400 baud in
> full duplex.  The 6551 could I'm sure do 9600 baud, and
> maybe 19,200.  You just have to service one interrupt per
> byte, and the 6551 does all the work.

Indeed you can.  You can also do 115200 on the IC by using the /16 Bps
clock override in the register config.  The 6551A can do 38400 normal
and 230400 using the same /16 trick.

CBM Hackers responses:

Hm... The way I read the datasheet of the 6551, you need to check the
status register whether a byte is waiting (Bit 3 set) and if yes, grab
the byte and store it into the buffer. That BEQ doesn't really make
sense in this context.

 Gerrit

If I remember well I have used the serial port as tty terminal in the
past and it was working fine (although probably that does not use a 0x0
byte). Also at the university a guy has written a SLIP protocol software
and could get IP packets. He has created telnet, ftp and it was working.
It was the subject of his thesis and he has graduated.

Istvan

Maybe you could provide a bit more context on your note...

I read your note that the receive routine will read the READ register of
the 6551 ($fd00) and then go elsewhere of the value is 0, storing it at
$0fd5 (though you also say $07d5, which confused me, maybe a typo?) if
<>0.  The text, though, states that the routine will receive a null
byte, not store it, but then when a non-null byte is received, it will
store the null in the place the non-null byte was supposed to be stored.
 That would seem to be a huge issue, and I'm not aware anyone sees such
behavior.

Am I reading your notes correctly?

Gerrit's comment above is noting that the BEQ doesn't make any sense, as
by the time the routine reads data from the READ register, it should
always have previously checked the data available flag.  If set, the
data in the read register should be stored regardless, and no
conditional should be performed.

Jim
--- SoupGate-Win32 v1.05
* Origin: Agency HUB, Dunedin - New Zealand | Fido<>Usenet Gateway (3:770/3)