This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Offset bug in OHx51 ??


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