home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 229.lha / UtilityManager_v1.1 / ReadMe.j < prev    next >
Text File  |  1989-04-07  |  23KB  |  462 lines

  1.  
  2. Amigo : UtilityManager 1.1 © 1989 Dennis Janssen
  3.  
  4. Quick Startup Info:
  5.  
  6.   To start aum copy the included files ".aum" and "directory2" to your "s:"
  7. directory or assign "s:" to the directory where you placed these files.  Then
  8. change directory to the directory with "aum" in it or copy "aum" to your "c:"
  9. directory. You must always have the DOS command "run" in your "c:" directory to
  10. use any DOS commands from aum. Now type "aum" at a cli or click on the "WB-AUM"
  11. icon. This will open a window with gadgets also there is a menu which can be
  12. seen by using the right mouse (menu) button.
  13.  
  14. Aum 1.1 ReadMe.i
  15.  
  16. Contents
  17.   1.Introduction - Feature Overview
  18.      1.1.Brief Feature List
  19.   2.***How to get Aum started***
  20.   3.Using an included example - directory2
  21.   4.Idiosyncrasies of aum: don't use spaces in filenames; path
  22.   5.Purchasing Information - how to get the documentation details
  23.   6.Regarding Version Numbering
  24.   7.Version History
  25.   8.A note on the distribution of aum
  26.   Appendix - interprocess communication for software developers
  27.  
  28. 1. Introduction - Feature Overview
  29.  
  30.   Aum is a graphical, mouse operated, programmable DOS manager, or shell.  It
  31. allows the user to easily use the elements of the Amiga's graphical interface -
  32. windows, gadgets, menus and requesters - plus key assignments, timers, alarms
  33. and macros to build an operating or programming environment where the main
  34. interaction with DOS is through the mouse while retaining all the power of the
  35. CLI.
  36.   There are also many internal commands and features such as command
  37. history, fast directories, variables, a mouse window manager and timed
  38. screen blanking.
  39.   The operating environment is built with what I call "command objects". These
  40. can be represented graphically by menus or gadgets, or non-graphically by key
  41. assignments, timers, alarms or macros.  The user determines a list of commands
  42. to be associates with each command object.  When a command object is selected or
  43. activated (eg. selecting a menu item or clicking a gadget) the command list
  44. associated with it is sent to aum's command preprocessor and interpreter.
  45.   The preprocessor basically expands variables and breaks up the command list
  46. into individual commands and sends the individual commands to the command
  47. interpreter which is in charge of executing the command. If the command is a
  48. built in command then the command will be executed internally else the command
  49. will be simply passed to DOS for execution as if it were typed at the CLI.
  50.   The command objects are built with the commands _MenuItem, _MenuSubItem,
  51. _Gadget, _StringGadget, _DisplayGadget, _Key, _Timer, _Alarm, and _Macro. These
  52. commands will be referred to as the "command object building commands". The
  53. gadget commands can only be used in a file and they will automatically create a
  54. window (see the section Gadget Positioning).  The other commands can be used in
  55. a file or as a part of other commands.
  56.   To build the initial command objects one puts the desired command object
  57. building commands in the file s:.aum.  Aum automatically reads that file when it
  58. begins. You can have aum read another file when it begins by explicitly giving
  59. it as a command line argument to the aum DOS command. Eg. aum <filename>.
  60.  
  61. 1.1.Brief Feature List
  62.     ------------------
  63.     1.Menus : multiple switchable menu strips with optional subitems
  64.     2.Gadgets
  65.         2.1.Boolean Gadgets
  66.         2.2.String Gadgets : with optional command history functions
  67.     3."File requester" gadgets that are resizeable, can display directories,
  68.         command history and the internal directory list.  They also have
  69.         programmable toggle commands for each list.
  70.     4.Fast Directories : Fast internal directory lists for practically
  71.         instantaneous redisplaying of a directory once you've gotten that
  72.         directory making for quick re-traversal of the directory tree of
  73.         multiple volumes; with updating if and only if necessary.
  74.     5.Command History : Multiple simultaneous history string gadgets are fully
  75.         supported.  The associated command history lists can be preset,
  76.         deleted from, displayed and operated on or executed from a display
  77.         gadget.
  78.     6.Multiple Windows
  79.     7.Key assignment of command lists, 8 optional qualifiers, 256 possibilities
  80.         per key
  81.     8.Timers : assignment of command lists to a count down timer
  82.     9.Alarms : assignment of command lists to specific times
  83.    10.Macros : aliases
  84.    11.Forty six built-in commands : including a simple debugger and a
  85.         conditional (_if, _else), screen blanking, auto window moving and
  86.         resizing, ipc, 46 in all.
  87.    12.Variables : 3 types of string variable including one to refer to a set of
  88.         selected files that has an implicit ("while") loop type control function
  89.    13.Automatic Requester commands ("?") for inserting user choice points in
  90.         command lists
  91.    14.Interprocess Communication : Aum accepts commands from other processes
  92.         through a separate program "send" (an executable included with the
  93.         released files). It also can send commands to any process that is
  94.         ready to receive its messages. Details for programmers about
  95.         receiving aum commands is given in the Appendix.
  96.    15.Input Handler : on/off switch for entire handler if you'd rather use a
  97.         different one
  98.       13.1.Programmable Mouse Accelerator : on/off and speed limit
  99.       13.2.Window Activation : "Sun Mouse" - on/off
  100.       13.3.Left mouse button - window to front if in a window and window is in
  101.              any way covered by another layer, screen to front if on screen
  102.       13.4.Left+Rignt mouse button - window to back if in a window, screen to
  103.              back if on a screen
  104.    16.Command preprocessor
  105.    17.Control Table : every reasonable variable of the system is controlled by
  106.         a control table which is in turn user controlled ; 66 variables
  107.         including colors, sizes, special characters of preprocessor, etc.
  108.    18.Error Codes for internal errors
  109.  
  110. 2. **** How to get Aum started ****
  111.  
  112.   Aum reads an initial "startup-file" which can be set as an argument the
  113. default is "s:.aum". In this file the user should place lists of his/her
  114. most used commands assigned to command objects as exemplified in the
  115. included files and explained in the documentation. After aum is activated
  116. the user then works in this environment activating the preset commands with
  117. the mouse through the command objects. In most cases, you shouldn't have to
  118. type commands for DOS once your most used commands have been preset in a
  119. "aum file". You may want to edit an existing command for fine tuning -
  120. changing options, etc.- this can be done in a  history gadget and again the
  121. history can be preset. You can also build commands from displayed strings
  122. using string gadgets and the options of the built-in _Variable command .
  123.  
  124.    **** How to get Aum started the first time ****
  125.  
  126.   To start aum copy the included files ".aum" and "directory2" to your "s:"
  127. directory or assign "s:" to the directory where you placed these files.
  128. Then change directory to the directory with "aum" in it or copy "aum" to
  129. your "c:" directory. You must always have the DOS command "run" in your
  130. "c:" directory to use any DOS commands from aum. Now type "aum" at a cli or
  131. click on the "WB-AUM" icon. This will open a window with gadgets also there
  132. is a menu which can be seen by using the right mouse (menu) button.
  133.  
  134.    **** How to get Aum started in general ****
  135.  
  136.   So in general to start aum from a CLI you can simply type "aum" or add as
  137. an argument any filename you wish to use as an alternate initialization
  138. file - "aum <filename>".
  139.   WB-AUM, an included executable file, is necesary for Workbench startups.
  140. It is simply a slightly modified version of the regular DOS 1.3 CLI command
  141. - it doesn't read "s:cli-startup" but instead starts aum.
  142.  
  143. Note: Again, you must always have the DOS command "run" in your "c:"
  144. directory to use any DOS commands from aum.
  145.  
  146. 3.Using the included example files
  147.  
  148.     Included with this release are a number of files which are adapted to
  149.   my paticular pattern of computer use.  You should modify them according
  150.   to your own individual needs.  This section is a explanation so you will
  151.   get an idea of some of the uses of Aum before you get the documentation.
  152.   Details of the meaning of each command, it's arguments, options and
  153.   special features are given in the documentation obtained by mail from me
  154.   as explained in the Purchasing section.  Below is a description of the
  155.   function of the different gadgets in the file "directory2".  This file is
  156.   read by the aum internal command "_read s:directory2" which is given in
  157.   the startup file "s:.aum".
  158.  
  159.     This window contains two large "display gadgets" also called file
  160.   requesters or directory gadgets, three string gadgets and a number of
  161.   other regular (boolean) gadgets.  Beneath each display gadget is an
  162.   associated string gadget which is used to display information related to
  163.   it's respective display gadget such as the currently displayed directory,
  164.   the number of total bytes/blocks of the selected files, the number of
  165.   free blocks on the current drive, or other user selected values.  Below
  166.   both of these string gadgets is another string gadget that is set up to
  167.   work as a "history gadget".  By hitting the up arrow key you get a
  168.   "previous" history, by hitting a down arrow you get a "next" history.
  169.   These can be and have been preset by the directory2 file. Whatever you
  170.   type there and hit return after (like a normal cli command) will be
  171.   executed and added to the history.
  172.     Note that these functions are not "set in concrete", they have been set
  173.   by the files read at startup and all can be modified to your own special
  174.   uses as explained in the documentation.  The number of gadgets, their
  175.   positions, names and corresponding functions are set by the files.
  176.   Similarly with the menus and keys (up and down arrow keys).
  177.  
  178.   Below is a list of the "names" of the gadget - the character symbols that
  179.   appear on the gadget - and a description of the command associated with
  180.   clicking on the gadget.  This information can also be obtained by examining
  181.   the files with the help of the documentation.  Some of the gadgets are not
  182.   listed since they are easy to understand from the ones listed, eg. "Delete1".
  183.  
  184. P  gets the Parent directory of the current directory
  185. U  Updates the current directory (any non-internal commands that changes a
  186.      directory may require an update for accuracy)
  187. T  Toggles all the lines in the display
  188. b  displays the total Bytes/blocks of the selected files
  189. d  displays the number of blocks available on the Device associated with the current
  190.      directory; helpful if you want to know if a disk has enough room for a copy of
  191.      the selected files
  192. List displays the internal List of directories
  193. Free frees an internal directory freeing the associated memory
  194. V directory of VD0:
  195. R directory of RAD:
  196. 0 directory of DF0:
  197. 1 directory of DF1:
  198. r Directory of RAM:
  199. Apd sets a variable to "-a" (append). This variable is used to control the mode
  200.   of the _Variable command used in the gadgets "v" and "vv" so that they will
  201.   append the contents of their associated string gadgets to the contents of the
  202.   central string gadget. (See Documentation for the _Variable command modes)
  203. Ins sets a variable to "-i" . This variable is used to control the mode
  204.   of the _Variable command used in the gadgets "v" and "vv" so that they will
  205.   insert the contents of their associated string gadgets at the cursor into the
  206.   central string gadget. (See Documentation for the _Variable command modes)
  207. Rep sets a variable to "-r" (replace). This variable is used to control the mode
  208.   of the _Variable command used in the gadgets "v" and "vv" so that they will replace
  209.   the contents of the central string gadget with the contents of their associated
  210.   string gadgets. (See Documentation for the _Variable command modes)
  211. Db+ switchs to Debug mode
  212. -   switchs back from debug mode
  213. Abt Abort the current command list
  214. v copies the value of the string gadget to the string gadget below using the mode
  215.     value (set above)
  216. vv copies the value of the string gadget + the first selected file name to the
  217.     string gadget below using the mode value (set above)
  218. + adds the value in the string gadget to its history list
  219. - deletes the value of the string gadget from the history list
  220. v sets the string gadget to the next position in the history list
  221. ^ sets the string gadget to the previous position in the history list
  222. "Copy1 %" copies the selected files of the first list display gadget to the directory
  223.   that is displayed in the center string gadget
  224. "Copy1 2" copies the selected files of the first list display gadget to the directory
  225.   that is displayed in the right upper string gadget
  226. - resizes the gadget window to normal size
  227. | resizes the gadget window larger
  228. W brings the cli output window to the front
  229. . resizes the cli output window to a point at 0 0
  230. = resizes the cli output window brings it back to original size and position
  231. + resizes the cli output window adjusts to full screen size
  232. Histry>1 displays the history list of the center string gadget and sets the "toggle
  233.     command" (see documentation) to allow execution of any displayed command by
  234.     simply selecting it with the left mouse button
  235. Histry>2 displays the history list of the center string gadget and sets the "toggle
  236.     command" (see documentation) to simply copy the command to the center
  237.     string gadget; from there it can be edited and/or executed
  238. 1 executes the commands selected in first display gadget
  239. "Run(1) 2" runs the commands selected in the first display gadget using as
  240.     arguments the filenames selected in the second list display gadget
  241.  
  242. Key assignments:
  243.  
  244. F1 If an aum window is active the F1 function key is set to close the aum
  245. windows, when hit again it reopens the windows and it will continue this cycle.
  246. This key has no function when other program window are active.
  247.  
  248. UP DOWN  (arrow keys) The up and down arrow keys adjust the command history list
  249. of the central string gadget when the gadget is activated by the left mouse
  250. button.  Note: These functions are not set if the CAPS LOCK or any other
  251. qualifier is active.
  252.  
  253. The file directory1 is a smaller version of directory2.
  254.  
  255. Please note that many features of aum do not have an example in the included files.
  256.  
  257. 9.Idiosyncrasies of aum: spaces in filenames; path ; current directory;
  258. "run" in you c:directory
  259.   Currently aum will not handle spaces in filenames.  This means you must change
  260. for example a volume with the name "Workbench 1.3" to something like
  261. "Workbench1.3" or "Workbench_1.3".
  262.   Set the paths you want (using the DOS path) before you execute aum, aum will
  263. not know about new paths that are added after aum is started.
  264.   To change directory you must use the internal command "_cd". The Dos command "cd"
  265. will not be effective.
  266.   You must always have the DOS command "run" in your "c:" directory to use any
  267. DOS commands from aum.
  268.  
  269. 5.Purchasing Information
  270.   The full documentation with all the details and examples regarding the use of
  271. Amigo Utility Manager is obtained by mail. Below is an outline of the
  272. documentation which is about 26 pages long.
  273.  
  274.           Introduction
  275.           1.Commands
  276.             1.1.Alphabetical Command List
  277.             1.2.Command names
  278.             1.3.Command Name Abbreviation
  279.             1.4.Special syntactic characters in the command format
  280.             1.5.Internal Commands
  281.             1.6.Command Arguments Reference Table
  282.             1.7.Command Error Codes
  283.           2.The Command Preprocessor
  284.           3.Variables
  285.           4.The Comand Interpreter
  286.           5.The Control Tables
  287.           6.Gadget Positioning
  288.           7.The Mouse Handler
  289.           8.Glossary of Special Terms
  290.           9.Idiosyncrasies of aum
  291.           Appendix 1: General aum syntax
  292.  
  293.   Pricing for version Aum1.1 :
  294.  
  295.       DOCS:    $9.95 for the documentation (please include the version number
  296.                      you have)
  297.       DISK:   $14.95 for the documentation and the latest version on a disk
  298.       SOURCE: $24.95 for the documentation, source code in C (with a
  299.                      makefile for Manx 3.6a) and the latest version on a disk
  300.  
  301.   Updates for registered users: DOCS: $5, DISK: $10, SOURCE: $15
  302.  
  303.   Çalifornia residents add sales tax - 7%
  304.   Outside North America add $2.00 postage and please exchange your currency for
  305. U.S. dollars before you send.
  306.   If you wish to use the aum interface in your product contact me regarding licensing.
  307.  
  308. Send your order to:
  309.  
  310.          Dennis Janssen
  311.          2452 Bancroft,#5
  312.          Berkeley,CA 94704
  313.  
  314.   Questions by interested parties and/or support for registered users is
  315. available by phone at 415-549-2400.
  316.  
  317.   I am also available for contract programming or consulting.
  318.  
  319.   Your comments, criticisms, suggestions, etc. are most appreciated but to make
  320. ordering by mail as simple for you as possible just a check is all you need send
  321. if your current address is on the check. Make a note on the check of your
  322. program version number (Aum1.1) and the code from the pricing section above
  323. (DOCS, DISK, or SOURCE) for the package you want.
  324.  
  325. 6.Regarding Version Numbering
  326.   Updates for the program itself will be coded as a version number increase.
  327. When I add new features I will make a change in the first two digits,
  328. corrections and improvements will be marked by changing the third digit.  An
  329. update for the readme of a particular version will be coded as a change in the
  330. appended letter.
  331.  
  332. 7.Version History
  333.   1.0a First released version
  334.   1.01-1.04 Some bug fixes that became apparent when aum was run in different
  335.               environments, e.g. locked hard drives
  336.   1.05-1.06 Internal improvements
  337.   1.07      Fixed so input handler so it will function properly when Workbench is
  338.               loaded - this affected the function of the example F1 key
  339.   1.08      the "-c" option with _Key doesn't work with a String Gadget because
  340.               Intuition swallows all keys - no RAWKEY IDCMP : use "-a" instead.
  341.               This affected the History in the center gadget
  342.   1.1       changed the _AdjustWindow into two commands: _MoveWindow and
  343.             _ResizeWindow, added another option to these commands
  344.   1.11      fixed the problem with some systems having a problem it startup
  345.             using the default filename (s:.aum); added "-n" option to
  346.             _MenuSwitch
  347.   1.12-1.15 fixed a bug in the _resize command; internal restructuring -
  348.             more "object oriented"
  349.   1.16      fixed a bug in the toggle command of 1.15; _ScreenOff now works
  350.             with multiple screens
  351.   1.17      fixed a problem with _closewindow; updated the example files;
  352.             Note : internal changes require use of the new example files
  353.             because the ordering in the command table was changed to
  354.             alphabetical to make it easier to explain and understand- sorry
  355.             about that
  356.   1.18      fixed a problem with _ScreenOff for stubborn screens
  357.  
  358. 8.A note on the distribution of aum.
  359.   Aum and the related files including the ReadMe but not including the
  360. purchased documentation and source code may be freely distributed to
  361. friends and to other bulletin boards.
  362.  
  363. Appendix 1: For programmer's who want to there programs to receive aum
  364. commands.
  365.   Below in Appendix 2 is  aum's internal _Send command the final channel
  366. through which all aum's interprocess communication messages pass.  The
  367. external Send (included) works the same way. As you can kinda see from the
  368. code this command takes as an argument the name of a port on the SysBase
  369. PortList and a command string, the message - _SendMessage <port> <message>.
  370.   To receive messages from aum here's what you do.  First you need to put
  371. your program's named message port on the system PortList with an AddPort()
  372. so aum can find you. Then check your port for a IntuiMessage with class set
  373. to AUM_MESSAGE_CLASS (0x01000000), if you get one, first make a copy of the
  374. command character string pointed to by the IntuiMessage's IAddress then
  375. Reply() the message. That's it.  Now you can do whatever processing you
  376. like with the message.
  377.  
  378. Example code:
  379.  
  380. #define AUM_MESSAGE_CLASS 0x01000000
  381.   struct MsgPort CommonPort;
  382.   CommonPort.mp_Node.ln_Name="YourNameHere";
  383.   ...
  384.   AddPort(&CommonPort);
  385.  
  386.   struct IntuiMessage *imessage ;
  387.   WaitPort(&CommonPort );
  388.   imessage=GetMsg(&CommonPort);
  389.   class=imessage->Class;
  390.   switch(class) {
  391.     ...
  392.     case AUM_MESSAGE_CLASS:
  393.       command=TemporaryCopyOfString(imessage->IAddress);
  394.       break;
  395.   }
  396.   ReplyMsg(imessage);
  397.   ReadEvaluateCommandList (command);
  398.  
  399.   Before you exit first take your port off the PortList with RemPort() so
  400. no other task can find you and attempt to send you a message while your
  401. exiting. You then need to Reply() to any remaining aum messages on your
  402. port list.
  403.  
  404.     RemPort(&CommonPort);
  405.     while(imessage=GetMsg(&CommonPort))ReplyMsg(imessage);
  406.     ...
  407.     exit();
  408.  
  409. Note: because in both my internal "_SendMessage" and external "Send" command
  410. there is a Forbid() before attempting to find the port there is no problems
  411. regarding exit timing.
  412. Aum is not dependent on any other response besides a Reply() but as you can
  413. see below does Wait() for that response before getting back to other
  414. business. Note: Aum always takes responsibility for freeing the message
  415. memory.
  416.   This provides a simple, effective interprocess communication mechanism. I
  417. used the IntuiMessage because many processes use an IÐCMP in their main
  418. input loop and since Intuition already puts those ports on the system
  419. PortList with a generic name ("IDCMP") sometimes all you need do is rename
  420. a Window UserPort.
  421.   As an example, my version of Matt Dillon's DME editor has been modified
  422. to function as described above.   Since dme (version 1.29) doesn't have
  423. command history I map the escape key to sending aum a message to open a
  424. borderless window with a history string gadget that mirrors the built-in
  425. command line mode of dme.  The history gadget has its <RETURN> key command
  426. set to send its contents to dme as a command, add the contents to its
  427. history list and then close the window.  Each time I hit the escape key the
  428. window with the history list is there.
  429.  
  430. Appendix 2: C Code for developers who want to be able to receive messages from
  431. aum.
  432.  
  433. long _SendMessage(){
  434.   char *port_name,*message;
  435.   long error_number;
  436.   struct IntuiMessage *our_message;
  437.   long message_length;
  438.   struct MsgPort *receiver_port, *port ;
  439.  
  440.   port_name=PtrContext->c_Arguments[0];
  441.   message=PtrContext->c_Arguments[1];
  442.   our_message=TemporaryObject(sizeof(struct IntuiMessage)+strlen(message)+1);
  443.   our_message->IAddress=our_message+1;
  444.   our_message->mn_ReplyPort=port=&((struct Process*)CurrentTask)->pr_MsgPort;
  445.   strcpy(our_message->IAddress,message);
  446.   our_message->Class=AUM_MESSAGE_CLASS;
  447.   Forbid();/* can't have the task try to exit while we're doing a PutMsg() */
  448.   receiver_port=FindNameCaseInsensitive(&SysBase->PortList, port_name);
  449.   if(receiver_port)PutMsg(receiver_port,our_message);
  450.   Permit();
  451.   if(receiver_port){
  452.     WaitPort(port);
  453.     GetMsg(port);
  454.     return(OK);
  455.   }
  456.   else return(CANT_FIND_PORT);
  457. }
  458.  
  459. Amigo : UtilityManager 1.1 © 1989 Dennis Janssen
  460.  
  461.  
  462.