User guide

Preface
The concept for BCPL originated in 1966 and was first outlined in my PhD
thesis [4]. Its was first implemented early in 1967 when I was working at M.I.T.
Its heyday was perhaps from the mid 70s to the mid 80s, but even now it is still
continues to be used at some universities, in indust ry and by private individuals.
It is a useful language for experimenting with algorithms and for research in
optimizing compilers. Cintpos is the multi-tasking version of the system based
on the Tripos [5]. It is simple and easy to maintain and ca n be used for real-time
applications such as process control. BCPL was designed many years ago but is
still useful in areas where small size, simplicity and portabil i ty are important.
This document is intended to provide a record of the main feat u r es of the
BCPL in sufficient depth to allow a serious reader to obtain a proper understand-
ing of phil oso p hy behind the language. An efficient interpretive implementation
is presented, the source of which is freely available via my home page [3]. The
implementation is machine independent and should be easy to transfer to almost
any architecture bot h now and in the futu r e.
The main topics covered by this report are:
A specification of the BCPL language.
A description of its runtime libr a r y and the extensions used in the Cintpos
system.
The design and implementation o f command language interpreters for both
the single and multi-threaded versions of the system.
A description of OCODE, the inter m ed i at e code used in the compiler, and
Cintcode, the compact byte stream target code used by the inte r p r et er .
A description of the sin gl e and multi-threaded interactive debugger and
other debugg i n g aids.
The efficient implementation of the Cintcode interpreter for several pro ces-
sors including both RISC and i386/Pentium based machin es .
The profiling and statistics gathering facilities offered by the system .
v