From: kuroda@msisun.msi.co.jp (Hisao Kuroda)
Newsgroups: comp.sys.apple2
Subject: ORCA/C 1.3
Date: 8 Apr 92 09:18:12 GMT
Organization: MSI.Inc. Shinjyuku-ku,Tokyo,JAPAN

Hello.
I am a user of Orca/C, but I can't get no satisfaction.
In version 1.2 it has terrible bugs and almost useless.
In version 1.3 some of them were fixed, but more likely to crashes.

Does anyone compile following code ?
It will crash on my environment. (1.25M ROM01 Orca/C 1.3 Vulcan-100)
If you can compile following, please mail me your environment.

================================begin================================
#pragma memorymodel 1

#include <stdio.h>

struct symbol {         /* symbol structure */
        int  flag;             /* symbol type, always < VOID */
        struct cell *bind;      /* symbol binding */
        struct cell *prop;      /* symbol property list */
        char  *name;            /* symbol name */
        struct symbol *link;    /* link to next symbol */
};

struct cell {           /* cons-cell structure */
        int flag;               /* cell type, always >= VOID */
        union {
           int  inum;            /* integer number */
           float rnum;            /* real number */
           char *str;            /* string */
           struct channel *chan; /* channel */
           struct {              /* for list/set construction */
              struct cell *car;      /* car pointer */
              struct cell *cdr;      /* cdr pointer */
           } pair;
           struct {              /* for vector construction */
              struct cell *dim;      /* vector dimension */
              struct cell **vec;     /* vector block */
           } vect;
        } part;
};

struct channel {                /* I/O channel structure */
        int ch;                     /* current character */
        unsigned short int tok;      /* current token */
        unsigned short int pos;      /* current position in buf */
        unsigned short int len;      /* no. of chars in buf */
        char *buf;                   /* channel buffer */
        int  mode;                   /* one of INCHAN,OUTCHAN,INOUTCHAN */
        FILE *file;                  /* the file associated with channel */
};

struct variable {       /* variable structure for variable stack */
        struct symbol *sym;     /* variable symbol */
        int    flag;            /* its flag */
        struct cell *bind;      /* its binding */
};

typedef struct symbol  *kernsym;        /* symbol pointer */
typedef struct cell    *kerncell;       /* cell pointer */
typedef struct channel *iochan;         /* I/O channel */

extern kerncell argstk[];

#define ARGidx1                 ((int)(argstk[argtop]))
#define ARGnum1                 argstk[ARGidx1]
#define ARGnum2                 argstk[ARGidx1 + 1]
#define ARGnum3                 argstk[ARGidx1 + 2]
#define ARGnum4                 argstk[ARGidx1 + 3]



int argtop;

kerncell
Vpp0 ()  /* --------------------------------------------- (pp 'expr ['chan]) */
{
   kerncell arg1 = ARGnum1;
   kerncell arg2;

        pp((ISfun(arg1) ? ((kernsym)arg1)->bind : arg1),
           (argtop - ARGidx1 == 1
            ? (iochan) 1
            : (!ISchan(arg2 = ARGnum2) || arg2->part.chan->mode == 1
               ? CONVchan(error(arg2))
               : arg2->part.chan)),
           0,0);
        return(arg1);
} /* Vpp */


kerncell
Vpp1 ()  /* --------------------------------------------- (pp 'expr ['chan]) */
{
   kerncell arg1 = ARGnum1;
   kerncell arg2;

        pp((ISfun(arg1) ? ((kernsym)arg1)->bind : arg1),
           (argtop - ARGidx1 == 1
            ? (iochan) 1
            : (!ISchan(arg2 = ARGnum2) || arg2->part.chan->mode == 1
               ? CONVchan(error(arg2))
               : arg2->part.chan)),
           0,0);
        return(arg1);
} /* Vpp */


kerncell
Vpp2 ()  /* --------------------------------------------- (pp 'expr ['chan]) */
{
   kerncell arg1 = ARGnum1;
   kerncell arg2;

        pp((ISfun(arg1) ? ((kernsym)arg1)->bind : arg1),
           (argtop - ARGidx1 == 1
            ? (iochan) 1
            : (!ISchan(arg2 = ARGnum2) || arg2->part.chan->mode == 1
               ? CONVchan(error(arg2))
               : arg2->part.chan)),
           0,0);
        return(arg1);
} /* Vpp */


kerncell
Vpp3 ()  /* --------------------------------------------- (pp 'expr ['chan]) */
{
   kerncell arg1 = ARGnum1;
   kerncell arg2;

        pp((ISfun(arg1) ? ((kernsym)arg1)->bind : arg1),
           (argtop - ARGidx1 == 1
            ? (iochan) 1
            : (!ISchan(arg2 = ARGnum2) || arg2->part.chan->mode == 1
               ? CONVchan(error(arg2))
               : arg2->part.chan)),
           0,0);
        return(arg1);
} /* Vpp */


kerncell
Vpp4 ()  /* --------------------------------------------- (pp 'expr ['chan]) */
{
   kerncell arg1 = ARGnum1;
   kerncell arg2;

        pp((ISfun(arg1) ? ((kernsym)arg1)->bind : arg1),
           (argtop - ARGidx1 == 1
            ? (iochan) 1
            : (!ISchan(arg2 = ARGnum2) || arg2->part.chan->mode == 1
               ? CONVchan(error(arg2))
               : arg2->part.chan)),
           0,0);
        return(arg1);
} /* Vpp */


kerncell
Vpp5 ()  /* --------------------------------------------- (pp 'expr ['chan]) */
{
   kerncell arg1 = ARGnum1;
   kerncell arg2;

        pp((ISfun(arg1) ? ((kernsym)arg1)->bind : arg1),
           (argtop - ARGidx1 == 1
            ? (iochan) 1
            : (!ISchan(arg2 = ARGnum2) || arg2->part.chan->mode == 1
               ? CONVchan(error(arg2))
               : arg2->part.chan)),
           0,0);
        return(arg1);
} /* Vpp */


kerncell
Vpp6 ()  /* --------------------------------------------- (pp 'expr ['chan]) */
{
   kerncell arg1 = ARGnum1;
   kerncell arg2;

        pp((ISfun(arg1) ? ((kernsym)arg1)->bind : arg1),
           (argtop - ARGidx1 == 1
            ? (iochan) 1
            : (!ISchan(arg2 = ARGnum2) || arg2->part.chan->mode == 1
               ? CONVchan(error(arg2))
               : arg2->part.chan)),
           0,0);
        return(arg1);
} /* Vpp */


kerncell
Vpp7 ()  /* --------------------------------------------- (pp 'expr ['chan]) */
{
   kerncell arg1 = ARGnum1;
   kerncell arg2;

        pp((ISfun(arg1) ? ((kernsym)arg1)->bind : arg1),
           (argtop - ARGidx1 == 1
            ? (iochan) 1
            : (!ISchan(arg2 = ARGnum2) || arg2->part.chan->mode == 1
               ? CONVchan(error(arg2))
               : arg2->part.chan)),
           0,0);
        return(arg1);
} /* Vpp */


kerncell
Vpp8 ()  /* --------------------------------------------- (pp 'expr ['chan]) */
{
   kerncell arg1 = ARGnum1;
   kerncell arg2;

        pp((ISfun(arg1) ? ((kernsym)arg1)->bind : arg1),
           (argtop - ARGidx1 == 1
            ? (iochan) 1
            : (!ISchan(arg2 = ARGnum2) || arg2->part.chan->mode == 1
               ? CONVchan(error(arg2))
               : arg2->part.chan)),
           0,0);
        return(arg1);
} /* Vpp */


kerncell
Vpp9 ()  /* --------------------------------------------- (pp 'expr ['chan]) */
{
   kerncell arg1 = ARGnum1;
   kerncell arg2;

        pp((ISfun(arg1) ? ((kernsym)arg1)->bind : arg1),
           (argtop - ARGidx1 == 1
            ? (iochan) 1
            : (!ISchan(arg2 = ARGnum2) || arg2->part.chan->mode == 1
               ? CONVchan(error(arg2))
               : arg2->part.chan)),
           0,0);
        return(arg1);
} /* Vpp */

=================================end=================================

thank you.

### Everybody's got something to hide exept me and my //GS. ###

-- 
	Mathmatical Systems Institute Inc.
	6F AM BLDG. 2-5-3 Shinjuku, Shinjuku-Ku, Tokyo Japan
	E-mail : kuroda@msi.co.jp (Kuroda,Hisao)
Newsgroups: comp.sys.apple2