The frontend of z88dk is called zcc, it is this that you should call if you want to do any compilations. To invoke the frontend use the command:
zcc [flags] [files to be compiled/linked]
The files can be either C files (.c) , preprocessed C files(.i), compiled C files (.asm), optimised compiled file (.opt) or assembled files (.obj), any combination of them can be mixed together and the relevant processes done on them.
Processing of a file list is done on each file in turn (i.e. preprocess, compile, optimise, assemble) at the end all files may be linked into a single executable if desired.
Options to control the action of the frontend:
+[file] Name of config file (including full path and suffix). This option overrides the file give by ZCCFILE. You shouldn't need this option unless you are compiling for other Z80 machines. -a Produce .asm (or .opt) file only -c Do not link object files -E Preprocess files only, leave output in .i file -o [file] Specify output file for binary (default is a.bas for BASIC programs and a.bin for application binaries) -On Optimize compiler output (to .opt file) n can be either 0 (none) 1,2,3, level 2 is recommended. Level 3 is suitable for large programs (includes certain lib functions to reduce size of code(!)) -v Verbose - echo commands as they are executed -vn Don't be verbose
Options to control library usage:
-l[name] Link in a library - supply just the name (after placing them in the correct directory) -lm Link in the generic Z80 maths library -lmz Link in and generate code for OZ's maths routines -lmalloc Link in the near malloc routines -lgfx Link in the graphics routines (for BASIC progams) -lgfxapp Link in the graphics routines (for applications) -lz88 Link in some Z88 application routines (eg mailboxing) -lnet Link the ths socket routines for ZSock -m Generate .map files when assembling/linking
Options to control the type code produced:
-unsigned Implicitly define everything as unsigned unless explictly told otherwise. -create-app Create an application image (i.e. bank 63,62 etc) -make-app (App) Notify the compiler that you're trying to make an application -reqpag= (App) Number of 256 byte pages required for bad application -zorg= (App) Origin for a Z88 application -safedata= (App) Amount of safedata required by your code -defvars= (App) Where static variables should be dropped (only valid for single file compilations, but see later) -expandz88 (App) Expanded z88 required -no-expandz88 (App) Expanded z88 not required (these two flags toggle some startup code to check for an expanded machine) -startup=3 Produce standalone code that can be run from a set address from BASIC. Use -zorg= to change the address -R (Use with above) produces relocatable code that can be loaded into a DIM'd BASIC array. -smartpf Intelligent printfroutine handling -no-smartpf Turn off the intelligent printf handling -make-lib Shortcut to generate .obj files from library .c files -stackoffset Sets the stack offset for shared libs (complicated - email me for details)
Miscellaneous options:
-z80-verb Allow z80asm to be verbose, this tends to generate a lot of output to the screen so may not be desired. -cc Intersperse C code as comments in the assembler output, warni ng: this *will* clobber some optimizations. -Wall Turn on all the compiler warnings -Wnone Turn off all compiler warnings -Wn[num] Turn off the compiler warning [num] -W[num] Turn on the compiler warning [num] -asxx Cause the compiler to emit asxx compatible code
In addition, the flags, -D, -I, -U are passed through to the preprocessor.
Any unrecognised options are passed through to the compiler (to allow for improvements in the future.)
The following "quick" guides exist: