Re: [stella] My code is broked!
Subject: Re: [stella] My code is broked!|
From: Jason Rein <jjrein@xxxxxxxxxxxxx>
Date: Tue, 7 Oct 2003 20:07:10 -0700
I'm still learning Indirect Y addressing (and writing a "how to" as I go along in case I forget later) but I think you may need to initialize both the hi and lo byte of the address (since Indirect Y expects a 16-bit address).
For example, you're stuffing the value #$B0 (least significant byte of the address) in tmpVar3 but when you go to dereference it later (with "lda (tmpVar3),y"), it's reading the address as "$xxB0" where "$xx" is garbage.
We're simply putting "$00" as the most significant byte of the address so the tmpVar3 pointer will look like "$00B0" and the tmpVar4 pointer will hold "$00A0". Oh, and be sure both tmpVars are 2 bytes in size!
I hope that helps. If not, we'll both learn something! :)
On Tuesday, October 7, 2003, at 07:33 PM, Chris Larkin wrote:
It could just be that I still don't fully understand indirect addressing... But this should work?
I know this loop does not replace the first byte in either location, but it should "swap" the others... However
my results are not very good :-)?What am I doing wrong?
PlayerHand = $B0 ; -> $B6
Player3 = $A0 ; -> $A6
??? ?LDY #7
??? ?LDA #PlayerHand
??? ?STA tmpVar3
??? ?LDA #Player3
??? ?STA tmpVar4
??? ?LDA (tmpVar3),y
??? ?STA tmpVar2
??? ?LDA (tmpVar4),y
??? ?STA (tmpVar4),y
??? ?BNE TradeLoop