208 lines
7.0 KiB
Plaintext
208 lines
7.0 KiB
Plaintext
|
|
|
|
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.
|