On 11/14/21 4:51 PM, Jim Brain wrote: > 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. 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. GerritReceived on 2021-11-14 18:00:08
Archive generated by hypermail 2.3.0.