1
0
Fork
You've already forked bcpl32
0
Various 32-bit versions of BCPL
  • Limbo 93.6%
  • C 4%
  • Brainfuck 1.6%
  • C++ 0.6%
  • Makefile 0.1%
2022年08月10日 00:28:01 +02:00
bcplprogs fix line endings 2022年07月17日 10:53:51 +02:00
cintcode fix line endings 2022年07月17日 10:53:51 +02:00
xintcode simplify tasktab vs devtab logic 2022年08月10日 00:28:01 +02:00
README remove natbcpl/ directory 2022年07月14日 12:49:59 +02:00
TGZDATE initial commit 2022年07月14日 10:46:49 +02:00

***** all natbcpl/platform/asm code removed -jcw, 2022年07月14日 *****
BCPL CINTCODE DISTRIBUTION
This distribution of BCPL is free of charge to individuals for private
use and to academic institutions, but please, if you install the
system send me an e-mail message (to mr@cl.cam.ac.uk) so I can keep a
record of who is interested in it. It is available via my Home Page
(http://www.cl.cam.ac.uk/users/mr).
It provides a machine independent interpretive version of BCPL. The
interpreter in implemented in C, but for many architectures it also
has a version implemented in assembly language which greatly improved
the performance.
This distribution contains versions of the system for Linux, DEC Alpha
machines, Mips R2000/3000 machines, Sun4s, Sun/SPARCs and
386/486/Pentium machines under MSDOS, Windows 95/98/NT/2000, Windows CE2.0
(for the HP 620LX), MAC or OS/2. The implementations for the MAC and
OS/2 have not been tested recently and are out of date. The simplest
installation is for Linux machines. Installation on other machines is
described later.
TIME/ADDRESS DIAGRAMS
A version of the interpreter that can generate a time/address
diagrams in Postscript has been added to the distribution (see
com/raster.b, com/rast2ps.b, sys/rasterp.c and sys/rastlib.c)
PROFILING
Profiling and statistics gathering is available, see com/stats.b
CHANGE LOG
For a log of recent changes look in cintcode/doc/changes.
NATIVE CODE
A BCPL system that generates native is now available in this
distribution. It currently only provides code generators for the i386
and DEC Alpha architectures. On these machines it gives a speed up
of about a factor of ten.
PERFORMANCE STATISTICS (Cintcode interpreters)
 BCPL self bench Date
 compilation measured
Cintcode instructions 22244904 6176753 12 Jan 96
executed
66MHz 486 Linux 5.340 1.360 11 Jan 96
120MHz Pentium Linux 2.030 0.550 12 Jan 96
90MHz Pentium Linux 2.770 0.710 31 May 96
90MHz Pentium Linux native 0.75 0.109 19 Aug 96
450MHz Pentium Linux 0.760 0.270 7 Jan 00
450MHz Pentium Linux native 0.09 0.03 7 Jan 00
400MHz Pentium Windows NT 0.881 0.320 7 Dec 99
150MHz DEC Alpha 3.199 0.766 12 Jan 96
DEC R2000/R3000 Mips (10MHz?) 45.750 12.394 12 Jan 96
Sun4m ???? 13.549 3.817 12 Jan 96
Sun4m SPARC 20 Model 514 9.830 2.610 12 Jan 96
75MHz SH3 Windows CE 2.0 7.558 3.517 7 Jan 00
(The CPU times are in seconds)
LINUX INSTALLATION 
This section describes how to install Cintcode BCPL on an IBM PC
running Linux.
1) Choose a directory into which you wish to install BCPL and copy bcpl.tgz
into it. E.g:
 cd <somewhere>
 cp <bcpl.tgz> .
 ls -l
2) Extract the files for the BCPL system, eg
 tar zxvf bcpl.tgz
Some browsers will have already automatically decompressed bcpl.tgz,
so you may have to use the following command instread:
 tar xvf bcpl.tgz
This will create the directories BCPL, BCPL/cintcode, BCPL/bcplprogs
and BCPL/natbcpl and fill them with useful material. The directory
BCPL/bcplprogs contains subdirectories of demonstration programs, and
BCPL/natbcpl contains the native code versions of the system.
3) Change to the cintcode directory an rebuild the system:
 cd BCPL/cintcode
 make clean
 make
Note that the line 'make clean' is a recent recommendation that
eliminates some commonly reported problems.
4) This should have rebuilt and entered the BCPL Cintcode System, but
it will have only installed a few commands (including bcpl and c). To
compile all the other commands type:
 c compall
5) Try out a few commands, eg:
 echo hello
 bcpl com/echo.b to junk
 junk hello
 map pic
 logout (or CTRL-C)
Try "cinterp -h" to see how to set the Cintcode memory size.
6) Read the documentation in cintcode/doc and any README files you can
find, and possibly try out the demonstration script in
cintcode/doc/notes.
7) In order to use the BCPL Cintcode system from another directory
define the shell variable BCPLPATH to be the absolute file name of the
cintcode directory and add this directory to your PATH. This can be
done by editing the file BCPL/cintcode/setenv and running the command:
 . sentenv
This will execute commands similar to:
 export CINTCODE=$HOME/BCPL/cintcode
 export BCPLPATH=$CINTCODE
 export PATH=$PATH:$CINTCODE
The shell variable BCPLPATH is used when loading Cintcode object
modules, reading BCPL header files and command-command files used by
the c command.
8) To compile and run a demo program such as bcplprogs/demos/queens.b:
 cd ../bcplprogs/demos
 cinterp
 c b queens
 queens
9) To construct a time/address graph, ensure that rasterp has been
made, by:
 cd $BCPLPATH
 make rasterp
Then change directory to the one containing the test program, and
enter rasterp, eg:
 cd ../bcplprogs/sort
 rasterp
Compile the test program if necessary, eg:
 c b sortdemo
Open a raster file (eg RASTER), run the test, and close the raster
file:
 raster count 1000 scale 12 to RASTER 
 sortdemo
 raster
This will generate a relatively compact file using run length encoding
 K1000 S12 1000 instruction per raster line, 12 bytes per pixel
 W10B3W1345B1N 10 white 3 black 1345 white 1 black newline
 W13B3W12B2N etc
 ...
Get out of rasterp and enter cinterp (since it runs faster), convert
the raster file to postscript and view the result:
 logout
 cinterp
 rast2ps m 110000 f 12000000 to /tmp/RASTER.ps
 logout
 ghostview /tmp/RASTER.ps
10) To gather and analyse execution counts, type, for instance, the
following:
 cinterp Enter the cintcode system
 preload sortdemo Preload the program to study
 stats Enable stats gathering on next command
 sortdemo Execute the command to study
 
 interpreter Select the fast interpreter (cintasm)
 stats automatically selects the slow one
 stats to STATS Send instruction frequencies to file
 or
 stats profile to PROFILE Send detailed profile info to file
 or
 stats analysis to ANALYSIS Generate statistical analysis to file
Installation on other unix machines
Carry out steps 1 to 2 above. In the directory BCPL/cintcode/sys you
will find directories for different architectures, e.g. ALPHA, MIPS,
SUN4, SPARC, MSDOS, MAC, OS2, BC4, Win32, CYGWIN32 and shWinCE. These
contain files that are architecture (or compiler) dependent, typically
including cintasm.s (or cintasm.asm). For some old versions of Linux,
it is necessary to change _dosys to dosys (or vice-versa) in the file
sys/LINUX/cintasm.s.
Edit Makefile (typically by adding and removing comment
symbols) as necessary for your system/machine and then execute 
make in the cintcode directory, e.g:
 make
Variants of the above should work for the other architectures
running Unix.
Installation on machines running Windows 95/98/NT/2000/XP
The files cinterp.exe and rasterp.exe are included in the standard
distribution and should work under these operating systems just by
typing the command:
 cinterp
I recommend using the GNU development tools and utilities for Windows
95/98/NT/2000/XP that are available from
 http://sources.redhat.com/cygwin/download.html.
I would recommend clicking on the "Install Cygwin Now!" link.
I am currently using the Cygwin DLL 1.3.3 release.
Edit the cintcode/Makefile to comment out the LINUX version
 #CC = gcc -O9 -DforLINUX
 #SYSM = ../cintcode/sys/LINUX
 #CINTASM = cintasm.o
 #ENDER = LITENDER
and enable the CYGWIN32 version
 CC = gcc -O9 -DforCYGWIN32
 CINTASM = cintasm.o
 SYSM = ../cintcode/sys/CYGWIN32
 ENDER = LITENDER
Then type:
 make
This should recompile the system and create the executable cinterp.exe.
REMEMBER to include the cintcode directory in your PATH and BCPLPATH
environment variables, so that the cintcode system can be run in any
directory.
Careful inspection of the Makefile and directories in cintcode/sys will
show that versions also exist that use Microsoft C++ 5.0 and Borland C
4.0, but these are now out of date and are not recommended.
INSTALLATION FOR THE MAC OR OS/2
These are non-unix systems and so you have to invent the appropriate
sequence of operations to construct the system. Under OS/2 and I used
IBM's CSET/2 for the C programs and Borland's TASM as the assembly
language.
The MAC and OS/2 versions are now out of date.
INSTALLATION FOR WINDOWS CE 2.0 (Tested on an HP 620LX)
See the file cintcode/sys/shWinCE/README.
Good luck!
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 16 February 2004