Hello, When compiling a program, the generated .lst file creates 'blocks' of assembly code. Every block starts with the name of the function and between brackets the word 'BEGIN'. For instance: ; FUNCTION _i2c (BEGIN) 0000 8F00 R MOV Address,R7 0002 8D00 R MOV NrSend,R5 At the end of the function, you'll see something like this: 00A7 ?C0002: 00A7 22 RET ; FUNCTION _i2c (END) This is repeated for every function in a source file. However, as you can see from the example, the 'real' location of the code is not filled in. That i2c function does not start from address 0000 onwards. Also the correct jump addresses are not in. Example: 009D 120000 R LCALL I2cGenerateStopCondition As you can see, the real location of the subroutine 'I2cGenerateStopCondition' is not filled in (yet?). I'm using a simulator that really needs that correctly filled in information. Questions: ========== 1. Is there a way to obtain a .lst file (or another file) with all the addresses correctly filled in as they would be located in the final eprom (or something similar) and not filled with 'temporary' values of '0'? 2. Can this also be done for sources that use other object files? For instance, I wrote an I2C routine and I'm using the generated object file of that I2C routine in a project that has I2C communication. Any help would be appreciated. Thanks in advance, Geert Vancompernolle