Re: [stella] Newbie: Efficiency in Code, Joystick Routine as Example

Subject: Re: [stella] Newbie: Efficiency in Code, Joystick Routine as Example
From: "Andrew Davie" <adavie@xxxxxxxxxxx>
Date: Mon, 15 Jul 2002 08:36:09 +1000

> Not necessary, everything looks fine! :-)

The statement that "has to compare a whole byte for each possibility, while
the second routine compares 1 bit. That's 8 times more efficient (I think).
"  is in error.  Comparing a byte against comparing a bit is not 8 times
less efficient.  In fact, it really depends how you do things, and what you
want to do.  Sometimes comparing a bit is less efficient.  Depends which
bit, and if you can modify A, for example.  Or if the byte is in memory or a
register.

For example, if I wanted to check to see if bit 4 was set in A, without
destroying A...... how do I do that?
I can't... directly.  There's no BIT #  instruction.  So I have to save the
value somewhere, bit it, and restore it

    sta temp        ; save A
    lda #16        ; the bit we want to check
    bit temp        ; check the bit
    lda temp        ; restore

That's ugly.  We could shift...

    asl
    asl
    asl
    bmi itsset

that's ugly too.  Besides, we've destroyed A - against spec - so we'd need
to save/restore it

The point being, it's not always easier to check a bit than to check a byte.
Checking a byte is typically...

    cmp #value
    beq thesame

> BTW: You can save one more byte (the first ASL) if you use BPL
> instead of BCC.

If up dropped the first ASL, then ALL of the BCC lines should then be
changed to BPL (just clarifying the above).

Cheers
A



----------------------------------------------------------------------------------------------
Archives (includes files) at http://www.biglist.com/lists/stella/archives/
Unsub & more at http://www.biglist.com/lists/stella/


Current Thread