home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari FTP
/
ATARI_FTP_0693.zip
/
ATARI_FTP_0693
/
Tex
/
td187src.lzh
/
RTD.I
< prev
next >
Wrap
Text File
|
1991-06-10
|
4KB
|
156 lines
(*#########################################################################
RTD: RunTimeDebugging. Hilfreiche Funktionen bei der Fehlersuche
#########################################################################
V2.0 19.10.90 Peter Hellinger Anpassung an neues MagicSys
V1.0 19.08.89 Peter Hellinger
#########################################################################
-------------------------------------------------------------------------
DEFINITION MODULE RTD;
FROM MagicSys IMPORT LOC, Byte, sWORD, lWORD;
TYPE DEVICE = (printer, rs232, console);
PROCEDURE Into (procedure: ARRAY OF CHAR);
PROCEDURE Leaving (procedure: ARRAY OF CHAR);
PROCEDURE Message (string: ARRAY OF CHAR);
PROCEDURE Write (msg, string: ARRAY OF CHAR);
PROCEDURE ShowVar (name: ARRAY OF CHAR; VAR value: ARRAY OF LOC);
PROCEDURE SetDevice (dev: DEVICE);
PROCEDURE WaitKey;
END RTD.
-------------------------------------------------------------------------*)
IMPLEMENTATION MODULE RTD;
(*----------------------*)
(* MM2-Version *)
(* *)
(*$R- Range-Checks *)
(*$S- Stack-Check *)
(* *)
(*----------------------*)
FROM SYSTEM IMPORT BYTE, WORD, LONGWORD, ADDRESS, ADR;
FROM MagicSys IMPORT LOC, Byte, sWORD, lWORD, sCARDINAL, sINTEGER,
lCARDINAL, CastToLCard, CastToChar;
FROM MagicBIOS IMPORT Bconout, Bconstat, Bconin, CON, PRT, AUX;
FROM MagicConvert IMPORT NumToStr;
FROM MagicStrings IMPORT Assign;
CONST cMaxIndent = 40;
VAR indent, i: sCARDINAL;
device: sINTEGER;
PROCEDURE write (string: ARRAY OF CHAR);
VAR i: sCARDINAL;
ch: CHAR;
BEGIN
FOR i:= 0 TO HIGH(string) DO
IF string[i] = 0C THEN RETURN END;
ch:= string[i];
Bconout (device, ch);
END;
END write;
PROCEDURE writeLn;
BEGIN
Bconout (device, 15C);
Bconout (device, 12C);
END writeLn;
PROCEDURE writeIndent;
VAR i: sCARDINAL;
BEGIN
FOR i:= 0 TO indent DO Bconout (device, ' '); END;
END writeIndent;
PROCEDURE Into (procedure: ARRAY OF CHAR);
BEGIN
writeIndent; write ("I: "); write (procedure); writeLn;
IF indent < cMaxIndent THEN INC(indent); END;
END Into;
PROCEDURE Leaving (procedure: ARRAY OF CHAR);
BEGIN
IF indent > 0 THEN DEC(indent); END;
writeIndent; write ("L: "); write (procedure); writeLn;
END Leaving;
PROCEDURE Message (string: ARRAY OF CHAR);
BEGIN
writeIndent; write (string); writeLn;
END Message;
PROCEDURE Write (msg, string: ARRAY OF CHAR);
BEGIN
writeIndent; write (msg); write (' '); write (string); writeLn;
END Write;
VAR s: ARRAY [0..32] OF CHAR;
PROCEDURE ShowVar (name: ARRAY OF CHAR; VAR value: ARRAY OF LOC);
VAR wert: lCARDINAL;
BEGIN
writeIndent;
write (name);
write(" = ");
wert:= CastToLCard (value);
NumToStr(wert, 7, 10, FALSE, s); write (s); write (' 0');
NumToStr(wert, 8, 16, FALSE, s); write (s); write ('H ');
IF HIGH (value) = 0 THEN
NumToStr (CastToLCard (value[0]), 9, 2, FALSE, s); write(s);
IF ( CastToChar(value[0]) >= ' ' ) THEN
Bconout (device, "<");
Bconout (device, CastToChar(value[0]));
Bconout (device, ">");
END;
(*
IF BOOLEAN(value[0]) THEN write(" TRUE");
ELSE write(" FALSE");
END;
*)
END;
writeLn;
END ShowVar;
PROCEDURE SetDevice(dev: DEVICE);
BEGIN
CASE dev OF
printer: device:= PRT;|
rs232: device:= AUX;|
console: device:= CON;|
ELSE device:= CON;
END;
END SetDevice;
PROCEDURE WaitKey;
VAR d: LONGCARD;
BEGIN
(* REPEAT UNTIL Bconstat (device); *)
d:= Bconin (device);
END WaitKey;
BEGIN
indent:= 0;
(*
device:= CON;
*)
SetDevice(printer);
END RTD.