This is logo.h in view mode; [Download] [Up]
/* Unix Logo, release 3 */
/* Installation-dependent parameters */
#define EDT "/u/bh/bin/jove" /* default editor for procedure editing */
#define NEXT /* for the NeXT computer in the graphics environment. */
#ifndef NEXT
/* Turn on the graphics devices you have. */
/* #define ATARI /* L-S and Atari */
/* #define GIGI /* L-S */
/* #define ADM /* COM */
/* #define TEK /* COM */
/* #define SUN /* Lucasfilm */
/* #define FLOOR /* L-S */
/* #define NOTURTLE /* turn on for no graphics at all */
/* #define EUNICE /* turn on for inferior Eunice */
/* #define SMALL /* turn on for non-split-I/D PDP-11. */
/* #define EXTLOGO /* Turn on for .logo instead of .lg */
#endif NEXT
#ifdef SMALL
#define NAMELEN 11
#else
#define NAMELEN 100 /* max length of procedure name, must fit
into xxxxxxx.lg filename format */
/* Should be 11 for pre-4.2 Unix unless EXTLOGO is on,
9 for Eunice or EXTLOGO. */
#endif SMALL
/* Initial values for which signal pauses and which aborts */
#define PAUSESIG SIGINT
#define OTHERSIG SIGQUIT
/* Following for 4.2BSD */
#define RAND random
#define SRAND srandom
/* Following for non-4.2
#define RAND rand
#define SRAND srand
*/
#ifdef SMALL
#define MAXALLOC 30
#define YYMAXDEPTH 150
#else
/* Memory allocation tuning. Adjust these numbers if you run out of space. */
#define MAXALLOC 100
/* Increase MAXALLOC for "I can't remember everything you have told me." */
#define YYMAXDEPTH 2200
/* Increase YYMAXDEPTH if you see "Too many levels of recursion." */
/* Decrease something if you see "No more memory, sorry." */
#endif
#ifndef NEXT
#ifndef SMALL
#define DEBUG /* enable debugging code */
#define PAUSE /* enable pause feature */
#define SETCURSOR /* enable termcap stuff */
#endif SMALL
#define LIBLOGO "./library/"
#define LIBNL "cat nl >> %s"
#defineHELPFILE "./help/helpfile"
#define DOCLOGO "./help/"
#ifndef DEBUG
#define DEBUG /* enable debugging code */
#endif DEBUG
#else NEXT
/* #define LIBLOGO "/private/Net/basalt/UserDisk/Users/gdesroch/.logo.lib/" */
#define LIBLOGO "/NXLogo/.logo.lib/"
#define LOCALLIB "./"
/* #define LOCALLIB "/NXLogo/logo.lib/" */
#define LIBNL "cat nl >> %s"
/* #define HELPFILE "/private/Net/basalt/UserDisk/Users/gdesroch/.help/helpfile" */
#define HELPFILE "helpfile"
/* #define DOCLOGO "/private/Net/basalt/UserDisk/Users/gdesroch/.help/" */
#define DOCLOGO "/NXLogo/.help/"
#endif NEXT
#ifdef EXTLOGO
#define EXTEN ".logo"
#define POTSCMD "/usr/lib/logo/logohead *.logo"
#else
#define EXTEN ".lg"
#ifndef NEXT
#define POTSCMD "/usr/lib/logo/logohead *.lg"
#else NEXT
/* #define POTSCMD "/private/Net/basalt/UserDisk/Users/gdesroch/.help/logohead" */
#define POTSCMD "logohead"
#endif NEXT
#endif
/* --------- End of installation-dependent parameters --------- */
#ifdef SMALL
#define NUMBER float
#define FIXNUM int
#define EFMT "%e"
#define FIXFMT "%d"
#define IBUFSIZ 200
#define PSTKSIZ 64
#else
#define NUMBER double
#define FIXNUM long
#define EFMT "%E"
#define FIXFMT "%D"
#define IBUFSIZ 1000
#define PSTKSIZ 128
#endif
#ifdef DEBUG
#define YYDEBUG
#define JFREE jfree
#else
#define JFREE free
#endif
#define GLOBAL extern
#define READ 0
#define WRITE 1
#define NULL 0
#define FAST register
#define FOREVER for(;;)
#define FILDES int
#define BUFSIZE 512
#include <stdio.h>
#undef getchar
#ifdef NEXT
#import "Controller.h"
#import <objc/Object.h>
#undef fflush
extern id blankid;
extern id controler;
/* #define fflush(int) {blankid = [controler flush]; return;} */
#define fflush(int) {blankid = [controler flush];}
#endif NEXT */
struct cons {
struct object *car;
struct object *cdr;
};
struct object {
#ifdef SMALL
char obtype;
char refcnt;
#else
int obtype;
int refcnt;
#endif
union {
struct cons ob_cons;
char *ob_str;
FIXNUM ob_int;
NUMBER ob_dub;
} obob;
};
#define obcons obob.ob_cons
#define obstr obob.ob_str
#define obint obob.ob_int
#define obdub obob.ob_dub
#define obcar obob.ob_cons.car
#define obcdr obob.ob_cons.cdr
#define CONS 0
#define STRING 1
#define INT 2
#define DUB 3
extern int memtrace;
#define listp(x) (((x)==0) || (((x)->obtype)==CONS))
#define stringp(x) ((x) && (((x)->obtype)==STRING))
#define intp(x) ((x) && (((x)->obtype)==INT))
#define dubp(x) ((x) && (((x)->obtype)==DUB))
extern char *ckmalloc();
extern struct object *localize(),*globcopy(),*globcons(),*loccons();
extern struct object *objstr(),*objcpstr(),*objint(),*objdub();
extern struct object *numconv(),*dubconv(),*true(),*false();
extern struct object *makelist(),*stringform(),*torf();
extern int errrec();
struct stkframe
{
struct alist *loclist;
char argtord;
char iftest;
int *stk;
int ind;
int *oldnewstk;
struct alist *oldnloc;
struct plist *prevpcell;
int oldyyc;
int oldyyl;
char *oldbpt;
struct stkframe *prevframe;
#ifdef SMALL
char oldline;
char oldpfg;
#else
int oldline;
int oldpfg;
#endif
};
struct plist
{
struct plist *before;
struct object *procname;
int recdepth;
struct object *ptitle;
int *realbase;
struct lincell *plines;
struct plist *after;
};
struct lincell
{
int linenum;
int *base;
int index;
struct lincell *nextline;
};
struct alist
{
struct object *name;
struct object *val;
struct alist *next;
};
struct lexstruct
{
char *word;
int lexret;
struct object *(*lexval)();
char *abbr;
};
struct runblock
{
struct runblock *rprev;
struct object *str;
char *svbpt;
int roldyyc;
int roldyyl;
int roldline;
FIXNUM rcount;
FIXNUM rupcount;
int svpflag;
int svletflag;
char svch;
};
struct display {
NUMBER turtx,turty,turth; /* current values */
NUMBER xlow,xhigh,ylow,yhigh; /* limits for this dpy */
NUMBER stdscrunch; /* standard aspect ratio */
int cleared; /* nonzero after first use */
char *init,*finish; /* printed to enable, disable gfx */
char *totext; /* printed for temporary textscreen */
char *clear; /* printed for cs, and after init */
int (*drawturt)(); /* one arg, 0 to show, 1 to erase */
int (*drawfrom)(), (*drawto)(); /* 2 args, x and y, draw vector */
int (*txtchk)(); /* make error if can't gfx in txtmode */
int (*infn)(), (*outfn)(); /* no args, called to enable, disable */
int (*turnturt)(); /* no args, tell Atari turtle heading */
int (*penc)(), (*setc)(); /* color map routines */
int (*state)(); /* one arg, state change flag */
};
extern int nullfn();
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.