| \ this is non-syntactical: code must open a brace that is close by the macro |
\ this is non-syntactical: code must open a brace that is close by the macro |
| define(condbranch, |
define(condbranch, |
| $1 $2 |
$1 $2 |
| $3 goto branch; |
$3 ip = (Xt *)(((Cell)ip)+(Cell)*ip); NEXT; |
| } |
} |
| else |
else |
| ip++; |
ip++; |
| /* sign bit manipulation and test: (x^y)<0 is equivalent to (x<0) != (y<0) */ |
/* sign bit manipulation and test: (x^y)<0 is equivalent to (x<0) != (y<0) */ |
| /* dependent upon two's complement arithmetic */ |
/* dependent upon two's complement arithmetic */ |
| Cell olddiff = index-rp[1]; |
Cell olddiff = index-rp[1]; |
| #ifdef undefined |
#ifndef undefined |
| if ((olddiff^(olddiff+n))>=0 /* the limit is not crossed */ |
if ((olddiff^(olddiff+n))>=0 /* the limit is not crossed */ |
| || (olddiff^n)>=0 /* it is a wrap-around effect */) { |
|| (olddiff^n)>=0 /* it is a wrap-around effect */) { |
| #else |
#else |
| wior = FILEEXIST(w2 == NULL); |
wior = FILEEXIST(w2 == NULL); |
| |
|
| create-file c_addr u ntype -- w2 wior file create_file |
create-file c_addr u ntype -- w2 wior file create_file |
| int fd; |
Cell fd; |
| fd = creat(cstr(c_addr, u, 1), 0644); |
fd = creat(cstr(c_addr, u, 1), 0644); |
| if (fd > -1) { |
if (fd > -1) { |
| #ifdef __osf__ |
|
| (void)close(fd); |
|
| w2 = (Cell)fopen(cstr(c_addr, u, 1), fileattr[ntype]); |
|
| #else |
|
| w2 = (Cell)fdopen(fd, fileattr[ntype]); |
w2 = (Cell)fdopen(fd, fileattr[ntype]); |
| #endif |
|
| assert(w2 != NULL); |
assert(w2 != NULL); |
| wior = 0; |
wior = 0; |
| } else { |
} else { |
| |
|
| represent r c_addr u -- n f1 f2 float |
represent r c_addr u -- n f1 f2 float |
| char *sig; |
char *sig; |
| int flag; |
Cell flag; |
| int decpt; |
Cell decpt; |
| sig=ecvt(r, u, &decpt, &flag); |
sig=ecvt(r, u, &decpt, &flag); |
| n=(Cell)(r==0 ? 1 : decpt); |
n=(r==0 ? 1 : decpt); |
| f1=FLAG(flag!=0); |
f1=FLAG(flag!=0); |
| f2=FLAG(isdigit(sig[0])!=0); |
f2=FLAG(isdigit(sig[0])!=0); |
| memmove(c_addr,sig,u); |
memmove(c_addr,sig,u); |