| |
|
| static char* fileattr[6]={"r","rb","r+","r+b","w+","w+b"}; |
static char* fileattr[6]={"r","rb","r+","r+b","w+","w+b"}; |
| |
|
| Label *engine(Xt *ip, Cell *sp, Cell *rp, Float *fp) |
Label *engine(Xt *ip, Cell *sp, Cell *rp, Float *fp, Address lp) |
| /* executes code at ip, if ip!=NULL |
/* executes code at ip, if ip!=NULL |
| returns array of machine code labels (for use in a loader), if ip==NULL |
returns array of machine code labels (for use in a loader), if ip==NULL |
| This is very preliminary, as the bootstrap architecture is not yet decided |
This is very preliminary, as the bootstrap architecture is not yet decided |
| */ |
*/ |
| { |
{ |
| Xt cfa; |
Xt cfa; |
| Address lp=NULL; |
|
| Address up=NULL; |
Address up=NULL; |
| static Label symbols[]= { |
static Label symbols[]= { |
| &&docol, |
&&docol, |
| #endif |
#endif |
| #ifdef USE_TOS |
#ifdef USE_TOS |
| *sp-- = TOS; |
*sp-- = TOS; |
| TOS = up+*(Cell*)PFA1(cfa); |
TOS = (Cell)(up+*(Cell*)PFA1(cfa)); |
| #else |
#else |
| *--sp = up+*(Cell*)PFA1(cfa); |
*--sp = (Cell)(up+*(Cell*)PFA1(cfa)); |
| #endif |
#endif |
| NEXT; |
NEXT; |
| |
|