ceriel 28 years ago
parent
commit
e3ec5a31d6

+ 0 - 6
fast_misc/.distr

@@ -1,6 +0,0 @@
-man
-INSTALL
-INSTALL_A
-READ_ME.n
-driver.c
-str_change.c

+ 0 - 182
fast_misc/INSTALL

@@ -1,182 +0,0 @@
-#!/bin/sh
-
-# installation of fast ACK compilers fcc, fm2, and fpc
-
-# is the call correct?
-case $# in
-1)
-	if [ -d $1 ] 
-	then
-		:
-	else
-		echo $0: $1 is not a directory >&2
-		exit 1
-	fi
-	;;
-*)
-	echo $0: Call is $0 \<bin directory\> >&2
-	exit 1
-	;;
-esac
-
-# investigate machine: either vax or sun(3)
-
-echo $0: determining type of machine ...
-cat > t.c <<'EOF'
-main() {
-#ifdef sun
-	printf("sun\n");
-#endif
-#ifdef vax
-	printf("vax\n");
-#endif
-}
-EOF
-if cc t.c
-then
-	:
-else
-	$0: compilation failed >&2
-	exit 1
-fi
-m=`./a.out`
-rm -f a.out t.[co]
-case $m in
-sun|vax)
-	echo $0: Starting installation for a $m ...
-	;;
-*)
-	echo $0: machine must be sun or vax >&2
-	exit 1
-	;;
-esac
-
-# make links to proper bin and lib directories
-
-echo $0: creating bin and lib directories ...
-rm -f bin lib
-ln -s bin.$m bin
-ln -s lib.$m lib
-
-# edit manual page
-sed s@CHANGE_ME@`pwd`/def@ < man/fm2.1.src > man/fm2.1
-
-# now compile the driver program
-
-echo $0: compiling driver program ...
-rm -f fcc fm2 fpc
-SunOs4=
-if [ -f /usr/lib/ld.so ]
-then
-# different options for the loader on SunOs 4.0
-	SunOs4=-DSunOs4
-fi
-if cc -O -DFASTDIR=\"`pwd`\" $SunOs4 -DFCC -o fcc driver.c &&
-   cc -O -DFASTDIR=\"`pwd`\" $SunOs4 -DFM2 -o fm2 driver.c &&
-   cc -O -DFASTDIR=\"`pwd`\" $SunOs4 -DFPC -o fpc driver.c
-then
-	:
-else
-	echo $0: compilation of driver program failed >&2
-	exit 1
-fi
-
-if cc -o str_change str_change.c
-then
-	case $m in
-	vax)
-		./str_change CHANGE_ME `pwd` < bin.vax/m2mm > fm2mm
-		;;
-	sun)
-		./str_change CHANGE_ME `pwd` < bin.sun/m2mm > fm2mm
-		;;
-	esac
-	rm -f str_change.o str_change
-	chmod +x fm2mm
-else
-	echo "$0: compilation of string patching program failed; cannot create fm2mm" >&2
-fi
-
-#now run simple tests
-
-echo $0: run some simple tests
-failed=false
-cat > test.mod <<'EOF'
-MODULE test;
-FROM InOut IMPORT	WriteString, WriteLn;
-BEGIN
-	WriteString("Hello World");
-	WriteLn
-END test.
-EOF
-if ./fm2 test.mod 2>/dev/null
-then
-	case `a.out` in
-	"Hello World")
-		;;
-	*)
-		echo $0: fm2 test failed >&2
-		failed=true
-		;;
-	esac
-else
-	echo $0: fm2 compilation failed >&2
-	failed=true
-fi
-
-cat > test.c <<'EOF'
-main() { printf("Hello World\n"); }
-EOF
-if ./fcc test.c 2>/dev/null
-then
-	case `a.out` in
-	"Hello World")
-		;;
-	*)
-		echo $0: fcc test failed >&2
-		failed=true
-		;;
-	esac
-else
-	echo $0: fcc compilation failed >&2
-	failed=true
-fi
-
-cat > test.p <<'EOF'
-program p(output); begin writeln('Hello World') end.
-EOF
-if ./fpc test.p 2>/dev/null
-then
-	case `a.out` in
-	"Hello World")
-		;;
-	*)
-		echo $0: fpc test failed >&2
-		failed=true
-		;;
-	esac
-else
-	echo $0: fpc compilation failed >&2
-	failed=true
-fi
-
-rm -f test.* a.out
-
-case $failed in
-true)
-	echo $0: some tests failed, installation aborted >&2
-	exit 1
-	;;
-false)
-	rm -f $1/fm2 $1/fcc $1/fpc
-	cp fm2 fcc fpc $1
-	if [ -f fm2mm ]
-	then
-		rm -f $1/fm2mm
-		cp fm2mm $1/fm2mm
-	fi
-	rm -f fm2 fpc fcc fm2mm
-	echo $0: Installation completed
-	exit 0
-	;;
-esac

+ 0 - 166
fast_misc/INSTALL_A

@@ -1,166 +0,0 @@
-#!/bin/sh
-
-# installation of fast ACK compilers afcc, afm2
-
-# is the call correct?
-case $# in
-1)
-	if [ -d $1 ] 
-	then
-		:
-	else
-		echo $0: $1 is not a directory >&2
-		exit 1
-	fi
-	;;
-*)
-	echo $0: Call is $0 \<ACK home directory\> >&2
-	exit 1
-	;;
-esac
-
-# investigate machine: either vax or sun(3)
-
-echo $0: determining type of machine ...
-cat > t.c <<'EOF'
-main() {
-#ifdef sun
-	printf("sun\n");
-#endif
-#ifdef vax
-	printf("vax\n");
-#endif
-}
-EOF
-if cc t.c
-then
-	:
-else
-	echo $0: compilation failed >&2
-	exit 1
-fi
-m=`./a.out`
-rm -f a.out t.[co]
-case $m in
-sun|vax)
-	echo $0: Starting installation for a $m ...
-	;;
-*)
-	echo $0: machine must be sun or vax >&2
-	exit 1
-	;;
-esac
-
-# edit manual page
-sed s@CHANGE_ME@$1/lib/m2@ < man/afm2.1.src > man/afm2.1
-
-# install the compiler binaries
-
-echo $0: copying compiler binaries ...
-case $m in
-sun)
-	cp ack.sun/cemcom* ack.sun/m2* $1/lib/m68020
-	;;
-vax)
-	cp ack.vax/cemcom* ack.vax/m2* $1/lib/vax4
-	;;
-esac
-
-# now compile the driver program
-
-echo $0: compiling driver program ...
-rm -f afcc afm2
-if cc -O -DACK_BIN -I$1/h -DFCC -o afcc driver.c &&
-   cc -O -DACK_BIN -I$1/h -DFM2 -o afm2 driver.c
-then
-	:
-else
-	echo $0: compilation of driver program failed >&2
-	exit 1
-fi
-
-( cd $1/lang/m2/libm2
-  echo 'killbss() { }' > killbss.c
-  ../../../bin/acc -L -c -LIB killbss.c
-  cp LIST LIST.old
-  echo 'killbss.c' >> LIST
-  ../../../bin/arch r tail_m2.a killbss.c
-) > /dev/null 2>&1
-
-case $m in
-sun)
-	( cd $1/lib/sun3
-	  cp tail_m2 tail_m2.orig
-	  ../../bin/aal r tail_m2 ../../lang/m2/libm2/killbss.o
-	)
-	;;
-vax)
-	( cd $1/lib/vax4
-	  cp tail_m2 tail_m2.orig
-	  ar r tail_m2 ../../lang/m2/libm2/killbss.o
-	  ranlib tail_m2
-	)
-	;;
-esac > /dev/null 2>&1
-
-#now run simple tests
-
-echo $0: run some simple tests
-failed=false
-cat > test.mod <<'EOF'
-MODULE test;
-FROM InOut IMPORT	WriteString, WriteLn;
-BEGIN
-	WriteString("Hello World");
-	WriteLn
-END test.
-EOF
-if ./afm2 test.mod 2>/dev/null
-then
-	case `a.out` in
-	"Hello World")
-		;;
-	*)
-		echo $0: afm2 test failed >&2
-		failed=true
-		;;
-	esac
-else
-	echo $0: afm2 compilation failed >&2
-	failed=true
-fi
-
-cat > test.c <<'EOF'
-main() { printf("Hello World\n"); }
-EOF
-if ./afcc test.c 2>/dev/null
-then
-	case `a.out` in
-	"Hello World")
-		;;
-	*)
-		echo $0: afcc test failed >&2
-		failed=true
-		;;
-	esac
-else
-	echo $0: afcc compilation failed >&2
-	failed=true
-fi
-
-rm -f test.* a.out
-
-case $failed in
-true)
-	echo $0: some tests failed, installation aborted >&2
-	exit 1
-	;;
-false)
-	rm -f $1/bin/afm2 $1/bin/afcc
-	cp afm2 afcc $1/bin
-	rm -f afm2 afcc
-	cp man/afcc.1 man/afm2.1 $1/man
-	echo $0: Installation completed
-	exit 0
-	;;
-esac

+ 0 - 80
fast_misc/READ_ME.n

@@ -1,80 +0,0 @@
-.ND
-.SH
-Installing the fast ACK compilers
-.LP
-This is the first distribution of the fast ACK compilers, in
-binary form, for either a DEC VAX running Berkeley Unix BSD 4.2 or BSD 4.3,
-or a SUN-3 MC68020 work-station running SunOS 3.2-3.5, or SunOS 4.0.
-The distribution contains a C-, a Modula-2-, and a Pascal-compiler producing object
-code that is compatible with cc-produced object code. There are also
-versions for C and Modula-2 producing object code that is compatible
-with ACK, 4th distribution.
-The distribution also contains a Modula-2 makefile generator.
-.LP
-The tape contains the following files and directories:
-.IP "lib.vax and bin.vax"
-.br
-binaries and libraries for the VAX.
-.IP "lib.sun and bin.sun"
-.br
-binaries and libraries for the SUN-3.
-.IP def
-directory containing definition modules of the Modula-2 run-time system.
-.IP man
-directory containing manual pages.
-.IP doc
-directory containing some documents describing the languages implemented.
-.IP "ack.sun and ack.vax"
-.br
-binaries for ACK compatible fast compilers.
-.IP "driver.c"
-.br
-sources of the compiler driver.
-.IP "READ_ME"
-.br
-the file you are reading now.
-.IP "INSTALL" and "INSTALL_A"
-.br
-shell-scripts taking care of the installation.
-.LP
-Installation makes the following commands available:
-.IP fm2
-fast Modula-2 compiler.
-.IP fcc
-fast C compiler.
-.IP fpc
-fast Pascal compiler.
-.IP fm2mm
-.br
-makefile generator for fast Modula-2 compiler.
-.LP
-To install these commands, proceed as follows:
-.IP 1.
-Create a directory for the compilers, f.i. /usr/local/lib/fastc.
-You will need about 3 megabyte to extract the tape.
-.IP 2.
-Go to this directory and extract the tape (which is in 1600 bpi tar-format).
-.IP 3.
-Execute the INSTALL shell-script with one argument: the directory in
-which the fm2, fcc, fpc, and fm2mm binaries must be installed, f.i.
-/usr/local/bin.
-This will take care of the installation of the cc(1) compatible
-versions of the fast ACK compilers.
-The INSTALL script will also run some small tests.
-.IP 4.
-The man-subdirectory contains manual pages. When you have satisfied
-yourself that fm2, fcc, and fpc work properly, install the
-fm2, fm2mm, fcc, and fpc manual pages
-in a public man-directory, and announce the availability of
-fm2, fm2mm, fcc, and fpc.
-.IP 5.
-The tape also contains ACK-compatible fast ACK compilers for C and Modula-2.
-If you have the 4th ACK distribution (became available in august 1988),
-you can use the INSTALL_A shell-script to install these in the ACK tree.
-Call INSTALL_A with the ACK home directory as argument.
-This will make afm2 and afcc available in the ACK bin-directory.
-.IP 6.
-After the installation, some directories are no longer needed. The ack.sun
-and ack.vax directories can be removed; when on a SUN, the bin.vax and
-lib.vax directories can be removed; when on a VAX, the bin.sun and lib.sun
-directories can be removed.

+ 0 - 1097
fast_misc/driver.c

@@ -1,1097 +0,0 @@
-/*	fcc/fm2/fpc 
-	Driver for fast ACK compilers.
-
-	Derived from the C compiler driver from Minix.
-
-	You can create cc-compatible versions by compiling with
-		cc -O '-DFASTDIR="<this directory>"' -DF?? driver.c
-	where F?? is either FCC, FM2, or FPC.
-	Install resulting binaries in a public place (f.i. /usr/local/bin).
-	Suggested names: fcc, fm2, and fpc.
-
-	If you have ACK, you can create ACK-compatible versions by compiling
-	this file with
-		cc -O -DACK_BIN -I<ACK home directory>/h -DF?? driver.c
-	where F?? is either FCC, FPC, or FM2.
-	Install the resulting binaries in the EM bin directory.
-	Suggested names: afcc, afm2, and afpc.
-	The ACK compatible version afpc is not compatible with the 4th
-	ACK distribution, and thus is not on the tape.
-*/
-
-
-#ifndef vax
-#ifndef sun
-In this case, no fast ACK compiler available
-#endif
-#endif
-
-#if FM2+FPC+FCC > 1
-Something wrong here! Only one of FM2, FPC, or FCC must be defined
-#endif
-
-#include <errno.h>
-#include <signal.h>
-#include <varargs.h>
-#include <stdio.h>
-#ifdef ACK_BIN
-#include <em_path.h>
-#define M2DEF	"/lib/m2"
-#define FASTDIR EM_DIR
-#else
-#define M2DEF "/def"
-#define TMP_DIR	"/tmp"
-#endif ACK_BIN
-
-
-#ifndef ACK_BIN
-#define BINDIR	"/bin/"
-#define LIBDIR	"/lib/"
-#else ACK_BIN
-#define BINDIR	"/lib/"
-#ifdef sun
-#define LIBDIR	"/lib/sun3/"
-#endif sun
-#ifdef vax
-#define LIBDIR	"/lib/vax4/"
-#endif vax
-#define CCINCL	"/include/_tail_cc"
-#endif ACK_BIN
-char *ROOT_DIR = FASTDIR;
-
-/*
-#ifndef ACK_BIN
-	Version producing VAX or SUN .o files in one pass.
-#else ACK_BIN
-	Version producing ACK .o files in one pass.
-#endif ACK_BIN
-*/
-#define MAXARGC	256	/* maximum number of arguments allowed in a list */
-#define USTR_SIZE	128	/* maximum length of string variable */
-
-typedef char USTRING[USTR_SIZE];
-
-USTRING INCLUDE = "-I";
-
-struct arglist {
-	int al_argc;
-	char *al_argv[MAXARGC];
-};
-
-#define LD	"/bin/ld"
-#define AS	"/bin/as"
-#define CPP	"*cpp"
-#if ACK_BIN && !vax
-#undef LD
-#undef AS
-#define LD	"*em_led"
-#define CV	"~cv"		/* machine dependent; resides in lib directory */
-#endif ACK_BIN && !vax
-#define SHELL	"/bin/sh"
-
-/*	flags passed to linker */
-#define TO_LD	"dnNrsSi"
-#if ACK_BIN && !vax
-#undef TO_LD
-#define TO_LD	"rs"
-#endif ACK_BIN && !vax
-
-int kids =  -1;
-int ecount = 0;
-
-struct arglist CPP_FLAGS = {
-#ifdef vax
-	8,
-#endif
-#ifdef sun
-	10,
-#endif
-	{
-		"-Dunix",
-		"-DEM_WSIZE=4",
-		"-DEM_PSIZE=4",
-		"-DEM_SSIZE=2",
-		"-DEM_LSIZE=4",
-		"-DEM_FSIZE=4",
-		"-DEM_DSIZE=8",
-#ifdef vax
-		"-Dvax"
-#endif
-#ifdef sun
-		"-Dmc68000",
-		"-Dsun",
-		"-Dmc68020"
-#endif
-	}
-};
-
-struct arglist COMP_FLAGS;
-
-#ifdef FCC
-struct arglist LD_HEAD = {
-#ifdef ACK_BIN
-	2,
-	{
-		"~head_em",
-		"~head_cc"
-	}
-#else ACK_BIN
-#ifdef sun
-#ifdef SunOs4
-	7,
-#else
-	5,
-#endif
-	{
-		"-e",
-		"start",
-		"-X",
-#ifdef SunOs4
-		"-L/usr/lib/fsoft",
-		"-Bstatic",
-#endif
-		"/lib/crt0.o",
-		"/lib/Fcrt1.o"
-	}
-#endif
-#ifdef vax
-	2,
-	{
-		"-X",
-		"/lib/crt0.o"
-	}
-#endif
-#endif ACK_BIN
-};
-
-struct arglist LD_TAIL = {
-#ifdef ACK_BIN
-#ifdef sun
-	6,
-	{
-		"~tail_cc.1s",
-		"~tail_cc.2g",
-		"*m68020/tail_fp",
-		"*m68020/tail_em",
-		"~tail_mon",
-		"*m68020/end_em"
-	}
-#endif sun
-#ifdef vax
-	4,
-	{
-		"~tail_cc.1s",
-		"~tail_cc.2g",
-		"~tail_em",
-		"~tail_mon"
-	}
-#endif vax
-#else ACK_BIN
-#ifdef sun
-	2,
-	{
-		"~tail_ext",
-		"-lc"
-	}
-#endif
-#ifdef vax
-	2,
-	{
-		"~tail_em",
-		"-lc"
-	}
-#endif
-#endif ACK_BIN
-};
-#endif FCC
-
-#ifdef FPC
-struct arglist LD_HEAD = {
-#ifdef ACK_BIN
-	2,
-	{
-		"~head_em",
-#ifdef vax
-		"~head_pc"
-#endif
-#ifdef sun
-		"*m68020/head_pc"
-#endif
-	}
-#else ACK_BIN
-#ifdef sun
-#ifdef SunOs4
-	7,
-#else
-	5,
-#endif
-	{
-		"-e",
-		"begtext",
-		"-X",
-#ifdef SunOs4
-		"-L/usr/lib/fsoft",
-		"-Bstatic",
-#endif
-		"~head_em",
-		"~head_pc"
-	}
-#endif sun
-#ifdef vax
-	3,
-	{
-		"-X",
-		"~head_em",
-		"~head_pc"
-	}
-#endif vax
-#endif ACK_BIN
-};
-struct arglist LD_TAIL = {
-#ifndef ACK_BIN
-#ifdef sun
-	3,
-	{
-		"~tail_pc",
-		"~tail_ext",
-		"-lc"
-	}
-#endif sun
-#ifdef vax
-	3,
-	{
-		"~tail_pc",
-		"~tail_em",
-		"-lc"
-	}
-#endif vax
-#else ACK_BIN
-#ifdef sun
-	5,
-	{
-		"*m68020/tail_pc",
-		"*m68020/tail_fp",
-		"*m68020/tail_em",
-		"~tail_mon",
-		"*m68020/end_em"
-	}
-#endif sun
-#ifdef vax
-	3,
-	{
-		"~tail_pc",
-		"~tail_em",
-		"~tail_mon"
-	}
-#endif vax
-#endif ACK_BIN
-};
-#endif FPC
-
-#ifdef FM2
-struct arglist LD_HEAD = {
-#ifdef ACK_BIN
-	2,
-	{
-		"~head_em",
-		"~head_m2"
-	}
-#else ACK_BIN
-#ifdef sun
-#ifdef SunOs4
-	7,
-#else
-	5,
-#endif
-	{
-		"-e",
-		"begtext",
-		"-X",
-#ifdef SunOs4
-		"-L/usr/lib/fsoft",
-		"-Bstatic",
-#endif
-		"~head_em",
-		"~head_m2"
-	}
-#endif sun
-#ifdef vax
-	3,
-	{
-		"-X",
-		"~head_em",
-		"~head_m2"
-	}
-#endif vax
-#endif ACK_BIN
-};
-struct arglist LD_TAIL = {
-#ifndef ACK_BIN
-#ifdef sun
-	3,
-	{
-		"~tail_m2",
-		"~tail_ext",
-		"-lc"
-	}
-#endif sun
-#ifdef vax
-	3,
-	{
-		"~tail_m2",
-		"~tail_em",
-		"-lc"
-	}
-#endif vax
-#else ACK_BIN
-#ifdef sun
-	5,
-	{
-		"~tail_m2",
-		"*m68020/tail_fp",
-		"*m68020/tail_em",
-		"~tail_mon",
-		"*m68020/end_em"
-	}
-#endif sun
-#ifdef vax
-	3,
-	{
-		"~tail_m2",
-		"~tail_em",
-		"~tail_mon"
-	}
-#endif vax
-#endif ACK_BIN
-};
-#endif FM2
-
-#if ACK_BIN && !vax
-#ifdef sun
-struct arglist def_align = {
-	5,
-	{
-		"-a0:4",
-		"-a1:4",
-		"-a2:0x20000",
-		"-a3:4",
-		"-b0:0x2020"
-	}
-};
-
-struct arglist n_align = {
-	5,
-	{
-		"-a0:4",
-		"-a1:4",
-		"-a2:0x20000",
-		"-a3:4",
-		"-b0:0x2000"
-	}
-};
-
-struct arglist N_align = {
-	5,
-	{
-		"-a0:4",
-		"-a1:4",
-		"-a2:4",
-		"-a3:4",
-		"-b0:0x2000"
-	}
-};
-#endif sun
-
-struct arglist *sect_align = &def_align;
-
-#endif ACK_BIN && !vax
-
-char *o_FILE = "a.out"; /* default name for executable file */
-
-#define remove(str)	((noexec || unlink(str)), (str)[0] = '\0')
-#define cleanup(str)		(str && str[0] && remove(str))
-#define init(al)		((al)->al_argc = 1)
-
-char ProgCall[128];
-
-struct arglist SRCFILES;
-struct arglist LDFILES;
-struct arglist GEN_LDFILES;
-
-int RET_CODE = 0;
-
-struct arglist LD_FLAGS;
-
-struct arglist CALL_VEC;
-
-int o_flag = 0;
-int c_flag = 0;
-int v_flag = 0;
-int O_flag = 0;
-
-char *mkstr();
-char *malloc();
-char *alloc();
-char *extension();
-
-USTRING ofile;
-USTRING BASE;
-USTRING tmp_file;
-
-int noexec = 0;
-
-extern char *strcat(), *strcpy(), *mktemp(), *strchr();
-
-trapcc(sig)
-	int sig;
-{
-	signal(sig, SIG_IGN);
-	if (kids != -1) kill(kids, sig);
-	cleanup(ofile);
-	cleanup(tmp_file);
-	exit(1);
-}
-
-#ifdef FCC
-#define lang_suffix()	"c"
-#ifndef ACK_BIN
-#define comp_name()	"*cemcom_ce"
-#else
-#ifdef vax
-#define comp_name()	"~cemcom_ce"
-#endif
-#ifdef sun
-#define comp_name()	"*m68020/cemcom_ce"
-#endif
-#endif ACK_BIN
-#endif FCC
-
-#ifdef FM2
-#define lang_suffix()	"mod"
-#ifndef ACK_BIN
-#define comp_name()	"*m2_ce"
-#else
-#ifdef vax
-#define comp_name()	"~m2_ce"
-#endif
-#ifdef sun
-#define comp_name()	"*m68020/m2_ce"
-#endif
-#endif ACK_BIN
-#endif FM2
-
-#ifdef FPC
-#define lang_suffix()	"p"
-#ifndef ACK_BIN
-#define comp_name()	"*pc_ce"
-#else
-#ifdef vax
-#define comp_name()	"~pc_ce"
-#endif
-#ifdef sun
-#define comp_name()	"*m68020/pc_ce"
-#endif
-#endif ACK_BIN
-
-#endif FPC
-
-
-#ifdef FCC
-int
-lang_opt(str)
-	char *str;
-{
-	switch(str[1]) {
-	case '-':	/* debug options */
-	case 'w':	/* disable warnings */
-	case 'R':	/* strict K&R C.  */
-		append(&COMP_FLAGS, str);
-		return 1;
-	}
-	return 0;
-}
-#endif FCC
-
-#ifdef FM2
-int
-lang_opt(str)
-	char *str;
-{
-	switch(str[1]) {
-	case '-':	/* debug options */
-	case 'w':	/* disable warnings */
-	case 'R':	/* no runtime checks */
-	case 'W':	/* add warnings */
-	case 'L':	/* no line numbers */
-	case 'A':	/* extra array bound checks */
-	case '3':	/* only accept 3rd edition Modula-2 */
-		append(&COMP_FLAGS, str);
-		return 1;
-	case 'I':
-		append(&COMP_FLAGS, str);
-		break;	/* !!! */
-	case 'U':	/* underscores in identifiers allowed */
-		if (str[2] == '\0') {
-			append(&COMP_FLAGS, str);
-			return 1;
-		}
-		break;
-	case 'e':	/* local extension for Modula-2 compiler:
-			   procedure constants
-			*/
-		str[1] = 'l';
-		append(&COMP_FLAGS, str);
-		return 1;
-	}
-	return 0;
-}
-#endif FM2
-
-#ifdef FPC
-int
-lang_opt(str)
-	char *str;
-{
-	switch(str[1]) {
-	case '-':	/* debug options */
-	case 'a':	/* enable assertions */
-	case 'd':	/* allow doubles (longs) */
-	case 'i':	/* set size of integer sets */
-	case 't':	/* tracing */
-	case 'w':	/* disable warnings */
-	case 'A':	/* extra array bound checks */
-	case 'C':	/* distinguish between lower case and upper case */
-	case 'L':	/* no FIL and LIN instructions */
-	case 'R':	/* no runtime checks */
-		append(&COMP_FLAGS, str);
-		return 1;
-	case 'u':
-	case 'U':
-		/* underscores in identifiers */
-	case 's':
-		/* only compile standard pascal */
-	case 'c':
-		/* C type strings */
-		if (str[2] == '+' && str[3] == '\0') {
-			str[2] = 0;
-			append(&COMP_FLAGS, str);
-			return 1;
-		}
-	}
-	return 0;
-}
-#endif FPC
-
-main(argc, argv)
-	char *argv[];
-{
-	char *str;
-	char **argvec;
-	int count;
-	char *ext;
-	register struct arglist *call = &CALL_VEC;
-	char *file;
-	char *ldfile = 0;
-	USTRING COMP;
-	int compile_cnt = 0;
-
-	setbuf(stdout, (char *) 0);
-	basename(*argv++,ProgCall);
-	strcat(INCLUDE, ROOT_DIR);
-#ifdef FM2
-	strcat(INCLUDE, M2DEF);
-#endif FM2
-#ifdef FCC
-#ifdef ACK_BIN
-	strcat(INCLUDE, CCINCL);
-#else
-	INCLUDE[0] = '\0';
-#endif ACK_BIN
-#endif FCC
-#ifdef FPC
-	INCLUDE[0] = '\0';
-#endif FPC
-	strcpy(COMP,comp_name());
-
-	if (signal(SIGHUP, SIG_IGN) != SIG_IGN)
-		signal(SIGHUP, trapcc);
-	if (signal(SIGINT, SIG_IGN) != SIG_IGN)
-		signal(SIGINT, trapcc);
-	if (signal(SIGQUIT, SIG_IGN) != SIG_IGN)
-		signal(SIGQUIT, trapcc);
-	while (--argc > 0) {
-		if (*(str = *argv++) != '-') {
-			append(&SRCFILES, str);
-			continue;
-		}
-
-		if (lang_opt(str)) {
-		}
-		else switch (str[1]) {
-
-		case 'c':	/* stop after producing .o files */
-			c_flag = 1;
-			break;
-		case 'D':	/* preprocessor #define */
-		case 'U':	/* preprocessor #undef */
-			append(&CPP_FLAGS, str);
-			break;
-		case 'I':	/* include directory */
-			append(&CPP_FLAGS, str);
-			break;
-		case 'o':	/* target file */
-			if (argc-- >= 0) {
-				o_flag = 1;
-				o_FILE = *argv++;
-				ext = extension(o_FILE);
-				if (ext != o_FILE && ! strcmp(ext, lang_suffix())
-#ifndef ACK_BIN
-				     || !strcmp(ext, "s")
-#endif
-				) {
-					error("-o would overwrite %s", o_FILE);
-				}
-			}
-			break;
-		case 'u':	/* mark identifier as undefined */
-			append(&LD_FLAGS, str);
-			if (argc-- >= 0)
-				append(&LD_FLAGS, *argv++);
-			break;
-		case 'O':	/* use built in peephole optimizer */
-			if (! O_flag) strcat(COMP, "opt");
-			O_flag = 1;
-			break;
-		case 'v':	/* verbose */
-			v_flag++;
-			if (str[2] == 'n')
-				noexec = 1;
-			break;
-		case 'l':	/* library file */
-			append(&SRCFILES, str);
-			break;
-		case 'M':	/* use other compiler (for testing) */
-			strcpy(COMP, str+2);
-			break;
-#if ACK_BIN && !vax
-		case 'n':	/* text portion sharable, read-only. No
-				   demand paging
-				*/
-			sect_align = &n_align;
-			break;
-		case 'N':	/* text portion not sharable, not read-only */
-			sect_align = &N_align;
-			break;
-		case 'd':	/* force definition of common storage */
-			append(&LD_FLAGS, "-c");
-			break;
-#endif ACK_BIN && !vax
-		default:
-#ifdef sun
-			if (! strcmp(str, "-sun3")) {
-				/* SunOs4.0 make passes this flag to
-				   $(CC). Ignore it silently.
-				*/
-				break;
-			}
-#endif
-			if (strchr(TO_LD, str[1]) == 0)
-				warning("%s flag ignored", str);
-			else {
-				append(&LD_FLAGS, str);
-			}
-			break;
-		}
-	}
-
-	if (ecount) exit(1);
-
-#if FCC && !ACK_BIN
-	append(&COMP_FLAGS, "-L"); /* disable line number and filename admin */
-#endif FCC && !ACK_BIN
-	count = SRCFILES.al_argc;
-	argvec = &(SRCFILES.al_argv[0]);
-	while (count-- > 0) {
-		ext = extension(*argvec);
-		if (*argvec[0] != '-' && 
-		    ext != *argvec++ && (! strcmp(ext, lang_suffix())
-#ifndef ACK_BIN
-		     || !strcmp(ext, "s")
-#endif
-		)) {
-			compile_cnt++;
-		}
-	}
-
-	if (compile_cnt > 1 && c_flag && o_flag) {
-		warning("-o flag ignored");
-		o_flag = 0;
-	}
-
-	count = SRCFILES.al_argc;
-	argvec = &(SRCFILES.al_argv[0]);
-	while (count-- > 0) {
-		register char *f;
-		basename(file = *argvec++, BASE);
-
-		ext = extension(file);
-
-		if (file[0] != '-' &&
-		    ext != file && (!strcmp(ext, lang_suffix())
-#ifndef ACK_BIN
-		    || !strcmp(ext, "s")
-#endif
-		)) {
-#ifndef ACK_BIN
-			if (compile_cnt > 1)
-				printf("%s:\n", file);
-#else
-			printf("%s\n", file);
-#endif
-
-			ldfile = c_flag ? ofile : alloc((unsigned)strlen(BASE)+3);
-			if (
-#ifdef FCC
-			    !strcmp(ext, "s") &&
-#endif
-			    needsprep(file)) {
-				strcpy(tmp_file, TMP_DIR);
-				strcat(tmp_file, "/F_XXXXXX");
-				mktemp(tmp_file);
-				init(call);
-				append(call, CPP);
-				concat(call, &CPP_FLAGS);
-				append(call, INCLUDE);
-				append(call, file);
-				if (runvec(call, tmp_file)) {
-					file = tmp_file;
-				}
-				else {
-					remove(tmp_file);
-					tmp_file[0] = '\0';
-					continue;
-				}
-			}
-			init(call);
-			if (o_flag && c_flag) {
-				f = o_FILE;
-			}
-			else	f = mkstr(ldfile, BASE, ".o", (char *)0);
-#ifndef ACK_BIN
-			if (strcmp(ext, "s")) {
-#endif
-				append(call, COMP);
-#ifdef FCC
-				concat(call, &CPP_FLAGS);
-#endif
-				concat(call, &COMP_FLAGS);
-#if FM2 || FCC
-				append(call, INCLUDE);
-#endif
-				append(call, file);
-				append(call, f);
-#ifndef ACK_BIN
-			}
-			else {
-				append(call, AS);
-				append(call, "-o");
-				append(call, f);
-#ifdef sun
-				append(call, "-mc68020");
-#endif
-				append(call, file);
-			}
-#endif
-			if (runvec(call, (char *) 0)) {
-				file = f;
-			}
-			else {
-				remove(f);
-				continue;
-			}
-			cleanup(tmp_file);
-			tmp_file[0] = '\0';
-		}
-
-		else if (file[0] != '-' &&
-			 strcmp(ext, "o") && strcmp(ext, "a")) {
-			warning("file with unknown suffix (%s) passed to the loader", ext);
-		}
-
-		if (c_flag)
-			continue;
-
-		append(&LDFILES, file);
-		if (ldfile) {
-			append(&GEN_LDFILES, ldfile);
-			ldfile = 0;
-		}
-	}
-
-	/* *.s to a.out */
-	if (RET_CODE == 0 && LDFILES.al_argc > 0) {
-#ifndef ACK_BIN
-		if (compile_cnt > 1) {
-			printf("Linking:\n");
-		}
-#endif
-		init(call);
-		append(call, LD);
-		concat(call, &LD_HEAD);
-		concat(call, &LD_FLAGS);
-		append(call, "-o");
-#if ACK_BIN && !vax
-		strcpy(tmp_file, TMP_DIR);
-		strcat(tmp_file, "/LF_XXXXXX");
-		mktemp(tmp_file);
-		append(call, tmp_file);
-		concat(call, sect_align);
-#else ACK_BIN && !vax
-		append(call, o_FILE);
-#endif ACK_BIN && !vax
-		concat(call, &LDFILES);
-		concat(call, &LD_TAIL);
-#if ACK_BIN && !vax
-		if (! runvec(call, (char *) 0)) {
-			cleanup(tmp_file);
-			exit(RET_CODE);
-		}
-		init(call);
-		append(call, CV);
-		append(call, tmp_file);
-		append(call, o_FILE);
-#endif ACK_BIN && !vax
-		if (runvec(call, (char *) 0) && GEN_LDFILES.al_argc == 1)
-#ifdef ACK_BIN
-			;
-#else
-			remove(GEN_LDFILES.al_argv[0]);
-#endif ACK_BIN
-#if ACK_BIN && !vax
-		cleanup(tmp_file);
-#endif ACK_BIN && !vax
-	}
-	exit(RET_CODE);
-}
-
-needsprep(name)
-	char *name;
-{
-	int file;
-	char fc;
-
-	file = open(name,0);
-	if (file < 0) return 0;
-	if (read(file, &fc, 1) != 1) fc = 0;
-	close(file);
-	return fc == '#';
-}
-
-char *
-alloc(u)
-	unsigned u;
-{
-	char *p = malloc(u);
-
-	if (p == 0)
-		panic("no space");
-	return p;
-}
-
-append(al, arg)
-	struct arglist *al;
-	char *arg;
-{
-	if (!arg || !*arg) return;
-	if (al->al_argc >= MAXARGC)
-		panic("argument list overflow");
-	if (*arg == '~' || *arg == '*') {
-		char *p;
-		char *lb = *arg == '~' ? LIBDIR : BINDIR;
-		p = alloc((unsigned)strlen(ROOT_DIR)+strlen(lb)+strlen(arg+1)+1);
-		strcpy(p, ROOT_DIR);
-		strcat(p, lb);
-		strcat(p, arg+1);
-		arg = p;
-	}
-	al->al_argv[(al->al_argc)++] = arg;
-}
-
-concat(al1, al2)
-	struct arglist *al1, *al2;
-{
-	register i = al2->al_argc;
-	register char **p = &(al1->al_argv[al1->al_argc]);
-	register char **q = &(al2->al_argv[0]);
-
-	if ((al1->al_argc += i) >= MAXARGC)
-		panic("argument list overflow");
-	while (i-- > 0) {
-		if (**q == '~' || **q == '*') {
-			char *lb = **q == '~' ? LIBDIR : BINDIR;
-			*p = alloc((unsigned)strlen(ROOT_DIR)+strlen(lb)+strlen(*q+1)+2);
-			strcpy(*p, ROOT_DIR);
-			strcat(*p, lb);
-			strcat(*p++, *q+1);
-			q++;
-		}
-		else	*p++ = *q++;
-	}
-}
-
-/*VARARGS*/
-char *
-mkstr(va_alist)
-	va_dcl
-{
-	va_list ap;
-	char *dst;
-
-	va_start(ap);
-	{
-		register char *p;
-		register char *q;
-
-		dst = q = va_arg(ap, char *);
-		p = va_arg(ap, char *);
-
-		while (p) {
-			while (*q++ = *p++);
-			q--;
-			p = va_arg(ap, char *);
-		}
-	}
-	va_end(ap);
-
-	return dst;
-}
-
-basename(str, dst)
-	char *str;
-	register char *dst;
-{
-	register char *p1 = str;
-	register char *p2 = p1;
-
-	while (*p1)
-		if (*p1++ == '/')
-			p2 = p1;
-	p1--;
-	while (*p1 != '.' && p1 >= p2) p1--;
-	if (p1 >= p2) {
-		*p1 = '\0';
-		while (*dst++ = *p2++);
-		*p1 = '.';
-	}
-	else
-		while (*dst++ = *p2++);
-}
-
-char *
-extension(fn)
-	char *fn;
-{
-	register char *c = fn;
-
-	while (*c++) ;
-	while (*--c != '.' && c >= fn) { }
-	if (c++ < fn || !*c) return fn;
-	return c;
-}
-
-runvec(vec, outp)
-	struct arglist *vec;
-	char *outp;
-{
-	int pid, status;
-
-	if (v_flag) {
-		pr_vec(vec);
-		putc('\n', stderr);
-	}
-	if ((pid = fork()) == 0) {	/* start up the process */
-		if (outp) {	/* redirect standard output	*/
-			close(1);
-			if (creat(outp, 0666) != 1)
-				panic("cannot create output file");
-		}
-		ex_vec(vec);
-	}
-	if (pid == -1)
-		panic("no more processes");
-	kids = pid;
-	wait(&status);
-	if (status) switch(status & 0177) {
-	case SIGHUP:
-	case SIGINT:
-	case SIGQUIT:
-	case SIGTERM:
-	case 0:
-		break;
-	default:
-		error("%s died with signal %d\n", vec->al_argv[1], status&0177);
-	}
-	kids = -1;
-	return status ? ((RET_CODE = 1), 0) : 1;
-}
-
-/*VARARGS1*/
-error(str, s1, s2)
-	char *str, *s1, *s2;
-{
-	fprintf(stderr, "%s: ", ProgCall);
-	fprintf(stderr, str, s1, s2);
-	putc('\n', stderr);
-	ecount++;
-}
-
-/*VARARGS1*/
-warning(str, s1, s2)
-	char *str, *s1, *s2;
-{
-	fprintf(stderr, "%s: (warning) ", ProgCall);
-	fprintf(stderr, str, s1, s2);
-	putc('\n', stderr);
-}
-
-panic(str)
-	char *str;
-{
-	error(str);
-	trapcc(SIGINT);
-}
-
-pr_vec(vec)
-	register struct arglist *vec;
-{
-	register char **ap = &vec->al_argv[1];
-
-	vec->al_argv[vec->al_argc] = 0;
-	fputs(*ap, stderr);
-	while (*++ap) {
-		putc(' ', stderr);
-		fputs(*ap, stderr);
-	}
-}
-
-extern int errno;
-
-ex_vec(vec)
-	register struct arglist *vec;
-{
-	if (noexec)
-		exit(0);
-	vec->al_argv[vec->al_argc] = 0;
-	execv(vec->al_argv[1], &(vec->al_argv[1]));
-	if (errno == ENOEXEC) { /* not an a.out, try it with the SHELL */
-		vec->al_argv[0] = SHELL;
-		execv(SHELL, &(vec->al_argv[0]));
-	}
-	if (access(vec->al_argv[1], 1) == 0) {
-		/* File is executable. */
-		error("cannot execute %s", vec->al_argv[1]);
-	} else {
-		error("%s is not executable", vec->al_argv[1]);
-	}
-	exit(1);
-}

+ 0 - 5
fast_misc/man/.distr

@@ -1,5 +0,0 @@
-afcc.1
-afm2.1.src
-fcc.1
-fm2.1.src
-fpc.1

+ 0 - 157
fast_misc/man/afcc.1

@@ -1,157 +0,0 @@
-.TH AFCC 1
-.SH NAME
-afcc \- fast ACK compatible C compiler
-.SH SYNOPSIS
-.B afcc
-[
-.B \-c
-]
-[
-.B \-O
-]
-[
-.B \-v
-]
-[
-.B \-vn
-]
-[ \fB\-D\fIname\fR ]
-[ \fB\-D\fIname\fB=\fIdef\fR ]
-[
-.BI \-I pathname
-]
-[
-.B \-w
-]
-[
-.B \-o 
-.I outfile
-]
-[
-.B \-R
-]
-[
-.BI \-U name
-]
-[
-.BI -M compiler
-]
-.I sourcefile ...
-.SH DESCRIPTION
-.LP
-.I Afcc
-is a fast
-.B C
-compiler. It translates 
-.B C
-programs
-into ack(1ACK)-compatible relocatable object modules, and does so in one pass.
-Then, if the \fB\-c\fP flag is not given,
-.I afcc
-offers the object modules to a link-editor,
-to create an executable binary.
-.LP
-.I Afcc
-accepts several types of filename arguments.  Files with 
-names ending in
-.B .c
-are taken to be 
-.B C
-source programs. 
-They are compiled, and the resulting object module is placed in the current
-directory.
-The object module is named after its source file, the suffix
-.B .o
-replacing 
-.BR .c
-in the name of the object.
-.LP
-Other arguments refer to loader options,
-object modules, or object libraries.
-Unless the
-.B \-c
-flag is given, these modules and libraries, together with the results of any
-specified compilations, are passed (in the order given) to the
-link-editor to produce
-an output file named
-.IR a.out .
-You can specify a name for the executable by using the
-.B \-o 
-option.
-.SH OPTIONS
-.LP
-The \fB\-l\fIlib\fR, \fB\-d\fP, \fB\-n\fP, \fB\-N\fP,
-\fB\-r\fP, \fB\-s\fP, \fB\-S\fP, \fB\-i\fP, and \fB\-u\fP options are
-passed to the link-editor program.
-The \fB\-u\fP option takes an extra argument.
-.IP \fB\-c\fP
-.br
-Suppress the loading phase of the compilation, and force an object module to
-be produced, even if only one program is compiled.
-A single object module can be named explicitly using the
-.B \-o
-option.
-.IP \fB\-D\fIname\fR\fB=\fIdef\fR
-Define a symbol
-.I name
-to the 
-preprocessor, as if by "#define".
-.IP \fB\-D\fIname\fR
-.br
-same as \fB\-D\fIname\fB=1\fR.
-.IP \fB\-I\fIpathname\fR
-.br
-Add
-.I pathname
-to the list of directories in which to search for
-.B #include
-files with filenames not beginning with slash.
-The compiler first searches for
-.B #include
-files in the directory containing
-.I sourcefile,
-then in directories in
-.B \-I
-options, then in the ACK include directory,
-and finally, in
-.I /usr/include.
-.IP "\fB\-o \fIoutput\fR"
-Name the final output file
-.I output.
-.IP \fB\-O\fP
-.br
-Use a version of the compiler that is just a bit slower, but produces
-better code.
-.IP \fB\-U\fIname\fR
-.br
-Remove any initial definition of
-.I name.
-.IP \fB\-v\fP
-.br
-Verbose. Print the commands as they are executed.
-.IP \fB\-vn\fP
-.br
-Verbose, no execute. Only print the commands, do not execute them.
-.IP \fB\-w\fP
-suppress warning messages.
-.IP \fB\-R\fP
-.br
-test for more compatibility with Kernighan & Ritchie C [1].
-.IP \fB\-M\fIcompiler\fR
-.br
-use \fIcompiler\fR as C-2 compiler instead of the default.
-.LP
-Object modules produced by ack(1ACK) and
-.I afcc
-can be freely mixed.
-.SH "SEE ALSO"
-.IP [1]
-B.W. Kernighan, D. Ritchie, "\fIThe C programming Language\fP", Prentice-Hall Inc., 1978
-.IP [2]
-E.H. Baalbergen, "\fIThe ACK CEM compiler\fP".
-.IP [3]
-ack(1ACK) manual page.
-.SH DIAGNOSTICS
-Diagnostics are intended to be self-explanatory.
-.SH REMARKS
-You need the 4th ACK distribution to be able to use this program.

+ 0 - 214
fast_misc/man/afm2.1.src

@@ -1,214 +0,0 @@
-.TH FM2 1
-.SH NAME
-afm2 \- fast ACK compatible Modula-2 compiler
-.SH SYNOPSIS
-.B afm2
-[
-.B \-c
-]
-[
-.B \-O
-]
-[
-.B \-v
-]
-[
-.B \-vn
-]
-[ \fB\-D\fIname\fR ]
-[ \fB\-D\fIname\fB=\fIdef\fR ]
-[
-.BI \-I pathname
-]
-[
-.BI \-w classes
-]
-[
-.BI \-W classes
-]
-[
-.B \-L
-]
-[
-.B \-o 
-.I outfile
-]
-[
-.B \-R
-]
-[
-.B \-A
-]
-[
-.B \-3
-]
-[
-.B \-_
-]
-[
-.BI \-U name
-]
-[
-.BI -M compiler
-]
-.I sourcefile ...
-.SH DESCRIPTION
-.LP
-.I afm2
-is a fast
-.B Modula-2
-compiler. It translates 
-.B Modula-2
-programs
-into ack(1ACK)-compatible relocatable object modules, and does so in one pass.
-Then, if the \fB\-c\fP flag is not given,
-.I afm2
-offers the object modules to a link-editor,
-to create an executable binary.
-.LP
-.I Afm2
-accepts several types of filename arguments.  Files with 
-names ending in
-.B .mod
-are taken to be 
-.B Modula-2
-source programs. 
-They are compiled, and the resulting object module is placed in the current
-directory.
-The object module is named after its source file, the suffix
-.B .o
-replacing 
-.BR .mod
-in the name of the object.
-A file with suffix
-.B .mod
-is passed through the C preprocessor if it begins with a '#'.
-.PP
-Definition modules are not separately compiled. The compiler reads them when
-it needs them.
-Definition modules are expected to reside in files with names ending
-in
-.BR .def .
-The name of the file in which a definition module is stored must be the same as
-the module-name, apart from the extension.
-Also, in most Unix systems filenames are only 14 characters long.
-So, given an IMPORT declaration for a module called "LongModulName",
-the compiler will try to open a file called "LongModulN.def".
-The requirement does not hold for implementation or program modules,
-but is certainly recommended.
-.LP
-Other arguments refer to loader options,
-object modules, or object libraries.
-Unless the
-.B \-c
-flag is given, these modules and libraries, together with the results of any
-specified compilations, are passed (in the order given) to the
-link-editor to produce
-an output file named
-.IR a.out .
-You can specify a name for the executable by using the
-.B \-o 
-option.
-.SH OPTIONS
-.LP
-The \fB\-l\fIlib\fR, \fB\-d\fP, \fB\-n\fP, \fB\-N\fP,
-\fB\-r\fP, \fB\-s\fP, \fB\-S\fP, \fB\-i\fP, and \fB\-u\fP options are
-passed to the link-editor program.
-The \fB\-u\fP option takes an extra argument.
-.IP \fB\-c\fP
-.br
-Suppress the loading phase of the compilation, and force an object module to
-be produced, even if only one program is compiled.
-A single object module can be named explicitly using the
-.B \-o
-option.
-.IP \fB\-D\fIname\fR\fB=\fIdef\fR
-Define a symbol
-.I name
-to the 
-preprocessor, as if by "#define".
-.IP \fB\-D\fIname\fR
-.br
-same as \fB\-D\fIname\fB=1\fR.
-.IP \fB\-I\fIpathname\fR
-.br
-Add
-.I pathname
-to the list of directories in which to search for
-.B #include
-files with filenames not beginning with slash.
-The preprocessor first searches for
-.B #include
-files in the directory containing
-.I sourcefile,
-then in directories in
-.B \-I
-options, then in the ACK include directory,
-and finally, in
-.I /usr/include.
-This flag is also passed to the compiler. When the compiler needs a definition
-module, it is first searched for in the current directory, then in the
-directories given to it by the \fB\-I\fP flag, and then in a default directory,
-.I CHANGE_ME.
-.I afm2
-This default directory contains all definition modules of
-the runtime system.
-.IP "\fB\-o \fIoutput\fR"
-Name the final output file
-.I output.
-.IP \fB\-O\fP
-.br
-Use a version of the compiler that is just a bit slower, but produces
-better code.
-.IP \fB\-U\fIname\fR
-.br
-Remove any initial definition of
-.I name.
-.IP \fB\-v\fP
-.br
-Verbose. Print the commands as they are executed.
-.IP \fB\-vn\fP
-.br
-Verbose, no execute. Only print the commands, do not execute them.
-.IP \fB\-L\fR
-do not generate code to keep track of
-the current location in the source code.
-.IP \fB\-w\fR\fIclasses\fR
-suppress warning messages whose class is a member of \fIclasses\fR.
-Currently, there are three classes: \fBO\fR, indicating old-flashioned use,
-\fBW\fR, indicating "ordinary" warnings, and \fBR\fR, indicating
-restricted Modula-2.
-If no \fIclasses\fR are given, all warnings are suppressed.
-By default, warnings in class \fBO\fR and \fBW\fR are given.
-.IP \fB\-W\fR\fIclasses\fR
-allow for warning messages whose class is a member of \fIclasses\fR.
-.IP \fB\-R\fP
-.br
-disable all range-checks.
-.IP \fB\-A\fP
-.br
-enable extra array bound checks. Unfortunately, the back-end used for this
-compiler is a bit sloppy, so extra array bound checks are needed if you want
-detection of array bound errors.
-.IP \fB\-3\fP
-.br
-Only accept Modula-2 programs that strictly conform to the 3rd Edition of
-[1].
-.IP \fB\-_\fP
-.br
-allow for underscores within identifiers. Identifiers may not start or end
-with an underscore, even if this flag is given.
-.IP \fB\-M\fIcompiler\fR
-.br
-use \fIcompiler\fR as Modula-2 compiler instead of the default.
-.SH "SEE ALSO"
-.IP [1]
-N. Wirth, \fIProgramming in Modula-2\fP, 3rd edition, Springer Verlag.
-.IP [2]
-C.J.H. Jacobs, \fIThe ACK Modula-2 Compiler\fP.
-.IP [3]
-ack(1ACK) unix manual page.
-.SH DIAGNOSTICS
-Diagnostics are intended to be self-explanatory.
-.SH REMARKS
-You need the 4th ACK distribution to be able to use this program.

+ 0 - 160
fast_misc/man/fcc.1

@@ -1,160 +0,0 @@
-.TH FCC 1
-.SH NAME
-fcc \- fast CC-compatible C compiler
-.SH SYNOPSIS
-.B fcc
-[
-.B \-c
-]
-[
-.B \-O
-]
-[
-.B \-v
-]
-[
-.B \-vn
-]
-[ \fB\-D\fIname\fR ]
-[ \fB\-D\fIname\fB=\fIdef\fR ]
-[
-.BI \-I pathname
-]
-[
-.B \-w
-]
-[
-.B \-o 
-.I outfile
-]
-[
-.B \-R
-]
-[
-.BI \-U name
-]
-[
-.BI -M compiler
-]
-.I sourcefile ...
-.SH DESCRIPTION
-.LP
-.I Fcc
-is a fast
-.B C
-compiler. It translates 
-.B C
-programs
-into cc(1)-compatible relocatable object modules, and does so in one pass.
-Then, if the \fB\-c\fP flag is not given,
-.I fcc
-offers the object modules to a link-editor,
-to create an executable binary.
-.LP
-.I Fcc
-accepts several types of filename arguments.  Files with 
-names ending in
-.B .c
-are taken to be 
-.B C
-source programs. 
-They are compiled, and the resulting object module is placed in the current
-directory.
-The object module is named after its source file, the suffix
-.B .o
-replacing 
-.BR .c
-in the name of the object.
-.LP
-Other arguments refer to loader options,
-object modules, or object libraries.
-Unless the
-.B \-c
-flag is given, these modules and libraries, together with the results of any
-specified compilations, are passed (in the order given) to the
-link-editor to produce
-an output file named
-.IR a.out .
-You can specify a name for the executable by using the
-.B \-o 
-option.
-.LP
-If a single 
-.B C
-program is compiled and loaded all at once, the object module
-file is deleted.
-.SH OPTIONS
-.LP
-The \fB\-l\fIlib\fR, \fB\-d\fP, \fB\-n\fP, \fB\-N\fP,
-\fB\-r\fP, \fB\-s\fP, \fB\-S\fP, \fB\-i\fP, and \fB\-u\fP options are
-passed to the link-editor program.
-The \fB\-u\fP option takes an extra argument.
-.IP \fB\-c\fP
-.br
-Suppress the loading phase of the compilation, and force an object module to
-be produced, even if only one program is compiled.
-A single object module can be named explicitly using the
-.B \-o
-option.
-.IP \fB\-D\fIname\fR\fB=\fIdef\fR
-Define a symbol
-.I name
-to the 
-preprocessor, as if by "#define".
-.IP \fB\-D\fIname\fR
-.br
-same as \fB\-D\fIname\fB=1\fR.
-.IP \fB\-I\fIpathname\fR
-.br
-Add
-.I pathname
-to the list of directories in which to search for
-.B #include
-files with filenames not beginning with slash.
-The compiler first searches for
-.B #include
-files in the directory containing
-.I sourcefile,
-then in directories in
-.B \-I
-options, and finally, in
-.I /usr/include.
-.IP "\fB\-o \fIoutput\fR"
-Name the final output file
-.I output.
-.IP \fB\-O\fP
-.br
-Use a version of the compiler that is just a bit slower, but produces
-better code.
-.IP \fB\-U\fIname\fR
-.br
-Remove any initial definition of
-.I name.
-.IP \fB\-v\fP
-.br
-Verbose. Print the commands as they are executed.
-.IP \fB\-vn\fP
-.br
-Verbose, no execute. Only print the commands, do not execute them.
-.IP \fB\-w\fP
-suppress warning messages.
-.IP \fB\-R\fP
-.br
-test for more compatibility with Kernighan & Ritchie C [1].
-.IP \fB\-M\fIcompiler\fR
-.br
-use \fIcompiler\fR as C-2 compiler instead of the default.
-.LP
-Object modules produced by cc(1) and
-.I fcc
-can be freely mixed, as long as the link-editor is called through
-.I fcc.
-.SH "SEE ALSO"
-.IP [1]
-B.W. Kernighan, D. Ritchie, "\fIThe C programming Language\fP", Prentice-Hall Inc., 1978
-.IP [2]
-E.H. Baalbergen, "\fIThe ACK CEM compiler\fP".
-.IP [3]
-cc(1) unix manual page.
-.SH DIAGNOSTICS
-Diagnostics are intended to be self-explanatory.

+ 0 - 230
fast_misc/man/fm2.1.src

@@ -1,230 +0,0 @@
-.TH FM2 1
-.SH NAME
-fm2 \- fast CC compatible Modula-2 compiler
-.SH SYNOPSIS
-.B fm2
-[
-.B \-c
-]
-[
-.B \-O
-]
-[
-.B \-v
-]
-[
-.B \-vn
-]
-[ \fB\-D\fIname\fR ]
-[ \fB\-D\fIname\fB=\fIdef\fR ]
-[
-.BI \-I pathname
-]
-[
-.BI \-w classes
-]
-[
-.BI \-W classes
-]
-[
-.B \-L
-]
-[
-.B \-o 
-.I outfile
-]
-[
-.B \-R
-]
-[
-.B \-A
-]
-[
-.B \-3
-]
-[
-.B \-U
-]
-[
-.B \-e
-]
-[
-.BI \-U name
-]
-[
-.BI -M compiler
-]
-.I sourcefile ...
-.SH DESCRIPTION
-.LP
-.I fm2
-is a fast
-.B Modula-2
-compiler. It translates 
-.B Modula-2
-programs
-into cc(1)-compatible relocatable object modules, and does so in one pass.
-Then, if the \fB\-c\fP flag is not given,
-.I fm2
-offers the object modules to a link-editor,
-to create an executable binary.
-.LP
-.I Fm2
-accepts several types of filename arguments.  Files with 
-names ending in
-.B .mod
-are taken to be 
-.B Modula-2
-source programs. 
-They are compiled, and the resulting object module is placed in the current
-directory.
-The object module is named after its source file, the suffix
-.B .o
-replacing 
-.BR .mod
-in the name of the object.
-A file with suffix
-.B .mod
-is passed through the C preprocessor if it begins with a '#'.
-.PP
-Definition modules are not separately compiled. The compiler reads them when
-it needs them.
-Definition modules are expected to reside in files with names ending
-in
-.BR .def .
-The name of the file in which a definition module is stored must be the same as
-the module-name, apart from the extension.
-Also, in most Unix systems filenames are only 14 characters long.
-So, given an IMPORT declaration for a module called "LongModulName",
-the compiler will try to open a file called "LongModulN.def".
-The requirement does not hold for implementation or program modules,
-but is certainly recommended.
-.LP
-Other arguments refer to loader options,
-object modules, or object libraries.
-Unless the
-.B \-c
-flag is given, these modules and libraries, together with the results of any
-specified compilations, are passed (in the order given) to the
-link-editor to produce
-an output file named
-.IR a.out .
-You can specify a name for the executable by using the
-.B \-o 
-option.
-.LP
-If a single 
-.B Modula-2
-program is compiled and loaded all at once, the object module
-file is deleted.
-.SH OPTIONS
-.LP
-The \fB\-l\fIlib\fR, \fB\-d\fP, \fB\-n\fP, \fB\-N\fP,
-\fB\-r\fP, \fB\-s\fP, \fB\-S\fP, \fB\-i\fP, and \fB\-u\fP options are
-passed to the link-editor program.
-The \fB\-u\fP option takes an extra argument.
-.IP \fB\-c\fP
-.br
-Suppress the loading phase of the compilation, and force an object module to
-be produced, even if only one program is compiled.
-A single object module can be named explicitly using the
-.B \-o
-option.
-.IP \fB\-D\fIname\fR\fB=\fIdef\fR
-Define a symbol
-.I name
-to the 
-preprocessor, as if by "#define".
-.IP \fB\-D\fIname\fR
-.br
-same as \fB\-D\fIname\fB=1\fR.
-.IP \fB\-I\fIpathname\fR
-.br
-Add
-.I pathname
-to the list of directories in which to search for
-.B #include
-files with filenames not beginning with slash.
-The preprocessor first searches for
-.B #include
-files in the directory containing
-.I sourcefile,
-then in directories in
-.B \-I
-options, and finally, in
-.I /usr/include.
-This flag is also passed to the compiler. When the compiler needs a definition
-module, it is first searched for in the current directory, then in the
-directories given to it by the \fB\-I\fP flag, and then in a default directory,
-.I CHANGE_ME.
-.I fm2
-This default directory contains all definition modules of
-the runtime system.
-.IP "\fB\-o \fIoutput\fR"
-Name the final output file
-.I output.
-.IP \fB\-O\fP
-.br
-Use a version of the compiler that is just a bit slower, but produces
-better code.
-.IP \fB\-U\fIname\fR
-.br
-Remove any initial definition of
-.I name.
-.IP \fB\-v\fP
-.br
-Verbose. Print the commands as they are executed.
-.IP \fB\-vn\fP
-.br
-Verbose, no execute. Only print the commands, do not execute them.
-.IP \fB\-L\fR
-do not generate code to keep track of
-the current location in the source code.
-.IP \fB\-w\fR\fIclasses\fR
-suppress warning messages whose class is a member of \fIclasses\fR.
-Currently, there are three classes: \fBO\fR, indicating old-flashioned use,
-\fBW\fR, indicating "ordinary" warnings, and \fBR\fR, indicating
-restricted Modula-2.
-If no \fIclasses\fR are given, all warnings are suppressed.
-By default, warnings in class \fBO\fR and \fBW\fR are given.
-.IP \fB\-W\fR\fIclasses\fR
-allow for warning messages whose class is a member of \fIclasses\fR.
-.IP \fB\-R\fP
-.br
-disable all range-checks.
-.IP \fB\-A\fP
-.br
-enable extra array bound checks. Unfortunately, the back-end used for this
-compiler is a bit sloppy, so extra array bound checks are needed if you want
-detection of array bound errors.
-.IP \fB\-3\fP
-.br
-Only accept Modula-2 programs that strictly conform to the 3rd Edition of
-[1].
-.IP \fB\-U\fP
-.br
-allow for underscores within identifiers. Identifiers may not start or end
-with an underscore, even if this flag is given.
-.IP \fB\-e\fP
-.br
-allow for local extensions. Currently, the only local extensions are
-procedure constants.
-.IP \fB\-M\fIcompiler\fR
-.br
-use \fIcompiler\fR as Modula-2 compiler instead of the default.
-.PP
-The compiler does not do any version-control. Instead, a makefile
-generator,
-.IR m2mm ,
-is included.
-.SH "SEE ALSO"
-.IP [1]
-N. Wirth, \fIProgramming in Modula-2\fP, 3rd edition, Springer Verlag.
-.IP [2]
-C.J.H. Jacobs, \fIThe ACK Modula-2 Compiler\fP.
-.IP [3]
-cc(1) unix manual page.
-.IP [4]
-m2mm(1) manual page.
-.SH DIAGNOSTICS
-Diagnostics are intended to be self-explanatory.

+ 0 - 230
fast_misc/man/fpc.1

@@ -1,230 +0,0 @@
-.TH FM2 1
-.SH NAME
-fpc \- fast CC compatible Modula-2 compiler
-.SH SYNOPSIS
-.B fpc
-[
-.B \-c
-]
-[
-.B \-O
-]
-[
-.B \-v
-]
-[
-.B \-vn
-]
-[ \fB\-D\fIname\fR ]
-[ \fB\-D\fIname\fB=\fIdef\fR ]
-[
-.BI \-I pathname
-]
-[
-.B \-w
-]
-[
-.B \-L
-]
-[
-.B \-o 
-.I outfile
-]
-[
-.B \-R
-]
-[
-.B \-A
-]
-[
-.B \-a
-]
-[
-.B \-d
-]
-[
-.BI \-i num
-]
-[
-.B \-t
-]
-[
-.B \-C
-]
-[
-.B \-U+
-]
-[
-.B \-u+
-]
-[
-.B \-s+
-]
-[
-.B \-c+
-]
-[
-.BI \-U name
-]
-[
-.BI -M compiler
-]
-.I sourcefile ...
-.SH DESCRIPTION
-.LP
-.I fpc
-is a fast
-.B Pascal
-compiler. It translates 
-.B Pascal
-programs
-into cc(1)-compatible relocatable object modules, and does so in one pass.
-Then, if the \fB\-c\fP flag is not given,
-.I fpc
-offers the object modules to a link-editor,
-to create an executable binary.
-.LP
-.I Fpc
-accepts several types of filename arguments.  Files with 
-names ending in
-.B .p
-are taken to be 
-.B Pascal
-source programs. 
-They are compiled, and the resulting object module is placed in the current
-directory.
-The object module is named after its source file, the suffix
-.B .o
-replacing 
-.BR .p
-in the name of the object.
-A file with suffix
-.B .p
-is passed through the C preprocessor if it begins with a '#'.
-.LP
-Other arguments refer to loader options,
-object modules, or object libraries.
-Unless the
-.B \-c
-flag is given, these modules and libraries, together with the results of any
-specified compilations, are passed (in the order given) to the
-link-editor to produce
-an output file named
-.IR a.out .
-You can specify a name for the executable by using the
-.B \-o 
-option.
-.LP
-If a single 
-.B Pascal
-program is compiled and loaded all at once, the object module
-file is deleted.
-.SH OPTIONS
-.LP
-The \fB\-l\fIlib\fR, \fB\-d\fP, \fB\-n\fP, \fB\-N\fP,
-\fB\-r\fP, \fB\-s\fP, \fB\-S\fP, \fB\-i\fP, and \fB\-u\fP options are
-passed to the link-editor program.
-The \fB\-u\fP option takes an extra argument.
-.IP \fB\-c\fP
-.br
-Suppress the loading phase of the compilation, and force an object module to
-be produced, even if only one program is compiled.
-A single object module can be named explicitly using the
-.B \-o
-option.
-.IP \fB\-D\fIname\fR\fB=\fIdef\fR
-Define a symbol
-.I name
-to the 
-preprocessor, as if by "#define".
-.IP \fB\-D\fIname\fR
-.br
-same as \fB\-D\fIname\fB=1\fR.
-.IP \fB\-I\fIpathname\fR
-.br
-Add
-.I pathname
-to the list of directories in which to search for
-.B #include
-files with filenames not beginning with slash.
-The preprocessor first searches for
-.B #include
-files in the directory containing
-.I sourcefile,
-then in directories in
-.B \-I
-options, and finally, in
-.I /usr/include.
-.IP "\fB\-o \fIoutput\fR"
-Name the final output file
-.I output.
-.IP \fB\-O\fP
-.br
-Use a version of the compiler that is just a bit slower, but produces
-better code.
-.IP \fB\-U\fIname\fR
-.br
-Remove any initial definition of
-.I name.
-.IP \fB\-v\fP
-.br
-Verbose. Print the commands as they are executed.
-.IP \fB\-vn\fP
-.br
-Verbose, no execute. Only print the commands, do not execute them.
-.IP \fB\-L\fP
-.br
-do not generate code to keep track of
-the current location in the source code.
-.IP \fB\-w\fP
-.br
-suppress warning messages.
-.IP \fB\-d\fP
-.br
-allow for "long"s.
-.IP \fB\-i\fInum\fR
-.br
-set size for integer sets. By default, the set size is the word size.
-.IP \fB\-C\fP
-.br
-distinguish between lower case and upper case. Normally, upper case letters
-are considered equal to their lower case counterpart.
-.IP \fB\-t\fP
-.br
-trace calls and exits of procedures and functions.
-.IP \fB\-R\fP
-.br
-disable all range-checks.
-.IP \fB\-A\fP
-.br
-enable extra array bound checks. Unfortunately, the back-end used for this
-compiler is a bit sloppy, so extra array bound checks are needed if you want
-detection of array bound errors.
-.IP \fB\-a\fP
-.br
-disable assertions. Assertions are skipped instead of evaluated.
-.IP "\fB\-U+\fP, \fB\-u+\fP"
-.br
-allow for underscores within identifiers. Identifiers may not start
-with an underscore, even if this flag is given.
-.IP \fB-s+\fP
-.br
-allow only standard 
-.BR Pascal .
-This disables the \fB\-c+\fP, \fB\-d\fR, \fB\-u+\fR,
-\fB\-U+\fR and \fB\-C\fR options.
-Furthermore, assertions are not recognized at all.
-.IP \fB-c+\fP
-.br
-allow C-like strings. This option is mainly intended for usage with
-C-functions. This option will cause the type 'string' to be known.
-.IP \fB\-M\fIcompiler\fR
-.br
-use \fIcompiler\fR as Modula-2 compiler instead of the default.
-.SH "SEE ALSO"
-.IP [1]
-J.W. Stevenson, H. v. Eck, \fIAmsterdam Compiler Kit-Pascal reference manual\fP.
-.IP [2]
-cc(1) unix manual page.
-.SH DIAGNOSTICS
-Diagnostics are intended to be self-explanatory.

+ 0 - 95
fast_misc/str_change.c

@@ -1,95 +0,0 @@
-/*	Utility to change strings in binary files.
-	Reads from standard input, writes on standard output.
-	Only replaces one occurrence if the -s flag is given.
-*/
-
-#include <stdio.h>
-
-main(argc, argv)
-	char *argv[];
-{
-	register char *psrc;
-	register int ch;
-	int srclen;
-	int sflag = 0;
-	char *progname = argv[0];
-
-	while (argc > 1 && argv[1][0] == '-') {
-		switch(argv[1][1]) {
-		case 's':
-			sflag = 1;
-			break;
-		default:
-			fprintf(stderr,
-			"Usage: %s [-s] <originalstring> <replacementstring>\n",
-			progname);
-			exit(1);
-		}
-		argc--;
-		argv++;
-	}
-	if (argc != 3) {
-		fprintf(stderr,
-			"Usage: %s [-s] <originalstring> <replacementstring>\n",
-			progname);
-		exit(1);
-	}
-
-	psrc = argv[1];
-	srclen = strlen(psrc);
-	if (srclen == 0) {
-		fprintf(stderr,
-			"%s: originalstring must have length > 0\n",
-			progname);
-		exit(1);
-	}
-	for (;;) {
-		ch = getchar();
-		if (ch == EOF) exit(0);
-		if (ch != (*psrc & 0377)) {
-			putchar(ch);
-			continue;
-		}
-		do {
-			psrc++;
-			ch = getchar();
-		} while (ch && ch == (*psrc & 0377));
-		if (ch != EOF) ungetc(ch, stdin);
-		if (*psrc == '\0') {
-			/* we have a match */
-			register int i;
-			register char *prepl = argv[2];
-
-			for (i = srclen; i; i--) {
-				if (*prepl) {
-					putchar(*prepl);
-					prepl++;
-				}
-				else putchar('\0');
-			}
-			while (*prepl) {
-				putchar(*prepl);
-				prepl++;
-				if (ch != EOF) ch = getchar();
-			}
-			if (sflag) {
-				break;
-			}
-		}
-		else {
-			register char *p = argv[1];
-			
-			while (p < psrc) {
-				putchar(*p);
-				p++;
-			}
-			if (ch == EOF) exit(0);
-		}
-		psrc = argv[1];
-	}
-	if (ch == EOF) exit(0);
-	while ((ch = getchar()) != EOF) {
-		putchar(ch);
-	}
-	exit(0);
-}