====== C68 - C Compiler ====== ===== Introduction ===== The C68 Compilation System provides a Public Domain C compiler for use under the QDOS operating system. It is a full C implementation that includes all items mentioned in the "Kernighan and Richie" C definition. There is full support for all common data types such as int, char, short, long, float and double as well as more esoteric types such as "typedef" and "enum". Structures and unions are supported for those who want more complex data types. The C68 Compilation System includes everything that is needed to produce a running C program, including a simple source code editor for those who do not already have one. However editors is an area where every user seems to have their own personal preference, so you are at prefect liberty to use an alternative Many C programmers are likely to already have a suitable editor that they like and love! ===== The Compilation Process ===== The C68 Compilation System is implemented in the style that is common on Unix systems where the compilation process is broken into a number of discrete phases. These are: * CPP - pre-processor * C68 - compiler * AS68 - assembler * LD - linker The user does not normally run these programs directly. Instead they are front-ended by the ''CC'' command. This will examine the parameters it is provided with, and will run the appropriate underlying programs. The job of the ''CPP'' pre-processor is to take the C source provided and scan it executing all the C directives (the ones that start with the # symbol) such as #include and #define statements. This produces C code with all these directives removed that is suitable for input to the main compilation phase. The output from the ''CPP'' pre-processor is then input into the ''C68'' compiler. At this stage all the syntax analysis of the user's program is done, and code generated. The ''C68'' compiler outputs assembler source code. The assembler source code is then converted to SROFF (Sinclair Relocatable Object File Format) by the ''AS68'' assembler. Finally the ''LD'' linker is used to combine the user's program module(s) with standard library modules that are supplied as part of a C implementation. It is tedious to have to keep typing in all the parameters required to compile a particular program (particularly if it consists of multiple modules). The C68 Compilation System provides the ''MAKE'' command to allow this process to be automated. ===== The Libraries ===== A key part of any C implementation is the libraries that are supplied with it. The more extensive the libraries, the easier it is for the programmer to implement any particular facility. One of the strengths of the C language is the ease with which programs can be ported between different computers and operating systems. This is only true, however, if both systems have comparable (and preferably compatible) library routines. The standard C library supplied as part of the C68 Compilation System includes all routines defined by Kernighan and Richie; all routines defined by the ANSI standard; most of the routines commonly implemented by the LATTICE C family of compilers; and a large number of library routines commonly encountered in the Unix environment. For those who want to access QDOS, access is provided to all of the QDOS operating system calls. There are standard routines to satisfy many tasks commonly encountered by programmers (e.g. a routine to obtain a sorted directory listing, or a list of files matching a wildcard pattern). Additional libraries cover more specialist areas such as MATHS routines and debugging aids. Libraries are under development to cover areas such as QRAM support and Semaphore handling. ===== C68 Source Code ===== All elements of the C68 compilation system are in the Public Domain. For those who are interested the full source of all components is available. Except for some of the library routines, the rest of the C68 Compilation system is itself written in C. The C68 Compilation system is in fact used to compile itself! ===== Hardware Requirements ===== The one drawback of the C68 Compilation System is that it will not run on an unexpanded QL. The minimum requirements are 256Kb of memory and at least one 720Kb floppy disk drive. Additional memory and/or disk drives are highly desirable. ---- Title: **C68**\\ Language: C\\ Author: [[qlwiki:Dave Walker]]\\ C68 Website: [[https://itimpi.updog.co/qdosmenu.htm]]\\ Platforms Suitable for: All expanded Sinclair QLs and emulators with at least 256Kb RAM and one 720Kb floppy drive\\ Commercial Status: Public Domain\\ Sources Available from: [[http://www.dilwyn.qlforum.co.uk/c/|The Sinclair QL Homepage]]\\ Latest Version available from: [[http://www.dilwyn.qlforum.co.uk/c/|The Sinclair QL Homepage]]