=========================== MemGuard III.a ===========================
======================================================================

Was  written  by Ralf Thanner in 100% assembly language!  This release
fixes  some  disadvantages  encountered  with the original MemWatch II
program written by John Toebes.

============================== Purpose ===============================
======================================================================

MemGuard  III  checks  the first 100 longwords, in particular location
$00000004, for random trashing.  Discovering any change an Alert comes
up  giving  you  the  choice  to  leave  the vectors as they are or to
restore  their  original  contents.   Unlike  other tools of this kind
MemGuard  III  does  not  run  as task, but rather links itself to the
level  3 IRQ, checking the vectors each frame.  Therefore virtually no
processing  time  is  wasted,  no  extra  memory  is used (very little
actually, but below 1000 bytes - the original MemWatch II needed about
4000  bytes  while  running)  and  the checking takes place even while
task-switching  is forbidden.  Furthermore most actions overriding the
vector table are discovered almost instantly.

=============================== Usage ================================
======================================================================

MemGuard III can be started both from Workbench and CLI. The following
options are recognized:

	"A" -> Activate MemGuard III
	"Q" -> Terminate MemGuard III
	"?" -> Displays a short list of instructions

Note  that  these  options are available from Workbench, too.  A small
menu will pop up and ask you for a selection.

============================ How it works ============================
======================================================================

MemGuard  III allocates a chunk of memory, copies the checking routine
into  it, links it to the Vertical Blank interrupt and exits.  As soon
as  an  application  trashes  a  low-memory  vector  an  alert  of the
following form comes up:

#====================================================================#
#                                                                    #
#               MEMGUARD III (C) 1990 by Ralf Thanner                #
#                                                                    #
#         Location: $xxxxxxxx             Change: yyyyyyyy           #
#                                                                    #
#  LEFT BUTTON TO CORRECT               RIGHT BUTTON TO SAVE CHANGE  #
#====================================================================#

Location  displays  the  address having been overwritten, Change gives
the  value  it  has  received.   Pressing  the  left mouse button will
restore  the  original  contents of the trashed location, pressing the
right mouse button will leave the location as it is.

=============================== Author ===============================
======================================================================

MemGuard  III  was  written  by  Ralf  Thanner  using  the  Kuma  Seka
assembler,  the  original MemWatch idea was suggested from MemWatch II
which had some substancial disadvantages.  The executable MemGuard and
the  documentation  file  (this file) are placed in the public domain.
If  you  intend  to  use  this program commercially please contact the
author first:

                             Ralf Thanner
                           Ellerstrasse 83
                         D-4000 Duesseldorf 1

                     Federal Republic of Germany


           MemGuard III (C) Copyright 1990 by Ralf Thanner

          Special thanks go to Thorsten Hopf & Olaf Barthel!

VERSIONS:
=========

	- MEMGUARD III

	  Thought, that this was the final version...
	  No bug reports.

	- MEMGUARD III.a

	  Because the  MEMGUARD level3 IRQ  part uses no message
	  ports ( would slow down everything ) i took 530(a6) as
	  my port. The bad thing is that 530(a6) is the vertical
	  blank  frequency and programs which check this pointer
	  had little problems to interpret the frequencey (PAL ^
	  NTSC) when my marks were set, therefore i took now the
	  debug data [ 70(a6) ] as my terminal.

	  Added also a more userfriendly CLI-Interface.

	  Shortened and improved the check routine:
	   - needs now less than 896 bytes of memory.
	   - takes only about 2-3 percentage of processing
	     time. (MEMWATCH II took about 50%)

