So, you're not using a 9S08. Then, some more work is needed. Right off the top of my head, one (untested/unoptimized) possibility is this:
lda POSITION_ON_LIST ;stack a word with value lsla ;(multiplied by two) psha clra rola psha lda 2,sp ;now, add table address add #[WordTable sta 2,sp pula adc #]WordTable psha pulhx ;HX -> table entry lda 1,x ;now, load HX with word value psha lda ,x psha pulhx
Notes: ASM8-based example. So, macro PULHX is PULH followed by PULX, [ gets lower part of word, while ] get higher part of word. One possible optimization (one byte, same cycles) would be a TSX before the lda 2,sp and then lda 1,x ... sta 1,x