> The truth is I haven't figured out how to deal with tables that cross > boundaries yet, so I thought if I could push it up into EEPROM I > could avoid the inevitable a bit longer... Tables that use retlw, for example, need a boundary test, as PCL is modified and that may/will result in wrap-around As you noted before though, your flash is directly addressed by a 12-bit value Simply load ee address and get/put the data Like these - examples from a 16F877 program. Position in the table is generated outside of the read routine and held in addhigh and addlow in bank0 (sorry, I didn't comment these routines. Check banks for 16F690) ;================== ; Read flash memory ;================== movf addhigh,w bank2 movwf eeadrh bank0 movf addlow,w bank2 movwf eeadr bank3 bsf eecon1,eepgd bsf eecon1,rd bank2 movf eedata,w bank0 movwf lo bank2 movf eedath,w bank0 movwf hi return ;================== ; Modify flash memory ;================== writef bank0 bcf pir2,eeif movf addlow,w bank2 movwf eeadr bank0 movf addhigh,w bank2 movwf eeadrh bank0 movf lo,w bank2 movwf eedata bank0 movf hi,w bank2 movwf eedath bank3 bsf eecon1,eepgd bsf eecon1,wren movlw 0x55 movwf eecon2 movlw 0xaa movwf eecon2 bsf eecon1,wr nop nop nop nop bcf eecon1,wren bank0 btfss pir2,eeif goto $-1 bcf pir2,eeif return -- http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist