[comp.lang.postscript] Goswell's Postscript Interpreter

news@bbn.COM (News system owner ID) (07/28/88)

I'm trying to compile Crispin Goswell's postscript interpreter (from
comp.sources.unix) on a Sun 4 running Sun OS3.2 Rev2.  I can't find
the files wwinfo.h and libww.a which seem to be needed.  Can anyone
help?  Also, can anyone point me to other public domain postscript
interpreters which work under sunview.

Thanks,

	Robin Rohlicek
	BBN Labs, Cambridge, MA.

clyde@ut-emx.UUCP (Head UNIX Hacquer) (07/30/88)

That makefile is an ungodly mess.  Herein is a cleaned up one:
------------- cut here -------------------
#
#	For SUN3s FPFLAGS=-f68881 OR -fswitch
#	For SUN4s FPFLAGS=-Dfloat=double
#

OBJECTS=array.o boolean.o config.o control.o dictionary.o file.o \
	integer.o main.o math.o misc.o name.o operator.o \
	poly.o property.o real.o save.o stack.o string.o unix.o

GRAPHICS=cache.o colour.o device.o fill.o font.o gsave.o image.o mat.o matrix.o\
	pat.o path.o state.o stroke.o

DEFAULT_LIBRARY = /usr/share/lib/postscript

FPFLAGS =
CCFLAGS =	-O
CFLAGS =	$(CCFLAGS) $(FPFLAGS)
LDFLAGS =

all::
	@echo No default set
	@false

SUNBINS = x11PS sunPS
# -----------------------------------------------
sun4::
	make FPFLAGS=-Dfloat=double CCFLAGS="" ${SUNBINS}

# -----------------------------------------------
sun3::
	make FPFLAGS=-f68881 ${SUNBINS}

# -----------------------------------------------
# X11 monochrome PS
#
X11LIB = -lX11
# X11INCLUDES = -I/usr/src/X11/X11 -I/usr/src/X11

x11PS: $(OBJECTS) $(GRAPHICS) X11.o canon_x11.o canon.a 
	rm -f x11PS
	cc $(LDFLAGS) -o x11PS $(OBJECTS) $(GRAPHICS) X11.o canon_x11.o canon.a -lm $(X11LIB)

X11.o: X11.c
	cc -c $(CFLAGS) $(X11INCLUDES) X11.c

canon_x11.o:	canon.c
	cc -c $(CFLAGS) -DX11 canon.c
	mv canon.o canon_x11.o

# -----------------------------------------------
# X10 monochrome PS
#
X10LIB= -lX10
# X10INCLUDES = -I/usr/src/X11/X11 -I/usr/src/X11
x10PS: $(OBJECTS) $(GRAPHICS) X10.o canon.a 
	rm -f x10PS
	cc -o x10PS $(OBJECTS) $(GRAPHICS) X10.o canon.a -lm $(X10LIB)

X10.o: X10.c
	cc -c $(CFLAGS) $(X10INCLUDES) X10.c

# -----------------------------------------------
# Default PS
#
#PS:	$(OBJECTS) $(GRAPHICS) hard.o canon.a
#	cc $(CFLAGS)  $(OBJECTS) $(GRAPHICS) hard.o canon.a -lm `libs` -o PS

# -----------------------------------------------
# Sun pixrect PS
#
sun:	sunPS

sunPS:	$(OBJECTS) $(GRAPHICS) pixrect.o canon_sun.o canon.a
	cc $(LDFLAGS) $(OBJECTS) $(GRAPHICS) pixrect.o canon_sun.o canon.a -lm -lpixrect -o sunPS

canon_sun.o:	canon.c
	cc -c $(CFLAGS) canon.c
	mv canon.o canon_sun.o

# -----------------------------------------------
# Color WW PS
#
CPS:	$(OBJECTS) $(GRAPHICS) colour-ww.o trapezoid.o canon.o
	cc $(CFLAGS)  $(OBJECTS) $(GRAPHICS) colour-ww.o canon.o trapezoid.o -lm `libs` -o CPS

# -----------------------------------------------
# Generic PS which talks to a viewer
#
postscript:	$(OBJECTS) $(GRAPHICS) adapter.o protocol.o
	cc $(CFLAGS) $(OBJECTS) $(GRAPHICS) adapter.o protocol.o -lm -o postscript

# -----------------------------------------------

config.o:	config.c
	cc -c $(CFLAGS) -DDEFAULT_LIBRARY=\"$(DEFAULT_LIBRARY) config.c

canon.a:	screen.o trapezoid.o paint.o
	ar ruv canon.a screen.o trapezoid.o paint.o
	ranlib canon.a

# -----------------------------------------------
# Build seperate viewer for each output device type
#
viewer:	protocol.o viewer.o hard.o canon.a
	cc protocol.o viewer.o hard.o canon.a `libs` -o viewer

# -----------------------------------------------

orion:	orion.o installorion orionlib

orionlib:
	echo 'echo -lG' >libs; chmod +x libs

installorion:
	cp orion.o hard.o

# -----------------------------------------------

ww:	ww.o wwlib installww

wwlib:
	if [ -f libww.a ]; \
	then \
		echo 'echo libww.a' >lww; \
	else \
		echo 'echo -lww' >lww; \
	fi; \
	chmod +x lww
	echo "echo `lww`" >libs; chmod +x libs

installww:
	cp ww.o hard.o

clean::
	rm -f *.o *.a postscript *PS
-- 
Shouter-To-Dead-Parrots @ Univ. of Texas Computation Center; Austin, Texas  
	clyde@emx.utexas.edu; ...!ut-sally!ut-emx!clyde

"That would be the easy way, but it wouldn't be The Cowboy Way."
	-Riders in the Sky

ellis@unix.SRI.COM (Michael Ellis) (05/10/89)

    Has anyone been able to make Goswell's (1987) freeware postscript 
    interpreter do anything at all on a Sun4 running 4.0? Sample output:

    PS>1 1 +
    PS>undefined in operator exec
    stopped

    And that's an improvement from when I tried compiling it under Sys-4-3.2.
    At least I get an error message! Still, bombing out on such trivial input
    does not make me feel very positive, nor did having to make gratuitous
    source and makefile hacks to get it to load. Well, that's freeware for
    you. Who am I to complain? 

    Is Goswell's postscript *supposed* to run on SPARC architecture? Or am
    I wasting my time? Is there a newer version than his 1987 one? Do people
    know the answers to such questions?

-michael

labc-4da@web-1b.berkeley.edu (Bob Heiney) (05/11/89)

In article <30452@sri-unix.SRI.COM> ellis@unix.sri.com (Michael Ellis) writes:
>
>    Has anyone been able to make Goswell's (1987) freeware postscript 
>    interpreter do anything at all on a Sun4 running 4.0? Sample output:
>
>    PS>1 1 +
>    PS>undefined in operator exec
>    stopped
>

Your basic problem is that '+' is not a PostScript operator.  What you want
to say is '1 1 add'.

I've used this program under X11r3 with mixed results.  It's a little buggy,
and I can't get path reversals to work.  I was trying to draw an annulus on
the screen with the code that works on a LaserWriter.  You need to call
reversepath so the hole in the middle isn't filled.  Unfortunately this
doesn't work in freeware PostScript.

Still, it is free and it works on the screen.  Also, most basic things like
lines, arcs, and fonts work.  Fonts are slow to draw, though.

Hope this helps,



-------------------------------------------------------------------------------
| Bob Heiney                         "And in the end, the love you            |
| labc-4da@rosebud.Berkeley.edu       take is equal to the love you make."    |
|                                                     -- The Beatles          |
-------------------------------------------------------------------------------

jm36+@andrew.cmu.edu (John Gardiner Myers) (05/11/89)

Ellis@unix.SRI.COM (Michael Ellis) writes:
>    PS>1 1 +
>    PS>undefined in operator exec
>    stopped

You might want to try feeding it "1 1 add" instead of "1 1 +"

[Begin recording]

Crispin Goswell wrote a PostScript interpreter which is freely
distributable (though not public domain) It is available from
the various comp.sources.unix archives.  The ones I know of are:

j.cc.purdue.edu, comp.sources.unix/volume12, v12i050.Z through v12i067.Z

uunet.uu.net, comp.sources.unix/volume12/postscript, part01.Z through part18.Z

There are a number of bug fixes and improvements available via
anonymous ftp to z.andrew.cmu.edu (128.2.30.8) in the subdirectory
psdiffs.  The patches should be applied to an unpacked virgin
distribution.  READ THE INSTRUCTIONS AT THE BEGINNING OF EACH FILE
BEFORE APPLYING THEM WITH PATCH.

-- 
_.John G. Myers		Internet: jm36+@andrew.cmu.edu
(412) 268-2984		LoseNet:  ...!seismo!ihnp4!wiscvm.wisc.edu!give!up
"Whenever faced with a problem, some people say `Lets use AWK.'
 Now, they have two problems." -- D. Tilbrook

opus@athena.mit.edu (Mr. P. Opus) (05/11/89)

A note to all those people wondering about a PostScript interpreter
for X11: There exists one, written by Crispin Goswell.  We have a
version of this interpreter here at athena, and have spent MANY hours
optimizing it.  It is currently approximately 20-200 times faster than
the version 1.4 with patches that is in general release.  We are
trying to iron out the last of the nasty bugs, and will post the
results soon (pending approval of Mr. Goswell).

This program was optimized by trained professionals using the proper
profiling equipment.  Please do not attempt this in your own home if
you value your sanity.

-David Jedlinsky
opus@athena.mit.edu
Project Athena ``Watchmaker''