Listing 1 Making use of the spare upper bits. ;(this first ORI could be left out, but is included for clarity) ori SIXBITS, MYRET1 ;tell routine to return HERE rjmp BIG_MATH FAKE_RET1: ... ori SIXBITS, MYRET2\ rjmp BIG_MATH FAKE_RET2: ... ori SIXBITS, MYRET3 rjmp BIG_MATH FAKE_RET3: ... ori SIXBITS, MYRET4 rjmp BIG_MATH FAKE_RET4: ... BIG_MATH: ;too big to be in-line multiple times ... addi SIXBITS, 0x40 ;see if it rolls over from 0xC0 to 0x00 brcc FAKE_RET4 ;remember, with ADDI the C flag is reversed! addi SIXBITS, 0x40 ;bump again until it rolls over brcc FAKE_RET3 addi SIXBITS, 0x40 brcc FAKE_RET2 addi SIXBITS, 0x40 ;make sure we ALWAYS leave w/ upper bits = 0 rjmp FAKE_RET1