DCC C compiler (by Jeff Teunissen) quick notes:
-----------------------------------------------
The build chain uses the following modules:

DCC DCPP DCC68 DCO68 RMA RLINK

DCC is the compiler executive, like 'cc' or 'rcr'. It's based on Carl
Kreider's cc version 2.2, with some updates from later patches people
have made. It really only has that name because it's useful to have
both compiler toolchains able to fully coexist with one another.

DCPP is the preprocessor. As I mentioned in one of my previous posts,
it's compatible with the original Tandy c.prep, but with many features
from the ANSI/ISO standards and extensions adopted from the GCC
preprocessor (like the ability to synthesize errors and warnings). It
can handle much more complex sources than c_prep can, both because
it's smaller and because it doesn't use hard-sized arrays for all of
its data.

DCC68 is the 6809 compiler. I used to call it CC09, but I realized
that would cause problems later when I started working on the HD6309
version, so I adopted the naming scheme *68 for Motorola chips, *63
for Hitachi, which also goes along with David Breeding's 6309 patched
r63 assembler.

DCO68 is the 6809 assembly optimizer. It is _slightly_ better at
optimizing than c.opt (c.opt has a bug that doesn't allow it to
optimize patterns that start with a label, dco68 doesn't have that
bug). I plan to integrate the CnoY optimization into dco68 so that you
don't need a second optimizer, instead you will just have to call it
with -2 or something like that.

RMA and RLINK you already know.
--------------------------
Currently, Jeff is planning in removing CnoY support, as it is is not fully functional.

The dcc68 binary that is in my repo currently has an undocumented feature:
I accidentally left in the code that added "CnoY" support. The dcc
executive doesn't support it (yet?), but if you do:

dcpp sourcefile.c ! dcc68 -2 -s ! dco68 > sourcefile.a

then the output should be exactly the same as if you inserted CNoY into the
chain as well.

"CnoY" is a patch that does not need to use Y as a index register into process data RAM - since level 2 always starts the data area at $0000, means it can used Extended addressing.
