home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fish 'n' More 2
/
fishmore-publicdomainlibraryvol.ii1991xetec.iso
/
fish
/
system_utils
/
memory
/
memguard_436
/
memguard.doc
< prev
next >
Wrap
Text File
|
1991-01-15
|
7KB
|
162 lines
============================= MemGuard IV.00 ===========================
========================================================================
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 IV 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 IV
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.
MemGuard IV is NOT a virus killer but a usefull tool for 'C' Freaks. If
an opening of a structure failed and you don't check this, your program
starts writing random data to location $0. In most cases your Amiga
will crash after this action.
================================= Usage ================================
========================================================================
MemGuard IV can be started both from Workbench and CLI. The following
options are recognized:
"A" -> Activate MemGuard IV
"Q" -> Terminate MemGuard IV
"?" -> 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 IV 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 IV.00 (C) 1990 by Ralf Thanner #
# #
# Adress: $xxxx OLD: xxxxxxxx NEW: xxxxxxx ASCII: 'xxxx' #
# #
# LEFT BUTTON TO CORRECT RIGHT BUTTON TO SAVE CHANGE #
#====================================================================#
-> 'ADRESS' displays the address having been overwritten.
-> 'OLD' means the old value of the adress.
-> 'NEW' gives the value it has received.
-> 'ASCII' gives the ASCII text of the new value.
- 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 IV was written by Ralf Thanner using the Kuma Seka assembler,
the original MemWatch idea was suggested from MemWatch II which had some
substancial disadvantages.
Ralf Thanner
Ellerstrasse 83
D-4000 Duesseldorf 1
Federal Republic of Germany
MemGuard IV (C) Copyright 1990 by Ralf Thanner
Special thanks go to Olaf Barthel & Thorsten Hopf
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 the 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 problems to interprete the
value (PAL / NTSC). I had to switch to debug dat
(70(a6)) which is currently not assigned to any
particular function.
Also added a cuter CLI-Interface.
Shortened and improved the check routine:
- now needs less than 896 bytes of memory.
- takes only about 2-3 percent of processing
time. (Memwatch II took about 50%)
- MemGuard III.c
--------------
As more and more Amiga users have an 68020 or 68030
which permit to relocate the IRQ vector table MemGuard
was extended to check the exact location before
actually redirecting the level 3 IRQ vector.
- MemGuard III.d
--------------
Extended the `trash' display.
Shortened code and reprogrammed the checking routine:
- Checking routine has become 924 bytes long and needs 8
raster lines. (MemGuard III.a needed 11 lines!!)
- The exec.library vector is buffered internally to help
MemGuard to survive a fatal change in $4. Thanks go
to Holger Lubitz for this clever idea.
- MemGuard IV.00
--------------
- Fat bug removed: the task running while MemGuard
displayed the low memory change would freeze and
finally hang (another nice feature of the task
scheduler).
- Integrated a low level task to display the alert.
- Better Shell parameter check, will also handle tabs.
=============================== MemGuard ================================
IMPORTANT NOTICE: This Program Is (c) Copyright By Ralf Thanner, But Can
Be Freely Distributed, Providing That The Following Rules Are Respected.
- No Change Is Made To The Program Nor To The Accompaning Documentation
- The Package Is Always Distributed In Its Complete Form Consisting Of
2 Files: 'MemGuard' And 'MemGuard.Doc'.
- Every Form Of Distribution Is Allowed And Encouraged, But No Fee Can
Be Charged For This Program Except For, Possibly, The Cost Of Magnetic
Media.
By Copying, Distributing And/Or Using The Program You Indicate Your
Acceptance Of The Above Rules.
============================================================================