home *** CD-ROM | disk | FTP | other *** search
/ C!T ROM 2 / ctrom_ii_b.zip / ctrom_ii_b / PROGRAM / PASCAL / MEMMAP01 / UPDATE.PAS < prev    next >
Pascal/Delphi Source File  |  1992-11-20  |  4KB  |  116 lines

  1. {UPDATE ver 1.00 Copyright (C) 1992, John H. Gohde, All Rights Reserved   }
  2.  
  3. {
  4. Put this unit in the Target Program to be debugged. If you want keep
  5. track of STACK & HEAP usage.
  6. }
  7.  
  8. {This unit and software code is COPYRIGHTED MATERIAL and may only be used }
  9. {in accordance with the following LICENSE:                                }
  10. {  1.  If you alter it in any way, the copyright notice must not be       }
  11. {      changed.                                                           }
  12. {  2.  If you use code excerpts in your own programs, due credit must be  }
  13. {      given, along with a copyright notice -                             }
  14. {      "Parts Copyright 1992 John H. Gohde"                               }
  15. {  3.  This software code may not be used for any commerical purpose which}
  16. {       charges money for a program or software code that substantially   }
  17. {       Duplicates what this code does.
  18.  
  19.  
  20. { If you find this unit useful here is the author's contact address:       }
  21.  
  22. {      John H. Gohde                                                       }
  23. {      MEMMAP                                                              }
  24. {      P O BOX 17581                                                       }
  25. {      RICHMOND, VA 23226-7581                                             }
  26. {      USA                                                                 }
  27. {                                                                          }
  28. {      FidoNet:                                                            }
  29. {          1:264/212,The FreeBoard BBS                                     }
  30. {          1:264/152,The Inter City BBS                                    }
  31.  
  32.  
  33. {$A+,B-,D-,E-,F+,G-,I-,L-,N-,O-,R-,S-,V+,X-}
  34.  
  35. unit Update;
  36.  
  37. interface
  38.  
  39. uses
  40.   Dos,
  41.   Misc;
  42.  
  43. const
  44.   MinStack: Word=MaxInt;    {Assures value is not always zero.}
  45.   MaxStack: Word=0;         {Starts counting at a known value.}
  46.   MinHeap:  Longint=MaxInt; {Assures value is not always zero.}
  47.   MaxHeap:  Longint=0;      {Starts counting at a known value.}
  48.  
  49. {**************************************************************************}
  50.  
  51. procedure PollStatus;
  52.           {Polls Heap & Stack Usage}
  53.  
  54. function  PtrDiff(Hi, Lo: Pointer) : Longint;
  55.           {size difference between 2 pointers}
  56.  
  57. function  WordDiff(Hi,Lo:Word):Longint;
  58.           {size difference between 2 word segments}
  59.  
  60. function  UsedHeap:Longint;
  61.           {Computes Heap used}
  62.  
  63. function  UsedStack: Word;
  64.           {computes Stack Used}
  65.  
  66. {**************************************************************************}
  67.  
  68. implementation
  69.  
  70. {UPDATE ver 1.00 Copyright (C) 1992, John H. Gohde, All Rights Reserved   }
  71.  
  72. {**************************************************************************}
  73.  
  74. function PtrDiff(Hi, Lo: Pointer) : Longint;
  75. var
  76.   High, Low: Longint;
  77.  
  78. BEGIN
  79.   High := Longint(Seg(Hi^)) shl 4+Longint(Ofs(Hi^));
  80.   Low  := Longint(Seg(Lo^)) shl 4+Longint(Ofs(Lo^));
  81.   PtrDiff := High-Low;
  82. END;
  83.  
  84. function WordDiff(Hi,Lo:Word):Longint;
  85. BEGIN
  86.   WordDiff:=(PtrDiff(ptr(Hi,0),ptr(Lo,0)));
  87. END;
  88.  
  89.  
  90. function UsedHeap:Longint;
  91. BEGIN
  92.   UsedHeap:=PtrDiff(HeapPtr,HeapOrg);
  93. END;
  94.  
  95. function UsedStack: Word;
  96. BEGIN
  97.   UsedStack:=PtrDiff(ptr(OvrHeapOrg,0),ptr(SSeg,SPtr));
  98. END;
  99.  
  100. procedure PollStatus;
  101. var
  102.   Stack:Word;
  103.   Heap:Longint;
  104. BEGIN
  105.   Stack:=UsedStack;
  106.   Heap:=UsedHeap;
  107.   MinStack:=Min(MinStack,Stack);
  108.   MaxStack:=Max(MaxStack,Stack);
  109.   MinHeap:=Min(MinHeap,Heap);
  110.   MaxHeap:=Max(MaxHeap,Heap);
  111. END;
  112.  
  113. {**************************************************************************}
  114. end.
  115. {UPDATE ver 1.00 Copyright (C) 1992, John H. Gohde, All Rights Reserved   }
  116.