Plus/4 6551 receive routine error?

From: Jim Brain <brain_at_jbrain.com>
Date: Sun, 14 Nov 2021 09:51:18 -0600
Message-ID: <0fd50c48-6ec2-b53e-636f-e0586f916ef2_at_jbrain.com>
 From USENET last night/this morning:


I was going over some of my old CBM files from back in the day, and ran
across an error I had found in the Plus 4 kernel rom.  I don't think I ever
found a way to report it to anyone, so I thought I would see if anything
has changed.

The error is in the 6551 ACIA servicing routine where a byte is read in
from the ACIA:

LDA $FD00
BEQ EAC2
STA $07D5

Incoming bytes are first stored at $0FD5, and later moved from there into
the input buffer.  But as the rom is written, any null byte (00) received
would be later stored as whatever the most recent non-null byte was.  And
it's impossible to receive a null byte.  The solution is to reverse the
second and third instructions:

LDA $FD00
STA $07D5
BEQ EAC2

Or you could duplicate the beginning of the IRQ servicing up to this point
in your code, with the correction, then jump back into the rom.

Of course, this being the Plus 4, it may be that nobody would ever care
about this, but it would be nice to make a record in case anyone ever
wanted to make other revisions to the ROM, or actually make use of the UART
capability of the Plus 4.

George Hug


-- 
Jim Brain
brain_at_jbrain.com  
www.jbrain.com
Received on 2021-11-14 17:00:02

Archive generated by hypermail 2.3.0.