C68 for QDOS
Main Menu | CPOC | C68
for QDOS | History | Feedback
This page is under construction so not all links will work yet.
This page is for "work in progress" for C68 for QDOS
and has versions of software that are still experimental in nature,
or are in late stages of testing.
The software on this page will have new features that are not yet fully tested,
so these versions may be unstable and/or cause your system to crash.
Use these versions of the software at your own risk.
The following programs are under way and (may) have versions of software available:
Note that the software in this section will assume that you already have the 4.24 release,
and then these replace the equivalent component from the that release.
They should not be used in conjunction with any earlier release than
the 4.24 release or behaviour may be unpredictable. Also you should ensure that
you have backup copies of any software before replacing them with these beta versions
as if you encounter problems with the beta versions you will need to revert to these
Please note that it is always possible that if serious problems are
found during a beta program, then that component may never make it
into a general release.
The ISO 1999 C standard introduces a large number of new facilities to the C language.
To support these, nearly all components of the C68 system for QDOS will need updating.
If you want more information on the standard then you can go to the site http://anubis.dkuug.dk/JTC1/SC22/WG14/
which is the home page for the standards committee that defines the ISO C
The main compiler program is independent of QDOS/SMS and it status can be found at:
The following summarises where we are in terms of updates to the binaries, headers and libraries
that are specific to the QDOS implementation:
The first version of C68 that supports features of this new standard will
be Release 5.0. It is intended that when there is sufficient of the new
standard implemented to be useful we will make some early releases to the
developer community to get early feedback, and progressively add the missing
facilities in subsequent point releases.
The RLL system is intended to add shareable libraries to QDOS.
This is intended to be the main feature of a future release of C68 for QDOS.
This is akin to the facility whereby extra keywords can be added to SuperBasic
by loading some sort of toolkit, and these new keywords are available to all
SuperBasic programs. The difference in this case it that the facility
applies to compiled programs. The system has been implemented with C programs
in mind, but is not restricted to use by C programs.
The following system components have been either added or enhanced to support the RLL system:
The impetus behind
developing this new version of the LD linker is to provide support for
Runtime Link Libraries (RLLs). There are however a number of new
features that may be of interest to those who already use C68 but who do not intend
to make use of the RLL support.
The following downloads are available:
- LD v2.0 source
If you want to rebuild LD yourself from the source then you will also need the
following two libraries that are assumed to be present by the LD2 source:
The key new features are:
- Support for RLL libraries. This includes both creating RLL libraries,
and also linking programs that make use of them.
- Case significant external symbols. In LD v1.0, the case of external
symbols was ignored. This could sometimes cause problems with C programs
that wanted external symbols to be case significant. Note that though
the C standard allows case to be ignored for external symbols, much
existing code assumes that case is relevant in external systems.
A command line option exists to suppress this option if so required.
- Revised binary format that supports storing significantly more
information in the binary program. This will allow for tools such
as symbolic debuggers to be built (if anyone is willing to take up the
challenge). The need to support this was driven by the RLL demands, but
the capability can be used even when not using RLL libraries.
- Ability to work in compatibility mode with LD v1. This enables
the new version to be used with existing libraries. To achieve this
use the options
as command line options to LD v2. This makes the new version of LD run
in backwards compatibility mode so that it produces the same output
format as the current version of LD that has been available up to now.
In practice the -U option (which makes all external symbols be treated
as upper case) may be unnecessary - but although all current c68
standard libraries will work fine, this can not be guaranteed for
libraries from other sources.
When running in backwards compatibility mode you will still get the
following benefits over the current general release of LD:
- A bug that could cause programs generated to work with the GWASS
assembler to get extra bytes inserted into the binary program under
certain circumstances (leading to an invalid binary) has been
corrected. This bug did not occur if you used the default C68
assembler format and the AS86 assembler.
- The -BUFP parameter to allocate the output program buffer size is
now not needed as (memory permitting) this space is now allocated
dynamically. If this parameter is used with the new version of LD then
it will be ignored, but a warning message will be given telling you it
- The -BUFL parameter to allocate the buffer for the maximum sized
library module is now not needed as the space for the required buffer
is now allocated dynamically as required. If this parameter is used
with the new version of LD then it will be ignored, but a warning
message will be given telling you it is unnecessary.
- By omitting the -U parameter suggested you use for full backwards
compatibility you can get all external symbols to be treated as case
The following is the remaining steps in the release schedule for
getting RLL support into c68 for QDOS.
- Beta 3 which adds the RLM component to provide runtime support for
RLL's. This will include new C68 start-up modules for use when RLL
libraries are in use; the first beta of the RLM (RLL Library Manager)
to provide runtime support for RLL libraries and a small number of
LIBC routines in RLL format.
- Barring releases made for bug fixing purposes, there will then be a
series of releases that gradually add to the number of library
routines in RLL format. At the end of the beta program a new full C68
release will be made that incorporates RLL support as a standard
Exactly how long it will take to complete this beta program I am not yet
sure, but those who have been eagerly waiting for the advent of RLL
support will, I expect, be glad to see that progress is finally
happening in this area (even if rather slower that originally anticipated).
This is the component of the RLL system that is used to manage the Runtime
Loading of RLL libbraries.
The following downloads are available:
These are RLL versions of the standard C68 libraries.
Note that not all C68 libraries are avaialble in RLL form, and even within
a particular library not all routines are in the RLL variant. The intention
is that over time more libraries will become available in RLL form, and also
that within each library more of the routines will be in the RLL variant.
The following RLL library downloads are currently available:
The standard C68 system does not produce relocatable (i.e. position independent)
code. The basic compiler is capable of producing position independent code.
It is intended over time to make as many of the C68 libraries available as possible
in a relocatable format.
These are variants of the standard C68 libraries that have been compiled to work
in this way.
The following library downloads are currently available in this format:
| C68 for QDOS