home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format 66 / af066sub.adf / SnoopDos / SnoopDos.DOC < prev    next >
Text File  |  1994-10-05  |  235KB  |  5,398 lines

  1.  
  2. ----------------------------------------------------------------------------------
  3. MAIN
  4. ----------------------------------------------------------------------------------
  5.  
  6.              SnoopDos 3.0 -- System and application monitor
  7.  
  8.      Copyright © Eddy Carroll, September 1994. Freely distributable.
  9.  
  10. SnoopDos is a utility that allows you to monitor a variety of system
  11. operations carried out by programs on your Amiga. This includes what
  12. files a program is trying to open, what fonts, libraries, devices and
  13. environment variables it is looking for, and so on.
  14.  
  15. Click on one of the following topics for more detailed information:
  16.  
  17.   'Quick start      '   For people who hate reading documentation
  18.   'Introduction     '   An overview of how to use SnoopDos
  19.   'What's new in 3.0'   For users upgrading from SnoopDos 1.7
  20.  
  21.   'Main window      '   A guide to the main SnoopDos window
  22.   'Settings window  '   How to alter SnoopDos's global settings
  23.   'Function window  '   How to select what functions SnoopDos will monitor
  24.   'Format editor    '   How to customise the layout of the event output
  25.   'Menu options     '   A guide to the main window's menu options
  26.  
  27.   'Command index    '   A comprehensive guide to all supported commands
  28.   'Workbench startup'   How to start SnoopDos from Workbench
  29.   'CLI startup      '   How to start SnoopDos from the CLI
  30.   'ARexx support    '   How to control SnoopDos using ARexx
  31.   'Settings files   '   How to make best use of settings files
  32.  
  33.   'Distribution     '   Conditions for redistribution of SnoopDos
  34.   'History          '   Information about past and present versions
  35.   'Credits          '   Bouquets to everyone who helped
  36.   'Author           '   How to get in touch with the author
  37.  
  38. Click on the CONTENTS button at the top to return here at any time.
  39.  
  40. ----------------------------------------------------------------------------------
  41. QuickStart
  42. ----------------------------------------------------------------------------------
  43.  
  44. A QUICK GUIDE TO USING SNOOPDOS
  45.  
  46. To start SnoopDos, just double-click on the SnoopDos icon from Workbench
  47. or type "Run SnoopDos" from the CLI.
  48.  
  49. The default options have been chosen to suit most configurations. You can
  50. click on the Functions button to choose what functions are being monitored,
  51. or the Setup button to change most other settings. Also check out the menus
  52. associated with the main window.
  53.  
  54. Here are the main things you need to know:
  55.  
  56.   ·  Press HELP from inside SnoopDos to access this help file.
  57.  
  58.   ·  The headings displayed in the main window can be dragged left and
  59.      right using the mouse. Holding down shift moves all items to the
  60.      right of the current item as well.
  61.  
  62.   ·  Double-click on the header line in the main window to quickly call
  63.      up the format editor. Use this editor to change the display layout
  64.      by picking up a field with the left mouse button, dragging it to a
  65.      new position, and releasing it.
  66.  
  67.   ·  Changes made in the Function, Setup and Format Editor windows always
  68.      take effect immediately. Click Use to make the change permament, or
  69.      Undo or Cancel to restore the previous settings. You can have all three
  70.      configuration windows open simultaneously.
  71.  
  72.   ·  When you select Save Settings, SnoopDos saves the current configuration
  73.      to ENVARC:SnoopDos.prefs (the SETTINGS tooltype and CLI option allows
  74.      you to choose a different name). Type this file to see a partial list
  75.      of supported ARexx commands, tooltypes, and CLI options. If you move
  76.      this file to S:, SnoopDos will automatically use that copy instead
  77.      (this saves memory in ENV:).
  78.  
  79.   ·  If you want to monitor file operations performed by programs compiled
  80.      using Gnu C (i.e those using ixemul.library) then ensure that the
  81.      Monitor Packets option is turned on in the function window. This may
  82.      slow down your system a little, however.
  83.  
  84.   ·  The "Buffer->Copy Window to Clip" menu option lets you quickly copy
  85.      SnoopDos output into your favourite editor using the clipboard.
  86.  
  87.   ·  You can exclude any tasks you don't want to monitor by entering an
  88.      AmigaDOS pattern like "~(task1|task2|task3)" into the Match Name
  89.      gadget in the function window.
  90.  
  91.   ·  The Pause button in the main window lets you see what an application
  92.      is trying to do before it actually does it. Any task that tries to
  93.      execute a monitored function will be listed with a result of WAIT.
  94.      Click on the down-arrow scroll gadget or press Space to allow the
  95.      task to execute the function call.
  96.  
  97.   ·  For DOS device writers, the Packet Debugger option in the function
  98.      window lets you view all packets sent to a device. You'll probably
  99.      want to also turn on Monitor ROM Calls to view packets sent internally
  100.      by dos.library. You should also make the Action and Res. fields wider
  101.      to ensure you can see all pertinent information.
  102.  
  103.   ·  If you want SnoopDos to run automatically when you boot your system,
  104.      simply drag the icon to your WBStartup drawer. Ensure the icon
  105.      contains the tooltype HIDE=YES if you want SnoopDos to start up hidden
  106.      in the background.
  107.      
  108.   ·  If you want to access online help from within SnoopDos, make sure the
  109.      file SnoopDos.guide is in the same directory as SnoopDos itself, or
  110.      else copy it to the directory HELP:English.
  111.  
  112. See also: 'Contents'  'Introduction'  'What's New'  'Main window'
  113.  
  114. ----------------------------------------------------------------------------------
  115. Introduction
  116. ----------------------------------------------------------------------------------
  117.  
  118. INTRODUCTION TO SNOOPDOS
  119.  
  120. How many times have you tried to install some big application program, only
  121. to find out when you run it that it doesn't seem to work properly? Often,
  122. it's looking for some configuration file, library, environment variable, or
  123. font which you've forgotten to install.
  124.  
  125. Version 1 of SnoopDos provided a simple no-frills approach to spying on a
  126. program's activities. Since its release, other programs have appeared which
  127. perform a similar task, including DosTrace by Peter Stuer, Snoopy by Gerson
  128. Kurz, and Woodward by Tomas Rokiki.
  129.  
  130. However, good as these programs are, I felt that they made it unnecessarily
  131. difficult for the user to view the information of interest. SnoopDos 3.0
  132. aims to bring the original SnoopDos into the 90's by adding a full style
  133. guide compliant GUI and a host of powerful new features, whilst retaining
  134. the simplicity of its ancestor.
  135.  
  136. To get going with SnoopDos, simply double-click on the SnoopDos icon or
  137. type "Run SnoopDos" in a Shell window.
  138.  
  139. The first thing you'll see is the main SnoopDos window, which features a
  140. variety of buttons. At this point, SnoopDos is active, and monitoring a
  141. range of system operations. If you now run another application, you should
  142. see some lines of output displayed in the SnoopDos window. When there are
  143. too many lines to fit in the window, some will scroll off the top; you can
  144. use the scroll bar to bring them back into view.
  145.  
  146. In most cases, this is all you need to do to identify a problem. The
  147. SnoopDos window will list any files that can't be opened, fonts that can't
  148. be found, and so on, as well as all those operations that were successful.
  149.  
  150. However, you can customise SnoopDos to better suit your Amiga environment.
  151. By clicking on the Setup and Function gadgets in the main window, you can
  152. open two additional windows. The 'Settings' window lets you change various
  153. preferences settings, such as the fonts used for the SnoopDos window, while
  154. the 'Function' window lets you choose which events you want SnoopDos to
  155. display in the main window. If you're unsure of the meaning of any of the
  156. buttons, check out the Function window help for more details.
  157.  
  158. An important feature of SnoopDos is that you can choose exactly how much or
  159. how little information about events you want to see. Select "Show Format"
  160. from the Windows menu to open up the format editor. This contains the
  161. current event format which controls how the information in the main window
  162. is displayed. To change this, simply pick up fields using the left mouse
  163. button and drag them to a new position.
  164.  
  165. For example, if you want to see what time each event occurred at, simply
  166. drag the Time field from the "Available" box into the "Current Format" box.
  167. As soon as you release it, the main window updates to show the time
  168. associated with each event in the window. SnoopDos always records all
  169. possible information about an event, even if it isn't all being displayed
  170. at the moment.
  171.  
  172. You can also modify the format directly in the main window, by clicking on
  173. a column title with the mouse and dragging it to a new position. Usually,
  174. dragging a title repositions it independently of those on either side; if
  175. you hold down shift as you drag, then all the columns to the right will
  176. move as well.
  177.  
  178. If you make any changes to the default SnoopDos configuration, you may wish
  179. to save the changes so that they will take effect the next time you run it.
  180. Simply click on the Save Settings button in the main window, and they will
  181. be saved to a text file called ENVARC:SnoopDos.prefs. You can view this
  182. file with any text reader.
  183.  
  184. Now go and play with SnoopDos a bit. At any time within SnoopDos, you can
  185. press the HELP key to call up context-sensitive help from this document.
  186. After this, you might like to return and read the help pages dealing with
  187. the main window, function window, and settings window.
  188.  
  189. See also: 'Contents'  'Quick Start'  'What's New'  'Main Window'
  190.  
  191. ----------------------------------------------------------------------------------
  192. WhatsNew
  193. ----------------------------------------------------------------------------------
  194.  
  195. WHAT'S NEW IN SNOOPDOS 3.0
  196.  
  197. If you are one of the many users of SnoopDos 1.7, you will be pleased to
  198. see that SnoopDos 3.0 has a host of new features designed to make it more
  199. useful.
  200.  
  201. Alas, nothing is for free in this world. SnoopDos has grown from a lean and
  202. mean CLI-only utility into a rather large GUI-based application. Since most
  203. serious Amiga users these days have an accelerated system with plenty of
  204. memory and hard drive space, this seems like a reasonable trade off. If
  205. your Amiga has more modest capabilities, you may find one of the other
  206. SnoopDos-like utilities more suited to your system.
  207.  
  208. Now, without further ado, here's a list of the major new features in this
  209. version of SnoopDos:
  210.  
  211.   ·  A fully font-sensitive GUI lets you control all options using the
  212.      mouse or keyboard. The main window gadgets can be selectively
  213.      disabled to allow as many lines of text as possible to be displayed.
  214.  
  215.   ·  A memory buffer stores details of all function calls that scroll off
  216.      the top of the window. These can then be reviewed using the scroll bar.
  217.  
  218.   ·  Many new functions can be monitored, including Workbench tooltypes,
  219.      ARexx messages sent by any ARexx script, and a variety of new 2.04 DOS
  220.      functions.
  221.  
  222.   ·  Programs compiled with GNU C, which bypass dos.library and talk
  223.      directly to DOS devices using packet i/o, can now be monitored.
  224.  
  225.   ·  Additional information is available for each function monitored,
  226.      including the time the function was called, what program module made
  227.      the call (if 'SegTracker' is loaded), the process ID, and much more.
  228.  
  229.   ·  You can choose exactly which programs to monitor or ignore, using
  230.      a standard AmigaDOS pattern string.
  231.  
  232.   ·  For DOS device programmers, a packet debugger allows you to monitor
  233.      every packet sent to any currently mounted filesystem device.
  234.  
  235.   ·  A convenient "drag & drop" format editor allows you to easily select
  236.      exactly how much or little information you wish to see about each
  237.      event. For even greater control, you can directly adjust the width
  238.      of each column of output in the main window using the mouse.
  239.  
  240.   ·  All of the sub windows used to control various settings are modeless.
  241.      You can leave them open all the time if you like, and any changes you
  242.      make take effect immediately.
  243.  
  244.   ·  SnoopDos can now run as a commodity, continuing to monitor activity
  245.      while hidden in the background.
  246.  
  247.   ·  A new Pause option allows you to freeze any tasks being monitored by
  248.      SnoopDos, or single step through the calls they make, one at a time.
  249.  
  250.   ·  A comprehensive command language with over 100 commands lets you
  251.      control SnoopDos from the CLI, Workbench, ARexx, or script files.
  252.  
  253.   ·  SnoopDos can read an external language catalog file to allow it to
  254.      be localised for any country.
  255.  
  256.   ·  Context-sensitive AmigaGuide help is available from within the
  257.      program, both for windows and menu options.
  258.  
  259.   ·  The clipboard is fully supported, allowing you to quickly copy
  260.      SnoopDos output into your favourite editor or wordprocessor.
  261.  
  262.   ·  Function calls can now be simultaneously written to a disk file while
  263.      being displayed in the SnoopDos window.
  264.  
  265. So what are you waiting for? Go and give it a try!
  266.  
  267. See also: 'Contents'  'Quick Start'  'Introduction'  'Main Window'
  268.  
  269. ----------------------------------------------------------------------------------
  270. Workbench
  271. ----------------------------------------------------------------------------------
  272.  
  273. STARTING SNOOPDOS FROM WORKBENCH
  274.  
  275. SnoopDos can be easily started from Workbench by double-clicking on its
  276. icon, or on the icon of any settings file saved earlier. You can store any
  277. SnoopDos command as a tooltype in the icon and each command will be
  278. executed by SnoopDos when it loads.
  279.  
  280. For example, this allows you to automatically open a log file on disk each
  281. time you run SnoopDos (using the 'OpenLog' or 'AppendLog' commands). You
  282. could also automatically open the function window using the 'OpenFunction'
  283. command, or arrange that the main window always opens in a particular
  284. position using the 'MainWindowPos' command.
  285.  
  286. SnoopDos carries out the following actions when started from Workbench:
  287.  
  288.   · Checks icon tooltypes for 'Language', 'PatchRamLib' and 'Settings'
  289.     commands
  290.  
  291.   · Loads the default settings file, as defined by the Settings command.
  292.     If no name has been set, then checks PROGDIR:, ENVARC: and S: for
  293.     a file called SnoopDos.prefs and reads that instead if it exists.
  294.  
  295.   · Reads any settings files that were passed in as project icons when
  296.     SnoopDos was loaded. These files can contain any SnoopDos command,
  297.     not just settings commands.
  298.  
  299.   · Scans the tooltypes of all selected icons, starting with the program
  300.     icon, and executes any recognised commands contained therein.
  301.  
  302. After all of this, the main window is automatically opened, unless a
  303. 'Hide' or 'CX_Popup=No' command was encountered.
  304.  
  305. If SnoopDos was already running when the icon is loaded, then the commands
  306. in the settings files and tooltypes will be executed by the running version
  307. instead. In this case, the Hide and CX_Popup keywords will be ignored, and
  308. the SnoopDos window will be automatically re-opened if it was hidden. This
  309. allows you to always show the SnoopDos window by clicking on a SnoopDos
  310. icon, even if that icon contains a Hide command in its tooltypes.
  311.  
  312. See also: 'Command Index'  'Command syntax'  'Settings files'
  313.           'CLI usage'      'ARexx support'
  314.  
  315. ----------------------------------------------------------------------------------
  316. CLI
  317. ----------------------------------------------------------------------------------
  318.  
  319. STARTING SNOOPDOS FROM THE CLI
  320.  
  321. When you run SnoopDos from the CLI, it carries out the following actions:
  322.  
  323.   ·  Checks the command line for 'Language', 'PatchRamLib' and 'Settings'
  324.      options
  325.  
  326.   ·  Loads the default settings file, as defined by the Settings command.
  327.      If no name has been set, then checks PROGDIR:, ENVARC: and S: for
  328.      a file called SnoopDos.prefs and reads that instead if it exists.
  329.  
  330.   ·  Executes all other SnoopDos commands on the command line.
  331.  
  332. If SnoopDos was already running, then any commands on the command line will
  333. be executed by that version instead. For example, you could use the command
  334. SNOOPDOS OPENLOG "ram:SnoopDos.log" to make the current copy of SnoopDos
  335. open a new log file.
  336.  
  337. Typing SNOOPDOS HELP will display a summary of all the commands recognised
  338. by SnoopDos. Commands that need a parameter will be marked with an '*'.
  339.  
  340. If you intend to control SnoopDos from the CLI like this, you may want to
  341. investigate its 'ARexx' capabilities. Using the RX command to send a
  342. command to SnoopDos will usually be much quicker than waiting for the
  343. SnoopDos executable to load a second time. An alias such as the following
  344. can be useful:
  345.  
  346.     ALIAS SNOOPTELL "RX *"ADDRESS SNOOPDOS '[]'*""
  347.  
  348. This allows you to issue SnoopDos commands by simply typing SnoopTell <cmd>.
  349. If you do this, you'll need to double-up any quotes that might appear on
  350. the command line, so that SnoopTell OpenLog "ram:test file" would become
  351. SnoopTell OpenLog ""ram:testfile"".
  352.  
  353. If you accidentally forget to type "RUN SNOOPDOS" the first time you
  354. load the program, that CLI will be unavailable until SnoopDos exits. If
  355. this happens, you can tell SnoopDos to quit by typing CTRL-C inside the
  356. CLI window. This is particularly useful if you are running SnoopDos
  357. remotely via modem or over a network.
  358.  
  359. See also: 'Command Index'    'Command syntax'  'Settings files'
  360.           'Workbench usage'  'ARexx support'
  361.  
  362. ----------------------------------------------------------------------------------
  363. ARexx
  364. ----------------------------------------------------------------------------------
  365.  
  366. SNOOPDOS AREXX SUPPORT
  367.  
  368. When SnoopDos is running, it creates an ARexx port called (predictably)
  369. SNOOPDOS. This allows you to control almost every aspect of the program
  370. from within ARexx scripts.
  371.  
  372. Here's an example of a simple ARexx script that configures SnoopDos to
  373. monitor one particular function, and then captures all calls to that
  374. function in a log file.
  375.  
  376.    /* Sample ARexx script to log all calls to LoadSeg */
  377.  
  378.    /* Check if SnoopDos is running; if not, then start it */
  379.    if ~show('P', 'SNOOPDOS') then do
  380.        address command "run >nil: SnoopDos"
  381.        address command "waitforport SNOOPDOS"
  382.        end
  383.  
  384.    address SNOOPDOS                       /* Commands now go to SnoopDos  */
  385.    logformat "%t %15p %6a %37n %6o %r"    /* Install a custom log format  */
  386.    functions none                         /* Disable all functions        */
  387.    loadseg on                             /* Re-enable LoadSeg function   */
  388.    appendlog "ram:SnoopDos.txt"           /* Open log file                */
  389.    addlog "(Monitoring only LoadSeg)"     /* Add info message to log file */
  390.    logformat none                         /* Remove our custom format     */
  391.  
  392. (Even though we remove the custom log format at the end of the script, it
  393. will remain in use until the log file is closed. The next time a log file
  394. is opened, it will use the main window format instead.)
  395.  
  396. If this code is stored in a file called LoadSeg.Rexx, you can execute it
  397. by typing RX LOADSEG.
  398.  
  399. You can tell if a particular SnoopDos command succeeded or not by checking
  400. the RC variable afterwards. This will be set as follows:
  401.  
  402.     RC = 0    Command completed successfully
  403.     RC = 10   Command requires a parameter
  404.     RC = 20   Command could not be completed (parameter may be invalid)
  405.     RC = 30   Command was not recognised by SnoopDos
  406.  
  407. You can use the ARexx command SIGNAL ON ERROR to cause ARexx to stop if it
  408. encounters a SnoopDos error (usually, it will quietly ignore all errors).
  409.  
  410. If you want to get a feel for using SnoopDos commands, you can use the
  411. 'LoadSettings' command with a filename of "CON:////SnoopDos/CLOSE" to open
  412. a command window that lets you interactively enter commands and see
  413. their effect.
  414.  
  415. See also: 'Command Index'    'Command syntax'  'Settings files'
  416.           'Workbench usage'  'CLI usage'
  417.  
  418. ----------------------------------------------------------------------------------
  419. SettingsFiles
  420. ----------------------------------------------------------------------------------
  421.  
  422. SNOOPDOS SETTINGS FILES
  423.  
  424. A SnoopDos settings file is any text file which begins with the line
  425. "<SnoopDos Settings>" and contains SnoopDos commands. While settings files
  426. are usually generated automatically using the 'SaveDefSettings' command,
  427. they can also be created using any standard text editor.
  428.  
  429. In fact, the term "settings file" is slightly misleading, since such a file
  430. can contain any SnoopDos command, not just those that control program
  431. settings. For example, a settings file can carry out actions like opening a
  432. new log file, opening a particular arrangement of windows, or adding custom
  433. output to an existing log file.
  434.  
  435. The format of the file is fairly free form. There should be one command per
  436. line, and anything following a semicolon is treated as a comment. See the
  437. section on 'Command syntax' for more details.
  438.  
  439. When you run SnoopDos, it looks for a default settings file and executes
  440. all the commands it contains. You can specify the name of this file
  441. explicitly using the 'Settings' command.
  442.  
  443. If you don't specify a default filename, then SnoopDos will look in the
  444. PROGDIR:, ENVARC: and S: directories for a file called SnoopDos.prefs. If
  445. it can't find a file in any of those three directories, then it will use
  446. the name ENVARC:SnoopDos.prefs when you ask it to save default settings.
  447.  
  448. Note that this gives you some flexibility as to where you store your
  449. default settings. If you don't like the idea of the SnoopDos settings file
  450. wasting RAM by being stored in ENVARC: (and thus ENV:) then you can simply
  451. move the file to S: or the program directory instead, and SnoopDos will
  452. always use the new directory with no additional work needed on your part.
  453.  
  454. Since SnoopDos erases the old defaults file whenever you save default
  455. settings, it's not a good idea to include commands other than those written
  456. by SnoopDos itself in the defaults file -- they would get overwritten the
  457. next time you saved your settings. Instead, you could consider adding such
  458. commands as tooltypes in the SnoopDos icon.
  459.  
  460. However, there is another slightly more convoluted way to execute additional
  461. commands while SnoopDos is initialising. You can create a default settings
  462. file (e.g. ENVARC:SnoopDos.prefs) which contains something like the
  463. following:
  464.  
  465.     <SnoopDos Settings>
  466.     ;
  467.     Settings "S:SnoopDos.set"   ; This is where the defaults will be stored
  468.     LoadDefSettings             ; Now load in the defaults
  469.     ;
  470.     ;  Additional commands go below here
  471.     ;
  472.     OpenLog "ram:SnoopDos.log"  ; Let's start a new log file
  473.     FormatWindowPos=400,300     ; Ensure window position is always the same
  474.     OpenFormat                  ; Open the format window for easy access
  475.     ; etc.
  476.  
  477. As you can see, the first thing this command file does is to change the
  478. name of the default settings file. This ensures that if you click on Save
  479. Settings from within SnoopDos, the new file will be overwritten rather than
  480. this file.
  481.  
  482. Next, those settings are loaded in. (SnoopDos won't automatically load the
  483. settings unless you tell it to.)
  484.  
  485. After this, any additional commands can appear. For example, you could make
  486. SnoopDos always start up Paused or Disabled. If there are certain settings
  487. that you always want set to a particular value, overriding any changes made
  488. via Save Settings, then this is a good place to put them.
  489.  
  490. Note that while it is perfectly valid for one settings file to execute
  491. another (using the 'LoadSettings' or 'LoadDefSettings' commands) this oly
  492. works up to three levels of nesting. This prevents an infinite loop from
  493. occurring if you accidentally try and load a file from within itself.
  494.  
  495. There is one final trick you can do with settings files. If you load a
  496. settings file with a filename that corresponds to a valid console window,
  497. such as "CON:////SnoopDos/CLOSE", then SnoopDos will allow you to type in
  498. commands interactively and see their effect. See the 'LoadSettings' command
  499. for more information.
  500.  
  501. See also: 'Command Index'    'Command syntax'  'ARexx support'
  502.           'Workbench usage'  'CLI usage'
  503.  
  504. ----------------------------------------------------------------------------------
  505. Distribution
  506. ----------------------------------------------------------------------------------
  507.  
  508. SNOOPDOS DISTRIBUTION
  509.  
  510. My distribution policy for SnoopDos is simple: it may be freely distributed
  511. for non-commercial purposes, as long as all the files in the original
  512. archive are present and have not been modified in any way.
  513.  
  514. No charge for SnoopDos may be made, other than a reasonable cost to cover
  515. the media and copying time.
  516.  
  517. If you wish to include SnoopDos on a magazine cover disk, you may do so as
  518. long as you send a complimentary copy of the magazine issue in which it
  519. appears to my home address. The entire package must be included on the
  520. disk, not just the executable. Please 'contact' me in advance to ensure
  521. you have the latest version.
  522.  
  523. If you wish to supply SnoopDos as part of a commercial product, please
  524. contact me to discuss it -- I'm easy to please.
  525.  
  526. If you wish to supply SnoopDos as part of a CD-ROM compilation of freeware,
  527. you may do so as long as the disc contains at least 20 Mb of other
  528. freeware. Otherwise, contact me first please. Explicit permission is
  529. granted to distribute SnoopDos on any CD-ROM produced by Fred Fish / Amiga
  530. Library Services, and on any officially supported Aminet compilation CD-ROM.
  531.  
  532. I reserve the right to publically poke fun at anyone who fails to abide by
  533. these distribution rules, along with more severe action if appropriate.
  534.  
  535. Note: The source code for SnoopDos is available in a separate archive. You
  536. should be able to find it on Aminet in the util/moni directory, along with
  537. the main SnoopDos archive.
  538.  
  539. See also: 'Contents'  'History'  'Credits'  'Author'
  540.  
  541. ----------------------------------------------------------------------------------
  542. History
  543. ----------------------------------------------------------------------------------
  544.  
  545. SNOOPDOS HISTORY
  546.  
  547. The very first version of SnoopDos was written back in May 1990 at the
  548. suggestion of a friend. It proved popular, and was officially released
  549. to the world as Version 1.0 in September 1990.
  550.  
  551. Over the next few years, SnoopDos received a number of minor upgrades,
  552. with the final public release being V1.7 in December 1992. A further
  553. upgrade, V1.7a in May 1993, had limited circulation.
  554.  
  555. In Autumn of 1993, work began on a complete rewrite of SnoopDos. A closed
  556. user group was set up on the UK conferencing system, Cix, and an initial
  557. prototype of the GUI was constructed using Commodore's ToolMaker. This was
  558. used to obtain early feedback on the interface from my testers, and acted
  559. as the basis for the first real version.
  560.  
  561. In January 1994, I found myself unexpectedly transferred to St Paul,
  562. Minnesota as part of my job. After acquiring a second-hand A3000 (thanks
  563. Scott!), I was able to resume work on the project. During these three
  564. months, SnoopDos gained most of its functionality, along with a few neat
  565. features like the drag & drop format editor.
  566.  
  567. I returned to Ireland at the end of April, and work continued throughout
  568. the summer. Many bugs were squashed, the command language was fleshed out,
  569. refinements were made, and documentation was written. In July, the feature
  570. set was locked down, and August was spent finetuning. After almost a year,
  571. SnoopDos 3.0 was ready for release.
  572.  
  573. When you consider that the very first version of SnoopDos took less than a
  574. week to write, you have to wonder why it took so long to produce this new
  575. version. Either I've slowed down a lot, or it's a much more sophisticated
  576. program -- you'll have to decide for yourself.
  577.  
  578. A NOTE ABOUT PIRATE VERSIONS OF SNOOPDOS
  579.  
  580. You may have noticed the jump in version numbering from SnoopDos 1.7
  581. to 3.0. This is partly to co-incide with the current version of Kickstart
  582. and partly to avoid confusion with pirate copies of SnoopDos.
  583.  
  584. For reasons best known to themselves, various individuals have seen fit to
  585. take the source code for SnoopDos (always freely available) and use it to
  586. generate new, unauthorised versions which are then released as official
  587. upgrades. At least one of these versions has been found to contain a trojan
  588. horse. Two particularly widespread hacks were numbered 1.6 and 2.0; if you
  589. have either version on your system, you should delete it immediately.
  590.  
  591. One way for me to reduce the chance of this happening in future is to stop
  592. distributing source code for SnoopDos. I have no particular wish to do
  593. this; I learnt many of my programming skills from studying other people's
  594. code, on Fish disks and elsewhere, and it's nice to be able to contribute
  595. something back to the programming community. Instead, I would ask anyone
  596. out there considering such an action to put their creative talents to
  597. better use by writing their own software.
  598.  
  599. In the meantime, I recommend that you try and ensure you obtain your copy
  600. of SnoopDos from a reputable source such as Aminet or Fred Fish's regular
  601. CD-ROM. If you run a BBS, please feel free to check with me first before
  602. putting a new version online, if you have reason to suspect it may be an
  603. unauthorised copy.
  604.  
  605. All versions of SnoopDos 3.0 and above are signed using my PGP public key
  606. (see 'Author' for information on how to obtain this.) If you have PGP,
  607. you can use this digital signature to ensure that your copy has not been
  608. tampered with. Even if you don't have PGP, a missing signature is a good
  609. sign that something is wrong.
  610.  
  611. See also: 'Contents'  'Distribution'  'Credits'  'Author'
  612.  
  613. ----------------------------------------------------------------------------------
  614. Credits
  615. ----------------------------------------------------------------------------------
  616.  
  617. SNOOPDOS CREDITS
  618.  
  619. A project like SnoopDos 3.0 would not be possible without the input of
  620. many people. A big thank you to all the users of SnoopDos 1.x who sent in
  621. helpful suggestions -- these were a big incentive to write Version 3.0.
  622.  
  623. Writing this version of SnoopDos provided a good opportunity for me to
  624. learn about the new Kickstart 2.0 and 3.0 features. Along the way, I ran
  625. into many problems, and I'd like to thank the following programmers for
  626. their useful coding advice and suggestions:
  627.  
  628.   Ralph Babel, Christopher Feck, Mike Froggett, Ed Mackey,
  629.   Udo K Schuermann and Mike Sinz.
  630.  
  631. While any project of this size is unlikely to be completely bug free, there
  632. would be a great many more bugs without the help of my army of beta testers.
  633. Not only did they suffer through every variety of crash, they also made
  634. many useful suggestions for improvements:
  635.  
  636.   Dean Ashton         Derek Holdon             Charles O'Reilly
  637.   Timothy Aston       Leon Hurst               Jolyon Ralph
  638.   Dan Barrett         Paul Kelly (Ireland)     Geoffrey Reeves
  639.   Fred Botton         Paul Kelly (England)     Tommy Rolfs
  640.   Charlie Chuck       David Malone             Toby Simpson
  641.   Rick Costas         Barry McConnell          Paul Wakeford
  642.   Jonathan Evans      Markus Moenig            Richard Waspe
  643.   Tommy Gibbons       Ian Moran                Ian Wellock
  644.   Jim Hawkins         Niall Murphy             Michael Witbrock
  645.  
  646. Sincere thanks to one and all.
  647.  
  648. See also: 'Contents'  'History'  'Distribution'  'Author'
  649.  
  650. ----------------------------------------------------------------------------------
  651. Author
  652. ----------------------------------------------------------------------------------
  653.  
  654. HOW TO CONTACT THE AUTHOR
  655.  
  656. I can be contacted via Internet at:
  657.  
  658.     ecarroll@maths.tcd.ie
  659.     ecarroll@cix.compulink.co.uk
  660.  
  661. If you have any bug reports, suggestions or just general comments about
  662. SnoopDos, I would like to hear from you. If you think you could do a
  663. better job designing an icon for SnoopDos than I did (which wouldn't be
  664. hard!) then I would also like to hear from you.  
  665.  
  666. You can obtain my PGP public key by sending mail to ecarroll@maths.tcd.ie
  667. with the subject line "PGPKEY". If you have an account on Bix or Cix, you
  668. can check my online resume instead (user name ecarroll).
  669.  
  670. I can also be reached by snail mail at this address:
  671.  
  672.     Eddy Carroll
  673.     The Old Rectory
  674.     Delgany
  675.     Co. Wicklow
  676.     Ireland
  677.  
  678. I regret that due to the volume of mail received, I cannot always reply
  679. to every letter. This is further compounded by the fact that I travel
  680. quite frequently. Please use email if possible.
  681.  
  682. See also: 'Contents'  'History'  'Distribution'  'Credits'
  683.  
  684.  
  685. ----------------------------------------------------------------------------------
  686. MainWindow
  687. ----------------------------------------------------------------------------------
  688.  
  689. The main window looks like this. Click on any item for a more detailed
  690. description of its purpose.
  691.  
  692.   +-+-----------------------------------------------------------+
  693.   |X| SnoopDos 3.0 © Eddy Carroll, August 1994. 'Hotkey=<xxx>'    |
  694.   +-+-----------------------------------------------------------+
  695.   |                    'Event headings'                         #
  696.   |-------------------------------------------------------------#
  697.   |                                                             #
  698.   |                    ' Event output '                         #
  699.   |                                                             #
  700.   |-------------------------------------------------------------#
  701.   |  ' Status'     [ Monitoring system activity.................] #
  702.   |  ' Pause '   'Disable'   ' Open Log... '   '  Setup  '    A
  703.   |  ' Hide  '   ' Quit  '   'Save Settings'   'Functions'    V
  704.   +===========================================================<>+
  705.  
  706. The gadgets shown need not be displayed in the window -- you can turn them
  707. off via the Windows menu, or by using the 'HideGadgets' and 'HideStatus'
  708. commands. Even when hidden, the gadgets can still be accessed via keyboard
  709. shortcuts. All gadgets also have menu equivalents for convenience.
  710.  
  711. In addition to the underlined characters in the gadget labels, a range of
  712. other keystrokes are also recognised. See the 'Keyboard Shortcuts' section
  713. for more details.
  714.  
  715. See also: 'Function window'  'Settings window'  'Format editor'
  716.           'Menu options'     'Show'             'Hide'
  717.  
  718. ----------------------------------------------------------------------------------
  719. EventHeadings
  720. ----------------------------------------------------------------------------------
  721.  
  722. EVENT HEADINGS
  723.  
  724. This line at the top of the main window displays the headings for each
  725. of the current output fields.
  726.  
  727. While the 'Format editor' and 'Format' command allow you to change the
  728. current headings, you can also use the mouse to make small adjustments
  729. directly in the main window. This is useful if you want to see a bit more
  730. of a particular field, such as the 'Target name' field.
  731.  
  732. If you click on any heading, it is highlighted in white, and two vertical
  733. markers show the current boundaries of the output field. In addition, a
  734. short vertical line indicates the rightmost position in the current format
  735. (this is useful if you are trying to adjust the total width to fit neatly
  736. inside the current window).
  737.  
  738. While the mouse button is held down, you can move the heading left or right
  739. to adjust the position and width of the column. As you drag, you will see
  740. the other headings adjust accordingly. When you release the mouse button,
  741. the rest of the event output will be updated to reflect the new format.
  742.  
  743. If you click to the blank area at the right of a heading, then you can
  744. adjust the width of that heading, while leaving its position unchanged. If
  745. the heading title fills the whole width of the column, then you can click
  746. on the rightmost character of the title instead to achieve the same effect.
  747.  
  748. Usually, as you adjust a column, the headings to the right of the selected
  749. column remain in the same position. This keeps the overall width of the
  750. format the same, and is achieved by making one of the other columns narrower
  751. or wider, to compensate for the changes made in the selected column.
  752.  
  753. Sometimes it's convenient to be able to increase the overall width of a
  754. format -- for example, if you've just resized the main window to be wider.
  755. You can do this by holding down the SHIFT key while moving a heading. All
  756. the headings to the right of the selected heading will then move in
  757. synchronisation with it.
  758.  
  759. At any time while dragging a column, you can press the SPACE key to update
  760. the event text to match the new format. This is a little quicker than
  761. releasing the column and then clicking on it again, since it allows you to
  762. make fine adjustments while still keeping the mouse button pressed.
  763.  
  764. If you change your mind while dragging a column, you can restore the
  765. previous setting by pressing the ESC key or clicking the right mouse
  766. button. Once you release the left mouse button, the change becomes
  767. permanent. (You may find the 'Last Saved' option on the settings menu
  768. useful in this case.)
  769.  
  770. See also: 'Main window'  'Event output'  'Format editor'  'Format'
  771.  
  772. ----------------------------------------------------------------------------------
  773. EventOutput
  774. ----------------------------------------------------------------------------------
  775.  
  776. EVENT OUTPUT
  777.  
  778. A large part of the main window is given over to event output. This is
  779. where the information about each function being monitored is displayed.
  780.  
  781. The exact details displayed for each function depend on the current event
  782. 'Format', but will usually include at least the target name, action, option
  783. and result output fields.
  784.  
  785. Because of the way SnoopDos works, it is possible for several programs to
  786. start executing monitored functions simultaneously. When this occurs, you
  787. may see several events listed without any text in the 'Result' field. This
  788. is perfectly normal. As each call completes, its result field will be
  789. filled in accordingly.
  790.  
  791. Some functions which are expected to take a long time display "----" in the
  792. result field instead, to indicate that they are currently executing. These
  793. include the 'Execute', 'RunCommand' and 'System' functions.
  794.  
  795. You can use the cursor keys to move around the event output. Cursor up
  796. and down will move backwards and forwards through the event buffer, while
  797. cursor left and right will scroll the window horizontally. You can only
  798. scroll horizontally if the current event format is too wide to fit
  799. completely inside the window. To move in jumps greater than one character,
  800. hold down SHIFT or ALT while pressing the cursor key.
  801.  
  802. You can highlight any line in the event buffer by clicking on it with the
  803. mouse. The line will remain highlighted until you release the mouse button.
  804. This provides an easy way to match text in the Options and Result columns
  805. with the corresponding text in the Process Name and Target Name columns.
  806.  
  807. While the highlight is displayed, you can move the mouse up and down to
  808. select different lines. If you try and move off the top or bottom of the
  809. window, the buffer will scroll in the appropriate direction.
  810.  
  811. Note that no new output will be displayed while a line is highlighted. If
  812. you keep a line highlighted for a long time, you may find that the event
  813. information currently displayed has vanished from the buffer, and new
  814. events will start to be printed instead -- if this happens, the entire
  815. window will be automatically refreshed when you release the button.
  816.  
  817. If you use a click-to-front window utility, you may find the brief flash
  818. of a row being highlighted when you click the SnoopDos window to the front
  819. distracting. You can avoid this by configuring SnoopDos to only allow
  820. highlighting of rows when a qualifier key like SHIFT, ALT or CTRL is held
  821. down. See the 'RowQualifier' command for more details.
  822.  
  823. See also: 'Main window'   'Event headings'  'Format editor'  'Format'
  824.           'RowQualifier'  'ShowGadgets'     'ShowStatus'     'TextSpacing'
  825.  
  826. ----------------------------------------------------------------------------------
  827. StatusLine
  828. ----------------------------------------------------------------------------------
  829.  
  830. MAIN WINDOW / STATUS LINE
  831.  
  832. The SnoopDos status line can display a variety of messages, depending on
  833. what SnoopDos is currently doing. Here's a summary of the information that
  834. will appear on the status line:
  835.  
  836.   ·  when disabled, the time that Disable was selected
  837.   ·  when paused, the time that Pause was selected
  838.   ·  when logging to a disk file, the name of the file
  839.   ·  when logging to a device, the name of the device
  840.   ·  when loading a settings file, the name of the file
  841.   ·  when saving a settings file, the name of the file
  842.  
  843. If none of these is currently in progress, then SnoopDos will simply say
  844. it is monitoring system activity.
  845.  
  846. The information displayed in the status line is sufficient to allow you to
  847. remove the gadgets in the main window if you choose. This provides more
  848. room for event text to be displayed.
  849.  
  850. See also: 'HideGadgets'  'HideStatus'  'Main window'
  851.           'ShowGadgets'  'ShowStatus'
  852.  
  853. ----------------------------------------------------------------------------------
  854. MainOpenLog
  855. ----------------------------------------------------------------------------------
  856.  
  857. MAIN WINDOW / OPEN LOG
  858.  
  859. The "Open Log..." gadget in the main window is used to start a new log file.
  860. The actual gadget label will vary depending on the current 'LogMode'
  861. setting. You can change this in the 'Setup' window. The four possible
  862. settings are:
  863.  
  864.    'Open Log...'  Prompt for the new log file using the ASL file requester
  865.    'Start Log  '  Open a new log file using the current 'LogName'
  866.    'Append Log '  Add to an existing log file as defined by 'LogName'
  867.    'Serial Log '  Send log file output to a terminal on the serial port
  868.  
  869. When a log file is open, the gadget label is changed to 'Close Log'.
  870.  
  871. You can always open a new log file via the ASL file requester by choosing
  872. the 'Open log' option on the Project menu, regardless of the current label
  873. on the gadget.
  874.  
  875. See also: 'Main window'  'AppendLog'  'OpenLog'  'OpenSerialLog'
  876.  
  877. ----------------------------------------------------------------------------------
  878. MainKeys
  879. ----------------------------------------------------------------------------------
  880.  
  881. MAIN WINDOW / KEYBOARD COMMANDS
  882.  
  883. The following keyboard shortcuts are recognised in the main window:
  884.  
  885.   Cursor Left  Scrolls left one or more columns in the window
  886.  Cursor Right  Scrolls right one or more columns in the window
  887.     Cursor Up  Scrolls back one or more lines in the event buffer
  888.   Cursor Down  Scrolls forward one or more lines in the event buffer
  889.  
  890.        RETURN  Scrolls forward one line in the event buffer
  891.           TAB  Performs a 'Pause' (if necessary) and a 'SingleStep'
  892.         SPACE  Performs a 'SingleStep' while paused
  893.     SHIFT-TAB  Unconditionally cancels 'Pause' or 'Disable'
  894.  
  895.             M  Opens the 'Format editor' (like the menu shortcut)
  896.         SPACE  Redraws event text while adjusting 'Event headings'
  897.           ESC  Cancels any column drag currently in progress
  898.  
  899.        CTRL-C  Selects the 'Quit' gadget
  900.        CTRL-D  Activates the 'Disable' gadget
  901.        CTRL-E  De-activates the 'Disable' gadget
  902.        CTRL-F  Brings the main window to the front
  903.  
  904. Most gadgets also have a keyboard shortcut, indicated by an underlined
  905. letter in the gadget title.
  906.  
  907. If you press the keyboard shortcut for a button gadget, it will not take
  908. effect until you release the key. If you change your mind after pressing
  909. it, you can press ESC (with the original key still held down) and the
  910. gadget selection will then be ignored.
  911.  
  912. For many gadgets, holding down SHIFT while you type the shortcut key will
  913. produce slightly different behaviour. For example, holding down SHIFT while
  914. you type the shortcut key for the Setup gadget in the main window will
  915. close the Setup window instead of opening it.
  916.  
  917. See also: 'Main window'
  918.  
  919. ----------------------------------------------------------------------------------
  920. SettingsWindow
  921. ----------------------------------------------------------------------------------
  922.  
  923. The settings window lets you control overall settings which govern how
  924. SnoopDos operates. Click on any item for a more detailed description.
  925.  
  926.       +-------------------------------------+
  927.       | SnoopDos Settings...................|
  928.       +-------------------------------------+
  929.       | 'Hide method   '     'Hotkey     '    |
  930.       | 'Screen type   '     'Screen name'    |
  931.       | 'Log mode      '     'Log file   '    |
  932.       | 'File I/O      '     'Window font'    |
  933.       | 'Buffer size   '     'Buffer font'    |
  934.       |                                     |
  935.       | 'Buffer format           ' 'Edit'    |
  936.       | 'Logfile format          ' 'Copy'    |
  937.       |                                     |
  938.       | '  Use  '      ' Undo '   'Cancel'    |
  939.       +-------------------------------------+
  940.  
  941. See also: 'Main window'  'Function window'  'Format editor'
  942.           'OpenSetup'    'SetupWindowPos'
  943.  
  944. ----------------------------------------------------------------------------------
  945. SettingsCopy
  946. ----------------------------------------------------------------------------------
  947.  
  948. SETUP WINDOW / COPY GADGET
  949.  
  950. This gadget copies the current 'Format' string into the 'LogFormat'.
  951. Usually, the format used when sending event information to a log file
  952. is the same as that used to display the information in the main window.
  953. However, you can choose a separate format if you wish.
  954.  
  955. This allows you to design your log file format using the format editor and
  956. the main window. Once you are happy with it, you can Copy it into the
  957. LogFormat gadget, and then restore the original window format by clicking
  958. Undo in the format editor.
  959.  
  960. If you hold down the shift key while selecting the gadget, then instead of
  961. copying the current buffer format, it will clear the log format. When
  962. the log format is clear, it indicates that the current buffer format
  963. should be used when logging to a file.
  964.  
  965. See also: 'Setup window'  'Format editor'  'Format'  'LogFormat'
  966.           'WindowWidth'
  967.  
  968. ----------------------------------------------------------------------------------
  969. SettingsButtons
  970. ----------------------------------------------------------------------------------
  971.  
  972. SETUP WINDOW / GADGETS
  973.  
  974. The USE, UNDO and CANCEL gadgets in the 'Setup' window are used to control
  975. whether or not the current window settings are made permanent.
  976.  
  977. When you change a gadget in the Setup window, the change takes effect
  978. immediately. For example, if you choose a new 'HotKey', you will see
  979. the main window titlebar updating to reflect the change. Selecting Use
  980. will close the Setup window and make all such changes permanent. If you
  981. want to close the window while maintaining the current settings, then
  982. choose this option.
  983.  
  984. Selecting Undo will restore all the settings in use when you first opened
  985. the Setup window. This allows you to recover from any accidental changes
  986. you might have made.
  987.  
  988. Selecting Cancel will restore the original settings, and then close the
  989. Setup window. This will cause any changes that have been made to the
  990. settings since the window was opened to be discarded.
  991.  
  992. There are two exceptions to the earlier statement that all changes made
  993. in the Setup window take effect immediately. The first is the 'BufferSize'
  994. gadget, which controls the size of the event buffer. Since changing the
  995. buffer size causes the current buffer contents to be lost, the change
  996. doesn't take effect until you select Use. This allows you to change your
  997. mind if you alter it by mistake.
  998.  
  999. The second exception is the 'LogFormat' gadget. If a log file is
  1000. currently open when you alter it, the change will not take effect until
  1001. after the log file is closed. This avoids producing a confusing log file
  1002. with a variety of different formats.
  1003.  
  1004. See also: 'Setup window'
  1005.  
  1006. ----------------------------------------------------------------------------------
  1007. FunctionWindow
  1008. ----------------------------------------------------------------------------------
  1009.  
  1010. The SnoopDos function window allows you to choose which events are
  1011. monitored. Click on any item for a more detailed description.
  1012.  
  1013.   +--------------------------------------------------------------+
  1014.   | SnoopDos Functions...........................................|
  1015.   +--------------------------------------------------------------+
  1016.   |                             System Functions  DOS Functions  |
  1017.   |                                                              |
  1018.   |      '  System Select'    'FindPort    '      'ChangeDir '     |
  1019.   |      'AmigaDOS Select'    'FindResident'      'Delete    '     |
  1020.   |                              'FindSemaphore'      'Execute   '     |
  1021.   |  'Only show fails    '    'FindTask    '      'GetVar    '     |
  1022.   |  'Show CLI number    '    'LockScreen  '      'LoadSeg   '     |
  1023.   |  'Show full paths    '    'OpenDevice  '      'Lock      '     |
  1024.   |  'Use device names   '    'OpenFont    '      'MakeDir   '     |
  1025.   |  'Monitor packets    '    'OpenLibrary '      'MakeLink  '     |
  1026.   |  'Packet debugger    '    'OpenResource'      'Open      '     |
  1027.   |  'Monitor ROM calls  '    'ReadToolTypes'      'Rename    '     |
  1028.   |  'Ignore WBench/Shell'    'SendRexx    '      'RunCommand'     |
  1029.   |                                      'SetVar    '     |
  1030.   |      'Match name'    [......................]  'System    '     |
  1031.   |                                                              |
  1032.   |  '  Use  '                 ' Undo '                'Cancel'     |
  1033.   +--------------------------------------------------------------+
  1034.  
  1035. See also: 'Main window'   'Settings window'    'Format editor'
  1036.           'OpenFunction'  'FunctionWindowPos'
  1037.  
  1038. ----------------------------------------------------------------------------------
  1039. SelectGadgets
  1040. ----------------------------------------------------------------------------------
  1041.  
  1042. FUNCTION WINDOW / SYSTEM AND DOS SELECTORS
  1043.  
  1044. These gadgets allows you to quickly select or deselect all the functions
  1045. listed in the System or AmigaDOS column of the 'Function' window.
  1046.  
  1047. There are three possible settings. SELECTED is the usual setting, and
  1048. indicates that a mixture of functions are currently being monitored.
  1049.  
  1050. ALL and NONE indicate respectively that all or none of the functions in
  1051. each column are currently being monitored. The function checkbox gadgets
  1052. will reflect this.
  1053.  
  1054. As long as you don't click on any of the function checkboxes, SnoopDos will
  1055. remember the last SELECTED configuration, and you can then restore that
  1056. configuration by changing the selection back to SELECTED again. However,
  1057. if you change any checkbox gadget while in the ALL or NONE state, then
  1058. the state changes back to SELECTED, and SnoopDos will no longer be able
  1059. to restore the original settings.
  1060.  
  1061. This is more difficult to explain than to understand. Play with all the
  1062. gadgets and everything should become clear.
  1063.  
  1064. You can use the 'Functions' command to enable or disable groups of
  1065. functions from within a script.
  1066.  
  1067. See also: 'Function window'  'Functions'
  1068.  
  1069. ----------------------------------------------------------------------------------
  1070. FunctionButtons
  1071. ----------------------------------------------------------------------------------
  1072.  
  1073. FUNCTION WINDOW / GADGETS
  1074.  
  1075. The USE, UNDO and CANCEL gadgets in the 'Function' window are used to
  1076. control whether or not the current function settings are made permanent.
  1077.  
  1078. When you change a function gadget in the window, the change takes effect
  1079. immediately. Selecting Use will close the window and make all such changes
  1080. permanent. If you want to close the Function window while maintaining the
  1081. current function settings, then choose this option.
  1082.  
  1083. Selecting Undo will restore all the function settings in use when you first
  1084. opened the window. This allows you to recover from any accidental changes
  1085. you might have made.
  1086.  
  1087. Selecting Cancel will restore the original function settings, and then
  1088. close the window. This will cause any changes that have been made to the
  1089. settings since the window was opened to be discarded.
  1090.  
  1091. See also: 'Function window'
  1092.  
  1093. ----------------------------------------------------------------------------------
  1094. FormatEditor
  1095. ----------------------------------------------------------------------------------
  1096.  
  1097. The format editor lets you choose what information is displayed in the
  1098. main window for each monitored event. Click on any item for a more
  1099. detailed description.
  1100.  
  1101.      +------------------------------------------------+
  1102.      | SnoopDos Format Editor.........................|
  1103.      +------------------------------------------------+
  1104.      |    Available fields         Current format     |
  1105.      | +--------------------+ +---------------------+ |
  1106.      | | 'CallAddr     %c'    | | 'Count       %05u'    | |
  1107.      | | 'Date         %d'    | | 'Proc Name   %18p'    | |
  1108.      | | 'Hunk:Offset  %h'    | | 'Action      %10a'    | |
  1109.      | | 'Task ID      %i'    | | 'Target Name %27n'    | |
  1110.      | | 'Segment Name %s'    | | 'Options     %07o'    | |
  1111.      | | 'Time         %t'    | | 'Res.        %04r'    | |
  1112.      | |                    | |                     | |
  1113.      | +--------------------+ +---------------------+ |
  1114.      |                                                |
  1115.      |   'Field width' [====[]===================]    7 |
  1116.      |                                                |
  1117.      |   '  Use  '       ' Undo '          'Cancel'      |
  1118.      +------------------------------------------------+
  1119.  
  1120. The current format is listed in the righthand box while other fields not
  1121. currently in use are listed in the lefthand box. You can use the mouse
  1122. to drag fields from their current position to a new position. As you do
  1123. this, you will see the main window updating to reflect your change.
  1124.  
  1125. You can also use the cursor keys to edit the format. Cursor Up and Down
  1126. select a field to edit in the current format, and Cursor Left and Right
  1127. adjust the field width.
  1128.  
  1129. See also: 'Main window'  'Settings window'  'Function window'
  1130.           'Format'       'OpenFormat'       'FormatWindowPos'
  1131.  
  1132. ----------------------------------------------------------------------------------
  1133. Format_FieldWidth
  1134. ----------------------------------------------------------------------------------
  1135.  
  1136. FORMAT EDITOR / FIELD WIDTH SLIDER
  1137.  
  1138. The format width slider gadget allows you to adjust the width of the
  1139. currently selected format output field. As soon as you release the slider,
  1140. the main window will be updated to reflect the new width of the selected
  1141. field. The width of each event in the current format is displayed to the
  1142. right of the event name (between the '%' and the format identifying letter).
  1143.  
  1144. Only fields in the current format can have their widths adjusted. If there
  1145. is no currently selected field, then the slider is disabled.
  1146.  
  1147. See also: 'Format editor'  'Main window'  'Format'
  1148.  
  1149. ----------------------------------------------------------------------------------
  1150. FormatButtons
  1151. ----------------------------------------------------------------------------------
  1152.  
  1153. FORMAT EDITOR / GADGETS
  1154.  
  1155. The USE, UNDO and CANCEL gadgets in the 'Format' editor are used to control
  1156. whether or not the current format is installed permanently.
  1157.  
  1158. When you make changes in the format editor, you can immediately see the
  1159. effect of those changes in the main window. Selecting Use will close the
  1160. format editor and make those changes permanent. If you want to close the
  1161. format editor while maintaining the current settings, this is the option
  1162. to choose.
  1163.  
  1164. Selecting Undo will restore the format in use when you first opened the
  1165. format editor. This allows you to recover from any accidental changes
  1166. you might have made.
  1167.  
  1168. Selecting Cancel will restore the original format, and then close the format
  1169. editor. This will cause any changes that have been made to the format since
  1170. the editor was opened (including any changes made in the main window) to be
  1171. discarded.
  1172.  
  1173. See also: 'Format editor'  'Format'  'Event heading'
  1174.  
  1175. ----------------------------------------------------------------------------------
  1176. Format_Action
  1177. ----------------------------------------------------------------------------------
  1178.  
  1179. %A -- ACTION
  1180.  
  1181. The action output field is one of the most important parts of any event.
  1182. It shows what action a program is trying to carry out. The possible
  1183. actions correspond roughly to the functions listed in the 'Function'
  1184. window, but you may also see other actions listed occasionally.
  1185.  
  1186. In particular, if you have the 'PacketDebugger' turned on, you will
  1187. see many actions of the form #XXXXXX (such as #FINDOUTPUT and #COPY_DIR).
  1188. These are raw AmigaDOS packets, and of interest only to programmers.
  1189.  
  1190. Any actions prefixed with an asterisk correspond to operations carried out
  1191. using direct packet i/o, rather than dos.library function calls.  You will
  1192. only see these if you have enabled the 'MonitorPackets' option. Typically,
  1193. such calls are only made by programs compiled using GNU C.
  1194.  
  1195. See also: 'Format editor'  'Main window'  'Format'
  1196.  
  1197. ----------------------------------------------------------------------------------
  1198. Format_CallAddr
  1199. ----------------------------------------------------------------------------------
  1200.  
  1201. %C -- CALL ADDRESS
  1202.  
  1203. This output field displays the memory address from which a monitored
  1204. function was called. On its own, this is fairly meaningless. However, if
  1205. you are a programmer, you can use this information to locate the piece of
  1206. code that made the call, and see what it tries to do next.
  1207.  
  1208. The address is displayed as a 7 digit hex number since very few, if any,
  1209. Amigas have memory above $0FFFFFFF. If your Amiga happens to be the
  1210. exception, then ensure that you make this field at least 8 characters wide
  1211. to catch any wider addresses.
  1212.  
  1213. Also note that the value actually represents the address of the first
  1214. instruction after the call to the monitored function. If you want to
  1215. see the instruction that made the call, subtract 6 from this value.
  1216.  
  1217. If another program has patched a function after SnoopDos, then SnoopDos
  1218. will usually be unable to determine the correct return address -- instead,
  1219. the address of the second program's patch code will be displayed. If this
  1220. causes a problem, then you should not enable SnoopDos's monitoring of the
  1221. function in question until after the second program has been loaded.
  1222.  
  1223. See also: 'Format editor'  'Main window'  'Format'
  1224.  
  1225. ----------------------------------------------------------------------------------
  1226. Format_Date
  1227. ----------------------------------------------------------------------------------
  1228.  
  1229. %D -- DATE
  1230.  
  1231. This output field displays the date an event took place on, in the standard
  1232. AmigaDOS format DD-MMM-YY. You are unlikely to find this useful unless you
  1233. intend running SnoopDos for several days at a time.
  1234.  
  1235. See also: 'Format editor'  'Main window'  'Format'  'Time field'
  1236.  
  1237. ----------------------------------------------------------------------------------
  1238. Format_HunkOffset
  1239. ----------------------------------------------------------------------------------
  1240.  
  1241. %H -- HUNK:OFFSET
  1242.  
  1243. This output field is only of use to programmers, and then only when
  1244. 'SegTracker' is loaded. It displays the hunk and offset from where
  1245. the current function was called, in the format HH:OOOOOO. (Both the
  1246. hunk and the offset are given in hex).
  1247.  
  1248. You can use this information in conjunction with the 'Segment Name'
  1249. output field and the 'FindHit' utility to identify which line in a
  1250. program's source code was responsible for making the function call.
  1251. This can be invaluable when you are debugging your code.
  1252.  
  1253. If SegTracker is not loaded, or if it cannot identify which module
  1254. the function was called from, then this field will usually be blank.
  1255. However, if the function was called from ROM, then the offset from
  1256. the beginning of the ROM module will be displayed instead.
  1257.  
  1258. The same caveat discussed for the 'Call Address' field regarding programs
  1259. that patch functions after SnoopDos has been installed also applies here.
  1260.  
  1261. See also: 'Format editor'  'Main window'  'Format'
  1262.  
  1263. ----------------------------------------------------------------------------------
  1264. Format_TaskID
  1265. ----------------------------------------------------------------------------------
  1266.  
  1267. %I -- TASK ID
  1268.  
  1269. This output field displays the task address of the program that called the
  1270. current function. The address is displayed as a 7 digit hex number. If your
  1271. Amiga happens to have memory above $0FFFFFFF, you will need to widen this
  1272. field to allow all 8 digits to be displayed.
  1273.  
  1274. This field can be useful in identifying the process that called a function
  1275. if there are several processes running on your system with the same name.
  1276. You can use a tool such as ARTM or XOper to find out more information about
  1277. the process based on its address.
  1278.  
  1279. See also: 'Format editor'  'Main window'  'Format'
  1280.  
  1281. ----------------------------------------------------------------------------------
  1282. Format_TargetName
  1283. ----------------------------------------------------------------------------------
  1284.  
  1285. %N -- TARGET NAME
  1286.  
  1287. This output field displays the most vital piece of information associated
  1288. with the monitored function. This will vary from function to function, but
  1289. is typically the name of the requested system resource or disk file.
  1290.  
  1291. This field is unusual in that it can be displayed aligned on the left
  1292. or the right -- all the other fields are always displayed left aligned.
  1293. See the 'LeftAligned' and 'RightAligned' commands for more details.
  1294.  
  1295. See also: 'Format editor'  'Main window'  'Format'
  1296.  
  1297. ----------------------------------------------------------------------------------
  1298. Format_Options
  1299. ----------------------------------------------------------------------------------
  1300.  
  1301. %O -- OPTIONS
  1302.  
  1303. This output field displays any secondary options associated with the
  1304. item displayed in the 'TargetName' output field. This will vary from
  1305. function to function.
  1306.  
  1307. For example, with the Open() function, this will show whether the file is
  1308. being opened for reading or writing. With the RunCommand() function, it
  1309. will show the stack size of the command being run.
  1310.  
  1311. If a particular function has no secondary options, then this field will
  1312. remain blank.
  1313.  
  1314. See also: 'Format editor'  'Main window'  'Format'
  1315.  
  1316. ----------------------------------------------------------------------------------
  1317. Format_ProcessName
  1318. ----------------------------------------------------------------------------------
  1319.  
  1320. %P -- PROCESS NAME
  1321.  
  1322. This output field displays the name of the process that called the function
  1323. being monitored.
  1324.  
  1325. Note that while this indicates the program that was responsible for the
  1326. call, the program displayed may not have made the call directly. For
  1327. example, it may have called a function in an external library, and that
  1328. library may be making the call on the program's behalf. If this distinction
  1329. is important, you can use the 'Segment Name' output field to get more
  1330. precise information.
  1331.  
  1332. Sometimes you may find you have several processes running which all have
  1333. the same name. In this case, you can use the 'Task ID' output field to
  1334. distinguish between them. Alternatively, if they were all run from the CLI
  1335. instead of Workbench, you can use the 'ShowCLI' command to display the CLI
  1336. number of each process in brackets at the start of the name.
  1337.  
  1338. See also: 'Format editor'  'Main window'  'Format'
  1339.  
  1340. ----------------------------------------------------------------------------------
  1341. Format_Result
  1342. ----------------------------------------------------------------------------------
  1343.  
  1344. %R -- RESULT
  1345.  
  1346. This output field displays the result of each function call. This will
  1347. usually be either OK or Fail, depending on the outcome.
  1348.  
  1349. Some functions behave slightly differently. In the case of the 'Execute',
  1350. 'RunCommand' and 'System' functions, this field will still display Fail
  1351. if the function failed, but will return the numeric program return code if
  1352. the function succeeded. Since these functions typically take some time to
  1353. execute, the result will be shown as "----" while the command is executing.
  1354.  
  1355. If you 'Pause' SnoopDos, then each task that calls a monitored function
  1356. will be put to sleep. When this occurs, the result field displays "WAIT"
  1357. to indicate the task is no longer active. This will be replaced by the
  1358. appropriate return code when execution is resumed.
  1359.  
  1360. If you have enabled the 'PacketDebugger', then this field will not only
  1361. contain OK or Fail, it will also contain the value or values returned by
  1362. the DOS device being monitored. To see this additional information, you
  1363. will need to make the field wider than its normal 4 character width.
  1364.  
  1365. If you have been using the Packet debugger or the 'MonitorPackets' option,
  1366. you may occasionally see a result code of "Missed". This simply indicates
  1367. that SnoopDos couldn't determine the result code of a particular packet
  1368. operation, most likely because you disabled packet monitoring while the
  1369. operation was still in progress.
  1370.  
  1371. See also: 'Format editor'  'Main window'  'Format'
  1372.  
  1373. ----------------------------------------------------------------------------------
  1374. Format_SegmentName
  1375. ----------------------------------------------------------------------------------
  1376.  
  1377. %S -- SEGMENT NAME
  1378.  
  1379. This output field is only of use when 'SegTracker' is loaded. It displays
  1380. the name of the module that called the current function. It is usually
  1381. used in conjunction with the 'Hunk:Offset' field.
  1382.  
  1383. The Segment Name will often, but not always, be the same as the process
  1384. name. They can differ if a program calls a module outside its own code,
  1385. such as a ROM function or a function in an external disk library. If that
  1386. function then calls any functions monitored by SnoopDos, it will be
  1387. identified independently of the original process. This is useful if you are
  1388. trying to find out what part of the system is responsible for a particular
  1389. operation.
  1390.  
  1391. If SegTracker is not loaded, SnoopDos can still identify calls made from
  1392. within resident ROM modules. In this case, the ROM module name will be
  1393. displayed.
  1394.  
  1395. Since calculating the calling module is a relatively time consuming
  1396. process, SnoopDos only actually performs the calculation when it needs
  1397. to display the segment name on the screen or output it to the log file.
  1398. This means that if you don't have any interest in the segment name, then
  1399. SnoopDos isn't slowed down unnecessarily.
  1400.  
  1401. However, this has a side effect which can trip up the unwary. If the
  1402. module that made a function call is unloaded from memory before SnoopDos
  1403. has a chance to print the details about the functions it called, then the
  1404. module name and hunk:offset can't be calculated; a "Module not found"
  1405. message will be displayed instead. This is most likely to happen if
  1406. SnoopDos is hidden (since it won't display anything until the window is
  1407. re-opened) but it can also happen if a program exits quickly while it is
  1408. being monitored.
  1409.  
  1410. To guard against this, you can take a few simple precautions. Make sure
  1411. you add the Segment Name field to your output format before you start
  1412. monitoring.
  1413.  
  1414. Raise the priority of SnoopDos using the 'Task priority' menu option so
  1415. that it's higher than the priority of the processes you will be monitoring.
  1416. This lets SnoopDos call SegTracker before the module has a chance to unload
  1417. itself.
  1418.  
  1419. Finally, if you plan on running SnoopDos hidden in the background, keep a
  1420. log file open, even if it's only to NIL:. This will make sure that SnoopDos
  1421. always resolves segment names as soon as possible. If you have the main
  1422. window open, then this won't be necessary.
  1423.  
  1424. See also: 'Format editor'  'Main window'  'Format'
  1425.  
  1426. ----------------------------------------------------------------------------------
  1427. Format_Time
  1428. ----------------------------------------------------------------------------------
  1429.  
  1430. %T -- TIME
  1431.  
  1432. This output field provides a simple way to timestamp each function that
  1433. SnoopDos monitors. It is particularly useful if you will be running
  1434. SnoopDos unattended for long periods of time.
  1435.  
  1436. The time is displayed in the format HH:MM:SS. If you are only interested
  1437. in the hours and minutes, you can narrow the field width from 8 to 5
  1438. characters wide.
  1439.  
  1440. If SnoopDos will be running for several days, you may also want to consider
  1441. using the 'Date' output field.
  1442.  
  1443. See also: 'Format editor'  'Main window'  'Format'
  1444.  
  1445. ----------------------------------------------------------------------------------
  1446. Format_Count
  1447. ----------------------------------------------------------------------------------
  1448.  
  1449. %U -- COUNT
  1450.  
  1451. This output field simply provides a unique sequence number that identifies
  1452. the position of an event in the buffer. Events are numbered starting from
  1453. one and each new event increments the count accordingly.
  1454.  
  1455. If you are logging events to a file, this field is particularly useful
  1456. because it provides an easy way of matching up partially completed events
  1457. with the completed version which appears later on in the file. See the
  1458. 'OpenLog' command for more information.
  1459.  
  1460. See also: 'Format editor'  'Main window'  'Format'
  1461.  
  1462. ----------------------------------------------------------------------------------
  1463. SegTracker
  1464. ----------------------------------------------------------------------------------
  1465.  
  1466. SEGTRACKER AND FINDHIT
  1467.  
  1468. SegTracker and FindHit are two useful utilities by Mike Sinz that form
  1469. part of the Enforcer package. SegTracker keeps track of the memory
  1470. occupied by any module loaded from disk, while FindHit allows a hunk and
  1471. offset within a module to be mapped back to a line number in source code.
  1472.  
  1473. For best results, SegTracker should be run immediately after SetPatch in
  1474. your startup-sequence. This lets it keep track of as many programs as
  1475. possible. Running SegTracker after SnoopDos has loaded will still work,
  1476. but it will not be able to identify programs which were already running
  1477. at that time.
  1478.  
  1479. You can usually find the latest version of Enforcer on Aminet in the
  1480. /pub/aminet/dev/debug directory.
  1481.  
  1482. See also: 'Hunk:Offset'  'Segment name'
  1483.  
  1484.  
  1485. ----------------------------------------------------------------------------------
  1486. CommandIndex
  1487. ----------------------------------------------------------------------------------
  1488.  
  1489. SnoopDos supports over 100 commands which can be accessed via command
  1490. line arguments, Workbench tooltypes, settings files, or ARexx. See the
  1491. 'Command syntax' section for general information, or click on any
  1492. command in the list below for detailed information about that command.
  1493.  
  1494.  'AddLog           '  'HideGadgets      '  'Pause            '
  1495.  'AppendLog        '  'HideMethod       '  'Quit             '
  1496.  'AutoOpen         '  'HideStatus       '  'ReadToolTypes    '
  1497.  'BufferFont       '  'HotKey           '  'Rename           '
  1498.  'BufferSize       '  'IconPos          '  'RightAligned     '
  1499.  'ChangeDir        '  'IgnoreShell      '  'RowQualifier     '
  1500.  'ClearBuffer      '  'Language         '  'RunCommand       '
  1501.  'CloseFormat      '  'LeftAligned      '  'SaveBuffer       '
  1502.  'CloseFunction    '  'LoadDefSettings  '  'SaveDefSettings  '
  1503.  'CloseLog         '  'LoadSeg          '  'SaveSettings     '
  1504.  'CloseSetup       '  'LoadSettings     '  'SaveWindow       '
  1505.  'CopyBuffer       '  'Lock             '  'ScreenName       '
  1506.  'CopyWindow       '  'LockScreen       '  'ScreenType       '
  1507.  'CreateIcons      '  'LogFormat        '  'ScrollDown       '
  1508.  'CX_PopKey        '  'LogMode          '  'ScrollUp         '
  1509.  'CX_Popup         '  'LogName          '  'SendRexx         '
  1510.  'CX_Priority      '  'MainWindowPos    '  'Settings         '
  1511.  'Delete           '  'MainWindowSize   '  'SetupWindowPos   '
  1512.  'Disable          '  'MakeDir          '  'SetVar           '
  1513.  'DisableWhenHidden'  'MakeLink         '  'Show             '
  1514.  'Enable           '  'MatchName        '  'ShowCLI          '
  1515.  'Execute          '  'MonitorPackets   '  'ShowFullPaths    '
  1516.  'FlushLog         '  'MonitorROMCalls  '  'ShowGadgets      '
  1517.  'FileIOType       '  'OnlyShowFails    '  'ShowStatus       '
  1518.  'FindPort         '  'Open             '  'SingleStep       '
  1519.  'FindResident     '  'OpenDevice       '  'SimpleRefresh    '
  1520.  'FindSemaphore    '  'OpenFont         '  'SmartRefresh     '
  1521.  'FindTask         '  'OpenFormat       '  'StackLimit       '
  1522.  'Format           '  'OpenFunction     '  'System           '
  1523.  'FormatWindowPos  '  'OpenLibrary      '  'TaskPri          '
  1524.  'Functions        '  'OpenLog          '  'TextSpacing      '
  1525.  'FunctionWindowPos'  'OpenResource     '  'Unpause          '
  1526.  'GetVar           '  'OpenSerialLog    '  'UseDeviceNames   '
  1527.  'GotoLine         '  'OpenSetup        '  'WindowFont       '
  1528.  'Help             '  'PacketDebugger   '  'WindowWidth      '
  1529.  'Hide             '  'PatchRamLib      '
  1530.  
  1531. ----------------------------------------------------------------------------------
  1532. CommandSyntax
  1533. ----------------------------------------------------------------------------------
  1534.  
  1535. SNOOPDOS COMMAND SYNTAX
  1536.  
  1537. SnoopDos understands over 100 individual commands. These commands can be
  1538. executed from the CLI, as Workbench icon tooltypes, as ARexx commands, or
  1539. in SnoopDos settings files. In each case, the syntax is the same.
  1540.  
  1541. There are two broad categories of commands: those that take a parameter
  1542. and those that don't. You can get a quick summary of commands by typing
  1543. SNOOPDOS HELP in a CLI window -- this will list all the supported commands,
  1544. and those that require a parameter will be marked with an '*'.
  1545.  
  1546. If a command takes a parameter, you can specify the parameter in the
  1547. following ways. Let's use the HideMethod command as an example (note
  1548. that all commands and parameters are case insensitive):
  1549.  
  1550.     HideMethod=Iconify
  1551.     HideMethod="Iconify"
  1552.     HideMethod Iconify
  1553.     HideMethod "Iconify"
  1554.  
  1555. Which of these four variants you use will depend on personal preference,
  1556. and on whether you are executing the command from ARexx, the CLI or an
  1557. icon tooltype. However, if a command parameter contains spaces, it must
  1558. be enclosed in quotation marks.
  1559.  
  1560. Most of the commands that don't need a parameter are used to control
  1561. various program settings, such as what functions to monitor. There are
  1562. several ways to select whether you want each setting on or off. For example,
  1563. let's look at the Lock command, which controls whether or not SnoopDos
  1564. monitors the Lock() function in dos.library. All of the following will
  1565. turn on Lock monitoring:
  1566.  
  1567.     Lock
  1568.     Lock=Yes
  1569.     Lock=On
  1570.     Lock=1
  1571.  
  1572. To turn off lock monitoring, you can say:
  1573.  
  1574.     NoLock
  1575.     Lock=No
  1576.     Lock=Off
  1577.     Lock=0
  1578.  
  1579. The '=' is optional in most cases, but is required if you are executing the
  1580. command from the CLI. If you are executing the command via ARexx, it's a
  1581. good idea to leave out the '=' to prevent it confusing the ARexx command
  1582. interpreter.
  1583.  
  1584. In general, most commands have both a positive and negative version. For
  1585. example, Disable=No, NoDisable, and Enable are all equivalent. Similarly,
  1586. you can say HideGadgets=Yes or ShowGadgets=No -- they both have the same
  1587. effect.
  1588.  
  1589. If SnoopDos doesn't understand a particular command, it will usually inform
  1590. you -- exactly how depends on the method used to invoke the command.
  1591. Commands executed from the CLI produce an error message in the CLI window,
  1592. while those executed from ARexx return a result code in the RC variable.
  1593. Unrecognised commands in icon tooltypes and settings files are silently
  1594. ignored.
  1595.  
  1596. If you want to experiment with SnoopDos commands, you can use the
  1597. 'LoadSettings' command with a filename of "CON:////SnoopDos/CLOSE" to
  1598. create a window where you can type commands interactively.
  1599.  
  1600. See also: 'Command Index'  'CLI usage'  'Workbench usage'  'ARexx usage'
  1601.  
  1602. ----------------------------------------------------------------------------------
  1603. AddLog
  1604. ----------------------------------------------------------------------------------
  1605.  
  1606. Command: ADDLOG "text"
  1607.  
  1608. Example: ADDLOG "Loading BBS..."
  1609.  
  1610. This command lets you output a custom message to the current SnoopDos
  1611. log file. It can be useful if SnoopDos is monitoring a DOS or ARexx
  1612. script which generates large amounts of output, and you want to
  1613. indicate when certain parts of the script were executed in relation to
  1614. the SnoopDos output.
  1615.  
  1616. See also: 'Command Index'  'AppendLog'  'CloseLog'  'FlushLog'
  1617.           'LogFormat'      'OpenLog'
  1618.  
  1619. ----------------------------------------------------------------------------------
  1620. AppendLog
  1621. ----------------------------------------------------------------------------------
  1622.  
  1623. Command: APPENDLOG "filename"
  1624.  
  1625. Example: APPENDLOG "ram:SnoopDos.log"
  1626.  
  1627. This command opens a log file. Any output displayed in the SnoopDos
  1628. window will also be written to this file. If the file already exists,
  1629. SnoopDos will append its output to the existing contents of the file;
  1630. otherwise, a new file is created.
  1631.  
  1632. Files opened using AppendLog have an advantage over those opened with
  1633. OpenLog, in that it is possible to access the contents of the file from
  1634. another program while SnoopDos is still writing to it. This is useful if
  1635. you want to quickly review the events that have been logged so far -- you
  1636. can simply TYPE the file in a CLI window.
  1637.  
  1638. If you are doing this, you can ensure that the file contents are up to date
  1639. by selecting then unselecting the 'Pause' gadget.  This will write any
  1640. information that might still be in the file buffer to the file.
  1641.  
  1642. See the 'OpenLog' documentation for more information about how SnoopDos
  1643. outputs information to a log file.
  1644.  
  1645. See also: 'Command Index'  'AddLog'   'CloseLog'       'FlushLog'
  1646.           'LogFormat'      'OpenLog'  'OpenSerialLog'
  1647.  
  1648. ----------------------------------------------------------------------------------
  1649. AutoOpen
  1650. ----------------------------------------------------------------------------------
  1651.  
  1652. Command: AUTOOPEN
  1653.          NOAUTOOPEN
  1654.  
  1655. This command enables or disables SnoopDos's AutoOpen setting. This
  1656. setting can also be controlled via an option on the Windows menu.
  1657.  
  1658. When AutoOpen is enabled, SnoopDos will automatically open its window
  1659. whenever something happens which proces output in the window. This is
  1660. useful if you have configured SnoopDos to only show one or two event
  1661. types, since it lets you run SnoopDos in the background and have it pop
  1662. up as soon as those events happen.
  1663.  
  1664. This command is automatically written to the settings file when you
  1665. save settings.
  1666.  
  1667. See also: 'Command Index'  'MatchName'
  1668.  
  1669. ----------------------------------------------------------------------------------
  1670. BufferFont
  1671. ----------------------------------------------------------------------------------
  1672.  
  1673. Command: BUFFERFONT "fontname.size"
  1674.  
  1675. Example: BUFFERFONT "courier.13"
  1676.  
  1677. This command selects the font used by SnoopDos when displaying events in
  1678. the main window. You can also change the font by using the font requester
  1679. accessible through the 'Settings' window.
  1680.  
  1681. The font selected must be a non-proportional font, and you must give a size.
  1682.  
  1683. This command is automatically written to the settings file when you
  1684. save settings.
  1685.  
  1686. See also: 'Command Index'  'WindowFont'
  1687.  
  1688. ----------------------------------------------------------------------------------
  1689. BufferSize
  1690. ----------------------------------------------------------------------------------
  1691.  
  1692. Command: BUFFERSIZE <size>
  1693.  
  1694. Example: BUFFERSIZE 32
  1695.  
  1696. This command changes the size of the buffer SnoopDos uses to record
  1697. information about events. You can also change the buffer size using
  1698. the Buffer Size gadget in the 'Settings' window.
  1699.  
  1700. The buffer size is given in kilobytes. As a very rough guide, each
  1701. event occupies about 100 bytes of memory, so you can store about 10
  1702. events per kilobyte. The actual size of each event varies depending on
  1703. the length of the file and process names, and several other factors.
  1704.  
  1705. Note that changing this setting in the 'Settings' window only takes
  1706. effect when you select Use; this is in contrast to most of the other
  1707. gadgets which take effect as soon as you change them. This is because
  1708. the SnoopDos buffer is cleared when you change its size, and so the
  1709. action is left until the last possible moment.
  1710.  
  1711. If there is not enough memory available for the buffer size you request,
  1712. SnoopDos will allocate as large a buffer as possible using the available
  1713. memory. Note that SnoopDos requires contiguous memory for its buffer,
  1714. so if you have been running many applications before loading SnoopDos,
  1715. you may find less memory is available then expected.
  1716.  
  1717. This command is automatically written to the settings file when you
  1718. save settings.
  1719.  
  1720. See also: 'Command Index'  'ClearBuffer'
  1721.  
  1722. ----------------------------------------------------------------------------------
  1723. ChangeDir
  1724. ----------------------------------------------------------------------------------
  1725.  
  1726. Command: CHANGEDIR
  1727.          NOCHANGEDIR
  1728.  
  1729. This command enables or disables monitoring of the CurrentDir()
  1730. dos.library function. It is also available as a gadget in the
  1731. 'Function' window.
  1732.  
  1733. Programs call the CurrentDir() function when they want to change their
  1734. working directory to somewhere else. Files opened by the program are
  1735. then assumed to be in this directory if a pathname isn't explicitly
  1736. specified. This can sometimes show you where a program expects to
  1737. find certain files.
  1738.  
  1739. This command is automatically written to the settings file when you
  1740. save settings.
  1741.  
  1742. See also: 'Command Index'
  1743.  
  1744. ----------------------------------------------------------------------------------
  1745. ClearBuffer
  1746. ----------------------------------------------------------------------------------
  1747.  
  1748. Command: CLEARBUFFER
  1749.  
  1750. This command erases the contents of SnoopDos's event buffer. All events
  1751. which occur from this point on are numbered starting from one again. If
  1752. you are about to start monitoring a new program, this is a convenient
  1753. way to ensure that you don't get the new output mixed up with output
  1754. from earlier programs.
  1755.  
  1756. This option is also available as an item on the 'Buffer' menu.
  1757.  
  1758. See also: 'Command Index'  'BufferSize'
  1759.  
  1760. ----------------------------------------------------------------------------------
  1761. CloseFormat
  1762. ----------------------------------------------------------------------------------
  1763.  
  1764. Command: CLOSEFORMAT
  1765.  
  1766. This command closes the 'Format editor' if it happened to be open. The
  1767. current position of the window on the screen is remembered so that it can
  1768. re-open in the same position next time.
  1769.  
  1770. You can also close the format window by holding down the shift key while
  1771. selecting the 'Show format' item on the Windows menu, or while double-
  1772. clicking on the header line in the main window.
  1773.  
  1774. Yet another way to close the format window is to hold down the shift key
  1775. while selecting the "Edit..." gadget in the 'Setup' window.
  1776.  
  1777. See also: 'Command Index'  'OpenFormat'  'FormatWindowPos'
  1778.  
  1779. ----------------------------------------------------------------------------------
  1780. CloseFunction
  1781. ----------------------------------------------------------------------------------
  1782.  
  1783. Command: CLOSEFUNCTION
  1784.  
  1785. This command closes the 'Function window' if it happened to be open. The
  1786. current position of the window on the screen is remembered so that it can
  1787. re-open in the same position next time.
  1788.  
  1789. You can also close the function window by holding down the shift key while
  1790. selecting the 'Show functions' item on the Windows menu, or while clicking
  1791. on the Function gadget in the main window.
  1792.  
  1793. See also: 'Command Index'  'OpenFunction'  'FunctionWindowPos'
  1794.  
  1795. ----------------------------------------------------------------------------------
  1796. CloseLog
  1797. ----------------------------------------------------------------------------------
  1798.  
  1799. Command: CLOSELOG
  1800.  
  1801. This command closes any currently open log file. It is available as an
  1802. option on the Project menu, and also as a gadget in the main window (it
  1803. replaces the 'Open Log' button while a log file is open).
  1804.  
  1805. See also: 'Command Index'  'AddLog'   'AppendLog'  'FlushLog'
  1806.           'LogFormat'      'OpenLog'
  1807.  
  1808. ----------------------------------------------------------------------------------
  1809. CloseSetup
  1810. ----------------------------------------------------------------------------------
  1811.  
  1812. Command: CLOSESETUP
  1813.  
  1814. This command closes the 'Setup window' if it happened to be open. The
  1815. current position of the window on the screen is remembered so that it can
  1816. re-open in the same position next time.
  1817.  
  1818. You can also close the setup window by holding down the shift key while
  1819. selecting the 'Show setup.' item on the Windows menu, or while clicking
  1820. on the Setup gadget in the main window.
  1821.  
  1822. See also: 'Command Index'  'OpenSetup'  'SetupWindowPos'
  1823.  
  1824. ----------------------------------------------------------------------------------
  1825. CopyBuffer
  1826. ----------------------------------------------------------------------------------
  1827.  
  1828. Command: COPYBUFFER
  1829.  
  1830. This command copies the entire contents of the SnoopDos event buffer to
  1831. the system clipboard, allowing you to easily paste it into another
  1832. application such as a word processor or text editor. It can also be
  1833. accessed as an item on the Buffer menu.
  1834.  
  1835. The data will be formatted according to the current buffer format. Since
  1836. this can potentially generate a large amount of text, you may prefer to
  1837. use the CopyWindow command instead, which only copies that data currently
  1838. displayed in the main window.
  1839.  
  1840. See also: 'Command Index'  'CopyWindow'  'SaveBuffer'  'SaveWindow'
  1841.  
  1842. ----------------------------------------------------------------------------------
  1843. CopyWindow
  1844. ----------------------------------------------------------------------------------
  1845.  
  1846. Command: COPYWINDOW
  1847.  
  1848. This command copies the contents of the main window to the system
  1849. clipboard, allowing you to easily paste it into another application
  1850. such as a text editor or word processor. It is also available as an
  1851. item on tbe Buffer menu.
  1852.  
  1853. If the current buffer format is too wide to fit completely in the main
  1854. window, only that portion which is currently displayed will be copied.
  1855. If this doesn't include enough information, you can use the CopyBuffer
  1856. command instead and then delete any extra lines that you don't need.
  1857.  
  1858. See also: 'Command Index'  'CopyBuffer'  'SaveBuffer'  'SaveWindow'
  1859.  
  1860. ----------------------------------------------------------------------------------
  1861. CreateIcons
  1862. ----------------------------------------------------------------------------------
  1863.  
  1864. Command: CREATEICONS
  1865.          NOCREATEICONS
  1866.  
  1867. This command controls whether or not SnoopDos should create an icon when
  1868. it saves a settings file. You can find a corresponding menu option to
  1869. control this on the Settings menu.
  1870.  
  1871. Note that no icon is saved for default settings files, only for settings
  1872. files that are saved using the 'SaveSettings' command. If an icon
  1873. is created for a settings file, then the settings in that file can be
  1874. loaded at any time by double-clicking the icon.
  1875.  
  1876. When SnoopDos writes out icons, it tries to use the same image as that
  1877. used by the SnoopDos program icon. If it couldn't locate a program icon,
  1878. it uses a simple built-in icon instead.
  1879.  
  1880. This command is automatically written to the settings file when you
  1881. save settings.
  1882.  
  1883. See also: 'Command Index'  'SaveDefSettings'  'SaveSettings'
  1884.  
  1885. ----------------------------------------------------------------------------------
  1886. CX_PopKey
  1887. ----------------------------------------------------------------------------------
  1888.  
  1889. Command: CX_POPKEY "key description"
  1890.  
  1891. Example: CX_POPKEY "ctrl alt d"
  1892.  
  1893. This command allows you to select what key sequence is used to open the
  1894. SnoopDos main window when it is hidden. This corresponds to the Hotkey
  1895. gadget in the 'Settings' window. It is a synonym for the 'HotKey' command.
  1896.  
  1897. Any standard commodities key description can be given. You can always
  1898. tell which key sequence is currently in use by looking at the titlebar
  1899. of the main window. If you enter an incorrect description, then the
  1900. titlebar will display "<invalid>".
  1901.  
  1902. When you have defined a hotkey, SnoopDos can be called up at any time by
  1903. pressing that key sequence. If the main window was already open, it will
  1904. be brought to the front and activated. If it was open, but on a different
  1905. screen, it will be re-opened on the current screen (as selected using the
  1906. 'ScreenType' command).
  1907.  
  1908. See also: 'Command Index'  'CX_Popup'  'CX_Priority'  'HotKey'
  1909.  
  1910. ----------------------------------------------------------------------------------
  1911. CX_Popup
  1912. ----------------------------------------------------------------------------------
  1913.  
  1914. Command: CX_POPUP=YES
  1915.          CX_POPUP=NO
  1916.  
  1917. This command controls whether or not SnoopDos should open its window when
  1918. you run it. If you give the command while SnoopDos is already running, then
  1919. the window will be opened or closed accordingly.
  1920.  
  1921. As a special case, if you run SnoopDos from an icon which contains the
  1922. tooltype CX_POPUP=NO, it will only have an effect the first time SnoopDos
  1923. is run. If you run it again while SnoopDos is hidden the background, then
  1924. the main window will be automatically opened, overriding this tooltype.
  1925.  
  1926. This ensures that a hidden SnoopDos window can always be re-opened by
  1927. double-clicking on an icon, even if the icon contains a tooltype of
  1928. CX_POPUP=NO.
  1929.  
  1930. This command is identical to the 'Show' and 'Hide' commands. It is
  1931. included for compatibility with other commodities.
  1932.  
  1933. See also: 'Command Index'  'CX_PopKey'  'CX_Priority'
  1934.  
  1935. ----------------------------------------------------------------------------------
  1936. CX_Priority
  1937. ----------------------------------------------------------------------------------
  1938.  
  1939. Command: CX_PRIORITY=n
  1940.  
  1941. Example: CX_PRIORITY=5
  1942.  
  1943. This command is used to control the priority of the hotkey used to call
  1944. up the SnoopDos window when SnoopDos is running as a commodity.
  1945.  
  1946. Most people will never need to change this from its default value
  1947. of zero. However, occasionally you may find that another commodity
  1948. is intercepting several keystrokes, one of which is the SnoopDos key.
  1949. By increasing the value of CX_Priority, you can ensure that SnoopDos
  1950. gets precedence.
  1951.  
  1952. Alternatively, by setting CX_Priority to a negative value, you could
  1953. ensure that the other application gets priority.
  1954.  
  1955. See also: 'Command Index'  'CX_PopKey'  'CX_Popup'
  1956.  
  1957. ----------------------------------------------------------------------------------
  1958. Delete
  1959. ----------------------------------------------------------------------------------
  1960.  
  1961. Command: DELETE
  1962.          NODELETE
  1963.  
  1964. This command enables or disables monitoring of the DeleteFile()
  1965. dos.library function. It is also available as a gadget in the
  1966. 'Function' window.
  1967.  
  1968. The DeleteFile() function is used to delete a file from disk. Programs
  1969. often delete temporary files when they no longer need them. If a file
  1970. seems to constantly vanish, and you can't figure out why, monitoring
  1971. DeleteFile() may show you which program is responsible.
  1972.  
  1973. SnoopDos automatically writes this command to the settings file when
  1974. you save settings.
  1975.  
  1976. See also: 'Command Index'
  1977.  
  1978. ----------------------------------------------------------------------------------
  1979. Disable
  1980. ----------------------------------------------------------------------------------
  1981.  
  1982. Command: DISABLE
  1983.  
  1984. This command provides a simple way to completely disable SnoopDos
  1985. while still leaving it ready for action in the future. It corresponds
  1986. to the Disable gadget in the main window and the Disable option on
  1987. the Project menu. In addition, CTRL-D is recognised as a keyboard
  1988. shortcut for Disable, for SnoopDos 1.x compatibility. This works even
  1989. when sent via an external log device such as CON: or AUX:.
  1990.  
  1991. When SnoopDos is disabled, it removes all its system patches and enters a
  1992. dormant state where it has no effect on system performance. If a log file
  1993. is open, then any outstanding buffered output is written to the file, along
  1994. with a message indicating what time SnoopDos was disabled at. (If flushing
  1995. the output file is all you want to do, the 'FlushLog' command is an
  1996. easier way to achieve this.)
  1997.  
  1998. See also: 'Command Index'  'DisableWhenHidden'  'Enable'  'Pause'
  1999.  
  2000. ----------------------------------------------------------------------------------
  2001. DisableWhenHidden
  2002. ----------------------------------------------------------------------------------
  2003.  
  2004. Command: DISABLEWHENHIDDEN
  2005.          NODISABLEWHENHIDDEN
  2006.  
  2007. This command controls whether or not SnoopDos continues to monitor system
  2008. activity when it is running in the background as a commodity. There is a
  2009. corresponding menu option in the Windows menu.
  2010.  
  2011. If DisableWhenHidden is set, then SnoopDos automatically disables monitoring
  2012. when it is hidden (using the 'Hide' command). When the SnoopDos window is
  2013. re-opened, the previous monitoring state is restored, unless monitoring was
  2014. re-enabled using the 'Enable' command while SnoopDos was hidden -- in that
  2015. case, no change is made.
  2016.  
  2017. SnoopDos automatically writes this command to the settings file when
  2018. you save settings.
  2019.  
  2020. See also: 'Command Index'  'Disable'  'Enable'  'Pause'
  2021.  
  2022. ----------------------------------------------------------------------------------
  2023. Enable
  2024. ----------------------------------------------------------------------------------
  2025.  
  2026. Command: ENABLE
  2027.  
  2028. This command is the counterpart to the 'Disable' command. It undoes the
  2029. effect of an earlier Disable and allows SnoopDos to resume monitoring
  2030. functions. This corresponds to the Disable gadget in the main window, and
  2031. the Disable menu option in the Project menu.
  2032.  
  2033. For compatibility with SnoopDos 1.x, CTRL-E will also select Enable. This
  2034. works even when sent via an external log device such as AUX: or CON:. Yet
  2035. another keyboard shortcut is SHIFT-TAB, which will also perform an
  2036. unconditional 'Unpause'.
  2037.  
  2038. If a log file is open, the time at which monitoring was enabled is written
  2039. to the file.
  2040.  
  2041. See also: 'Command Index'  'Disable'  'DisableWhenHidden'  'Pause'
  2042.  
  2043. ----------------------------------------------------------------------------------
  2044. Execute
  2045. ----------------------------------------------------------------------------------
  2046.  
  2047. Command: EXECUTE
  2048.          NOEXECUTE
  2049.  
  2050. This command enables or disables monitoring of the Execute() dos.library
  2051. function. It is also available as a gadget in the 'Function' window.
  2052.  
  2053. Older applications call Execute() to run an external command from inside
  2054. the main program. For example, a program might try to run Commodore's
  2055. Colors utility to provide a simple way of editing the screen colours. Most
  2056. modern software will call 'RunCommand' or 'System' instead.
  2057.  
  2058. The 'Target name' output field shows the command line being executed by
  2059. the application. Usually, only a single command is being executed; in this
  2060. case, the 'Options' output field will show "Single". If the application
  2061. has provided additional commands to execute afterwards, then "Batch" will
  2062. be displayed instead.
  2063.  
  2064. Batch mode is most commonly used to create a new CLI or Shell; the
  2065. additional commands are then read from a console window rather than
  2066. passed directly by the application.
  2067.  
  2068. The 'Result' output field will show whether or not the command line was
  2069. loaded successfully. Note that this doesn't indicate that the command
  2070. itself completed successfully, only that AmigaDOS was able to locate the
  2071. command on disk and load it into memory.
  2072.  
  2073. SnoopDos automatically writes this command to the settings file when
  2074. you save settings.
  2075.  
  2076. See also: 'Command Index'  'RunCommand'  'System'
  2077.  
  2078. ----------------------------------------------------------------------------------
  2079. FileIOType
  2080. ----------------------------------------------------------------------------------
  2081.  
  2082. Command: FILEIOTYPE=AUTOMATIC | IMMEDIATE | BUFFERED
  2083.  
  2084. Example: FILEIOTYPE=IMMEDIATE
  2085.  
  2086. This command determines what method of buffering SnoopDos uses when
  2087. capturing information to a log file. It is also available as a gadget
  2088. in the 'Settings' window
  2089.  
  2090. SnoopDos distinguishes between logging to a disk file, and logging to a
  2091. device such as PRT:, AUX:, or CON:. If you select AUTOMATIC then SnoopDos
  2092. will automatically use buffered output for disk files and disable
  2093. buffering when logging to devices.
  2094.  
  2095. If you select IMMEDIATE, then SnoopDos will never use buffered output.
  2096. This ensures that the information written to the log file (whether it's
  2097. on disk or on a physical device such as a printer) will always be
  2098. completely up to date. However, this can slow things down a little since
  2099. one file operation needs to be carried out for every single event that
  2100. SnoopDos monitors.
  2101.  
  2102. If you select BUFFERED, then SnoopDos will always buffer output, even
  2103. if logging to a device. The buffering works by waiting until up to 8K
  2104. of event data has been collected, and then outputting all the data in
  2105. one operation. This is quicker than IMMEDIATE, but has the disadvantage
  2106. that the log output may not always be up to date. In the case of a
  2107. printer, for example, you would see no output for a while, and then
  2108. suddenly 100 lines would all be printed at once.
  2109.  
  2110. SnoopDos automatically writes this command to the settings file when
  2111. you save settings.
  2112.  
  2113. See also: 'Command Index'  'FlushLog'
  2114.  
  2115. ----------------------------------------------------------------------------------
  2116. FindPort
  2117. ----------------------------------------------------------------------------------
  2118.  
  2119. Command: FINDPORT
  2120.          NOFINDPORT
  2121.  
  2122. This command enables or disables monitoring of the FindPort() exec.library
  2123. function. It is also available as a gadget in the 'Function' window.
  2124.  
  2125. Programs call FindPort to rendezvous with other applications on the system.
  2126. It is most commonly called to locate another application's ARexx port, but
  2127. can also be used to allow several products from the same company to work
  2128. together.
  2129.  
  2130. SnoopDos automatically writes this command to the settings file when
  2131. you save settings.
  2132.  
  2133. See also: 'Command Index'  'SendRexx'
  2134.  
  2135. ----------------------------------------------------------------------------------
  2136. FindResident
  2137. ----------------------------------------------------------------------------------
  2138.  
  2139. Command: FINDRESIDENT
  2140.          NOFINDRESIDENT
  2141.  
  2142. This command enables or disables monitoring of the FindResident()
  2143. exec.library function. It is also available as a gadget in the
  2144. 'Function' window.
  2145.  
  2146. The Kickstart ROM on all Amigas contains a number of resident modules --
  2147. libraries, devices, resources, and so on. The FindResident() function
  2148. searches the list of all ROM modules for a particular name.
  2149.  
  2150. Most programs have no need to call FindResident() directly, but you will
  2151. sometimes see ROM libraries calling it if your current format string
  2152. includes the 'Segment name' field. In normal use, you probably won't
  2153. find it a useful function to monitor.
  2154.  
  2155. SnoopDos automatically writes this command to the settings file when
  2156. you save settings.
  2157.  
  2158. Note for OS experts: The background ramlib process calls FindResident
  2159. frequently when searching for libraries and devices. SnoopDos deliberately
  2160. ignores these calls to keep the amount of information displayed down to a
  2161. reasonable level.
  2162.  
  2163. See also: 'Command Index'  'PatchRamLib'
  2164.  
  2165. ----------------------------------------------------------------------------------
  2166. FindSemaphore
  2167. ----------------------------------------------------------------------------------
  2168.  
  2169. Command: FINDSEMAPHORE
  2170.          NOFINDSEMAPHORE
  2171.  
  2172. This command enables or disables monitoring of the FindSemaphore()
  2173. exec.library function. It is also available as a gadget in the
  2174. 'Function' window.
  2175.  
  2176. This is similar to 'FindPort' but not as commonly used. It allows access
  2177. to a piece of data to be arbitrated so that only one task at a time can
  2178. access it.
  2179.  
  2180. It is often used to allow several copies of a single program to run at
  2181. once, with all copies sharing access to a single set of data. The main
  2182. reason you might want to monitor it is if you are writing a program
  2183. yourself that makes use of it.
  2184.  
  2185. SnoopDos automatically writes this command to the settings file when
  2186. you save settings.
  2187.  
  2188. See also: 'Command Index'
  2189.  
  2190. ----------------------------------------------------------------------------------
  2191. FindTask
  2192. ----------------------------------------------------------------------------------
  2193.  
  2194. Command: FINDTASK
  2195.          NOFINDTASK
  2196.  
  2197. This command enables or disables monitoring of the FindTask() exec.library
  2198. function. It is also available as a gadget in the 'Function' window.
  2199.  
  2200. The FindTask() function allows a program to locate another task on the
  2201. system by name. Having located the task, the program can then proceed to
  2202. signal that task or communicate with it in some other way, or even try
  2203. and kill it off. Generally, this function is used by utilities to locate
  2204. system tasks, rather than by applications.
  2205.  
  2206. SnoopDos automatically writes this command to the settings file when
  2207. you save settings.
  2208.  
  2209. See also: 'Command Index'
  2210.  
  2211. ----------------------------------------------------------------------------------
  2212. FlushLog
  2213. ----------------------------------------------------------------------------------
  2214.  
  2215. Command: FLUSHLOG
  2216.  
  2217. When SnoopDos is logging output to a disk file, it usually buffers up
  2218. output in memory and only writes it to disk when the buffer is full
  2219. (about every 100 lines or so). This is much more efficient than writing
  2220. every line of output to disk separately, but it has the disadvantage
  2221. that if the system crashes, you may lose the most recent lines of output.
  2222.  
  2223. This command instructs SnoopDos to flush any outstanding output in the
  2224. buffer to the log file, thus bringing it up to date. It has no effect if
  2225. no log file is open.
  2226.  
  2227. A quick way to do this interactively is to 'Pause' and then 'Unpause'
  2228. SnoopDos using the Pause gadget.
  2229.  
  2230. Note that you can use the 'FileIOType' command to control whether or not
  2231. SnoopDos uses buffering when writing to the log file.
  2232.  
  2233. See also: 'Command Index'  'AddLog'   'AppendLog'  'CloseLog'
  2234.           'LogFormat'      'OpenLog'
  2235.  
  2236. ----------------------------------------------------------------------------------
  2237. Format
  2238. ----------------------------------------------------------------------------------
  2239.  
  2240. Command: FORMAT "formatstring"
  2241.  
  2242. Example: FORMAT "%u %p %a %n %o %r"
  2243.  
  2244. This command defines how SnoopDos should format the output detailing each
  2245. event it monitors. It is also available as a gadget in the 'Settings'
  2246. window. You can edit the format string using the 'Format' editor, or by
  2247. manipulating columns in the main window using the mouse.
  2248.  
  2249. The format string is similar to that used by printf in the C programming
  2250. language. It contains a list of format fields, with each field corresponding
  2251. to one piece of information about a monitored event. The fields are as
  2252. follows:
  2253.  
  2254.   'Action       %a'  The name of the function being called
  2255.   'CallAddr     %c'  The address the function was called from
  2256.   'Date         %d'  The date the function was called
  2257.   'Hunk:Offset  %h'  The module hunk and offset the call was made from
  2258.   'Task ID      %i'  The address of the task making the call
  2259.   'Target Name  %n'  The name of the item the function call is accessing
  2260.   'Options      %o'  Any additional options required by the function
  2261.   'Proc Name    %p'  The name of the process making the call
  2262.   'Res.         %r'  The result returned by the function
  2263.   'Segment Name %s'  The name of the module making the call
  2264.   'Time         %t'  The time the function was called at
  2265.   'Count        %u'  The sequence number of this event
  2266.  
  2267. Each field may appear only once in a format string, but need not appear
  2268. at all. Several of the fields are really only of use to programmers and
  2269. can be ignored by most people.
  2270.  
  2271. The % characters listed are used in the format string to represent each
  2272. field. Between the % and the field identifier, a number may appear; this
  2273. defines the number of characters available to display that field. If no
  2274. number is given, then a sensible default is used instead.
  2275.  
  2276. Here are some example formats:
  2277.  
  2278.  "%21p %5a %39n %4o %r"           -- Classic SnoopDos 1.7 format
  2279.  "%16p %r %6a %6o %80n"           -- Maximizes space for target name
  2280.  "%u %7i %p %h %s %7a %39n %o %r" -- For programmers with big screens
  2281.  
  2282. Normally, SnoopDos will use the currently defined format string when
  2283. logging information to disk. However, you can change this by supplying
  2284. a special 'LogFormat' string instead.
  2285.  
  2286. If your format string includes some unrecognised or duplicate fields,
  2287. SnoopDos will silently remove them and simply use what remains.
  2288.  
  2289. See also: 'Command Index'  'Format editor'  'LogFormat'
  2290.  
  2291. ----------------------------------------------------------------------------------
  2292. FormatWindowPos
  2293. ----------------------------------------------------------------------------------
  2294.  
  2295. Command: FORMATWINDOWPOS=<left>,<top>
  2296.  
  2297. Example: FORMATWINDOWPOS=0,20
  2298.  
  2299. This command is used to change the position of the format editor window
  2300. on the current screen. If the format window is open, then it is moved
  2301. immediately, else it will appear in the new position the next time it
  2302. is opened. <left> and <top> are the pixel co-ordinates of the upper
  2303. left corner of the window.
  2304.  
  2305. SnoopDos automatically writes this command to the settings file when
  2306. you save settings.
  2307.  
  2308. See also: 'Command Index'  'Format editor'
  2309.  
  2310. ----------------------------------------------------------------------------------
  2311. Functions
  2312. ----------------------------------------------------------------------------------
  2313.  
  2314. Command: FUNCTIONS=ALL | NONE | ALLDOS | NODOS | ALLSYSTEM | NOSYSTEM
  2315.  
  2316. Example: FUNCTIONS=ALLDOS
  2317.  
  2318. This command provides a convenient way for an ARexx script to quickly
  2319. enable or disable monitoring of a group of functions.
  2320.  
  2321. The ALL and NONE option apply to the entire group of functions that
  2322. SnoopDos can monitor. ALLDOS and NODOS affect only those functions
  2323. listed under "DOS Functions" in the function window. ALLSYSTEM and
  2324. NOSYSTEM affect only those functions listed under "System Functions"
  2325. in the function window.
  2326.  
  2327. See also: 'Command Index'  'Function window'
  2328.  
  2329. ----------------------------------------------------------------------------------
  2330. FunctionWindowPos
  2331. ----------------------------------------------------------------------------------
  2332.  
  2333. Command: FUNCTIONWINDOWPOS=<left>,<top>
  2334.  
  2335. Example: FUNCTIONWINDOWPOS=0,20
  2336.  
  2337. This command is used to change the position of the function window on
  2338. the current screen. If the function window is open, then it is moved
  2339. immediately, else it will appear in the new position the next time it
  2340. is opened. <left> and <top> are the pixel co-ordinates of the upper
  2341. left corner of the window.
  2342.  
  2343. SnoopDos automatically writes this command to the settings file when
  2344. you save settings.
  2345.  
  2346. See also: 'Command Index'  'Function window'
  2347.  
  2348. ----------------------------------------------------------------------------------
  2349. GetVar
  2350. ----------------------------------------------------------------------------------
  2351.  
  2352. Command: GETVAR
  2353.          NOGETVAR
  2354.  
  2355. This command enables or disables monitoring of the GetVar() and FindVar()
  2356. dos.library functions. It is also available as a gadget in the 'Function'
  2357. window.
  2358.  
  2359. AmigaDOS has three types of environment variables: Local, Global and Alias.
  2360. These functions allow access to all three types. Local variables are
  2361. associated directly with a single CLI or Shell, and can't be accessed by
  2362. any other part of the system. Global variables reside in the ENV: directory
  2363. and can be accessed by all programs. Alias variables are manipulated using
  2364. the AmigaDOS Alias command, and aren't usually accessed by application
  2365. programs.
  2366.  
  2367. The 'Options' output field displays which of the three types of variable
  2368. a program is asking for. If the variable type is followed by an * (for
  2369. example, "Local*") then this indicates that the program is expecting a
  2370. binary variable which may contain non-printable characters and which was
  2371. probably created by the program itself, rather than the AmigaDOS SetEnv
  2372. command.
  2373.  
  2374. GetVar() and FindVar() are very similar in operation. GetVar() is typically
  2375. used by application programs that are only interested in the current value
  2376. of a variable, while FindVar() is used by Commodore commands that want to
  2377. directly alter a variable's current value.
  2378.  
  2379. SnoopDos automatically writes this command to the settings file when
  2380. you save settings.
  2381.  
  2382. See also: 'Command Index'  'SetVar'
  2383.  
  2384. ----------------------------------------------------------------------------------
  2385. GotoLine
  2386. ----------------------------------------------------------------------------------
  2387.  
  2388. Command: GOTOLINE <n>
  2389.  
  2390. Example: GOTOLINE 100
  2391.  
  2392. This command is used to reposition the buffer display in the main window
  2393. at a particular line. The line numbers correspond to those displayed in
  2394. the 'Count' output field.
  2395.  
  2396. A quick way to move to the top or bottom of the buffer is to give the
  2397. command GOTOLINE 0 or GOTOLINE 99999.
  2398.  
  2399. See also: 'Command Index'  'ScrollDown'  'ScrollUp'
  2400.  
  2401. ----------------------------------------------------------------------------------
  2402. Help
  2403. ----------------------------------------------------------------------------------
  2404.  
  2405. Command: HELP <topic>
  2406.  
  2407. Example: HELP MainWindow
  2408.  
  2409. You can call up help from within SnoopDos itself via the Help menu
  2410. option on the Project menu, by pressing the Help key while any menu
  2411. option is highlighted, or by pressing the Help key inside any
  2412. SnoopDos window.
  2413.  
  2414. The HELP command is mainly of use from the CLI. If you give it with
  2415. no parameters, then it will display a list of all the currently
  2416. recognised SnoopDos commands. If you give a topic, then help on that
  2417. topic will be loaded into AmigaGuide for you to read.
  2418.  
  2419. If in doubt, HELP MAIN will always bring you to the main 'Contents'
  2420. page, from where you can find any information you require.
  2421.  
  2422. See also: 'Command Index'
  2423.  
  2424. ----------------------------------------------------------------------------------
  2425. Hide
  2426. ----------------------------------------------------------------------------------
  2427.  
  2428. Command: HIDE
  2429.  
  2430. This command closes all the SnoopDos windows, but leaves SnoopDos monitoring
  2431. system activity in the background. It is available as a gadget in the
  2432. 'Main' window, and as a menu option on the Project menu. You can also hide
  2433. SnoopDos by clicking on the Close gadget in the main window. If the current
  2434. 'HideMethod' is set to None, then this option is not available.
  2435.  
  2436. When SnoopDos is hidden, the main window can be re-opened by pressing the
  2437. currently defined 'HotKey'. Depending on the hide method, you may also be
  2438. able to open the SnoopDos AppIcon, or select the Show SnoopDos menu item
  2439. on the Workbench Tools menu.
  2440.  
  2441. See also: 'Command Index'  'CX_Popup'  'HideMethod'  'Show'
  2442.  
  2443. ----------------------------------------------------------------------------------
  2444. HideGadgets
  2445. ----------------------------------------------------------------------------------
  2446.  
  2447. Command: HIDEGADGETS
  2448.  
  2449. This command disables the display of the panel of button gadgets in the
  2450. 'Main' window. It is also available as a menu option on the Windows menu.
  2451.  
  2452. Removing the gadgets allows more information about events to be displayed
  2453. in the SnoopDos window. Even though the gadgets are no longer visible,
  2454. you can still use the gadget keyboard shortcuts to activate the various
  2455. functions.
  2456.  
  2457. To maximise the amount of room available for displaying event output, you
  2458. might also like to turn off the 'Status line' gadget.
  2459.  
  2460. SnoopDos automatically writes this command to the settings file when
  2461. you save settings.
  2462.  
  2463. See also: 'Command Index'  'HideStatus'   'ShowGadgets'
  2464.           'ShowStatus'     'TextSpacing'
  2465.  
  2466. ----------------------------------------------------------------------------------
  2467. HideMethod
  2468. ----------------------------------------------------------------------------------
  2469.  
  2470. Command: HIDEMETHOD=NONE | INVISIBLE | ICONIFY | TOOLSMENU
  2471.  
  2472. Example: HIDEMETHOD=ICONIFY
  2473.  
  2474. This command controls the mechanism SnoopDos uses to run in the background
  2475. when you select the 'Hide' command. It is also available as a gadget in
  2476. the 'Settings' window.
  2477.  
  2478. Setting the hide method to NONE stops SnoopDos from running in the
  2479. background at all. The Hide menu and gadget options will be disabled,
  2480. and when you click on the main window's Close gadget, SnoopDos will
  2481. exit completely, rather than just hiding itself.
  2482.  
  2483. The INVISIBLE hide method completely removes all traces of SnoopDos from
  2484. the screen. The only way to re-activate it is to use the currently defined
  2485. commodity 'HotKey', use the Show Interface option in the commodities
  2486. exchange, or send a 'Show' command to SnoopDos (double-clicking on the
  2487. SnoopDos program icon will do this).
  2488.  
  2489. The ICONIFY hide method is similar to INVISIBLE, but creates an AppIcon on
  2490. the Workbench desktop whenever SnoopDos is hidden. SnoopDos can then be
  2491. re-activated by double-clicking on the AppIcon.  The image used for the
  2492. AppIcon will be the same as the SnoopDos program icon if possible; if no
  2493. icon was found, a simple built-in image is used instead. The icon position
  2494. will be automatically selected by Workbench; if you prefer, you can select
  2495. a fixed position using the 'IconPos' command.
  2496.  
  2497. The TOOLSMENU hide method creates an entry on the Workbench Tools menu
  2498. entitled "Show SnoopDos". Selecting this menu item will automatically
  2499. re-open the SnoopDos window.
  2500.  
  2501. Note that the SnoopDos hot key can be used to re-activate the main window
  2502. at all times, even if SnoopDos is not currently hidden.
  2503.  
  2504. See also: 'Command Index'  'Hide'  'HotKey'  'Show'
  2505.  
  2506. ----------------------------------------------------------------------------------
  2507. HideStatus
  2508. ----------------------------------------------------------------------------------
  2509.  
  2510. Command: HIDESTATUS
  2511.  
  2512. This command tells SnoopDos to disable the display of the 'Status line'
  2513. gadget in the 'Main' window. It is also available as a menu option on
  2514. the Windows menu.
  2515.  
  2516. The status line is not strictly necessary, but it provides a useful
  2517. "at-a-glance" summary of whether or not a log file is currently open,
  2518. and whether SnoopDos is currently 'paused' or 'disabled'.
  2519.  
  2520. Some people prefer to sacrifice the status line to allow more lines of
  2521. event output to be displayed in the main window. If you are doing this,
  2522. you may like to also hide the 'button' gadgets, which will allow the
  2523. maximum number of lines of text to be displayed.
  2524.  
  2525. SnoopDos automatically writes this command to the settings file when
  2526. you save settings.
  2527.  
  2528. See also: 'Command Index'  'HideGadgets'  'ShowGadgets'
  2529.           'ShowStatus'     'TextSpacing'
  2530.  
  2531. ----------------------------------------------------------------------------------
  2532. HOTKEY
  2533. ----------------------------------------------------------------------------------
  2534.  
  2535. Command: HOTKEY "key description"
  2536.  
  2537. Example: HOTKEY "ctrl alt d"
  2538.  
  2539. This command allows you to select what key sequence is used to open the
  2540. SnoopDos main window when it is hidden. This corresponds to the Hotkey
  2541. gadget in the 'Settings' window. It is a synonym for the 'CX_PopKey'
  2542. command.
  2543.  
  2544. Any standard commodities key description can be given. You can always
  2545. tell which key sequence is currently in use by looking at the titlebar
  2546. of the 'Main' window. If you enter an incorrect description, then the
  2547. titlebar will display "<invalid>".
  2548.  
  2549. When you have defined a hotkey, SnoopDos can be called up at any time by
  2550. pressing that key sequence. If the main window was already open, it will
  2551. be brought to the front and activated. If it was open, but on a different
  2552. screen, it will be re-opened on the current screen (as selected using the
  2553. 'ScreenType' command).
  2554.  
  2555. SnoopDos automatically writes this command to the settings file when
  2556. you save settings.
  2557.  
  2558. See also: 'Command Index'  'CX_PopKey'  'CX_Popup'  'CX_Priority'
  2559.  
  2560. ----------------------------------------------------------------------------------
  2561. IconPos
  2562. ----------------------------------------------------------------------------------
  2563.  
  2564. Command: ICONPOS=<left>,<top>
  2565.  
  2566. Example: ICONPOS=500,300
  2567.  
  2568. This command defines the position of the AppIcon created by SnoopDos
  2569. when it is running in an Iconified state. Normally, the AppIcon will
  2570. be automatically positioned in an appropriate position on the screen,
  2571. but you may sometimes want to override this with your own preferred
  2572. co-ordinates. Setting the position to -1,-1 allows Workbench to choose
  2573. the best position once again.
  2574.  
  2575. Note that there is no way to set this option from within SnoopDos; you
  2576. must change it by editing the SnoopDos 'default settings' file directly,
  2577. or by adding it as a tooltype to the SnoopDos icon.
  2578.  
  2579. SnoopDos automatically writes this command to the settings file when
  2580. you save settings.
  2581.  
  2582. See also: 'Command Index'  'HideMethod'
  2583.  
  2584. ----------------------------------------------------------------------------------
  2585. IgnoreShell
  2586. ----------------------------------------------------------------------------------
  2587.  
  2588. Command: IGNORESHELL
  2589.          NOIGNORESHELL
  2590.  
  2591. This command enables or disables SnoopDos's Ignore Workbench/Shell
  2592. setting. This setting can also be controlled via a gadget in the
  2593. 'Function' window.
  2594.  
  2595. When this is enabled, SnoopDos will ignore all system calls made by
  2596. Workbench, or by any shell processes or background CLI's that don't
  2597. currently have a command loaded. This can reduce the amount of
  2598. output substantially.
  2599.  
  2600. If you have the 'MonitorROMCalls' option enabled, then most Workbench and
  2601. Shell activity will be automatically ignored anyway. In that case, you mays
  2602. prefer to leave this option disabled, since it will speed up SnoopDos's
  2603. monitoring a little.
  2604.  
  2605. Note: if you enable MonitorROMCalls and disable IgnoreShell, then you can
  2606. see which tooltypes Workbench looks for by default whenever it starts a
  2607. program from an icon.
  2608.  
  2609. SnoopDos automatically writes this command to the settings file when
  2610. you save settings.
  2611.  
  2612. See also: 'Command Index'  'MatchName'  'MonitorROMCalls'
  2613.  
  2614. ----------------------------------------------------------------------------------
  2615. Language
  2616. ----------------------------------------------------------------------------------
  2617.  
  2618. Command: LANGUAGE "languagename"
  2619.  
  2620. Example: LANGUAGE "english"
  2621.  
  2622. This command is used to define the language used by SnoopDos to display
  2623. all menus, windows, and requesters. SnoopDos has built-in support for
  2624. English, but can also support other languages via external language
  2625. catalog files.
  2626.  
  2627. At this time, SnoopDos only supports English. However, I expect to release
  2628. localised versions over the next few months. If you track down the SnoopDos
  2629. source code archive on AmiNet, you will find it contains a catalog
  2630. description file that will enable you to create your own language catalog.
  2631. If you would like to create a catalog for your native language, please
  2632. 'email' me first in case someone has already performed the translation.
  2633.  
  2634. Unlike most other commands, the LANGUAGE command only makes sense when
  2635. specified as either an icon ToolType or a CLI command line option. This
  2636. is because SnoopDos needs to read the language file very early on during
  2637. its startup initialisation, in order to allow it to display error
  2638. messages in the correct language.
  2639.  
  2640. Normally, you should never need to use this command -- SnoopDos will
  2641. automatically try and use one of the languages defined in the system
  2642. Locale preferences, only falling back to English if an appropriate
  2643. catalog file can't be located.
  2644.  
  2645. However, if you are developing a new catalog file for SnoopDos, then this
  2646. command can be useful since it allows you to tell SnoopDos to use your new
  2647. catalog file during testing.
  2648.  
  2649. SnoopDos will look for the language you specify in two separate places.
  2650. The first is "PROGDIR:Catalogs/<language>/SnoopDos.catalog" and the second
  2651. is "LOCALE:Catalogs/<language>/SnoopDos.catalog". You can override these
  2652. defaults by including a full path name to the directory containing the
  2653. SnoopDos.catalog file.
  2654.  
  2655. For example, setting LANGUAGE="ram:" will look for the catalog file
  2656. "ram:SnoopDos.catalog". If you do this, you will need to temporarily alter
  2657. the name given in the ##language line of your translation (.CT) file to
  2658. read "##language ram:" as well, or locale.library will not recognise the
  2659. generated catalog as valid. Also remember to AVAIL FLUSH after quitting
  2660. SnoopDos, since otherwise locale.library will keep a copy of the first
  2661. catalog file loaded into memory and ignore the new version on disk.
  2662.  
  2663. See also: 'Command Index'
  2664.  
  2665. ----------------------------------------------------------------------------------
  2666. LeftAligned
  2667. ----------------------------------------------------------------------------------
  2668.  
  2669. Command: LEFTALIGNED
  2670.  
  2671. This command controls how the 'Target name' output field is displayed in
  2672. the main window. It is also available as a sub option to the Target Name
  2673. menu option on the Windows menu.
  2674.  
  2675. Left aligned is the normal state of the Target Name field; in this mode, it
  2676. behaves just like all the other output event columns. See the discussion
  2677. under 'RightAligned' for more information.
  2678.  
  2679. SnoopDos automatically writes this command to the settings file when
  2680. you save settings.
  2681.  
  2682. See also: 'Command Index'  'RightAligned'  'ShowFullPaths'
  2683.  
  2684. ----------------------------------------------------------------------------------
  2685. LoadDefSettings
  2686. ----------------------------------------------------------------------------------
  2687.  
  2688. Command: LOADDEFSETTINGS
  2689.  
  2690. This command reads in the default settings file, as defined by the
  2691. 'Settings' command. The 'Last Saved' option on the Settings menu
  2692. will usually do the same thing.
  2693.  
  2694. If no file has been explicitly defined, then the file that was loaded
  2695. during startup will be reloaded. If no such file could be found, then
  2696. it will attempt to load ENVARC:SnoopDos.prefs.
  2697.  
  2698. See also: 'Command Index'  'LoadSettings'  'SaveDefSettings'
  2699.           'SaveSettings'   'Settings'
  2700.  
  2701. ----------------------------------------------------------------------------------
  2702. LoadSeg
  2703. ----------------------------------------------------------------------------------
  2704.  
  2705. Command: LOADSEG
  2706.          NOLOADSEG
  2707.  
  2708. This command enables or disables monitoring of the LoadSeg() and
  2709. NewLoadSeg() dos.library functions. It is also available as a gadget
  2710. in the 'Function' window.
  2711.  
  2712. These functions are called to load an executable module from disk into
  2713. memory, where it can be executed. You are mostly likely to see these
  2714. functions being called by the 'ramlib' process, which is responsible
  2715. for loading in libraries and devices from disk.
  2716.  
  2717. You may also see these being used to load in fonts and keymaps. Sometimes,
  2718. an application will call LoadSeg() directly to load a sub-component of the
  2719. program which has not yet been needed. If you see LoadSeg() being called
  2720. with no apparent name, this indicates that an application is loading an
  2721. overlay -- a part of the application which has remained on disk until
  2722. it was needed, to help conserve memory.
  2723.  
  2724. Functionally, both LoadSeg() and NewLoadSeg() are identical. The main
  2725. difference is that NewLoadSeg() was not introduced until Kickstart 2.04,
  2726. and may in the future gain some additional options that are not available
  2727. with LoadSeg().
  2728.  
  2729. SnoopDos automatically writes this command to the settings file when
  2730. you save settings.
  2731.  
  2732. See also: 'Command Index'
  2733.  
  2734. ----------------------------------------------------------------------------------
  2735. LoadSettings
  2736. ----------------------------------------------------------------------------------
  2737.  
  2738. Command: LOADSETTINGS "settingsfile"
  2739.          LOADSETTINGS "con:////SnoopDos Command Window/CLOSE"
  2740.  
  2741. Example: LOADSETTINGS "ram:SnoopDos.prefs"
  2742.  
  2743. This command reads in a SnoopDos settings file. It is also available
  2744. as a menu item on the Settings menu.
  2745.  
  2746. A settings file is any ascii text file which contains valid SnoopDos
  2747. commands, one per line. The file must contain the following text on
  2748. the first line to be recognised as a settings file:
  2749.  
  2750.     <SnoopDos Settings>
  2751.  
  2752. Anything between a semicolon and the end of a line will be treated
  2753. as a comment and ignored.
  2754.  
  2755. Settings files are usually used to store a particular combination of
  2756. SnoopDos settings that define what functions will be monitored etc.
  2757. However, they can also contain other commands which perform actions
  2758. like opening or closing windows or log files.
  2759.  
  2760. If the filename you specify is an interactive file (i.e. a CON: window)
  2761. then LoadSettings behaves slightly differently. It prints a command prompt
  2762. in the window, and allows you to type in commands directly at the keyboard.
  2763. This lets you try out any SnoopDos command interactively and see the
  2764. effect it has. Note however that as long as the console window is open,
  2765. other SnoopDos operations will be suspended.
  2766.  
  2767. See also: 'Command Index'  'LoadDefSettings'  'SaveDefSettings'
  2768.           'SaveSettings'   'Settings'
  2769.  
  2770. ----------------------------------------------------------------------------------
  2771. Lock
  2772. ----------------------------------------------------------------------------------
  2773.  
  2774. Command: LOCK
  2775.          NOLOCK
  2776.  
  2777. This command enables or disables monitoring of the Lock() dos.library
  2778. function. It is also available as a gadget in the 'Function' window.
  2779.  
  2780. A program usually calls Lock() to check whether or not a file actually
  2781. exists. It can also use Lock() to locate a directory so that it can access
  2782. the files within that directory.
  2783.  
  2784. A file or directory can be locked for Read access, where several programs
  2785. are free to access it at the same time, or Write access, where the program
  2786. requires exclusive control with no interruptions. The 'Options' output
  2787. field displays which access mode a program asked for.
  2788.  
  2789. You may occasionally see an access mode of "Read???" -- this indicates that
  2790. a program has forgotten to specify which access mode was required. Most
  2791. AmigaDOS disk devices will assume that Read was intended, but some may be
  2792. confused, causing the program to work incorrectly on those devices.
  2793.  
  2794. SnoopDos automatically writes this command to the settings file when
  2795. you save settings.
  2796.  
  2797. See also: 'Command Index'  'ChangeDir'  'Open'
  2798.  
  2799. ----------------------------------------------------------------------------------
  2800. LockScreen
  2801. ----------------------------------------------------------------------------------
  2802.  
  2803. Command: LOCKSCREEN
  2804.          NOLOCKSCREEN
  2805.  
  2806. This command enables or disables monitoring of the LockPubScreen()
  2807. intuition.library function. It is also available as a gadget in the
  2808. 'Function' window.
  2809.  
  2810. Many modern programs support Intuition public screens -- screens similar
  2811. to the Workbench screen, but possibly with a different resolution and
  2812. number of colours. Monitoring this function allows you to see if a program
  2813. expects to find a public screen with a particular name.
  2814.  
  2815. If it finds such a screen, it may choose to open there rather than
  2816. on the Workbench. You can use one of the many public screen manager
  2817. utilities to create a screen with a particular name. In fact, SnoopDos
  2818. itself has the ability to open on a named public screen -- for more
  2819. information, see the 'ScreenType' command.
  2820.  
  2821. SnoopDos automatically writes this command to the settings file when
  2822. you save settings.
  2823.  
  2824. See also: 'Command Index'
  2825.  
  2826. ----------------------------------------------------------------------------------
  2827. LogFormat
  2828. ----------------------------------------------------------------------------------
  2829.  
  2830. Command: LOGFORMAT "formatstring"
  2831.          LOGFORMAT NONE
  2832.  
  2833. Example: LOGFORMAT "%t %p %a %n %o %r"
  2834.  
  2835. This command is similar to the 'Format' command, but instead of controlling
  2836. the format of the events displayed in the 'Main' window, it controls the
  2837. format of events written to the log file. It is also available as a gadget
  2838. in the 'Settings' window.
  2839.  
  2840. Normally, you won't need to use this. If no log format has been defined,
  2841. then SnoopDos will use the current main window format instead. However,
  2842. occasionally you may prefer to use a custom format. For example, you may
  2843. have a large Workbench screen which can display 130 columns of text in the
  2844. main window, but you would like your log files to fit on an 80 column
  2845. display.
  2846.  
  2847. The format string specified is identical to that used for the Format
  2848. command. Usually, the quickest way to design a new log format is to set the
  2849. main window to 79 columns using the 'Change window width' menu option and
  2850. then use the 'Format editor' to choose what items you want displayed.
  2851.  
  2852. Once you are happy with the format in the main window, you can quickly
  2853. copy it to the log format by using the 'Copy' gadget in the Settings
  2854. window.
  2855.  
  2856. The special keyword NONE is used to tell SnoopDos to stop using a custom
  2857. log format and just use whatever format is installed in the main window
  2858. instead. This is equivalent to just giving an empty format string, but is
  2859. often more convenient to use from within an ARexx script.
  2860.  
  2861. Note that when SnoopDos is writing to a log file, it automatically leaves
  2862. the first character on each line blank (see 'OpenLog' for more details).
  2863. As a result, a log format that's 79 characters wide produces lines of 80
  2864. characters in the log file.
  2865.  
  2866. SnoopDos automatically writes this command to the settings file when
  2867. you save settings.
  2868.  
  2869. See also: 'Command Index'  'Format'  'Format editor'  'OpenLog'
  2870.  
  2871. ----------------------------------------------------------------------------------
  2872. LogMode
  2873. ----------------------------------------------------------------------------------
  2874.  
  2875. Command: LOGMODE=PROMPT | APPEND | OVERWRITE | SERIALPORT
  2876.  
  2877. Example: LOGMODE=PROMPT
  2878.  
  2879. This command determines the precise operation of the 'Open Log' gadget in
  2880. the main window. It is also available as a gadget in the 'Settings'
  2881. window.
  2882.  
  2883. When the log mode is set to PROMPT (the most common choice), then the main
  2884. window gadget will be titled "Open Log...", and selecting it will produce
  2885. an ASL file requester allowing a log file to be chosen. If the chosen file
  2886. already exists, SnoopDos will display a requester allowing you to overwrite
  2887. or append to it.
  2888.  
  2889. When a file requester is displayed, you are not limited to entering only
  2890. filenames -- you can also enter device names such as PRT:, CON:////, or
  2891. AUX:.
  2892.  
  2893. When the log mode is set to APPEND, the main window gadget will be titled
  2894. "Append Log" and selecting it will automatically open the log file defined
  2895. using the 'LogName' command in append mode. This is convenient if you like
  2896. all logging information to be captured into a single file, and prefer not
  2897. to have to deal with the ASL file requester.
  2898.  
  2899. The OVERWRITE log mode is similar to APPEND, but the main window gadget now
  2900. reads "Start Log". When that gadget is selected, the filename defined with
  2901. the 'LogName' command is overwritten with the new log information. This
  2902. is most appropriate if you frequently log to a device, such as the printer
  2903. (PRT:) or perhaps a console window -- you can set the log name accordingly
  2904. and then easily turn on or off logging to that device with a single click
  2905. of the mouse.
  2906.  
  2907. If you are logging to a console window, note that the old SnoopDos 1.x
  2908. control keys still operate. CTRL-D and CTRL-E can be used to disable and
  2909. enable logging, and in addition, CTRL-F will bring the main SnoopDos window
  2910. back to the foreground again. CTRL-C will quit SnoopDos entirely, so be
  2911. careful not to press it by mistake.
  2912.  
  2913. The SERIAL PORT log mode will send the log output directly to a serial
  2914. debugging terminal connected to the internal serial port. This is mainly
  2915. intended for programmers. It is particularly useful if you use Carolyn
  2916. Scheppner's useful Sushi utility to redirect debugging output to a window
  2917. or file, since it allows SnoopDos output to be interleaved with output
  2918. from other tools like 'Enforcer' and Mungwall. When this option is
  2919. chosen, the main window gadget is titled "Serial Log".
  2920.  
  2921. Note that even when the log mode is APPEND, OVERWRITE or SERIAL PORT,
  2922. you can still open a log file via the ASL file requester by choosing the
  2923. 'Open Log' menu item on the Project menu.
  2924.  
  2925. SnoopDos automatically writes this command to the settings file when
  2926. you save settings.
  2927.  
  2928. See also: 'Command Index'  'AppendLog'  'OpenLog'  'OpenSerialLog'
  2929.  
  2930. ----------------------------------------------------------------------------------
  2931. LogName
  2932. ----------------------------------------------------------------------------------
  2933.  
  2934. Command: LOGNAME "logfile"
  2935.  
  2936. Example: LOGNAME "PRT:"
  2937.  
  2938. This command defines the default log filename to be used when the current
  2939. 'LogMode' is set to either APPEND or OVERWRITE. It is also available as a
  2940. gadget in the 'Settings' window.
  2941.  
  2942. The APPEND and OVERWRITE log modes allow the ASL file requester to be
  2943. bypassed when opening a log file; this is convenient if you frequently log
  2944. output to a single file or device.
  2945.  
  2946. If you are using a log mode of PROMPT, where an ASL file requester is
  2947. displayed to let you choose a log file, then the first default filename
  2948. supplied to the ASL requester will match the currently defined LogName.
  2949. This is useful if you usually log to the same file, but prefer to be able
  2950. to easily change to a different filename if you want to.
  2951.  
  2952. SnoopDos automatically writes this command to the settings file when
  2953. you save settings.
  2954.  
  2955. See also: 'Command Index'  'LogMode'
  2956.  
  2957. ----------------------------------------------------------------------------------
  2958. MainWindowPos
  2959. ----------------------------------------------------------------------------------
  2960.  
  2961. Command: MAINWINDOWPOS=<left>,<top>
  2962.  
  2963. Example: MAINWINDOWPOS=0,20
  2964.  
  2965. This command is used to change the position of the main window on
  2966. the current screen. If the function window is open, then it is moved
  2967. immediately, else it will appear in the new position the next time it
  2968. is opened. <left> and <top> are the pixel co-ordinates of the upper
  2969. left corner of the window.
  2970.  
  2971. SnoopDos automatically writes this command to the settings file when
  2972. you save settings.
  2973.  
  2974. See also: 'Command Index'  'Main window'
  2975.  
  2976. ----------------------------------------------------------------------------------
  2977. MainWindowSize
  2978. ----------------------------------------------------------------------------------
  2979.  
  2980. Command: MAINWINDOWSIZE=<width>,<height>
  2981.  
  2982. Example: MAINWINDOWSIZE=640,150
  2983.  
  2984. This command is used to change the current dimensions of the main window.
  2985. If the main window is open, then it is resized immediately, else it will
  2986. appear with the new size the next time it is opened. <width> and <height>
  2987. are the new dimensions of the window in pixels.
  2988.  
  2989. In addition to using this command, or manually resizing the window with the
  2990. mouse, you can also use the 'WindowWidth' command to define the width of
  2991. the window in text columns rather than pixels.
  2992.  
  2993. SnoopDos automatically writes this command to the settings file when
  2994. you save settings.
  2995.  
  2996. See also: 'Command Index'  'Main window'
  2997.  
  2998. ----------------------------------------------------------------------------------
  2999. MakeDir
  3000. ----------------------------------------------------------------------------------
  3001.  
  3002. Command: MAKEDIR
  3003.          NOMAKEDIR
  3004.  
  3005. This command enables or disables monitoring of the CreateDir() dos.library
  3006. function. It is also available as a gadget in the 'Function' window. (The
  3007. command name has been chosen to match the CLI command of the same name,
  3008. which is more familiar to most users than CreateDir).
  3009.  
  3010. Programs call this function to create a new directory on disk. This is most
  3011. commonly done during installation, where an application creates a special
  3012. directory to hold data or project files.
  3013.  
  3014. SnoopDos automatically writes this command to the settings file when
  3015. you save settings.
  3016.  
  3017. See also: 'Command Index'
  3018.  
  3019. ----------------------------------------------------------------------------------
  3020. MakeLink
  3021. ----------------------------------------------------------------------------------
  3022.  
  3023. Command: MAKELINK
  3024.          NOMAKELINK
  3025.  
  3026. This command enables or disables monitoring of the MakeLink() dos.library
  3027. function. It is also available as a gadget in the 'Function' window.
  3028.  
  3029. This function is called to create a file link on disk, which provides a
  3030. new name for an existing file, while retaining the original name as well.
  3031. Unlike the Copy command, this approach does not require a second copy of
  3032. the file to be stored, which saves disk space.
  3033.  
  3034. There are two types of Link: Hard and Soft. Hard links can only reside
  3035. on the same partition as the original file. Once created, they become
  3036. indistinguishable from the original; if the original file is deleted,
  3037. then the hard link automatically takes its place.
  3038.  
  3039. Soft links can be created on any disk or partition, not just that which
  3040. contained the original file. However, if the original file is deleted,
  3041. then the soft link becomes useless.
  3042.  
  3043. The 'Target name' output field will show the link information in the form
  3044. "Newlink --> original_file". The 'Options' output field will show "Soft"
  3045. or "Hard" according to the link type.
  3046.  
  3047. SnoopDos automatically writes this command to the settings file when
  3048. you save settings.
  3049.  
  3050. See also: 'Command Index'
  3051.  
  3052. ----------------------------------------------------------------------------------
  3053. MatchName
  3054. ----------------------------------------------------------------------------------
  3055.  
  3056. Command: MATCHNAME "pattern"
  3057.  
  3058. Example: MATCHNAME "~(Yak|TurboText)"
  3059.  
  3060. This command lets you define what programs SnoopDos should or should not
  3061. monitor. It is also available as a gadget in the 'Function' window.
  3062.  
  3063. The pattern you give is a standard case-insensitive AmigaDOS pattern. This
  3064. will be compared with the name of each process that calls any of the
  3065. functions currently being monitored; only those processes with names that
  3066. match the pattern will be displayed.
  3067.  
  3068. Typically, you will use the MatchName to ensure that certain programs are
  3069. automatically ignored by SnoopDos. For example, the TurboText text editor
  3070. has the annoying feature of calling CurrentDir() every time you type a key.
  3071. Similarly, the Yak commodity calls OpenDevice() every time you type a key
  3072. when you have key-click enabled. You can use the MatchName pattern shown
  3073. in the example above to prevent the event buffer from being quickly filled
  3074. with useless events.
  3075.  
  3076. In general, you can make SnoopDos ignore several different programs by
  3077. using a pattern of the form "~(prog1|prog2|prog3|prog4|...)", repeating
  3078. for as many program names as required.
  3079.  
  3080. Another less common use for MatchName is to monitor only those events
  3081. generated by one particular program. For example, a MatchName of
  3082. "Multiview" would ignore any function calls by programs other than
  3083. Multiview. A MatchName of "Multiview|AmigaGuide" would monitor calls
  3084. by either Multiview or AmigaGuide. If a program you're trying to monitor
  3085. may be run from a Shell rather than Workbench, you may wish to prefix
  3086. its name with "#?" in the pattern, to ensure that any preceding pathname
  3087. is ignored. For example: "#?Multiview|#?AmigaGuide".
  3088.  
  3089. SnoopDos automatically writes this command to the settings file when
  3090. you save settings.
  3091.  
  3092. See also: 'Command Index'
  3093.  
  3094. ----------------------------------------------------------------------------------
  3095. MonitorPackets
  3096. ----------------------------------------------------------------------------------
  3097.  
  3098. Command: MONITORPACKETS
  3099.          NOMONITORPACKETS
  3100.  
  3101. This command enables or disables SnoopDos's MonitorPackets setting. This
  3102. setting can also be controlled via a gadget in the 'Function' window.
  3103.  
  3104. Some programs, particularly those written using GNU C and linked with
  3105. ixemul.library, bypass the normal dos.library functions and communicate
  3106. directly with DOS devices using packet I/O.
  3107.  
  3108. Normally, SnoopDos can't detect such activity. However, if you enable this
  3109. option, then SnoopDos will monitor the PutMsg() exec.library function. This
  3110. allows packets to be detected, and displayed in the SnoopDos window just
  3111. like normal function calls.
  3112.  
  3113. When a packet is spotted that corresponds to one of the currently monitored
  3114. DOS functions, the 'Action' output field will display the packet type
  3115. (e.g. Open, Lock, MakeDir, etc.) but it will be prefixed by '*' to indicate
  3116. that direct packet i/o was involved. Thus, in the examples given, you will
  3117. see *Open, *Lock, *MakeDir, etc.
  3118.  
  3119. SnoopDos can monitor packet versions of the following functions:
  3120.  
  3121.    'Delete'   'Lock'   'MakeDir'   'MakeLink'   'Open'   'Rename'
  3122.  
  3123. Enabling MonitorPackets can potentially slow down your system, since
  3124. PutMsg() is one of the most frequently called system functions. Thus,
  3125. it should only be enabled if you encounter a program that appears to
  3126. be opening files but which doesn't show up under normal monitoring.
  3127.  
  3128. Packet operations carried out by AmigaDOS on behalf of an application will
  3129. not usually be reported by SnoopDos -- this is because there is no need;
  3130. the corresponding AmigaDOS function will be reported instead. However, if
  3131. you enable 'MonitorROMCalls' at the same time as MonitorPackets, then
  3132. you may find some events being listed twice: once as a DOS function, and
  3133. once as a packet operation.
  3134.  
  3135. Sometimes SnoopDos is unable to determine the result code of a packet
  3136. operation. This can happen if you stop monitoring packets while that
  3137. operation is incomplete, or occasionally when there is heavy packet
  3138. activity (SnoopDos can keep track of about 5 outstanding packets at any
  3139. one time). When this happens, the Result field will display "Missed"
  3140. to indicate it has given up.
  3141.  
  3142. If you need more information than that provided by MonitorPackets, you
  3143. can use the 'PacketDebugger' option. This lets you monitor every single
  3144. packet sent by an application to a DOS device, though since it generates
  3145. vast quantities of raw output, it is really only intended for device driver
  3146. programmers.
  3147.  
  3148. SnoopDos automatically writes this command to the settings file when
  3149. you save settings.
  3150.  
  3151. See also: 'Command Index'  'MonitorROMCalls'  'PacketDebugger'
  3152.  
  3153. ----------------------------------------------------------------------------------
  3154. MonitorROMCalls
  3155. ----------------------------------------------------------------------------------
  3156.  
  3157. Command: MONITORROMCALLS
  3158.          NOMONITORROMCALLS
  3159.  
  3160. This command enables or disables SnoopDos's MonitorROMCalls setting. This
  3161. setting can also be controlled via a gadget in the 'Function' window.
  3162.  
  3163. When a program calls a system function, that function may in turn trigger
  3164. internal calls to other system functions. For example, calling OpenLibrary()
  3165. may result in calls being made to FindResident() and Open() as well.
  3166. Usually, these additional calls just add to the clutter and aren't needed,
  3167. so by default SnoopDos doesn't display any calls made by the operating
  3168. system (i.e. from within the ROM).
  3169.  
  3170. However, sometimes it can be useful to see these, especially if all else
  3171. fails. Turning on this option tells SnoopDos to go ahead and print function
  3172. calls made from within the ROM, along with all the calls made by user
  3173. applications.
  3174.  
  3175. Be warned though: this can often double the amount of output produced! If
  3176. you enable MonitorROMCalls, then you will probably want to ensure that
  3177. 'IgnoreShell' is also enabled, to make SnoopDos ignore output generated by
  3178. Workbench or the Shell.
  3179.  
  3180. One thing to be aware of is that SnoopDos can only check if a function call
  3181. has been from ROM by looking at the return address on the stack. If another
  3182. program has patched a function call after SnoopDos, then SnoopDos will see
  3183. all calls to the function as coming from that program rather than from the
  3184. original caller, and so won't ignore them. One such example is the
  3185. OpenLibrary() call, which is patched by the CodeProbe debugger.
  3186.  
  3187. SnoopDos automatically writes this command to the settings file when
  3188. you save settings.
  3189.  
  3190. See also: 'Command Index'  'MonitorPackets'  'PacketDebugger'
  3191.  
  3192. ----------------------------------------------------------------------------------
  3193. OnlyShowFails
  3194. ----------------------------------------------------------------------------------
  3195.  
  3196. Command: ONLYSHOWFAILS
  3197.          NOONLYSHOWFAILS
  3198.  
  3199. This command enables or disables SnoopDos's OnlyShowFails setting. This
  3200. setting can also be controlled via a gadget in the 'Function' window.
  3201.  
  3202. Depending on the functions you have enabled, SnoopDos can provide vast
  3203. quantities of output. Enabling OnlyShowFails provides an easy way to
  3204. reduce the amount of output you see, while still retaining information
  3205. that is likely to be of interest.
  3206.  
  3207. This is achieved, as the name implies, by only showing those functions
  3208. which failed -- any function call which is successful is not listed.
  3209.  
  3210. You need to be a little wary when using this option, since it is possible
  3211. to be misled if you are not careful. Often, a program may search for files
  3212. or other information in several places. If the first two attempts fail, but
  3213. the third succeeds, you will only see information about the two failed
  3214. attempts and may incorrectly surmise that the program is in trouble.
  3215.  
  3216. Thus, while OnlyShowFails is useful for identifying potential problems
  3217. early on (and saving valuable space in the event buffer), it's best to
  3218. turn it off when you are diagnosing an actual program failure.
  3219.  
  3220. SnoopDos automatically writes this command to the settings file when
  3221. you save settings.
  3222.  
  3223. See also: 'Command Index'
  3224.  
  3225. ----------------------------------------------------------------------------------
  3226. Open
  3227. ----------------------------------------------------------------------------------
  3228.  
  3229. Command: OPEN
  3230.          NOOPEN
  3231.  
  3232. This command enables or disables monitoring of the Open() dos.library
  3233. function. It is also available as a gadget in the 'Function' window.
  3234.  
  3235. If you only choose to monitor one function, the Open() function will
  3236. usually provide the most useful information, since missing configuration
  3237. files are one of the most common reasons an application will not run.
  3238.  
  3239. Note however that an application may do other checks to determine if a file
  3240. actually exists, before trying to open it. The most common method is to use
  3241. the 'Lock' function to try and locate the file.
  3242.  
  3243. Another alternative, and one which SnoopDos can't easily monitor, is to
  3244. scan a directory looking at all files in that directory. If you suspect
  3245. this is happening, you can use SnoopDos's 'PacketDebugger' option to watch
  3246. out for this, but be prepared to sift through a lot of superfluous output.)
  3247.  
  3248. Files may be opened in one of three modes: Read, Write or Modify. Read
  3249. implies that the file will only be read, not modified. Write implies that
  3250. a new file should be created, overwriting any file that already exists.
  3251. Modify is used to write to an already existing file (or to create a new
  3252. file if none exists). The 'Options' output field indicates the mode used
  3253. to open the file.
  3254.  
  3255. SnoopDos automatically writes this command to the settings file when
  3256. you save settings.
  3257.  
  3258. See also: 'Command Index'  'Lock'
  3259.  
  3260. ----------------------------------------------------------------------------------
  3261. OpenDevice
  3262. ----------------------------------------------------------------------------------
  3263.  
  3264. Command: OPENDEVICE
  3265.          NOOPENDEVICE
  3266.  
  3267. This command enables or disables monitoring of the OpenDevice() exec.library
  3268. function. It is also available as a gadget in the 'Function' window.
  3269.  
  3270. Almost every non-trivial program needs to use devices, and this is the
  3271. function called to provide access to each device.
  3272.  
  3273. Monitoring of OpenDevice() can result in quite a lot of output, most of
  3274. which isn't very useful. If you're only interested in the devices that a
  3275. program needs to open but can't, they will show up under the output from
  3276. 'LoadSeg' since the Amiga automatically tries to load any device it can't
  3277. find in memory from the DEVS: directory.
  3278.  
  3279. When this function is being monitored, the 'Options' output field will show
  3280. the unit number of the device the program is trying to open.
  3281.  
  3282. Note to OS experts: All OpenDevice() calls made by CON processes are
  3283. ignored by SnoopDos. This is because CON frequently opens timer.device,
  3284. sometimes many times a second, and reporting all these events would
  3285. quickly fill up the event buffer with useless output.
  3286.  
  3287. SnoopDos automatically writes this command to the settings file when
  3288. you save settings.
  3289.  
  3290. See also: 'Command Index'  'OpenLibrary'
  3291.  
  3292. ----------------------------------------------------------------------------------
  3293. OpenFont
  3294. ----------------------------------------------------------------------------------
  3295.  
  3296. Command: OPENFONT
  3297.          NOOPENFONT
  3298.  
  3299. This command enables or disables monitoring of the OpenFont()
  3300. graphics.library function. It is also available as a gadget in the
  3301. 'Function' window.
  3302.  
  3303. OpenFont() is called to locate a particular font for display on the
  3304. screen. The 'Options' output field shows the size of the font that's being
  3305. requested.
  3306.  
  3307. Usually, there is no need to monitor this function -- if a program can't
  3308. locate a font in memory, AmigaDOS will automatically try and load it from
  3309. the FONTS: directory on disk, and it will be displayed under 'LoadSeg'.
  3310. If you want to see every font used by a program, however, then this is
  3311. the function to use.
  3312.  
  3313. SnoopDos automatically writes this command to the settings file when
  3314. you save settings.
  3315.  
  3316. See also: 'Command Index'
  3317.  
  3318. ----------------------------------------------------------------------------------
  3319. OpenFormat
  3320. ----------------------------------------------------------------------------------
  3321.  
  3322. Command: OPENFORMAT
  3323.  
  3324. This command opens the 'Format editor' window. You can also open the format
  3325. editor by selecting the 'Show format' menu item on the Windows menu, or by
  3326. double-clicking on the header line in the 'Main' window.
  3327.  
  3328. Yet another way to open the format editor is using the "Edit..." gadget
  3329. in the 'Setup' window.
  3330.  
  3331. See also: 'Command Index'  'CloseFormat'  'FormatWindowPos'
  3332.  
  3333. ----------------------------------------------------------------------------------
  3334. OpenFunction
  3335. ----------------------------------------------------------------------------------
  3336.  
  3337. Command: OPENFUNCTION
  3338.  
  3339. This command opens the 'Function' window. You can also open the function
  3340. window by selecting the 'Show functions' item on the Windows menu, or by
  3341. selecting the "Functions..." gadget in the main window.
  3342.  
  3343. If your Amiga only has a 68000, you may find that the function window takes
  3344. a long time to open the first time you access it. This is due to the large
  3345. number of gadgets it contains. SnoopDos only needs to create the gadgets
  3346. the first time the window is opened; on the second and subsequent openings,
  3347. you should find it much quicker.
  3348.  
  3349. See also: 'Command Index'  'CloseFunction'  'FunctionWindowPos'
  3350.  
  3351. ----------------------------------------------------------------------------------
  3352. OpenLibrary
  3353. ----------------------------------------------------------------------------------
  3354.  
  3355. Command: OPENLIBRARY
  3356.          NOOPENLIBRARY
  3357.  
  3358. This command enables or disables monitoring of the OpenLibrary()
  3359. exec.library function. It is also available as a gadget in the
  3360. 'Function' window.
  3361.  
  3362. It's impossible to write a useful program on the Amiga that doesn't call
  3363. OpenLibrary() at least once. It provides access to the Amiga's multitude
  3364. of shared libraries.
  3365.  
  3366. In general, a program will fail to run if it can't find a particular
  3367. library. However, normally such failed attempts will show up as 'LoadSeg'
  3368. events, because if AmigaDOS can't find a library in memory, it will try
  3369. and load it from the LIBS: directory instead.
  3370.  
  3371. A program won't necessarily stop working if it can't find a particular
  3372. library; it may just disable some of its features. For example, SnoopDos
  3373. itself can run without the Commodities or ASL libraries being present,
  3374. but if they're not around, you won't be able to Hide the main window or
  3375. call up file and font requesters.
  3376.  
  3377. The 'Options' output field gives the version number of the library being
  3378. opened. This is useful information, because if a program can't open a
  3379. library, you can then see the minimum version of the library you must
  3380. install.
  3381.  
  3382. Note that SnoopDos automatically ignores all attempts to open dos.library.
  3383. This is necessary to avoid a few subtle problems that can otherwise occur.
  3384. Since dos.library must exist to even load the program in the first place,
  3385. you won't miss out on anything important by not seeing these events.
  3386.  
  3387. SnoopDos automatically writes this command to the settings file when
  3388. you save settings.
  3389.  
  3390. See also: 'Command Index'  'OpenDevice'
  3391.  
  3392. ----------------------------------------------------------------------------------
  3393. OpenLog
  3394. ----------------------------------------------------------------------------------
  3395.  
  3396. Command: OPENLOG "filename"
  3397.  
  3398. Example: OPENLOG "ram:snoopdos.log"
  3399.  
  3400. This command opens a new log file. Any new output displayed in the main
  3401. SnoopDos window will be written to this file. If the file already exists,
  3402. it will be overwritten. You can also open a new log file from within
  3403. SnoopDos by choosing the 'Open log' menu option on the Project menu, or
  3404. by using the 'Open Log' button in the 'Main' window.
  3405.  
  3406. When SnoopDos displays events in the main window, it can easily handle
  3407. several different events taking place simultaneously. For example, one
  3408. program might call RunCommand() to start a command executing, and that
  3409. command may itself open several files. SnoopDos can display information
  3410. about those open actions even though the previous RunCommand() call has
  3411. not yet completed. When the RunCommand() does complete, SnoopDos goes
  3412. back and fills in the result code accordingly.
  3413.  
  3414. When outputting events to a log file, it's not so easy to go back and fill
  3415. in the result field after several additional events have occurred. For
  3416. example, the log file may actually be a printer or some other device that
  3417. doesn't allow backtracking.
  3418.  
  3419. To avoid this problem, SnoopDos behaves slightly differently when printing
  3420. events to a log file. It will usually wait until an event is fully completed
  3421. before it tries to output it to the file. However, if a new event arrives
  3422. before the current event is complete, SnoopDos will output as much of the
  3423. current event as possible. To show that the event is incomplete, it outputs
  3424. a '/' character in the first column of the line.
  3425.  
  3426. Later on, when that event finally completes, SnoopDos will output the entire
  3427. line a second time, but this time with the result filled in. To indicate
  3428. that this is the completion of an earlier event, the first column will
  3429. contain a '\\', to match the '/' used earlier.
  3430.  
  3431. If you anticipate this happening a lot, it's a good idea to include the
  3432. 'Count' output field in your log format. This will include a sequence
  3433. number on each line, and you can then easily match each incomplete event
  3434. with the final completed version since both lines of output will have
  3435. the same number.
  3436.  
  3437. See also: 'Command Index'  'AddLog'     'AppendLog'      'CloseLog'
  3438.           'FlushLog'       'LogFormat'  'OpenSerialLog'
  3439.  
  3440. ----------------------------------------------------------------------------------
  3441. OpenResource
  3442. ----------------------------------------------------------------------------------
  3443.  
  3444. Command: OPENRESOURCE
  3445.          NOOPENRESOURCE
  3446.  
  3447. This command enables or disables monitoring of the OpenResource()
  3448. exec.library function. It is also available as a gadget in the
  3449. 'Function' window.
  3450.  
  3451. Resources are typically used to provide very low-level access to standard
  3452. Amiga hardware, such as the gameport, CIA chips, battery-backed clock,
  3453. floppy disk, etc. You can monitor OpenResource() to see if a program is
  3454. trying to access the hardware directly in a system-legal manner.
  3455.  
  3456. Of course, programs that break the rules and don't allocate hardware
  3457. properly before using it won't show up (but your system will probably
  3458. have crashed by then anyway).
  3459.  
  3460. SnoopDos automatically writes this command to the settings file when
  3461. you save settings.
  3462.  
  3463. See also: 'Command Index'
  3464.  
  3465. ----------------------------------------------------------------------------------
  3466. OpenSerialLog
  3467. ----------------------------------------------------------------------------------
  3468.  
  3469. Command: OPENSERIALLOG
  3470.  
  3471. This command opens a new log file. Unlike normal log files, the output from
  3472. this will be directed to a debugging terminal connected to the internal
  3473. serial port. You can configure the "Open Log" button in the 'Main' window
  3474. to perform this command by setting the 'LogMode' to SERIALPORT.
  3475.  
  3476. This is mainly intended for programmers. It is particularly useful if you
  3477. use Carolyn Scheppner's useful Sushi utility to redirect debugging output
  3478. to a window or file, since it allows SnoopDos output to be interleaved with
  3479. output from other tools like 'Enforcer' and Mungwall.
  3480.  
  3481. See the 'OpenLog' documentation for more information about how SnoopDos
  3482. outputs information to a log file.
  3483.  
  3484. See also: 'Command Index'  'AddLog'     'AppendLog'  'CloseLog'
  3485.           'FlushLog'       'LogFormat'  'OpenLog'
  3486.  
  3487. ----------------------------------------------------------------------------------
  3488. OpenSetup
  3489. ----------------------------------------------------------------------------------
  3490.  
  3491. Command: OPENSETUP
  3492.  
  3493. This command opens the 'Setup' window. You can also open the setup
  3494. window by selecting the 'Show setup' menu item on the Windows menu, or
  3495. by selecting the "Setup..." gadget in the main window.
  3496.  
  3497. See also: 'Command Index'  'CloseSetup'  'SetupWindowPos'
  3498.  
  3499. ----------------------------------------------------------------------------------
  3500. PacketDebugger
  3501. ----------------------------------------------------------------------------------
  3502.  
  3503. Command: PACKETDEBUGGER
  3504.          NOPACKETDEBUGGER
  3505.  
  3506. This command enables or disables SnoopDos's Packet debugger. This setting
  3507. can also be controlled via a gadget in the 'Function' window.
  3508.  
  3509. The packet debugger provides a way to snoop on packets sent to any mounted
  3510. filesystem device. This is mainly of use to device driver writers, but
  3511. can also occasionally be useful if you want to monitor DOS operations not
  3512. directly supported by SnoopDos, such as Examine()/ExNext().
  3513.  
  3514. When the packet debugger is first enabled, SnoopDos makes a list of
  3515. currently mounted devices. Only packets sent to those devices are
  3516. monitored.
  3517.  
  3518. If a new device is mounted while the debugger is running, SnoopDos will
  3519. usually automatically add it to this list. However, if the device has
  3520. been mounted using a third-party mount command, you may need to disable
  3521. and re-enable the packet debugger to get SnoopDos to recognise packets
  3522. destined for the new device.
  3523.  
  3524. The first time you enable the packet debugger, you may find that it
  3525. doesn't seem to have much effect. This is because almost all packets to
  3526. DOS devices are generated by dos.library, and dos.library is in ROM. By
  3527. default, SnoopDos ignores any packet activity generated by ROM calls.
  3528. Enable the 'MonitorROMCalls' setting to change this.
  3529.  
  3530. SnoopDos can identify all of Commodore's officially defined packets, as of
  3531. Kickstart 3.0, and can also recognise a few third party packets, as listed
  3532. in Ralph Babel's excellent book, The Amiga Guru Guide. The name of each
  3533. packet is displayed in the 'Action' output field. Each name is shown in
  3534. capitals and is prefixed with '#', to help distinguish the output from
  3535. normal monitored functions.
  3536.  
  3537. If SnoopDos doesn't recognise a packet, then the packet type will be shown
  3538. in the form "#(nnn)" where nnn is the packet type code in decimal.
  3539.  
  3540. Most packets take one or more parameters (dp_Arg1, dp_Arg2, etc). These
  3541. parameters are listed in the 'Target name' field as 32-bit hex numbers.
  3542. The interpretation of each number depends on the packet; see Ralph's book
  3543. for a comprehensive explanation.
  3544.  
  3545. The 'Options' field shows the name of the device to which the packet is
  3546. being sent.
  3547.  
  3548. Finally, the 'Result' field shows the return value from the packet. Most
  3549. packets return a single 32-bit value for success, or a fail code and a
  3550. secondary error code for failure. SnoopDos will display "OK" or "Fail"
  3551. for each packet, and will also show the actual value returned.
  3552.  
  3553. For successful packets, this value matches dp_Res1; for failed packets, it
  3554. matches dp_Res2. (SnoopDos knows that some packets return -1 for failure,
  3555. while others return 0). Some packets return two values -- in this case,
  3556. SnoopDos will display both values.
  3557.  
  3558. Since the default width of the Result field is only four characters, you
  3559. may need to widen it to view this additional information. This is easily
  3560. done by simply dragging the right edge of the Result event heading in the
  3561. main window with the mouse, or by using the 'Format editor'.
  3562.  
  3563. Sometimes SnoopDos is unable to determine the result code of a packet
  3564. operation. This can happen if you disable the packet debugger while a
  3565. packet operation is still in progress, or occasionally if there is heavy
  3566. packet activity (SnoopDos can remember up to 5 outstanding packets at a
  3567. time). When this happens, the Result field will displayed "Missed" to
  3568. indicate SnoopDos has given up waiting for a result.
  3569.  
  3570. SnoopDos automatically writes this command to the settings file when
  3571. you save settings.
  3572.  
  3573. See also: 'Command Index'  'MonitorPackets'  'MonitorROMCalls'
  3574.  
  3575. ----------------------------------------------------------------------------------
  3576. PatchRamLib
  3577. ----------------------------------------------------------------------------------
  3578.  
  3579. Command: PATCHRAMLIB
  3580.          NOPATCHRAMLIB
  3581.  
  3582. This command controls whether or not SnoopDos should apply a patch to the
  3583. ramlib background process (ramlib is responsible for loading libraries and
  3584. devices from disk, whenever they are needed by a program). This command is
  3585. slightly unusual in that it must be given on the CLI command line or as an
  3586. icon tooltype the first time SnoopDos is started, or it will have no effect.
  3587. If it is not present, the default action is PATCHRAMLIB.
  3588.  
  3589. Normally, you should never need to use this command. However, if you like
  3590. to know exactly what's happening to your Amiga, you may want to read on.
  3591.  
  3592. The reason for this command is because the ramlib process contains a bug
  3593. in all versions of Kickstart from 2.0 through 3.1. This bug does not show
  3594. up during normal use, but when SnoopDos is running, the bug can cause a
  3595. crash during heavy system activity.
  3596.  
  3597. For those interested, the bug is that ramlib uses SIGB_SINGLE as the signal
  3598. bit for its message port, which means that system calls made by ramlib
  3599. cannot safely use this signal for any purpose -- after all, you never
  3600. know when a new message might arrive at ramlib's message port, causing a
  3601. SIGB_SINGLE signal. The most critical use of SIGB_SINGLE in the operating
  3602. system is to synchronise sempahore operations when two tasks are trying
  3603. to access a single piece of data simultaneously.
  3604.  
  3605. The reason this doesn't cause a problem in normal use is because ramlib
  3606. calls very few system functions that depend on SIGB_SINGLE, and those
  3607. that do (mainly LoadSeg, which locks the device list) usually don't do
  3608. anything too terrible if it should fail.
  3609.  
  3610. SnoopDos makes heavy use of semaphores in its patches. This means that any
  3611. calls from ramlib that it monitors are potentially at risk. Even then,
  3612. problems only occur when several programs all ask ramlib to load a library
  3613. or device at the same time. However, when a problem occurs, it causes an
  3614. instant crash as SnoopDos metaphorically gets its knickers in a twist.
  3615.  
  3616. To avoid this problem, SnoopDos patches the ramlib process to use a
  3617. different signal bit (SIGBREAKB_CTRL_E in fact). This patching is performed
  3618. in a safe way, so that if a future SetPatch ever corrects the bug, it won't
  3619. cause any conflicts. If you have the SnoopDos source code from Aminet, you
  3620. can review the patch code in patches.c:InitRamLibPatch().
  3621.  
  3622. Despite the efforts to make the patch safe and upwards compatible, it's
  3623. possible that it may cause problems with some future revision of the
  3624. operating system. It's also possible that you may not like the idea of
  3625. a third party utility altering an internal system structure like this.
  3626.  
  3627. Thus, NOPATCHRAMLIB provides a way to stop SnoopDos from making this change.
  3628. A side effect of using NOPATCHRAMLIB is that SnoopDos will automatically
  3629. ignore all calls made by the ramlib process. This obscures some useful
  3630. information about what libraries and devices are being loaded loaded, but
  3631. for the most part, you can simply turn on monitoring of 'OpenLibrary' and
  3632. 'OpenDevice' and get the same information.
  3633.  
  3634. Note that any calls made to the 'FindResident' function by ramlib
  3635. are automatically ignored by SnoopDos; this helps keep the amount of
  3636. information displayed in the window to manageable levels.
  3637.  
  3638. See also: 'Command Index'  'StackLimit'
  3639.  
  3640. ----------------------------------------------------------------------------------
  3641. Pause
  3642. ----------------------------------------------------------------------------------
  3643.  
  3644. Command: PAUSE
  3645.  
  3646. This command is used to temporarily pause any programs calling functions
  3647. monitored by SnoopDos, so that you have a chance to see exactly what each
  3648. program is trying to do. It is also available as an item on the Project
  3649. menu, and as a gadget in the 'Main' window. You can use the TAB key to
  3650. unconditionally select Pause (this is sometimes more convenient than
  3651. pressing the Pause gadget's keyboard shortcut, since that toggles Pause
  3652. on and off).
  3653.  
  3654. Pause is particularly useful if you have a program that crashes during
  3655. startup, because it allows you to step through the program's initial
  3656. actions as quickly or as slowly as you like. It is also useful if a program
  3657. is carrying out many actions, too fast for you to read -- you can pause the
  3658. output temporarily to give you a chance to catch up. While a program is
  3659. paused, it goes to sleep.
  3660.  
  3661. At each step, SnoopDos will display the function the program is about to
  3662. execute, before the call is actually made. To indicate that the program is
  3663. currently paused, the result field will read "WAIT".
  3664.  
  3665. When a task is in a WAIT state, you can tell it to execute the current
  3666. function but immediately pause again the next time it calls a monitored
  3667. function. This lets you step through a program's function calls one step
  3668. at a time. The easiest way to do this is to simply press Space on the
  3669. keyboard, or click the down arrow scroll gadget using the mouse. See the
  3670. 'SingleStep' command for more details.
  3671.  
  3672. Note that SnoopDos pauses individual tasks, rather than the main SnoopDos
  3673. program itself. Thus, if three separate programs try to call a monitored
  3674. function, you will see all three tasks listed in the main window, with
  3675. three WAITs in the result column. If you select single step, then all
  3676. three programs are allowed to execute the current call and advance to
  3677. the next one.
  3678.  
  3679. If you execute certain file operations while SnoopDos is paused, such as
  3680. opening a new log file or selecting a new font from the font requester,
  3681. then SnoopDos will temporarily unpause itself for the duration of the
  3682. operation. Any tasks which were WAITing when the action began will remain
  3683. in the WAIT state, but any new calls made during the file activity will be
  3684. executed as normal (they will still appear in the event buffer of course).
  3685.  
  3686. This is to prevent deadlocks occurring -- sometimes accessing a file may
  3687. involve additional operations by an external program.
  3688.  
  3689. When SnoopDos is paused, system activity can quite literally come to a
  3690. halt. To prevent you getting into a situation where you cannot select
  3691. unpause, SnoopDos will automatically unpause itself if you select the
  3692. 'Hide' command.
  3693.  
  3694. See also: 'Command Index'  'SingleStep'  'Unpause'
  3695.  
  3696. ----------------------------------------------------------------------------------
  3697. Quit
  3698. ----------------------------------------------------------------------------------
  3699.  
  3700. Command: QUIT
  3701.  
  3702. This command tells SnoopDos to remove all its patches and unload itself
  3703. from memory. Usually, SnoopDos can quit immediately -- even though it
  3704. patches many system functions, it uses a technique that allows those
  3705. patches to be safely removed.
  3706.  
  3707. However, sometimes when you try to quit, another program will still be
  3708. executing one of the functions patched by SnoopDos. A typical example
  3709. is when a program tries to open a file on a disk not currently in any
  3710. drive, causing a "Please insert volume..." requester to be displayed.
  3711.  
  3712. Until that requester is acknowledged, SnoopDos won't be able to unload
  3713. itself from memory. In a situation like this, SnoopDos will check every
  3714. two seconds to see if it is safe to quit; if not, it goes back to sleep
  3715. again. After 10 seconds, it displays a warning requester displaying the
  3716. name of the function that is currently being executed -- this may give
  3717. you a clue as to what is going on.
  3718.  
  3719. It is safe to rerun SnoopDos after quitting, even if the first copy is
  3720. still not finished cleaning up. However, you can quickly use up all your
  3721. available memory if you do this too many times.
  3722.  
  3723. See also: 'Command Index'  'Hide'
  3724.  
  3725. ----------------------------------------------------------------------------------
  3726. ReadToolTypes
  3727. ----------------------------------------------------------------------------------
  3728.  
  3729. Command: READTOOLTYPES
  3730.          NOREADTOOLTYPES
  3731.  
  3732. This command enables or disables monitoring of two separate functions in
  3733. icon.library, FindToolType() and MatchToolValue(). It is also available
  3734. as a gadget in the 'Function' window.
  3735.  
  3736. Both these functions are used by programs that can be started from an icon.
  3737. FindToolType() is used to search the icon for a particular tooltype, and
  3738. MatchToolValue() is used to check if a recognised tooltype is set to a
  3739. particular value.
  3740.  
  3741. This can be very useful for identifying what tooltypes a program looks
  3742. for in its icon, and what values those tooltypes can take, as programmers
  3743. often forget to fully document them. Not all programs use these functions,
  3744. but most do.
  3745.  
  3746. For MatchToolValue(), the 'Target name' output field shows the various
  3747. possible values for the tooltype, with each option separated by a '|'
  3748. character. The 'Options' output field shows the actual contents of the
  3749. tooltype being checked.
  3750.  
  3751. SnoopDos automatically writes this command to the settings file when
  3752. you save settings.
  3753.  
  3754. See also: 'Command Index'
  3755.  
  3756. ----------------------------------------------------------------------------------
  3757. Rename
  3758. ----------------------------------------------------------------------------------
  3759.  
  3760. Command: RENAME
  3761.          NORENAME
  3762.  
  3763. This command enables or disables monitoring of the Rename() dos.library
  3764. function. It is also available as a gadget in the 'Function' window.
  3765.  
  3766. Rename() is called by an application to change the name of a disk file.
  3767. Both the old and new file must be on the same partition, but need not be
  3768. in the same directory.
  3769.  
  3770. Rename is slightly unusual in that it produces two lines of output in the
  3771. SnoopDos window; the first line shows the original name of the file, while
  3772. the second line gives the new name.
  3773.  
  3774. SnoopDos automatically writes this command to the settings file when
  3775. you save settings.
  3776.  
  3777. See also: 'Command Index'
  3778.  
  3779. ----------------------------------------------------------------------------------
  3780. RightAligned
  3781. ----------------------------------------------------------------------------------
  3782.  
  3783. Command: RIGHTALIGNED
  3784.  
  3785. This command controls how the 'Target name' output field is displayed in
  3786. the main window. It is also available as a sub option to the Target Name
  3787. menu option on the Windows menu.
  3788.  
  3789. Normally, there is enough room to fully display the target name associated
  3790. with each event, so this command isn't needed. However, if you have a
  3791. narrow target name column, or if you have enabled the 'ShowFullPaths'
  3792. option, resulting in a lot of long target names, then you may find that
  3793. the names are too wide to fit in the allocated space.
  3794.  
  3795. When RightAligned is enabled, the rightmost portion of each name will be
  3796. displayed, instead of the left portion as with all other output fields.
  3797. This is often more useful, since if there is not enough room to display
  3798. the entire filename, the rightmost portion includes the actual filename
  3799. which would otherwise be truncated or discarded.
  3800.  
  3801. When a target name is too long to display completely, the symbol '«' will
  3802. appear in the first column of output. This indicates that there are more
  3803. characters to the left of the displayed information.
  3804.  
  3805. Many people find it useful to leave the target name display set to
  3806. 'LeftAligned' most of the time and only switch to right aligned if a
  3807. particularly long target name appears. Since both modes have associated
  3808. menu hotkeys (Amiga-[ and Amiga-]), the switch can be made very quickly
  3809. using the keyboard.
  3810.  
  3811. SnoopDos automatically writes this command to the settings file when
  3812. you save settings.
  3813.  
  3814. See also: 'Command Index'  'LeftAligned'  'ShowFullPaths'
  3815.  
  3816. ----------------------------------------------------------------------------------
  3817. RowQualifier
  3818. ----------------------------------------------------------------------------------
  3819.  
  3820. Command: ROWQUALIFIER=IGNORE | NONE | SHIFT | ALT | CTRL | ALL
  3821.  
  3822. Example: ROWQUALIFIER=ALL
  3823.  
  3824. This command selects what qualifier key (if any) must be pressed before
  3825. SnoopDos will allow you to highlight a row in the main window by clicking
  3826. on it with the mouse. The 'Row selection key' menu option lets you
  3827. change this from within the program.
  3828.  
  3829. SnoopDos allows you to highlight lines in the main window by clicking on
  3830. them. This provides a convenient way to quickly identify all the components
  3831. on a single line of output by providing a horizontal guide for your eye
  3832. to follow.
  3833.  
  3834. However, if you use a "click to front" commodity such as that supplied with
  3835. Workbench, you may notice that clicking the SnoopDos window to the front
  3836. causes a row highlight to be flashed briefly. This can be distracting.
  3837.  
  3838. Modifying the row qualifier key allows you to avoid this situation. If your
  3839. system is configured to bring windows to the front when you perform a shift-
  3840. double-click, then you can set the row qualifier to NONE -- this indicates
  3841. that rows will only be highlighted when no qualifier key is pressed.
  3842.  
  3843. Alternatively, if your system is configured to bring windows to the front
  3844. when you do a double-click without holding shift (or any other qualifier),
  3845. you can set the row qualifier to SHIFT, ALT or CTRL. This indicates that the
  3846. named key must be held down in order to highlight a row -- clicking on the
  3847. row with no key pressed will no longer be sufficient.
  3848.  
  3849. The ALL option allows rows to be highlighted as long as at least one of the
  3850. SHIFT, ALT or CTRL keys is pressed (it doesn't matter which one). This is
  3851. usually more convenient than choosing any single qualifier.
  3852.  
  3853. Finally, the default setting is IGNORE. When this is selected, SnoopDos
  3854. doesn't care whether or not a qualifier key is pressed. If you don't use
  3855. a click-to-front utility, then this is probably the best option to choose.
  3856.  
  3857. SnoopDos automatically writes this command to the settings file when
  3858. you save settings.
  3859.  
  3860. See also: 'Command index'  'Event output'
  3861.  
  3862. ----------------------------------------------------------------------------------
  3863. RunCommand
  3864. ----------------------------------------------------------------------------------
  3865.  
  3866. Command: RUNCOMMAND
  3867.          NORUNCOMMAND
  3868.  
  3869. This command enables or disables monitoring of the RunCommand() dos.library
  3870. function. It is also available as a gadget in the 'Function' window.
  3871.  
  3872. Applications call RunCommand() to execute a single disk command with a
  3873. particular set of parameters. The event output produced for this function
  3874. is a little unusual, because the name shown in the 'Process name' output
  3875. field is usually the name of the command being executed, and not the
  3876. process making the call. The 'Target name' field lists only the command
  3877. line parameters for the command, and not the command name itself.
  3878.  
  3879. The 'Options' field shows the stack size provided for the command; if this
  3880. is too small, some commands may not run properly. Finally, the 'Result'
  3881. field is displayed as "----" while the command is executing, and is
  3882. replaced with the return code from the command after execution completes
  3883. (usually 0 for a successful execution). A result of "Fail" indicates that
  3884. the command couldn't be executed at all.
  3885.  
  3886. Since the executed command will probably produce some SnoopDos output of
  3887. its own, you may need to scroll back in the SnoopDos buffer to retrieve the
  3888. final return code from the RunCommand line if you need to find it for some
  3889. reason.
  3890.  
  3891. SnoopDos automatically writes this command to the settings file when
  3892. you save settings.
  3893.  
  3894. See also: 'Command Index'  'Execute'  'System'
  3895.  
  3896. ----------------------------------------------------------------------------------
  3897. SaveBuffer
  3898. ----------------------------------------------------------------------------------
  3899.  
  3900. Command: SAVEBUFFER "filename"
  3901.  
  3902. Example: SAVEBUFFER "ram:SnoopDos.txt"
  3903.  
  3904. This command saves the entire contents of the SnoopDos event buffer to
  3905. the named file. This is useful if you want to preserve the output from
  3906. SnoopDos for later analysis, but forgot to open a log file first.
  3907.  
  3908. This function is also available as a menu item on the Buffer menu.
  3909.  
  3910. See also: 'Command Index'  'CopyBuffer'  'CopyWindow'  'SaveWindow'
  3911.  
  3912. ----------------------------------------------------------------------------------
  3913. SaveDefSettings
  3914. ----------------------------------------------------------------------------------
  3915.  
  3916. Command: SAVEDEFSETTINGS
  3917.  
  3918. This command saves the current SnoopDos settings to the default settings
  3919. file, as defined by the 'Settings' command. It is also available as a
  3920. gadget in the 'Main' window, and as a menu option on the Settings menu.
  3921.  
  3922. If no file has been explicitly defined, then the settings will be written
  3923. to the file that was loaded during startup. If no such file could be found,
  3924. then they will be written to ENVARC:SnoopDos.prefs instead.
  3925.  
  3926. The next time you load SnoopDos, these settings will automatically be used.
  3927. The settings saved include the current values of all the gadgets in the
  3928. Setup and Function windows, and the current value of most boolean menu
  3929. items, as well as the position and size of each window.
  3930.  
  3931. See also: 'Command Index'  'LoadDefSettings'  'LoadSettings'
  3932.           'SaveSettings'   'Settings'
  3933.  
  3934. ----------------------------------------------------------------------------------
  3935. SaveSettings
  3936. ----------------------------------------------------------------------------------
  3937.  
  3938. Command: SAVESETTINGS "settingsfile"
  3939.  
  3940. Example: SAVESETTINGS "ram:SnoopDos.prefs"
  3941.  
  3942. This command writes the current values of all gadgets and menu items to the
  3943. named file. This file can then be reloaded at a later time to reconfigure
  3944. SnoopDos with those settings.
  3945.  
  3946. The settings file generated is plain text and can be edited by hand
  3947. if required.
  3948.  
  3949. See also: 'Command Index'    'LoadDefSettings'  'LoadSettings'
  3950.           'SaveDefSettings'  'Settings'
  3951.  
  3952. ----------------------------------------------------------------------------------
  3953. SaveWindow
  3954. ----------------------------------------------------------------------------------
  3955.  
  3956. Command: SAVEWINDOW "filename"
  3957.  
  3958. Example: SAVEWINDOW "ram:SnoopDos.txt"
  3959.  
  3960. This command saves the contents of the main window to the named file.
  3961. It is also available as a menu option on the Buffer menu.
  3962.  
  3963. If the current buffer format is too wide to fit completely in the main
  3964. window, only that portion which is currently displayed will be saved.
  3965. If this doesn't include enough information, you can use the 'SaveBuffer'
  3966. command instead and then delete any extra lines that you don't need.
  3967.  
  3968. See also: 'Command Index'  'CopyBuffer'  'CopyWindow'  'SaveBuffer'
  3969.  
  3970. ----------------------------------------------------------------------------------
  3971. ScreenName
  3972. ----------------------------------------------------------------------------------
  3973.  
  3974. Command: SCREENNAME "Screen Name"
  3975.  
  3976. Example: SCREENNAME "Workbench"
  3977.  
  3978. This command works in conjunction with the NAMED option of the 'ScreenType'
  3979. command to allow SnoopDos to open its windows on a particular public screen.
  3980. It is also available as a gadget in the 'Settings' window.
  3981.  
  3982. If the screen name can't be found, then SnoopDos will use the default
  3983. screen instead. If the current screen type is set to FRONT or DEFAULT,
  3984. then the screen name defined here will be ignored.
  3985.  
  3986. SnoopDos automatically writes this command to the settings file when you
  3987. save settings.
  3988.  
  3989. See also: 'Command Index'  'HotKey'  'ScreenType'
  3990.  
  3991. ----------------------------------------------------------------------------------
  3992. ScreenType
  3993. ----------------------------------------------------------------------------------
  3994.  
  3995. Command: SCREENTYPE=DEFAULT | FRONT | NAMED
  3996.  
  3997. Example: SCREENTYPE=FRONT
  3998.  
  3999. This command determines what screen SnoopDos will use for its windows.
  4000. It is also available as a gadget in the 'Settings' window.
  4001.  
  4002. If the screen type is DEFAULT, then SnoopDos will open on the default
  4003. public screen. This is usually the Workbench screen.
  4004.  
  4005. If the screen type is FRONT, then SnoopDos will try and open on the
  4006. frontmost public screen. Many modern application programs automatically
  4007. make their screens public, and you can use third party utilities to
  4008. create other public screens. This mode of operation is convenient,
  4009. because it allows you to call up SnoopDos on your current screen at
  4010. any time by just pressing the currently defined 'Hotkey'.
  4011.  
  4012. If the screen type is NAMED, then SnoopDos will try and open on a public
  4013. screen with a name that matches the currently defined 'ScreenName'. Note
  4014. that SnoopDos won't create a screen of this name itself -- the screen
  4015. must already exist. If no such screen is found, then SnoopDos will open
  4016. on the default screen instead.
  4017.  
  4018. SnoopDos automatically writes this command to the settings file when
  4019. you save settings.
  4020.  
  4021. See also: 'Command Index'  'HotKey'  'ScreenName'
  4022.  
  4023. ----------------------------------------------------------------------------------
  4024. ScrollDown
  4025. ----------------------------------------------------------------------------------
  4026.  
  4027. Command: SCROLLDOWN <n>
  4028.  
  4029. Example: SCROLLDOWN 10
  4030.  
  4031. This command moves the SnoopDos event buffer down by <n> lines. It is
  4032. equivalent to using the down arrow gadget in the 'Main' window, or
  4033. pressing the down arrow cursor key.
  4034.  
  4035. See also: 'Command Index'  'GotoLine'  'ScrollUp'
  4036.  
  4037. ----------------------------------------------------------------------------------
  4038. ScrollUp
  4039. ----------------------------------------------------------------------------------
  4040.  
  4041. Command: SCROLLUP <n>
  4042.  
  4043. Example: SCROLLUP 10
  4044.  
  4045. This command moves the SnoopDos event buffer up by <n> lines. It is
  4046. equivalent to using the up arrow scroll gadget in the 'Main' window
  4047. or pressing the up arrow cursor key.
  4048.  
  4049. See also: 'Command Index'  'GotoLine'  'ScrollDown'
  4050.  
  4051. ----------------------------------------------------------------------------------
  4052. SendRexx
  4053. ----------------------------------------------------------------------------------
  4054.  
  4055. Command: SENDREXX
  4056.          NOSENDREXX
  4057.  
  4058. This command enables or disables monitoring of ARexx messages sent by
  4059. ARexx scripts or applications. It is also available as a gadget in the
  4060. 'Function' window.
  4061.  
  4062. This can be useful if you want to see how a script is performing its magic,
  4063. or if you're trying to figure out why an application isn't responding as
  4064. you expect.
  4065.  
  4066. The 'Target Name' output field shows the command being sent to the
  4067. application, and the 'Options' output field shows the application's
  4068. port name.
  4069.  
  4070. When this function is enabled, SnoopDos monitors every single message sent
  4071. by the system, in order to identify which ones are ARexx messages. Thus,
  4072. you may find that your system runs a little slower.
  4073.  
  4074. SnoopDos automatically writes this command to the settings file when
  4075. you save settings.
  4076.  
  4077. See also: 'Command Index'  'FindPort'  'MonitorPackets'  'PacketDebugger'
  4078.  
  4079. ----------------------------------------------------------------------------------
  4080. Settings
  4081. ----------------------------------------------------------------------------------
  4082.  
  4083. Command: SETTINGS="name"
  4084.  
  4085. Example: SETTINGS="ENVARC:SnoopDos.prefs"
  4086.  
  4087. This command defines the name of the default settings file that SnoopDos
  4088. tries to load at startup. Normally, this is something that you would
  4089. include in the SnoopDos icon's tooltypes, or as a CLI command line option.
  4090.  
  4091. If you don't define an explicit settings file, SnoopDos will look in
  4092. the PROGDIR:, ENVARC: and S: directories at startup for a file called
  4093. SnoopDos.prefs. If it can't find such a file in any of those three
  4094. directories, it will use the name ENVARC:SnoopDos.prefs for future saves.
  4095.  
  4096. Note that this command doesn't actually cause the settings file to be
  4097. loaded; it only shows where the settings file might be found. When you
  4098. use the Save Settings gadget in the 'Main' window, this is the filename
  4099. that will be used.
  4100.  
  4101. You can also use this command from within a settings file. For example,
  4102. suppose you wanted to carry out a certain set of actions each time
  4103. SnoopDos started -- open a new log file, open the format editor, etc.
  4104.  
  4105. Normally, if you included those commands in a settings file, they would
  4106. be overwritten the first time you saved settings. However, by using the
  4107. SETTINGS command to change the name of the settings file from within the
  4108. settings file itself, you can avoid this. For example:
  4109.  
  4110.     <SnoopDos Settings>
  4111.     SETTINGS "ENVARC:SnoopDos.realprefs"
  4112.     LOADDEFSETTINGS
  4113.     OPENLOG "ram:SnoopDos.log"
  4114.     OPENFORMAT
  4115.  
  4116. If this file was saved as ENVARC:SnoopDos.prefs, then SnoopDos would start
  4117. out by loading the real default settings from "ENVARC:SnoopDos.realprefs",
  4118. then open a log file, and finally open the format editor. Any future saving
  4119. of default settings would also be directed to ENVARC:SnoopDos.realprefs,
  4120. and so the command file would not be overwritten.
  4121.  
  4122. See also: 'Command Index'    'LoadDefSettings'  'LoadSettings'
  4123.           'SaveDefSettings'  'SaveSettings'
  4124.  
  4125. ----------------------------------------------------------------------------------
  4126. SetupWindowPos
  4127. ----------------------------------------------------------------------------------
  4128.  
  4129. Command: SETUPWINDOWPOS=<left>,<top>
  4130.  
  4131. Example: SETUPWINDOWPOS=0,20
  4132.  
  4133. This command is used to change the position of the settings window on
  4134. the current screen. If the settings window is open, then it is moved
  4135. immediately, else it will appear in the new position the next time it
  4136. is opened. <left> and <top> are the pixel co-ordinates of the upper
  4137. left corner of the window.
  4138.  
  4139. SnoopDos automatically writes this command to the settings file when
  4140. you save settings.
  4141.  
  4142. See also: 'Command Index'  'Settings window'
  4143.  
  4144. ----------------------------------------------------------------------------------
  4145. SetVar
  4146. ----------------------------------------------------------------------------------
  4147.  
  4148. Command: SETVAR
  4149.          NOSETVAR
  4150.  
  4151. This command enables or disables monitoring of the SetVar() and DeleteVar()
  4152. dos.library functions. It is also available as a gadget in the 'Function'
  4153. window.
  4154.  
  4155. SetVar() is the logical counterpart to the GetVar() function; it allows
  4156. a program to create or update an environment variable with a new value.
  4157. As with GetVar(), Global, Local and Alias variables are recognised, and a
  4158. trailing * after the type indicates that the program expects the variable
  4159. to contain binary information, rather than plain text. See the 'GetVar'
  4160. command for more information.
  4161.  
  4162. DeleteVar() is used to delete environment variables from memory. The same
  4163. three variable types described above are recognised.
  4164.  
  4165. SnoopDos automatically writes this command to the settings file when
  4166. you save settings.
  4167.  
  4168. See also: 'Command Index'
  4169.  
  4170. ----------------------------------------------------------------------------------
  4171. Show
  4172. ----------------------------------------------------------------------------------
  4173.  
  4174. Command: SHOW
  4175.  
  4176. This command opens the SnoopDos main window on the currently selected
  4177. screen (as defined by the 'ScreenType' command). If the window was already
  4178. open, then it is brought to the front. If the window was open, but on
  4179. different screen, then it is re-opened on the current screen.
  4180.  
  4181. This command is automatically executed whenever you press the currently
  4182. defined 'HotKey'. It is also automatically executed if you run SnoopDos
  4183. from the CLI with no command line options, or if you double-click on a
  4184. SnoopDos icon while SnoopDos is already running.
  4185.  
  4186. See also: 'Command Index'  'CX_Popup'  'Hide'  'HotKey'  'Main window'
  4187.  
  4188. ----------------------------------------------------------------------------------
  4189. ShowCLI
  4190. ----------------------------------------------------------------------------------
  4191.  
  4192. Command: SHOWCLI
  4193.          NOSHOWCLI
  4194.  
  4195. This command enables or disables SnoopDos's ShowCLI setting. It can also
  4196. be controlled via a gadget in the 'Function' window.
  4197.  
  4198. The ShowCLI setting determines how the 'Process name' field displays the
  4199. name of the CLI command that called a monitored function. When enabled,
  4200. the command name is prefixed with the number of the CLI in which it is
  4201. running (e.g. "[4] Multiview"). If disabled, then only the name of the
  4202. command is displayed. Background processes and programs started from
  4203. Workbench are not affected.
  4204.  
  4205. SnoopDos automatically writes this command to the settings file when
  4206. you save settings.
  4207.  
  4208. See also: 'Command Index'
  4209.  
  4210. ----------------------------------------------------------------------------------
  4211. ShowFullPaths
  4212. ----------------------------------------------------------------------------------
  4213.  
  4214. Command: SHOWFULLPATHS
  4215.          NOSHOWFULLPATHS
  4216.  
  4217. This command enables or disables SnoopDos's ShowFullPaths setting. This
  4218. setting can also be controlled via a gadget in the 'Function' window.
  4219.  
  4220. Whenever a program passes a filename to an AmigaDOS function, the filename
  4221. is interpreted as being relative to the program's current directory, unless
  4222. an absolute pathname is specified with the filename.
  4223.  
  4224. If the program being monitored changes directory often, it can become
  4225. difficult to keep track of which directory it is in at any given time.
  4226. Selecting this option makes SnoopDos always prefix filenames with a full
  4227. path before displaying them in the window.
  4228.  
  4229. This can produce rather long filenames which occupy a lot of space in the
  4230. SnoopDos window, so you should only use this option if you have a specific
  4231. need for it, rather than leaving it on all the time.
  4232.  
  4233. If you have many long filenames displayed, you can use the menu shortcut
  4234. keys for 'LeftAligned' and 'RightAligned', Amiga-[ and Amiga-], to
  4235. quickly switch between viewing the start and end of the filename.
  4236.  
  4237. Note that if a program tries to access a file on a volume that is not
  4238. currently mounted, SnoopDos will be unable to resolve the full directory
  4239. path to that file. In this case, only the volume name will be shown,
  4240. followed by ellipses and the filename, to indicate that the directory
  4241. information is unavailable. For example, "Work:.../filename".
  4242.  
  4243. SnoopDos automatically writes this command to the settings file when
  4244. you save settings.
  4245.  
  4246. See also: 'Command Index'  'UseDeviceNames'
  4247.  
  4248. ----------------------------------------------------------------------------------
  4249. ShowGadgets
  4250. ----------------------------------------------------------------------------------
  4251.  
  4252. Command: SHOWGADGETS
  4253.  
  4254. This command enables the display of the panel of button gadgets in the
  4255. 'Main' window. It is also available as a menu option on the Windows menu.
  4256.  
  4257. Having the gadgets easily available is convenient, but some people prefer
  4258. to have an extra line or two of event output instead. Even when the gadgets
  4259. are disabled, the keyboard shortcuts for each gadget still operate. The
  4260. gadgets all have equivalent menu options which can be selected as well.
  4261.  
  4262. To maximise the amount of room available for displaying event output, you
  4263. may also like to turn off the 'Status line' gadget.
  4264.  
  4265. SnoopDos automatically writes this command to the settings file when
  4266. you save settings.
  4267.  
  4268. See also: 'Command Index'  'HideGadgets'  'HideStatus'
  4269.           'ShowStatus'     'TextSpacing'
  4270.  
  4271. ----------------------------------------------------------------------------------
  4272. ShowStatus
  4273. ----------------------------------------------------------------------------------
  4274.  
  4275. Command: SHOWSTATUS
  4276.  
  4277. This command enables the display of the 'status line' gadget in the 'Main'
  4278. window. It is also available as an option on the Windows menu.
  4279.  
  4280. The status line is not strictly necessary, but it provides a useful
  4281. "at-a-glance" summary of whether or not a log file is currently open,
  4282. and whether SnoopDos is currently 'Paused' or 'Disabled'.
  4283.  
  4284. Some people prefer to sacrifice the status line to allow more lines of
  4285. event output to be displayed in the main window. If you are doing this,
  4286. you may like to also disable the 'Button' gadgets, which will allow the
  4287. maximum number of lines of text to be displayed.
  4288.  
  4289. SnoopDos automatically writes this command to the settings file when
  4290. you save settings.
  4291.  
  4292. See also: 'Command Index'  'HideGadgets'  'HideStatus'
  4293.           'ShowGadgets'    'TextSpacing'
  4294.  
  4295. ----------------------------------------------------------------------------------
  4296. SimpleRefresh
  4297. ----------------------------------------------------------------------------------
  4298.  
  4299. Command: SIMPLEREFRESH
  4300.  
  4301. This command sets the refresh method used for all SnoopDos windows to
  4302. Simple refresh. It is also available as a sub option to the "Window Type"
  4303. menu option on the Windows menu.
  4304.  
  4305. Simple refresh windows help conserve memory. When a window is partially
  4306. obscured, the obscured portion is discarded, and is then redrawn by
  4307. SnoopDos when the window is later uncovered. Redrawing the window can
  4308. take some time on slower Amigas, where 'Smart refresh' windows may be
  4309. more appropriate.
  4310.  
  4311. However, some third party graphics cards actually perform better with
  4312. simple refresh windows than with smart refresh.  The best advice is to
  4313. try both methods and choose whichever you like best.
  4314.  
  4315. SnoopDos automatically writes this command to the settings file when
  4316. you save settings.
  4317.  
  4318. See also: 'Command Index'  'SmartRefresh'
  4319.  
  4320. ----------------------------------------------------------------------------------
  4321. SingleStep
  4322. ----------------------------------------------------------------------------------
  4323.  
  4324. Command: SINGLESTEP
  4325.  
  4326. This command is used when SnoopDos is paused. It allows each of the
  4327. currently waiting tasks to execute the current function and advance
  4328. to the next one. See the 'Pause' command for more information.
  4329.  
  4330. SingleStep is also available as a menu option on the Projects menu. As
  4331. an alternative, you can click the down arrow scroll gadget in the main
  4332. window when the scroll bar is positioned at the end. You can also press
  4333. Space or Return on the keyboard for convenience. The TAB key will also
  4334. single step, but has the additional advantage of putting SnoopDos into
  4335. Pause mode if it wasn't already paused.
  4336.  
  4337. If you have a buffered 'log file' open, then SnoopDos will flush the buffer
  4338. to disk each time you single step. This allows the most information to be
  4339. retained in the event of a crash. However, it also means that your disk
  4340. may become corrupt if a crash should occur in the middle of a disk write.
  4341.  
  4342. Thus, if you suspect that a particular program is likely to crash, you
  4343. should probably experiment without a log file first, or log to a safe
  4344. device like PRT: or RAD:.
  4345.  
  4346. See also: 'Command Index'  'Pause'  'Unpause'
  4347.  
  4348. ----------------------------------------------------------------------------------
  4349. SmartRefresh
  4350. ----------------------------------------------------------------------------------
  4351.  
  4352. Command: SMARTREFRESH
  4353.  
  4354. This command sets the refresh method used for all SnoopDos windows to
  4355. Smart refresh. It is also available as a sub option to the "Window Type"
  4356. menu option on the Windows menu.
  4357.  
  4358. Smart refresh windows are popular, because they allow a partially
  4359. obscured window to be instantly redrawn when it is uncovered, with
  4360. no obvious delay.
  4361.  
  4362. However, they take up more memory than 'Simple refresh' windows. They can
  4363. also be slower on some third party graphics cards, such as the Picasso,
  4364. especially when running with 256 colours.
  4365.  
  4366. SnoopDos automatically writes this command to the settings file when
  4367. you save settings.
  4368.  
  4369. See also: 'Command Index'  'SimpleRefresh'
  4370.  
  4371. ----------------------------------------------------------------------------------
  4372. StackLimit
  4373. ----------------------------------------------------------------------------------
  4374.  
  4375. Command: STACKLIMIT=<minstacksize>
  4376.  
  4377. Example: STACKLIMIT=1000
  4378.  
  4379. This command defines how much free stack space a task or process must have
  4380. before SnoopDos will monitor one of its function calls. This is needed
  4381. because some tasks installed by devices have very small stacks and the
  4382. additional stack space used by SnoopDos would cause a crash if it tried
  4383. to monitor the function. (CrossDOS is one such example.)
  4384.  
  4385. <minstacksize> is the required amount of free stack space in bytes. Note
  4386. that this does not necessarily correspond to the total stack size for
  4387. the task, but to the free stack at the time the function call is made.
  4388.  
  4389. For example, a task with a 20K stack could use up 19.5K of space before
  4390. entering a SnoopDos patch (and so would be ignored if StackLimit was 500
  4391. or above) whereas a task with a 2K stack might only use 0.5K, leaving 1.5K
  4392. free for SnoopDos to use.
  4393.  
  4394. SnoopDos defaults to a stack limit of 1000 bytes. This should be more than
  4395. sufficient for most purposes, but if need be, this can be reduced to about
  4396. 600 bytes. You should only need to do this if you are trying to monitor
  4397. a particular task known to have a very small stack.
  4398.  
  4399. To determine the current stack size, SnoopDos uses the tc_SPLower and
  4400. tc_SPUpper values in the task structure. If a task or process has
  4401. allocated its own stack, then these may not be correct -- if this is
  4402. the case, SnoopDos will go ahead and monitor the function call anyway,
  4403. on the assumption that the application will have allocated a stack big
  4404. enough to handle SnoopDos's requirements.
  4405.  
  4406. Note that there is no way to set this option from within SnoopDos; you
  4407. must change it by editing the SnoopDos default settings file directly,
  4408. or by adding it as a tooltype to the SnoopDos icon.
  4409.  
  4410. SnoopDos automatically writes this command to the settings file when
  4411. you save settings.
  4412.  
  4413. See also: 'Command Index'  'PatchRamLib'
  4414.  
  4415. ----------------------------------------------------------------------------------
  4416. System
  4417. ----------------------------------------------------------------------------------
  4418.  
  4419. Command: SYSTEM
  4420.          NOSYSTEM
  4421.  
  4422. This command enables or disables monitoring of the System() dos.library
  4423. function. It is also available as a gadget in the 'Function' window.
  4424.  
  4425. System() is one of the most powerful functions in AmigaDOS. It allows
  4426. an arbitary command line to be executed, exactly as if it was typed at
  4427. a Shell prompt.
  4428.  
  4429. As with 'RunCommand' the 'Options' field shows the stack size allocated
  4430. for the command. The 'Result' field shows the return code from the command
  4431. (usually 0), or "Fail" if the command could not be executed.
  4432.  
  4433. SnoopDos automatically writes this command to the settings file when
  4434. you save settings.
  4435.  
  4436. See also: 'Command Index'  'Execute'  'RunCommand'
  4437.  
  4438. ----------------------------------------------------------------------------------
  4439. TaskPri
  4440. ----------------------------------------------------------------------------------
  4441.  
  4442. Command: TASKPRI <n>
  4443.  
  4444. Example: TASKPRI 5
  4445.  
  4446. This command is used to change the priority of the main SnoopDos process.
  4447. A selection of common priorities is available via the similarly named
  4448. menu item on the Project menu.
  4449.  
  4450. Normally, SnoopDos defaults to running at priority 0. However, you may
  4451. prefer to run at a higher or lower priority.
  4452.  
  4453. If SnoopDos runs at a priority above 0, then it can always keep up to
  4454. date when monitoring events. This is particularly true if you are using
  4455. 'SegTracker' to determine the calling module for each event, since
  4456. otherwise, a module can sometimes unload itself before SnoopDos has a
  4457. chance to ask SegTracker to locate it. However, running at a higher
  4458. priority can result in an increase in the number of task switches, which
  4459. can slow down your machine a little.
  4460.  
  4461. If SnoopDos runs at a priority lower than 0, then it will have very little
  4462. impact on system performance, even when its window is open.  However, the
  4463. output will only be updated when no other programs are waiting to run, so
  4464. it may appear in sudden bursts, rather than evenly. Even at a low priority,
  4465. SnoopDos will not miss any events.
  4466.  
  4467. SnoopDos automatically writes this command to the settings file when
  4468. you save settings.
  4469.  
  4470. See also: 'Command Index'  'Pause'
  4471.  
  4472. ----------------------------------------------------------------------------------
  4473. TextSpacing
  4474. ----------------------------------------------------------------------------------
  4475.  
  4476. Command: TEXTSPACING <n>
  4477.  
  4478. Example: TEXTSPACING 1
  4479.  
  4480. This command sets the number of extra pixels of space between adjacent
  4481. lines of output in the 'Main' window. You can also change the text
  4482. spacing using the menu option on the Windows menu.
  4483.  
  4484. If you are using a small font, increasing the spacing can make the output
  4485. easier to read. The valid values for <n> are 0, 1 or 2.
  4486.  
  4487. When the spacing is changed, the buffer contents will be immediately
  4488. redrawn using the new spacing. However, the position of the window gadgets
  4489. will not be adjusted until the next time the window is resized. Thus, you
  4490. may find that if you resize the window slighly, you can fit an extra line
  4491. of text as the gadgets reposition themselves to accomodate the change.
  4492.  
  4493. SnoopDos automatically writes this command to the settings file when
  4494. you save settings.
  4495.  
  4496. See also: 'Command Index'  'ShowGadgets'  'ShowStatus'
  4497.  
  4498. ----------------------------------------------------------------------------------
  4499. Unpause
  4500. ----------------------------------------------------------------------------------
  4501.  
  4502. Command: UNPAUSE
  4503.  
  4504. This command undoes the effect of the 'Pause' command. It can be accessed
  4505. by deselecting the Pause menu option in the Project menu or the Pause gadget
  4506. in the main window. You can also press SHIFT-TAB to unconditionally cancel
  4507. any Pause or 'Disable' currently in effect.
  4508.  
  4509. Deselecting Pause allows any tasks that were previously in WAIT state to
  4510. resume operations. To allow such tasks to execute a single function call
  4511. and then go back into WAIT mode again, see the 'SingleStep' command.
  4512.  
  4513. See also: 'Command Index'  'Pause'  'SingleStep'
  4514.  
  4515. ----------------------------------------------------------------------------------
  4516. UseDeviceNames
  4517. ----------------------------------------------------------------------------------
  4518.  
  4519. Command: USEDEVICENAMES
  4520.          NOUSEDEVICENAMES
  4521.  
  4522. This command enables or disables SnoopDos's UseDeviceNames setting. This
  4523. setting can also be controlled via a gadget in the 'Function' window.
  4524.  
  4525. UseDeviceNames works together with the 'ShowFullPaths' setting. If
  4526. UseDeviceNames is enabled, then any filenames that are expanded to full
  4527. paths will be displayed using the disk device name. If disabled, then
  4528. the disk volume name is used instead.
  4529.  
  4530. For example, when UseDeviceNames is enabled, an expanded name might appear
  4531. as "HD0:Files/Data". The same name shown with UseDeviceNames disabled would
  4532. then appear as "System3.0:Files/Data".
  4533.  
  4534. Using the device name is often preferred, since device names are typically
  4535. only three characters in length, and so take up less space. They are also
  4536. normally unique, which can sometimes help to prevent confusion.
  4537.  
  4538. SnoopDos automatically writes this command to the settings file when
  4539. you save settings.
  4540.  
  4541. See also: 'Command Index'  'ShowFullPaths'
  4542.  
  4543. ----------------------------------------------------------------------------------
  4544. WindowFont
  4545. ----------------------------------------------------------------------------------
  4546.  
  4547. Command: WINDOWFONT "fontname.size"
  4548.  
  4549. Example: WINDOWFONT "helvetica.11"
  4550.  
  4551. This command selects the font used by SnoopDos for all window gadgets.
  4552. You can also change the font by using the font requester accessible
  4553. through the 'Settings' window.
  4554.  
  4555. Any font can be selected, and you must specify a size. If the font is too
  4556. large for a particular window, then SnoopDos automatically switches to a
  4557. smaller font for that window only.
  4558.  
  4559. SnoopDos automatically writes this command to the settings file when
  4560. you save settings.
  4561.  
  4562. See also: 'Command Index'  'BufferFont'
  4563.  
  4564. ----------------------------------------------------------------------------------
  4565. WindowWidth
  4566. ----------------------------------------------------------------------------------
  4567.  
  4568. Command: WINDOWWIDTH <size>
  4569.  
  4570. Example: WINDOWWIDTH 80
  4571.  
  4572. This command adjusts the width of the SnoopDos main window so that exactly
  4573. <size> number of characters can be displayed horizontally. If the main
  4574. window isn't open, then this command has no effect. If obtaining the
  4575. requested width would make the window too small or too large, SnoopDos
  4576. will get as close as possible to the width you asked for.
  4577.  
  4578. Zero is a special value which will make the width just wide enough to
  4579. fully display the current format string.
  4580.  
  4581. The main reason you might want to use this command is so that you can more
  4582. easily create a custom format suitable for outputting to a file or printer.
  4583. This is particularly true if you run Workbench at a high resolution like
  4584. 1024 x 768, where the SnoopDos window might be much wider than the usual
  4585. 80 characters.
  4586.  
  4587. Keep in mind that when SnoopDos is printing to a log file, it adds one
  4588. additional character at the start of each line. Usually that character is
  4589. a space, but it can sometimes be '\\' or '/' -- see the 'OpenLog' command
  4590. for more details. In any case, this extra character needs to be taken into
  4591. account when you set the window width. For example, a 79 character window
  4592. width will result in 80-character lines in the log file.
  4593.  
  4594. For convenience, the SnoopDos Windows menu offers several common window
  4595. widths via the "Change window width" submenu.
  4596.  
  4597. See also: 'Command Index'  'Format editor'
  4598.  
  4599.  
  4600. ----------------------------------------------------------------------------------
  4601. Menu_Index
  4602. ----------------------------------------------------------------------------------
  4603. SnoopDos provides the following menus in the 'Main' window.
  4604. Click on any item for additional information.
  4605.  
  4606.  'PROJECT'                        'WINDOWS'
  4607.  +----------------------+        +---------------------------+
  4608.  | 'Open log...      '    |        | 'Show setup...         '    |
  4609.  | 'Close log        '    |        | 'Show functions...     '    |
  4610.  | -------------------- |        | 'Show format...        '    |
  4611.  | '· Pause          '    |        | ------------------------- |
  4612.  | '· Disable        '    |        | 'Change window width   '    |
  4613.  | -------------------- |        | ------------------------- |
  4614.  | 'Single step      '    |        | 'Text spacing          '    |
  4615.  | -------------------- |        | 'Window type           '    |
  4616.  | 'Task priority    '    |        | 'Target name           '    |
  4617.  | -------------------- |        | 'Row selection key     '    |
  4618.  | 'Help...          '    |        | ------------------------- |
  4619.  | 'About...         '    |        | '· Show status line?   '    |
  4620.  | -------------------- |        | '· Show gadgets?       '    |
  4621.  | 'Hide             '    |        | ------------------------- |
  4622.  | 'Quit             '    |        | '· Auto-open on output?'    |
  4623.  +----------------------+        | '· Disable when hidden?'    |
  4624.                                  +---------------------------+
  4625.  
  4626.  'SETTINGS'                     'BUFFER'
  4627.  +----------------------+        +---------------------------+
  4628.  | 'Load...          '    |        | 'Copy window to clip   '    |
  4629.  | 'Save             '    |        | 'Copy buffer to clip   '    |
  4630.  | 'Save as...       '    |        | ------------------------- |
  4631.  | -------------------- |        | 'Save window...        '    |
  4632.  | 'Reset to defaults'    |        | 'Save buffer...        '    |
  4633.  | 'Last saved       '    |        | ------------------------- |
  4634.  | 'Restore          '    |        | 'Clear buffer          '    |
  4635.  | -------------------- |        +---------------------------+
  4636.  | '· Create icons?  '    |
  4637.  +----------------------+
  4638.  
  4639. ----------------------------------------------------------------------------------
  4640. Menu_Project
  4641. ----------------------------------------------------------------------------------
  4642.  
  4643. The SnoopDos project menu contains the following program options.
  4644. Click on any option for additional information.
  4645.  
  4646.       PROJECT MENU
  4647.      +------------------+
  4648.      | 'Open log...  '    |  Start logging output to a new file
  4649.      | 'Close log    '    |  Stop logging to current log file
  4650.      | ---------------- |
  4651.      | '· Pause      '    |  Pause all tasks calling monitored functions
  4652.      | '· Disable    '    |  Disable monitoring of all functions
  4653.      | ---------------- |
  4654.      | 'Single step  '    |  Advanced all paused processes by one step
  4655.      | ---------------- |
  4656.      | 'Task priority'    |  Change task priority of SnoopDos
  4657.      | ---------------- |
  4658.      | 'Help...      '    |  Call up contents page of Help file
  4659.      | 'About...     '    |  Display version and author information
  4660.      | ---------------- |
  4661.      | 'Hide         '    |  Close window and run in background
  4662.      | 'Quit         '    |  Remove SnoopDos from memory
  4663.      +------------------+
  4664.  
  4665. See also: 'Main window'  'Windows menu'  'Settings menu'  'Buffer menu'
  4666.  
  4667. ----------------------------------------------------------------------------------
  4668. Menu_Open_log
  4669. ----------------------------------------------------------------------------------
  4670.  
  4671. PROJECT MENU / OPEN LOG...
  4672.  
  4673. This menu option lets you open a new log file. An ASL file requester will be
  4674. displayed to let you choose the name of the log file. If you choose a file
  4675. which already exists, SnoopDos will give you the option of overwriting the
  4676. existing file, or appending new output to the end of the file.
  4677.  
  4678. If you want to log to a device rather than a disk file, type the device
  4679. name in the Directory gadget of the ASL requester (e.g. PRT:). In this
  4680. case, the filename should be left empty, unless you are logging to a CON:
  4681. window, when the filename should contain the last window option (which is
  4682. usually the window name or CLOSE).
  4683.  
  4684. When a log file is open, SnoopDos copies all output displayed in the main
  4685. window to that file, allowing a permanent record to be kept. Usually, the
  4686. format of the log file is the same as that displayed in the main window,
  4687. but you can change this using the 'LogFormat' option.
  4688.  
  4689. Note that unlike the 'Open log' button in the main window, this option will
  4690. always display a file requester. When a log file is open, this menu option
  4691. is disabled. Selecting the 'Close log' menu option enables it again.
  4692.  
  4693. See also: 'Project menu'  'Main window'  'OpenLog'
  4694.  
  4695. ----------------------------------------------------------------------------------
  4696. Menu_Close_log
  4697. ----------------------------------------------------------------------------------
  4698.  
  4699. PROJECT MENU / CLOSE LOG
  4700.  
  4701. This option is the counterpart of the 'Open log' menu option. It closes
  4702. any currently open log file. If no log file is open, then this option is
  4703. disabled.
  4704.  
  4705. See also: 'Project menu'  'Main window'  'CloseLog'
  4706.  
  4707. ----------------------------------------------------------------------------------
  4708. Menu_Pause
  4709. ----------------------------------------------------------------------------------
  4710.  
  4711. PROJECT MENU / PAUSE
  4712.  
  4713. Selecting this option causes any tasks that call a function monitored
  4714. by SnoopDos to pause before executing the function call. This allows you
  4715. to see the function parameters before the call is actually carried out.
  4716. You can then use the 'Single step' menu option to execute the call and
  4717. advance to the next one.
  4718.  
  4719. Deselecting this menu option will allow the tasks to run as normal again.
  4720. For a more comprehensive description, see the 'Pause' command.
  4721.  
  4722. See also: 'Project menu'  'Main window'  'Pause'
  4723.  
  4724. ----------------------------------------------------------------------------------
  4725. Menu_Disable
  4726. ----------------------------------------------------------------------------------
  4727.  
  4728. PROJECT MENU / DISABLE
  4729.  
  4730. Selecting this option disables monitoring of all functions. It corresponds
  4731. to the 'Disable' command.
  4732.  
  4733. This provides a convenient way to turn off SnoopDos without having to
  4734. quit, or individually deselect each function. To re-enable monitoring,
  4735. simply deselect the menu option.
  4736.  
  4737. See also: 'Project menu'  'Main window'  'Disable'
  4738.  
  4739. ----------------------------------------------------------------------------------
  4740. Menu_Single_step
  4741. ----------------------------------------------------------------------------------
  4742.  
  4743. PROJECT MENU / SINGLE STEP
  4744.  
  4745. This option works in conjunction with the 'Pause' menu option. Selecting
  4746. single step allows all currently paused tasks to execute the function they
  4747. are paused at. Each task will be automatically paused again the next time
  4748. it calls a function monitored by SnoopDos.
  4749.  
  4750. See also: 'Project menu'  'Main window'  'SingleStep'
  4751.  
  4752. ----------------------------------------------------------------------------------
  4753. Menu_Task_priority
  4754. ----------------------------------------------------------------------------------
  4755.  
  4756. PROJECT MENU / TASK PRIORITY
  4757.  
  4758. This menu option allows you to change the priority of the main SnoopDos
  4759. task. The submenu contains several common task priorities.
  4760.  
  4761. For more details about the benefits and tradeoffs of changing the task
  4762. priority, see the 'TaskPri' command.
  4763.  
  4764. See also: 'Project menu'  'Main window'  'TaskPri'
  4765.  
  4766. ----------------------------------------------------------------------------------
  4767. Menu_Help
  4768. ----------------------------------------------------------------------------------
  4769.  
  4770. PROJECT MENU / HELP
  4771.  
  4772. This option loads the SnoopDos help file into AmigaGuide, positioned
  4773. at the contents page. From there, you can access help on any aspect
  4774. of SnoopDos.
  4775.  
  4776. If you get an error requester saying "Can't open database", it means
  4777. that AmigaGuide cannot locate the SnoopDos.guide file. If you copy
  4778. the file into the SnoopDos program directory, or into HELP:English,
  4779. it should work properly.
  4780.  
  4781. See also: 'Project menu'  'Main window'  'Help'
  4782.  
  4783. ----------------------------------------------------------------------------------
  4784. Menu_About
  4785. ----------------------------------------------------------------------------------
  4786.  
  4787. PROJECT MENU / ABOUT
  4788.  
  4789. This option displays a requester with information about the author of
  4790. SnoopDos, the current version number, the distribution conditions, and
  4791. the ARexx port name.
  4792.  
  4793. See also: 'Project menu'  'Main window'
  4794.  
  4795. ----------------------------------------------------------------------------------
  4796. Menu_Hide
  4797. ----------------------------------------------------------------------------------
  4798.  
  4799. PROJECT MENU / HIDE
  4800.  
  4801. This option closes all the SnoopDos windows, but leaves SnoopDos monitoring
  4802. system activity in the background. It corresponds to the 'Hide' command.
  4803. If the 'HideMethod' is set to None, then this option is not available.
  4804.  
  4805. When SnoopDos is hidden, the main window can be re-opened by pressing the
  4806. currently defined 'HotKey'. Depending on the hide method, you may also be
  4807. able to open the SnoopDos AppIcon, or select the Show SnoopDos menu item
  4808. on the Workbench Tools menu.
  4809.  
  4810. See also: 'Project menu'  'Main window'  'Hide'
  4811.  
  4812. ----------------------------------------------------------------------------------
  4813. Menu_Quit
  4814. ----------------------------------------------------------------------------------
  4815.  
  4816. PROJECT MENU / QUIT
  4817.  
  4818. This option is used to unload SnoopDos from memory. It corresponds to the
  4819. 'Quit' command.
  4820.  
  4821. Note that if a call to one of the monitored functions is still in progress,
  4822. SnoopDos may not be able to exit immediately. See the documentation on the
  4823. Quit command for more details.
  4824.  
  4825. See also: 'Project menu'  'Main window'  'Quit'
  4826.  
  4827. ----------------------------------------------------------------------------------
  4828. Menu_Windows
  4829. ----------------------------------------------------------------------------------
  4830.  
  4831. The SnoopDos windows menu contains the following options which control the
  4832. four windows used by SnoopDos. Click on any option for more information.
  4833.  
  4834.      WINDOWS MENU
  4835.     +---------------------------+
  4836.     | 'Show setup...         '    |  Open the SnoopDos setup window
  4837.     | 'Show functions...     '    |  Open the SnoopDos function window
  4838.     | 'Show format...        '    |  Open the SnoopDos format editor window
  4839.     | ------------------------- |
  4840.     | 'Change window width   '    |  Change the number of text columns
  4841.     | ------------------------- |
  4842.     | 'Text spacing          '    |  Adjust the spacing between text lines
  4843.     | 'Window type           '    |  Select simple or smart refresh windows
  4844.     | 'Target name           '    |  Align target name field on left or right
  4845.     | 'Row selection key     '    |  Choose qualifier key for row selection
  4846.     | ------------------------- |
  4847.     | '· Show status line?   '    |  Turn on or off the SnoopDos status line
  4848.     | '· Show gadgets?       '    |  Turn on or off the main window gadgets
  4849.     | ------------------------- |
  4850.     | '· Auto-open on output?'    |  If set, automatically open for new output
  4851.     | '· Disable when hidden?'    |  If set, only monitor when window is open
  4852.     +---------------------------+
  4853.  
  4854. See also: 'Main window'  'Project menu'  'Settings menu'  'Buffer menu'
  4855.  
  4856. ----------------------------------------------------------------------------------
  4857. Menu_Show_setup
  4858. ----------------------------------------------------------------------------------
  4859.  
  4860. WINDOWS MENU / SHOW SETUP...
  4861.  
  4862. This menu option opens the SnoopDos 'Setup' window. It corresponds to the
  4863. 'OpenSetup' command.
  4864.  
  4865. If the window was already open, then it is brought to the front. If you
  4866. hold down SHIFT while selecting this option, then the window will be closed
  4867. instead.
  4868.  
  4869. See also: 'Windows menu'  'Main window'  'OpenSetup'
  4870.  
  4871. ----------------------------------------------------------------------------------
  4872. Menu_Show_functions
  4873. ----------------------------------------------------------------------------------
  4874.  
  4875. WINDOWS MENU / SHOW FUNCTIONS...
  4876.  
  4877. This menu option opens the SnoopDos 'Function' window. It corresponds to the
  4878. 'OpenFunction' command.
  4879.  
  4880. If the window was already open, then it is brought to the front. If you
  4881. hold down SHIFT while selecting this option, then the window will be closed
  4882. instead.
  4883.  
  4884. See also: 'Windows menu'  'Main window'  'OpenFunction'
  4885.  
  4886. ----------------------------------------------------------------------------------
  4887. Menu_Show_format
  4888. ----------------------------------------------------------------------------------
  4889.  
  4890. WINDOWS MENU / SHOW FORMAT...
  4891.  
  4892. This menu option opens the SnoopDos 'Format editor'. It corresponds to the
  4893. 'OpenFormat' command.
  4894.  
  4895. If the editor was already open, then it is brought to the front. If you
  4896. hold down SHIFT while selecting this option, then the editor will be closed
  4897. instead.
  4898.  
  4899. See also: 'Windows menu'  'Main window'  'OpenFormat'
  4900.  
  4901. ----------------------------------------------------------------------------------
  4902. Menu_Change_window_width
  4903. ----------------------------------------------------------------------------------
  4904.  
  4905. WINDOWS MENU / CHANGE WINDOW WIDTH
  4906.  
  4907. This menu option allows you to adjust the width of the main window, so
  4908. that a given number of text columns can be displayed. It corresponds to
  4909. the 'WindowWidth' command.
  4910.  
  4911. The sub menu provides several useful window widths. If you are designing
  4912. a format intended for output to a log file, you can set the window width
  4913. to 78 or 79 to ensure your format will fit neatly on a printed page or on
  4914. an 80 column screen.
  4915.  
  4916. Remember that information output to a log file requires one extra column
  4917. of space; see the 'OpenLog' command for more information.
  4918.  
  4919. In addition to the preset sizes, you can also select "Best Fit". This will
  4920. size the window so that it is exactly wide enough to fully display the
  4921. current format. If you have been resizing the SnoopDos window using the
  4922. mouse, this provides a convenient way to ensure you are not wasting any
  4923. horizontal space.
  4924.  
  4925. See also: 'Windows menu'  'Main window'  'WindowWidth'
  4926.  
  4927. ----------------------------------------------------------------------------------
  4928. Menu_Text_spacing
  4929. ----------------------------------------------------------------------------------
  4930.  
  4931. WINDOWS MENU / TEXT SPACING
  4932.  
  4933. This menu option allows you to alter the spacing between adjacent lines of
  4934. text in the main window. It corresponds to the 'TextSpacing' command.
  4935.  
  4936. You can choose 0, 1 or 2 pixels of extra spacing from the sub menu.
  4937. Different people prefer different settings; try all three, and choose
  4938. the one you like best.
  4939.  
  4940. See also: 'Windows menu'  'Main window'  'TextSpacing'
  4941.  
  4942. ----------------------------------------------------------------------------------
  4943. Menu_Window_type
  4944. ----------------------------------------------------------------------------------
  4945.  
  4946. WINDOWS MENU / WINDOW TYPE
  4947.  
  4948. This menu item allows you to select which type of refresh method you want
  4949. SnoopDos to use for each window. The two sub menu options correspond to
  4950. the 'SimpleRefresh' and 'SmartRefresh' commands.
  4951.  
  4952. Simple refresh windows take up less memory, and can operate faster on some
  4953. Amigas with third-party graphics cards. However, they are often slower,
  4954. since the Amiga has to recreate the contents of each window whenever it
  4955. is uncovered.
  4956.  
  4957. Smart refresh windows take up more memory but operate much more quickly
  4958. on unaccelerated Amigas.
  4959.  
  4960. Try both settings, and decide which you like best.
  4961.  
  4962. See also: 'Windows menu'   'Main window'
  4963.           'SimpleRefresh'  'SmartRefresh'
  4964.  
  4965. ----------------------------------------------------------------------------------
  4966. Menu_Target_name
  4967. ----------------------------------------------------------------------------------
  4968.  
  4969. WINDOWS MENU / TARGET NAME
  4970.  
  4971. This menu option allows you to choose which way you want the 'Target name'
  4972. field displayed in the main window. It corresponds to the 'LeftAligned'
  4973. and 'RightAligned' commands.
  4974.  
  4975. If the target name is left aligned, it looks just like any other output
  4976. column. If it is right aligned, then when a name is too long to be fully
  4977. displayed in the column, the rightmost portion of the name is displayed
  4978. instead of the leftmost portion. This is indicated by a '«' symbol in
  4979. the first column of the name.
  4980.  
  4981. Right aligned is particularly useful if you are using the 'ShowFullPaths'
  4982. option, since it allows you to see the filename at the end of a long path,
  4983. instead of the device or volume name at the start.
  4984.  
  4985. The menu shortcut key for the two options are set to RAmiga-[ and RAmiga-]
  4986. (for left and right aligned respectively); this makes it easy to switch to
  4987. right aligned mode if you see a long target name, and immediately switch
  4988. back to left aligned once you have seen the ending.
  4989.  
  4990. See also: 'Windows menu'  'Main window'  'LeftAligned'  'RightAligned'
  4991.  
  4992. ----------------------------------------------------------------------------------
  4993. Menu_Row_selection_key
  4994. ----------------------------------------------------------------------------------
  4995.  
  4996. WINDOWS MENU / ROW SELECTION KEY
  4997.  
  4998. SnoopDos allows you to highlight lines of output in the main window by
  4999. clicking on them. This allows you to quickly identify all the components
  5000. of an event by providing a horizontal guide for your eyes to follow.
  5001.  
  5002. Normally, a click on its own is sufficient. However, if you use a click-
  5003. to-front window utility, then the "ghost" flash of a line being briefly
  5004. highlighted when you click the SnoopDos window to the front can become
  5005. distracting.
  5006.  
  5007. This menu option allows you to choose a qualifier key (SHIFT, ALT or CTRL)
  5008. which must be held down before you can highlight lines of output. By using
  5009. a qualifier which is different to the qualifier used for your click-to-
  5010. front utility, you can avoid this annoying effect.
  5011.  
  5012. A range of qualifier types are listed in the sub menu. The "Ignore" option
  5013. should be selected if you don't use a click-to-front utility -- it tells
  5014. SnoopDos not to pay any attention to what key is pressed when you click
  5015. the mouse.
  5016.  
  5017. The "None" option makes SnoopDos explicitly check that no qualifier keys
  5018. are pressed while the row is being selected. Select this if your click-to-
  5019. front utility uses a keyboard qualifier itself such as SHIFT.
  5020.  
  5021. The SHIFT, ALT and CTRL options indicate that the appropriate key must
  5022. be held down for row highlighting to work. The "All" option is similar,
  5023. but allows any of the thee qualifier keys to be held down, rather than
  5024. a specific one. If your click-to-front utility doesn't use a qualifier
  5025. key itself, then "All" is the best option to choose.
  5026.  
  5027. See also: 'Windows menu'  'Main window'  'Event output'  'RowQualifier'
  5028.  
  5029. ----------------------------------------------------------------------------------
  5030. Menu_Show_status_line
  5031. ----------------------------------------------------------------------------------
  5032.  
  5033. WINDOWS MENU / SHOW STATUS LINE?
  5034.  
  5035. This menu option allows you to control whether or not the status line
  5036. should be displayed in the main window. It corresponds to the 'ShowStatus'
  5037. and 'HideStatus' commands.
  5038.  
  5039. Hiding the status line allows more room for event output. However, leaving
  5040. it visible allows you to ascertain SnoopDos's current state at a glance.
  5041. Try both settings and see which you prefer.
  5042.  
  5043. See also: 'Windows menu'  'Main window'  'ShowStatus'  'HideStatus'
  5044.  
  5045. ----------------------------------------------------------------------------------
  5046. Menu_Show_gadgets
  5047. ----------------------------------------------------------------------------------
  5048.  
  5049. WINDOWS MENU / SHOW GADGETS?
  5050.  
  5051. This menu option allows you to control whether or not the button gadgets
  5052. should be displayed in the main window. It corresponds to the 'ShowGadgets'
  5053. and 'HideGadgets' commands.
  5054.  
  5055. Hiding the gadgets allows more room for event output. However, leaving
  5056. them visible allows you to carry out common actions quickly using the
  5057. mouse. All the gadgets have equivalent menu items which you can use when
  5058. the gadgets are hidden. You can also continue to use the gadget keyboard
  5059. shortcuts when they are hidden.
  5060.  
  5061. See also: 'Windows menu'  'Main window'  'ShowGadgets'  'HideGadgets'
  5062.  
  5063. ----------------------------------------------------------------------------------
  5064. Menu_Auto_open_on_output
  5065. ----------------------------------------------------------------------------------
  5066.  
  5067. WINDOWS MENU / AUTO-OPEN ON OUTPUT?
  5068.  
  5069. This menu option controls whether or not SnoopDos should automatically
  5070. open if an event occurs while it is hidden. It corresponds to the
  5071. 'AutoOpen' command.
  5072.  
  5073. Normally, you will want to leave this option disabled, since otherwise,
  5074. SnoopDos would rarely run in the background for very long before being
  5075. automatically opened again, defeating the purpose.
  5076.  
  5077. However, occasionally, you are waiting for a task to carry out one specific
  5078. action. In these circumstances, it can be convenient to be able to close
  5079. the SnoopDos window, confident that you will not miss the vital event when
  5080. it happens.
  5081.  
  5082. See also: 'Windows menu'  'Main window'  'AutoOpen'
  5083.  
  5084. ----------------------------------------------------------------------------------
  5085. Menu_Disable_when_hidden
  5086. ----------------------------------------------------------------------------------
  5087.  
  5088. WINDOWS MENU / DISABLE WHEN HIDDEN?
  5089.  
  5090. This menu option controls whether or not SnoopDos should automatically
  5091. stop monitoring all functions when it is running in the background. It
  5092. corresponds to the 'DisableWhenHidden' command.
  5093.  
  5094. Usually, you will want to leave this option disabled. However, if you
  5095. only use SnoopDos occasionally, but still like the convenience of having
  5096. it always available at the press of a hotkey, enabling this option will
  5097. allow you to keep SnoopDos loaded and ready, without slowing down your
  5098. system.
  5099.  
  5100. See also: 'Windows menu'  'Main window'  'DisableWhenHidden'
  5101.  
  5102. ----------------------------------------------------------------------------------
  5103. Menu_Settings
  5104. ----------------------------------------------------------------------------------
  5105.  
  5106. The SnoopDos settings menu contains options that control the saving and
  5107. restoring of program settings. Click on any option for more information.
  5108.  
  5109.   SETTINGS MENU
  5110.  +----------------------+
  5111.  | 'Load...          '    |  Load in a new settings file
  5112.  | 'Save             '    |  Save the current settings as defaults
  5113.  | 'Save as...       '    |  Save the current settings to a new file
  5114.  | -------------------- |
  5115.  | 'Reset to defaults'    |  Install the standard SnoopDos settings
  5116.  | 'Last saved       '    |  Install the most recently saved settings
  5117.  | 'Restore          '    |  Restore the settings loaded at the start
  5118.  | -------------------- |
  5119.  | '· Create icons?  '    |  If set, save icons with settings files
  5120.  +----------------------+
  5121.  
  5122. See also: 'Main window'  'Project menu'  'Windows menu'  'Buffer menu'
  5123.  
  5124. ----------------------------------------------------------------------------------
  5125. Menu_Load
  5126. ----------------------------------------------------------------------------------
  5127.  
  5128. SETTINGS MENU / LOAD...
  5129.  
  5130. This menu option allows you to load in a SnoopDos settings file. It
  5131. corresponds to the 'LoadSettings' command.
  5132.  
  5133. A settings file is simply a standard text file which contains a list
  5134. of SnoopDos commands to execute. Usually this will have been created
  5135. by SnoopDos itself as a result of an earlier 'SaveSettings' command,
  5136. but it can also be created by the user.
  5137.  
  5138. The first line must read "<SnoopDos Settings>" or the file won't be
  5139. recognised as a valid settings file.
  5140.  
  5141. See also: 'Settings menu'  'Main window'  'LoadSettings'
  5142.  
  5143. ----------------------------------------------------------------------------------
  5144. Menu_Save
  5145. ----------------------------------------------------------------------------------
  5146.  
  5147. SETTINGS MENU / SAVE
  5148.  
  5149. This menu option saves the current SnoopDos settings to the default
  5150. settings file, as defined by the 'Settings' command. It corresponds
  5151. to the 'SaveDefSettings' command. You can achieve the same effect
  5152. by selecting the Save Settings gadget in the main window.
  5153.  
  5154. The next time you start SnoopDos, these settings will be automatically
  5155. loaded. This allows you to maintain your favourite configuration from
  5156. session to session.
  5157.  
  5158. See also: 'Settings menu'  'Main window'  'SaveDefSettings'
  5159.  
  5160. ----------------------------------------------------------------------------------
  5161. Menu_Save_as
  5162. ----------------------------------------------------------------------------------
  5163.  
  5164. SETTINGS MENU / SAVE AS...
  5165.  
  5166. This menu option allows you to save the current settings to a file of
  5167. your choice. It corresponds to the 'SaveSettings' command.
  5168.  
  5169. This can be useful as a starting point for generating a custom settings
  5170. file. It can also be a convenient way to produce a printed list of your
  5171. current settings for future reference -- simply enter PRT: in the drawer
  5172. field of the ASL file requester.
  5173.  
  5174. See also: 'Settings menu'  'Main window'  'SaveSettings'
  5175.  
  5176. ----------------------------------------------------------------------------------
  5177. Menu_Reset_to_defaults
  5178. ----------------------------------------------------------------------------------
  5179.  
  5180. SETTINGS MENU / RESET TO DEFAULTS
  5181.  
  5182. This menu option provides a convenient way to install the default settings
  5183. that SnoopDos uses when you start it with no configuration file. This is
  5184. useful if you've managed to change the settings so much that you just
  5185. want to start again.
  5186.  
  5187. See also: 'Settings menu'  'Main window'  'LoadSettings'
  5188.  
  5189. ----------------------------------------------------------------------------------
  5190. Menu_Last_saved
  5191. ----------------------------------------------------------------------------------
  5192.  
  5193. SETTINGS MENU / LAST SAVED
  5194.  
  5195. This menu option allows you to reload the last set of settings that were
  5196. saved to disk. Usually, this will be the set that SnoopDos loaded during
  5197. initialisation, but if you have saved settings since starting, then the
  5198. more recent set is used instead.
  5199.  
  5200. The file is actually read back in from disk as if you used 'LoadSettings'
  5201. so if you have been editing the disk copy by hand, your changes will take
  5202. effect.
  5203.  
  5204. You might find this option useful if you make a change to the settings
  5205. (especially the display format) and then change your mind -- by selecting
  5206. this option, you can quickly undo the change.
  5207.  
  5208. See also: 'Settings menu'  'Main window'  'LoadSettings'
  5209.  
  5210. ----------------------------------------------------------------------------------
  5211. Menu_Restore
  5212. ----------------------------------------------------------------------------------
  5213.  
  5214. SETTINGS MENU / RESTORE
  5215.  
  5216. This option restores the settings that SnoopDos loaded during its
  5217. initialisation.
  5218.  
  5219. This is useful if you are playing with the settings and then accidentally
  5220. press Save Settings, which makes your changes permanent. By selecting
  5221. Restore, you can get back the original settings and then resave them again.
  5222.  
  5223. See also: 'Settings menu'  'Main window'  'LoadSettings'
  5224.  
  5225. ----------------------------------------------------------------------------------
  5226. Menu_Create_icons
  5227. ----------------------------------------------------------------------------------
  5228.  
  5229. SETTINGS MENU / CREATE ICONS?
  5230.  
  5231. This menu option controls whether or not SnoopDos creates icons for any
  5232. settings files it saves. It corresponds to the 'CreateIcons' command.
  5233.  
  5234. Creating icons is convenient, because it allows you to manipulate settings
  5235. files from Workbench. You can double-click on a settings file to load the
  5236. settings into SnoopDos (assuming SnoopDos is in the same directory or in
  5237. your AmigaDOS path) and you can also add additional commands to the tool
  5238. types for that icon to perform actions like opening a log file. See the
  5239. 'Settings files' section for more information.
  5240.  
  5241. Note that no icon is saved for the defaults file -- if you want it to
  5242. have an icon, use the 'Save as' Settings menu option.
  5243.  
  5244. See also: 'Settings menu'  'Main window'  'CreateIcons'
  5245.  
  5246. ----------------------------------------------------------------------------------
  5247. Menu_Buffer
  5248. ----------------------------------------------------------------------------------
  5249.  
  5250. The SnoopDos buffer menu contains options that control the saving and
  5251. clearing of the event buffer. Click on any option for more information.
  5252.  
  5253.         BUFFER MENU
  5254.        +------------------------+
  5255.        | 'Copy window to clip'    |  Copy window contents to clipboard
  5256.        | 'Copy buffer to clip'    |  Copy buffer contents to clipboard
  5257.        | ---------------------- |
  5258.        | 'Save window...     '    |  Save window contents to a file
  5259.        | 'Save buffer...     '    |  Save buffer contents to a file
  5260.        | ---------------------- |
  5261.        | 'Clear buffer       '    |  Clear all events from event buffer
  5262.        +------------------------+
  5263.  
  5264. See also: 'Main window'  'Project menu'  'Windows menu'  'Settings menu'
  5265.  
  5266. ----------------------------------------------------------------------------------
  5267. Menu_Copy_window_to_clip
  5268. ----------------------------------------------------------------------------------
  5269.  
  5270. BUFFER MENU / COPY WINDOW TO CLIP
  5271.  
  5272. This menu option copies the current contents of the main window to the
  5273. clipboard. It corresponds to the 'CopyWindow' command.
  5274.  
  5275. This is convenient if you want to copy a portion of the SnoopDos event
  5276. output into a word processor or text editor -- you can simply position the
  5277. window to display the portion you're interested in, select Copy Window,
  5278. and then select Paste in your editor.
  5279.  
  5280. If the window width is too narrow to display a full line of event output,
  5281. only the portion displayed inside the window will be copied. You can use
  5282. the 'Copy buffer' menu option to copy the entire buffer to the clipboard.
  5283.  
  5284. See also: 'Buffer menu'  'Main window'  'CopyWindow'
  5285.  
  5286. ----------------------------------------------------------------------------------
  5287. Menu_Copy_buffer_to_clip
  5288. ----------------------------------------------------------------------------------
  5289.  
  5290. BUFFER MENU / COPY BUFFER TO CLIP
  5291.  
  5292. This menu option copies the entire contents of the event buffer to the
  5293. clipboard. It corresponds to the 'CopyBuffer' command.
  5294.  
  5295. This is convenient if you want to copy the SnoopDos event output into a
  5296. word processor or text editor -- you can simply select Copy Buffer, and
  5297. then select Paste in your editor.
  5298.  
  5299. Since the entire buffer contents are copied, you should think carefully
  5300. before using this option, especially if there has been a lot of output.
  5301. You may find it more useful to use the 'Copy window' menu option, which
  5302. only copies the text displayed in the main window, rather than the entire
  5303. buffer.
  5304.  
  5305. See also: 'Buffer menu'  'Main window'  'CopyBuffer'
  5306.  
  5307. ----------------------------------------------------------------------------------
  5308. Menu_Save_window
  5309. ----------------------------------------------------------------------------------
  5310.  
  5311. BUFFER MENU / SAVE WINDOW...
  5312.  
  5313. This menu option allows you to save the current contents of the main
  5314. window to a file. It corresponds to the 'SaveWindow' command.
  5315.  
  5316. If the window width is too narrow to display a full line of event output,
  5317. only the portion displayed in the window will be saved.
  5318.  
  5319. See also: 'Buffer menu'  'Main window'  'SaveWindow'
  5320.  
  5321. ----------------------------------------------------------------------------------
  5322. Menu_Save_buffer
  5323. ----------------------------------------------------------------------------------
  5324.  
  5325. BUFFER MENU / SAVE BUFFER...
  5326.  
  5327. This menu option allows you to save the entire contents of the event
  5328. buffer to a file. It corresponds to the 'SaveBuffer' command.
  5329.  
  5330. This is very convenient if you have been monitoring a program's activities
  5331. and decide too late that you should have opened a log file; you can use
  5332. this option to save a permanent record of the program's actions.
  5333.  
  5334. See also: 'Buffer menu'  'Main window'  'SaveBuffer'
  5335.  
  5336. ----------------------------------------------------------------------------------
  5337. Menu_Clear_buffer
  5338. ----------------------------------------------------------------------------------
  5339.  
  5340. BUFFER MENU / CLEAR BUFFER
  5341.  
  5342. This menu option erases all the output currently stored in the event
  5343. buffer. It corresponds to the 'ClearBuffer' command.
  5344.  
  5345. Clearing the buffer is always a good idea before you start monitoring
  5346. the activities of a new program, because it avoids confusing output from
  5347. that program with the output of programs that were run earlier.
  5348.  
  5349. In addition, the event sequence numbers start counting from one again,
  5350. which makes it easier to keep track of new events.
  5351.  
  5352. See also: 'Buffer menu'  'Main window'  'ClearBuffer'
  5353.  
  5354.  
  5355. ----------------------------------------------------------------------------------
  5356. Index
  5357. ----------------------------------------------------------------------------------
  5358.  
  5359.                 -- SNOOPDOS INDEX --
  5360.  
  5361.    'Action field     '        'Keyboard support '
  5362.    'ARexx monitoring '
  5363.    'ARexx support    '        'Language support '
  5364.    'Author           '        'Log files        '
  5365.  
  5366.    'Call addr field  '        'Main window      '
  5367.    'CLI usage        '        'Menu options     '
  5368.    'Clipboard support'
  5369.    'Command index    '        'Options field    '
  5370.    'Command syntax   '
  5371.    'Contents         '        'Packet debugging '
  5372.    'Count field      '        'Pause            '
  5373.    'Credits          '        'Process name     '
  5374.    'Custom log output'
  5375.                  'Quickstart       '
  5376.    'Date field       '        'Quitting SnoopDos'
  5377.    'Disable          '
  5378.    'Distribution     '        'Ramlib Patch     '
  5379.                 'Result field     '
  5380.    'Event headings   '        'ROM monitoring   '
  5381.    'Event output     '
  5382.                 'Segment name     '
  5383.    'Font support     '        'Settings files   '
  5384.    'Format editor    '        'Setup window     '
  5385.    'Format fields    '        'Single step      '
  5386.    'Function window  '        'Stack limit      '
  5387.                 'Status line      '
  5388.    'GNU C support    '
  5389.                 'Target name field'
  5390.    'History          '        'TaskID field     '
  5391.    'Hotkey support   '        'Time field       '
  5392.    'Hunk:Offset field'
  5393.                 'What's new       '
  5394.    'Icon support     '        'Workbench usage  '
  5395.    'Iconify          '
  5396.    'Ignoring tasks   '
  5397.    'Introduction     '
  5398.