home *** CD-ROM | disk | FTP | other *** search
- ============================= 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.
-
- ============================================================================
-