home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / INFO / TURBOPAS / MISC.ZIP / CLEARMEM.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1986-01-10  |  1.1 KB  |  53 lines

  1. program clearmem;
  2.   {-clear all memory above this program}
  3. var
  4.   smin,omin,smax,omax,s,finalbytes:integer;
  5.   fillbyte:byte;
  6.   rmin,rmax,r:real;
  7.   lastvar:integer;
  8.  
  9. function stackptr:integer;
  10.   {-return the current stack pointer}
  11. var
  12.   sptr:integer;
  13. begin
  14.   inline(
  15.     $8B/$C4/$89/$46/<sptr
  16.   );
  17.   stackptr:=sptr;
  18. end; {stackptr}
  19.  
  20. function cardinal(i:integer):real;
  21.   {-return real 0..65535}
  22. var
  23.   r:real;
  24. begin
  25.   r:=i;
  26.   if r<0 then r:=r+65536.0;
  27.   cardinal:=r;
  28. end; {cardinal}
  29.  
  30. function realaddr(s,o:integer):real;
  31.   {-return the real offset into memory}
  32. begin
  33.   realaddr:=16.0*cardinal(s)+cardinal(o);
  34. end; {realaddr}
  35.  
  36. begin
  37.   omin:=ofs(lastvar);
  38.   smax:=sseg;
  39.   omax:=stackptr-$100;
  40.   rmax:=realaddr(smax,omax);
  41.   writeln;
  42.   write('Enter byte to use for clearing: ');
  43.   readln(fillbyte);
  44.   s:=dseg;
  45.   while realaddr(s,omin)<(rmax-16384.0) do begin
  46.     fillchar(mem[s:omin],16384,fillbyte);
  47.     s:=s+$400;
  48.   end;
  49.   s:=s-$400;
  50.   finalbytes:=trunc(rmax-realaddr(s,omin));
  51.   fillchar(mem[s:omin],finalbytes,fillbyte);
  52. end.
  53.