Hi, First off, please pardon my ignorance since I am new to the subject.
I've been handed over a group of source code files (.c, .h, ...) written in C and a compiler IC96 (DOS 5.0 <046-N> iC-95 Compiler V2.3). These files had been compiled, linked and used to generate a HEX file (to flash some chip) without errors.
That was a couple of years ago. The source codes are still compiled without errors. But linking the compiled objects give errors. I don't understand the nature of the linker enough but by trials and errors, I'm under impression that the linker throws errors because there are more objects or the total in size than the linker can handle (I was able to link a few objects but not all of them).
1. Would someone please share any documentations regarding this compiler or linker? the .hlp files come with the iC96 compiler don't have anything on the linker.
2. The mentioned script to link the objs is below. Can you please help explain what the RAM and ROM attributes do in this script?
3. If I want to re-use the source codes with a new/better/more recent compiler to ultimately get the HEX file, what would be your recommendation? Please note that cost is the most important factor. We are a very small company and trying to salvage an old program.
Thank you kindly for your help.
/*-------LINKING SCRIPT--------*/
rl96 12345.obj, cstart.obj, alpha.obj, alphasup.obj, init_isr.obj, util.obj, lcd.obj, led_key.obj, lower_s.obj, alphacom.obj, c:\ic96\lib\c96.lib to alpha RAM(1Ah-0FFh,8000h-9FFFh(alpha)) ROM(2000h-207Fh,2080h-7FFFh(cstart)) ixref
On the notes regarding my experiments with the number of objects the linker can handle, I had combined all of the source codes into one big .h & .c file, for example, called "bigAlpha". bigAlpha was compiled ok. It built a HEX file without error too. But when the tech used the HEX file to flash the chip, it appeared to be empty, no programs on the chip.
The RAM and ROM options define the regions of memory these elements can use, and objects directed to specific regions.
ie cstart.obj gets placed in 0x2080..0x7FFF, the other objects use whatever left that is free.
Not really a Keil issue, and not even sure they ever had an Intel 80C196 compiler, this was a tool published by Intel
Thanks Westonsupermare Pier. It is indeed not a Keil's issue. I'm looking for other solutions in the event I can't get any supports from for the ic96 compiler.
Would I be able to use the mentioned codes with other tools such as Keil and get the same result (the HEX file)?
I have an earlier version of the Intel 96 compiler/assembler/linker, and manuals. There are no HLP or TXT files with the tools, the manuals are circa 1985 and not particularly exhaustive.
The object files are almost certainly Intel OMF, not sure if the Keil 8051 tools will work with them or not, or in a manner that's remotely helpful.
Email the HEX output file to CptTitanic@gmail.com , we'll chat off board