INT frnames
[] { 0, 3, 4, 5, 1, 2 };
/* general printing routines ($) */
INT narg
, i
, stat
, name
, limit
;
IF cntflg
==0 THEN cntval
= -1; FI
THEN REP file
[index
++]=lastc
;
IF index
>=63 THEN
error(LONGFIL
); FI
THEN infile
=open(file
,0);
THEN infile
=0; error(NOTOPEN
);
ELSE outfile
=open(file
,1);
THEN outfile
=creat(file
,0644);
ELSE
lseek(outfile
,0L,2);
case 'q': case 'Q': case '%':
maxpos
=(adrflg
?adrval
:MAXPOS
);
maxoff
=(adrflg
?adrval
:MAXOFF
);
THEN
printc((i
<=9 ? '0' : 'a'-10) + i
);
printf(" = %Q\n",var
[i
]);
printmap("? map",&txtmap
);
printmap("/ map",&datmap
);
THEN
printf("pcs id = %d\n",pid
);
ELSE
prints("no process\n");
frame
=(adrflg
?adrval
:endhdr
[r5
])&EVEN
; lastframe
=0;
callpc
=(adrflg
?get(frame
+2,DSP
):endhdr
[pc
]);
narg
= findroutine(frame
);
printf("%.8s(", symbol
.symc
);
THEN
printf("%o", get(argp
, DSP
));
printf(",%o", get(argp
, DSP
));
THEN WHILE
localsym(frame
)
DO word
=get(localval
,DSP
);
printf("%8t%.8s:%10t", symbol
.symc
);
IF errflg THEN
prints("?\n"); errflg
=0; ELSE
printf("%o\n",word
); FI
frame
=get(frame
, DSP
)&EVEN
;
IF frame
==0 THEN
break; FI
IF (symp
->symf
)==043 ORF (symp
->symf
)==044
THEN
printf("%.8s:%12t%o\n", symp
->symc
, get(leng(symp
->symv
),DSP
));
frame
=(adrflg
? adrval
: endhdr
[r4
]);
stat
=get(frame
,DSP
); dynam
=get(frame
+2,DSP
); link
=get(frame
+4,DSP
);
THEN
printf("%8O:%8t%-8o,%-8o,%-8o",frame
,stat
,dynam
,link
);
IF stat
==1 THEN
break; FI
IF errflg THEN
error(A68BAD
); FI
IF
get(link
-4,ISP
)!=04767
THEN IF
get(link
-2,ISP
)!=04775
ELSE
/*compute entry point of routine*/
valpr(name
=shorten(link
)+get(link
-2,ISP
),ISYM
);
name
=get(leng(name
-2),ISP
);
printf("%8t\""); limit
=8;
REP word
=get(leng(name
),DSP
); name
+= 2;
lo
=word
&LOBYTE
; hi
=(word
>>8)&LOBYTE
;
PER lo ANDF hi ANDF limit
-- DONE
limit
=4; i
=6; printf("%24targs:%8t");
DO
printf("%8t%o",get(frame
+i
,DSP
)); i
+= 2; OD
printf("breakpoints\ncount%8tbkpt%24tcommand\n");
FOR bkptr
=bkpthead
; bkptr
; bkptr
=bkptr
->nxtbkpt
THEN
printf("%-8.8d",bkptr
->count
);
psymoff(leng(bkptr
->loc
),ISYM
,"%24t");
WHILE
*comptr DO
printc(*comptr
++); OD
printf("%s%12t`%s'\n",s
,(file
<0 ? "-" : (file
==fcor
? corfil
: symfil
)));
printf("b1 = %-16Q",amap
->b1
);
printf("e1 = %-16Q",amap
->e1
);
printf("f1 = %-16Q",amap
->f1
);
printf("\nb2 = %-16Q",amap
->b2
);
printf("e2 = %-16Q",amap
->e2
);
printf("f2 = %-16Q",amap
->f2
);
printf("fpsr %o\n", corhdr
[0].fpsr
);
DO IF corhdr
[0].fpsr
&FD ORF longpr
/* long mode */
THEN f
= corhdr
[0].Lfr
[frnames
[i
]];
ELSE f
= corhdr
[0].Sfr
[frnames
[i
]];
printf("fr%-8d%-32.18f\n", i
, f
);
FOR p
=reglist
; p
< ®list
[9]; p
++
DO
printf("%s%8t%o%8t", p
->rname
, v
=endhdr
[p
->roffs
]);
valpr(v
,(p
->roffs
==pc
?ISYM
:DSYM
));
FOR p
=reglist
; p
<®list
[9]; p
++
IF (regnam
== *regptr
++) ANDF (regnxt
== *regptr
)
psymoff(dot
,ISYM
,":%16t"); printins(0,ISP
,chkget(dot
,ISP
));