@database 681c89d8-0 @master BlitzEnforcer.guide @$VER: 1.0 @remark Created with Heddley v1.1 (c) Edd Dumbill 1994 @node "Main" "Blitz Enforcer Hits" @{i}The @{ui}@{fg shine}@{bg fill}Blitz Basic@{fg text}@{bg back} @{i}Enforcer Hit Guide @{ui} @{" Introduction  " link "Intro" 0} - What's this all about? @{" Distribution  " link "Dist" 0} - What you can do with it... @{" All The Hits! " link "Hits" 0} - All the hits found so far @{" Contribution  " link "Cont" 0} - How to add more hits @endnode @node "Intro" "Introduction" @{fg shine}@{bg fill}Introduction@{fg text}@{bg back} @{b}The Blitz Basic Enforcer Hit Guide@{ub} @{i}(Started 25 July 1998 by James L Boyd) @{ui} This file is simply a list of things which cause the Enforcer tool to register "hits" when using Blitz Basic. So far,I've just listed some well-known (among regular Blitz users anyway) hits,and I've gone through a couple of the libraries trying each command (what fun ;) so this is @{i}not @{ui}a comprehensive list,though maybe it'll grow a little if others contribute. @{fg shine}@{bg fill}Enforcer@{fg text}@{bg back} is a freely available software development tool by Mike Sinz,which keeps a look out for programs accessing memory they don't have permission to access.Programs which do this are considered system-unfriendly and may even crash the system.These illegal accesses are known as "Enforcer hits". You can get Enforcer from Aminet. Hint : For ease of use if you don't know what you're doing (like me), edit the Enforcer's icon tooltypes so that the FILE tooltype reads : FILE=CON:0/0/640/100/HIT/AUTO/WAIT This will bring up any Enforcer hits in a CLI window.If you just run it in the default setup,you just get an inexplicable slowdown whenever there's a hit (remember,I don't know what I'm doing ;) @endnode @node "Dist" "Distribution" @{fg shine}@{bg fill}Distribution@{fg text}@{bg back} Feel free to spread this file wherever you like! @endnode @node "Hits" "Blitz Basic Enforcer Hits" @{fg shine}@{bg fill}Enforcer Hits in Blitz Basic@{fg text}@{bg back} NB : a) this is not a comprehensive list b) where hits are listed,they may occur more than once for each command... @{i}Miscellaneous @{ui} @{" LES Debugger v2.1 " link "Debug" 0} @{" SuperTED 2.24 Prefs " link "TED" 0} @{" ASLPathRequest$ " link "Pathreq" 0} @{" QAngle " link "Qangle" 0} @{i}From NeilsReqToolsLib : @{ui} @{" RTEZGetString " link "Getstr" 0} @{" RTEZFontRequest " link "Fontreq" 0} @{" RTLockWindow / RTUnLockWindow " link "Lock" 0} @{i}From ElmoreLibs : @{ui} @{" ForceNTSC " link "NTSC" 0} @{" ForcePAL " link "PAL" 0} AaronsIconLib (this one gets a section of its own!) @{" AaronsIconLib " link "Aarons" 0} @endnode @node "Cont" "Contribution" @{fg shine}@{bg fill}Contribution@{fg text}@{bg back} If you know of, or discover any Enforcer hits not listed in this guide, please contact me (James Boyd) at : @{fg shine}ohmygolly@hotmail.com@{fg text} Please give clear details of how to create the hit! I'll reply as soon as possible,but it's a library-based hotmail account, so it may take a couple of weeks :( Or for faster results contact Curt Esser at: @{fg shine}camge@ix.netcom.com@{fg text} @endnode @node "Debug" "LES Debugger v2.1" @{fg shine}@{bg fill}LES Debugger v2.1@{fg text}@{bg back} For a start,the Debugger itself causes TONS (!!!!!!!!!!) of hits! Don't have the debugger on when Enforcer's running (or vice-versa!) - it'll slow things RIGHT down! ("BYTE-READ" and "WORD-READ" hits all over the place!). Maybe depends on what your program's doing,but even the tiniest program causes the debugger to go wild! I'm using the LES Blitz Debugger v2.1,but a wild guess tells me it won't be the only one to cause hits! Actually,thinking about it,it's probably to do with the Debugger having to read values from your program's memory,so I suppose it can't be avoided... So probably the best way to do things if you want to use Enforcer @{i}and @{ui}Blitz is to develop your program with the Debugger ON and Enforcer OFF,then when you're confident that everything's OK,turn Enforcer ON and compile with the Debugger OFF...@{i}sigh...@{ui} @endnode @node "TED" "SuperTED 2.24 Prefs" @{fg shine}@{bg fill}SuperTED 2.24@{fg text}@{bg back} In SuperTED 2.24 (from Aminet),calling up the Prefs window causes several hits ("WORD-READ"),as does clicking on the Text and Token colour choice gadgets in this window ("WORD-READ" and "LONG-READ"). @endnode @node "Pathreq" "ASLPathRequest$" @{fg shine}@{bg fill}ASLPathRequest$@{fg text}@{bg back} Causes hits when it appears ("LONG-READ" and "BYTE READ"),and also on exit,unless Cancel was pressed ("BYTE-WRITE" and "LONG-WRITE")! @endnode @node "Getstr" "RTEZGetString" @{fg shine}@{bg fill}RTEZGetString@{fg text}@{bg back} Causes a hit if the Cancel gadget is hit,or an empty string returned. There's a little note in the reqtools Developer autodocs,which mentions this problem and how to get around it,but I'm guessing that Neil O'Rourke, author of NeilsReqToolsLib (part of Blitz 2.1) never noticed it...it can probably be worked around by using the library directly,if you know how to do that ("BYTE-WRITE")... I'd recommend the hit-free GetString$ from FuzziesReqLib,except that cuts the last letter off the string and sticks a "T" at the front! @endnode @node "Fontreq" "RTEZFontRequest" @{fg shine}@{bg fill}RTEZFontRequest@{fg text}@{bg back} Causes hits ("LONG-READ" and "BYTE-READ") when Cancel is clicked on... @endnode @node "Lock" "RTLockWindow / RTUnLockWindow" @{fg shine}@{bg fill}RTLockWindow / RTUnLockWindow@{fg text}@{bg back} Not sure about this one.Using it as detailed in the NeilsReqToolsLib docs,you get a massive Enforcer hit.The docs for the command to lock the window (RTLockWindow) say : WinLock=RTLockWindow(Window#) When you use "RTUnlockWindow 0,winlock" to unlock it,this causes "LONG-READ","WORD-READ",and "Alert !!" hits.The hits seem NOT to occur when you make winlock a Long variable,ie : WinLock.l=RTLockWindow(Window#) and @{i}then @{ui}unlock using RT@{b}Un@{ub}lockWindow 0,winlock as above.However,I used these commands in "BeatBox 2" at one point,and although I never used Enforcer at the time,Curt Esser (the other BeatBox 2 guy ;) said that he got an Enforcer hit (or was it a crash?),yet it worked without any problems on my setup... and I can't remember if I used winlock or winlock.l It looks as if I just used winlock,so maybe this command's OK,but beware - make sure you make winlock a LONG variable! And then stay paranoid ;) @endnode @node "NTSC" "ForceNTSC" @{fg shine}@{bg fill}ForceNTSC@{fg text}@{bg back} Causes "WORD-WRITE" hit. @endnode @node "PAL" "ForcePAL" @{fg shine}@{bg fill}ForcePAL@{fg text}@{bg back} Another "WORD-WRITE" hit. @endnode @node "Aarons" "AaronsIconLib" @{fg shine}@{bg fill}AaronsIconLib@{fg text}@{bg back} Wow,just about every command in this library causes an Enforcer hit if it doesn't get the info you ask for! And it's not hit-related,but check this out,from the docs : deftool$.w=IconDefTool$(icon#) First of all,we have a string which is also a word - deftool$.w ! Hmm... Then the command itself,when tokenised,is displayed as "IconDefTool tool$" So there's no $ after IconDefTool,and it doesn't want the icon number in brackets,it just wants a tool string (though how you can give it a string when this command's supposed to @{i}return @{ui}the string giving the default tool of the icon,I don't know). To finish it all off,it plain doesn't work - it seems that this command is trying to return a string,eg "C:ppmore" into a word variable! Oh,how I laughed... I think I'll be avoiding this library from now on! Use RITooltypesLib for icon-reading...though I've still to check it with Enforcer ;) @endnode @node "Qangle" "QAngle" @{fg shine}@{bg fill}QAngle@{fg text}@{bg back} Not sure about this - it was reported on the Blitz list that this MAY have an Enforcer hit,but for some reason,it won't even tokenise in my Blitz setup,so I can't test it...just be aware that if you use this command,you should test it (well,you should check your whole program,but you see what I mean ;) @endnode