I've been writing all the code using MPLAB 3.99. I did choose relocatable objects so that I could reuse code fragment with ease (perhaps even make librarys). Table read has to be made with a jump/call table. (With chips like 16x84 or 12c50x) This is simple when page boundries are not crossed. With non-relocatable code it is simple in that case as well. (Covered well in the Microchip AppNotes) However, with *relocatable* code it seems impossible. Example of code: PROG CODE ; Relocatable code .... if ( (HIGH TableStart) & 1 ) bsf PCLATH,0 ; set PCLATH right eg. this way endif ... ... ; make the computed call here ... TableStart retlw 1 ; table here retlw 2 ... This code makes MPLAB complain about the expression being too complex. (at the if command) Very logical as address is not know before linking. Yet, the address is needed at the time of code assembly. Unfortunately this problem does arise with every external label, even if the external label was defined by putting some table at *known* (fixed) location. Well, it is still external and therefore not known. A multi-pass assembler would solve this one with ease. Anyone found a way around these problems? Perhaps some other approach that might work? Table reading is very common thing to need. I'd hate to have to write non-relocatable code just for that! -- Harri Suomalainen mailto:haba@cc.hut.fi We have phone numbers, why'd we need IP-numbers? - a person in a bus