Home » Archimedes archive » Archimedes World » archimedes_world_volume_15_issue_1_scp.adf » !ProFiler_ProFiler » !ProFiler/Dox/External
!ProFiler/Dox/External
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Archimedes archive » Archimedes World » archimedes_world_volume_15_issue_1_scp.adf » !ProFiler_ProFiler |
Filename: | !ProFiler/Dox/External |
Read OK: | ✔ |
File size: | 2CAC bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
<html><head><title>ProFiler External utilities</title></head> <body> <h1><center><u>ProFiler External Utilities</u></center></h1> <h2><i>Preliminary</i></h2> <i>The external utilities exist, but the construction of them, and how they communicate with the Filer, has not been defined completely. <p>It is possible, however, to give a loose explanation of how it works now, and the final documentation will most likely not differ much from this.</i> <h2>Types of utilites</h2> There are two main types of utilities. The first are Sprite Clients, the second are External Utilities. <p><b>Sprite Clients</b> are usually just raw modules, that support the relevant service calls. Their purpose is to provide alternative sprites in the directory viewers, e.g. picture thumbnails. <p><b>External Utilities</b> consist of a directory in Filer:Utilities. There is at least one program in this directory, which is the actual utility. There may also be an application to handle the choices for that utility. The program may be a module, in which case it can provide extention functions to the Filer menus. Or it might be a simple application, which relies on a (yet unwritten) Level1 module to execute it with the relevant parametres. <p>You should support Service_FilerEnumerateClients if you are a module. Otherwise you will not even get an entry in the menu. What to return depends on the capabilities of the module. If you are a program in Utilities, you can't support the service calls of course. Instead, the directory contents reflect your capabilities. The following list summarises this: <pre> Form Choices [DB] Dir contents ---------------------------------------------------------------------- Module AutoLoad 0 No !ExtChoice, dir may not exist Module Custom 0 !ExtChoice Module SCM CB Anything, might not exist Other None n/a No !Choices file. Other Custom n/a !ExtChoice Other SCM n/a No !ExtChoice, SCM !Choices file </pre> <i>Notes: <ul> <li><b>Form:</b> Type of program. <li><b>AutoLoad:</b> SC_Manager tries to provide this, if the module is in Filer:RM. <li><b>SCM:</b> Standard choices managed by SC_Manager. <li><b>[DB]:</b> Contents of first word in Description Block, see below. CB is an offset to an SCM list. 0 means that either there is a 0 in this word, or the actual pointer to it is 0. </ul></i> <p>Each client module may have a description block: <br><i>All offsets are from the start of the description block.</i> <pre> +0 Offset to list of SCM choices, or 0 if custom choices. +4 Offset to description of utility, or -1 if none +8 -1 if you think the block ends here. </pre> <p>The SCM choices list is a list of choices of different types. Each choice is laid out like this. Here, all offsets are from the start of the choices list: <pre> +0 Choice type, or -1 to end the list +4 Length of choice data, incl. the type and this word +8 Choice identifier, max 11 chars, padded with 0's to 12 bytes +20 The rest depends on the choice type: 0 Option +20 Offset to title text +24 Offset to help text +28 Default value (0 or -1) 1 Radio group +20 Number of entries in group +24 Default entry selected +28 Offset to title of entry 0 +32 Offset to help text of entry 0 +36 Offset to title of entry 1 +40 Offset to help text of entry 1 +44 etc. 2 String +20 Offset to title text +24 Offset to help text +28 Offset to validation string +32 Offset to default value +36 Maximum length of value 3 Number range +20 Offset to title text +24 Offset to help text +28 Lower bound +32 Upper bound +36 Step size +40 Default value +44 Precision 4 String set +20 Offset to title text +24 Offset to help text +28 Index of default string selected +32 Offset to set of strings </pre> <p>The list of functions looks like this. The offsets are from the start of the module, given when registering: <pre> +0 Function handle, to be filled out by Filer +4 Function identifier, max 11 chars, padded with 0's to 12 bytes +16 Offset to validation code or 0 if none +20 Offset to parameter code or 0 if none +24 Object ID of parameter window. Must be 0 initially, and will later be filled in by the Filer. +28 Offset to activating code or 0 if none +32 Offset to unknown event code or 0 if none +36 Menu number the function appears in, or 255 if none +37 Function flags bit0 Has parameter window bit1-7 Reserved +38 Reserved +39 Reserved +40 Suggested keycode &200 if none &204 if not allowed +44 Offset to initialisation code or 0 if none +48 Offset to list of addtional toolbox objects, or 0 if none +52 Reserved +56 Reserved +60 Reserved </pre> <i>Notes: <ul> <li><b>Identifiers:</b> These are strings of up to 11 chars. They need to be unique within the utility in question. This includes any future versions of it, and that is the main reason for the IDs. If a choice/function keeps on having the same effect, you should keep using the same ID. This will ensure that the user's settings are still considered valid. If, however, a choice/function changes effect significantly, you should also use a new ID for it. The user's previous setting is then discarded for that choice/function, and the default value is used. <li>The Full ID of a function is "UtilID_FuncID". <li>The suggested key code is used as default value if it isn't used already for another function. <li>The Messages file contains a description of what happens when the key shortcut is pressed. This should be short and to the point, e.g. "Open 'Copy'". The token <samp>K_<util>_<function></samp> is searched for. <li>There may also be an <samp>M_<util>_<function></samp> text in the Messages file. This is used for the menu entry if it exists. If not, the function ID is used. <li>The SCM !Choices file is equivalent to the SCM choices list described above. All the offsets are from the start of the file. </ul></i> <h3>Initialisation code</h3> Called to initialise the function. If the function has a parameter window, it should be created, and its ID returned. The window will usually contain an OK button or similar, and this gadget should be set up to return the event given in R0. Before this entry is called, the Filer will have loaded the 'Res' file in the utility directory if present. <pre>On entry R0 Activate event R11 Base of service entries, see below On exit R1 ID of parameter window, or 0 if none R12 Preserved </pre> <h3>Validation code</h3> Called to validate the function. None of the other entries will be called, if this code returns 'invalid'. If no code exists, the other entries are considered valid. <pre>On entry R0 Number of objects selected R1 0 R2 ->Viewer R11 Base of service entries, see below On exit R1 bit0 Invalid - shaded bit1 Ticked bit2-31 Reserved, must be 0 R12 Preserved </pre> <h3>Parameter code</h3> Called just before the parameter window is opened, either because the submenu arrow is followed, or when the key shortcut for a function with parametres is pressed. The function can set up the icons in the window according to the current selection. <pre>On entry R0 Number of objects selected R1 ID of parameter window as returned from init code R2 ->Viewer R11 Base of service entries, see below On exit R12 Preserved </pre> <h3>Activate code</h3> Called when the function is activated, in one of 3 ways: <br>1. Selecting its menu entry if there is no parameter window. <br>2. Making the parameter window generate the activate event (usually by clicking an OK button). <br>3. Pressing the key shortcut if there is no parameter window. <pre>On entry R0 Number of objects selected R1 ID of parameter window as returned from init code R2 ->Viewer R11 Base of service entries, see below On exit R12 Preserved </pre> <h3>Unknown event code</h3> Called when receiving an unknown toolbox event from the function's parameter window. Events from &FF00 to &FFFF are reserved for external utilities. You can make your window generate these events, and this entry will be called. If any other event above &FFFF (i.e. the toolbox events) are received, it will also be passed on to you if it comes from your window. If you need to receive events from other windows you may have created, you can put the appropriate IDs into a list. The list should end with a 0 word. <pre>On entry R0 Number of objects selected R1 Event related object ID R2 ->Viewer R3 Event code R5 ->Event block R6 Event related component ID R11 Base of service entries, see below On exit R12 Preserved </pre> <h2>Service entries</h2> Service entries are just useful routines in the Filer, that may be used by the function code. These routines could have been SWIs, but aren't for several reasons: <ul> <li>There is almost no overhead when calling the routines this way. <li>There will be many of these, and it would require several SWI chunks. <li>It is much easier to retain backwards compatibility if a routine is later withdrawn or replaced. </ul> When calling one of these routines, you should use FNcall in ExtLib. If you aren't using the Basic Assembler, simply do the equivalent of this: <pre>ADR R14,return ADD PC,R11,#SE*4 .return </pre> SE is the routine number, and they are defined as variables in ExtLib. <br>The currently defined routines are: <h3>SE_GetSelected</h3> <pre>On entry: R2 ->Viewer R3 Preserved from last call, or 0 to start On exit: R3 Next selected object (0 if none) </pre> This routine is used to find out what objects are selected. This routine, and SE_ScanSelection are the two main ways of deciding what objects to operate on. <h3>SE_ScanSelection</h3> <pre>On entry: R2 ->Viewer R3 Recurse mode 0 No recursion 1 *Reserved* 2 Recurse into directories 3 Recurse into directories and image files R4 Address of routine to call for each object R5 Value of R12 when routine is called Routine will be called with: R1 ->Full pathname of object R12 R5 on entry R14 Return address (no flags) R0-R7,R12,R14 may be corrupted, V may be set if an error occurs </pre> For each selected object in the viewer, a call to the supplied routine will be made. This makes it very easy supporting any number of objects, while only writing a routine that supports one object. Escape will be checked during the scanning, and will abort with the error "Escape" if pressed. <h3>SE_StartTask</h3> <pre>On entry: R0 ->Command for starting task </pre> There is a bug in the Toolbox which prevents a toolbox task from starting another toolbox task just like that. This routine will do the necessary workarounds to provide a safe way to start any task. So don't use Wimp_StartTask or *WimpTask in the utilities, use this call instead. <h3>SE_Message</h3> <pre>On entry: R0 ->Message </pre> This call will open a message box on the screen, containing the message. In some cases this is preferable to using Wimp_ReportError. <h3>SE_MakeViewerName</h3> <pre>On entry: R0 ->Buffer for name R2 ->Viewer </pre> This call will put the viewer name (directory) into the buffer. <h3>SE_MakeObjectName</h3> <pre>On entry: R0 ->Buffer for name R2 ->Viewer R3 ->Object </pre> This call will put the full pathname of the object into the buffer. <h3>SE_GetType</h3> <pre>On entry: R3 ->Object On exit: R0 Object type </pre> This call will return the type of the object. <h3>SE_GetLeaf</h3> <pre>On entry: R0 ->Buffer R2 ->Viewer R3 ->Object On exit: R0 ->Terminator of leafname </pre> This call will put the leafname of the object into the buffer. </body></html>
00000000 3c 68 74 6d 6c 3e 3c 68 65 61 64 3e 3c 74 69 74 |<html><head><tit| 00000010 6c 65 3e 50 72 6f 46 69 6c 65 72 20 45 78 74 65 |le>ProFiler Exte| 00000020 72 6e 61 6c 20 75 74 69 6c 69 74 69 65 73 3c 2f |rnal utilities</| 00000030 74 69 74 6c 65 3e 3c 2f 68 65 61 64 3e 0a 0a 3c |title></head>..<| 00000040 62 6f 64 79 3e 0a 3c 68 31 3e 3c 63 65 6e 74 65 |body>.<h1><cente| 00000050 72 3e 3c 75 3e 50 72 6f 46 69 6c 65 72 20 45 78 |r><u>ProFiler Ex| 00000060 74 65 72 6e 61 6c 20 55 74 69 6c 69 74 69 65 73 |ternal Utilities| 00000070 3c 2f 75 3e 3c 2f 63 65 6e 74 65 72 3e 3c 2f 68 |</u></center></h| 00000080 31 3e 0a 0a 3c 68 32 3e 3c 69 3e 50 72 65 6c 69 |1>..<h2><i>Preli| 00000090 6d 69 6e 61 72 79 3c 2f 69 3e 3c 2f 68 32 3e 0a |minary</i></h2>.| 000000a0 3c 69 3e 54 68 65 20 65 78 74 65 72 6e 61 6c 20 |<i>The external | 000000b0 75 74 69 6c 69 74 69 65 73 20 65 78 69 73 74 2c |utilities exist,| 000000c0 20 62 75 74 20 74 68 65 20 63 6f 6e 73 74 72 75 | but the constru| 000000d0 63 74 69 6f 6e 20 6f 66 20 74 68 65 6d 2c 20 61 |ction of them, a| 000000e0 6e 64 20 68 6f 77 20 74 68 65 79 20 63 6f 6d 6d |nd how they comm| 000000f0 75 6e 69 63 61 74 65 20 77 69 74 68 20 74 68 65 |unicate with the| 00000100 20 46 69 6c 65 72 2c 20 68 61 73 20 6e 6f 74 20 | Filer, has not | 00000110 62 65 65 6e 20 64 65 66 69 6e 65 64 20 63 6f 6d |been defined com| 00000120 70 6c 65 74 65 6c 79 2e 0a 3c 70 3e 49 74 20 69 |pletely..<p>It i| 00000130 73 20 70 6f 73 73 69 62 6c 65 2c 20 68 6f 77 65 |s possible, howe| 00000140 76 65 72 2c 20 74 6f 20 67 69 76 65 20 61 20 6c |ver, to give a l| 00000150 6f 6f 73 65 20 65 78 70 6c 61 6e 61 74 69 6f 6e |oose explanation| 00000160 20 6f 66 20 68 6f 77 20 69 74 20 77 6f 72 6b 73 | of how it works| 00000170 20 6e 6f 77 2c 20 61 6e 64 20 74 68 65 20 66 69 | now, and the fi| 00000180 6e 61 6c 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f |nal documentatio| 00000190 6e 20 77 69 6c 6c 20 6d 6f 73 74 20 6c 69 6b 65 |n will most like| 000001a0 6c 79 20 6e 6f 74 20 64 69 66 66 65 72 20 6d 75 |ly not differ mu| 000001b0 63 68 20 66 72 6f 6d 20 74 68 69 73 2e 3c 2f 69 |ch from this.</i| 000001c0 3e 0a 0a 3c 68 32 3e 54 79 70 65 73 20 6f 66 20 |>..<h2>Types of | 000001d0 75 74 69 6c 69 74 65 73 3c 2f 68 32 3e 0a 54 68 |utilites</h2>.Th| 000001e0 65 72 65 20 61 72 65 20 74 77 6f 20 6d 61 69 6e |ere are two main| 000001f0 20 74 79 70 65 73 20 6f 66 20 75 74 69 6c 69 74 | types of utilit| 00000200 69 65 73 2e 20 54 68 65 20 66 69 72 73 74 20 61 |ies. The first a| 00000210 72 65 20 53 70 72 69 74 65 20 43 6c 69 65 6e 74 |re Sprite Client| 00000220 73 2c 20 74 68 65 20 73 65 63 6f 6e 64 20 61 72 |s, the second ar| 00000230 65 20 45 78 74 65 72 6e 61 6c 20 55 74 69 6c 69 |e External Utili| 00000240 74 69 65 73 2e 0a 3c 70 3e 3c 62 3e 53 70 72 69 |ties..<p><b>Spri| 00000250 74 65 20 43 6c 69 65 6e 74 73 3c 2f 62 3e 20 61 |te Clients</b> a| 00000260 72 65 20 75 73 75 61 6c 6c 79 20 6a 75 73 74 20 |re usually just | 00000270 72 61 77 20 6d 6f 64 75 6c 65 73 2c 20 74 68 61 |raw modules, tha| 00000280 74 20 73 75 70 70 6f 72 74 20 74 68 65 20 72 65 |t support the re| 00000290 6c 65 76 61 6e 74 20 73 65 72 76 69 63 65 20 63 |levant service c| 000002a0 61 6c 6c 73 2e 20 54 68 65 69 72 20 70 75 72 70 |alls. Their purp| 000002b0 6f 73 65 20 69 73 20 74 6f 20 70 72 6f 76 69 64 |ose is to provid| 000002c0 65 20 61 6c 74 65 72 6e 61 74 69 76 65 20 73 70 |e alternative sp| 000002d0 72 69 74 65 73 20 69 6e 20 74 68 65 20 64 69 72 |rites in the dir| 000002e0 65 63 74 6f 72 79 20 76 69 65 77 65 72 73 2c 20 |ectory viewers, | 000002f0 65 2e 67 2e 20 70 69 63 74 75 72 65 20 74 68 75 |e.g. picture thu| 00000300 6d 62 6e 61 69 6c 73 2e 0a 3c 70 3e 3c 62 3e 45 |mbnails..<p><b>E| 00000310 78 74 65 72 6e 61 6c 20 55 74 69 6c 69 74 69 65 |xternal Utilitie| 00000320 73 3c 2f 62 3e 20 63 6f 6e 73 69 73 74 20 6f 66 |s</b> consist of| 00000330 20 61 20 64 69 72 65 63 74 6f 72 79 20 69 6e 20 | a directory in | 00000340 46 69 6c 65 72 3a 55 74 69 6c 69 74 69 65 73 2e |Filer:Utilities.| 00000350 20 54 68 65 72 65 20 69 73 20 61 74 20 6c 65 61 | There is at lea| 00000360 73 74 20 6f 6e 65 20 70 72 6f 67 72 61 6d 20 69 |st one program i| 00000370 6e 20 74 68 69 73 20 64 69 72 65 63 74 6f 72 79 |n this directory| 00000380 2c 20 77 68 69 63 68 20 69 73 20 74 68 65 20 61 |, which is the a| 00000390 63 74 75 61 6c 20 75 74 69 6c 69 74 79 2e 20 54 |ctual utility. T| 000003a0 68 65 72 65 20 6d 61 79 20 61 6c 73 6f 20 62 65 |here may also be| 000003b0 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 | an application | 000003c0 74 6f 20 68 61 6e 64 6c 65 20 74 68 65 20 63 68 |to handle the ch| 000003d0 6f 69 63 65 73 20 66 6f 72 20 74 68 61 74 20 75 |oices for that u| 000003e0 74 69 6c 69 74 79 2e 20 54 68 65 20 70 72 6f 67 |tility. The prog| 000003f0 72 61 6d 20 6d 61 79 20 62 65 20 61 20 6d 6f 64 |ram may be a mod| 00000400 75 6c 65 2c 20 69 6e 20 77 68 69 63 68 20 63 61 |ule, in which ca| 00000410 73 65 20 69 74 20 63 61 6e 20 70 72 6f 76 69 64 |se it can provid| 00000420 65 20 65 78 74 65 6e 74 69 6f 6e 20 66 75 6e 63 |e extention func| 00000430 74 69 6f 6e 73 20 74 6f 20 74 68 65 20 46 69 6c |tions to the Fil| 00000440 65 72 20 6d 65 6e 75 73 2e 20 4f 72 20 69 74 20 |er menus. Or it | 00000450 6d 69 67 68 74 20 62 65 20 61 20 73 69 6d 70 6c |might be a simpl| 00000460 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 2c 20 77 |e application, w| 00000470 68 69 63 68 20 72 65 6c 69 65 73 20 6f 6e 20 61 |hich relies on a| 00000480 20 28 79 65 74 20 75 6e 77 72 69 74 74 65 6e 29 | (yet unwritten)| 00000490 20 4c 65 76 65 6c 31 20 6d 6f 64 75 6c 65 20 74 | Level1 module t| 000004a0 6f 20 65 78 65 63 75 74 65 20 69 74 20 77 69 74 |o execute it wit| 000004b0 68 20 74 68 65 20 72 65 6c 65 76 61 6e 74 20 70 |h the relevant p| 000004c0 61 72 61 6d 65 74 72 65 73 2e 0a 0a 3c 70 3e 59 |arametres...<p>Y| 000004d0 6f 75 20 73 68 6f 75 6c 64 20 73 75 70 70 6f 72 |ou should suppor| 000004e0 74 20 53 65 72 76 69 63 65 5f 46 69 6c 65 72 45 |t Service_FilerE| 000004f0 6e 75 6d 65 72 61 74 65 43 6c 69 65 6e 74 73 20 |numerateClients | 00000500 69 66 20 79 6f 75 20 61 72 65 20 61 20 6d 6f 64 |if you are a mod| 00000510 75 6c 65 2e 20 4f 74 68 65 72 77 69 73 65 20 79 |ule. Otherwise y| 00000520 6f 75 20 77 69 6c 6c 20 6e 6f 74 20 65 76 65 6e |ou will not even| 00000530 20 67 65 74 20 61 6e 20 65 6e 74 72 79 20 69 6e | get an entry in| 00000540 20 74 68 65 20 6d 65 6e 75 2e 20 57 68 61 74 20 | the menu. What | 00000550 74 6f 20 72 65 74 75 72 6e 20 64 65 70 65 6e 64 |to return depend| 00000560 73 20 6f 6e 20 74 68 65 20 63 61 70 61 62 69 6c |s on the capabil| 00000570 69 74 69 65 73 20 6f 66 20 74 68 65 20 6d 6f 64 |ities of the mod| 00000580 75 6c 65 2e 20 49 66 20 79 6f 75 20 61 72 65 20 |ule. If you are | 00000590 61 20 70 72 6f 67 72 61 6d 20 69 6e 20 55 74 69 |a program in Uti| 000005a0 6c 69 74 69 65 73 2c 20 79 6f 75 20 63 61 6e 27 |lities, you can'| 000005b0 74 20 73 75 70 70 6f 72 74 20 74 68 65 20 73 65 |t support the se| 000005c0 72 76 69 63 65 20 63 61 6c 6c 73 20 6f 66 20 63 |rvice calls of c| 000005d0 6f 75 72 73 65 2e 20 49 6e 73 74 65 61 64 2c 20 |ourse. Instead, | 000005e0 74 68 65 20 64 69 72 65 63 74 6f 72 79 20 63 6f |the directory co| 000005f0 6e 74 65 6e 74 73 20 72 65 66 6c 65 63 74 20 79 |ntents reflect y| 00000600 6f 75 72 20 63 61 70 61 62 69 6c 69 74 69 65 73 |our capabilities| 00000610 2e 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 |. The following | 00000620 6c 69 73 74 20 73 75 6d 6d 61 72 69 73 65 73 20 |list summarises | 00000630 74 68 69 73 3a 0a 0a 3c 70 72 65 3e 0a 46 6f 72 |this:..<pre>.For| 00000640 6d 09 43 68 6f 69 63 65 73 09 09 5b 44 42 5d 09 |m.Choices..[DB].| 00000650 44 69 72 20 63 6f 6e 74 65 6e 74 73 0a 2d 2d 2d |Dir contents.---| 00000660 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 000006a0 2d 2d 2d 0a 4d 6f 64 75 6c 65 09 41 75 74 6f 4c |---.Module.AutoL| 000006b0 6f 61 64 09 30 09 4e 6f 20 21 45 78 74 43 68 6f |oad.0.No !ExtCho| 000006c0 69 63 65 2c 20 64 69 72 20 6d 61 79 20 6e 6f 74 |ice, dir may not| 000006d0 20 65 78 69 73 74 0a 4d 6f 64 75 6c 65 09 43 75 | exist.Module.Cu| 000006e0 73 74 6f 6d 09 09 30 09 21 45 78 74 43 68 6f 69 |stom..0.!ExtChoi| 000006f0 63 65 0a 4d 6f 64 75 6c 65 09 53 43 4d 09 09 43 |ce.Module.SCM..C| 00000700 42 09 41 6e 79 74 68 69 6e 67 2c 20 6d 69 67 68 |B.Anything, migh| 00000710 74 20 6e 6f 74 20 65 78 69 73 74 0a 4f 74 68 65 |t not exist.Othe| 00000720 72 09 4e 6f 6e 65 09 09 6e 2f 61 09 4e 6f 20 21 |r.None..n/a.No !| 00000730 43 68 6f 69 63 65 73 20 66 69 6c 65 2e 0a 4f 74 |Choices file..Ot| 00000740 68 65 72 09 43 75 73 74 6f 6d 09 09 6e 2f 61 09 |her.Custom..n/a.| 00000750 21 45 78 74 43 68 6f 69 63 65 0a 4f 74 68 65 72 |!ExtChoice.Other| 00000760 09 53 43 4d 09 09 6e 2f 61 09 4e 6f 20 21 45 78 |.SCM..n/a.No !Ex| 00000770 74 43 68 6f 69 63 65 2c 20 53 43 4d 20 21 43 68 |tChoice, SCM !Ch| 00000780 6f 69 63 65 73 20 66 69 6c 65 0a 3c 2f 70 72 65 |oices file.</pre| 00000790 3e 0a 3c 69 3e 4e 6f 74 65 73 3a 0a 3c 75 6c 3e |>.<i>Notes:.<ul>| 000007a0 0a 3c 6c 69 3e 3c 62 3e 46 6f 72 6d 3a 3c 2f 62 |.<li><b>Form:</b| 000007b0 3e 20 54 79 70 65 20 6f 66 20 70 72 6f 67 72 61 |> Type of progra| 000007c0 6d 2e 0a 3c 6c 69 3e 3c 62 3e 41 75 74 6f 4c 6f |m..<li><b>AutoLo| 000007d0 61 64 3a 3c 2f 62 3e 20 53 43 5f 4d 61 6e 61 67 |ad:</b> SC_Manag| 000007e0 65 72 20 74 72 69 65 73 20 74 6f 20 70 72 6f 76 |er tries to prov| 000007f0 69 64 65 20 74 68 69 73 2c 20 69 66 20 74 68 65 |ide this, if the| 00000800 20 6d 6f 64 75 6c 65 20 69 73 20 69 6e 20 46 69 | module is in Fi| 00000810 6c 65 72 3a 52 4d 2e 0a 3c 6c 69 3e 3c 62 3e 53 |ler:RM..<li><b>S| 00000820 43 4d 3a 3c 2f 62 3e 20 53 74 61 6e 64 61 72 64 |CM:</b> Standard| 00000830 20 63 68 6f 69 63 65 73 20 6d 61 6e 61 67 65 64 | choices managed| 00000840 20 62 79 20 53 43 5f 4d 61 6e 61 67 65 72 2e 0a | by SC_Manager..| 00000850 3c 6c 69 3e 3c 62 3e 5b 44 42 5d 3a 3c 2f 62 3e |<li><b>[DB]:</b>| 00000860 20 43 6f 6e 74 65 6e 74 73 20 6f 66 20 66 69 72 | Contents of fir| 00000870 73 74 20 77 6f 72 64 20 69 6e 20 44 65 73 63 72 |st word in Descr| 00000880 69 70 74 69 6f 6e 20 42 6c 6f 63 6b 2c 20 73 65 |iption Block, se| 00000890 65 20 62 65 6c 6f 77 2e 20 43 42 20 69 73 20 61 |e below. CB is a| 000008a0 6e 20 6f 66 66 73 65 74 20 74 6f 20 61 6e 20 53 |n offset to an S| 000008b0 43 4d 20 6c 69 73 74 2e 20 30 20 6d 65 61 6e 73 |CM list. 0 means| 000008c0 20 74 68 61 74 20 65 69 74 68 65 72 20 74 68 65 | that either the| 000008d0 72 65 20 69 73 20 61 20 30 20 69 6e 20 74 68 69 |re is a 0 in thi| 000008e0 73 20 77 6f 72 64 2c 20 6f 72 20 74 68 65 20 61 |s word, or the a| 000008f0 63 74 75 61 6c 20 70 6f 69 6e 74 65 72 20 74 6f |ctual pointer to| 00000900 20 69 74 20 69 73 20 30 2e 0a 3c 2f 75 6c 3e 3c | it is 0..</ul><| 00000910 2f 69 3e 0a 0a 3c 70 3e 45 61 63 68 20 63 6c 69 |/i>..<p>Each cli| 00000920 65 6e 74 20 6d 6f 64 75 6c 65 20 6d 61 79 20 68 |ent module may h| 00000930 61 76 65 20 61 20 64 65 73 63 72 69 70 74 69 6f |ave a descriptio| 00000940 6e 20 62 6c 6f 63 6b 3a 0a 3c 62 72 3e 3c 69 3e |n block:.<br><i>| 00000950 41 6c 6c 20 6f 66 66 73 65 74 73 20 61 72 65 20 |All offsets are | 00000960 66 72 6f 6d 20 74 68 65 20 73 74 61 72 74 20 6f |from the start o| 00000970 66 20 74 68 65 20 64 65 73 63 72 69 70 74 69 6f |f the descriptio| 00000980 6e 20 62 6c 6f 63 6b 2e 3c 2f 69 3e 0a 3c 70 72 |n block.</i>.<pr| 00000990 65 3e 0a 2b 30 09 4f 66 66 73 65 74 20 74 6f 20 |e>.+0.Offset to | 000009a0 6c 69 73 74 20 6f 66 20 53 43 4d 20 63 68 6f 69 |list of SCM choi| 000009b0 63 65 73 2c 20 6f 72 20 30 20 69 66 20 63 75 73 |ces, or 0 if cus| 000009c0 74 6f 6d 20 63 68 6f 69 63 65 73 2e 0a 2b 34 09 |tom choices..+4.| 000009d0 4f 66 66 73 65 74 20 74 6f 20 64 65 73 63 72 69 |Offset to descri| 000009e0 70 74 69 6f 6e 20 6f 66 20 75 74 69 6c 69 74 79 |ption of utility| 000009f0 2c 20 6f 72 20 2d 31 20 69 66 20 6e 6f 6e 65 0a |, or -1 if none.| 00000a00 2b 38 09 2d 31 20 69 66 20 79 6f 75 20 74 68 69 |+8.-1 if you thi| 00000a10 6e 6b 20 74 68 65 20 62 6c 6f 63 6b 20 65 6e 64 |nk the block end| 00000a20 73 20 68 65 72 65 2e 0a 3c 2f 70 72 65 3e 0a 0a |s here..</pre>..| 00000a30 3c 70 3e 54 68 65 20 53 43 4d 20 63 68 6f 69 63 |<p>The SCM choic| 00000a40 65 73 20 6c 69 73 74 20 69 73 20 61 20 6c 69 73 |es list is a lis| 00000a50 74 20 6f 66 20 63 68 6f 69 63 65 73 20 6f 66 20 |t of choices of | 00000a60 64 69 66 66 65 72 65 6e 74 20 74 79 70 65 73 2e |different types.| 00000a70 20 45 61 63 68 20 63 68 6f 69 63 65 20 69 73 20 | Each choice is | 00000a80 6c 61 69 64 20 6f 75 74 20 6c 69 6b 65 20 74 68 |laid out like th| 00000a90 69 73 2e 20 48 65 72 65 2c 20 61 6c 6c 20 6f 66 |is. Here, all of| 00000aa0 66 73 65 74 73 20 61 72 65 20 66 72 6f 6d 20 74 |fsets are from t| 00000ab0 68 65 20 73 74 61 72 74 20 6f 66 20 74 68 65 20 |he start of the | 00000ac0 63 68 6f 69 63 65 73 20 6c 69 73 74 3a 0a 0a 3c |choices list:..<| 00000ad0 70 72 65 3e 0a 2b 30 09 43 68 6f 69 63 65 20 74 |pre>.+0.Choice t| 00000ae0 79 70 65 2c 20 6f 72 20 2d 31 20 74 6f 20 65 6e |ype, or -1 to en| 00000af0 64 20 74 68 65 20 6c 69 73 74 0a 2b 34 09 4c 65 |d the list.+4.Le| 00000b00 6e 67 74 68 20 6f 66 20 63 68 6f 69 63 65 20 64 |ngth of choice d| 00000b10 61 74 61 2c 20 69 6e 63 6c 2e 20 74 68 65 20 74 |ata, incl. the t| 00000b20 79 70 65 20 61 6e 64 20 74 68 69 73 20 77 6f 72 |ype and this wor| 00000b30 64 0a 2b 38 09 43 68 6f 69 63 65 20 69 64 65 6e |d.+8.Choice iden| 00000b40 74 69 66 69 65 72 2c 20 6d 61 78 20 31 31 20 63 |tifier, max 11 c| 00000b50 68 61 72 73 2c 20 70 61 64 64 65 64 20 77 69 74 |hars, padded wit| 00000b60 68 20 30 27 73 20 74 6f 20 31 32 20 62 79 74 65 |h 0's to 12 byte| 00000b70 73 0a 2b 32 30 09 54 68 65 20 72 65 73 74 20 64 |s.+20.The rest d| 00000b80 65 70 65 6e 64 73 20 6f 6e 20 74 68 65 20 63 68 |epends on the ch| 00000b90 6f 69 63 65 20 74 79 70 65 3a 0a 09 30 09 4f 70 |oice type:..0.Op| 00000ba0 74 69 6f 6e 0a 09 09 2b 32 30 09 4f 66 66 73 65 |tion...+20.Offse| 00000bb0 74 20 74 6f 20 74 69 74 6c 65 20 74 65 78 74 0a |t to title text.| 00000bc0 09 09 2b 32 34 09 4f 66 66 73 65 74 20 74 6f 20 |..+24.Offset to | 00000bd0 68 65 6c 70 20 74 65 78 74 0a 09 09 2b 32 38 09 |help text...+28.| 00000be0 44 65 66 61 75 6c 74 20 76 61 6c 75 65 20 28 30 |Default value (0| 00000bf0 20 6f 72 20 2d 31 29 0a 0a 09 31 09 52 61 64 69 | or -1)...1.Radi| 00000c00 6f 20 67 72 6f 75 70 0a 09 09 2b 32 30 09 4e 75 |o group...+20.Nu| 00000c10 6d 62 65 72 20 6f 66 20 65 6e 74 72 69 65 73 20 |mber of entries | 00000c20 69 6e 20 67 72 6f 75 70 0a 09 09 2b 32 34 09 44 |in group...+24.D| 00000c30 65 66 61 75 6c 74 20 65 6e 74 72 79 20 73 65 6c |efault entry sel| 00000c40 65 63 74 65 64 0a 09 09 2b 32 38 09 4f 66 66 73 |ected...+28.Offs| 00000c50 65 74 20 74 6f 20 74 69 74 6c 65 20 6f 66 20 65 |et to title of e| 00000c60 6e 74 72 79 20 30 0a 09 09 2b 33 32 09 4f 66 66 |ntry 0...+32.Off| 00000c70 73 65 74 20 74 6f 20 68 65 6c 70 20 74 65 78 74 |set to help text| 00000c80 20 6f 66 20 65 6e 74 72 79 20 30 0a 09 09 2b 33 | of entry 0...+3| 00000c90 36 09 4f 66 66 73 65 74 20 74 6f 20 74 69 74 6c |6.Offset to titl| 00000ca0 65 20 6f 66 20 65 6e 74 72 79 20 31 0a 09 09 2b |e of entry 1...+| 00000cb0 34 30 09 4f 66 66 73 65 74 20 74 6f 20 68 65 6c |40.Offset to hel| 00000cc0 70 20 74 65 78 74 20 6f 66 20 65 6e 74 72 79 20 |p text of entry | 00000cd0 31 0a 09 09 2b 34 34 09 65 74 63 2e 0a 0a 09 32 |1...+44.etc....2| 00000ce0 09 53 74 72 69 6e 67 0a 09 09 2b 32 30 09 4f 66 |.String...+20.Of| 00000cf0 66 73 65 74 20 74 6f 20 74 69 74 6c 65 20 74 65 |fset to title te| 00000d00 78 74 0a 09 09 2b 32 34 09 4f 66 66 73 65 74 20 |xt...+24.Offset | 00000d10 74 6f 20 68 65 6c 70 20 74 65 78 74 0a 09 09 2b |to help text...+| 00000d20 32 38 09 4f 66 66 73 65 74 20 74 6f 20 76 61 6c |28.Offset to val| 00000d30 69 64 61 74 69 6f 6e 20 73 74 72 69 6e 67 0a 09 |idation string..| 00000d40 09 2b 33 32 09 4f 66 66 73 65 74 20 74 6f 20 64 |.+32.Offset to d| 00000d50 65 66 61 75 6c 74 20 76 61 6c 75 65 0a 09 09 2b |efault value...+| 00000d60 33 36 09 4d 61 78 69 6d 75 6d 20 6c 65 6e 67 74 |36.Maximum lengt| 00000d70 68 20 6f 66 20 76 61 6c 75 65 0a 0a 09 33 09 4e |h of value...3.N| 00000d80 75 6d 62 65 72 20 72 61 6e 67 65 0a 09 09 2b 32 |umber range...+2| 00000d90 30 09 4f 66 66 73 65 74 20 74 6f 20 74 69 74 6c |0.Offset to titl| 00000da0 65 20 74 65 78 74 0a 09 09 2b 32 34 09 4f 66 66 |e text...+24.Off| 00000db0 73 65 74 20 74 6f 20 68 65 6c 70 20 74 65 78 74 |set to help text| 00000dc0 0a 09 09 2b 32 38 09 4c 6f 77 65 72 20 62 6f 75 |...+28.Lower bou| 00000dd0 6e 64 0a 09 09 2b 33 32 09 55 70 70 65 72 20 62 |nd...+32.Upper b| 00000de0 6f 75 6e 64 0a 09 09 2b 33 36 09 53 74 65 70 20 |ound...+36.Step | 00000df0 73 69 7a 65 0a 09 09 2b 34 30 09 44 65 66 61 75 |size...+40.Defau| 00000e00 6c 74 20 76 61 6c 75 65 0a 09 09 2b 34 34 09 50 |lt value...+44.P| 00000e10 72 65 63 69 73 69 6f 6e 0a 0a 09 34 09 53 74 72 |recision...4.Str| 00000e20 69 6e 67 20 73 65 74 0a 09 09 2b 32 30 09 4f 66 |ing set...+20.Of| 00000e30 66 73 65 74 20 74 6f 20 74 69 74 6c 65 20 74 65 |fset to title te| 00000e40 78 74 0a 09 09 2b 32 34 09 4f 66 66 73 65 74 20 |xt...+24.Offset | 00000e50 74 6f 20 68 65 6c 70 20 74 65 78 74 0a 09 09 2b |to help text...+| 00000e60 32 38 09 49 6e 64 65 78 20 6f 66 20 64 65 66 61 |28.Index of defa| 00000e70 75 6c 74 20 73 74 72 69 6e 67 20 73 65 6c 65 63 |ult string selec| 00000e80 74 65 64 0a 09 09 2b 33 32 09 4f 66 66 73 65 74 |ted...+32.Offset| 00000e90 20 74 6f 20 73 65 74 20 6f 66 20 73 74 72 69 6e | to set of strin| 00000ea0 67 73 0a 3c 2f 70 72 65 3e 0a 0a 3c 70 3e 54 68 |gs.</pre>..<p>Th| 00000eb0 65 20 6c 69 73 74 20 6f 66 20 66 75 6e 63 74 69 |e list of functi| 00000ec0 6f 6e 73 20 6c 6f 6f 6b 73 20 6c 69 6b 65 20 74 |ons looks like t| 00000ed0 68 69 73 2e 20 54 68 65 20 6f 66 66 73 65 74 73 |his. The offsets| 00000ee0 20 61 72 65 20 66 72 6f 6d 20 74 68 65 20 73 74 | are from the st| 00000ef0 61 72 74 20 6f 66 20 74 68 65 20 6d 6f 64 75 6c |art of the modul| 00000f00 65 2c 20 67 69 76 65 6e 20 77 68 65 6e 20 72 65 |e, given when re| 00000f10 67 69 73 74 65 72 69 6e 67 3a 0a 0a 3c 70 72 65 |gistering:..<pre| 00000f20 3e 0a 2b 30 09 46 75 6e 63 74 69 6f 6e 20 68 61 |>.+0.Function ha| 00000f30 6e 64 6c 65 2c 20 74 6f 20 62 65 20 66 69 6c 6c |ndle, to be fill| 00000f40 65 64 20 6f 75 74 20 62 79 20 46 69 6c 65 72 0a |ed out by Filer.| 00000f50 2b 34 09 46 75 6e 63 74 69 6f 6e 20 69 64 65 6e |+4.Function iden| 00000f60 74 69 66 69 65 72 2c 20 6d 61 78 20 31 31 20 63 |tifier, max 11 c| 00000f70 68 61 72 73 2c 20 70 61 64 64 65 64 20 77 69 74 |hars, padded wit| 00000f80 68 20 30 27 73 20 74 6f 20 31 32 20 62 79 74 65 |h 0's to 12 byte| 00000f90 73 0a 2b 31 36 09 4f 66 66 73 65 74 20 74 6f 20 |s.+16.Offset to | 00000fa0 76 61 6c 69 64 61 74 69 6f 6e 20 63 6f 64 65 20 |validation code | 00000fb0 6f 72 20 30 20 69 66 20 6e 6f 6e 65 0a 2b 32 30 |or 0 if none.+20| 00000fc0 09 4f 66 66 73 65 74 20 74 6f 20 70 61 72 61 6d |.Offset to param| 00000fd0 65 74 65 72 20 63 6f 64 65 20 6f 72 20 30 20 69 |eter code or 0 i| 00000fe0 66 20 6e 6f 6e 65 0a 2b 32 34 09 4f 62 6a 65 63 |f none.+24.Objec| 00000ff0 74 20 49 44 20 6f 66 20 70 61 72 61 6d 65 74 65 |t ID of paramete| 00001000 72 20 77 69 6e 64 6f 77 2e 20 4d 75 73 74 20 62 |r window. Must b| 00001010 65 20 30 20 69 6e 69 74 69 61 6c 6c 79 2c 20 61 |e 0 initially, a| 00001020 6e 64 20 77 69 6c 6c 0a 09 6c 61 74 65 72 20 62 |nd will..later b| 00001030 65 20 66 69 6c 6c 65 64 20 69 6e 20 62 79 20 74 |e filled in by t| 00001040 68 65 20 46 69 6c 65 72 2e 0a 2b 32 38 09 4f 66 |he Filer..+28.Of| 00001050 66 73 65 74 20 74 6f 20 61 63 74 69 76 61 74 69 |fset to activati| 00001060 6e 67 20 63 6f 64 65 20 6f 72 20 30 20 69 66 20 |ng code or 0 if | 00001070 6e 6f 6e 65 0a 2b 33 32 09 4f 66 66 73 65 74 20 |none.+32.Offset | 00001080 74 6f 20 75 6e 6b 6e 6f 77 6e 20 65 76 65 6e 74 |to unknown event| 00001090 20 63 6f 64 65 20 6f 72 20 30 20 69 66 20 6e 6f | code or 0 if no| 000010a0 6e 65 0a 2b 33 36 09 4d 65 6e 75 20 6e 75 6d 62 |ne.+36.Menu numb| 000010b0 65 72 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 |er the function | 000010c0 61 70 70 65 61 72 73 20 69 6e 2c 20 6f 72 20 32 |appears in, or 2| 000010d0 35 35 20 69 66 20 6e 6f 6e 65 0a 2b 33 37 09 46 |55 if none.+37.F| 000010e0 75 6e 63 74 69 6f 6e 20 66 6c 61 67 73 0a 09 62 |unction flags..b| 000010f0 69 74 30 09 48 61 73 20 70 61 72 61 6d 65 74 65 |it0.Has paramete| 00001100 72 20 77 69 6e 64 6f 77 0a 09 62 69 74 31 2d 37 |r window..bit1-7| 00001110 09 52 65 73 65 72 76 65 64 0a 2b 33 38 09 52 65 |.Reserved.+38.Re| 00001120 73 65 72 76 65 64 0a 2b 33 39 09 52 65 73 65 72 |served.+39.Reser| 00001130 76 65 64 0a 2b 34 30 09 53 75 67 67 65 73 74 65 |ved.+40.Suggeste| 00001140 64 20 6b 65 79 63 6f 64 65 0a 09 26 32 30 30 20 |d keycode..&200 | 00001150 69 66 20 6e 6f 6e 65 0a 09 26 32 30 34 20 69 66 |if none..&204 if| 00001160 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 0a 2b 34 34 | not allowed.+44| 00001170 09 4f 66 66 73 65 74 20 74 6f 20 69 6e 69 74 69 |.Offset to initi| 00001180 61 6c 69 73 61 74 69 6f 6e 20 63 6f 64 65 20 6f |alisation code o| 00001190 72 20 30 20 69 66 20 6e 6f 6e 65 0a 2b 34 38 09 |r 0 if none.+48.| 000011a0 4f 66 66 73 65 74 20 74 6f 20 6c 69 73 74 20 6f |Offset to list o| 000011b0 66 20 61 64 64 74 69 6f 6e 61 6c 20 74 6f 6f 6c |f addtional tool| 000011c0 62 6f 78 20 6f 62 6a 65 63 74 73 2c 20 6f 72 20 |box objects, or | 000011d0 30 20 69 66 20 6e 6f 6e 65 0a 2b 35 32 09 52 65 |0 if none.+52.Re| 000011e0 73 65 72 76 65 64 0a 2b 35 36 09 52 65 73 65 72 |served.+56.Reser| 000011f0 76 65 64 0a 2b 36 30 09 52 65 73 65 72 76 65 64 |ved.+60.Reserved| 00001200 0a 3c 2f 70 72 65 3e 0a 0a 3c 69 3e 4e 6f 74 65 |.</pre>..<i>Note| 00001210 73 3a 0a 3c 75 6c 3e 0a 3c 6c 69 3e 3c 62 3e 49 |s:.<ul>.<li><b>I| 00001220 64 65 6e 74 69 66 69 65 72 73 3a 3c 2f 62 3e 20 |dentifiers:</b> | 00001230 54 68 65 73 65 20 61 72 65 20 73 74 72 69 6e 67 |These are string| 00001240 73 20 6f 66 20 75 70 20 74 6f 20 31 31 20 63 68 |s of up to 11 ch| 00001250 61 72 73 2e 20 54 68 65 79 20 6e 65 65 64 20 74 |ars. They need t| 00001260 6f 20 62 65 20 75 6e 69 71 75 65 20 77 69 74 68 |o be unique with| 00001270 69 6e 20 74 68 65 20 75 74 69 6c 69 74 79 20 69 |in the utility i| 00001280 6e 20 71 75 65 73 74 69 6f 6e 2e 20 54 68 69 73 |n question. This| 00001290 20 69 6e 63 6c 75 64 65 73 20 61 6e 79 20 66 75 | includes any fu| 000012a0 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20 6f 66 |ture versions of| 000012b0 20 69 74 2c 20 61 6e 64 20 74 68 61 74 20 69 73 | it, and that is| 000012c0 20 74 68 65 20 6d 61 69 6e 20 72 65 61 73 6f 6e | the main reason| 000012d0 20 66 6f 72 20 74 68 65 20 49 44 73 2e 20 49 66 | for the IDs. If| 000012e0 20 61 20 63 68 6f 69 63 65 2f 66 75 6e 63 74 69 | a choice/functi| 000012f0 6f 6e 20 6b 65 65 70 73 20 6f 6e 20 68 61 76 69 |on keeps on havi| 00001300 6e 67 20 74 68 65 20 73 61 6d 65 20 65 66 66 65 |ng the same effe| 00001310 63 74 2c 20 79 6f 75 20 73 68 6f 75 6c 64 20 6b |ct, you should k| 00001320 65 65 70 20 75 73 69 6e 67 20 74 68 65 20 73 61 |eep using the sa| 00001330 6d 65 20 49 44 2e 20 54 68 69 73 20 77 69 6c 6c |me ID. This will| 00001340 20 65 6e 73 75 72 65 20 74 68 61 74 20 74 68 65 | ensure that the| 00001350 20 75 73 65 72 27 73 20 73 65 74 74 69 6e 67 73 | user's settings| 00001360 20 61 72 65 20 73 74 69 6c 6c 20 63 6f 6e 73 69 | are still consi| 00001370 64 65 72 65 64 20 76 61 6c 69 64 2e 20 49 66 2c |dered valid. If,| 00001380 20 68 6f 77 65 76 65 72 2c 20 61 20 63 68 6f 69 | however, a choi| 00001390 63 65 2f 66 75 6e 63 74 69 6f 6e 20 63 68 61 6e |ce/function chan| 000013a0 67 65 73 20 65 66 66 65 63 74 20 73 69 67 6e 69 |ges effect signi| 000013b0 66 69 63 61 6e 74 6c 79 2c 20 79 6f 75 20 73 68 |ficantly, you sh| 000013c0 6f 75 6c 64 20 61 6c 73 6f 20 75 73 65 20 61 20 |ould also use a | 000013d0 6e 65 77 20 49 44 20 66 6f 72 20 69 74 2e 20 54 |new ID for it. T| 000013e0 68 65 20 75 73 65 72 27 73 20 70 72 65 76 69 6f |he user's previo| 000013f0 75 73 20 73 65 74 74 69 6e 67 20 69 73 20 74 68 |us setting is th| 00001400 65 6e 20 64 69 73 63 61 72 64 65 64 20 66 6f 72 |en discarded for| 00001410 20 74 68 61 74 20 63 68 6f 69 63 65 2f 66 75 6e | that choice/fun| 00001420 63 74 69 6f 6e 2c 20 61 6e 64 20 74 68 65 20 64 |ction, and the d| 00001430 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20 |efault value is | 00001440 75 73 65 64 2e 0a 3c 6c 69 3e 54 68 65 20 46 75 |used..<li>The Fu| 00001450 6c 6c 20 49 44 20 6f 66 20 61 20 66 75 6e 63 74 |ll ID of a funct| 00001460 69 6f 6e 20 69 73 20 22 55 74 69 6c 49 44 5f 46 |ion is "UtilID_F| 00001470 75 6e 63 49 44 22 2e 0a 3c 6c 69 3e 54 68 65 20 |uncID"..<li>The | 00001480 73 75 67 67 65 73 74 65 64 20 6b 65 79 20 63 6f |suggested key co| 00001490 64 65 20 69 73 20 75 73 65 64 20 61 73 20 64 65 |de is used as de| 000014a0 66 61 75 6c 74 20 76 61 6c 75 65 20 69 66 20 69 |fault value if i| 000014b0 74 20 69 73 6e 27 74 20 75 73 65 64 20 61 6c 72 |t isn't used alr| 000014c0 65 61 64 79 20 66 6f 72 20 61 6e 6f 74 68 65 72 |eady for another| 000014d0 20 66 75 6e 63 74 69 6f 6e 2e 0a 3c 6c 69 3e 54 | function..<li>T| 000014e0 68 65 20 4d 65 73 73 61 67 65 73 20 66 69 6c 65 |he Messages file| 000014f0 20 63 6f 6e 74 61 69 6e 73 20 61 20 64 65 73 63 | contains a desc| 00001500 72 69 70 74 69 6f 6e 20 6f 66 20 77 68 61 74 20 |ription of what | 00001510 68 61 70 70 65 6e 73 20 77 68 65 6e 20 74 68 65 |happens when the| 00001520 20 6b 65 79 20 73 68 6f 72 74 63 75 74 20 69 73 | key shortcut is| 00001530 20 70 72 65 73 73 65 64 2e 20 54 68 69 73 20 73 | pressed. This s| 00001540 68 6f 75 6c 64 20 62 65 20 73 68 6f 72 74 20 61 |hould be short a| 00001550 6e 64 20 74 6f 20 74 68 65 20 70 6f 69 6e 74 2c |nd to the point,| 00001560 20 65 2e 67 2e 20 22 4f 70 65 6e 20 27 43 6f 70 | e.g. "Open 'Cop| 00001570 79 27 22 2e 20 54 68 65 20 74 6f 6b 65 6e 20 3c |y'". The token <| 00001580 73 61 6d 70 3e 4b 5f 26 6c 74 3b 75 74 69 6c 26 |samp>K_<util&| 00001590 67 74 3b 5f 26 6c 74 3b 66 75 6e 63 74 69 6f 6e |gt;_<function| 000015a0 26 67 74 3b 3c 2f 73 61 6d 70 3e 20 69 73 20 73 |></samp> is s| 000015b0 65 61 72 63 68 65 64 20 66 6f 72 2e 0a 3c 6c 69 |earched for..<li| 000015c0 3e 54 68 65 72 65 20 6d 61 79 20 61 6c 73 6f 20 |>There may also | 000015d0 62 65 20 61 6e 20 3c 73 61 6d 70 3e 4d 5f 26 6c |be an <samp>M_&l| 000015e0 74 3b 75 74 69 6c 26 67 74 3b 5f 26 6c 74 3b 66 |t;util>_<f| 000015f0 75 6e 63 74 69 6f 6e 26 67 74 3b 3c 2f 73 61 6d |unction></sam| 00001600 70 3e 20 74 65 78 74 20 69 6e 20 74 68 65 20 4d |p> text in the M| 00001610 65 73 73 61 67 65 73 20 66 69 6c 65 2e 20 54 68 |essages file. Th| 00001620 69 73 20 69 73 20 75 73 65 64 20 66 6f 72 20 74 |is is used for t| 00001630 68 65 20 6d 65 6e 75 20 65 6e 74 72 79 20 69 66 |he menu entry if| 00001640 20 69 74 20 65 78 69 73 74 73 2e 20 49 66 20 6e | it exists. If n| 00001650 6f 74 2c 20 74 68 65 20 66 75 6e 63 74 69 6f 6e |ot, the function| 00001660 20 49 44 20 69 73 20 75 73 65 64 2e 0a 3c 6c 69 | ID is used..<li| 00001670 3e 54 68 65 20 53 43 4d 20 21 43 68 6f 69 63 65 |>The SCM !Choice| 00001680 73 20 66 69 6c 65 20 69 73 20 65 71 75 69 76 61 |s file is equiva| 00001690 6c 65 6e 74 20 74 6f 20 74 68 65 20 53 43 4d 20 |lent to the SCM | 000016a0 63 68 6f 69 63 65 73 20 6c 69 73 74 20 64 65 73 |choices list des| 000016b0 63 72 69 62 65 64 20 61 62 6f 76 65 2e 20 41 6c |cribed above. Al| 000016c0 6c 20 74 68 65 20 6f 66 66 73 65 74 73 20 61 72 |l the offsets ar| 000016d0 65 20 66 72 6f 6d 20 74 68 65 20 73 74 61 72 74 |e from the start| 000016e0 20 6f 66 20 74 68 65 20 66 69 6c 65 2e 0a 3c 2f | of the file..</| 000016f0 75 6c 3e 3c 2f 69 3e 0a 0a 3c 68 33 3e 49 6e 69 |ul></i>..<h3>Ini| 00001700 74 69 61 6c 69 73 61 74 69 6f 6e 20 63 6f 64 65 |tialisation code| 00001710 3c 2f 68 33 3e 0a 43 61 6c 6c 65 64 20 74 6f 20 |</h3>.Called to | 00001720 69 6e 69 74 69 61 6c 69 73 65 20 74 68 65 20 66 |initialise the f| 00001730 75 6e 63 74 69 6f 6e 2e 20 49 66 20 74 68 65 20 |unction. If the | 00001740 66 75 6e 63 74 69 6f 6e 20 68 61 73 20 61 20 70 |function has a p| 00001750 61 72 61 6d 65 74 65 72 20 77 69 6e 64 6f 77 2c |arameter window,| 00001760 20 69 74 20 73 68 6f 75 6c 64 20 62 65 20 63 72 | it should be cr| 00001770 65 61 74 65 64 2c 20 61 6e 64 20 69 74 73 20 49 |eated, and its I| 00001780 44 20 72 65 74 75 72 6e 65 64 2e 20 54 68 65 20 |D returned. The | 00001790 77 69 6e 64 6f 77 20 77 69 6c 6c 20 75 73 75 61 |window will usua| 000017a0 6c 6c 79 20 63 6f 6e 74 61 69 6e 20 61 6e 20 4f |lly contain an O| 000017b0 4b 20 62 75 74 74 6f 6e 20 6f 72 20 73 69 6d 69 |K button or simi| 000017c0 6c 61 72 2c 20 61 6e 64 20 74 68 69 73 20 67 61 |lar, and this ga| 000017d0 64 67 65 74 20 73 68 6f 75 6c 64 20 62 65 20 73 |dget should be s| 000017e0 65 74 20 75 70 20 74 6f 20 72 65 74 75 72 6e 20 |et up to return | 000017f0 74 68 65 20 65 76 65 6e 74 20 67 69 76 65 6e 20 |the event given | 00001800 69 6e 20 52 30 2e 0a 42 65 66 6f 72 65 20 74 68 |in R0..Before th| 00001810 69 73 20 65 6e 74 72 79 20 69 73 20 63 61 6c 6c |is entry is call| 00001820 65 64 2c 20 74 68 65 20 46 69 6c 65 72 20 77 69 |ed, the Filer wi| 00001830 6c 6c 20 68 61 76 65 20 6c 6f 61 64 65 64 20 74 |ll have loaded t| 00001840 68 65 20 27 52 65 73 27 20 66 69 6c 65 20 69 6e |he 'Res' file in| 00001850 20 74 68 65 20 75 74 69 6c 69 74 79 20 64 69 72 | the utility dir| 00001860 65 63 74 6f 72 79 20 69 66 20 70 72 65 73 65 6e |ectory if presen| 00001870 74 2e 0a 3c 70 72 65 3e 4f 6e 20 65 6e 74 72 79 |t..<pre>On entry| 00001880 0a 52 30 09 41 63 74 69 76 61 74 65 20 65 76 65 |.R0.Activate eve| 00001890 6e 74 0a 52 31 31 09 42 61 73 65 20 6f 66 20 73 |nt.R11.Base of s| 000018a0 65 72 76 69 63 65 20 65 6e 74 72 69 65 73 2c 20 |ervice entries, | 000018b0 73 65 65 20 62 65 6c 6f 77 0a 4f 6e 20 65 78 69 |see below.On exi| 000018c0 74 0a 52 31 09 49 44 20 6f 66 20 70 61 72 61 6d |t.R1.ID of param| 000018d0 65 74 65 72 20 77 69 6e 64 6f 77 2c 20 6f 72 20 |eter window, or | 000018e0 30 20 69 66 20 6e 6f 6e 65 0a 52 31 32 09 50 72 |0 if none.R12.Pr| 000018f0 65 73 65 72 76 65 64 0a 3c 2f 70 72 65 3e 0a 0a |eserved.</pre>..| 00001900 3c 68 33 3e 56 61 6c 69 64 61 74 69 6f 6e 20 63 |<h3>Validation c| 00001910 6f 64 65 3c 2f 68 33 3e 0a 43 61 6c 6c 65 64 20 |ode</h3>.Called | 00001920 74 6f 20 76 61 6c 69 64 61 74 65 20 74 68 65 20 |to validate the | 00001930 66 75 6e 63 74 69 6f 6e 2e 20 4e 6f 6e 65 20 6f |function. None o| 00001940 66 20 74 68 65 20 6f 74 68 65 72 20 65 6e 74 72 |f the other entr| 00001950 69 65 73 20 77 69 6c 6c 20 62 65 20 63 61 6c 6c |ies will be call| 00001960 65 64 2c 20 69 66 20 74 68 69 73 20 63 6f 64 65 |ed, if this code| 00001970 20 72 65 74 75 72 6e 73 20 27 69 6e 76 61 6c 69 | returns 'invali| 00001980 64 27 2e 20 49 66 20 6e 6f 20 63 6f 64 65 20 65 |d'. If no code e| 00001990 78 69 73 74 73 2c 20 74 68 65 20 6f 74 68 65 72 |xists, the other| 000019a0 20 65 6e 74 72 69 65 73 20 61 72 65 20 63 6f 6e | entries are con| 000019b0 73 69 64 65 72 65 64 20 76 61 6c 69 64 2e 0a 3c |sidered valid..<| 000019c0 70 72 65 3e 4f 6e 20 65 6e 74 72 79 0a 52 30 09 |pre>On entry.R0.| 000019d0 4e 75 6d 62 65 72 20 6f 66 20 6f 62 6a 65 63 74 |Number of object| 000019e0 73 20 73 65 6c 65 63 74 65 64 0a 52 31 09 30 0a |s selected.R1.0.| 000019f0 52 32 09 2d 3e 56 69 65 77 65 72 0a 52 31 31 09 |R2.->Viewer.R11.| 00001a00 42 61 73 65 20 6f 66 20 73 65 72 76 69 63 65 20 |Base of service | 00001a10 65 6e 74 72 69 65 73 2c 20 73 65 65 20 62 65 6c |entries, see bel| 00001a20 6f 77 0a 4f 6e 20 65 78 69 74 0a 52 31 09 62 69 |ow.On exit.R1.bi| 00001a30 74 30 09 49 6e 76 61 6c 69 64 20 2d 20 73 68 61 |t0.Invalid - sha| 00001a40 64 65 64 0a 09 62 69 74 31 09 54 69 63 6b 65 64 |ded..bit1.Ticked| 00001a50 0a 09 62 69 74 32 2d 33 31 09 52 65 73 65 72 76 |..bit2-31.Reserv| 00001a60 65 64 2c 20 6d 75 73 74 20 62 65 20 30 0a 52 31 |ed, must be 0.R1| 00001a70 32 09 50 72 65 73 65 72 76 65 64 0a 3c 2f 70 72 |2.Preserved.</pr| 00001a80 65 3e 0a 0a 3c 68 33 3e 50 61 72 61 6d 65 74 65 |e>..<h3>Paramete| 00001a90 72 20 63 6f 64 65 3c 2f 68 33 3e 0a 43 61 6c 6c |r code</h3>.Call| 00001aa0 65 64 20 6a 75 73 74 20 62 65 66 6f 72 65 20 74 |ed just before t| 00001ab0 68 65 20 70 61 72 61 6d 65 74 65 72 20 77 69 6e |he parameter win| 00001ac0 64 6f 77 20 69 73 20 6f 70 65 6e 65 64 2c 20 65 |dow is opened, e| 00001ad0 69 74 68 65 72 20 62 65 63 61 75 73 65 20 74 68 |ither because th| 00001ae0 65 20 73 75 62 6d 65 6e 75 20 61 72 72 6f 77 20 |e submenu arrow | 00001af0 69 73 20 66 6f 6c 6c 6f 77 65 64 2c 20 6f 72 20 |is followed, or | 00001b00 77 68 65 6e 20 74 68 65 20 6b 65 79 20 73 68 6f |when the key sho| 00001b10 72 74 63 75 74 20 66 6f 72 20 61 20 66 75 6e 63 |rtcut for a func| 00001b20 74 69 6f 6e 20 77 69 74 68 20 70 61 72 61 6d 65 |tion with parame| 00001b30 74 72 65 73 20 69 73 20 70 72 65 73 73 65 64 2e |tres is pressed.| 00001b40 20 54 68 65 20 66 75 6e 63 74 69 6f 6e 20 63 61 | The function ca| 00001b50 6e 20 73 65 74 20 75 70 20 74 68 65 20 69 63 6f |n set up the ico| 00001b60 6e 73 20 69 6e 20 74 68 65 20 77 69 6e 64 6f 77 |ns in the window| 00001b70 20 61 63 63 6f 72 64 69 6e 67 20 74 6f 20 74 68 | according to th| 00001b80 65 20 63 75 72 72 65 6e 74 20 73 65 6c 65 63 74 |e current select| 00001b90 69 6f 6e 2e 0a 3c 70 72 65 3e 4f 6e 20 65 6e 74 |ion..<pre>On ent| 00001ba0 72 79 0a 52 30 09 4e 75 6d 62 65 72 20 6f 66 20 |ry.R0.Number of | 00001bb0 6f 62 6a 65 63 74 73 20 73 65 6c 65 63 74 65 64 |objects selected| 00001bc0 0a 52 31 09 49 44 20 6f 66 20 70 61 72 61 6d 65 |.R1.ID of parame| 00001bd0 74 65 72 20 77 69 6e 64 6f 77 20 61 73 20 72 65 |ter window as re| 00001be0 74 75 72 6e 65 64 20 66 72 6f 6d 20 69 6e 69 74 |turned from init| 00001bf0 20 63 6f 64 65 0a 52 32 09 2d 3e 56 69 65 77 65 | code.R2.->Viewe| 00001c00 72 0a 52 31 31 09 42 61 73 65 20 6f 66 20 73 65 |r.R11.Base of se| 00001c10 72 76 69 63 65 20 65 6e 74 72 69 65 73 2c 20 73 |rvice entries, s| 00001c20 65 65 20 62 65 6c 6f 77 0a 4f 6e 20 65 78 69 74 |ee below.On exit| 00001c30 0a 52 31 32 09 50 72 65 73 65 72 76 65 64 0a 3c |.R12.Preserved.<| 00001c40 2f 70 72 65 3e 0a 0a 3c 68 33 3e 41 63 74 69 76 |/pre>..<h3>Activ| 00001c50 61 74 65 20 63 6f 64 65 3c 2f 68 33 3e 0a 43 61 |ate code</h3>.Ca| 00001c60 6c 6c 65 64 20 77 68 65 6e 20 74 68 65 20 66 75 |lled when the fu| 00001c70 6e 63 74 69 6f 6e 20 69 73 20 61 63 74 69 76 61 |nction is activa| 00001c80 74 65 64 2c 20 69 6e 20 6f 6e 65 20 6f 66 20 33 |ted, in one of 3| 00001c90 20 77 61 79 73 3a 0a 3c 62 72 3e 31 2e 20 53 65 | ways:.<br>1. Se| 00001ca0 6c 65 63 74 69 6e 67 20 69 74 73 20 6d 65 6e 75 |lecting its menu| 00001cb0 20 65 6e 74 72 79 20 69 66 20 74 68 65 72 65 20 | entry if there | 00001cc0 69 73 20 6e 6f 20 70 61 72 61 6d 65 74 65 72 20 |is no parameter | 00001cd0 77 69 6e 64 6f 77 2e 0a 3c 62 72 3e 32 2e 20 4d |window..<br>2. M| 00001ce0 61 6b 69 6e 67 20 74 68 65 20 70 61 72 61 6d 65 |aking the parame| 00001cf0 74 65 72 20 77 69 6e 64 6f 77 20 67 65 6e 65 72 |ter window gener| 00001d00 61 74 65 20 74 68 65 20 61 63 74 69 76 61 74 65 |ate the activate| 00001d10 20 65 76 65 6e 74 20 28 75 73 75 61 6c 6c 79 20 | event (usually | 00001d20 62 79 20 63 6c 69 63 6b 69 6e 67 20 61 6e 20 4f |by clicking an O| 00001d30 4b 20 62 75 74 74 6f 6e 29 2e 0a 3c 62 72 3e 33 |K button)..<br>3| 00001d40 2e 20 50 72 65 73 73 69 6e 67 20 74 68 65 20 6b |. Pressing the k| 00001d50 65 79 20 73 68 6f 72 74 63 75 74 20 69 66 20 74 |ey shortcut if t| 00001d60 68 65 72 65 20 69 73 20 6e 6f 20 70 61 72 61 6d |here is no param| 00001d70 65 74 65 72 20 77 69 6e 64 6f 77 2e 0a 3c 70 72 |eter window..<pr| 00001d80 65 3e 4f 6e 20 65 6e 74 72 79 0a 52 30 09 4e 75 |e>On entry.R0.Nu| 00001d90 6d 62 65 72 20 6f 66 20 6f 62 6a 65 63 74 73 20 |mber of objects | 00001da0 73 65 6c 65 63 74 65 64 0a 52 31 09 49 44 20 6f |selected.R1.ID o| 00001db0 66 20 70 61 72 61 6d 65 74 65 72 20 77 69 6e 64 |f parameter wind| 00001dc0 6f 77 20 61 73 20 72 65 74 75 72 6e 65 64 20 66 |ow as returned f| 00001dd0 72 6f 6d 20 69 6e 69 74 20 63 6f 64 65 0a 52 32 |rom init code.R2| 00001de0 09 2d 3e 56 69 65 77 65 72 0a 52 31 31 09 42 61 |.->Viewer.R11.Ba| 00001df0 73 65 20 6f 66 20 73 65 72 76 69 63 65 20 65 6e |se of service en| 00001e00 74 72 69 65 73 2c 20 73 65 65 20 62 65 6c 6f 77 |tries, see below| 00001e10 0a 4f 6e 20 65 78 69 74 0a 52 31 32 09 50 72 65 |.On exit.R12.Pre| 00001e20 73 65 72 76 65 64 0a 3c 2f 70 72 65 3e 0a 0a 3c |served.</pre>..<| 00001e30 68 33 3e 55 6e 6b 6e 6f 77 6e 20 65 76 65 6e 74 |h3>Unknown event| 00001e40 20 63 6f 64 65 3c 2f 68 33 3e 0a 43 61 6c 6c 65 | code</h3>.Calle| 00001e50 64 20 77 68 65 6e 20 72 65 63 65 69 76 69 6e 67 |d when receiving| 00001e60 20 61 6e 20 75 6e 6b 6e 6f 77 6e 20 74 6f 6f 6c | an unknown tool| 00001e70 62 6f 78 20 65 76 65 6e 74 20 66 72 6f 6d 20 74 |box event from t| 00001e80 68 65 20 66 75 6e 63 74 69 6f 6e 27 73 20 70 61 |he function's pa| 00001e90 72 61 6d 65 74 65 72 20 77 69 6e 64 6f 77 2e 20 |rameter window. | 00001ea0 45 76 65 6e 74 73 20 66 72 6f 6d 20 26 46 46 30 |Events from &FF0| 00001eb0 30 20 74 6f 20 26 46 46 46 46 20 61 72 65 20 72 |0 to &FFFF are r| 00001ec0 65 73 65 72 76 65 64 20 66 6f 72 20 65 78 74 65 |eserved for exte| 00001ed0 72 6e 61 6c 20 75 74 69 6c 69 74 69 65 73 2e 20 |rnal utilities. | 00001ee0 59 6f 75 20 63 61 6e 20 6d 61 6b 65 20 79 6f 75 |You can make you| 00001ef0 72 20 77 69 6e 64 6f 77 20 67 65 6e 65 72 61 74 |r window generat| 00001f00 65 20 74 68 65 73 65 20 65 76 65 6e 74 73 2c 20 |e these events, | 00001f10 61 6e 64 20 74 68 69 73 20 65 6e 74 72 79 20 77 |and this entry w| 00001f20 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 2e 20 49 |ill be called. I| 00001f30 66 20 61 6e 79 20 6f 74 68 65 72 20 65 76 65 6e |f any other even| 00001f40 74 20 61 62 6f 76 65 20 26 46 46 46 46 20 28 69 |t above &FFFF (i| 00001f50 2e 65 2e 20 74 68 65 20 74 6f 6f 6c 62 6f 78 20 |.e. the toolbox | 00001f60 65 76 65 6e 74 73 29 20 61 72 65 20 72 65 63 65 |events) are rece| 00001f70 69 76 65 64 2c 20 69 74 20 77 69 6c 6c 20 61 6c |ived, it will al| 00001f80 73 6f 20 62 65 20 70 61 73 73 65 64 20 6f 6e 20 |so be passed on | 00001f90 74 6f 20 79 6f 75 20 69 66 20 69 74 20 63 6f 6d |to you if it com| 00001fa0 65 73 20 66 72 6f 6d 20 79 6f 75 72 20 77 69 6e |es from your win| 00001fb0 64 6f 77 2e 0a 49 66 20 79 6f 75 20 6e 65 65 64 |dow..If you need| 00001fc0 20 74 6f 20 72 65 63 65 69 76 65 20 65 76 65 6e | to receive even| 00001fd0 74 73 20 66 72 6f 6d 20 6f 74 68 65 72 20 77 69 |ts from other wi| 00001fe0 6e 64 6f 77 73 20 79 6f 75 20 6d 61 79 20 68 61 |ndows you may ha| 00001ff0 76 65 20 63 72 65 61 74 65 64 2c 20 79 6f 75 20 |ve created, you | 00002000 63 61 6e 20 70 75 74 20 74 68 65 20 61 70 70 72 |can put the appr| 00002010 6f 70 72 69 61 74 65 20 49 44 73 20 69 6e 74 6f |opriate IDs into| 00002020 20 61 20 6c 69 73 74 2e 20 54 68 65 20 6c 69 73 | a list. The lis| 00002030 74 20 73 68 6f 75 6c 64 20 65 6e 64 20 77 69 74 |t should end wit| 00002040 68 20 61 20 30 20 77 6f 72 64 2e 0a 3c 70 72 65 |h a 0 word..<pre| 00002050 3e 4f 6e 20 65 6e 74 72 79 0a 52 30 09 4e 75 6d |>On entry.R0.Num| 00002060 62 65 72 20 6f 66 20 6f 62 6a 65 63 74 73 20 73 |ber of objects s| 00002070 65 6c 65 63 74 65 64 0a 52 31 09 45 76 65 6e 74 |elected.R1.Event| 00002080 20 72 65 6c 61 74 65 64 20 6f 62 6a 65 63 74 20 | related object | 00002090 49 44 0a 52 32 09 2d 3e 56 69 65 77 65 72 0a 52 |ID.R2.->Viewer.R| 000020a0 33 09 45 76 65 6e 74 20 63 6f 64 65 0a 52 35 09 |3.Event code.R5.| 000020b0 2d 3e 45 76 65 6e 74 20 62 6c 6f 63 6b 0a 52 36 |->Event block.R6| 000020c0 09 45 76 65 6e 74 20 72 65 6c 61 74 65 64 20 63 |.Event related c| 000020d0 6f 6d 70 6f 6e 65 6e 74 20 49 44 0a 52 31 31 09 |omponent ID.R11.| 000020e0 42 61 73 65 20 6f 66 20 73 65 72 76 69 63 65 20 |Base of service | 000020f0 65 6e 74 72 69 65 73 2c 20 73 65 65 20 62 65 6c |entries, see bel| 00002100 6f 77 0a 4f 6e 20 65 78 69 74 0a 52 31 32 09 50 |ow.On exit.R12.P| 00002110 72 65 73 65 72 76 65 64 0a 3c 2f 70 72 65 3e 0a |reserved.</pre>.| 00002120 0a 3c 68 32 3e 53 65 72 76 69 63 65 20 65 6e 74 |.<h2>Service ent| 00002130 72 69 65 73 3c 2f 68 32 3e 0a 53 65 72 76 69 63 |ries</h2>.Servic| 00002140 65 20 65 6e 74 72 69 65 73 20 61 72 65 20 6a 75 |e entries are ju| 00002150 73 74 20 75 73 65 66 75 6c 20 72 6f 75 74 69 6e |st useful routin| 00002160 65 73 20 69 6e 20 74 68 65 20 46 69 6c 65 72 2c |es in the Filer,| 00002170 20 74 68 61 74 20 6d 61 79 20 62 65 20 75 73 65 | that may be use| 00002180 64 20 62 79 20 74 68 65 20 66 75 6e 63 74 69 6f |d by the functio| 00002190 6e 20 63 6f 64 65 2e 20 54 68 65 73 65 20 72 6f |n code. These ro| 000021a0 75 74 69 6e 65 73 20 63 6f 75 6c 64 20 68 61 76 |utines could hav| 000021b0 65 20 62 65 65 6e 20 53 57 49 73 2c 20 62 75 74 |e been SWIs, but| 000021c0 20 61 72 65 6e 27 74 20 66 6f 72 20 73 65 76 65 | aren't for seve| 000021d0 72 61 6c 20 72 65 61 73 6f 6e 73 3a 0a 3c 75 6c |ral reasons:.<ul| 000021e0 3e 0a 3c 6c 69 3e 54 68 65 72 65 20 69 73 20 61 |>.<li>There is a| 000021f0 6c 6d 6f 73 74 20 6e 6f 20 6f 76 65 72 68 65 61 |lmost no overhea| 00002200 64 20 77 68 65 6e 20 63 61 6c 6c 69 6e 67 20 74 |d when calling t| 00002210 68 65 20 72 6f 75 74 69 6e 65 73 20 74 68 69 73 |he routines this| 00002220 20 77 61 79 2e 0a 3c 6c 69 3e 54 68 65 72 65 20 | way..<li>There | 00002230 77 69 6c 6c 20 62 65 20 6d 61 6e 79 20 6f 66 20 |will be many of | 00002240 74 68 65 73 65 2c 20 61 6e 64 20 69 74 20 77 6f |these, and it wo| 00002250 75 6c 64 20 72 65 71 75 69 72 65 20 73 65 76 65 |uld require seve| 00002260 72 61 6c 20 53 57 49 20 63 68 75 6e 6b 73 2e 0a |ral SWI chunks..| 00002270 3c 6c 69 3e 49 74 20 69 73 20 6d 75 63 68 20 65 |<li>It is much e| 00002280 61 73 69 65 72 20 74 6f 20 72 65 74 61 69 6e 20 |asier to retain | 00002290 62 61 63 6b 77 61 72 64 73 20 63 6f 6d 70 61 74 |backwards compat| 000022a0 69 62 69 6c 69 74 79 20 69 66 20 61 20 72 6f 75 |ibility if a rou| 000022b0 74 69 6e 65 20 69 73 20 6c 61 74 65 72 20 77 69 |tine is later wi| 000022c0 74 68 64 72 61 77 6e 20 6f 72 20 72 65 70 6c 61 |thdrawn or repla| 000022d0 63 65 64 2e 0a 3c 2f 75 6c 3e 0a 57 68 65 6e 20 |ced..</ul>.When | 000022e0 63 61 6c 6c 69 6e 67 20 6f 6e 65 20 6f 66 20 74 |calling one of t| 000022f0 68 65 73 65 20 72 6f 75 74 69 6e 65 73 2c 20 79 |hese routines, y| 00002300 6f 75 20 73 68 6f 75 6c 64 20 75 73 65 20 46 4e |ou should use FN| 00002310 63 61 6c 6c 20 69 6e 20 45 78 74 4c 69 62 2e 20 |call in ExtLib. | 00002320 49 66 20 79 6f 75 20 61 72 65 6e 27 74 20 75 73 |If you aren't us| 00002330 69 6e 67 20 74 68 65 20 42 61 73 69 63 20 41 73 |ing the Basic As| 00002340 73 65 6d 62 6c 65 72 2c 20 73 69 6d 70 6c 79 20 |sembler, simply | 00002350 64 6f 20 74 68 65 20 65 71 75 69 76 61 6c 65 6e |do the equivalen| 00002360 74 20 6f 66 20 74 68 69 73 3a 0a 3c 70 72 65 3e |t of this:.<pre>| 00002370 41 44 52 20 52 31 34 2c 72 65 74 75 72 6e 0a 41 |ADR R14,return.A| 00002380 44 44 20 50 43 2c 52 31 31 2c 23 53 45 2a 34 0a |DD PC,R11,#SE*4.| 00002390 2e 72 65 74 75 72 6e 0a 3c 2f 70 72 65 3e 0a 53 |.return.</pre>.S| 000023a0 45 20 69 73 20 74 68 65 20 72 6f 75 74 69 6e 65 |E is the routine| 000023b0 20 6e 75 6d 62 65 72 2c 20 61 6e 64 20 74 68 65 | number, and the| 000023c0 79 20 61 72 65 20 64 65 66 69 6e 65 64 20 61 73 |y are defined as| 000023d0 20 76 61 72 69 61 62 6c 65 73 20 69 6e 20 45 78 | variables in Ex| 000023e0 74 4c 69 62 2e 0a 3c 62 72 3e 54 68 65 20 63 75 |tLib..<br>The cu| 000023f0 72 72 65 6e 74 6c 79 20 64 65 66 69 6e 65 64 20 |rrently defined | 00002400 72 6f 75 74 69 6e 65 73 20 61 72 65 3a 0a 0a 3c |routines are:..<| 00002410 68 33 3e 53 45 5f 47 65 74 53 65 6c 65 63 74 65 |h3>SE_GetSelecte| 00002420 64 3c 2f 68 33 3e 0a 3c 70 72 65 3e 4f 6e 20 65 |d</h3>.<pre>On e| 00002430 6e 74 72 79 3a 0a 52 32 09 2d 3e 56 69 65 77 65 |ntry:.R2.->Viewe| 00002440 72 0a 52 33 09 50 72 65 73 65 72 76 65 64 20 66 |r.R3.Preserved f| 00002450 72 6f 6d 20 6c 61 73 74 20 63 61 6c 6c 2c 20 6f |rom last call, o| 00002460 72 20 30 20 74 6f 20 73 74 61 72 74 0a 4f 6e 20 |r 0 to start.On | 00002470 65 78 69 74 3a 0a 52 33 09 4e 65 78 74 20 73 65 |exit:.R3.Next se| 00002480 6c 65 63 74 65 64 20 6f 62 6a 65 63 74 20 28 30 |lected object (0| 00002490 20 69 66 20 6e 6f 6e 65 29 0a 3c 2f 70 72 65 3e | if none).</pre>| 000024a0 0a 54 68 69 73 20 72 6f 75 74 69 6e 65 20 69 73 |.This routine is| 000024b0 20 75 73 65 64 20 74 6f 20 66 69 6e 64 20 6f 75 | used to find ou| 000024c0 74 20 77 68 61 74 20 6f 62 6a 65 63 74 73 20 61 |t what objects a| 000024d0 72 65 20 73 65 6c 65 63 74 65 64 2e 20 54 68 69 |re selected. Thi| 000024e0 73 20 72 6f 75 74 69 6e 65 2c 20 61 6e 64 20 53 |s routine, and S| 000024f0 45 5f 53 63 61 6e 53 65 6c 65 63 74 69 6f 6e 20 |E_ScanSelection | 00002500 61 72 65 20 74 68 65 20 74 77 6f 20 6d 61 69 6e |are the two main| 00002510 20 77 61 79 73 20 6f 66 20 64 65 63 69 64 69 6e | ways of decidin| 00002520 67 20 77 68 61 74 20 6f 62 6a 65 63 74 73 20 74 |g what objects t| 00002530 6f 20 6f 70 65 72 61 74 65 20 6f 6e 2e 0a 0a 3c |o operate on...<| 00002540 68 33 3e 53 45 5f 53 63 61 6e 53 65 6c 65 63 74 |h3>SE_ScanSelect| 00002550 69 6f 6e 3c 2f 68 33 3e 0a 3c 70 72 65 3e 4f 6e |ion</h3>.<pre>On| 00002560 20 65 6e 74 72 79 3a 0a 52 32 09 2d 3e 56 69 65 | entry:.R2.->Vie| 00002570 77 65 72 0a 52 33 09 52 65 63 75 72 73 65 20 6d |wer.R3.Recurse m| 00002580 6f 64 65 0a 09 30 09 4e 6f 20 72 65 63 75 72 73 |ode..0.No recurs| 00002590 69 6f 6e 0a 09 31 09 2a 52 65 73 65 72 76 65 64 |ion..1.*Reserved| 000025a0 2a 0a 09 32 09 52 65 63 75 72 73 65 20 69 6e 74 |*..2.Recurse int| 000025b0 6f 20 64 69 72 65 63 74 6f 72 69 65 73 0a 09 33 |o directories..3| 000025c0 09 52 65 63 75 72 73 65 20 69 6e 74 6f 20 64 69 |.Recurse into di| 000025d0 72 65 63 74 6f 72 69 65 73 20 61 6e 64 20 69 6d |rectories and im| 000025e0 61 67 65 20 66 69 6c 65 73 0a 52 34 09 41 64 64 |age files.R4.Add| 000025f0 72 65 73 73 20 6f 66 20 72 6f 75 74 69 6e 65 20 |ress of routine | 00002600 74 6f 20 63 61 6c 6c 20 66 6f 72 20 65 61 63 68 |to call for each| 00002610 20 6f 62 6a 65 63 74 0a 52 35 09 56 61 6c 75 65 | object.R5.Value| 00002620 20 6f 66 20 52 31 32 20 77 68 65 6e 20 72 6f 75 | of R12 when rou| 00002630 74 69 6e 65 20 69 73 20 63 61 6c 6c 65 64 0a 0a |tine is called..| 00002640 52 6f 75 74 69 6e 65 20 77 69 6c 6c 20 62 65 20 |Routine will be | 00002650 63 61 6c 6c 65 64 20 77 69 74 68 3a 0a 52 31 09 |called with:.R1.| 00002660 2d 3e 46 75 6c 6c 20 70 61 74 68 6e 61 6d 65 20 |->Full pathname | 00002670 6f 66 20 6f 62 6a 65 63 74 0a 52 31 32 09 52 35 |of object.R12.R5| 00002680 20 6f 6e 20 65 6e 74 72 79 0a 52 31 34 09 52 65 | on entry.R14.Re| 00002690 74 75 72 6e 20 61 64 64 72 65 73 73 20 28 6e 6f |turn address (no| 000026a0 20 66 6c 61 67 73 29 0a 52 30 2d 52 37 2c 52 31 | flags).R0-R7,R1| 000026b0 32 2c 52 31 34 20 6d 61 79 20 62 65 20 63 6f 72 |2,R14 may be cor| 000026c0 72 75 70 74 65 64 2c 20 56 20 6d 61 79 20 62 65 |rupted, V may be| 000026d0 20 73 65 74 20 69 66 20 61 6e 20 65 72 72 6f 72 | set if an error| 000026e0 20 6f 63 63 75 72 73 0a 3c 2f 70 72 65 3e 0a 46 | occurs.</pre>.F| 000026f0 6f 72 20 65 61 63 68 20 73 65 6c 65 63 74 65 64 |or each selected| 00002700 20 6f 62 6a 65 63 74 20 69 6e 20 74 68 65 20 76 | object in the v| 00002710 69 65 77 65 72 2c 20 61 20 63 61 6c 6c 20 74 6f |iewer, a call to| 00002720 20 74 68 65 20 73 75 70 70 6c 69 65 64 20 72 6f | the supplied ro| 00002730 75 74 69 6e 65 20 77 69 6c 6c 20 62 65 20 6d 61 |utine will be ma| 00002740 64 65 2e 20 54 68 69 73 20 6d 61 6b 65 73 20 69 |de. This makes i| 00002750 74 20 76 65 72 79 20 65 61 73 79 20 73 75 70 70 |t very easy supp| 00002760 6f 72 74 69 6e 67 20 61 6e 79 20 6e 75 6d 62 65 |orting any numbe| 00002770 72 20 6f 66 20 6f 62 6a 65 63 74 73 2c 20 77 68 |r of objects, wh| 00002780 69 6c 65 20 6f 6e 6c 79 20 77 72 69 74 69 6e 67 |ile only writing| 00002790 20 61 20 72 6f 75 74 69 6e 65 20 74 68 61 74 20 | a routine that | 000027a0 73 75 70 70 6f 72 74 73 20 6f 6e 65 20 6f 62 6a |supports one obj| 000027b0 65 63 74 2e 20 45 73 63 61 70 65 20 77 69 6c 6c |ect. Escape will| 000027c0 20 62 65 20 63 68 65 63 6b 65 64 20 64 75 72 69 | be checked duri| 000027d0 6e 67 20 74 68 65 20 73 63 61 6e 6e 69 6e 67 2c |ng the scanning,| 000027e0 20 61 6e 64 20 77 69 6c 6c 20 61 62 6f 72 74 20 | and will abort | 000027f0 77 69 74 68 20 74 68 65 20 65 72 72 6f 72 20 22 |with the error "| 00002800 45 73 63 61 70 65 22 20 69 66 20 70 72 65 73 73 |Escape" if press| 00002810 65 64 2e 0a 0a 3c 68 33 3e 53 45 5f 53 74 61 72 |ed...<h3>SE_Star| 00002820 74 54 61 73 6b 3c 2f 68 33 3e 0a 3c 70 72 65 3e |tTask</h3>.<pre>| 00002830 4f 6e 20 65 6e 74 72 79 3a 0a 52 30 09 2d 3e 43 |On entry:.R0.->C| 00002840 6f 6d 6d 61 6e 64 20 66 6f 72 20 73 74 61 72 74 |ommand for start| 00002850 69 6e 67 20 74 61 73 6b 0a 3c 2f 70 72 65 3e 0a |ing task.</pre>.| 00002860 54 68 65 72 65 20 69 73 20 61 20 62 75 67 20 69 |There is a bug i| 00002870 6e 20 74 68 65 20 54 6f 6f 6c 62 6f 78 20 77 68 |n the Toolbox wh| 00002880 69 63 68 20 70 72 65 76 65 6e 74 73 20 61 20 74 |ich prevents a t| 00002890 6f 6f 6c 62 6f 78 20 74 61 73 6b 20 66 72 6f 6d |oolbox task from| 000028a0 20 73 74 61 72 74 69 6e 67 20 61 6e 6f 74 68 65 | starting anothe| 000028b0 72 20 74 6f 6f 6c 62 6f 78 20 74 61 73 6b 20 6a |r toolbox task j| 000028c0 75 73 74 20 6c 69 6b 65 20 74 68 61 74 2e 20 54 |ust like that. T| 000028d0 68 69 73 20 72 6f 75 74 69 6e 65 20 77 69 6c 6c |his routine will| 000028e0 20 64 6f 20 74 68 65 20 6e 65 63 65 73 73 61 72 | do the necessar| 000028f0 79 20 77 6f 72 6b 61 72 6f 75 6e 64 73 20 74 6f |y workarounds to| 00002900 20 70 72 6f 76 69 64 65 20 61 20 73 61 66 65 20 | provide a safe | 00002910 77 61 79 20 74 6f 20 73 74 61 72 74 20 61 6e 79 |way to start any| 00002920 20 74 61 73 6b 2e 20 53 6f 20 64 6f 6e 27 74 20 | task. So don't | 00002930 75 73 65 20 57 69 6d 70 5f 53 74 61 72 74 54 61 |use Wimp_StartTa| 00002940 73 6b 20 6f 72 20 2a 57 69 6d 70 54 61 73 6b 20 |sk or *WimpTask | 00002950 69 6e 20 74 68 65 20 75 74 69 6c 69 74 69 65 73 |in the utilities| 00002960 2c 20 75 73 65 20 74 68 69 73 20 63 61 6c 6c 20 |, use this call | 00002970 69 6e 73 74 65 61 64 2e 0a 0a 3c 68 33 3e 53 45 |instead...<h3>SE| 00002980 5f 4d 65 73 73 61 67 65 3c 2f 68 33 3e 0a 3c 70 |_Message</h3>.<p| 00002990 72 65 3e 4f 6e 20 65 6e 74 72 79 3a 0a 52 30 09 |re>On entry:.R0.| 000029a0 2d 3e 4d 65 73 73 61 67 65 0a 3c 2f 70 72 65 3e |->Message.</pre>| 000029b0 0a 54 68 69 73 20 63 61 6c 6c 20 77 69 6c 6c 20 |.This call will | 000029c0 6f 70 65 6e 20 61 20 6d 65 73 73 61 67 65 20 62 |open a message b| 000029d0 6f 78 20 6f 6e 20 74 68 65 20 73 63 72 65 65 6e |ox on the screen| 000029e0 2c 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 |, containing the| 000029f0 20 6d 65 73 73 61 67 65 2e 20 49 6e 20 73 6f 6d | message. In som| 00002a00 65 20 63 61 73 65 73 20 74 68 69 73 20 69 73 20 |e cases this is | 00002a10 70 72 65 66 65 72 61 62 6c 65 20 74 6f 20 75 73 |preferable to us| 00002a20 69 6e 67 20 57 69 6d 70 5f 52 65 70 6f 72 74 45 |ing Wimp_ReportE| 00002a30 72 72 6f 72 2e 0a 0a 3c 68 33 3e 53 45 5f 4d 61 |rror...<h3>SE_Ma| 00002a40 6b 65 56 69 65 77 65 72 4e 61 6d 65 3c 2f 68 33 |keViewerName</h3| 00002a50 3e 0a 3c 70 72 65 3e 4f 6e 20 65 6e 74 72 79 3a |>.<pre>On entry:| 00002a60 0a 52 30 09 2d 3e 42 75 66 66 65 72 20 66 6f 72 |.R0.->Buffer for| 00002a70 20 6e 61 6d 65 0a 52 32 09 2d 3e 56 69 65 77 65 | name.R2.->Viewe| 00002a80 72 0a 3c 2f 70 72 65 3e 0a 54 68 69 73 20 63 61 |r.</pre>.This ca| 00002a90 6c 6c 20 77 69 6c 6c 20 70 75 74 20 74 68 65 20 |ll will put the | 00002aa0 76 69 65 77 65 72 20 6e 61 6d 65 20 28 64 69 72 |viewer name (dir| 00002ab0 65 63 74 6f 72 79 29 20 69 6e 74 6f 20 74 68 65 |ectory) into the| 00002ac0 20 62 75 66 66 65 72 2e 0a 0a 3c 68 33 3e 53 45 | buffer...<h3>SE| 00002ad0 5f 4d 61 6b 65 4f 62 6a 65 63 74 4e 61 6d 65 3c |_MakeObjectName<| 00002ae0 2f 68 33 3e 0a 3c 70 72 65 3e 4f 6e 20 65 6e 74 |/h3>.<pre>On ent| 00002af0 72 79 3a 0a 52 30 09 2d 3e 42 75 66 66 65 72 20 |ry:.R0.->Buffer | 00002b00 66 6f 72 20 6e 61 6d 65 0a 52 32 09 2d 3e 56 69 |for name.R2.->Vi| 00002b10 65 77 65 72 0a 52 33 09 2d 3e 4f 62 6a 65 63 74 |ewer.R3.->Object| 00002b20 0a 3c 2f 70 72 65 3e 0a 54 68 69 73 20 63 61 6c |.</pre>.This cal| 00002b30 6c 20 77 69 6c 6c 20 70 75 74 20 74 68 65 20 66 |l will put the f| 00002b40 75 6c 6c 20 70 61 74 68 6e 61 6d 65 20 6f 66 20 |ull pathname of | 00002b50 74 68 65 20 6f 62 6a 65 63 74 20 69 6e 74 6f 20 |the object into | 00002b60 74 68 65 20 62 75 66 66 65 72 2e 0a 0a 3c 68 33 |the buffer...<h3| 00002b70 3e 53 45 5f 47 65 74 54 79 70 65 3c 2f 68 33 3e |>SE_GetType</h3>| 00002b80 0a 3c 70 72 65 3e 4f 6e 20 65 6e 74 72 79 3a 0a |.<pre>On entry:.| 00002b90 52 33 09 2d 3e 4f 62 6a 65 63 74 0a 4f 6e 20 65 |R3.->Object.On e| 00002ba0 78 69 74 3a 0a 52 30 09 4f 62 6a 65 63 74 20 74 |xit:.R0.Object t| 00002bb0 79 70 65 0a 3c 2f 70 72 65 3e 0a 54 68 69 73 20 |ype.</pre>.This | 00002bc0 63 61 6c 6c 20 77 69 6c 6c 20 72 65 74 75 72 6e |call will return| 00002bd0 20 74 68 65 20 74 79 70 65 20 6f 66 20 74 68 65 | the type of the| 00002be0 20 6f 62 6a 65 63 74 2e 0a 0a 3c 68 33 3e 53 45 | object...<h3>SE| 00002bf0 5f 47 65 74 4c 65 61 66 3c 2f 68 33 3e 0a 3c 70 |_GetLeaf</h3>.<p| 00002c00 72 65 3e 4f 6e 20 65 6e 74 72 79 3a 0a 52 30 09 |re>On entry:.R0.| 00002c10 2d 3e 42 75 66 66 65 72 0a 52 32 09 2d 3e 56 69 |->Buffer.R2.->Vi| 00002c20 65 77 65 72 0a 52 33 09 2d 3e 4f 62 6a 65 63 74 |ewer.R3.->Object| 00002c30 0a 4f 6e 20 65 78 69 74 3a 0a 52 30 09 2d 3e 54 |.On exit:.R0.->T| 00002c40 65 72 6d 69 6e 61 74 6f 72 20 6f 66 20 6c 65 61 |erminator of lea| 00002c50 66 6e 61 6d 65 0a 3c 2f 70 72 65 3e 0a 54 68 69 |fname.</pre>.Thi| 00002c60 73 20 63 61 6c 6c 20 77 69 6c 6c 20 70 75 74 20 |s call will put | 00002c70 74 68 65 20 6c 65 61 66 6e 61 6d 65 20 6f 66 20 |the leafname of | 00002c80 74 68 65 20 6f 62 6a 65 63 74 20 69 6e 74 6f 20 |the object into | 00002c90 74 68 65 20 62 75 66 66 65 72 2e 0a 0a 3c 2f 62 |the buffer...</b| 00002ca0 6f 64 79 3e 3c 2f 68 74 6d 6c 3e 0a |ody></html>.| 00002cac