home *** CD-ROM | disk | FTP | other *** search
-
- ResAnalyzer v2.2
-
- © 1992 By Silvio Umberto Zanzi
- Via Agostino Gemelli 9
- 40026 Imola (BO) - Italy
-
- IDCMP BBS (300-14400 HST)
- Imola Direct Communication Message Port
- Tel. +39/(0)542/25983
-
- FidoNet.........2:332/405
- AmigaNet.......39:102/300
- AmigaNet.......39:102/302
- NeST...........90:8002/0
- NeST...........90:8002/100
- NeST...........90:8002/101
-
-
-
- /\/\/\/\/\/\/\/\/\/\/\
- ....CopyRight Notice )
- \/\/\/\/\/\/\/\/\/\/\/
-
- ResAnalyzer is a ShareWare product, it means that you can copy and
- redistribute it freely, the only restriction is that you should send me $20 if
- you find the program useful.
-
- Comments, suggestions and bug reports are welcomed.
-
- The author makes no warranties for damages generated by a wrong use of
- ResAnalyzer 2.2.
-
- /\/\/\/\/\/\/\/\/\/\/\
- ........Introduction )
- \/\/\/\/\/\/\/\/\/\/\/
-
- ResAnalyzer is a resident modules monitor, its main purpose is to show every
- information related to them.
-
- Who tried to scan the resident modules subsystem was forced, until now, to
- use the incomplete ResModules options in generic monitors like Xoper, Exector,
- ARTM, ecc.
- With the help of ResAnalyzer it is now possible to obtain a global view of resident
- modules subsystem, catching all the necessary info in an easy, schematic and
- fast way.
-
- ResAnalyzer is a great help to everyone who develops resident modules, as a
- matter of fact it is easier to verify if your own Resident module has been
- installed and if it has the parameters that you've set.
- Users not interested in programming can verify if that strange module is the
- new virus unknown to every virus killer or if a program has "silently"
- installed Resident modules.
-
- /\/\/\/\/\/\/\/\/\/\/\
- ........Installation )
- \/\/\/\/\/\/\/\/\/\/\/
-
- ResAnalyzer doesn't require special installation procedures, you have only to
- click its icon from workbench or type its name from shell.
-
- ResAnalyzer under KickStart 1.2/1.3 does not show such a fast text, that's
- because the ROM text rendering routines are very slowly.
- In order to solve this problem you can use BlitzFonts by Hayes C. Haugen or
- FF by Charlie Heath from Microsmiths.
- BlitzFonts is in Fish Disks 60 or in any good BBS, FF is in the WorkBench 1.3
- disk.
- Using KickStart 2.04 those utilities become useless because the rendering
- routines are faster than in the older version.
-
- ResAnalyzer recognizes if you're using a NTSC system and adapts itself
- accordingly, the shell process from wich you launched ResAnalyzer is free, it
- doesn't take CPU ticks if you leave it in background and adapts itself to 80
- columns if you launch it from a 60 columns environment.
-
- ResAnalyzer works well on every Amiga model produced until now (April 1992)
- and on every operative system version equal to, or higher than, 1.2. On
- operative system 2.04 ResAnalyzer will work without any problems and will
- adapt itself according to the new desktop.
-
- I've worked hard to make this program comfortable, efficient and standard, I
- hope that ResAnalyzer will be spread worldwide.
-
- /\/\/\/\/\/\/\/\/\/\/\
- ..............Theory )
- \/\/\/\/\/\/\/\/\/\/\/
-
- The programming of Resident modules isn't very easy, the first problem is to
- find adeguate information and obtain a global vision.
- Unfortunately it isn't easy to find specific articles in tech magazines and
- Rom Kernels 1.3 are not a great help (the information is lost in various
- places over the two volumes), so the best way of learning this subject is the
- direct experimentation.
-
- There are mainly two methods to run a custom routine after the reset.
-
- 1) Loading a pointer in a Capture
- 2) Using a Resident structure
-
- The table bellow shows the methods used by some programs.
-
- Name Author Method
- ------------------------------------------------------------------
- Guardian v1.1 © Leonardo Fei 2
- Pseudo-Ops Virus Protector © Pseudo-Ops 2
- Virus Slayer © The Band 1
- Protec III © Bowie Softworks 2
- Aspro © Dr Debug 1,2
- Rom Crack © SCA 1
- RAD v1.0 © Commodore-Amiga 2
- RRAM Disk © B. Dayley & Other Guys 2
- Privilege Handler © John Veldthuis 2
- SCA virus 1
- Byte Bandit virus 1
- EDV (BGS9) virus 2
- HCS II virus 1
- Pentagon Circle virus 1
- 16 Bit Crew virus 1
- BackFlash virus 1
- WarHawk virus 1
- NorthStar 1 (anti)virus 1
- NorthStar 2 (anti)virus 1
- Phantasmumble virus 1
- Graffiti virus 1
- UltraFox virus 1
-
-
- The two methods are explained below, in the option section.
-
- /\/\/\/\/\/\/\/\/\/\/\
- .............Options )
- \/\/\/\/\/\/\/\/\/\/\/
-
- The ResAnalyzer functions are activable by a mouse click over the relevant
- gadgets or pressing the equivalents functions keys between F1 to F6.
- Pressing anytime the F10 key you can activate the iconify, to quit you can use
- the close gadget or the ESC key.
-
- Captures
- ========
- Captures are three variables in the ExecBase structure, defined as:
-
- SysBase->ColdCapture
- SysBase->CoolCapture
- SysBase->WarmCapture
-
- Those variables are scanned, according to the above sequence , in different
- Amiga startup moments.
- Usually they are set to zero, but an expert user can insert a pointer to a
- custom routine.
- In this evenience, after the reset, will be executed the user routine first,
- once finished , the system will continue the standard startup procedure.
- The pointers present in CoolCapture and WarnCapture are kept after various
- reset, ColdCapture which is resetd every time.
-
- The captures option shows these pointers and allow the user to eventually
- reset them.
-
- KickMemPtr
- ==========
- This variable, defined as SysBase->KickMemPtr, contains a pointer to the first
- RAM ResModule MemList structure.
-
- The MemList structure contains a MemEntry structure, there you can find useful
- information about the Resident memory chunk specifics and a pointer to a
- Resident structure.
- There is also a Node structure with it, so it's possible to know if there are
- other linked MemList structures.
- The system uses this list to determine which memory blocks must be protected,
- so no program will be able to use the memory you alloched for your ResModule.
- This list is kept after the reset.
-
- The ResAnalyzer option shows some useful information like the start and final
- code location and its lenght.
-
-
- KickTagPtr
- ==========
- This variable, defined as SysBase->KickTagPtr, contains an array chain.
-
- Every time you insert a new module in the system (with a Resident structure),
- a new pointer is added to the list pointed by KickTagPtr.
- In order to obtain the next chain element, you have to consider the value
- pointed by the last pointer, to scan if the bit 31 is set, and in this case
- reset it.
- The resulting value is the pointer to next element.
- This chain tells the system what the modules that an user have installed in
- memory are, and it is used for the modules launch after the reset.
-
- ResAnalyzer shows every module present in the chain.
-
-
- KickChkSum
- ==========
- This variable, defined as SysBase->KickCheckSum, is needed by the system to
- verify if, at the reset, all module codes are safe.
- This control consists of a resident structure and code checksum with a
- comparation of the value present in SysBase->KickCheckSum.
- If the values are different, the system ignores the installed modules, this
- because the modules would be corrupted by a program fault.
- This variable must be recalculated with the Exec function SumKickData() each
- time a programmer install a new Resident module.
-
- ResAnalyzer allows to reset SysBase->KickChkSum, in this way you deactivate
- every module, it's interesting that some modules can be reactivated without
- problems after several reset.
-
- ResAnalyzer checks that the SumKickData() function is not patched by other
- programs, in this case the use of this function becomes unreliable (think of a
- virus that changes the SumKickData() code)
-
-
- ResModules
- ==========
- This option shows all the SysBase->ResModules array elements present in the
- system.
- Each element is a pointer to a Resident structure.
-
- struct Resident
- {
- UWORD rt_MatchWord;
- struct Resident *rt_MatchTag;
- APTR rt_EndSkip;
- UBYTE rt_Flags;
- UBYTE rt_Version;
- UBYTE rt_Type;
- BYTE rt_Pri;
- char *rt_Name;
- char *rt_IdString;
- APTR rt_Init;
- };
-
- ResAnalyzer shows all highly significative structure parameters of the RAM
- modules (underlined by a "»»") and the ROM ones.
- Normally there are 23 modules in version 1.2, version 1.3 has got a new
- module, the private library romboot.
- rt_InitCode is a pointer to the routine code start, rt_Pri is used to sort the
- array in a high-to-low list, at reset time the highest priority module will be
- executed first, and then the lower one, and so on.
- The rt_Type describes the kind of module, it can be a library, a device, a
- resource, a task, an unknown (an unclassifiable module), etc.
- rt_IdString is a message that the programmer has written inside the Resident
- module, usually the creation date and the version.
- rt_Flags describe the ResModule modality, the flags are four:
-
- Flag K.S. minimum
- -----------------------------------------
- RTF_AUTOINIT 1.2
- RTF_COLDSTART 1.2
- RTF_AFTERDOS 2.0
- RTF_SINGLETASK 2.0
-
- The flags, introduced in KS version 1.2, specify how the module has to be
- initialized.
- If the module flag is set to RTF_COLDSTART, the system calls the InitCode()
- function, this functions calls InitResident().
- If the flag RTF_AUTOINIT is not set, InitResident() calls the code pointed by
- the rt_Init field, otherwise it's called the MakeLirary() function.
- In this case, the location pointed by rt_Init will not contain an executible
- code, but some data that MakeLibrary() will use to create a library, a device
- or a resource.
- The system scans the rt_flags field to understand if it has to call
- AddLibray(), AddDevice() or AddResource().
- The meaning of the 2.04 flags are unknown at the moment, I only know that
- RTF_AFTERDOS indicates a module with a priority lower than -100 and
- RTF_SINGLETASK indicates modules with SysBase->thisTask=0.
- The ResModule you install will be added in ResModule array only after the
- reset.
-
- In order to see the next or the previous page, you have to use the cursor
- keys.
- Pressing the P key, ResAnalyzer will redirect to PRT: the complete ResModules
- list, the Captures pointers, KickTagPtr and KickMemPtr pointers.
-
-
- Informartion
- ============
- This option shows some personal greetings and the computer status, such as the
- KickStart version, the processor configuration, the vertical blank and power
- frequency (NTSC 60Hz, PAL 50Hz) and if the ECS is present.
-
- /\/\/\/\/\/\/\/\/\/\/\
- .......Compatibility )
- \/\/\/\/\/\/\/\/\/\/\/
-
- ResAnalyzer was succesfully tested on:
-
- - Amiga 500 normal
- - Amiga 500 1Mega Chip
- - Amiga 1000 768K
- - Amiga 2000 normal
- - Amiga 2000 68030+68881
- - Amiga 3000 25MHz-100Mb
-
- - KickStart: 1.2 - 1.3 - 2.0ß - 2.0
- - Processor: 68000 - 68010 - 68030 - [68881 - 68882]
-
- /\/\/\/\/\/\/\/\/\/\/\
- ......Considerations )
- \/\/\/\/\/\/\/\/\/\/\/
-
- Everything I've exposed in this manual and I've coded in ResAnalyzer, has been
- learnt after hours of experiments and faults in a few documented Amiga
- sub-system.
- If you find that this manual or ResAnalyzer presents some error, please
- contact me via any media (the best way would be the FidoNode 2:332/405, IDCMP
- BBS where I am SysOp), I'd like to create a more complete and useful version.
-
- At last I want to thank those people whose suggestions were fundamental in
- ResAnalyzer developing:
-
- Giorgio Terzi
- Nic Wilson
- Marco Mariani
- GianMario Sartini
- Luigi Mongardi
- Luigi Callegari
- Luca Spada
- Michele Masiero
- Romano Tenca
- Giammarco Giovannelli
- Mario Mure'
- Barbara, Ylenia & Daniela
- The AMY_DEV.ITA FidoNet area
-
- I'd like to thank those people too, without whom I would not have become a
- FidoNet SysOp.
-
- Giuseppe Selvatici
- Marco Baldini
- Paolo Marchi
- Marcello Ardini
- Mario Battacchi
- Andrea Mennini
- Antonio Pasini
-
-
- A particular thank to Karl H. Riesen, the first (and the only person) that
- sent me a contribution.
- It would not be this new version without his moral support.
-
- Thankyou Karl!
-
- Final note:
- I know, my English is horrible!
-