[comp.os.cpm] C compilers which can be linked with Assembler

ralph@uhheph.phys.hawaii.edu (Ralph Becker-Szendy) (03/02/91)

Dear cp/m addicts, I am looking for a C compiler. Not just ANY OLD C compiler.
I want one which generates code which can be linked into Z80 Assembler. Here 
is the problem: The monitor part of my BIOS (the thing which sets up the 
machine before booting cp/m) is currently written in SLR assembler, as is the 
rest of the BIOS. The amazing capabilities of the SLR assembler and virtual 
linker make cross-linking between BIOS and monitor quite easy. However, the 
monitor is getting longer and longer, and soon (with all the bells and 
whistles which will be required for SCSI disks as soon as I get the low-level 
SCSI driver to work, backup to SCSI tape, managing partitions on the disk and 
storing the setup of the machine in NVRAM) it will become a burden to write 
all this in assembler.

So I am looking for a C compiler with the following capabilities:
- ROMable code (that doesn't mean anything exceeding the following 
  requirements, the code actually runs in RAM),
- Generate fairly tight code (it all goes into EPROM, and 32kB EPROM isn't
  that much if a whole C run time library wants to get into that),
- Define subroutines and data structures at arbitrary addresses (so it can call
  assembler routines and access BIOS data structures),
- Call assembler subroutines with control over nearly all registers (so it 
  can pass and receive parameters from BIOS-internal routines),
- C routines have to be callable from assembler, and there will be no MAIN 
  program,
- Code can be generated at any address, and the position of stack and heap can
  be moved,
- The IO library can be replaced or modified (source code would be best), since
  no BDOS is present when the program runs all IO has to be through BIOS
  calls or assembler routines internal to the BIOS, 
- The compiler has to generate Microsoft or SLR type .REL files, because the
  linking has to be done by the SLR linker,
- or even better, it may to generate assembler source which can be assembled
  by the SLR asssembler.

Quite certainly my otherwise very nice MIX-C compiler will not do that. I know
of a few other C compilers (there is a PD small-C compiler on SIMTEL, and one 
in VOL224 or the SIG collection), I hear that some compilers are still being 
sold (for example by Jay Sage, or Aztek-C, and MI-C is still available for 
lotsof money in Germany, not identical to the low-cost MIX-C), and others may 
be defunct (C/80 and Quick-C come to mind). Are any available (frree, new for 
sale, or "used" someone wants to unload) which can fill these requirements ?

By the way, I am in no way restricted to C. I would actually prefer other 
languages like Pascal or Modula-2, but with those fancy languages the chances 
of finding a compiler whose output can be linked into assembler are even 
slimmer than with C.

For the long-term future (as soon as I finish my dissertation I might have some
spare time), are there any compilers which generate real Z280 code ? Or, for
that matter, even assemblers (I am not counting macro libraries which define
funny opcodes for the new Z280 instructions) ? That topic pops up every so
often. I hear of a few expensive cross-developments systems, but that's no fun.

-- 
Ralph Becker-Szendy                          UHHEPG=24742::RALPH (HEPNet,SPAN)
University of Hawaii                              RALPH@UHHEPG.PHYS.HAWAII.EDU
High Energy Physics Group                                  RALPH@UHHEPG.BITNET
Watanabe Hall #203, 2505 Correa Road, Honolulu, HI 96822         (808)956-2931