SpaceName:
ARRAY VarSpace
OF
ROPE = [
"faddr", "frame", "frameup", "caddr",
"code", "link", "linkup", "stack", "const", "pdesc"];
IF c.tag
NOT
IN VarSpace
THEN
BEGIN
PNextUnsigned[h, "Invalid tag", c.tag, indent];
RETURN
END
WITH c
SELECT
FROM
frame =>
BEGIN
PRope[h, "wd: "];
PUnsigned[h, wd];
IF bd # 0 THEN PNextUnsigned[h, "bd", bd, indent];
PNext[h, "level: ", 1, indent];
SELECT level
FROM
Symbols.lZ => PChar[h, 'Z];
Symbols.lG => PChar[h, 'G];
Symbols.lL => PChar[h, 'L];
ENDCASE => PUnsigned[h, level];
IF immutable THEN PNext[h, "immutable",,indent];
END;
frameup =>
BEGIN
PRope[h, "wd: "];
PUnsigned[h, wd];
PNext[h, "pwSize: ", 1, indent];
PUnsigned[h, pwSize];
PNext[h, "level: ", 1, indent];
SELECT level
FROM
Symbols.lZ => PChar[h, 'Z];
Symbols.lG => PChar[h, 'G];
Symbols.lL => PChar[h, 'L];
ENDCASE => PUnsigned[h, level];
PNextUnsigned[h, "delta", delta, indent];
END;
faddr =>
BEGIN
PRope[h, "wd: "];
PUnsigned[h, wd];
PNext[h, "level: ", 1, indent];
SELECT level
FROM
Symbols.lZ => PChar[h, 'Z];
Symbols.lG => PChar[h, 'G];
Symbols.lL => PChar[h, 'L];
ENDCASE => PUnsigned[h, level];
END;
lfaddr =>
BEGIN
PRope[h, "wd: "];
PUnsigned[wd];
PNext["level: ", 1, indent];
SELECT level FROM
Symbols.lZ => PChar[h, 'Z];
Symbols.lG => PChar[h, 'G];
Symbols.lL => PChar[h, 'L];
ENDCASE => PUnsigned[h, level];
PNext[h, IF op = pad THEN "pad" ELSE "lengthen"];
END;
caddr, link =>
BEGIN
PRope[h, "wd: "];
PUnsigned[h, wd];
END;
linkup =>
BEGIN
PRope[h, "wd: "];
PUnsigned[h, wd];
PNextUnsigned[h, "delta", delta, indent];
END;
code =>
BEGIN
PRope[h, "wd: "];
PUnsigned[h, wd];
IF bd # 0 THEN PNextUnsigned[h, "bd", bd, indent];
IF lti # Literals.LTNull THEN PNextUnsigned[h, "lti", lti, indent];
END;
stack =>
BEGIN
PRope[h, "sti: "];
PNull[h, sti, StackNull];
IF wd # 0 THEN PNextUnsigned[h, "wd", wd, indent];
IF bd # 0 THEN PNextUnsigned[h, "bd", bd, indent];
END;
const =>
BEGIN
PRope[h, "d1: "];
PUnsigned[h, d1];
IF c.wSize = 2
OR c.wSize = 1
AND c.bSize # 0
THEN
PNextUnsigned[h, "d2", d2, indent];
IF bd # 0 THEN PNextUnsigned[h, "bd", bd, indent];
END;
pdesc =>
BEGIN
PRope[h, "ep: "];
PUnsigned[h, ep];
END;
sigdesc =>
BEGIN
PRope[h, "sig: "];
PUnsigned[sig];
END;
ENDCASE;