I suspect I have found a bug in OHx51 - either that, or I am driving it wrong. It seems to have problems generating offsets. The details are as follows. I need to create more CODE space in my C51 application by moving all constant data into XCONST: I have plenty of flash memory but my XDATA requirements are not too high. I've built using C51 misc controls VARBANKING OMF2 STRING(XDATA) XCROM I am not using "far" at all. In the LX51 Locate configuration, I'm using XDATA (X:0x0-X:0x9FFF),XCONST(x:0xC000-x:0XEFFF) (and deselected "Use memory layout...") This all builds fine. I then use OHx51 to create a Intel hex file containing the XDATA. I want the base address for this to be zero. I therefore issue the command : ohx51 stagkeil hexfile (sjm.hex) h386 range (x:0xc000-x:0xEfff) offset (- 0x0c000) This almost works. Each individual record starts at the correct address (i.e. starting at zero). However, the first two entries in the generated file are : :020000040100F9 :020000040101F8 when I would expect to see a single line specifying : :020000040000FA By changing this manually - everything works fine. I have tried many values for the offset command parameter, but I am unable to get it to work. It seems that (1) the lower part of the address decrements correctly (2) The upper part of the address/offset is always added regardless of the +/- (3) I can't add values >= 0x8000 0000 (since + 0xFFFFF400 would probably do the trick) since anything above 8000... seems to be treated as a -ve number. This seems to be a bug in ohxc51 : - or am I doing something wrong. Any suggestions ? I am using C51 version 7.02b (ohxc51 version V1.32) Steve