

	Compiling spice with Think C on a Macintosh. 

A 68020 (Mac II) with co-processor is required.

The src directory from the spice distribution should be moved into
the C folder.

**** recompile think c libraries ****

	Both the ANSI and unix libraries must be recompiled with the
	following additional compiler settings:
		Generate 68020 instructions
		Generate 68881 instructions
		4-bytes ints
		Native floating-point format

	The "console.c" file must be edited and should be removed from
	the ANSI project.  I actually recompiled copies of the ANSI and
	unix libraries that I called ANSI.68881 and unix.68881.
	Copy the "console.c" source (a THINK C file) to a suitable
	location so that it can be included in the spice project. (See
	the next section for details of how "consol.c" must be modified.)


**** creating the project ****

	Create a new project and set the Options as follows:
		Laguage Settings
			Turn on the following options
				Define #__STDC__
				Recognize trigraphs
				enums are always ints
				Check pointer types
				Language Extension
					THINK C
		Compiler Settings
			Turn on the following options
				Generate 68020 instructions
				Generate 68881 instructions
				4-bytes ints
				Native floating-point format
		Code Optimization
			Turn on all options
		Prefix
			make sure there is no prefix (remove
			default #include <macheaders>)	

	Note: The Language setting 'Strict Prototype Enforcement' must be
	turned off.
			
	Set the project type to application with at least 1024k partition
	and turn on the 'Far DATA' option.		

*** Adding the code to the project ***

	Start Adding the code to the project. The code must be divided
	into segments that are less that 32K each when compiled. The
	following division has been used:

		Segment  1: the ANSI.68881 and unix.68881 libraries.
		Segment  2: all *.c files in /src/sparse
		Segment  3: all *.c files in /src/lib/ni
		Segment  4: all *.c files in /src/lib/misc
		Segment  5: files /src/lib/inp/inp2dot.c
				and /src/lib/inp/inptree.c
		Segment  6: all other *.c files in /src/inp
		Segment  7: all *.c files in /src/lib/hlp
		Segment  8: all *.c files in /src/lib/cp
				except /src/lib/cp/input.c
		Segment  9: file /src/lib/ckt/dloadfns.c
		Segment 10: files /src/lib/ckt/cktpzstr.c,
				/src/lib/ckt/cktsens.c, /src/lib/ckt/dctran.c,
				and /src/lib/ckt/distoan.c
		Segment 11: all other *.c files in /src/lib/ckt
		Segment 12: cmath*.c files in /src/lib/fte
		Segment 13: files agraf.c, clip.c, display.c, graf.c,
				graphdb.c, plot5.c, plotcurv.c and
				postsc.c in /src/lib/fte

		Segment 14: files evaluate.c, parse.c, postcoms.c,
				and subckt.c in /src/lib/fte
		Segment 15: files breakp.c, device.c, doplot.c,
				grid.c and shyu.c in /src/lib/fte
		Segment 16: files dotcards.c, inp.c, outif.c, rawfile.c,
				spiceif.c and vectors.c in /src/lib/fte
		Segment 17: all other *.c files in /src/lib/fte
				except nutmegif.c
		Segment 18: all *.c files in /src/lib/fte/vsrc
				and /src/lib/fte/isrc
		Segment 19: all *.c files in /src/lib/fte/jfet
		Segment 20: all *.c files in /src/lib/fte/vccs,
				/src/lib/fte/vcvs, /src/lib/fte/cccs,
				and /src/lib/fte/ccvs
		Segment 21: all *.c files in /src/lib/fte/asrc
				and /src/lib/fte/urc
		Segment 22: all *.c files in /src/lib/fte/cap,
				/src/lib/fte/ind, and /src/lib/fte/res
		Segment 23: all *.c files in /src/lib/fte/csw,
				/src/lib/fte/sw, and /src/lib/fte/tra
		Segment 24: all *.c files in /src/lib/fte/mos6
		Segment 25: all *.c files in /src/lib/fte/mes
		Segment 26: all *.c files in /src/lib/fte/ltra
		Segment 27: file mos3load.c in /src/lib/fte/mos3
		Segment 28: files mos3dist.c, mos3dset.c,
				and mos3sld.c in /src/lib/fte/mos3
		Segment 29: remaining *.c files in /src/lib/fte/mos3
		Segment 30: all *.c files in /src/lib/fte/dio
		Segment 31: file mos1load.c in /src/lib/fte/mos1
		Segment 32: files mos1dist.c, mos1dset.c,
				and mos1sld.c in /src/lib/fte/mos1
		Segment 33: remaining *.c files in /src/lib/fte/mos1
		Segment 34: file bjtload.c in /src/lib/fte/bjt
		Segment 35: files bjtdisto.c, bjtdset.c,
				and bjtsload.c in /src/lib/fte/bjt
		Segment 36: remaining *.c files in /src/lib/fte/bjt
		Segment 37: file mos2load.c in /src/lib/fte/mos2
		Segment 38: file mos2dset.c in /src/lib/fte/mos2
		Segment 39: files mos2dist.c, and mos2sld.c
				in /src/lib/fte/mos2
		Segment 40: remaining *.c files in /src/lib/fte/mos2
		Segment 41: files b1dset.c, and b1ld.c in /src/lib/fte/bsim1
		Segment 42: files b1disto.c, and b1eval.c in /src/lib/fte/bsim1
		Segment 43: remaining *.c files in /src/lib/fte/bsim1
		Segment 44: files b2eval.c, and b2ld.c in /src/lib/fte/bsim2
		Segment 45: remaining *.c files in /src/lib/fte/bsim2
		Segment 46: all *.c files in /src/lib/dev/disto,
				and devsup.c in /src/lib/dev
		Segment 47  all *.c files in /src/lib/mac,
				and file /src/bin/main.c

	Note that the following files are not included:
		/src/lib/cp/input.c
		/src/lib/fte/nutmegif.c
		
	Add "console.c" (the copy made as described above) and make the
	following alterations to it:
		1. The lines:
			static char console_environment, noPrint, interrupted;
			static short console_refnum;
			static MenuHandle appleMenu;
			static WindowPeek theConsole;

		   must be changed to make console_environment and
		   appleMenu external:
			extern char console_environment, noPrint, interrupted;
			static char noPrint, interrupted;
			static short console_refnum;
			extern MenuHandle appleMenu;
			static WindowPeek theConsole;

		2. Alter the function ProcessEvent() to add a default switch
		case. The altered section appears following a doEvent label as
		(note: this code fragment has 4-space tabs and long lines
		broken to fit an 80-column page; these changes do not affect
		the code):

			doEvent:
			    if (event.what == mouseDown) {
				switch (FindWindow(event.where, &wp)) {
				    case inMenuBar:
					InitCursor();
					choice = MenuSelect(event.where);
					goto doMenu;
				    case inSysWindow:
					SystemClick(&event, wp);
					break;
				    default:   /* For spice to pass mouse
						    events to graphs */
					if ((WindowPtr) wp != FrontWindow()) {
					    SelectWindow(wp);
					    in.cnt = 0;
					}  /* in.cnt=0 forces console to
						return to application */
				}
			    }





	Compilation takes about 3 to 4 hours on a 25MHz mac.  Set the cache
	to at least 256k to eliminate a lot of disk access.	

**** makeindx ****
	Create a project with the same option settings decribed above.

	Add src/bin/makeidx.c, ANSI.68881 and an unmodified version of
	"console.c".

	Build the makeindex application.

	Move the application into lib/helpdir directory of the the spice
	distribution.  Run it and add the names of the files to be indexed
	(nutmeg.txt spice.txt) to the command line and hit return.

**** proc2mod ****

	Create a project with the same option settings decribed above.

	Add src/bin/proc2mod.c, src/lib/misc/alloc.c, src/lib/misc/string.c
		src/lib/inp/inpcfix.c, src/lib/inp/inpeval.c,
		src/lib/inp/inpgtok.c, ANSI.68881 and an unmodified
		version of console.c.

	Build the proc2mod application.  
