Пример #1
0
static void putSrc(any s, any k) {
   if (!isNil(val(Dbg)) && !isExt(s) && InFile && InFile->name) {
      any x, y;
      cell c1;

      Push(c1, boxCnt(InFile->src));
      data(c1) = cons(data(c1), mkStr(InFile->name));
      x = get(s, Dbg);
      if (!k) {
         if (isNil(x))
            put(s, Dbg, cons(data(c1), Nil));
         else
            car(x) = data(c1);
      }
      else if (isNil(x))
         put(s, Dbg, cons(Nil, cons(data(c1), Nil)));
      else {
         for (y = cdr(x); isCell(y); y = cdr(y))
            if (caar(y) == k) {
               cdar(y) = data(c1);
               drop(c1);
               return;
            }
         cdr(x) = cons(cons(k, data(c1)), cdr(x));
      }
      drop(c1);
   }
}
Пример #2
0
void initSymbols(void) {
    int i;

    Nil = symPtr(Avail),  Avail = Avail->car->car;  // Allocate 2 cells for NIL
    val(Nil) = tail(Nil) = val(Nil+1) = tail(Nil+1) = Nil;
    Zero = box(0);
    One = box(2);
    for (i = 0; i < IHASH; ++i)
        Intern[i] = Transient[i] = Nil;
    for (i = 0; i < EHASH; ++i)
        Extern[i] = Nil;
    initSym(mkStr(_OS), "*OS");
    DB    = initSym(Nil, "*DB");
    Meth  = initSym(box(num(doMeth)), "meth");
    Quote = initSym(box(num(doQuote)), "quote");
    T     = initSym(Nil, "T"),  val(T) = T;  // Last protected symbol

    mkExt(val(DB) = DbVal = consStr(DbTail = box('1')));
    Extern['1'] = cons(DbVal, Nil);

    Solo  = initSym(Zero, "*Solo");
    PPid  = initSym(Nil, "*PPid");
    Pid   = initSym(boxCnt(getpid()), "*Pid");
    At    = initSym(Nil, "@");
    At2   = initSym(Nil, "@@");
    At3   = initSym(Nil, "@@@");
    This  = initSym(Nil, "This");
    Dbg   = initSym(Nil, "*Dbg");
    Zap   = initSym(Nil, "*Zap");
    Ext   = initSym(Nil, "*Ext");
    Scl   = initSym(Zero, "*Scl");
    Class = initSym(Nil, "*Class");
    Run   = initSym(Nil, "*Run");
    Hup   = initSym(Nil, "*Hup");
    Sig1  = initSym(Nil, "*Sig1");
    Sig2  = initSym(Nil, "*Sig2");
    Up    = initSym(Nil, "^");
    Err   = initSym(Nil, "*Err");
    Msg   = initSym(Nil, "*Msg");
    Uni   = initSym(Nil, "*Uni");
    Led   = initSym(Nil, "*Led");
    Tsm   = initSym(Nil, "*Tsm");
    Adr   = initSym(Nil, "*Adr");
    Fork  = initSym(Nil, "*Fork");
    Bye   = initSym(Nil, "*Bye");  // Last unremovable symbol

    for (i = 0; i < (int)(sizeof(Symbols)/sizeof(symInit)); ++i)
        initSym(box(num(Symbols[i].code)), Symbols[i].name);
}
Пример #3
0
// (sys 'any ['any]) -> sym
any doSys(any x) {
   any y;

   y = evSym(x = cdr(x));
   {
      char nm[bufSize(y)];

      bufString(y,nm);
      if (!isCell(x = cdr(x)))
         return mkStr(getenv(nm));
      y = evSym(x);
      {
         char val[bufSize(y)];

         bufString(y,val);
         return setenv(nm,val,1)? Nil : y;
      }
   }
}
Пример #4
0
// (pd-board) -> sym
any pd_board(any x) {
   return mkStr(MACRO_NAME(ALCOR_BOARD));
}
Пример #5
0
// (pd-cpu) -> sym
any pd_cpu(any x) {
   return mkStr(MACRO_NAME(ALCOR_CPU));
}
Пример #6
0
// (pd-platform) -> sym
any pd_platform(any x) {
   return mkStr(MACRO_NAME(ALCOR_PLATFORM));
}