IMPLEMENTATION MODULE Debug ;
FROM ASCII IMPORT cr, nul, lf ;
FROM NumberIO IMPORT CardToStr ;
FROM StdIO IMPORT Write ;
FROM libc IMPORT exit ;
PROCEDURE Halt (Message: ARRAY OF CHAR;
LineNo: CARDINAL;
Module: ARRAY OF CHAR) ;
CONST
MaxNoOfDigits = 12 ;
VAR
No : ARRAY [0..MaxNoOfDigits] OF CHAR ;
BEGIN
DebugString(Module) ;
CardToStr(LineNo, 0, No) ;
DebugString(':') ;
DebugString(No) ;
DebugString(':') ;
DebugString(Message) ;
DebugString('\n') ;
exit(1)
END Halt ;
PROCEDURE DebugString (a: ARRAY OF CHAR) ;
VAR
n, high: CARDINAL ;
BEGIN
high := HIGH( a ) ;
n := 0 ;
WHILE (n <= high) AND (a[n] # nul) DO
IF a[n]='\'
THEN
IF n+1<=high
THEN
IF a[n+1]='n'
THEN
WriteLn ;
INC(n)
ELSIF a[n+1]='\'
THEN
Write('\') ;
INC(n)
END
END
ELSE
Write( a[n] )
END ;
INC( n )
END
END DebugString ;
PROCEDURE WriteLn ;
BEGIN
Write(cr) ;
Write(lf)
END WriteLn ;
END Debug.