Re: Hardware emulation of 6509 using 6502?

From: Michał Pleban <lists_at_michau.name>
Date: Sun, 25 Feb 2018 21:46:24 +0100
Message-ID: <5A9320A0.7050709@michau.name>
Hello!

Jim Brain wrote:

> The system goes along fine until the CMP $03fa at $f99e.  The 6509 reads
> $f0, while the 6502 reads $f8.  

This is not a problem. The CPU is reading from uninitalized RAM here, so
a random value is being read and that's OK. AFAIR, this is a memory
location containing the "warm start" flag; after initialization, a magic
value is written there.

> After a bit, the paths greatly diverge. 
> I think I am out of my element, and need help to move beyond this.

The real problem is at $F9B9: LDA $97. The code earlier expects the
value $00 that it has written there, and 6509 indeed reads this value
back, whereas 6502 reads $97. Therefore the following BMI instruction
branches back.

You need to figure out why LDA $97 reads back $97 instead of the actual
value there. A possible reason is that he code has written this value at
$F9B0: STA $97 - you can see that 6509 writes proper value $00 there,
but 6502 writes $97.

My first theory is therefore that you are not handling memory writes
correctly - instead of the correct value, you write the lowest byte of
the address for some reason.

Regards,
Michau.









       Message was sent through the cbm-hackers mailing list
Received on 2018-02-25 22:02:04

Archive generated by hypermail 2.2.0.