Adapted from Imagecraft's FAQ:
Q: What is in the ICC11 C compiler
Package includes a full ANSI C compiler. Also included are an assembler,
linker, C-subset library, librarian, and
library source. The Windows versions include a Windows Integrated Development
Environment (IDE). All versions come with a 90 (or so) page comprehensive
Q: Why is the price so low - what
We know most competitors' ANSI C compilers cost between $700 to $1500
and more. They usually support the full ANSI C library (we provide a subset),
they often have support for symbolic debugging with ICEs and may sometimes have tighter
optimization (although the code difference is only about 5%-20% in real code).
Also, we include immensely useful features that almost no one else has: for example,
other compilers do not include an IDE, or they have an IDE that by itself costs more
than our whole compiler package! Our IDE has an integrated Project Manager, and integrated
EEPROM (external and internal) and RAM programming using the Special Bootstrap mode...
do theirs? Another example: our linker allows you to specify memory ranges for a
(text or data) section, allowing you custom-specify your memory locations, such as:
"the ROM is from 0x8000 to 0xFFFF, except for the 512 bytes of internal EEPROM
at 0xB600." How about the infamous BUFFALO bug of overwriting location 0x4000?
Under ICC11, you can work around that easily.
We are supporting more debug solutions. See debuggers
Q: What about technical support?
We often provide quicker turnaround and patches than our competitors do through
the Internet. Our technical support is provided directly by the product developer. Please send ICC11 technical support questions by E-mail
to firstname.lastname@example.org for
the fastest response.
Check this list of common problems before contacting tech support:
"hello world" does not work:
Is the baud rate set correctly? BUFFALO sets the baud rate to the default
9600 baud, but if you are running a stand-alone program, you have to set the baud
The default putchar function uses the SCI port. Is your RS-232 output on the microcontroller
system coming from the SCI port? In particular, the Motorola HC11 EVB boards use
the ACIA chip instead of the SCI port. A solution for the Motorola EVB is to write
the putchar function to use the BUFFALO character output routine instead.
program hangs after finishing:
If your main() function "returns," the transfer of control goes
back to the code in the start-up file crt11.s, and the default behavior is to execute
an infinite loop. An alternative behavior, especially when executing under a monitor
such as BUFFALO, is to return control to the monitor program. Note that under BUFFALO,
a simple "rts" in crt11.s after the call to main would not suffice since
the start-up code loads a new value to the stack pointer as the first instruction,
which is likely different from the one that BUFFALO was using. Thus when an rts is
executed, it would not have the correct return address on the stack. To get the desired
behavior, either replace the infinite loop with the "swi" instruction which
would cause an interrupt trap back to BUFFALO or delete the "lds" instruction.
interrupt handlers do not work:
Did you enable interrupt via the INTR_ON() macro or the "cli"
If you are using a C function as an interrupt handler, you must use the interrupt_handler
pragma before you define the interrupt handler function.
You need to set up interrupt vectors: stand-alone programs need to use the vectors.c
file, and programs running under BUFFALO need to use the pseudo vectors in RAM. Note
that each entry in BUFFALO pseudo-vector entry is 3 bytes long, please refer to BUFFALO's
documentation for information.
In order to use interrupts on some of the HC11 subsystems, you must turn on the interrupt
enable bits. For example, the Timer Output Compare enable bits are in the TMSK1 register.
In most cases, you must also clear the interrupted flag by writing a "1"
into the flag register in your interrupt handler. For example, the Timer Output Compare
flag bits are in the TFLG1 register.
printf does not print floating point number:
You must explicitly link in the libfp.a library. "#include <stdio.h>"
in your source code is not sufficient.
programs do not work:
Is the HC11's COP Watchdog timer enabled accidentally? The Watchdog timer
would interrupt and reset your target if enabled "on" accidentally. Refer
to the HC11 reference manual for details. Basically, ensure that the NOCOP bit is
"1" in the CONFIG register (i.e. the 3rd bit of 0x103F is 1).
Program areas should not overlap. Check your map files! In particular, setting data
and text to the same address would cause problems.
If your program is a stand-alone program, then it needs a reset vector!
BUFFALO has a bad habit of writing to location 0x4000 due to an artifact of the Motorola
EVB. You can either delete the offending code in BUFFALO and burn a new BUFFALO ROM,
or use the linker address range to skip over the 0x4000 location.
Did you accidentally check the "No Startup File" checkbox in Option->Compiler->Linker?
This option is useful only for building stand-alone modules such as ROM library code.
bootstrap mode downloading does not work:
Is the HC11 running with a 8Mhz clock? Does the target board support bootstrap
If you are using one of Technological Arts Adapt-11boards, make sure that the "write
enable" switch is off every time you power on or reset the board. Also choose
the right type of memory device you are downloading in the bootstrap mode option.
assembler cannot assemble assembler modules:
The ias6811 assmbler uses different syntax than Motorola freeware assembler.
In particular, the bclr/bset/brclr/brset syntax is different.
Direct page reference must be preceded with the '*' character.
Q: "Please leave a message..."
If we are not near our main phone, we try to have the line forwarded to our
current location. In the event that you do not reach a "live person" on
the phone, YES, we DO answer all our phone messages, often within 15-20 minutes.
Please DO leave a message, otherwise we have no way to know you are trying to contact
us! (E-mail responses may often be even quicker.)
Please send technical support requests by E-mail to
email@example.com for the fastest response.
Q: What about pricing on version upgrades?
Registered owners of previous versions who wish to purchase the latest version
may receive upgrade discounts.
Q: What features are in the Windows
Integrated Project Manager, syntax aware editor, terminal, plus integration
with the compiler tools. ICC11: Internal / external EEPROM and external RAM programming
via the Special Bootstrap mode. ICC12: BDM downloading w/EVB912 and Kevin Ross' BDM
Q: Do the compilers include a macro
We include a stand-alone assembler, but it does not have macro capability.
It does have include file support.
Q: What about HC11 assembly code already
written with the Motorola freeware assembler?
We have a conversion program that translates 95+% of the code into our format.
Q: What variants of HC11, HC12 and
HC16 do the ImageCraft compilers support?
We support all variants of the HC11 (not including paged memory mode support
for K4) and HC12 (currently not including paged memory support). We support all variants
of the HC16. All modes of operation including single chip mode and expanded mode
Q: Do the compilers support debuggers?
ICEs (In Circuit Emulators)?
The compilers generate Motorola standard S record file format, but ICC12 and
ICC16 currently do not generate symbolic information for ICEs. ICC11 supports the
TECI ICE, and also provides some symbolic information for our optional debugger NoICE11.
ICC16 supports debuggers from P&E & WC Technology; ICC12 also supports those
too, as well as Axiom Manufacturing's AX-BDM 12 debugger.
Q: What is NoICE11?
It is a DOS based remote debugger which works with both the ICC11 Windows
and DOS versions. Although not a full source level debugger, it does understand some
source level constructs such as file names, source lines, and global symbols. It
has all the features of a monitor debugger including breakpoints, tracing, disassembly,
etc. It also has a DOS GUI with multiple windows and mouse support.
Q: What do you need to use NoICE11?
You need to run a small (about 1K bytes) ROM monitor on your target. It can
only debug RAM based code and needs a serial port to communicate to the DOS debugger
program. Once your program is working from RAM, you can then relink it to ROM addresses.
Q: What platforms do the compilers
The compiler tools run on 386 or higher processors. Currently the command
line tools run on DOS, DOS boxes and emulators under Windows 3.X, Windows 95, Windows
NT, OS/2, Mac and Unix, etc. The Windows IDE works under Windows 3.1, Windows 95,
and Windows NT. The Windows IDE does NOT work on a Windows subsystem under OS/2.
Linux and FreeBSD versions are now available. These have all the compiler tools except
for the Windows IDE.
Q: What other processors will ImageCraft
The AVR compiler is available upon request, ask your Mr Robot
sales rep for the best price.
Q: Are site licensing or volume discounts
Yes. Call 804-426-3394
Q: Why is this C compiler priced so
Well in the author's own words:
Actually, a better
question would be to ask the other vendors, why are their prices so high?
If you ask them, they will say it is because they have great features, high level
optimizations, great support, great debugging capabilities, etc. etc. But the simple
answer really is "because it has always been done that way."
In the "Jurassic Era" of embedded programming
(about 15 years ago), when the first C cross compilers come out, their prices were
high. After all, the embedded systems market was small, and the few customers at
the time were all working for large companies. A $1200 compiler is a "peanut"
investment in a project costing hundreds of thousands or even million dollars. In
fact, the venerable HC11 was designed and produced to control car engines for a certain
large U.S. automobile manufacturer.
Folks who remember the history of PC compilers may
see a parallel here. The first generation of C compilers for PCs cost around $800.
One day, however, along came Borland with Turbo C and blew the market wide open.
After the dust settled, competition drove PC compiler prices way down (until a certain
800-pound gorilla gobbled up all the small fry, which is another story....).
For the embedded market at that time, no such opportunity
existed. While Borland sold more than 500,000 copies of Turbo C in the first year,
it is doubtful that the total number of embedded systems cross compilers ever sold
has yet come anywhere close to that figure. So, instead of dropping the prices of
embedded compilers, the vendors actually increased their prices as their overhead
grew. Sure, they provided new features like C++, source level debuggers etc. but
in fact, to keep their high prices, embedded tools providers start to move
toward supporting the higher end chips. Why? Because the high end chips are used
by the large companies in their new embedded system designs. Once again, justifying
a $2,000 compiler is nothing when a project budget of $20,000+ is the norm.
Today, there are billions and billions of embedded
systems in use. As embedded systems have become more pervasive, and since now anyone
can get reasonably-priced microcontrollers (under a $1 for the low end ones), the
potential for a low cost market has blossomed, but, until recently, there was no
one to fill it. (Actually, to be accurate, people can always program in assembler,
which manufacturers usually give away free. Also, there are Small C or other free
C compilers, usually for the older K&R dialect of the C language. For many reasons,
however, these are not ideal tools.)
The time is ripe for low cost full ANSI C development
tools. ImageCraft's mission is to address the embedded systems market for customers
who cannot afford the traditional high cost of embedded systems tools. Our compilers
accept the ANSI C language with 4 byte longs and 4 byte floating point. Our IDE (Integrated
Development Environment) is very easy to use and has been described as much easier
to use than the IDE's of the other companies. Our code quality is quite competitive.
Perhaps the reason for this is that we use our products ourselves; if there is a
feature that is missing, superfluous, not useful, etc. we tend to really notice it.
Best of all, when you need technical support, you
get it straight from the developer, not through several levels of some "technical
support" help desk.
So, all this sounds too good to be true? Find out
for yourself. Download our demo compilers from our
Downloads Page, and see the compilers in action. As
demos, they don't generate valid output (s19) but you can discover yourself why there
is no need to pay "Jurassic Era" prices for your embedded tools.
What's the next mountain that we will conquer? Besides
new compilers for other popular chips including the so-called high end ones,
watch out for a low cost debugging solution. We will be there.
10220 Robious Road, Richmond, VA 23235
Start over at the Front Page (http://www.mrrobot.com/)
Refer questions, comments, or errors regarding this website to the firstname.lastname@example.org
Copyright 2003, Mr Robot TM