Subj : Re: Plus 4 rom error - is there any place to report it?
To : George
From : Jim Brain
Date : Fri Nov 19 2021 10:30 am
On 11/15/2021 9:50 AM, George wrote:
> Jim Brain says...
>
> > 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.
>
> It's been a while since I looked at this, but I believe the
> BEQ is there to bypass the code that checks if the byte is
> Xon or Xoff.
It might make sense to write up a bit more of the disassembly with your
notes to create clarity.
>
> I don't know if normal traffic would encounter null bytes,
> but I would think file transfers might. In any case, it's
> possible to avoid any problem if your software takes over
> the beginning of the IRQ routine, duplicates it up to this
> point, makes the fix, then jumps back into ROM. So the fact
> that all his stuff worked doesn't mean the error isn't
> there. He may have used his own code.The original post may have confused some folks, but I do think he was
aware we were discussing the stock routines, so I don't think he was
referring to home-spun code.
>
>
>
> > 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.
>
> No. $07d5 is the temp storage location for the incoming
> byte. A non-null byte is first stored there, then later
> retrieved and stored into the buffer. A null byte is NOT
> stored in $07d5, but the value in $07d5 is retrieved anyway.
> The result would be that a null byte produces a duplicate of
> whatever the last non-null byte was.
Ah, that clears things up for me. So, if $34 $00 were the data items,
the data delivered to the +4 app would be $34 $34
>
>
> I agree, except for the Xon/Xoff check. I'll have to double
> check that, but my memory is that it compares the received
> byte to zero-page locations that contain the values, if any,
> being used for Xon and Xoff. If Xon/Xoff is NOT being used,
> then those zero-page values are probably zeros, and in that
> case for a null byte you need to skip over the test because
> otherwise you would get a false match. I think that's why the
> BEQ is there.
Ah, understood.
>
> George
>
--
Jim Brain,
[email protected]
RETRO Innovations: Contemporary Gear for Classic Systems
www.go4retro.com
--- SoupGate-Win32 v1.05
* Origin: Agency HUB, Dunedin - New Zealand | Fido<>Usenet Gateway (3:770/3)