zcc(1) The frontend of z88dk


zcc [flags] [files to be compiled/linked]


This manual page documents briefly the z88dk tools. This manual page was written for the Debian GNU/Linux distribution (but may be used by others), because the original program does not have a manual page.

Please refer to the z88dk documentation in /usr/share/doc/z88dk-doc for the complete description of the system. If /usr/share/doc/z88dk-doc not exists, please install the package z88dk-doc.

The frontend of z88dk is called zcc, it is this that you should call if you want to do any compilations.

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 processed 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:
Name of alternate config file (must be the first argument).

   Predefined alternate configs:
     abc80        ABC80
     aceansi      Jupiter ACE, using VT-ANSI engine
     cpm          CP/M
     msx          MSX 1
     mz           Sharp MZ
     mzansi       Sharp MZ, using VT-ANSI
     nc           Amstrad NC100
     rex          REX 6000
     sam          Sam Coupe
     svi          Spectravideo SVI
     m5           SORD M5
     ti82         Ti82, using ROM text routines
     ti82ansi     Ti82, using VT-ANSI
     ti83         Ti83, using ROM text routines
     ti83ansi     Ti83, using VT-ANSI
     ti85         Ti85, using ROM text routines
     ti85ansi     Ti85, using VT-ANSI
     ti86         Ti86, using ROM text routines
     ti86ansi     Ti86, using VT-ANSI
     ti8x         Ti83+, using ROM text routines
     [ti8xansi]   Ti83+, using VT-ANSI
     vz           VZ / Laser 200
     vzansi       VZ / Laser 200, using VT-ANSI
     z88          Cambridge Z88
     z88ansi      Cambridge Z88, using VT-ANSI
     z88net       Cambridge Z88 with TCP/IP
     zx           ZX Spectrum
     zx81         ZX 81
     zx81ansi     ZX 81, using VT-ANSI
     zxansi       ZX Spectrum, using VT-ANSI
Produce .asm (or .opt) file only
Do not link object files
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)
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(!))
Verbose - echo commands as they are executed
Don't be verbose

Options to control library usage:
Link in a library - supply just the name (after placing them in the correct directory).

      The 'name' are:
      farz88       Z88 far support
      gfx          Z88 BASIC graphics lib
      gfxapp       Z88 application graphics lib
      m            Generic math routines
      malloc       Generic near malloc routine
      mz           OZ's math routines
      ndos         Fake file-routines, return errors only
      net          Z88 socket routines for ZSock
      netdev       Z88 socket routines for devices
      p3           +3 file support library
      tigray82     Ti82 graylib routines
      tigray83     Ti83 graylib routines
      tigray83p    Ti83+ graylib routines
      tigray85     Ti85 graylib routines
      tigray86     Ti86 graylib routines
      z88          Some Z88 application routines, like mailboxing
      zxmath       ZX Spectrum ROM based math routines
      zxvgs        ZXVGS hardware support
Generate .map files when assembling/linking

Options to control the type code produced:
Implicitly define everything as unsigned unless explicitly told otherwise.
Create an application image (i.e. bank 63,62 etc)
(App) Notify the compiler that you're trying to make an application
(App) Number of 256 byte pages required for bad application
(App) Origin for a Z88 application
(App) Amount of safedata required by your code
(App) Where static variables should be dropped (only valid for single file compilations, but see later)
(App) Expanded z88 required -no-expandz88 (App) Expanded z88 not required (these two flags toggle some startup code to check for an expanded machine)
Produce standalone code that can be run from a set address from BASIC. Use -zorg= to change the address
(Use with above) produces relocatable code that can be loaded into a DIM'd BASIC array.
Intelligent printf routine handling
Turn off the intelligent printf handling
Shortcut to generate .o files from library .c files
Sets the stack offset for shared libs (see package.txt for details)

Miscellaneous options:
Allow z80asm to be verbose, this tends to generate a lot of output to the screen so may not be desired.
Intersperse C code as comments in the assembler output, warning: this *will* clobber some optimizations.
Turn on all the compiler warnings
Turn off all compiler warnings
Turn off the compiler warning [num]
Turn on the compiler warning [num]
Cause the compiler to emit asxx compatible code
Pass an option through to the pre-processor
Pass an option through to the assembler

In addition, the flags, -D, -I, -U are passed through to the preprocessor.


z88dk was written by Dominic Morris <[email protected]>, and others. This manual page was written by Krystian Wlosek <[email protected]> using exists documentation, for the Debian GNU/Linux system.