BCPL CINTCODE SYSTEM

RECENT CHANGES

22/4/04
Made changes to the native code version of BCPL.

14/8/01
Added SLCT and OF (synonym ::) operators, making no change to
Cintcode. SLCT size:shift:offset is a manifest constant
encoding a bit field relative to a pointer. 
(SLCT size:shift:offset) OF p  selects the field. OF can be used
on both the left anf right hand side of and assigment, but not
as the operand of @. SLCT and : have precedence zero, and OF has
the same precedence as dyadic !.

15/1/01 bcpl.b
Complain if global number is larger than 65535.

10/7/00 BLIB.b bcplprogs/demos/objdemo.b
Changed the definition of mkobj to take up to 11 initialisation
arguments. See bcplprogs/demos/objdemo.b

22/6/00 cintmain BLIB.b
Made a correction to muldiv to stop it looping on #x8000000
This Cintcode instruction MDIV is now not invoked since it
sometimes causes a floating point(!!) exception on a Pentium.

5/4/00 cintmain.c sys/shWinCE/cintmain.c

Implemented the -h, -m and -k command options.
Try "cinterp -h" to see what they do.

4/4/00 com/map.b

Removed a bug in the map command.

21/2/00 sys/shWinCE/cintasm.src

Corrected bug concerning the MDIV instruction.

14/12/99  bcpl.b

Made / * ... * /  comments nest.
Allow the constants in MANIFEST, STATIC and GLOBAL declarations 
to be optional. If absent the value is one greater than the
previous value. Unless specified the first value is zero, so
MANIFEST { a; b=10; c } declares a, b and c to be 0, 10 and 11,
respectively.

7/12/99 Makefile cinterp.h and kblib.c

Included a Windows 96/98/NT version of the system using the
GNU Cygnus C compiler, assembler and make command. To run this
version GNU Cygnus C must be installed first. It can be obtained
(free) from http://sourceware.cygnus.com/cygwin/

9/6/99  bcpl.b

Made changes to buffer OCODE in memory. When bcpl is called
without the TO argument it writes numeric ocode to the file OCODE.
Lex treats CR (13) correctly to improve convenience when running
under Windows and WindowsCE.

30/3/99 BLIB and libhdr

Added two extra arguments to mkobj that are passed to the call
of the InitObj method. Added manifest definitions of InitObj and 
CloseObj in libhdr.

26/2/99  bcpl.b cintmain.c

Added BIN option to the compiler to generate a binary (rather than
hex) hunk format for the compiled code. This is primarily for the
Windows CE version of the cintcode system where compactness is
particularly important. There is a related change to loadseg in
cintmain.c to allow it to load either form of hunk.

17/11/98 bcpl.b

Changed the default workspacesize to 40000 and added the SIZE keyword
to allow the user to specify this size.

9/11/98  bcpl.b

Made GET directives search the current working directory
then directories given by the shell variable BCPLPATH, if set.
It uses the BLIB function pathfindinput.

6/11/98  cintmain.c, libhdr, BLIB.b, bcpl.b

Implemented changes to replace sys(14,name) by
sys(14,name,pathname). If pathname is 0 or the specified shell
variable is unset, there should be no noticeable difference. The new
version searches for the file in the current working directory, then
the directories given by the shell variable pathname until
successfully opened.  It is designed to work on both Windows and
unix. If the shell variable BCPLPATH is set it specifies a path used
by loadseg (ie the initial loading of SYSLIB, BOOT, BLIB, CLI and CLI
commands) as well as for header files and files processed by the c
command.

15/12/96 bcpl.b

Correct a bug in cellwithname

5/11/98  cintmain.c

The comment character in object modules has changed from
semicolon(';') to hash ('#').

16/8/96  bcpl.b

Added one line to readnumber to allow underscores in numbers anywhere after
the first digit.

1/8/96   sbcpl.b cvsial386.b and the directory native

Made available a simple native version of BCPL for 386/486/Pentium
under Linux. It runs about 10 times faster than the Cintcode system on
non I/O bound tests.

12/6/96  cintmain.c, cinterp.c, cinterp.h

Move the definition of INT32pt, WD, UWD, PT, BP, SBP, HP and SHP to
cinterp.h, and define SIGNEDCHAR in cinterp.h to solve a problem with
char being unsigned on some implementations.

7/6/96   bcpl.b BLIB.b libhdr bcplprogs/objdemo.b

Added the construct E#(E1, E2,..., En) to the language.  It is a
sugaring for ((!E1)!E)(E1, E2,..., En) to make Object Oriented style
of programming more convenient.  Add mkobj(upb, fns) to BLIB.b. See
bcplprogs/objdemo.b

31/5/96  cintmain.c

Added handler for SIGINT to restore tty settings

30/4/96  cintmain.c

Added call of fflush(fp) to case 13: in dosys, with corresponding
changes to libhdr and BLIB.b (added flush())

24/12/95 bcpl.b

Improve the efficiency of cellwithname in TRN (using the hash chain
link in name node). Improve the efficiency of outputsection in CG by
introducting wrhex2 and wrword_at

24/11/95 cintmain.c

Improve the efficiency of the calls of fread and fwrite.  Reduce the
size of chbuf from 1024 to 256

25/10/95 cintmain.c

Use ANSI clock() instead of ftime(), adding TICKS_PER_MS.
Change #define names to forMAC, forMIPS, forSUN4 etc
Add and set external tallyv

18/10/95 cintmain.c

Remove compatibility with non protected mode MSDOS (now
using Borland C version 4.0).

24/7/95  bcpl.b

Remove bug in atbinfo, define addinfo_b change some global numbers.
Implement constant folding in TRN.

13/7/95  bcpl.b

Allowed { and } to represent untagged section brackets.

24/9/93  cintmain.c

Replace word by INT32
Put in code for DEC Alpha and Sun-4 machines
The #define is now in the Makefile
Change to Ansi C conventions
Other minor modifications in main and dosys

22/6/93  cintmain.c

Remove aptovec

22/6/93  bcpl.b

Reverse order in SWB and have a minimum of 7 cases to allow faster
interpreter.

2/6/93  bcpl.b

Change code for SWB to use heap like binary tree.

24/5/93  cintmain.c

Allow ';' comments in object modules (mainly for SYSLIB)

19/5/93  bcpl.b

Put in code to compile BTC and XPBYT instructions

23/4/93  bcpl.b

Allow the codegenerator to compiler the S instruction.

21/12/92  bcpl.b

Cure bug in compilation of (b -> f, g)(1,2,3)

24/11/92  bcpl.b

Cure bug in compilation of a, b := s%0 > 0, s%1 = '!'

23/7/92  bcpl.b

Rename nextlab as newlab, load as loadval in the CG
Put back simpler hashing function in lookupword
Remove rdargs fudge
Remove S2 compiler option
Cure bug concerning closure of gostream when equal to stdout
Remove commented section separators


Martin Richards
     (mr@cl.cam.ac.uk, http://www.cl.cam.ac.uk/users/mr)
University Computer Laboratory
New Museums Site                  
Pembroke Street
Cambridge
UK


