This is NXLogo_main.m in view mode; [Download] [Up]
/* This provides the outermost framework of LOGO, calling the parser to
* begin with, and then thereafter whenever an interrupt or error occurs.
* Copyright (C) 1979, The Children's Museum, Boston, Mass.
* Written by Douglas B. Klunder.
*/
/*
NXLogo
Copyright 1992, CSM Software, Inc. All Rights Reserved.
You may freely copy, distribute and reuse the code in this program. CSM
Software disclaims any warranty of any kind, expressed or implied as to its
fitness for any particular use. (Code last moditied Date June 25, 1992)
Last Modified by :
Gary F. Desrochers (garyd@slate.mines.colorado.edu)
Sean Kerstiens (skerstie@slate.mines.colorado.edu)
Modified For:
Colorado School of Mines.
Last edited:
June 25,1992
*/
/*
The new code and any changes in these logo files has been to try to
keep the code the same so that this code can still be used on other
machines. This means any of the changes or additions are inside ifndef
and ifdef statements.
If you want to know the changes needed to make this run on the NeXT
look in these files for the NEXT definition.
*/
#include "logo.h"
#include <stdlib.h>
#ifdef NEXT
#import <appkit/Application.h>
#import <defaults.h>
#import <streams/streams.h>
#import <objc/Object.h>
#include <time.h>
extern void srandom();
extern int getpid();
extern void unlink();
NXStream *aStream;
const char *homeval, *syslibdir, *helpdir;
id controler;
id blankid;
/* As of right now the logo functions
readlist,rl
request
edit,ed
readchar,rc
are removed and may be put in later.
Also [] cannot go more then one line. ( of course one line is 1000 chars )
the to command does not work. All you have to do is make a .lg file from
any editor.
*/
#endif
char editfile[30];
extern char *getbpt;
#ifndef NOTURTLE
extern int turtdes;
extern struct display *mydpy;
#endif NOTURTLE
#ifdef SETCURSOR
#include <sgtty.h>
struct sgttyb tty;
#endif SETCURSOR
#ifdef NEXT
void main(int argc, char *argv[])
{
void nextMain();
union timeUnion{
long li[2];
int i[2];
}tu;
time(&tu.li[0]);
time(&tu.li[1]);
SRAND(tu.i[1]+tu.i[0]);
nextMain(argc,argv);
/* Later on maybe this can include the option to include the
file that was clicked on. */
#else /* NOT NEXT */
main(argc,argv)
int argc
char *argv[]
{
int i[2];
char tbuff[BUFSIZ];
setbuf(stdout,tbuff);
time(i);
SRAND(i[1]+i[0]);
sprintf(editfile,"/tmp/logo%u",(short)getpid());
#ifdef SETCURSOR
gtty(1,&tty);
#endif
if (argc>1)
getbpt = argv[1];
else
printf("\nWelcome to Children's Museum/LSRHS LOGO\n?");
fflush(stdout);
fprintf(stderr,"I don't belong here!/n");
while (enter()==1) {
yyprompt(1);
}
cboff();
#ifdef SETCURSOR
stty(1,&tty);
#endif
#ifndef NOTURTLE
#ifdef FLOOR
if (turtdes>0)
printf("Please\007 unplug the turtle\007 and put it\007 away.\n");
#endif FLOOR
if (turtdes<0) {
printf(mydpy->finish);
(*mydpy->outfn)();
}
#endif NOTURTLE
unlink(editfile);
#endif NEXT
exit(0);
}
#ifdef NEXT
void nextMain(int argc, char *argv[]){
char *getenv();
homeval = NXGetDefaultValue("NXLogo", "NXLogoLib");
syslibdir = NXGetDefaultValue("NXLogo", "NXLogoSysLib");
helpdir = NXGetDefaultValue("NXLogo", "NXLogoHelp");
NXApp = [Application new];
[NXApp loadNibSection:"NXLogo.nib" owner:NXApp];
[NXApp run];
[NXApp free];
exit(0);
}
extern int enter();
int actOnString(NXStream *dStream, id thisRoutine){
int retint = 0;
aStream = dStream;
controler = thisRoutine;
NXSeek(aStream,0,NX_FROMSTART);
if ((retint = enter())==3) {
return(1);
}
return(0);
}
#endif NEXT
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.