home *** CD-ROM | disk | FTP | other *** search
/ Atari FTP / ATARI_FTP_0693.zip / ATARI_FTP_0693 / Tex / td187src.lzh / RTD.I < prev    next >
Text File  |  1991-06-10  |  4KB  |  156 lines

  1. (*#########################################################################
  2.      RTD:  RunTimeDebugging.  Hilfreiche Funktionen bei der Fehlersuche
  3.   #########################################################################
  4.   V2.0  19.10.90  Peter Hellinger       Anpassung an neues MagicSys
  5.   V1.0  19.08.89  Peter Hellinger
  6.   #########################################################################
  7.  
  8.   -------------------------------------------------------------------------
  9. DEFINITION MODULE RTD;
  10.  
  11. FROM MagicSys IMPORT LOC, Byte, sWORD, lWORD;
  12.  
  13. TYPE DEVICE = (printer, rs232, console);
  14.  
  15. PROCEDURE Into        (procedure: ARRAY OF CHAR);
  16. PROCEDURE Leaving     (procedure: ARRAY OF CHAR);
  17. PROCEDURE Message     (string: ARRAY OF CHAR);
  18. PROCEDURE Write       (msg, string: ARRAY OF CHAR);
  19. PROCEDURE ShowVar     (name: ARRAY OF CHAR; VAR value: ARRAY OF LOC);
  20. PROCEDURE SetDevice   (dev: DEVICE);
  21. PROCEDURE WaitKey;
  22.  
  23. END RTD.
  24.   -------------------------------------------------------------------------*)
  25.  
  26. IMPLEMENTATION MODULE RTD;
  27.  
  28. (*----------------------*)
  29. (*      MM2-Version     *)
  30. (*                      *)
  31. (*$R-   Range-Checks    *)
  32. (*$S-   Stack-Check     *)
  33. (*                      *)
  34. (*----------------------*)
  35.  
  36. FROM SYSTEM     IMPORT  BYTE, WORD, LONGWORD, ADDRESS, ADR;
  37. FROM MagicSys   IMPORT  LOC, Byte, sWORD, lWORD, sCARDINAL, sINTEGER,
  38.                         lCARDINAL, CastToLCard, CastToChar;
  39. FROM MagicBIOS  IMPORT  Bconout, Bconstat, Bconin, CON, PRT, AUX;
  40. FROM MagicConvert IMPORT NumToStr;
  41. FROM MagicStrings IMPORT Assign;
  42.  
  43. CONST   cMaxIndent =    40;
  44.  
  45. VAR     indent, i:      sCARDINAL;
  46.         device:         sINTEGER;
  47.  
  48.  
  49. PROCEDURE write (string: ARRAY OF CHAR);
  50. VAR i: sCARDINAL;
  51.     ch: CHAR;
  52. BEGIN
  53.  FOR i:= 0 TO HIGH(string) DO
  54.   IF string[i] = 0C THEN  RETURN  END;
  55.   ch:= string[i];
  56.   Bconout (device, ch);
  57.  END;
  58. END write;
  59.  
  60.  
  61. PROCEDURE writeLn;
  62. BEGIN
  63.  Bconout (device, 15C);
  64.  Bconout (device, 12C);
  65. END writeLn;
  66.  
  67.  
  68. PROCEDURE writeIndent;
  69. VAR i: sCARDINAL;
  70. BEGIN
  71.  FOR i:= 0 TO indent DO  Bconout (device, ' ');  END;
  72. END writeIndent;
  73.  
  74.  
  75. PROCEDURE Into (procedure: ARRAY OF CHAR);
  76. BEGIN
  77.  writeIndent;  write ("I: ");  write (procedure);  writeLn;
  78.  IF indent < cMaxIndent THEN INC(indent);  END;
  79. END Into;
  80.  
  81.  
  82. PROCEDURE Leaving (procedure: ARRAY OF CHAR);
  83. BEGIN
  84.  IF indent > 0 THEN DEC(indent); END;
  85.  writeIndent;  write ("L: ");  write (procedure);  writeLn;
  86. END Leaving;
  87.  
  88.  
  89. PROCEDURE Message (string: ARRAY OF CHAR);
  90. BEGIN
  91.  writeIndent;  write (string);  writeLn;
  92. END Message;
  93.  
  94.  
  95. PROCEDURE Write (msg, string: ARRAY OF CHAR);
  96. BEGIN
  97.  writeIndent;  write (msg);  write ('  ');  write (string);  writeLn;
  98. END Write;
  99.  
  100.  
  101. VAR s: ARRAY [0..32] OF CHAR; 
  102.  
  103. PROCEDURE ShowVar (name: ARRAY OF CHAR; VAR value: ARRAY OF LOC);
  104. VAR wert: lCARDINAL;
  105. BEGIN
  106.  writeIndent;
  107.  write (name);
  108.  write(" = "); 
  109.  wert:= CastToLCard (value);
  110.  NumToStr(wert, 7, 10, FALSE, s);  write (s);  write ('  0');
  111.  NumToStr(wert, 8, 16, FALSE, s);  write (s);  write ('H ');
  112.  IF HIGH (value) = 0 THEN
  113.   NumToStr (CastToLCard (value[0]), 9, 2, FALSE, s);  write(s);
  114.   IF ( CastToChar(value[0]) >= ' ' ) THEN
  115.    Bconout (device, "<");
  116.    Bconout (device, CastToChar(value[0]));
  117.    Bconout (device, ">");
  118.   END; 
  119. (*
  120.   IF BOOLEAN(value[0]) THEN  write(" TRUE");
  121.                        ELSE  write(" FALSE");
  122.   END;
  123. *)
  124.  END;
  125.  writeLn;
  126. END ShowVar;
  127.  
  128.  
  129. PROCEDURE SetDevice(dev: DEVICE);
  130. BEGIN
  131.  CASE dev OF
  132.   printer: device:= PRT;|
  133.   rs232:   device:= AUX;|
  134.   console: device:= CON;|
  135.   ELSE     device:= CON;
  136.  END;
  137. END SetDevice;
  138.  
  139.  
  140. PROCEDURE WaitKey;
  141. VAR d: LONGCARD;
  142. BEGIN
  143.  (* REPEAT UNTIL Bconstat (device); *)
  144.  d:= Bconin (device);
  145. END WaitKey; 
  146.  
  147.  
  148. BEGIN
  149.  indent:= 0;
  150. (*
  151.  device:= CON;
  152. *) 
  153.  SetDevice(printer);
  154. END RTD.
  155.  
  156.