mirror of
https://github.com/vishapoberon/compiler.git
synced 2026-04-05 23:22:25 +00:00
Add hex and hexdump to Out.Mod, more debugging for OpenBSD.
This commit is contained in:
parent
7d0cc741ae
commit
a2d98748b6
3 changed files with 50 additions and 8 deletions
|
|
@ -86,7 +86,7 @@ MODULE Files; (* J. Templ 1.12. 89/12.4.95 Oberon files mapped onto Unix files
|
|||
Spaces(indent); Out.String("bufs: "); Out.String("..."); Out.Ln; (* TBD *)
|
||||
Spaces(indent); Out.String("swapper: "); Out.Int(f.swapper,1); Out.Ln;
|
||||
Spaces(indent); Out.String("state: "); Out.Int(f.state,1); Out.Ln;
|
||||
Spaces(indent); Out.String("next: "); Out.Int(SYSTEM.VAL(SYSTEM.ADDRESS,f.next),1); Out.Ln;
|
||||
Spaces(indent); Out.String("next: "); Out.Hex(SYSTEM.VAL(SYSTEM.ADDRESS,f.next),1); Out.Ln;
|
||||
END DumpFile;
|
||||
|
||||
PROCEDURE DumpBuffer*(b: Buffer; indent: INTEGER);
|
||||
|
|
@ -94,7 +94,7 @@ MODULE Files; (* J. Templ 1.12. 89/12.4.95 Oberon files mapped onto Unix files
|
|||
Spaces(indent); Out.String("chg: "); IF b.chg THEN Out.String("TRUE") ELSE Out.String("FALSE") END; Out.Ln;
|
||||
Spaces(indent); Out.String("org: "); Out.Int(b.org,1); Out.Ln;
|
||||
Spaces(indent); Out.String("size: "); Out.Int(b.size,1); Out.Ln;
|
||||
Spaces(indent); Out.String("data: "); Out.String("..."); Out.Ln;
|
||||
Spaces(indent); Out.String("data: "); Out.Ln; Out.HexDump(b.data);
|
||||
Spaces(indent); Out.String("f: "); IF b.f = NIL THEN Out.String("<NIL>"); Out.Ln ELSE Out.Ln; DumpFile(b.f, indent+1) END;
|
||||
END DumpBuffer;
|
||||
|
||||
|
|
|
|||
|
|
@ -68,10 +68,51 @@ BEGIN
|
|||
WHILE i > 0 DO DEC(i); Char(s[i]) END
|
||||
END Int;
|
||||
|
||||
PROCEDURE Hex*(x, n: HUGEINT);
|
||||
BEGIN
|
||||
IF n < 1 THEN n := 1 ELSIF n > 16 THEN n := 16 END;
|
||||
WHILE (n < 16) & (SYSTEM.LSH(x, -4*n) # 0) DO INC(n) END;
|
||||
x := SYSTEM.ROT(x, 4*(16-n));
|
||||
WHILE n > 0 DO
|
||||
x := SYSTEM.ROT(x,4); DEC(n);
|
||||
IF x MOD 16 < 10 THEN Char(CHR((x MOD 16) + ORD('0')))
|
||||
ELSE Char(CHR((x MOD 16) - 10 + ORD('A'))) END
|
||||
END
|
||||
END Hex;
|
||||
|
||||
PROCEDURE Ln*;
|
||||
BEGIN String(Platform.NL); Flush;
|
||||
END Ln;
|
||||
|
||||
PROCEDURE HexDumpAdr*(a, o, l: SYSTEM.ADDRESS);
|
||||
VAR i, n, lim: SYSTEM.ADDRESS; c: CHAR;
|
||||
BEGIN
|
||||
lim := a+l;
|
||||
WHILE a < lim DO
|
||||
IF a+16 < lim THEN n := 16 ELSE n := lim-a END;
|
||||
Hex(o,8); Char(" ");
|
||||
i := 0; WHILE i < n DO
|
||||
IF i MOD 4 = 0 THEN Char(" ") END;
|
||||
SYSTEM.GET(a+i, c); Hex(ORD(c), 2); Char(" ");
|
||||
INC(i)
|
||||
END;
|
||||
WHILE i < 16 DO
|
||||
IF i MOD 4 = 0 THEN Char(" ") END; String(" ");
|
||||
INC(i)
|
||||
END;
|
||||
String(" ");
|
||||
i := 0; WHILE i < n DO
|
||||
SYSTEM.GET(a+i, c);
|
||||
IF (ORD(c) < 32) OR (ORD(c) > 126) THEN Char(".") ELSE Char(c) END;
|
||||
INC(i)
|
||||
END;
|
||||
INC(a,n); INC(o,n); Ln
|
||||
END
|
||||
END HexDumpAdr;
|
||||
|
||||
PROCEDURE HexDump*(VAR m: ARRAY OF SYSTEM.BYTE);
|
||||
BEGIN HexDumpAdr(SYSTEM.ADR(m), 0, LEN(m))
|
||||
END HexDump;
|
||||
|
||||
(* Real and Longreal display *)
|
||||
|
||||
|
|
|
|||
|
|
@ -125,9 +125,9 @@ MODULE Texts; (** CAS/HM 23.9.93 -- interface based on Texts by JG/NW 6.12.91**
|
|||
PROCEDURE DumpText(t: Text);
|
||||
BEGIN
|
||||
Out.String(" len: "); Out.Int(t.len,1); Out.Ln;
|
||||
Out.String(" notify: "); Out.Int(SYSTEM.VAL(SYSTEM.ADDRESS, t.notify),1); Out.Ln;
|
||||
Out.String(" head: "); Out.Int(SYSTEM.VAL(SYSTEM.ADDRESS, t.head),1); Out.Ln;
|
||||
Out.String(" cache: "); Out.Int(SYSTEM.VAL(SYSTEM.ADDRESS, t.cache),1); Out.Ln;
|
||||
Out.String(" notify: "); Out.Hex(SYSTEM.VAL(SYSTEM.ADDRESS, t.notify),1); Out.Ln;
|
||||
Out.String(" head: "); Out.Hex(SYSTEM.VAL(SYSTEM.ADDRESS, t.head),1); Out.Ln;
|
||||
Out.String(" cache: "); Out.Hex(SYSTEM.VAL(SYSTEM.ADDRESS, t.cache),1); Out.Ln;
|
||||
Out.String(" corg: "); Out.Int(t.corg,1); Out.Ln;
|
||||
END DumpText;
|
||||
|
||||
|
|
@ -135,14 +135,15 @@ MODULE Texts; (** CAS/HM 23.9.93 -- interface based on Texts by JG/NW 6.12.91**
|
|||
BEGIN
|
||||
Out.String(" W: "); Out.Int(e.W,1); Out.Ln;
|
||||
Out.String(" H: "); Out.Int(e.H,1); Out.Ln;
|
||||
Out.String(" handle: "); Out.Int(SYSTEM.VAL(SYSTEM.ADDRESS, e.handle),1); Out.Ln;
|
||||
Out.String(" handle: "); Out.Hex(SYSTEM.VAL(SYSTEM.ADDRESS, e.handle),1); Out.Ln;
|
||||
Out.String(" base: "); IF e.base = NIL THEN Out.String("<NIL>"); Out.Ln ELSE Out.Ln; DumpText(e.base) END;
|
||||
END DumpElem;
|
||||
|
||||
PROCEDURE DumpRun(ru: Run);
|
||||
BEGIN
|
||||
Out.String(" prev: "); Out.Int(SYSTEM.VAL(SYSTEM.ADDRESS, ru.prev),1); Out.Ln;
|
||||
Out.String(" next: "); Out.Int(SYSTEM.VAL(SYSTEM.ADDRESS, ru.next),1); Out.Ln;
|
||||
Out.String(" Run at "); Out.Hex(SYSTEM.VAL(SYSTEM.ADDRESS, ru),1); Out.Ln;
|
||||
Out.String(" prev: "); Out.Hex(SYSTEM.VAL(SYSTEM.ADDRESS, ru.prev),1); Out.Ln;
|
||||
Out.String(" next: "); Out.Hex(SYSTEM.VAL(SYSTEM.ADDRESS, ru.next),1); Out.Ln;
|
||||
Out.String(" len: "); Out.Int(ru.len,1); Out.Ln;
|
||||
Out.String(" fnt: "); IF ru.fnt # NIL THEN Out.String(ru.fnt.name) ELSE Out.String("<NIL>") END; Out.Ln;
|
||||
Out.String(" col: "); Out.Int(ru.col,1); Out.Ln;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue