Date : Sun, 07 Feb 2016 05:05:12 +0000
From : matt@... (Matt Godbolt)
Subject: Emulation
Fab! Glad to hear it :)
For what it's worth there are plenty of 6502 CPU tests that might be worth
trying. It's a little more controlled than the random haphazard discovery
of broken opcodes :)
https://github.com/mattgodbolt/jsbeeb/tree/master/tests has the list of
things jsbeeb tests; specifically a branch of Klaus's 6502 functional tests
and some C64 tests ported over.
Happy to give more info if you think it'll be of interest!
--matt
On Sat, Feb 6, 2016@... PM, Julian Stenning <julian_stenning@...>
wrote:
> Making progress here, thanks for the help. JSBeeb is a wonderful resource,
> thanks Matt, being able to stop at any point and compare status really is
> extremely useful.
>
> JGH you're spot on, LDY Abs,Y was indeed wrong. At risk of embarrassing
> myself, here's today's fixes:
> - Memory initialised low, amateur!
> - Z & N not considered on SBC ADC
> - ADC & SBC results could exceed 8 bits
> - ROR implemented incorrectly
> - Z & N not considered on PLA
> - Corrected V flag logic in SBC / ADC
> - LDX Abs,Y ($BE) wasn't adding Y offset
> - LDY Abs,X ($BC) was LDX Abs,Y !
>
> Getting things wrong is all part of the learning process & getting them
> right of course, and it's all good fun.
>
> Thanks again, I may be back shortly...
> Julian.
>
> > Date: Fri, 5 Feb 2016 17:35:50 +0000
> > From: jgh@...
> > To: bbc-micro@...
> > Subject: Re: [BBC-Micro] Emulation
>
> >
> > Steve Fewell wrote:
> > > It looks like &0356 should contain values between 0 and 4. In your
> > > code fragment (below), 0 would JMP to &CC02, 1 would JMP to &CC32, 2
> > > would JMP to &CC7A, 3 would JMP to &CC92 and 4 would JMP to &CCE6
> > > So a value of &0E definitely seems incorrect to me.
> >
> > That makes me suspect that:
> >
> > CB64 LDY &C440,X ;screen display memory index table
> > CB67 STY &0356 ;memory map type
> >
> > is wrong, that the emulation of LDY abs,X is wrong. Supported by earlier
> > code being:
> >
> > CB54 LDA #&07 ;else A=7
> > CB56 ASL ;A=A*2
> > CB57 TAY ;Y=A
> >
> > so Y=&0E at that point. If LDY abs,X is being implemented as LDX abs,X
> > then &0356 is being set to &0E instead of the memory map type.
> >
> > --
> > J.G.Harston - jgh@... - mdfs.net/jgh
> >
> >
> > _______________________________________________
> > bbc-micro mailing list
> > bbc-micro@...
> > http://lists.cloud9.co.uk/mailman/listinfo/bbc-micro
> _______________________________________________
> bbc-micro mailing list
> bbc-micro@...
> http://lists.cloud9.co.uk/mailman/listinfo/bbc-micro
>