diff -ur picoLisp/src/Makefile picoLisp-work/src/Makefile
--- picoLisp/src/Makefile  Tue Mar 31 11:48:22 2015
+++ picoLisp-work/src/Makefile   Tue Feb  2 14:47:31 2016
@@ -91,6 +91,12 @@
   LCRYPT =
   STRIP = strip
 else
+ifeq ($(shell uname), IRIX64)
+        OS = IRIX64
+        CFLAGS += -std=gnu99
+        DYNAMIC-LIB-FLAGS = -shared 
+        STRIP = strip -f
+else
 ifeq ($(shell uname -o), Cygwin)
   OS = Cygwin
   CFLAGS += -m32
@@ -110,7 +116,7 @@
 endif
 endif
 endif
-
+endif
 
 picolisp: $(bin)/picolisp $(lib)/ext$(dll) $(lib)/ht$(dll)
 tools: $(bin)/lat1 $(bin)/utf2 $(bin)/balance
diff -ur picoLisp/src/main.c picoLisp-work/src/main.c
--- picoLisp/src/main.c Mon Nov 23 23:39:50 2015
+++ picoLisp-work/src/main.c  Tue Feb  2 14:39:22 2016
@@ -9,7 +9,7 @@
 #define O_ASYNC FASYNC
 #endif
 
-#if defined (__SVR4) || defined (_AIX) || defined (__hpux)
+#if defined (__SVR4) || defined (_AIX) || defined (__hpux) || defined (__sgi)
 #define O_ASYNC 0
 #define GETCWDLEN 1024
 #else
@@ -376,10 +376,18 @@
          return mkStr(getenv(nm));
       y = evSym(x);
       {
+#if defined (__sgi)
+         char *val;
+         val = malloc(sizeof(nm)+bufSize(y));
+         sprintf(val, "%s=", nm); 
+         bufString(y, val+sizeof(nm));
+         return putenv(val)? Nil : y;
+#else
          char val[bufSize(y)];
 
          bufString(y,val);
          return setenv(nm,val,1)? Nil : y;
+#endif
       }
    }
 }
diff -ur picoLisp/test/src/main.l picoLisp-work/test/src/main.l
--- picoLisp/test/src/main.l  Wed Jan 13 07:36:39 2016
+++ picoLisp-work/test/src/main.l   Tue Feb  2 13:32:40 2016
@@ -17,7 +17,7 @@
 
 
 ### sigio ###
-(unless (member *OS '("SunOS" "OpenBSD" "Cygwin" "AIX" "HP-UX"))
+(unless (member *OS '("SunOS" "OpenBSD" "Cygwin" "AIX" "HP-UX" "IRIX64"))
    (sigio (setq "SigSock" (port T 0 "SigPort"))
       (setq "SigVal" (udp "SigSock")) )
    (udp "localhost" "SigPort" '(a b c))
