IMPLEMENTATION MODULE Diagnostics; (* * REPERTOIRE * Release 1.6 * By Charles Bradford and Cole Brecheen * (c) Copyright 1985-1992 PMI * Green Bay, Wisconsin * All rights reserved * (414) 468-6040 * * $Header: D:/logfiles/mods/diagnost.mov 1.6 10 Mar 1991 15:26:18 coleb $ * *) IMPORT FAPI; (*Diag*) IMPORT ErrorManager; IMPORT HandleIO; IMPORT GenLists; IMPORT LowLevel; IMPORT M2Strings; IMPORT StrConv; IMPORT StrEdit; IMPORT StringIO; IMPORT SYSTEM; VAR Initialized : BOOLEAN; PROCEDURE Init(); BEGIN IF Initialized THEN RETURN; ELSE Initialized := TRUE; END; ErrorManager.Init(); HandleIO.Init(); GenLists.Init(); LowLevel.Init(); M2Strings.Init(); StrConv.Init(); StrEdit.Init(); StringIO.Init(); END Init; PROCEDURE diagA(str1 : ARRAY OF CHAR; TheAddr : SYSTEM.ADDRESS ); VAR LocalStr: ARRAY [0..79] OF CHAR; dummy : ARRAY [0..5] OF CHAR; BEGIN M2Strings.Assign( str1, LocalStr ); StrEdit.Append( LocalStr, ': ' ); StrConv.CardinalToStr(LowLevel.seg(TheAddr), 0, dummy); StrEdit.Append( LocalStr, dummy ); StrEdit.Append( LocalStr, ':' ); StrConv.CardinalToStr(LowLevel.ofs(TheAddr), 0, dummy); StrEdit.Append( LocalStr, dummy ); ErrorManager.WARN( LocalStr ); END diagA; PROCEDURE diagB( str1: ARRAY OF CHAR; TheSet: BITSET ); VAR cnt: CARDINAL; LocalStr: ARRAY [0..255] OF CHAR; BEGIN M2Strings.Assign( str1, LocalStr ); StrEdit.Append( LocalStr, ' ' ); FOR cnt := 0 TO 15 DO IF cnt IN TheSet THEN StrEdit.Append( LocalStr, '1' ); ELSE StrEdit.Append( LocalStr, '0' ); END; END; ErrorManager.WARN( LocalStr ); END diagB; PROCEDURE diagS(str1, str2 : ARRAY OF CHAR); VAR LocalStr: ARRAY [0..255] OF CHAR; dummy, lngth: CARDINAL; tmpadr: SYSTEM.ADDRESS; BEGIN M2Strings.Assign( str1, LocalStr ); StrEdit.Append( LocalStr, ' "' ); StrEdit.Append( LocalStr, str2 ); StrEdit.Append( LocalStr, '"' ); ErrorManager.WARN( LocalStr ); (* tmpadr := SYSTEM.ADR(LocalStr); lngth := M2Strings.Length(LocalStr); dummy := FAPI.DOSWRITE( 1, tmpadr, lngth, SYSTEM.ADR(dummy) ); *) END diagS; PROCEDURE diagC(str1 : ARRAY OF CHAR; TheCard : CARDINAL); VAR LocalStr: ARRAY [0..79] OF CHAR; dummy : ARRAY [0..5] OF CHAR; BEGIN M2Strings.Assign( str1, LocalStr ); StrEdit.Append( LocalStr, ': ' ); StrConv.CardinalToStr(TheCard, 0, dummy); StrEdit.Append( LocalStr, dummy ); ErrorManager.WARN( LocalStr ); END diagC; PROCEDURE diagI(str1 : ARRAY OF CHAR; TheInt : INTEGER); VAR LocalStr: ARRAY [0..79] OF CHAR; dummy : ARRAY [0..5] OF CHAR; BEGIN M2Strings.Assign( str1, LocalStr ); StrEdit.Append( LocalStr, ': ' ); StrConv.IntegerToStr(TheInt, 0, dummy); StrEdit.Append( LocalStr, dummy ); ErrorManager.WARN( LocalStr ); END diagI; PROCEDURE diagL(str1 : ARRAY OF CHAR; TheLong : LONGINT); VAR LocalStr: ARRAY [0..79] OF CHAR; KeyHit: CARDINAL; dummy : ARRAY [0..15] OF CHAR; BEGIN M2Strings.Assign( str1, LocalStr ); StrEdit.Append( LocalStr, ': ' ); StrConv.LongIntegerToStr(TheLong, 0, dummy); StrEdit.Append( LocalStr, dummy ); ErrorManager.WARN( LocalStr ); END diagL; PROCEDURE diagBlock( str1 : ARRAY OF CHAR; TheAddr : SYSTEM.ADDRESS; TheSize: CARDINAL ); VAR fhandle: CARDINAL; tmpstr: ARRAY [0..15] OF CHAR; BEGIN HandleIO.OpenForAppending( 'tmp.txt', fhandle ); StrConv.CardinalToStr( TheSize, 0, tmpstr ); StringIO.WriteEol( fhandle, '' ); StringIO.WriteStr( fhandle, str1 ); StringIO.WriteStr( fhandle, '; ' ); StringIO.WriteStr( fhandle, tmpstr ); StringIO.WriteEol( fhandle, ' bytes:' ); IF 0 # HandleIO.BlockWrite( fhandle, TheAddr, TheSize ) THEN END; IF 0 # HandleIO.CloseHandle( fhandle ) THEN END; END diagBlock; PROCEDURE CheckList( TheList: GenLists.GenList ); VAR DataSize, TotalElems, TotalSize: LONGINT; TotalSubs: CARDINAL; BEGIN (* DataSize := Storage.MemoryInUse; TotalSize := Storage.MaxMemoryUsed; *) DataSize := GenLists.ListSize( TheList, TotalElems, TotalSubs, TotalSize ); END CheckList; BEGIN Initialized := FALSE; Init(); END Diagnostics.