[net.sources] GNUPLOT addendum II

plot@vu-vlsi.UUCP (PLOT project administrators) (11/20/86)

   Many of you have reported a problem with part 3 of the 4 shar files
we posted. As a result of neglecting to remove excess characters added
to the PC-clone specific files by XMODEM, shar does complain, however, 
I have been assured that these files will work properly regardless of 
this problem.

   Some of you complained that part 3 never even made it to your system!

   Due to the volume of response, and the relatively small size of the 
file we've decide to repost shar file #3 of 4. Thank you for your patience.

                                       -Thomas Williams


     We tried soooo hard to make it work, but where are the lumps!?

-------------------------------CUT HERE----------------------------------
#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create the files:
#	README
#	gnuplot.1
#	Makefile
#	make.msc
#	corgraph.asm
#	pcgraph.asm
#	plot.h
#	vmshelp.csh
#	simple.demo
#	1.dat
#	2.dat
#	3.dat
# This archive created: Thu Nov 20 13:15:58 1986
export PATH; PATH=/bin:$PATH
echo shar: extracting "'README'" '(1701 characters)'
if test -f 'README'
then
	echo shar: will not over-write existing file "'README'"
else
cat << \SHAR_EOF > 'README'
GNUPLOT has been tested on a Pyramid 90x (ucb 4.2 and att V),
a VAX 8200 (VMS 4.3), IBM PC's and AT's (MS-DOS 3.1, Microsoft C 4.0).
The code is written with portability in mind, and it passes lint!
If you have problems, send mail to vu-vlsi!plot.  And please send
any modifications you make so they can be #ifdef'd into later releases.

These #defines should be checked before compilation:

VFORK       Makefile        define if you've got vfork() system call
vms         Makefile        define if compiling under VMS;
                              automatically defined by DEC C
PC          Makefile        define if compiling on a PClone
MSDOS       Makefile        define if compiling under MSDOS;
                              automatically defined by Microsoft C 4.0
AED         Makefile        define these if you want this terminal driver
HP75           .              included
QMS            .
REGIS          .
TEK            .
UNIXPLOT       .

CGA            .            same, but only if PC is defined
CORONA         .
EGA            .

HUGE        plot.h          define to be largest double if not defined
                              in <math.h>
HELP        plot.h          program run by 'help' command
SHELL       plot.h          default shell to spawn if SHELL environment
                              variable not found at run-time

To compile:

under UNIX:  type 'make'

under VMS:  type '@compile', then '@link'.  Use the 'vmshelp.csh' script
to convert the help files.  If you don't have access to a Unix machine,
send us mail and we'll send you the VMS GNUPLOT.HLB.

under MSDOS:  use 'make make.msc' for Microsoft C 4.0.  If you've got
another compiler, you're on your own!
SHAR_EOF
if test 1701 -ne "`wc -c < 'README'`"
then
	echo shar: error transmitting "'README'" '(should have been 1701 characters)'
fi
fi # end of overwriting check
echo shar: extracting "'gnuplot.1'" '(1364 characters)'
if test -f 'gnuplot.1'
then
	echo shar: will not over-write existing file "'gnuplot.1'"
else
cat << \SHAR_EOF > 'gnuplot.1'
.\" dummy line
.TH GNUPLOT 1 "17 November 1986"
.UC 4
.SH NAME
gnuplot \- an interactive plotting program
.SH SYNOPSIS
.B gnuplot
.br
.SH DESCRIPTION
.I   GNUPLOT 
is a command-driven interactive function plotting program.
Here are some of its features:
.PP
  Plots any number of functions, built up of C operators, C library
functions, and some things C doesn't have like **, sgn(), etc.  Also
support for plotting scatter-plots of data files for comparing actual
data to theoretical curves.
.PP
  User-defined X and Y ranges (optional Y auto-ranging), smart Y scaling,
smart tic marks.
.PP
  User-defined constants and functions.
.PP
  Support through a generalized graphics driver for ReGis (VT125 and VT2xx),
Tek 401x, AED 767, HP plotters, and QMS laser printers.  The PC version
supports IBM CGA & EGA and Corona 325 graphics.  Other devices can be added
simply, but will require recompiling.
.PP
  Shell escapes and command line substitution.
.PP
  Load and save capability.
.PP
  Output redirection.
.PP
  All computations performed in the complex domain.  Just the real part is
plotted by default, but functions like imag() and abs() and arg() are
available to override this.
.SH AUTHORS
Colin Kelley and Tom Williams (vu-vlsi!plot)
.SH BUGS
The unixplot driver automatically writes to stdout, so you have to
redirect the gnuplot's output from the shell.
SHAR_EOF
if test 1364 -ne "`wc -c < 'gnuplot.1'`"
then
	echo shar: error transmitting "'gnuplot.1'" '(should have been 1364 characters)'
fi
fi # end of overwriting check
echo shar: extracting "'Makefile'" '(1533 characters)'
if test -f 'Makefile'
then
	echo shar: will not over-write existing file "'Makefile'"
else
cat << \SHAR_EOF > 'Makefile'
# where to install on 'make install'
DEST=/usr/local/bin/gnuplot

OBJS = 	plot.o scanner.o parse.o command.o eval.o standard.o internal.o util.o\
   	graphics.o term.o misc.o version.o

CSOURCE1 = command.c eval.c graphics.c internal.c misc.c
CSOURCE2 = parse.c plot.c scanner.c standard.c term.c util.c version.c
# not C code, but still needed
ETC = README gnuplot.1 Makefile make.msc corgraph.asm pcgraph.asm plot.h\
    vmshelp.csh simple.demo 1.dat 2.dat 3.dat

# -lplot iff UNIXPLOT you have -DUNIXPLOT
LIBS = -lm -lplot

# -DFORK iff vfork() supported
CFLAGS = -O -DVFORK

# -D<terminal> only if you wish to support <terminal>
# -DAED        Aed767
# -HP75        HP7580, and probably other HPs
# -DQMS        QMS/QUIC laserprinter (Talaris 1200 and others)
# -DREGIS      ReGis graphics (vt220, vt240, Gigis...)
# -DTEK        Tektronix 4010, and probably others
# -DUNIXPLOT   unixplot

TERMFLAGS = -DAED -DHP75 -DQMS -DREGIS -DTEK -DUNIXPLOT

gnuplot: $(OBJS)
	cc $(CFLAGS) $(OBJS) version.o $(LIBS) -o gnuplot

install: gnuplot
	cp gnuplot $(DEST)
	strip $(DEST)

term.o: term.c 
	cc $(CFLAGS) $(TERMFLAGS) -c term.c

$(OBJS): plot.h

lint:
	lint -hx $(CSOURCE1) $(CSOURCE2)

shar: gnuplot.shar.1 gnuplot.shar.2 gnuplot.shar.3 gnuplot.shar.4

gnuplot.shar.1: $(CSOURCE1)
	shar -vc $(CSOURCE1) > gnuplot.shar.1

gnuplot.shar.2: $(CSOURCE2)
	shar -vc $(CSOURCE2) > gnuplot.shar.2

gnuplot.shar.3: $(ETC)
	shar -vc $(ETC) > gnuplot.shar.3

gnuplot.shar.4:
	cd /usr/help; shar -vc gnuplot > /u1/plot/release/1.0/gnuplot.shar.4
SHAR_EOF
if test 1533 -ne "`wc -c < 'Makefile'`"
then
	echo shar: error transmitting "'Makefile'" '(should have been 1533 characters)'
fi
fi # end of overwriting check
echo shar: extracting "'make.msc'" '(1098 characters)'
if test -f 'make.msc'
then
	echo shar: will not over-write existing file "'make.msc'"
else
cat << \SHAR_EOF > 'make.msc'
OBJS = 	command.obj eval.obj graphics.obj internal.obj misc.obj parse.obj plot.obj scanner.obj standard.obj term.obj util.obj version.obj pcgraph.obj corgraph.obj

LIBFLAGS =

# corgraph will include code for Corona 325 graphics
# if omitted, be sure to delete corgraph elsewhere, and get rid of
#   /DCORONA in CFLAGS
GRAPHICS = pcgraph+corgraph

# /AL means use large model (necessary!)
CFLAGS = /AL /DPC /DCORONA

# default rules
.c.obj:
	msc $(CFLAGS) $*;

.asm.obj:
	masm $*;


pcgraph.obj: pcgraph.asm

corgraph.obj: corgraph.asm

command.obj: command.c plot.h

eval.obj: eval.c plot.h

graphics.obj: graphics.c plot.h

internal.obj: internal.c plot.h

misc.obj: misc.c plot.h

parse.obj: parse.c plot.h

plot.obj: plot.c plot.h

scanner.obj: scanner.c plot.h

standard.obj: standard.c plot.h

term.obj: term.c plot.h

util.obj: util.c plot.h

version.obj: version.c

gnuplot.exe: $(OBJS)
	link$(LIBFLAGS) command+eval+graphics+internal+misc+parse+plot+scanner+standard+term+util+version+$(GRAPHICS),gnuplot,nul,;
x		; sum,dx
	add bx,si		; y1,y2
i27:
	inc ax			; x1
	cmp ax,cx		; x1,x2
	jbe 
SHAR_EOF
if test 1098 -ne "`wc -c < 'make.msc'`"
then
	echo shar: error transmitting "'make.msc'" '(should have been 1098 characters)'
fi
fi # end of overwriting check
echo shar: extracting "'corgraph.asm'" '(3466 characters)'
if test -f 'corgraph.asm'
then
	echo shar: will not over-write existing file "'corgraph.asm'"
else
cat << \SHAR_EOF > 'corgraph.asm'
TITLE	Corona graphics module
;	November 9, 1986

xmax	equ 640 		; Corona Screen
ymax	equ 325 		;


X	equ 6


public	_GrInit,_GrReset,_GrAddr,_GrOnly,_TxOnly,_GrandTx,_Cor_line

_prog	segment para 'code'
	assume cs:_prog
X	equ 6

_Cor_line proc far
	push bp
	mov bp,sp
	push si
	push di
	mov ax,[bp+X]		; x1
	mov bx,[bp+X+2]		; y1
	mov cx,[bp+X+4]		; x2
	mov si,[bp+X+6]		; y2

	cmp ax,cx		; x1,x2
	jne i19
	cmp bx,si		; y1,y2
	jne i19

	call near ptr corpixel

	jmp short i28
i19:
	mov dx,ax		; dx,x1
	sub dx,cx		; x2
	jnc noabsx
	neg dx
noabsx:
	mov di,bx		; dy,y1
	sub di,si		; y2
	jnc noabsy
	neg di			; dy
noabsy:
	cmp dx,di		; dx,dy
	ja jcc91
	jmp short i21
jcc91:
	cmp ax,cx		; x1,x2
	jbe i22
	xchg ax,cx		; x1,x2
	xchg bx,si		; y1,y2
i22:
	cmp bx,si		; y1,y2
	jae l20004
	mov si,1		; y2,1
	jmp short l20005
l20004:
	mov si,-1		; y2,-1
l20005:
	mov bp,dx		; sum,dx
	shr bp,1		; sum,1
d23:
	;check out mask
	call near ptr corpixel
	add bp,di		; sum,dy
	cmp bp,dx
	jb i27
	sub bp,dx		; sum,dx
	add bx,si		; y1,y2
i27:
	inc ax			; x1
	cmp ax,cx		; x1,x2
	jbe d23
	jmp short i28

; else iterate y's
i21:
	cmp bx,si		; y1,y2
	jbe i29
	xchg ax,cx		; x1,x2
	xchg bx,si		; y1,y2
i29:
	cmp ax,cx		; x1,x2
	jae l20006
	mov cx,1		; x2,1
	jmp short l20007
l20006:
	mov cx,-1		; x2,-1
l20007:
	mov bp,di		; sum,dy
	shr bp,1		; sum,1
d30:
	; check out mask
	call near ptr corpixel
	add bp,dx		; sum,dx
	cmp bp,di		; sum,dy
	jb i34
	sub bp,di		; sum,dy
	add ax,cx		; x1,x2
i34:
	inc bx			; y1
	cmp bx,si		; y2
	jbe d30
i28:
	pop di
	pop si
	pop bp
	ret
_Cor_line endp


_GrInit	proc far
	push bp
	mov bp,sp
	push di
	mov ax, [bp+X]		; offset of screen
	add ax,15
	mov cl,4
	shr ax,cl
	add ax, [bp+X+2]	; add segment
	add ax, (32768/16)-1
	and ax, 65535-((32768/16)-1)	; round up to 32K boundary
	mov cs:ScSeg,ax		; save segment for later
	push ax
	mov es, ax
	xor ax,ax
	mov di,ax
	mov cx, 4000h
	cld
	rep stosw
	pop cx
	call far ptr _GrAddr
	mov ax,es
	pop di
	pop bp
	ret
_GrInit	endp

_GrReset proc far
	mov cx, 0
	call far ptr _GrAddr
	ret
_GrReset endp

_GrAddr	proc far
	mov dx,3b4h			; address of 6845
	mov al,0ch			; register 12
	out dx,al
	inc dx
	mov al,ch			; Graphics Segment High
	out dx,al
	dec dx
	mov al,0dh			; register 13
	out dx,al
	mov al,cl			; Graphics Segment Low
	inc dx
	out dx,al
	ret
_GrAddr	endp

_GrOnly	proc far
	mov dx,3b8h
	mov al,0a0h
	out dx,al
	ret
_GrOnly	endp

_TxOnly	proc far
	mov dx,3b8h
	mov al,28h
	out dx,al
	ret
_TxOnly	endp

_GrandTx proc far
	mov dx,3b8h
	mov al,0a8h
	out dx,al
	ret
_GrandTx endp

corpixel proc near
	push bp
	mov bp,sp
	push ax
	push bx
	push cx
	mov es,cs:ScSeg
	shl bx,1			; y
	mov bx,word ptr cs:LookUp[bx] ; bx has y mem address
	mov cl,al			; x
	and cl,7
	shr ax,1
	shr ax,1
	shr ax,1			; ax /= 8
	add bx,ax
	mov al,1
	shl al,cl			; al contains bit mask
	or byte ptr es:[bx],al
	pop cx
	pop bx
	pop ax
	pop bp
	ret

K	equ 1024

mem_mac	MACRO x
	dw x,2*K+x,4*K+x,6*K+x,8*K+x,10*K+x,12*K+x,14*K+x,16*K+x
	dw 18*K+x,20*K+x,22*K+x,24*K+x
	ENDM

ScSeg	dw 0

LookUp	equ $
	mem_mac 0
	mem_mac 80
	mem_mac (80*2)
	mem_mac (80*3)
	mem_mac (80*4)
	mem_mac (80*5)
	mem_mac (80*6)
	mem_mac (80*7)
	mem_mac (80*8)
	mem_mac (80*9)
	mem_mac (80*10)
	mem_mac (80*11)
	mem_mac (80*12)
	mem_mac (80*13)
	mem_mac (80*14)
	mem_mac (80*15)
	mem_mac (80*16)
	mem_mac (80*17)
	mem_mac (80*18)
	mem_mac (80*19)
	mem_mac (80*20)
	mem_mac (80*21)
	mem_mac (80*22)
	mem_mac (80*23)
	mem_mac (80*24)
corpixel endp

_prog	ends
 
	end
SHAR_EOF
if test 3466 -ne "`wc -c < 'corgraph.asm'`"
then
	echo shar: error transmitting "'corgraph.asm'" '(should have been 3466 characters)'
fi
fi # end of overwriting check
echo shar: extracting "'pcgraph.asm'" '(2539 characters)'
if test -f 'pcgraph.asm'
then
	echo shar: will not over-write existing file "'pcgraph.asm'"
else
cat << \SHAR_EOF > 'pcgraph.asm'
TITLE	PC graphics module


	public _PC_line, _PC_color, _PC_mask, _PC_curloc, _PC_puts, _Vmode

_prog	segment para 'code'
	assume cs:_prog

X	equ 6

_PC_line proc far
	push bp
	mov bp,sp
	push si
	push di
	mov ax,[bp+X]		; x1
	mov bx,[bp+X+2]		; y1
	mov cx,[bp+X+4]		; x2
	mov si,[bp+X+6]		; y2

	cmp ax,cx		; x1,x2
	jne i19
	cmp bx,si		; y1,y2
	jne i19

	call near ptr pcpixel

	jmp short i28
i19:
	mov dx,ax		; dx,x1
	sub dx,cx		; x2
	jnc noabsx
	neg dx
noabsx:
	mov di,bx		; dy,y1
	sub di,si		; y2
	jnc noabsy
	neg di			; dy
noabsy:
	cmp dx,di		; dx,dy
	ja jcc91
	jmp short i21
jcc91:
	cmp ax,cx		; x1,x2
	jbe i22
	xchg ax,cx		; x1,x2
	xchg bx,si		; y1,y2
i22:
	cmp bx,si		; y1,y2
	jae l20004
	mov si,1		; y2,1
	jmp short l20005
l20004:
	mov si,-1		; y2,-1
l20005:
	mov bp,dx		; sum,dx
	shr bp,1		; sum,1
d23:
	call near ptr pcpixel
	add bp,di		; sum,dy
	cmp bp,dx
	jb i27
	sub bp,dx		; sum,dx
	add bx,si		; y1,y2
i27:
	inc ax			; x1
	cmp ax,cx		; x1,x2
	jbe d23
	jmp short i28

; else iterate y's
i21:
	cmp bx,si		; y1,y2
	jbe i29
	xchg ax,cx		; x1,x2
	xchg bx,si		; y1,y2
i29:
	cmp ax,cx		; x1,x2
	jae l20006
	mov cx,1		; x2,1
	jmp short l20007
l20006:
	mov cx,-1		; x2,-1
l20007:
	mov bp,di		; sum,dy
	shr bp,1		; sum,1
d30:
	call near ptr pcpixel
	add bp,dx		; sum,dx
	cmp bp,di		; sum,dy
	jb i34
	sub bp,di		; sum,dy
	add ax,cx		; x1,x2
i34:
	inc bx			; y1
	cmp bx,si		; y2
	jbe d30
i28:
	pop di
	pop si
	pop bp
	ret
_PC_line endp

_PC_color proc far
	push bp
	mov bp,sp
	mov al,[bp+X]			; color
	mov byte ptr cs:color,al
	pop bp
	ret
_PC_color endp

_PC_mask proc far
	push bp
	mov bp,sp
	mov ax,[bp+X]			; mask
	mov word ptr cs:mask,ax
	pop bp
	ret
_PC_mask endp

mask	dw -1
color	db 1

_Vmode	proc far
	push bp
	mov bp,sp
	push si
	push di
	mov ax,[bp+X]
	int 10h
	pop di
	pop si
	pop bp
	ret
_Vmode	endp

pcpixel proc near
	ror word ptr cs:mask,1
	jc cont
	ret
cont:
	push ax
	push bx
	push cx
	push dx
	mov cx,ax		; x
	mov dx,bx		; y
	mov ah,0ch		; ah = write pixel
	mov al,byte ptr cs:color

	mov bh, 0		; page 0
	int 10h
	pop dx
	pop cx
	pop bx
	pop ax
	ret
pcpixel endp

_PC_curloc proc far
	push bp
	mov bp,sp
	mov dh, byte ptr [bp+X] ; row number
	mov dl, byte ptr [bp+X+2] ; col number
	mov bh, 0
	mov ah, 2
	int 10h
	pop bp
	ret
_PC_curloc endp

_PC_puts proc far
	push bp
	mov bp,sp
	mov ah,0eh		; write TTY char
	mov bl,byte ptr cs:color
	mov es,[bp+X+2]		; segment
	mov bp,[bp+X]		; offset
puts2:	mov al,es:[bp]
	or al,al
	jz puts3
	int 10h
	inc bp
	jmp short puts2
puts3:	pop bp
	ret
_PC_puts endp

_prog	ends
	end
SHAR_EOF
if test 2539 -ne "`wc -c < 'pcgraph.asm'`"
then
	echo shar: error transmitting "'pcgraph.asm'" '(should have been 2539 characters)'
fi
fi # end of overwriting check
echo shar: extracting "'plot.h'" '(4216 characters)'
if test -f 'plot.h'
then
	echo shar: will not over-write existing file "'plot.h'"
else
cat << \SHAR_EOF > 'plot.h'
/*
 *
 *    G N U P L O T  --  plot.h
 *
 *  Copyright (C) 1986 Colin Kelley, Thomas Williams
 *
 *  You may use this code as you wish if credit is given and this message
 *  is retained.
 *
 *  Please e-mail any useful additions to vu-vlsi!plot so they may be
 *  included in later releases.
 *
 *  This file should be edited with 4-column tabs!  (:set ts=4 sw=4 in vi)
 */

#define PATCHLEVEL 0

#define PROGRAM "gnuplot"
#define PROMPT "gnuplot> "
#define SHELL "/bin/sh"
#ifdef vms
#define HELP  ""
#else /* vms */
#define HELP  "/usr/local/bin/help gnuplot"
#endif

#define TRUE 1
#define FALSE 0

#define Pi 3.141592653589793

#define MAX_PLOTS 9			/* max number of overlapping plots */
#define MAX_LINE_LEN 255	/* maximum number of chars allowed on line */
#define MAX_TOKENS 200
#define MAX_ID_LEN 20		/* max length of an identifier */

#ifdef PC
#define MAX_UDFS 30			/* max number of user-defined functions */
#else /* PC */
#define MAX_UDFS 100
#endif /* PC */

#define MAX_VALUES 50		/* max number of user-defined constants */
#define MAX_AT_LEN 100		/* max number of entries in action table */
#define STACK_DEPTH 100
#define NO_CARET (-1)

#define SAMPLES 160			/* default number of samples for a plot */
#define ZERO	1e-8		/* default for 'zero' set option */

/*
 * note about HUGE:  this number is just used as a flag for really
 *   big numbers, so it doesn't have to be the absolutely biggest number
 *   on the machine.
 */

#ifdef PC
#define  HUGE 1e38
#endif /* PC */

#define END_OF_COMMAND (c_token == num_tokens || equals(c_token,";"))
#define push(arg) f_pushc(arg)	/* same thing! */

#define top_of_stack stack[s_p]

typedef int BOOLEAN;
typedef int (*FUNC_PTR)();

enum {
	C_PI, NEXT_VALUE
};

enum operators {
	PUSH, PUSHC, PUSHD, CALL, TERNIARY, LNOT, BNOT, UMINUS, LOR, LAND, BOR,
	XOR, BAND, EQ, NE, GT, LT, GE, LE, PLUS, MINUS, MULT, DIV, MOD, POWER,
	SF_START
};

enum DATA_TYPES {
	INT, CMPLX
};

enum PLOT_TYPES {
	FUNC, DATA
};

enum PLOT_STYLE {
	LINES, POINTS, IMPULSES
};

struct cmplx {
	double real, imag;
};

struct value {
	enum DATA_TYPES type;
	union {
		char *str_val;
		int int_val;
		struct cmplx cmplx_val;
	} v;
};

struct lexical_unit {
	BOOLEAN is_token;		/* true if token, false if a value */ 
	struct value l_val;
	int start_index;	/* index of first char in token */
	int length;		/* length of token in chars */
};

struct at_entry {		/* action table entry */
	int index;		/* index into function table */
	struct value arg;
};

struct at_type {
	int count;
	struct at_entry actions[MAX_AT_LEN];
};

struct ft_entry {		/* standard function table entry */
	char *ft_name;		/* pointer to name of this function */
	FUNC_PTR funct;		/* address of function to call */
};

struct udft_entry {		/* user-defined function table entry */
	char udft_name[MAX_ID_LEN+1];/* name of this function entry */
	struct at_type at;	/* action table to execute */
	char definition[MAX_LINE_LEN+1]; /* definition of function as typed */
	struct value dummy_value;/* current value of dummy variable */
};

struct vt_entry {		/* value table entry */
	char vt_name[MAX_ID_LEN+1];/* name of this value entry */
	BOOLEAN vt_undef;		/* true if not defined yet */
	struct value vt_value;	/* value it has */
};

struct coordinate {
	BOOLEAN undefined;	/* TRUE if value off screen */
#ifdef PC
	float x, y;			/* memory is tight on PCs! */
#else
	double x, y;
#endif /* PC */
};

struct curve_points {
	enum PLOT_TYPES plot_type;
	enum PLOT_STYLE plot_style;
	char title[MAX_LINE_LEN + 1];
	int count;
	struct coordinate *points;
};

struct termentry {
	char name[MAX_ID_LEN + 1];
	unsigned int xmax,ymax,v_char,h_char,v_tic,h_tic;
	FUNC_PTR init,reset,text,graphics,move,vector,linetype,lrput_text,
		ulput_text,point;
};

/*
 * SS$_NORMAL is "normal completion", STS$M_INHIB_MSG supresses
 * printing a status message.
 * SS$_ABORT is the general abort status code.
 from:	Martin Minow
	decvax!minow
 */
#ifdef	vms
#include		<ssdef.h>
#include		<stsdef.h>
#define	IO_SUCCESS	(SS$_NORMAL | STS$M_INHIB_MSG)
#define	IO_ERROR	SS$_ABORT
#endif /* vms */

#ifndef	IO_SUCCESS	/* DECUS or VMS C will have defined these already */
#define	IO_SUCCESS	0
#endif
#ifndef	IO_ERROR
#define	IO_ERROR	1
#endif
SHAR_EOF
if test 4216 -ne "`wc -c < 'plot.h'`"
then
	echo shar: error transmitting "'plot.h'" '(should have been 4216 characters)'
fi
fi # end of overwriting check
echo shar: extracting "'vmshelp.csh'" '(500 characters)'
if test -f 'vmshelp.csh'
then
	echo shar: will not over-write existing file "'vmshelp.csh'"
else
cat << \SHAR_EOF > 'vmshelp.csh'
#! /bin/csh
#
# vmshelp.csh /usr/help/gnuplot/* > gnuplot.hlp
# will convert the Unix help tree to VMS format,
# then use $ LIB/HELP GNUPLOT GNUPLOT under VMS to create the VMS .HLB

if (! $?level) then
	setenv level 0
endif
@ leveltmp = ($level + 1)
setenv level $leveltmp

foreach i ($*)
	if (-f $i) then
# plain file
		echo -n "$level "
		basename $i .HLP
		sed 's/^/ /' $i
	else if (-d $i) then
# directory
		echo -n "$level "
		basename $i
		sed 's/^/ /' $i/.HLP
# recurse!
		$0 $i/*
	endif
end
SHAR_EOF
if test 500 -ne "`wc -c < 'vmshelp.csh'`"
then
	echo shar: error transmitting "'vmshelp.csh'" '(should have been 500 characters)'
fi
fi # end of overwriting check
echo shar: extracting "'simple.demo'" '(488 characters)'
if test -f 'simple.demo'
then
	echo shar: will not over-write existing file "'simple.demo'"
else
cat << \SHAR_EOF > 'simple.demo'
set samples 50
plot [-10:10] sin(x),atan(x),cos(atan(x))
set samples 100 
plot [-pi/2:pi] cos(x),-(sin(x) > sin(x+1) ? sin(x) : sin(x+1))
set samples 200 
plot [-3:5] asin(x),acos(x)
plot [-30:20] besj0(x)*0.12e1 with impulses, (x**besj0(x))-2.5 with points
set samples 400
plot [-10:10] real(sin(x)**besj0(x))
plot [-5*pi:5*pi] [-5:5] real(tan(x)/atan(x)), 1/x
set autoscale
set samples 800
plot [-30:20] sin(x*20)*atan(x)
plot [-19:19] '1.dat'with impulses ,'2.dat' ,'3.dat' with lines
SHAR_EOF
if test 488 -ne "`wc -c < 'simple.demo'`"
then
	echo shar: error transmitting "'simple.demo'" '(should have been 488 characters)'
fi
fi # end of overwriting check
echo shar: extracting "'1.dat'" '(781 characters)'
if test -f '1.dat'
then
	echo shar: will not over-write existing file "'1.dat'"
else
cat << \SHAR_EOF > '1.dat'
-20.000000 -3.041676
-19.000000 -3.036427
-18.000000 -3.030596
-17.000000 -3.024081
-16.000000 -3.016755
-15.000000 -3.008456
-14.000000 -2.998978
-13.000000 -2.988049
-12.000000 -2.975310
-11.000000 -2.960273
-10.000000 -2.942255
-9.000000 -2.920278
-8.000000 -2.892883
-7.000000 -2.857799
-6.000000 -2.811295
-5.000000 -2.746802
-4.000000 -2.651635
-3.000000 -2.498092
-2.000000 -2.214297
-1.000000 -1.570796
0.000000 0.000000
1.000000 1.570796
2.000000 2.214297
3.000000 2.498092
4.000000 2.651635
5.000000 2.746802
6.000000 2.811295
7.000000 2.857799
8.000000 2.892883
9.000000 2.920278
10.000000 2.942255
11.000000 2.960273
12.000000 2.975310
13.000000 2.988049
14.000000 2.998978
15.000000 3.008456
16.000000 3.016755
17.000000 3.024081
18.000000 3.030596
19.000000 3.036427
SHAR_EOF
if test 781 -ne "`wc -c < '1.dat'`"
then
	echo shar: error transmitting "'1.dat'" '(should have been 781 characters)'
fi
fi # end of overwriting check
echo shar: extracting "'2.dat'" '(781 characters)'
if test -f '2.dat'
then
	echo shar: will not over-write existing file "'2.dat'"
else
cat << \SHAR_EOF > '2.dat'
-20.000000 -6.083352
-19.000000 -6.072853
-18.000000 -6.061191
-17.000000 -6.048162
-16.000000 -6.033510
-15.000000 -6.016913
-14.000000 -5.997955
-13.000000 -5.976098
-12.000000 -5.950620
-11.000000 -5.920546
-10.000000 -5.884511
-9.000000 -5.840556
-8.000000 -5.785765
-7.000000 -5.715597
-6.000000 -5.622591
-5.000000 -5.493603
-4.000000 -5.303271
-3.000000 -4.996183
-2.000000 -4.428595
-1.000000 -3.141593
0.000000 0.000000
1.000000 3.141593
2.000000 4.428595
3.000000 4.996183
4.000000 5.303271
5.000000 5.493603
6.000000 5.622591
7.000000 5.715597
8.000000 5.785765
9.000000 5.840556
10.000000 5.884511
11.000000 5.920546
12.000000 5.950620
13.000000 5.976098
14.000000 5.997955
15.000000 6.016913
16.000000 6.033510
17.000000 6.048162
18.000000 6.061191
19.000000 6.072853
SHAR_EOF
if test 781 -ne "`wc -c < '2.dat'`"
then
	echo shar: error transmitting "'2.dat'" '(should have been 781 characters)'
fi
fi # end of overwriting check
echo shar: extracting "'3.dat'" '(781 characters)'
if test -f '3.dat'
then
	echo shar: will not over-write existing file "'3.dat'"
else
cat << \SHAR_EOF > '3.dat'
-20.000000 -9.125028
-19.000000 -9.109280
-18.000000 -9.091787
-17.000000 -9.072243
-16.000000 -9.050265
-15.000000 -9.025369
-14.000000 -8.996933
-13.000000 -8.964147
-12.000000 -8.925931
-11.000000 -8.880819
-10.000000 -8.826766
-9.000000 -8.760835
-8.000000 -8.678648
-7.000000 -8.573396
-6.000000 -8.433886
-5.000000 -8.240405
-4.000000 -7.954906
-3.000000 -7.494275
-2.000000 -6.642892
-1.000000 -4.712389
0.000000 0.000000
1.000000 4.712389
2.000000 6.642892
3.000000 7.494275
4.000000 7.954906
5.000000 8.240405
6.000000 8.433886
7.000000 8.573396
8.000000 8.678648
9.000000 8.760835
10.000000 8.826766
11.000000 8.880819
12.000000 8.925931
13.000000 8.964147
14.000000 8.996933
15.000000 9.025369
16.000000 9.050265
17.000000 9.072243
18.000000 9.091787
19.000000 9.109280
SHAR_EOF
if test 781 -ne "`wc -c < '3.dat'`"
then
	echo shar: error transmitting "'3.dat'" '(should have been 781 characters)'
fi
fi # end of overwriting check
#	End of shell archive
exit 0