@database @TAB 4 @WIDTH 76 @node main "Matrix Documentation" @{b}Matrix@{ub} version 1.8 31 january 2002 Chapters modified since version 1.6 documentation are marked [new]. Changes and important information are written @{BG Fill}like this@{BG Background}. Menu : @{" LICENCE " link licence} @{" Description " link descr} [new] @{" Requirements " link config} [new] @{" Installation " link instal} @{" Settings " link reglage} [new] @{" Usage " link usage} [new] @{" Software used " link zinfos} [new] @{" Author " link auteur} [new] @{" History " link histoire} [new] @{" DPMS for ECS/AGA ? " link ecsdpms} Off topic : @{" Too many crashes ? " link enforcer} Try this... [new] @endnode ===================================================================== @node licence "Matrix Licence" In this licence, the terms "the software" or "this software" refer to all the files listed in the "Distribution" section, with the exception of "GetModeID" and "GetModeID.guide". This licence applies to "the software". :) You are not allowed to install, use in any way, or distribute this software if you do not accept the terms of this licence. If you do not agree with this licence, please delete all the files to which this licence applies immediatly. @{b}Copyright@{ub} : Unless otherwise noted, all the files were made by and are copyright ©2000-2002 Olivier Fabre. One exception is that the graphics (included in the "Matrix" executable) were not entirely made by me. The major part of them come from a BeOS screen blanker, whose author took them from a Linux version, and their legal status is unknown to me. Another exception is the GetModeID program, written by Magnus Holmgren, and its documentation, whose main part was taken from the documentation of Visage. This licence does not apply to these two files. You might disassemble the program if you think you'll have fun doing this, but you are not allowed to release any program containing a large portion of my code without my written consent. Anyway, I will send you the source code of the program if you ask me (for educationnal purposes or for private use only, unless you get my written consent to use it in another way). @{b}Distribution@{ub} : This program is released as freeware. You may copy it freely as long as all the following files are included in their original, unmodified form : - Matrix - Matrix.info - Matrix_english.guide - Matrix_english.guide.info And preferably the following files too, only in their original, unmodified form : - Matrix_français.guide - Matrix_français.guide.info - GetModeID - GetModeID.guide This software must not be sold. @{b}Disclaimer@{ub} : This software is provided "as is", without any warranty of any kind. There might be bugs in the program; there might be errors in the documentation; the default settings might blow your monitor, but then it's your fault if you do not change them. In no event shall the author be held liable for any damage related to the use of this program, of any file included in the distribution, or of any information included in the documentation. Especially if you used DPMS on a monitor that did not support it... Thank you. @endnode ===================================================================== @node descr "Description" Matrix is a screen blanker with the following features: - system friendly (commodity, tested with @{BG Fill}MuForce and MuGuardianAngel@{BG Background}) - works on OCS/ECS/AGA and graphic cards (CyberGraphics & Picasso96) - handles DPMS What is DPMS ? This is a power consumption reduction system supported by most recent monitors. There are three levels of power consumption reduction: - Standby (light reduction) - Suspend (greater reduction) - Off (maximum reduction) On my monitor (AcerView 77c), the normal power consumption is 110 W. In DPMS_StandBy it falls to 15 W. In DPMS_Suspend and DPMS_Off it is only 5 W. Once in DPMS, the monitor needs some time to go back to a normal display; so it's better not to set a too short time for the DPMS delay. The display will take longer to come back when the power reduction is greater; hence the point in having several levels of DPMS. @endnode ===================================================================== @node config "Requirements" Matrix requires : - @{b}Kickstart 3.1@{ub} and @{b}Workbench 3.0@{ub}, or better @{BG Fill}(maybe you can make it work on 3.0 with IWantChunky or another WriteChunkyPixels patch on Aminet)@{BG Background} - A @{b}68020@{ub} or better, @{BG Fill}or a PPC and MorphOS@{BG Background}. @{BG Fill}(tell me if you want a 68000 exe - should be slow though)@{BG Background} - Only for DPMS : @{b}CGX@{ub} or @{b}P96@{ub} (and a monitor that handles it !) @endnode ===================================================================== @node instal "Installation" Simply drag Matrix into the WBStartup drawer to install it. MorphOS users who dual-boot should know how to dual-install ;) Then, if you wish, you can modify the tooltypes to change the default settings (select its icon then the "Icons->Information" menu). Matrix can also be run in the user-startup. You must use the "Run" command to let the Shell execution go on : Run >NIL: Matrix @endnode ===================================================================== @node reglage "Settings" Arguments are taken from the ToolTypes or the command line. They are: @{b}TimeOut@{ub} Inactivity time in seconds before the blanker starts. A TimeOut of -1 disactivates the "Matrix" animation. Min : 4 or -1 Max : 32763 (9h 6min 3s) Default : 240 (4min) Note : Yes, the animation stops when DPMS or DMA_OFF starts :) @{b}DMA_Off@{ub} Inactivity time in seconds before stopping Copper, Sprite and Bitplane DMA. The result is a black screen and a slight speed increase to CHIP RAM accesses. This option hasn't been tested a lot, and will stop the animation on any CGX screen without displaying a black screen or going to DPMS. This option is unavailable under MorphOS. Min : 4 or -1 Max : 32764 Default : -1 (no DMA stop) @{b}DPMS_StandBy@{ub} Inactivity time in seconds before "Standby" DPMS. Min : 4 or -1 Max : 32765 Default : -1 (no DPMS) @{b}DPMS_Suspend@{ub} Inactivity time in seconds before "Suspend" DPMS. Min : 4 or -1 Max : 32766 Default : -1 (no DPMS) @{b}DPMS_Off@{ub} Inactivity time in seconds before "PowerOff" DPMS. Min : 4 or -1 Max : 32767 Default : -1 (no DPMS) @{b}* NOTE WELL *@{ub} Do *NOT* use DPMS if the manual of your monitor doesn't explicitly states that it supports DPMS. That is to say : always let a '(' at the beginning of the tooltype lines containing "DPMS". Moreover, Picasso96 or Cybergraphics must be installed for DPMS to function (but I already said this). New for version 1.6 : you also have to use the "DPMS" tooltype(s) to activate DPMS (see below). @{b}* END OF NOTE WELL *@{ub} @{b}HotKey_Blank@{ub} @{b}HotKey_DMA@{ub} @{b}HotKey_StandBy@{ub} @{b}HotKey_Suspend@{ub} @{b}HotKey_PowerOff@{ub} These five tooltypes let you define hotkeys (key combinations) to start each mode of the blanker. Note that if the timeout of a mode is equal to -1, it won't be triggered anyway. An hotkey description is of the form "[] ". Examples : HotKey_StandBy=lshift esc HotKey_PowerOff=ctrl alt o Here are all the (usefull) qualifiers : lshift rshift shift (lshift or rshift) capslock caps (shift or capslock) control lalt ralt alt (lalt or ralt) lcommand (lamiga) rcommand (ramiga) numericpad And the "special" keys : space, backspace, tab, enter, return, esc, del, help, up, down, right, left, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10. @{b}NoMouseCheck@{ub} Prevents a mouse move from stopping the blanking. Can be usefull for very sensitive mice. From version 1.6 onwards, you can give a value to this tooltype. For example: NoMouseCheck=10. This means that the mouse move won't be recognised unless it is of at least 10 pixels. Min : 1 Max : 32767 (same as "NoMouseCheck" without value) Default : 2 (if the "NoMouseCheck" tooltype is not mentionned) @{b}NoJoyCheck@{ub} This tooltype tells Matrix not to check for movements in Gameport 1 (that can be a joystick, a joypad, a mouse or something else). Can be usefull for Mroocheck owners, @{BG Fill}or A4000 users without any joystick plugged in the joystick port. Try it if Matrix does not start, or stops just after opening the screen.@{BG Background} @{b}PassKeyPress@{ub} With this tooltype, a key press while the blanker is active will be passed to the window that was active before the blanker started. Without it, any key press will be "swallowed" by the blanker. In both cases, the blanker will stop, of course. This option is currently flawed : - the mouse pointer stays visible. - I think no-one uses it ;) The other ToolTypes deal with graphical aspect of the blanker: @{b}Delay@{ub} (formerly called "Speed") Time to wait between two frames of animation, in 50th of a second. @{BG Fill}Note that under MorphOS, a value of 1 will actually NOT wait at all (because WaitTOF() does nothing). Just add 1 to the desired value.@{BG Background} Min : 1 (upto 50 fps - fast Amiga needed) Max : 50 (1 fps) Default : 2 (upto 25 fps) @{b}Speed@{ub} Characters scrolling speed. Min : 1 (0.01 character per frame) Max : 5000 (50 characters per frame) Default : 100 (1 caracter per frame) @{b}SpeedChange@{ub} Possible speed variation, as a percentage of the default speed. Min : 0 (all "threads" fall at the same speed) Max : 1000 (up to 11 times faster or slower) Default : 25 (up to 1.25 times faster or slower) @{b}Density@{ub} Percentage of screen filling. Min : 0 Max : 100 Default : 40 @{b}CharWidth@{ub}/@{b}CharHeight@{ub} Zoom percentage of the characters. Min : 4 ( 1x1 pixel) Max : 100 (27x31 pixels) Default : 50 (13x15 pixels) @{b}Light@{ub} Light percentage of the characters. Min : 0 (everything is black) Max : 200 ("overexposed") Default : 100 (normal) @{b}UpsideDown@{ub} Makes characters go up if specified. @{b}ThreadsLength@{ub} Average length of the characters trails, @{BG Fill}in percentage of screen height.@{BG Background} Min : 1 Max : 32767 Default : @{BG Fill}75@{BG Background} @{b}ModeID@{ub} This tooltype lets you choose the mode of the screen opened by the blanker. @{BG Fill}If no ModeID is given, the blanker will try to open an 8 bits (or 4 under OCS/ECS/AGA) screenmode of a size determined by the Width and Height tooltypes, or like the WB.@{BG Background} The ModeID is a number that you can type in decimal, or in hexadecimal (preceding it with "0x"). For example: ModeID=123456 or ModeID=0x5100ABCD (do not use these values, they do not mean anything). To find the ModeID corresponding to the desired resolution, you can use the program "@{"GetModeID" link "GetModeID.guide/MAIN"}" (from the Visage archive), which is now distributed with Matrix, or look in the "ScreenMode" section of Scout (Visage and Scout are available on Aminet). Since version 1.6, Matrix can handle several screens at the same time (upto 5). As a consequence, there are 4 other ModeID tooltypes : @{b}ModeID2@{ub}, @{b}ModeID3@{ub}, @{b}ModeID4@{ub} and @{b}ModeID5@{ub}. For example, if the AGA output of your Amiga is plugged on a television set, and your graphic card to a monitor, you can give a PAL mode to ModeID and a CGX one to ModeID2. You can always omit giving a value to ModeID (which will lead Matrix to open on the same screen as the Workbench), while at the same time giving a value to ModeID2. @{b}Note@{ub} : if the Matrix animation doesn't show up on the OCS/ECS/AGA display, then you need to put the OCS/ECS/AGA modeid in the @{b}latest@{ub} "ModeID" tooltype, so that the OCS/ECS/AGA screen is the last to be opened. The PassKeyPress option might prevent this from working anyway... [Thanks to Simon Shead (for his tests under CGX) and to Rafo^CdBS (for P96 info)] @{BG Fill}@{b}Note 2@{ub}@{BG Background} : if a ModeID is incorrect, Matrix will exit. Run it in a shell to see the error messages. @{b}DPMS@{ub} Following the addition of multi-screen support, it has become necessary to be able to specify which monitors did support DPMS, independently. So there are now 5 new tooltypes : @{b}DPMS@{ub}, @{b}DPMS2@{ub}, @{b}DPMS3@{ub}, @{b}DPMS4@{ub} and @{b}DPMS5@{ub}. With the same example as above, if ModeID contains a PAL mode opening on a television set, you shouldn't activate DPMS on that screen. So, you will not specify the tooltype "DPMS". On the contrary, if ModeID2 contains a CGX mode opening on an energy saving capable monitor, you may specify the tooltype "DPMS2". So as to be really clear, "to not specify the tooltype 'DPMS'" means that no line in the tooltypes list contains exactly the word "DPMS" (without the quotes) and nothing more, or, if Matrix is run from the Shell, that you did not type this word on the command line. The common way to disactivate a tooltype is to surround it with parentheses, like this : "(DPMS)". @{BG Fill}@{b}Width@{ub}@{BG Background} Width of the screen in pixels. Used when no ModeID is given. Min : 0 (shouldn't work :)) Max : 65535 (neither...) Default : WB size @{BG Fill}@{b}Height@{ub}@{BG Background} Height of the screen in pixels. Used when no ModeID is given. Min : 0 (gnah) Max : 65535 (blarg) Default : WB size @{BG Fill}@{b}Colour@{ub}@{BG Background} Colour of the Matrix... You can write a decimal or hexadecimal number, like for the ModeID, but the simplest is to use hexadecimal, like this: 0xRRGGBB where RR is the amount of Red, GG the amount of Green and BB the amount of Blue. For best accuracy, you should set one of the amounts to 00 and another to FF. You can't use grey (it won't crash but it won't work either). Example : 0xff8800 will make the caracters orange. Default : green ! yes ! @{BG Fill}@{b}ColourCycle@{ub}@{BG Background} You can make the colour change gradually too. The value of this tooltype is the number of seconds needed to view all the colours. A negative value will change the cycling way. This option requires a paletted screenmode (ie 8 bits depth or less). Example : ColourCycle=60 will cycle through all the colours in one minute. Min : -32768 Max : 32767 Default : 0 (no cycling). The standard "@{b}CX_PRIORITY@{ub}" and "@{b}STARTPRI@{ub}" ToolTypes are also here. You can find their description in your Amiga manual. @endnode ===================================================================== @node usage "Usage" To run Matrix, double-click on its icon or run it in a Shell. If you run Matrix from a Shell, the parameters are taken from the command line. For example : Run >NIL: Matrix timeout=150 delay=1 (case doesn't matter) The blanker starts when you haven't : - pressed a key - moved the mouse or pressed one of its buttons - inserted a disk since a specified time. @{BG Fill}Matrix opens the animation screen like that:@{BG Background} - It uses the ModeID tooltype if present. If this value is incorrect, Matrix will exit. - Otherwise, the screen will have 8 bits depth screen under CGX/P96, or 4 bits depth under OCS/ECS/AGA. The size of the screen will be determined by the Width and Height tooltypes, if specified, or the WB size otherwise. - If all else fails, Matrix will try to clone the WB screen. If you click on "Hide" or "Show" in Exchange, this will start the blanker. To stop it, then, mouse moves are not recognised, so you need to press a key, a mouse button, or insert a disk. @{BG Fill}The easiest way to configure the blanker@{BG Background} is IMO to run it from a shell with some parameters (including "timeout=4" to start blanking ASAP), then CTRL-C it, then try other parameters... etc. Then once you have found what you want, copy these parameters into the tooltypes. Yes, I know I should write a GUI ;) @{BG Fill}If the animation is too slow, you can try several things:@{BG Background} - reduce the Delay (down to 1) - increase CharWidth and CharHeight - reduce the screen size/depth with Width/Height or ModeID - increase ThreadsLength To stop the program, three methods : 1 - run it another time 2 - within Exchange, select it in the list and clic on "Remove" 3 - send it a CTRL-C, for example with the Break command: break `status com=matrix` (this example won't work if Matrix was run from the WB) Note A: Any error message will be displayed only when Matrix was run from the Shell (without the >NIL: redirection, of course). So, if something seems to go wrong, first try to run it in a Shell to see which error message is displayed... Note B: For now, Matrix exits if it can't open its screen when it is time to blank (it can happen when almost all the RAM is used or if the ModeID is incorrect). It will first try to open a much smaller screen, though. @endnode ===================================================================== @node zinfos "Software used" The software that was used during the development of Matrix... @{b}CygnusEd 4.20@{ub} (text editor, by Bruce Dawson and Olaf Barthel) @{b}VBCC@{ub} (C compiler, by Volker Barthelmann and Frank Wille) @{b}PhxAss@{ub} (assembler/linker, by Frank Wille) @{b}dmake@{ub} (DCC's "make", by Matt Dilon) @{b}GNU make@{ub} @{b}ArtPro@{ub} (pictures and palettes converter, by Frank Pagels) @{b}ArtEffect@{ub} @{b}KingCON@{ub} (by David Larsson and a little bit Mikolaj Calusinski) @{b}Enforcer@{ub} (by Mike Sinz) @{b}Segtracker@{ub} (by Mike Sinz) @{b}WipeOut@{ub} (by Olaf Barthel) @{b}Sashimi@{ub} (by Olaf Barthel) @{b}PatchWork@{ub} (by Richard Koerber) @{b}MuForce@{ub} (by Thomas Richter) @{b}MuGuardianAngel@{ub} (by Thomas Richter) @{b}Scout@{ub} (by A. Gelhausen and R. Koerber) @{b}GetModeId@{ub} (by Magnus Holmgren) I probably have used fd2lib or fd2pragma (by Dirk Stoecker) at some point too, even if indirectly :) @endnode ===================================================================== @node auteur "L'auteur, c'est moi" Olivier Fabre off@free.fr StAn_ on IRCnet(#artbas) / ARCnet(#morphos,#diehard) http://off.free.fr/ While I'm about it, so as to fill this empty space, I would like to say "thank you" to everyone who mailed me about Matrix, sent me bug reports, ideas or remarks :) Please pardon me for not implementing everything (especially the DPMS on ECS/AGA stuff...)... @endnode ===================================================================== @node histoire "History" History (backwards) : @{BG Fill}### v1.8 (31.01.2002)@{BG Background} · Fixed graphic bug introduced in 1.7: character erasure was one pixel too big horizontally and vertically. · Changed default screen selection (when no modeid is given): now opens a 4 (under AGA) or 8 (under CGX) bits depth screen, of the same size as the WB, or of the size given by the Width and Height tooltypes. If that fails, clone the WB screen (that was the default behaviour previously). Using a lower depth screen should improve the speed (and it is necessary for the ColourCycle option to work). · Added Colour option to change the Matrix colour. [Rafo] · Added ColourCycle option to cycle through all colours of the palette, like the WB blanker does... · Changed ThreadsLength to be a percentage of the screen height (threadslength=100 means 1 thread per column in average, 50 means 2 threads, etc.). Default value 75. · Changed commodity name from "Matrix Blanker" to "MatrixBlanker" for MagicExchange usage. [DET Nicolas] · Minor fixes and improvements... @{BG Fill}### v1.7 (16.12.2001) - Web page prerelease@{BG Background} · BugFix: I was freeing a MsgPort with DeletePort() instead of DeleteMsgPort(). [Frank Wille] · BugFix: Could read upto 9 modeid and crash since the limit was 5. · Much faster under CGX3 and CGX4+FORCECHUNKY=0. [thanks to Massimo Tantignone] · Workaround for gfx bug with latest CGX (eg under MorphOS): characters are now erased with RectFill() instead of BltBitMap() (that is probably faster anyway). · Now all arguments will be set to the min/max bound instead of the default value if they are out of bounds (ie timeout=2 will be changed to 4, not 240). · Compiled with VBCC 0.8a, with optimisations turned on, for 68000/020/040 and MorphOS. · Removed all reference to ECS/AGA for the MorphOS version. · Minor changes and source cleanup. ### v1.6 (03.02.2001) · Graphics are now in 16 colors instead of 64. The difference is practically invisible, and this will enable OCS/ECS users to choose almost any screenmode. [Steven Norburn] · It is now possible not to "swallow" key presses while the blanker is active. [Feuille] · Added minimum mouse movement before detection. Default value is now 2 pixels instead of 1. [Pascal Marcelin] · Variable and possibly faster animation speed (adjustable). [AdamCa] Attention : the "Speed" tooltype has been renamed to "Delay" and there is now another "Speed" tooltype. · Ability to blank several screens simultaneously. [AdamCa] · Joystick check in Gameport 1 (optionally; might screw up with mroocheck.driver, which sux :( ). [AdamCa] · The "Matrix" animation can be disabled by choosing TimeOut=-1. · Ability to cut Copper, Sprite and BitPlane DMA (avoid if using CGX/P96). · Added hotkeys (to activate the blanker). [Thanks to SIL for the beta version bug report :)] · Other minor fixes and modifications. ### 25 october 2k, v1.5 · Bugfix : the blanker sometimes wouldn't start blanking... · Compiled with VBCC 0.7 and v44 includes (yes, I was using older stuff..). [Thanks to Henes for making me realise this ;)] · Doesn't display an error message anymore when a second instance of Matrix is run in order to kill the first one (Matrix must be run from the Shell in order to see error messages). · When the Matrix animation is not playing, the blanker waits one second between each events check instead of "Speed" * 1/50s. So it takes a bit less CPU time. · "UpsideDown" ToolType does not need a "=YES" anymore. [Thomas Chen] · CharWidth/Height zoom default is now 50%. [Thomas Chen] · Now also checks for mouse buttons when in "test" mode. [Thomas Chen] · Added more error messages. · Added BMF_DISPLAYABLE flag for the source BitMap, so that graphics are stored in VRAM with CGX too. [Henes] ### 5 october 2k, v1.4 · Added the "NoMouseCheck" option which prevents mouse moves from stopping the blanking. [request by Zapek]. ### 1 october 2k, v1.3 · The program now asks for graphics.library v40 now, instead of v39, since it uses WriteChunkyPixels() ! (before it would have crashed when run under OS3.0 I guess.. stupid me !) · Minor improvement in the blanking start via Exchange. · AmigaGuide doc. ### 08 september 2k, v1.2 · Clicking on "Show" or "Hide" in Exchange now starts the blanker, which is handy for trying new ToolTypes settings. To stop blanking, you have to press a key (mouse moves aren't taken into account). [idea by Tex :)] ### 05 september 2k, v1.1 · Correction of the problem which could lead to a green palette after stopping the DPMS on some systems. [reported by SIL and ATOMIK] · Shouldn't start blanking when the time is (re)set. ### 03 september 2k, v1.0 · Added DPMS. ### early 2000... · Working version. ### 25 december 1999 · Development started. @endnode ===================================================================== @node ecsdpms "What about DPMS for ECS..." Firstly, DPMS on OCS is impossible. It is possible on ECS and AGA, since the ECS chipset can control the video syncs, and MCP does it... I know that to start energy saving modes, the video syncs have to be stopped/started : horiz sync vert sync Power ON : ON ON StandBy : OFF ON Suspend : ON OFF Power OFF : OFF OFF I have managed to code something that will put the monitor into Suspend or Power OFF mode (I can't see the difference with my monitor), but the way to disable correctly horiz and/or vertical sync is not very clear to me at the moment. Another big problem is that I am simply not able to restore the display afterwards... :-} This implies finding the original syncs and restoring the ECS registers to their original values.. One of the problems being that these registers can't be read, so I can't store the value before changing them. The registers are : BEAMCON0, HSSTRT and HSSTOP, and maybe VSSTRT and VSSTOP... So, if you can help me on this matter, please do not hesitate to mail me ! :-] @endnode ===================================================================== @node enforcer "Kill them all!" Fed up of crashes with an unknown source ? There is something that can help you find problems : installing Enforcer (and/or other similar programs) in your startup-sequence. I'm using : · SegTracker · Enforcer · WipeOut (not permanently because it slows down the system) · PatchWork · BlowUp · Sashimi (displays the output of the other programs) But there are also : · CyberGuard (similar to Enforcer, for phase5 boards AFAIK) · Mungwall (similar to WipeOut, older, but usable with GAR and eats less CPU time) · GuardianAngelRemix (to be used with Enforcer and Mungwall) · TNT (similar to BlowUp) · MuForce (similar to Enforcer, needs MMU library) · MuGuardianAngel (needs MMU library) These programs are meant to be used only by programmers, but since many of them release bugged software, it has become usefull for the end user to install them. You can find them on the Amiga Developer CD or on Aminet. Most of the time a MMU is required, but not for all of these programs. For example, you can still use BlowUp + WipeOut. These programs detect illegal operations : · memory read/write in an illegal location (Enforcer/Cyberguard) · read/write in unallocated memory/out of bounds (Mungwall/WipeOut/GuardianAngelRemix) · bad parameters passed to an OS function (PatchWork) The aim here isn't to continue using bad programs without crashing; it is to see rapidly which software behaves incorrectly. Using some of these tools might very well make bad programs crash faster ! So, when you see that a program makes Enforcer hits (or PatchWork hits, etc.), you can stop using it to prevent crashes/problems, and inform the author, giving him the hits you got, so that he can debug his program ! Don't forget to tell him about your hardware and software configuration too, and the actions you did to find this bug. To give you an idea of how to use these tools, here are the relevant parts of my startup-sequence: @{CODE} @{BG Fill}@{b}Run >NIL: Apps:Programmation/Tools/SegTracker@{ub}@{BG Background} [...ROM and OS3.5 modules remap...] SetPatch44 QUIET NOROMUPDATE Patchs/MCP/Tools/PatchControl [...some patches...] @{b}APPS:Programmation/Tools/Sashimi >NIL: RECOVER=RAM:Sashimi.out If EXISTS RAM:Sashimi.out Echo "*N- END OF RECOVERY -*N" >>RAM:Sashimi.out EndIf@{ub} TestLMB If WARN @{b}Run <>NIL: WipeOut NAMETAG PRESIZE=128 POSTSIZE=64 NOCONSISTENCECHECK AREGCHECK STACKCHECK@{ub} EndIf @{b}RUN <>NIL: Enforcer DATESTAMP LED=0 RAWIO BUFFERSIZE=32000 AREGCHECK STACKCHECK STACKLINES=2 Run <>NIL: Sashimi >>RAM:Sashimi.out BUFK=128 NOPROMPT RUN <>NIL: PatchWork NOPERMIT MINOS=40 LEVEL=3 AREGCHECK STACKCHECK STACKLINES=2 Run <>NIL: BlowUp STACKCHECK AREGCHECK NOBANNER@{ub} StackAttack MIN=8000 ADD=4000 ;Version >NIL: ;AddBuffers >NIL: DF0: 15 FailAt 21 [...] LoadWB [...] @{b}If EXISTS RAM:Sashimi.out Type RAM:Sashimi.out >"CON:66/16/564/84/Sashimi hits during startup/ALT66/16/564/320/AUTO/CLOSE/WAIT/INACTIVE" EndIf Sashimi >NIL: OFF Run >NIL: Sashimi CONSOLE BUFK=64 NOPROMPT ASKEXIT ASKSAVE WINDOW="CON:466/16/164/84/Sashimi [Ctrl]+E=Empty [Ctrl]+F=File [Ctrl]+D=Reset console/ALT66/16/564/320/AUTO/CLOSE/WAIT/INACTIVE"@{ub} EndCLI >NIL: @{UCODE} This startup-sequence lets me : - know which programs make hits (thanks to SegTracker which is launched very early), including programs run in the startup-sequence. - display hits that occured during the startup-sequence execution, but after the WB screen has opened (because otherwise it would prevent IPrefs from changing the screen prefs..). - get hits that lead to a crash, thanks to the RECOVER option of Sashimi. Don't forget to read these programs documentations with care, though, if you don't want to be in trouble ! Including MMU.library doc if you want to use any of the Mu#? tools... PatchWork thinks some things are dangerous while they don't seem to be so. Many programs seem to bend the autodocs rules without immediate consequences... So, if you don't want to be annoyed with numerous hits (notably while using MUI apps), don't let PatchWork run permanently. On the other hand, I strongly recommend it for testing your own programs ! (along with Enforcer + WipeOut or Enforcer + Mungwall + GuardianAngelRemix, StackSnoop, EatMem or Memoration...) Hoping to see fewer bugged software in the future... ;) @endnode