Date : Sat, 06 Feb 2016 23:14:08 +0000
From : julian_stenning@... (Julian Stenning)
Subject: Emulation
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