[stella] It's all coming back...

Subject: [stella] It's all coming back...
From: "Andrew Davie" <adavie@xxxxxxxxxxxxxxxxx>
Date: Wed, 6 May 1998 23:55:19 +1000
Hi guys.

Enjoying my time playing with this thing, I can see the attraction of going
back to the the minimal environment.  It takes me back to the (good?) old
days when cycles and space were everything.  I've not dug through the entire
archives, but did spot a note by Piero Cavina from last year detailing the
use of the indirect jump to effect case statements.

ie:
    lda value
    asl a
    tax
    lda jumptable,x
    sta temp
    lda jumptable+1,x
    sta temp+1
    jmp (temp)

This is a fine way to go, 16 bytes and 26 cycles - but I thought I'd mention
one of the other tricks we used way back when, when space was also tight...

    lda value
    asl a
    tax
    lda jumptable,x
    pha
    lda jumptable+1,x
    pha
    rts

This is 13 bytes and 27 cycles - saves 3 bytes on the earlier
implementation, at the cost of a single cycle.  It works by pushing the jump
address onto the stack as a return address (as if from a subroutine)... and
then returning.  If I were really cutting corners, I'd make sure that the
value variable already was a multiple of two, and then it would be...

    ldx value
    lda jumptable,x
    pha
    lda jumptable+1,x
    pha
    rts

11 bytes, 23 cycles.  One proviso - memory fails me as to if the high byte
or low byte should be pushed onto the stack first - so beware!  Its been a
long long time - please excuse any errors!

Hope this is helpful to some of you folks...

Enjoy.
A



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

Current Thread