Hi Folks, I have a very simple piece of C code which calls an interrupt. This is compiled and linked using the uVision tool set (V2.40) (C51 v7.10, BL51 v5.03). This code works with a memory model small and code ROM size compact. When I try to run this with memory model small and code ROM size small (my preferred option) I get the infamous error L121 "improper fixup" error. When I look at the memory map it is as below TYPE BASE LENGTH RELOCATION SEGMENT NAME ----------------------------------------------------- * * * * * * * D A T A M E M O R Y * * * * * * * REG 0000H 0008H ABSOLUTE "REG BANK 0" IDATA 0008H 0001H UNIT ?STACK * * * * * * * C O D E M E M O R Y * * * * * * * CODE 0000H 0003H ABSOLUTE CODE 0003H 0002H ABSOLUTE 0005H 07FBH *** GAP *** CODE 0800H 000CH UNIT ?C_C51STARTUP CODE 080CH 000AH INBLOCK ?PR?INIT?EX1C CODE 0816H 0004H INBLOCK ?PR?INTERRUPTSERVICE?EX1C CODE 081AH 0004H INBLOCK ?PR?MAIN?EX1C I 'think' that the failure is because the interrupt vector for INT0 jumps to 0003H, but the interrupt service routine has been placed at 0816H, which is an address jump greater than 8 bits from the interrupt vector location. But being a newbie I am not sure. Is this the problem? If so how can I locate the C code ISR in the 8 byte location from 0003H which is to where the interrupt vector jumps? Thanks for your help folks!