CHAR stformat
[128] "o\"= \"^i";
INT itype
, ptype
, modifier
, regptr
;
THEN dot
=expv
; ditto
=dot
;
IF
rdc()==',' ANDF
expr(0)
THEN cntflg
=TRUE
; cntval
=expv
;
ELSE cntflg
=FALSE
; cntval
=1; lp
--;
ELSE IF adrflg
==0 THEN dot
=inkdot(dotinc
); FI
IF
rdc()=='*' THEN lastcom
|= QUOTE
; ELSE lp
--; FI
THEN itype
|= STAR
; ptype
= (DSYM
+ISYM
)-ptype
;
longpr
=FALSE
; eqcom
=lastcom
=='=';
UNION
{MAP
*m
; L_INT
*mp
;}amap
;
IF eqcom THEN
error(BADEQ
); FI
smap
=(itype
&DSP
?&datmap
:&txtmap
);
WHILE fcount
-- ANDF
expr(0)
DO
*(amap
.mp
)++ = expv
; OD
IF
rdc()=='?' THEN smap
->ufd
=fsym
;
ELIF lastc
== '/' THEN smap
->ufd
=fcor
;
IF eqcom THEN
error(BADEQ
); FI
IF
expr(0) THEN locmsk
=expv
; ELSE locmsk
= -1L; FI
LOOP w
=leng(get(dot
,itype
));
THEN w
=itol(w
,get(inkdot(2),itype
));
IF errflg ORF mkfault
ORF (w
&locmsk
)==locval THEN
break; FI
THEN dot
=savdot
; errflg
=NOMATCH
;
IF eqcom THEN
error(BADEQ
); FI
wformat
[0]=lastc
; expr(1);
REP savdot
=dot
; psymoff(dot
,ptype
,":%16t"); exform(1,wformat
,itype
,ptype
);
THEN
put(dot
,itype
,expv
);
put((longpr
?inkdot(2):dot
),itype
,shorten(expv
));
printf("=%8t"); exform(1,wformat
,itype
,ptype
);
PER
expr(0) ANDF errflg
==0 DONE
getformat(eqcom
? eqformat
: stformat
);
THEN
psymoff(dot
,ptype
,":%16t");
scanform(cntval
,(eqcom
?eqformat
:stformat
),itype
,ptype
);
THEN endhdr
[regptr
]=shorten(dot
);
ptrace(WUREGS
,pid
,2*(512+regptr
),endhdr
[regptr
]);
ELIF (modifier
=varchk(savc
)) != -1
printtrace(nextchar()); break;
IF buf THEN lp
=savlp
; ELSE lp
--; FI
return(adrflg ANDF dot
!=0);