Diff for /gforth/Attic/engine.c between versions 1.34 and 1.40

version 1.34, 1996/01/07 17:22:09 version 1.40, 1997/02/16 20:51:07
Line 45 Line 45
   
 #define IOR(flag)       ((flag)? -512-errno : 0)  #define IOR(flag)       ((flag)? -512-errno : 0)
   
 typedef union {  
   struct {  
 #ifdef WORDS_BIGENDIAN  
     Cell high;  
     Cell low;  
 #else  
     Cell low;  
     Cell high;  
 #endif;  
   } cells;  
   DCell dcell;  
 } Double_Store;  
   
 typedef struct F83Name {  typedef struct F83Name {
   struct F83Name        *next;  /* the link field for old hands */    struct F83Name        *next;  /* the link field for old hands */
   char                  countetc;    char                  countetc;
Line 69  typedef struct F83Name { Line 56  typedef struct F83Name {
 #define F83NAME_SMUDGE(np)      (((np)->countetc & 0x40) != 0)  #define F83NAME_SMUDGE(np)      (((np)->countetc & 0x40) != 0)
 #define F83NAME_IMMEDIATE(np)   (((np)->countetc & 0x20) != 0)  #define F83NAME_IMMEDIATE(np)   (((np)->countetc & 0x20) != 0)
   
 #ifdef USE_TOS  
 #define IF_TOS(x) x  
 #else  
 #define IF_TOS(x)  
 #define TOS (sp[0])  
 #endif  
   
 #ifdef USE_FTOS  
 #define IF_FTOS(x) x  
 #else  
 #define IF_FTOS(x)  
 #define FTOS (fp[0])  
 #endif  
   
 Cell *SP;  Cell *SP;
 Float *FP;  Float *FP;
   Address UP=NULL;
   
 #if 0  #if 0
 /* not used currently */  /* not used currently */
 int emitcounter;  int emitcounter;
Line 134  char *tilde_cstr(Char *from, UCell size, Line 109  char *tilde_cstr(Char *from, UCell size,
     return cstr(from, size, clear);      return cstr(from, size, clear);
   if (size<2 || from[1]=='/') {    if (size<2 || from[1]=='/') {
     s1 = (char *)getenv ("HOME");      s1 = (char *)getenv ("HOME");
       if(s1 == NULL)
         s1 = "";
     s2 = from+1;      s2 = from+1;
     s2_len = size-1;      s2_len = size-1;
   } else {    } else {
     int i;      UCell i;
     for (i=1; i<size && from[i]!='/'; i++)      for (i=1; i<size && from[i]!='/'; i++)
       ;        ;
     {      {
Line 172  char *tilde_cstr(Char *from, UCell size, Line 149  char *tilde_cstr(Char *from, UCell size,
   
 static char* fileattr[6]={"r","rb","r+","r+b","w","wb"};  static char* fileattr[6]={"r","rb","r+","r+b","w","wb"};
   
 static Address up0=NULL;  #ifndef O_BINARY
   #define O_BINARY 0
   #endif
   #ifndef O_TEXT
   #define O_TEXT 0
   #endif
   
   static int ufileattr[6]= {
     O_RDONLY|O_TEXT, O_RDONLY|O_BINARY,
     O_RDWR  |O_TEXT, O_RDWR  |O_BINARY,
     O_WRONLY|O_TEXT, O_WRONLY|O_BINARY };
   
 /* if machine.h has not defined explicit registers, define them as implicit */  /* if machine.h has not defined explicit registers, define them as implicit */
 #ifndef IPREG  #ifndef IPREG
Line 224  Label *engine(Xt *ip0, Cell *sp0, Cell * Line 211  Label *engine(Xt *ip0, Cell *sp0, Cell *
 #ifdef CFA_NEXT  #ifdef CFA_NEXT
   register Xt cfa CFAREG;    register Xt cfa CFAREG;
 #endif  #endif
   register Address up UPREG = up0;    register Address up UPREG = UP;
   IF_TOS(register Cell TOS TOSREG;)    IF_TOS(register Cell TOS TOSREG;)
   IF_FTOS(register Float FTOS FTOSREG;)    IF_FTOS(register Float FTOS FTOSREG;)
   static Label symbols[]= {    static Label symbols[]= {
Line 243  Label *engine(Xt *ip0, Cell *sp0, Cell * Line 230  Label *engine(Xt *ip0, Cell *sp0, Cell *
     (Label)0,      (Label)0,
 #endif  #endif
 #include "prim_labels.i"  #include "prim_labels.i"
       (Label)0
   };    };
 #ifdef CPU_DEP2  #ifdef CPU_DEP2
   CPU_DEP2    CPU_DEP2

Removed from v.1.34  
changed lines
  Added in v.1.40


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>