number registers, conversion, arithmetic
if((i
=getch() & CMASK
) == '+')f
= 1;
if((i
=getsn()) == 0)return;
if((i
& 0177) == '.')switch(i
>>BYTE
){
case 's': i
= pts
& 077; break;
case 'v': i
= lss
; break;
case 'f': i
= font
+ 1; break;
case 't': i
= findt1(); break;
case '$': i
= frame
->nargs
; break;
case 'A': i
= ascii
; break;
case 'c': i
= v
.cd
; break;
case 'n': i
= lastl
; break;
case 'a': i
= ralss
; break;
case 'h': i
= dip
->hnl
; break;
if(dip
!= d
)i
= dip
->dnl
; else i
= v
.nl
;
case 'j': i
= ad
+ 2*admod
; break;
case 'w': i
= cwidth
; break;
case 'x': i
= nel
; break;
case 'T': i
= dotT
; break; /*-Tterm used in nroff*/
case 'V': i
= VERT
; break;
case 'H': i
= HOR
; break;
case 'P': i
= print
; break;
case 'R': i
= NN
- regcnt
; break;
cbuf
[1] = (i
>> BYTE
) & BMASK
;
case 'b': i
= bdtab
[font
]; break;
if((j
=findr(i
)) == -1)i
= 0;
i
= (vlist
[j
] = (vlist
[j
] + inc
[j
]*f
));
if(!numerr
)prstrfl("Too many number registers.\n");
if(++numerr
> 1)done2(04); else edone(04);
case 0: return(decml(i
,f
) + j
);
case 'I': return(roman(i
,f
) + j
);
case 'A': return(abc(i
,f
) + j
);
if((j
=i
/10) || (nform
> 0))k
= decml(j
,f
);
return(k
+ (*f
)((i
%10 + '0') | nrbits
));
if(!i
)return((*f
)('0' | nrbits
));
if(nform
== 'i')return(roman0(i
,f
,"ixcmz","vldw"));
else return(roman0(i
,f
,"IXCMZ","VLDW"));
k
= roman0(i
/10,f
,onesp
+1,fivesp
+1);
k
+= (*f
)(*onesp
| nrbits
);
return(k
+= (*f
)(i
| nrbits
));
if(q
)k
+= (*f
)(*fivesp
| nrbits
);
k
+= (*f
)(*onesp
| nrbits
);
if(!i
)return((*f
)('0' | nrbits
));
else return(abc0(i
-1,f
));
if(j
=i
/26)k
= abc0(j
-1,f
);
return(k
+ (*f
)((i
%26 + nform
) | nrbits
));
if(cp
>= &cbuf
[NC
])return(0);
switch((ii
=getch()) & CMASK
){
prstrfl("Divide by zero.\n");
if((acc
> 0) && (i
> 0))acc
= 1; else acc
= 0;
if((acc
> 0) || (i
> 0))acc
= 1; else acc
= 0;
if(((ii
=getch()) & CMASK
) != '=')ch
= ii
;
if(nonumb
){acc
= 0; break;}
if(((ii
=getch()) & CMASK
) == '=')k
++; else ch
=ii
;
if(nonumb
){acc
= 0; break;}
if(acc
> (i
- k
))acc
= 1; else acc
= 0;
if(((ii
=getch()) & CMASK
) == '=')k
++; else ch
=ii
;
if(nonumb
){acc
= 0; break;}
if(acc
< (i
+ k
))acc
= 1; else acc
= 0;
if(((i
= getch()) & CMASK
) == '(')j
= atoi0();
neg
= abs
= field
= digits
= 0;
switch((i
= getch()) & CMASK
){
while(((j
= ((i
= getch()) & CMASK
) - '0') >= 0) && (j
<= 9)){
switch((i
= getch()) & CMASK
){
case 'v': /*VSs - vert spacing*/
i
= 1; /*Same as Ems in NROFF*/
case 'c': /*Centimeters*/
if((field
!= digits
) && (digits
> 0))while(digits
--)acc
/= 10;
if(dip
!= d
)j
= dip
->dnl
; else j
= v
.nl
;
while(!skip() && (i
=getrq()) ){
for(j
=NNAMES
; j
<NN
; j
++){ /*NNAMES predefined names*/
r
[j
]=vlist
[j
]=inc
[j
]=fmt
[j
]=0;
if((i
= findr(getrq())) == -1)goto rtn
;
if(skip() || !(i
= getrq()) || skip())return;
while(((j
= getch() & CMASK
) >= '0') &&
fmt
[findr(i
)] = k
& BMASK
;
if((j
= (i
= getch()) & CMASK
) == '+')f
= 1;
res
= dfactd
= dfact
= 1;
if((n
- m
*i
) > (m
/2))i
+= 1;