home *** CD-ROM | disk | FTP | other *** search
- /*ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
- Ñ Ñ
- Ñ File Name: Parasite_Manager.c Ñ
- Ñ ---------- Ñ
- Ñ Ñ
- Ñ Copyright ⌐ 1990 Apple Computer, Inc. All Rights Reserved Ñ
- Ñ Ñ
- Ñ Description Ñ
- Ñ ----------- Ñ
- Ñ This file contains the routines of the parasite manager. Ñ
- Ñ The parasite manager will install and remove the SLUDGE parasite. Ñ
- Ñ The SLUDGE parasite is what slows down the machine. Ñ
- Ñ Ñ
- Ñ History Ñ
- Ñ ------- Ñ
- Ñ Ñ
- Ñ Author Date Description Ñ
- Ñ ------------------------------------------------------------------ Ñ
- Ñ Kevin McEntee 2/20/90 Original Implementation Ñ
- Ñ Ñ
- Ñ Ñ
- ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/
- #include <OSUtils.h>
- #include <Resources.h>
- #include <Memory.h>
-
- #include "Parasite_Manager.h"
- #include "State_Storage_Manager.h"
-
-
- void TRY(Ptr Parasite_Location, long Sludge_Factor);
-
- /*ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
- Ñ Ñ
- Ñ Identifier: Install Ñ
- Ñ ----------- Ñ
- Ñ Ñ
- Ñ Description Ñ
- Ñ ----------- Ñ
- Ñ This function installs the SLUDGE parasite and makes it active. Ñ
- Ñ Ñ
- Ñ History Ñ
- Ñ ------- Ñ
- Ñ Ñ
- Ñ Author Date Description Ñ
- Ñ ------------------------------------------------------------------ Ñ
- Ñ Kevin McEntee 2/20/90 Original Implementation Ñ
- Ñ Ñ
- Ñ Ñ
- ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/
- void Install(Handle cdevStorage, long Sludge_Factor)
- {
- Handle SLUDGE_parasite;
- short rvalue;
- Handle a_trap_vector_address = 0x28;
- Handle jt_vector_address = 0x24;
-
-
- /*ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
- Ñ Ñ
- Ñ Save the values of the Jump_Trace Ñ
- Ñ a-trap exception vectors. Ñ
- Ñ Ñ
- ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/
- Set_Original_A_TRAP_Exception_Vector_Value(cdevStorage, *a_trap_vector_address);
- Set_Original_JUMP_TRACE_Exception_Vector_Value(cdevStorage, *jt_vector_address);
-
- /*ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
- Ñ Ñ
- Ñ Load the parasite resource. Ñ
- Ñ Ñ
- ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/
-
-
- SLUDGE_parasite = GetResource('NUGG',0);
-
- rvalue = ResError();
-
- if (rvalue != 0)
- DebugStr("\pGetResource Failed");
-
- DetachResource(SLUDGE_parasite);
- rvalue = ResError();
-
- if (rvalue != 0)
- DebugStr("\pDetachResource Failed");
-
-
- HLock(SLUDGE_parasite);
-
- Set_Location_Of_Parasite_Resource(cdevStorage, SLUDGE_parasite);
-
- /*ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
- Ñ Ñ
- Ñ Activate the parasite. Ñ
- Ñ Ñ
- ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/
- TRY(*SLUDGE_parasite, Sludge_Factor);
-
- }
-
-
- #include <OSUtils.h>
- void CLEAR_JUMP_TRACE_BIT();
-
-
- /*ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
- Ñ Ñ
- Ñ Identifier: remove Ñ
- Ñ ----------- Ñ
- Ñ Ñ
- Ñ Description Ñ
- Ñ ----------- Ñ
- Ñ This function makes the SLUDGE parasite inactive and removes it. Ñ
- Ñ Ñ
- Ñ History Ñ
- Ñ ------- Ñ
- Ñ Ñ
- Ñ Author Date Description Ñ
- Ñ ------------------------------------------------------------------ Ñ
- Ñ Kevin McEntee 2/20/90 Original Implementation Ñ
- Ñ Ñ
- Ñ Ñ
- ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/
- void remove(Handle cdevStorage)
- {
- Handle SLUDGE_parasite;
- Handle a_trap_vector_address = 0x28;
- Handle jt_vector_address = 0x24;
-
- CLEAR_JUMP_TRACE_BIT();
-
-
- *a_trap_vector_address = Get_Original_A_TRAP_Exception_Vector_Value(cdevStorage);
- *jt_vector_address = Get_Original_JUMP_TRACE_Exception_Vector_Value(cdevStorage);
-
- SLUDGE_parasite = Get_Location_Of_Parasite_Resource(cdevStorage);
- HUnlock(SLUDGE_parasite);
- DisposHandle(SLUDGE_parasite);
-
- }