Home » Archimedes archive » Acorn Computing » 1994 08 subscription disc.adf » 9408s » Shareware/Event/Documents/!EShellDoc/TextHelp/Manual

Shareware/Event/Documents/!EShellDoc/TextHelp/Manual

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 » Acorn Computing » 1994 08 subscription disc.adf » 9408s
Filename: Shareware/Event/Documents/!EShellDoc/TextHelp/Manual
Read OK:
File size: C2D5 bytes
Load address: 0000
Exec address: 0000
File contents
      Interim User Manual For EvntShell
      ---------------------------------
      
      1  Introduction                          
      2  Creating A New Application
      3  A Tutorial
      4  A General Overview
          1.  Dynamic Windows
          2.  Static Windows
          3.  Resources
               1. Templates
               2. Sprites
               3. Message Files
               4. Modules
          4.  Menus
          5.  Saving Files
          6.  Loading Files
          7.  Compressing EvntShell Applications
          8.  The RunTime Library
          9.  The !ShellSys Application
          10. Handling Panes
          11. Outline Fonts
          12. Interactive Help
          13. User Redraws
               1. Simple cases
               2. Drawing into a sprite
          14. Complex Icon Types
               1. Bump Icons
          15. Memory Management
      5  The Tools
          1. !AppBuild
          2. !ShellDBug
          3. Other Tools
              1. !BasShrink/!BasShrink_PD
              2. !BLibII
              3. !TemplEd
              4. !StrongEd2
              5. !StrongHlp
      6  Distributing EvntShell Applications
      7  Debugging
      8  The Credits
      9  Future Enhancements
      10 Changes Since V1.09
      
      1. Introduction

      A 'Shell' program is a starting point for developing your own 
      applications that run under the RISC-OS wimp system. The 
      EvntShell library contains code to handle most of the 'Events' 
      (i.e. opening a menu, closing a window etc) that can occur, and 
      all your application has to do is inform the library what it 
      should do when certain events occur. For example a menu can be 
      attached to a window or to an icon - the library will open the 
      menu for you (in the correct position!) when the <MENU> button on 
      the mouse is used. 

      PROCshell_AttachModeChangeHandler is another very simple example 
      which calls a function in the 'User Application' (this is the bit 
      you write, starting with a 'Shell' created by the AppBuild tool 
      or by modifying one of the examples) when the screen mode 
      changes. A more complicated example is PROCshell_AttachPane which 
      allows the attachment of pane windows to a parent window. All 
      opening and closing of windows and panes is handled totally by 
      the library code. 

      Normally writing a wimp application is a very complex business, 
      involving much reading of the Programmers Reference Manuals, 
      magazine articles and examining other applications. The aim of 
      the EvntShell library is to reduce the need for this and to 
      enable the speedy creation of easily maintained and robust 
      applications. 

      In order to use the library it is necessary to have a reasonable 
      understanding of how to use an Archimedes and the programs 
      supplied with it. Some experience in BASIC is also of course 
      required. This manual does not cover how to use tools like the 
      Template editor which has its own instructions and may not have 
      been supplied with your copy of the EvntShell library. 

      2. Creating An Example Application 

      The easiest way to create a new application is to use the 
      AppBuild tool. Run this and drag the application icon from the 
      AppBuild window to a directory display. The various options 
      available using AppBuild will be discussed later, but for now 
      just quit AppBuild and run the newly created application. You 
      should see a blank icon appear on the icon bar and clicking 
      <MENU> over this will bring up the usual icon bar menu including 
      the items 'Info' and 'Quit'. 'Info' leads to the normal 'About 
      This Program' window (the icons of which are blank at the moment) 
      and 'Quit' which stops the application and removes it from the 
      icon bar - don't quit it just yet. 

      Clicking <SELECT> on the iconbar icon will open a window which 
      has the usual controls and may be scrolled and moved around the 
      screen. Keep the application you have just created handy as in 
      the next section we'll look at the program code and see how to 
      change it to suit your own needs. 

      As you can see it is very easy to create a new shell application 
      - even if this particular one doesn't do anything useful yet! 

      3. A Tutorial 

      The first few lines of any EvntShell program initialise the 
      memory management, set up error handlers and load any resources 
      (templates, message files, sprites etc) required by the program. 
      This code should not need editing. PROCapp_init determines what 
      happens when the application starts, in this case an iconbar icon 
      is created and various 'events' are attached to it. The code 
      created by !AppBuild is as shown below, although the REMs have 
      been added for this manual. Try defining other windows and menus 
      and see what happens. 

      
      DEF PROCapp_init
      PROCSetUp_Menus   :REM set up iconbar menu
      PROCSetUp_Windows :REM set up main window
      PROCSetUp_IconBar :REM put icon on the iconbar and attach events
      REM and now initialise the StrongHlp help system (optional!)
      PROCshell_InitHelpSystem(FNshell_GetAppDir+".FNshell_GetAppName"
      ,TRUE)
      ENDPROC  
      :
      REM ===== Menu_Setup routines ===================================
      
      DEF PROCSetUp_Menus
      LOCAL void%
      REM Construct the iconbar menu..
      MenuHandle_IconBar%=FNshell_MenuNew("NewApp")
      MenuItem_Info%     =FNshell_MenuAdd(0,"Info","")
      void%              =FNshell_MenuAdd(0,"Quit","_MenuSelect_Quit")
      REM Attach the 'About this program' dialog box to the 'Info'
      REM item of the menu. Call FN_PreOpenInfo before opening it so
      REM that the icons can be filled in, don't call a FN after
      REM opening it.
      PROCshell_AttachMenuDBox(MenuItem_Info%,"progInfo",
      "_PreOpenInfo","")
      ENDPROC
      :
      
      REM ===== Window_SetUp routines =================================
      
      DEF PROCSetUp_Windows
      REM create a window from the template called 'mainw', place the 
      REM window handle in mainw%
      PROCshell_CreateWindowStatic("mainw",mainw%)
      ENDPROC
      :
      
      REM ===== IconBar_SetUp routines ================================
      
      DEF PROCSetUp_IconBar
      REM sicon is the handle of the icon. -1 means right side of
      REM iconbar, -2 would be left side. The name of the sprite for
      REM the icon is the same as the application directory. A menu
      REM with the handle 'MenuHandle_IconBar%' is attached.
      sicon=FNshell_Iconbar(-1,"!"+FNshell_GetAppName,"",120,
      MenuHandle_IconBar%,0,0,0)
      REM attach a help tag for the icon, this will send the text 
      REM following 'iconbar:' to the !Help application. See the 
      REM 'Messages' file for this.
      PROCshell_AttachHelpTag(-1,sicon,"iconbar")

      REM lastly attach the clickselect event. When <SELECT> is
      REM clicked over the icon call FN_clickiconbar
      PROCshell_AttachClickSelect(-1,sicon,"_ClickSelect_IconBar")
      ENDPROC
      :
      
      REM ===== Dialog_PreOpen routines ===============================
      
      DEF FN_PreOpenInfo(h%)
      REM fill in icons. Try editing the 'Messages' file to make text 
      REM appear in the icons (just add the text after progInfo0: etc). 
      REM h% is the handle of the window.
      PROCshell_IconPutData(h%,0,FNshell_MessageNoArgs("progInfo0"),0)
      PROCshell_IconPutData(h%,1,FNshell_MessageNoArgs("progInfo1"),0)
      PROCshell_IconPutData(h%,2,FNshell_MessageNoArgs("progInfo2"),0)
      PROCshell_IconPutData(h%,3,FNshell_MessageNoArgs("progInfo3"),0)
      =0
      :
      
      REM ===== Dialog_PostOpen routines ==============================
      
      REM ===== Click_Select routines =================================
      
      DEF FN_ClickSelect_IconBar(wh%,icon%)
      REM open the window with the handle mainw% when a click of
      REM <SELECT> is received on the iconbar icon. wh% is the handle
      REM of the window over which the click occured (the iconbar) and
      REM icon% is the handle of the iconbar icon
      PROCshell_OpenWindowStatic(mainw%)
      =0
      :
      
      REM ===== Menu_Select routines ==================================
      
      DEF FN_MenuSelect_Quit(blk%)
      _closedown%=TRUE
      =0
      :
      
      REM ===== Menu_Warning routines =================================
      
      REM ===== Data_Load routines ====================================
      
      REM ===== Data_Save routines ====================================
      
      
      4. General Overview 

      This section explains the various elements of an application 
      using the EvntShell library, and any limitations and assumptions 
      made by me. 

      4.1 Dynamic Windows 

      Dynamic windows are those created by moving the pointer over a 
      submenu pointer arrow (i.e the normal 'About this program' window 
      produced by the 'Info' entry on the iconbar menu) or optionally 
      when a 'hot key' is pressed (for example F3 in most applications 
      opens a save box). They are opened with a call to 
      PROCshell_OpenWindowDynamic. 

      When writeable icons exist in the dynamic window up/down cursor 
      keypresses move the caret between the icons using the icon 
      handles to determine where to move next. You should ensure 
      therefore that the order of the icon handles is a logical 
      progression through the dialog box. Icons which are unselectable 
      (i.e. greyed out) will be ignored. Pressing the <RETURN> key 
      moves the caret to the next icon, unless the caret is already in 
      the last writeable icon, in which case icon 0 (normally a 
      'default action' icon with an extra border) is pressed and the 
      menu/dialog box closed. Actually clicking <SELECT> on icon 0 of a 
      dynamic dialog box will cause the shell library to close the 
      window as well. 

      When a 'hot key' is pressed you have the option of opening a 
      dynamic dialog box which will disappear when a mouse click is 
      made outside it or the <ESC> key is pressed, or as a 'Static' 
      dialog box which must be explicitly closed by the user 
      application program. 

      Do not attempt to close a dynamic dialog box with a call to 
      PROCshell_CloseWindow or PROCshell_DeleteWindow as this will 
      cause an error when the shell library tries to close or delete 
      the window. 

      All windows used by the user application are assumed to be 
      defined in the 'Templates' file and edited using FormEd or one of 
      the Public Domain/ShareWare equivalents. 

      4.2 Static Windows 

      These are opened with a call to PROCshell_OpenWindowStatic and 
      respond to cursor and <RETURN> keypresses like dynamic dialog 
      boxes except that pressing <RETURN> in the last writeable icon 
      will not close the window. Static windows must be created with a 
      call to PROCshell_CreateWindowStatic. 

      Closing these windows is the responsibility of the application 
      program (use PROCshell_CloseWindow) except in the case of a click 
      on the 'Close' icon in the title bar icon (if present). 

      You would use a static window for the main window of an 
      application, or perhaps for a save box as in the case of the 
      !WinSave2 example. The advantage of using a static window in this 
      case is that this allows the user to open directory viewers or 
      start other applications while keeping the save box on the 
      screen. 

      4.3 Resources 

      'Resources' is a general term for additional files needed by an 
      application. There will (almost) always be some of these, such as 
      sprite files. Others, for example message files may not be 
      required. 

      The EvntShell library now supports ResFind which allows the 
      selection of the desired language for message files etc much 
      easier. Briefly explained it checks the currently configured 
      language of the computer it is running on and sets up a path to 
      the resource files. This would normally be <App$Dir>.Resources.UK 
      for a UK configured computer, or <App$Dir>.Resources.Germany for 
      a German one. This is handled for you if you use !AppBuild to 

      create the application. 

      AppBuild now offers to place the resources in the appropriate 
      directories for you when you create a new application, and to 
      place a call to ResFind in the !Run file. 

      Using ResFind is optional and EvntShell applications will 
      function equally well if you don't use it. It does make the 
      production of applications that can be easily used in any country 
      much easier, however, and this should be encouraged. Most of the 
      programming tools and modules used during the development of this 
      library were written outside the UK. 

      The author would appreciate help in translating the ShellMsgs 
      file and the documentation into other languages. 

      The full ResFind documentation supplied with the library contains 
      further details on how it works and the advantages to be gained 
      by using it. As a taster, here is the part of the documentation 
      intended to be distributed with applications using ResFind. 

      
      (Base for the application's documentation - please replace 
      <ProgName> by the name of your application without the !)
      
      !<ProgName> adapts automatically to the configured language if 
      the corresponding messages etc. are available. For this purpose a 
      Resources directory is contained in the application in which a 
      subdirectory for each language supported resides. If the language 
      you need isn't in there, please feel free to duplicate any of 
      these language directories and translate the contents.
      
      When you run the program a utility called ResFind is called which 
      reads the language your computer is configured to and then looks 
      for the corresponding language directory. If this fails the 
      program will run in English (UK). By setting several system 
      variables (best done in your system's !Boot file) you can change 
      the language looked for. With this you can make sure a program 
      runs in a certain language, e.g. to avoid a weird translation. 
      Furthermore it is possible to name several languages you prefer 
      to English.
      
      This is controlled by three system variables:
      
      
      <ProgName>$Language, ResFind$LanguagesPref and 
      ResFind$Languages$Suff. 

      
      When running the application ResFind looks for the first language 
      supported along the following list of languages:
      
      
      1. Contents of the variable <ProgName>$Language 2. Contents of 
      the variable ResFind$LanguagesPref 3. The configured language 4. 
      Contents of the variable ResFind$LanguagesSuff 5. UK 

      
      Take a Norwegian user for example (lots of great programs come 
      from there) whose computer is configured to 'Norway'. Since this 
      language isn't too common in Europe most programs won't support 

      it - except for Norwegian ones. But our user is pretty good in 
      German and French but not too fond of English. Therefore he 
      prefers these languages to UK and would thus put the following 
      line in his system's !Boot file:
      
      *Set ResFind$LanguagesSuff Germany,France
      
      Running an applications (such as this one) using ResFind the list 
      of languages looked for is 'Norway,Germany,France,UK'.
      
      In case this user has an application called !Pete supporting the 
      language 'Humorous' the line:
      
      
      *Set Pete$Language Humor 

      
      in the !Boot file makes sure !Pete will run humorous.
      
      
      A brief description of the various resource files follows. 

      4.3.1 Templates 

      All windows used by programs based on the shell library would 
      normally be defined using a template editor as this is far 
      simpler than creating the windows/icons in the user program. This 
      is not as inflexible as it may sound as windows and icons can be 
      resized, moved or otherwise altered by shell library routines. 

      The template file must be called 'Templates' and be either in the 
      application directory or in the appropriate language directory if 
      ResFind is in use. Note that if you are using different templates 
      for different languages you must use ResFind. In most cases, 
      however, it is sufficient to have only one template file in the 
      application directory and to insert the text taken from the 
      message file in the language of choice into the icons. 

      A call to PROCshell_ResourcesInit will find the template file and 
      load all the templates it contains allocating memory as required. 

      4.3.2 Sprites 

      The sprite file must be called 'Sprites' and be either in the 
      application directory or in the appropriate language directory if 
      ResFind is in use. A call to PROCshell_ResourcesInit will find 
      the file if it exists and load all the sprites it contains 
      allocating memory as required. The sprite area pointer for each 
      loaded template will be set to point to the user sprite area, 
      which put simply this means that all sprites displayed in windows 
      must be present in the 'Sprites' file. This may, however, be 
      changed after loading. 

      4.3.3 Message Files 

      The message file is a normal ASCII file written using !Edit or 
      similar that contains message strings preceeded by a message tag. 
      The application program should find the messages as required by 
      tag name which allows the production of foreign language versions 
      (probably by someone else!). It is also far easier to edit the 
      message file to change text displayed by the application than 

      using !FormEd or similar. 

      The !Run file of the user application automatically loads a 
      support module 'MsgTrans' if required (it is built in to RISC OS 
      3) to provide this facility. 

      The message file must be called 'Messages' and be in the 
      application directory or in the appropriate language directory if 
      ResFind is in use. A call to PROCshell_ResourcesInit will find 
      the file if it exists and load all the messages it contains 
      allocating memory as required. 

      The messages issued by the library code are stored in a file 
      called 'ShellMsgs' inside the !ShellSys.Resources.UK directory. 
      If this file is present in the user application directory (or the 
      application Resources directory) then it is loaded from there, if 
      not it is loaded from !ShellSys. This is to aid the construction 
      of stand alone applications. 

      4.3.4 Modules 

      Various Public Domain modules are used by the EvntShell library, 
      these are stored in the !ShellSys application and loaded as 
      required. A full list is: 

      
      Interface   - 3D icon effects, changing pointer shapes etc
      MenuUtils   - menu handling
      FontMenu    - font menu handling
      MsgTrans    - message files (supplied for Risc-OS 2
                    compatability)
      FontWindow  - handling outline fonts across mode changes (not
                    used at the moment)
      
      
      Note that in general no documentation is supplied for these 
      modules, it is all available elsewhere (or why not write to the 
      author?) 

      The EvntShell library makes the assumption that the interface 
      module will always be used. The reason is that firstly that it is 
      highly likely that some other PD program will have already loaded 
      it, and secondly that the facilities it provides for changing 
      pointer shapes over certain icons is extremely useful as a prompt 
      for what the icon is for. Indeed RISC-OS 3 has this built in so 
      even Acorn are supporting 3D buttons etc.... 

      The module is loaded by the !Run file if not already loaded. 
      Using a template editor that is 'Interface Aware' makes 
      incorporating these effects into a user program easy as once the 
      icons have been designed and placed the shell library handles all 
      the redrawing automatically. 

      Note that windows containing 3d interface icons must have the 
      'Auto Redraw' flag off, but if the template editor displays 
      interface icons then the user application will as well. 

      4.4 Menus 

      Menus are now handled by MenuUtils which was written by Alex 
      Petrov. Versions of the library prior to 1.20 used a menu editor 
      to create a seperate menu template file, but I have now abandoned 
      this as it was rather inflexible. 

      The use of MenuUtils has enabled me to remove large chunks of 
      slow BASIC code and to provide many more features, such as 
      creation and modification of menus under program control. The 
      menus themselves appear more quickly as well (OK Cy?). 

      The support module is automatically loaded by the !Run file to 
      provide the new menu handling SWIs used by the EvntShell library. 

      4.5 Saving Files 

      This is achieved by a call to PROCshell_AttachDataSave which 
      specifies which filetype the saved file should be given, the name 
      of a function which will actually perform the save and the 
      window/icon handles the drag save event is associated with. It is 
      therefore possible to have different drag save events attached to 
      different icons in the same window. This is useful where it is 
      possible to save the file as more than one type - you can have 
      multiple filetype icons in the save window. 

      The EvntShell library supports RAM file transfer for speed when 
      saving data to consenting applications. 

      See the !WinSave2 and !VBase2 example applications for how to use 
      this routine. 

      4.6 Loading Files 

      This is achieved by a call to PROCshell_AttachDataLoad which 
      tells the EvntShell library which filetypes the user application 
      is interested in and the name of a function to call when a load 
      event occurs. Multiple files may be loaded, but in the current 
      release of the library it is up to the user application to keep 
      track of where they are loaded and if they have been modified. 
      This will change in a future release. 

      If required the files can be loaded automatically into a reserved 
      block of memory, or the user application can have total control 
      over loading and processing the file. 

      The EvntShell library supports RAM file transfer for speed when 
      loading data from consenting applications. 

      It is also possible to arrange for the user application to 
      respond to a range of filetypes by attaching more than one 
      handler. 

      An example application !DataLoad should have been included with 
      the Library to demonstrate how to do this. 

      This is the code from !DataLoad used to achieve this : 

      
      PROCshell_AttachDataLoad(mainw%,0,&FEC,"_dataloadFEC",TRUE)
      
      
      The first parameter, mainw% is the wimp window handle, the second 

      is the icon handle. &FEC is the filetype to respond to and 
      '_dataloadFEC' is the name of the function to call to actually 
      load the file. The last parameter is TRUE to load the file 
      automatically into a reserved block of memory or FALSE if you 
      want to handle the loading yourself. In this case loading is 
      automatic and the loading function is simply: 

      
      DEF FN_dataloadFEC(loc%,type%,name$,file_size%)
      void%=FNshell_MessageWindow("File '"+name$+"'",0,"DataLoad","")
      =0
      
      
      The data file (of type &FEC, template) has been loaded at 
      location loc%, its type is in type% and the full path name of the 
      file is in name$. All the function itself does is call another 
      function to display a message window so that you can see that 
      loading the file has worked. This is a useful debugging 
      technique! 

      This method of loading a file works well for datafiles that are 
      stored as one continuous block of data such as a text file which 
      will be processed in some way. Suppose, however, you have a 
      simple database type application which needs to load data into 
      BASIC arrays. In this case you would simply use (assuming now the 
      filetype is &205): 

      
      PROCshell_AttachDataLoad(mainw%,0,&205,"_dataload205",FALSE)
      
      
      FN_dataload205 receives the full pathname of the file which has 
      been dragged to icon 0 (providing the filetype of the file was 
      &205, otherwise the load will be ignored) which may now be opened 
      and the data loaded as usual. If the 'no load' flag was set for 
      this load event and the load was from another application the 
      data is saved in a file called 'ScrapFile' in the user 
      application directory. 

      4.7 Compressing EvntShell Applications 

      Due to the complex nature of the library code and the desire for 
      it to do as much as possible to make a user application easy to 
      write the ShellLib library file has expanded to around 150K. This 
      is obviously undesirable especially if you are planning to send 
      your finished program to a PD library. If you want people to be 
      able to read your source code you can use the 'RunTime' version 
      of the library which has been mildly compressed, but for the 
      smallest possible program it is necessary to append the library 
      (either version) to the end of the user application, remove the 
      line which loads the library file and run the whole lot through a 
      BASIC program compressor. 

      I recommend !BasShrink or !Shrink_PD (the Public Domain version 
      of !BasShrink) by John Wallace although John's program is slow 
      and not presently multitasking it does produce code that still 
      runs! This is unfortunately not true of Cy Booker's otherwise 
      superb !BC which will not work on the EvntShell library. However, 
      if I or Cy can find out what the problem is we'll fix it. 

      Future versions of !BasShrink should be able to remove unused 
      routines to save even more space, or alternatively BLibII can be 
      used to pre-process the application to link in only the routines 
      that are actually used. See the manual section 'Other Tools' for 
      more details. 

      There is one important point to bear in mind when using the shell 
      library and !BasShrink together - function names that are 
      EVALuated by the shell library should begin with a '_' character 
      and the 'Preserve names starting with' radio button in the 
      !BasShrink window must be ON. In short if you are calling any 
      shell library routine that has a function name as a parameter 
      then that name must start with a '_'. Failure to observe this 
      rule will result in a non-working compressed program! 

      Assuming you have !BasShrink 2.14 or later the EvntShell library 
      can be compressed with all switches on except 'Shorten FN names', 
      'Shorten PROC names' and 'Remove * comments'. If you are not 
      going to use !BLibII you can switch on 'Remove * comments' to 
      strip out the !BLibII commands. 

      If you append the EvntShell library to the user application 
      manually or by using BLibII you can compress the complete program 
      with all switches on. 

      4.8 The RunTime Library 

      This is a compressed version of the full library which should be 
      used wherever possible as it will load and run faster. The only 
      reason for using the uncompressed library would be to add extra 
      debugging code or perhaps to modify the routines. In this case, 
      however, it is better to just copy the uncompressed routine into 
      the user application and edit it there. 

      The uncompressed version is called ShellLib, the compressed 
      version is ShellLibRT. Both can be found inside the !ShellSys 
      application directory. 

      The ShellLibRT file has had the BLibII commands stripped out to 
      save space. 

      4.9 The !ShellSys Application 

      As large chunks of code are common to all EvntShell applications 
      it makes sense to store it only once on the disk, hence !ShellSys 
      which should be treated like the !System application. If you have 
      a hard disk put it in the root directory (or ensure it is booted 
      by your Boot file). If you have a floppy only system put it on 
      all your disks (removing the ShellLib file and making sure all 
      EvntShell applications use ShellLibRT will help save disk space). 
      The system message file and various modules are also to be found 
      here. 

      4.10 Handling Panes 

      A pane window is a window attached to a parent window which has 
      different properties to the parent. A well-known example is the 
      'ToolBox' pane attached to a !Draw window which always appears at 
      the top left of the parent window however the parent window is 
      scrolled. Another example could be a parent window without 
      scrollbars which has a scrolling pane attached to the work area 

      which might be used in a 'FindFile' application to display a list 
      of finds. 

      Panes are created using !FormEd or similar with the 'pane' flag 
      set. A call to PROCshell_AttachPane specifies which pane is 
      attached to which window and the position of the pane. Multiple 
      panes may to attached to a parent window (see the example 
      application !Panes). 

      The opening and closing of panes is handled totally by the shell 
      library - a call to PROCshell_OpenWindow after attaching the 
      panes will open the parent window and the panes together. 

      It is normally necessary for certain bits in the window 
      definition block to be set up in a special way if a window is to 
      be treated as a pane. This is not required when using the 
      EvntShell library as the act of attaching the event makes the 
      changes needed. 

      You should avoid attaching a pane to a parent window where it is 
      possible to resize the parent in such a way that the pane lies 
      outside the window it is attached to. This will cause (non-fatal) 
      problems when the windows are redrawn. Most RISC OS programs also 
      avoid this for the same reasons. 

      4.11 Outline Fonts 

      The EvntShell Library supports Outline Fonts in two ways at the 
      moment. Firstly Joris R�ling's FontMenu module is used to display 
      a menu of all available fonts on the system, and secondly the 
      window template loading routine allows icons and window titles to 
      use fonts. 

      Routines are provided to attach a font menu to an existing menu 
      as a submenu (PROCshell_AttachFontSubMenu), or to open the font 
      menu as a menu in its own right (PROCshell_AttachFontMenu). If 
      the user makes a valid font selection the font name can be 
      retrieved (with FNshell_FontMenuGetLastSelectedFont) for use in 
      the user application. Changes to the Font$Path variable such as 
      adding or removing font directories are detected and the font 
      menu rebuilt as necessary. 

      It will not, however, detect fonts being added or removed from an 
      existing font directory while the EvntShell application is 
      running. It appears that a re-boot is required to sort things out 
      after the contents of the font directories have changed. Oh well, 
      it seems that a lot of other applications can't cope with this 
      either! 

      The FontMenu module creates a menu in the relocatable module area 
      which is shared between all applications wishing to use it. As a 
      font menu potentially takes up a lot of space this is a very 
      efficient way of handling it, especially as the menu is laid out 
      so that it is easier to use than a straight list of fonts. 

      A help system containing the full FontMenu documentation is 
      supplied with the EvntShell library as it is a requirement that 
      the the module and its documentation must be supplied together. 
      However, it is unlikely that the SWIs provided by the module will 
      need to be called by the user application as the library code 
      performs the necessary actions. 

      The example application !Redraw demonstrates the use of these 
      routines. 

      4.12 Interactive Help 

      The EvntShell library supports Acorn's Interactive Help 
      application !Help by searching icon validation strings for the 
      'I' command (as recommended by the author of the Interface 
      module) for a message tag. 

      The message belonging to the tag will be looked up and sent to 
      !Help (if !Help is running). An example would be a validation 
      string of "iMessTag01", where the file 'Messages' contains the 
      line 'MessTag01:This is a test'. 'This is a test' would be the 
      message displayed. 

      It is also possible to attach a message tag to a window or a 
      window/icon using PROCshell_AttachHelpTag. A message tag is a 
      string consisting of not more than 11 characters long and 
      represents a message string to be found in the 'Messages' file. 

      4.13 User Redraws 

      4.13.1 Simple Cases 

      By 'Simple Cases' I mean text, lines, arcs, filled shapes etc. In 
      other words anything that it is easy for the program to redraw 
      quickly - this excludes maps of the world and any kind of random 
      display. For these cases it is much faster to redirect the screen 
      output into a sprite (see the next section). 

      Using the example application you created earlier (or create a 
      new one using AppBuild) add the following line to 
      PROCSetUp_Windows: 

      
      PROCshell_AttachUserRedraw(mainw%,"_redraw")
      
      
      and add the following FN definition: 

      
      DEF FN_redraw(blk%,x0%,y0%)
      REM set colour for circle - colours are numbered 0-15!
      REM draw the circle..
      SYS "Wimp_SetColour",11
      CIRCLE FILL x0%+200,y0%-200,120
      REM set colour for text...
      SYS "Wimp_SetColour",8 :REM colours are numbered 0-15!
      MOVE x0%+80,y0%-340:PRINT "This is an example of"
      MOVE x0%+40,y0%-380:PRINT "user drawn text and graphics"
      MOVE x0%+95,y0%-420:PRINT "in a desktop window"
      =0
      
      
      The routine that attaches the redraw event also alters the 
      'flags' of the window so that the 'Auto redraw' bit is set up 
      correctly. When you run the application and open the main window 
      now, a circle and some text will appear in the window. If another 
      window is moved over this one, note that the window is correctly 
      redrawn. 

      The parameters x0% and y0% for the redraw routine are the 
      coordinates of the top left corner of the window. Note that y 
      coordinates are negative! Try experimenting with other drawing 
      commands and putting text in different places in the window to 
      get the hang of this. 

      4.13.2 Drawing Into A Sprite 

      With a more complicated or random display you need to set up a 
      sprite to draw into. The example application !Redraw2 shows how 
      to do this. 

      Note in this case that the display within the window is animated 
      by calling the plotting routine at every null event received. 
      There also has to be two redrawing routines, one called when you 
      want the display redrawn and one for when the wimp wants it 
      redrawn (hence the call to PROCshell_AttachUserRedraw). In both 
      cases it is necessary just to replot the sprite. 

      4.14 Complex Icons 

      4.14.1 Bump Icons 

      Bump icons are simply a pair of (usually!) arrow shaped icons 
      that effect the value displayed in a third icon. The EvntShell 
      library allows you to create this effect with one call to 
      PROCshell_AttachBumpIconHandler. See the !VBase2 demo application 
      for an example of its use. 

      4.15 Memory Management 

      A crucial element of the EventShell library is the use of memory 
      management routines originally published in Risc User magazine 
      and used with permission. Many library routines require some 
      memory workspace and they obtain this by calling 
      FNshell_HeapBlockFetch(bytes_required) which returns the address 
      of the allocated memory and release it when they are finished 
      with PROCshell_HeapBlockReturn. 

      This is vital for avoiding 'side effects' caused by using the 
      same block of memory for different purposes as most WIMP programs 
      tend to do. Equally important is the fact that as the routines 
      are written in ARM code they are extremely fast. 

      Another point to note is that this memory is claimed from the 
      current wimp slot and not the RMA (Relocatable Module Area). This 
      ensures that all of the memory claimed by the application is 
      released back to the free pool when the application quits - this 
      is not the case if memory is claimed from the RMA. It is only 
      possible to reclaim RMA memory if the free space is at the top of 
      the RMA which leads to the RMA allocation gradually growing as 
      you run and quit applications. 

      Unfortunately (in the authors view!) the MenuUtils module uses 
      the RMA for storage of indirected data and menu structures. 
      Hopefully this data gets put in any small available blocks so 
      that the RMA allocation does not increase. 

      You are strongly advised to use the supplied memory management 
      routines in the user application should you require storage for 
      data, or temporary blocks for use with SWI calls for example. The 
      time penalty for doing this is very small and in any case results 
      in a more reliable and easier to maintain application. 

      5 The Tools 

      Various programming tools have been written by myself and others 
      to make producing wimp applications easier and faster. If you 
      obtained the EvntShell library or updates thereof from the author 
      you will have received all of the tools described here. If you 
      obtained it from a PD library the author has little or no control 
      over what else is supplied on the disk, so you may have to obtain 
      the missing tools from other disks in the PD library, or better 
      still send me a blank disk. 

      Only one of the tools (one of the many Template editors 
      available) are vital to the EvntShell Library, the others you can 
      do without but they do make life easier. 

      The following is a brief description of the tools supplied on 
      APDL disk B122, and some other software which may be useful for 
      developing applications 

      5.1 !AppBuild 

      Creates new application shells as 'stand alone' applications for 
      distribution, or ones that depend on !ShellSys. You can specify a 
      name for the application, and choose whether or not to make it 
      'Stand Alone' i.e if all the files required are copied into the 
      new application directory. If it is not a stand alone application 
      then modules, message files etc will be loaded from the !ShellSys 
      directory. 

      This application supports Acorn's !Help application. 

      5.2 !ShellDBug 

      A very simple debugger that displays trace output from the user 
      application and the library code. Note that currently this 
      application must be running before the application you want to 
      debug. 

      The EvntShell library outputs a commentary on what it is doing 
      into a tracefile, providing that PROCshell_TraceInit and 
      PROCshell_TraceOn have been called. The user application can also 
      place output in this file using PROCshell_Tracef0. 

      Outputting trace information will slow the user application 
      noticeably, especially when starting up as a lot of trace info is 
      generated by the call to PROCshell_ResourcesInit. Therefore it is 
      best to only turn on tracing when necessary, and of course make 
      sure that tracing is off on any applications you distribute! 

      5.3 Other Tools 

      There follows a brief description of some other PD/ShareWare 
      programs which I have found useful when developing EvntShell 
      applications. 

      5.3.1 !BasShrink/!BasShrink_PD 

      Is a BASIC program compressor which has been proved to work with 
      EvntShell applications. !BasShrink_PD is Public Domain and 
      available from various PD libraries, !BasShrink cost �5.00 and 
      can be obtained from: 

      John Wallace, Architype Software, 54 Parkes Hall Road, 
      Woodsetton, Dudley, West Midlands, DY1 3SR ENGLAND 

      See the section on compressing EvntShell programs for guidance on 
      the options that can be used. 

      5.3.2 !BLibII 

      A BASIC Linker program available on APDL Disk B138. This builds a 
      program from the user application and the EvntShell library 
      containing only the routines that are actually needed. This is 
      very useful for distributing the final application as !BLibII and 
      !BasShrink used together will produce the minimum program size 
      possible. 

      Full instructions are provided with !BLibII, so I won't go into 
      details here except to note that the ShellLib library already 
      contains the extra information that !BLibII requires, although 
      the conditional linking bits are not yet in place. This means 
      that the linked program is bigger than it should be, but an 
      improvement over just appending the library code to the end of 
      the user application. This will improve in future releases. 

      Note that you should use the ShellLib library for linking with 
      BLibII because ShellLibRT has had the BLibII commands removed to 
      save space. 

      5.3.3 !TemplEd 

      Also on APDL disk B138 this is I believe the best Template editor 
      available anywhere. Forget !FormEd2 which was on some APDL B122 
      disks, !FormEd (Risc Squad version 2.84b on B053 or 2.87 also on 
      B138) and any Acorn versions. 

      5.3.4 !StrongEd2 

      A text editor which may or may not now be in the public domain 
      and thus available from PD libraries. The big advantage this has 
      over any other editor is the accompanying !StrongHlp application. 
      Pressing F1 over a word in a program known to !StrongHlp causes 
      an information window to open. Versions before 1.21 were a bit 
      unstable though. 

      5.3.5 !StrongHlp 

      A hypertext type application which almost removes the need for 
      the Reference Manuals. Files supplied with it detail most of the 
      SWIs available and much more information is provided on BASIC, 
      VDU calls, Filetypes etc. !StrongHlp is now only available as far 
      as I know as a 'free' add on with the commercial version of 
      !StrongED from Stallion Software, although a new PD version may 
      be released in the future. 

      The EvntShell library also has a few PROCs to interface with 
      StrongHlp to enable user applications to register help systems. 

      When a request is sent to StrongHlp the active applications on 
      the icon bar are checked to see if StrongHlp is running. If it is 
      not and its !Boot file has been 'seen' by the Filer then it will 
      be started automatically. If StrongHlp has not been 'seen' then 
      an error will be generated. 

      Note that for the above to work it is vital that the help system 
      directory has the same name as the application (minus the '!'). 

      6 Distributing EvntShell Applications 

      It is probably best to copy ShellLibRT, ShellMsgs and the modules 
      into your application directory, not forgetting to alter the !Run 
      file and the LIBRARY statement in the runimage file to point to 
      the new location. That way you are sure that all the necessary 
      files are in one place for ease of copying. 

      7 Debugging 

      A simple debugger (!ShellDBug) is supplied with the library to 
      display trace messages. You can also do wonders with a few VDU7 
      calls to check which parts of the application are actually being 
      executed.. 

      8 The Credits 

      Quite a few people have been (however unwittingly) involved in 
      this project such as: 

      David Breakwell (the original idea), Robert Seago (for using it 
      for things I wouldn't dream of attempting!), Cy Booker (various 
      helpful suggestions - I won't rewrite it in C or Assembler though 
      - RISC-OS 3 Documentation and the FontWindow module), Risc User 
      magazine (for permission to use its heap manager code), Joris 
      R�ling (FontMenu module), Simon Huntingdon (Interface module), 
      Alex Petrov (MenuUtils), Jan-Herman Buining (WASP application 
      from which I worked out how to do RAM file transfers) and lastly 
      the wife (Hilke) for putting up with me pounding away at a 
      keyboard for hours when we could have been looking for new 
      furniture instead. 

      9 Future Enhancements 

      The software will become faster and be able to leap tall 
      buildings with a single bound. Bugs and limitations will become 
      fewer as well. 

      
      - Support for automatic handling of more
        complicated icon types, for example
        sliders, rotating knobs etc
        (steady now don't get carried away)
      - Import and display of DrawFiles and
        Sprites
      - Inclusion of more debugging aids
      - More drag types
      - Autoscroll handler when object is
        dragged within a window

      - Colour pick dialogs
      - Automatic handling of non-icon text
        within a window (like C txt objects)
      - Playing of Maestro tunes (ArchWay does!)
      - Extending message file useage to icons/
        windows/menus
      - Replay Films (!!!)
      - Better multiple file buffers
      - Complete German message files
      - Choice of message file language from
        within program
      - Automatic attaching of 'hot key' events
        by examining menu text
      
      
      10 Changes Since V1.09 

      
      V1.10 - Corrected documentation for PROCshell_AttachHotKey
      V1.11 - Added support for !BLibII BASIC linker
            - PROCshell_AttachUserRedraw alters redraw flag of
              window if necessary
      V1.12 - PROCshell_AttachPane alters pane window flags if
              necessary
            - DataSave routine now automatically saves data if 
              data is in a heapblock and no FN is named to 
              actually perform the save
            - Added file size parameter to user FN AttachDataLoad
      V1.13 - Bug fixes for 'no load' from another application
      V1.14 - More library routines claim private workspace to
              avoid interactions
            - Added routine PROCshell_SetIconButtonType
            - Added routine PROCshell_IconSetESG
            - Added routine PROCshell_IconSetText
            - Added routine PROCshell_IconSetSprite
            - Added routine PROCshell_IconSetBorder
            - Added routine PROCshell_IconSetHCentred
            - Added routine PROCshell_IconSetVCentred
            - Added routine PROCshell_IconSetFilled
            - Added routine PROCshell_IconSetRightJust
            - PROCshell_AttachMenu now changes the button type
              of the icon to 1 (click) if the menu is being
              attached to an icon
      V1.20 - Now uses MenuUtils module for menu handling
            - Added routine PROCshell_IconSetSelected
            - Added routine PROCshell_IconSetUnselectable
            - Added routine FNshell_StrongHlpIsAvailable
            - Added routine FNshell_MenuNew
            - Added routine FNshell_MenuAdd
            - Added routine FNshell_MenuDelete
            - Added routine FNshell_MenuColours
            - Added routine FNshell_MenuDotted
            - Added routine FNshell_MenuWritable
            - Added routine FNshell_MenuTickOnly1
            - Added routine FNshell_MenuTickOnly2
            - Modified all other menu routines
            - Added routine FNshell_StrongHlpIsAvailable
            - Added routine PROCshell_AttachPreQuitHandler
            - Added routine PROCshell_AttachOpenWindowHandler
            - Added routine PROCshell_AttachCloseWindowHandler
            - Added routine FNshell_SpriteAreaLoad

            - Added routine PROCshell_SpriteAreaSave
            - Added routine FNshell_SpriteGetPtr
            - Added routine PROCshell_SpriteRename
            - Added routine FNshell_OSCheckVersion
            - Added routine FNshell_OSCheckModuleVersion
            - Added routine PROCshell_IconSetLeftJust
            - Fixed PROCshell_IconSetRightJust
            - Writable icon handler now ignores unselectable icons
              when moving caret
            - Added support for ResFind (internationalisation of
              messages etc)
      
00000000  20 20 20 20 20 20 49 6e  74 65 72 69 6d 20 55 73  |      Interim Us|
00000010  65 72 20 4d 61 6e 75 61  6c 20 46 6f 72 20 45 76  |er Manual For Ev|
00000020  6e 74 53 68 65 6c 6c 0a  20 20 20 20 20 20 2d 2d  |ntShell.      --|
00000030  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000040  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 0a  |---------------.|
00000050  20 20 20 20 20 20 0a 20  20 20 20 20 20 31 20 20  |      .      1  |
00000060  49 6e 74 72 6f 64 75 63  74 69 6f 6e 20 20 20 20  |Introduction    |
00000070  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000080  20 20 20 20 20 20 0a 20  20 20 20 20 20 32 20 20  |      .      2  |
00000090  43 72 65 61 74 69 6e 67  20 41 20 4e 65 77 20 41  |Creating A New A|
000000a0  70 70 6c 69 63 61 74 69  6f 6e 0a 20 20 20 20 20  |pplication.     |
000000b0  20 33 20 20 41 20 54 75  74 6f 72 69 61 6c 0a 20  | 3  A Tutorial. |
000000c0  20 20 20 20 20 34 20 20  41 20 47 65 6e 65 72 61  |     4  A Genera|
000000d0  6c 20 4f 76 65 72 76 69  65 77 0a 20 20 20 20 20  |l Overview.     |
000000e0  20 20 20 20 20 31 2e 20  20 44 79 6e 61 6d 69 63  |     1.  Dynamic|
000000f0  20 57 69 6e 64 6f 77 73  0a 20 20 20 20 20 20 20  | Windows.       |
00000100  20 20 20 32 2e 20 20 53  74 61 74 69 63 20 57 69  |   2.  Static Wi|
00000110  6e 64 6f 77 73 0a 20 20  20 20 20 20 20 20 20 20  |ndows.          |
00000120  33 2e 20 20 52 65 73 6f  75 72 63 65 73 0a 20 20  |3.  Resources.  |
00000130  20 20 20 20 20 20 20 20  20 20 20 20 20 31 2e 20  |             1. |
00000140  54 65 6d 70 6c 61 74 65  73 0a 20 20 20 20 20 20  |Templates.      |
00000150  20 20 20 20 20 20 20 20  20 32 2e 20 53 70 72 69  |         2. Spri|
00000160  74 65 73 0a 20 20 20 20  20 20 20 20 20 20 20 20  |tes.            |
00000170  20 20 20 33 2e 20 4d 65  73 73 61 67 65 20 46 69  |   3. Message Fi|
00000180  6c 65 73 0a 20 20 20 20  20 20 20 20 20 20 20 20  |les.            |
00000190  20 20 20 34 2e 20 4d 6f  64 75 6c 65 73 0a 20 20  |   4. Modules.  |
000001a0  20 20 20 20 20 20 20 20  34 2e 20 20 4d 65 6e 75  |        4.  Menu|
000001b0  73 0a 20 20 20 20 20 20  20 20 20 20 35 2e 20 20  |s.          5.  |
000001c0  53 61 76 69 6e 67 20 46  69 6c 65 73 0a 20 20 20  |Saving Files.   |
000001d0  20 20 20 20 20 20 20 36  2e 20 20 4c 6f 61 64 69  |       6.  Loadi|
000001e0  6e 67 20 46 69 6c 65 73  0a 20 20 20 20 20 20 20  |ng Files.       |
000001f0  20 20 20 37 2e 20 20 43  6f 6d 70 72 65 73 73 69  |   7.  Compressi|
00000200  6e 67 20 45 76 6e 74 53  68 65 6c 6c 20 41 70 70  |ng EvntShell App|
00000210  6c 69 63 61 74 69 6f 6e  73 0a 20 20 20 20 20 20  |lications.      |
00000220  20 20 20 20 38 2e 20 20  54 68 65 20 52 75 6e 54  |    8.  The RunT|
00000230  69 6d 65 20 4c 69 62 72  61 72 79 0a 20 20 20 20  |ime Library.    |
00000240  20 20 20 20 20 20 39 2e  20 20 54 68 65 20 21 53  |      9.  The !S|
00000250  68 65 6c 6c 53 79 73 20  41 70 70 6c 69 63 61 74  |hellSys Applicat|
00000260  69 6f 6e 0a 20 20 20 20  20 20 20 20 20 20 31 30  |ion.          10|
00000270  2e 20 48 61 6e 64 6c 69  6e 67 20 50 61 6e 65 73  |. Handling Panes|
00000280  0a 20 20 20 20 20 20 20  20 20 20 31 31 2e 20 4f  |.          11. O|
00000290  75 74 6c 69 6e 65 20 46  6f 6e 74 73 0a 20 20 20  |utline Fonts.   |
000002a0  20 20 20 20 20 20 20 31  32 2e 20 49 6e 74 65 72  |       12. Inter|
000002b0  61 63 74 69 76 65 20 48  65 6c 70 0a 20 20 20 20  |active Help.    |
000002c0  20 20 20 20 20 20 31 33  2e 20 55 73 65 72 20 52  |      13. User R|
000002d0  65 64 72 61 77 73 0a 20  20 20 20 20 20 20 20 20  |edraws.         |
000002e0  20 20 20 20 20 20 31 2e  20 53 69 6d 70 6c 65 20  |      1. Simple |
000002f0  63 61 73 65 73 0a 20 20  20 20 20 20 20 20 20 20  |cases.          |
00000300  20 20 20 20 20 32 2e 20  44 72 61 77 69 6e 67 20  |     2. Drawing |
00000310  69 6e 74 6f 20 61 20 73  70 72 69 74 65 0a 20 20  |into a sprite.  |
00000320  20 20 20 20 20 20 20 20  31 34 2e 20 43 6f 6d 70  |        14. Comp|
00000330  6c 65 78 20 49 63 6f 6e  20 54 79 70 65 73 0a 20  |lex Icon Types. |
00000340  20 20 20 20 20 20 20 20  20 20 20 20 20 20 31 2e  |              1.|
00000350  20 42 75 6d 70 20 49 63  6f 6e 73 0a 20 20 20 20  | Bump Icons.    |
00000360  20 20 20 20 20 20 31 35  2e 20 4d 65 6d 6f 72 79  |      15. Memory|
00000370  20 4d 61 6e 61 67 65 6d  65 6e 74 0a 20 20 20 20  | Management.    |
00000380  20 20 35 20 20 54 68 65  20 54 6f 6f 6c 73 0a 20  |  5  The Tools. |
00000390  20 20 20 20 20 20 20 20  20 31 2e 20 21 41 70 70  |         1. !App|
000003a0  42 75 69 6c 64 0a 20 20  20 20 20 20 20 20 20 20  |Build.          |
000003b0  32 2e 20 21 53 68 65 6c  6c 44 42 75 67 0a 20 20  |2. !ShellDBug.  |
000003c0  20 20 20 20 20 20 20 20  33 2e 20 4f 74 68 65 72  |        3. Other|
000003d0  20 54 6f 6f 6c 73 0a 20  20 20 20 20 20 20 20 20  | Tools.         |
000003e0  20 20 20 20 20 31 2e 20  21 42 61 73 53 68 72 69  |     1. !BasShri|
000003f0  6e 6b 2f 21 42 61 73 53  68 72 69 6e 6b 5f 50 44  |nk/!BasShrink_PD|
00000400  0a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 32  |.              2|
00000410  2e 20 21 42 4c 69 62 49  49 0a 20 20 20 20 20 20  |. !BLibII.      |
00000420  20 20 20 20 20 20 20 20  33 2e 20 21 54 65 6d 70  |        3. !Temp|
00000430  6c 45 64 0a 20 20 20 20  20 20 20 20 20 20 20 20  |lEd.            |
00000440  20 20 34 2e 20 21 53 74  72 6f 6e 67 45 64 32 0a  |  4. !StrongEd2.|
00000450  20 20 20 20 20 20 20 20  20 20 20 20 20 20 35 2e  |              5.|
00000460  20 21 53 74 72 6f 6e 67  48 6c 70 0a 20 20 20 20  | !StrongHlp.    |
00000470  20 20 36 20 20 44 69 73  74 72 69 62 75 74 69 6e  |  6  Distributin|
00000480  67 20 45 76 6e 74 53 68  65 6c 6c 20 41 70 70 6c  |g EvntShell Appl|
00000490  69 63 61 74 69 6f 6e 73  0a 20 20 20 20 20 20 37  |ications.      7|
000004a0  20 20 44 65 62 75 67 67  69 6e 67 0a 20 20 20 20  |  Debugging.    |
000004b0  20 20 38 20 20 54 68 65  20 43 72 65 64 69 74 73  |  8  The Credits|
000004c0  0a 20 20 20 20 20 20 39  20 20 46 75 74 75 72 65  |.      9  Future|
000004d0  20 45 6e 68 61 6e 63 65  6d 65 6e 74 73 0a 20 20  | Enhancements.  |
000004e0  20 20 20 20 31 30 20 43  68 61 6e 67 65 73 20 53  |    10 Changes S|
000004f0  69 6e 63 65 20 56 31 2e  30 39 0a 0c 20 20 20 20  |ince V1.09..    |
00000500  20 20 0a 20 20 20 20 20  20 31 2e 20 49 6e 74 72  |  .      1. Intr|
00000510  6f 64 75 63 74 69 6f 6e  0a 0a 20 20 20 20 20 20  |oduction..      |
00000520  41 20 27 53 68 65 6c 6c  27 20 70 72 6f 67 72 61  |A 'Shell' progra|
00000530  6d 20 69 73 20 61 20 73  74 61 72 74 69 6e 67 20  |m is a starting |
00000540  70 6f 69 6e 74 20 66 6f  72 20 64 65 76 65 6c 6f  |point for develo|
00000550  70 69 6e 67 20 79 6f 75  72 20 6f 77 6e 20 0a 20  |ping your own . |
00000560  20 20 20 20 20 61 70 70  6c 69 63 61 74 69 6f 6e  |     application|
00000570  73 20 74 68 61 74 20 72  75 6e 20 75 6e 64 65 72  |s that run under|
00000580  20 74 68 65 20 52 49 53  43 2d 4f 53 20 77 69 6d  | the RISC-OS wim|
00000590  70 20 73 79 73 74 65 6d  2e 20 54 68 65 20 0a 20  |p system. The . |
000005a0  20 20 20 20 20 45 76 6e  74 53 68 65 6c 6c 20 6c  |     EvntShell l|
000005b0  69 62 72 61 72 79 20 63  6f 6e 74 61 69 6e 73 20  |ibrary contains |
000005c0  63 6f 64 65 20 74 6f 20  68 61 6e 64 6c 65 20 6d  |code to handle m|
000005d0  6f 73 74 20 6f 66 20 74  68 65 20 27 45 76 65 6e  |ost of the 'Even|
000005e0  74 73 27 20 0a 20 20 20  20 20 20 28 69 2e 65 2e  |ts' .      (i.e.|
000005f0  20 6f 70 65 6e 69 6e 67  20 61 20 6d 65 6e 75 2c  | opening a menu,|
00000600  20 63 6c 6f 73 69 6e 67  20 61 20 77 69 6e 64 6f  | closing a windo|
00000610  77 20 65 74 63 29 20 74  68 61 74 20 63 61 6e 20  |w etc) that can |
00000620  6f 63 63 75 72 2c 20 61  6e 64 20 0a 20 20 20 20  |occur, and .    |
00000630  20 20 61 6c 6c 20 79 6f  75 72 20 61 70 70 6c 69  |  all your appli|
00000640  63 61 74 69 6f 6e 20 68  61 73 20 74 6f 20 64 6f  |cation has to do|
00000650  20 69 73 20 69 6e 66 6f  72 6d 20 74 68 65 20 6c  | is inform the l|
00000660  69 62 72 61 72 79 20 77  68 61 74 20 69 74 20 0a  |ibrary what it .|
00000670  20 20 20 20 20 20 73 68  6f 75 6c 64 20 64 6f 20  |      should do |
00000680  77 68 65 6e 20 63 65 72  74 61 69 6e 20 65 76 65  |when certain eve|
00000690  6e 74 73 20 6f 63 63 75  72 2e 20 46 6f 72 20 65  |nts occur. For e|
000006a0  78 61 6d 70 6c 65 20 61  20 6d 65 6e 75 20 63 61  |xample a menu ca|
000006b0  6e 20 62 65 20 0a 20 20  20 20 20 20 61 74 74 61  |n be .      atta|
000006c0  63 68 65 64 20 74 6f 20  61 20 77 69 6e 64 6f 77  |ched to a window|
000006d0  20 6f 72 20 74 6f 20 61  6e 20 69 63 6f 6e 20 2d  | or to an icon -|
000006e0  20 74 68 65 20 6c 69 62  72 61 72 79 20 77 69 6c  | the library wil|
000006f0  6c 20 6f 70 65 6e 20 74  68 65 20 0a 20 20 20 20  |l open the .    |
00000700  20 20 6d 65 6e 75 20 66  6f 72 20 79 6f 75 20 28  |  menu for you (|
00000710  69 6e 20 74 68 65 20 63  6f 72 72 65 63 74 20 70  |in the correct p|
00000720  6f 73 69 74 69 6f 6e 21  29 20 77 68 65 6e 20 74  |osition!) when t|
00000730  68 65 20 3c 4d 45 4e 55  3e 20 62 75 74 74 6f 6e  |he <MENU> button|
00000740  20 6f 6e 20 0a 20 20 20  20 20 20 74 68 65 20 6d  | on .      the m|
00000750  6f 75 73 65 20 69 73 20  75 73 65 64 2e 20 0a 0a  |ouse is used. ..|
00000760  20 20 20 20 20 20 50 52  4f 43 73 68 65 6c 6c 5f  |      PROCshell_|
00000770  41 74 74 61 63 68 4d 6f  64 65 43 68 61 6e 67 65  |AttachModeChange|
00000780  48 61 6e 64 6c 65 72 20  69 73 20 61 6e 6f 74 68  |Handler is anoth|
00000790  65 72 20 76 65 72 79 20  73 69 6d 70 6c 65 20 65  |er very simple e|
000007a0  78 61 6d 70 6c 65 20 0a  20 20 20 20 20 20 77 68  |xample .      wh|
000007b0  69 63 68 20 63 61 6c 6c  73 20 61 20 66 75 6e 63  |ich calls a func|
000007c0  74 69 6f 6e 20 69 6e 20  74 68 65 20 27 55 73 65  |tion in the 'Use|
000007d0  72 20 41 70 70 6c 69 63  61 74 69 6f 6e 27 20 28  |r Application' (|
000007e0  74 68 69 73 20 69 73 20  74 68 65 20 62 69 74 20  |this is the bit |
000007f0  0a 20 20 20 20 20 20 79  6f 75 20 77 72 69 74 65  |.      you write|
00000800  2c 20 73 74 61 72 74 69  6e 67 20 77 69 74 68 20  |, starting with |
00000810  61 20 27 53 68 65 6c 6c  27 20 63 72 65 61 74 65  |a 'Shell' create|
00000820  64 20 62 79 20 74 68 65  20 41 70 70 42 75 69 6c  |d by the AppBuil|
00000830  64 20 74 6f 6f 6c 20 0a  20 20 20 20 20 20 6f 72  |d tool .      or|
00000840  20 62 79 20 6d 6f 64 69  66 79 69 6e 67 20 6f 6e  | by modifying on|
00000850  65 20 6f 66 20 74 68 65  20 65 78 61 6d 70 6c 65  |e of the example|
00000860  73 29 20 77 68 65 6e 20  74 68 65 20 73 63 72 65  |s) when the scre|
00000870  65 6e 20 6d 6f 64 65 20  0a 20 20 20 20 20 20 63  |en mode .      c|
00000880  68 61 6e 67 65 73 2e 20  41 20 6d 6f 72 65 20 63  |hanges. A more c|
00000890  6f 6d 70 6c 69 63 61 74  65 64 20 65 78 61 6d 70  |omplicated examp|
000008a0  6c 65 20 69 73 20 50 52  4f 43 73 68 65 6c 6c 5f  |le is PROCshell_|
000008b0  41 74 74 61 63 68 50 61  6e 65 20 77 68 69 63 68  |AttachPane which|
000008c0  20 0a 20 20 20 20 20 20  61 6c 6c 6f 77 73 20 74  | .      allows t|
000008d0  68 65 20 61 74 74 61 63  68 6d 65 6e 74 20 6f 66  |he attachment of|
000008e0  20 70 61 6e 65 20 77 69  6e 64 6f 77 73 20 74 6f  | pane windows to|
000008f0  20 61 20 70 61 72 65 6e  74 20 77 69 6e 64 6f 77  | a parent window|
00000900  2e 20 41 6c 6c 20 0a 20  20 20 20 20 20 6f 70 65  |. All .      ope|
00000910  6e 69 6e 67 20 61 6e 64  20 63 6c 6f 73 69 6e 67  |ning and closing|
00000920  20 6f 66 20 77 69 6e 64  6f 77 73 20 61 6e 64 20  | of windows and |
00000930  70 61 6e 65 73 20 69 73  20 68 61 6e 64 6c 65 64  |panes is handled|
00000940  20 74 6f 74 61 6c 6c 79  20 62 79 20 0a 20 20 20  | totally by .   |
00000950  20 20 20 74 68 65 20 6c  69 62 72 61 72 79 20 63  |   the library c|
00000960  6f 64 65 2e 20 0a 0a 20  20 20 20 20 20 4e 6f 72  |ode. ..      Nor|
00000970  6d 61 6c 6c 79 20 77 72  69 74 69 6e 67 20 61 20  |mally writing a |
00000980  77 69 6d 70 20 61 70 70  6c 69 63 61 74 69 6f 6e  |wimp application|
00000990  20 69 73 20 61 20 76 65  72 79 20 63 6f 6d 70 6c  | is a very compl|
000009a0  65 78 20 62 75 73 69 6e  65 73 73 2c 20 0a 20 20  |ex business, .  |
000009b0  20 20 20 20 69 6e 76 6f  6c 76 69 6e 67 20 6d 75  |    involving mu|
000009c0  63 68 20 72 65 61 64 69  6e 67 20 6f 66 20 74 68  |ch reading of th|
000009d0  65 20 50 72 6f 67 72 61  6d 6d 65 72 73 20 52 65  |e Programmers Re|
000009e0  66 65 72 65 6e 63 65 20  4d 61 6e 75 61 6c 73 2c  |ference Manuals,|
000009f0  20 0a 20 20 20 20 20 20  6d 61 67 61 7a 69 6e 65  | .      magazine|
00000a00  20 61 72 74 69 63 6c 65  73 20 61 6e 64 20 65 78  | articles and ex|
00000a10  61 6d 69 6e 69 6e 67 20  6f 74 68 65 72 20 61 70  |amining other ap|
00000a20  70 6c 69 63 61 74 69 6f  6e 73 2e 20 54 68 65 20  |plications. The |
00000a30  61 69 6d 20 6f 66 20 0a  20 20 20 20 20 20 74 68  |aim of .      th|
00000a40  65 20 45 76 6e 74 53 68  65 6c 6c 20 6c 69 62 72  |e EvntShell libr|
00000a50  61 72 79 20 69 73 20 74  6f 20 72 65 64 75 63 65  |ary is to reduce|
00000a60  20 74 68 65 20 6e 65 65  64 20 66 6f 72 20 74 68  | the need for th|
00000a70  69 73 20 61 6e 64 20 74  6f 20 0a 20 20 20 20 20  |is and to .     |
00000a80  20 65 6e 61 62 6c 65 20  74 68 65 20 73 70 65 65  | enable the spee|
00000a90  64 79 20 63 72 65 61 74  69 6f 6e 20 6f 66 20 65  |dy creation of e|
00000aa0  61 73 69 6c 79 20 6d 61  69 6e 74 61 69 6e 65 64  |asily maintained|
00000ab0  20 61 6e 64 20 72 6f 62  75 73 74 20 0a 20 20 20  | and robust .   |
00000ac0  20 20 20 61 70 70 6c 69  63 61 74 69 6f 6e 73 2e  |   applications.|
00000ad0  20 0a 0a 20 20 20 20 20  20 49 6e 20 6f 72 64 65  | ..      In orde|
00000ae0  72 20 74 6f 20 75 73 65  20 74 68 65 20 6c 69 62  |r to use the lib|
00000af0  72 61 72 79 20 69 74 20  69 73 20 6e 65 63 65 73  |rary it is neces|
00000b00  73 61 72 79 20 74 6f 20  68 61 76 65 20 61 20 72  |sary to have a r|
00000b10  65 61 73 6f 6e 61 62 6c  65 20 0a 20 20 20 20 20  |easonable .     |
00000b20  20 75 6e 64 65 72 73 74  61 6e 64 69 6e 67 20 6f  | understanding o|
00000b30  66 20 68 6f 77 20 74 6f  20 75 73 65 20 61 6e 20  |f how to use an |
00000b40  41 72 63 68 69 6d 65 64  65 73 20 61 6e 64 20 74  |Archimedes and t|
00000b50  68 65 20 70 72 6f 67 72  61 6d 73 20 0a 20 20 20  |he programs .   |
00000b60  20 20 20 73 75 70 70 6c  69 65 64 20 77 69 74 68  |   supplied with|
00000b70  20 69 74 2e 20 53 6f 6d  65 20 65 78 70 65 72 69  | it. Some experi|
00000b80  65 6e 63 65 20 69 6e 20  42 41 53 49 43 20 69 73  |ence in BASIC is|
00000b90  20 61 6c 73 6f 20 6f 66  20 63 6f 75 72 73 65 20  | also of course |
00000ba0  0a 20 20 20 20 20 20 72  65 71 75 69 72 65 64 2e  |.      required.|
00000bb0  20 54 68 69 73 20 6d 61  6e 75 61 6c 20 64 6f 65  | This manual doe|
00000bc0  73 20 6e 6f 74 20 63 6f  76 65 72 20 68 6f 77 20  |s not cover how |
00000bd0  74 6f 20 75 73 65 20 74  6f 6f 6c 73 20 6c 69 6b  |to use tools lik|
00000be0  65 20 74 68 65 20 0a 20  20 20 20 20 20 54 65 6d  |e the .      Tem|
00000bf0  70 6c 61 74 65 20 65 64  69 74 6f 72 20 77 68 69  |plate editor whi|
00000c00  63 68 20 68 61 73 20 69  74 73 20 6f 77 6e 20 69  |ch has its own i|
00000c10  6e 73 74 72 75 63 74 69  6f 6e 73 20 61 6e 64 20  |nstructions and |
00000c20  6d 61 79 20 6e 6f 74 20  68 61 76 65 20 0a 20 20  |may not have .  |
00000c30  20 20 20 20 62 65 65 6e  20 73 75 70 70 6c 69 65  |    been supplie|
00000c40  64 20 77 69 74 68 20 79  6f 75 72 20 63 6f 70 79  |d with your copy|
00000c50  20 6f 66 20 74 68 65 20  45 76 6e 74 53 68 65 6c  | of the EvntShel|
00000c60  6c 20 6c 69 62 72 61 72  79 2e 20 0a 0a 20 20 20  |l library. ..   |
00000c70  20 20 20 32 2e 20 43 72  65 61 74 69 6e 67 20 41  |   2. Creating A|
00000c80  6e 20 45 78 61 6d 70 6c  65 20 41 70 70 6c 69 63  |n Example Applic|
00000c90  61 74 69 6f 6e 20 0a 0a  20 20 20 20 20 20 54 68  |ation ..      Th|
00000ca0  65 20 65 61 73 69 65 73  74 20 77 61 79 20 74 6f  |e easiest way to|
00000cb0  20 63 72 65 61 74 65 20  61 20 6e 65 77 20 61 70  | create a new ap|
00000cc0  70 6c 69 63 61 74 69 6f  6e 20 69 73 20 74 6f 20  |plication is to |
00000cd0  75 73 65 20 74 68 65 20  0a 20 20 20 20 20 20 41  |use the .      A|
00000ce0  70 70 42 75 69 6c 64 20  74 6f 6f 6c 2e 20 52 75  |ppBuild tool. Ru|
00000cf0  6e 20 74 68 69 73 20 61  6e 64 20 64 72 61 67 20  |n this and drag |
00000d00  74 68 65 20 61 70 70 6c  69 63 61 74 69 6f 6e 20  |the application |
00000d10  69 63 6f 6e 20 66 72 6f  6d 20 74 68 65 20 0a 20  |icon from the . |
00000d20  20 20 20 20 20 41 70 70  42 75 69 6c 64 20 77 69  |     AppBuild wi|
00000d30  6e 64 6f 77 20 74 6f 20  61 20 64 69 72 65 63 74  |ndow to a direct|
00000d40  6f 72 79 20 64 69 73 70  6c 61 79 2e 20 54 68 65  |ory display. The|
00000d50  20 76 61 72 69 6f 75 73  20 6f 70 74 69 6f 6e 73  | various options|
00000d60  20 0a 20 20 20 20 20 20  61 76 61 69 6c 61 62 6c  | .      availabl|
00000d70  65 20 75 73 69 6e 67 20  41 70 70 42 75 69 6c 64  |e using AppBuild|
00000d80  20 77 69 6c 6c 20 62 65  20 64 69 73 63 75 73 73  | will be discuss|
00000d90  65 64 20 6c 61 74 65 72  2c 20 62 75 74 20 66 6f  |ed later, but fo|
00000da0  72 20 6e 6f 77 20 0a 20  20 20 20 20 20 6a 75 73  |r now .      jus|
00000db0  74 20 71 75 69 74 20 41  70 70 42 75 69 6c 64 20  |t quit AppBuild |
00000dc0  61 6e 64 20 72 75 6e 20  74 68 65 20 6e 65 77 6c  |and run the newl|
00000dd0  79 20 63 72 65 61 74 65  64 20 61 70 70 6c 69 63  |y created applic|
00000de0  61 74 69 6f 6e 2e 20 59  6f 75 20 0a 20 20 20 20  |ation. You .    |
00000df0  20 20 73 68 6f 75 6c 64  20 73 65 65 20 61 20 62  |  should see a b|
00000e00  6c 61 6e 6b 20 69 63 6f  6e 20 61 70 70 65 61 72  |lank icon appear|
00000e10  20 6f 6e 20 74 68 65 20  69 63 6f 6e 20 62 61 72  | on the icon bar|
00000e20  20 61 6e 64 20 63 6c 69  63 6b 69 6e 67 20 0a 20  | and clicking . |
00000e30  20 20 20 20 20 3c 4d 45  4e 55 3e 20 6f 76 65 72  |     <MENU> over|
00000e40  20 74 68 69 73 20 77 69  6c 6c 20 62 72 69 6e 67  | this will bring|
00000e50  20 75 70 20 74 68 65 20  75 73 75 61 6c 20 69 63  | up the usual ic|
00000e60  6f 6e 20 62 61 72 20 6d  65 6e 75 20 69 6e 63 6c  |on bar menu incl|
00000e70  75 64 69 6e 67 20 0a 20  20 20 20 20 20 74 68 65  |uding .      the|
00000e80  20 69 74 65 6d 73 20 27  49 6e 66 6f 27 20 61 6e  | items 'Info' an|
00000e90  64 20 27 51 75 69 74 27  2e 20 27 49 6e 66 6f 27  |d 'Quit'. 'Info'|
00000ea0  20 6c 65 61 64 73 20 74  6f 20 74 68 65 20 6e 6f  | leads to the no|
00000eb0  72 6d 61 6c 20 27 41 62  6f 75 74 20 0a 20 20 20  |rmal 'About .   |
00000ec0  20 20 20 54 68 69 73 20  50 72 6f 67 72 61 6d 27  |   This Program'|
00000ed0  20 77 69 6e 64 6f 77 20  28 74 68 65 20 69 63 6f  | window (the ico|
00000ee0  6e 73 20 6f 66 20 77 68  69 63 68 20 61 72 65 20  |ns of which are |
00000ef0  62 6c 61 6e 6b 20 61 74  20 74 68 65 20 6d 6f 6d  |blank at the mom|
00000f00  65 6e 74 29 20 0a 20 20  20 20 20 20 61 6e 64 20  |ent) .      and |
00000f10  27 51 75 69 74 27 20 77  68 69 63 68 20 73 74 6f  |'Quit' which sto|
00000f20  70 73 20 74 68 65 20 61  70 70 6c 69 63 61 74 69  |ps the applicati|
00000f30  6f 6e 20 61 6e 64 20 72  65 6d 6f 76 65 73 20 69  |on and removes i|
00000f40  74 20 66 72 6f 6d 20 74  68 65 20 0a 20 20 20 20  |t from the .    |
00000f50  20 20 69 63 6f 6e 20 62  61 72 20 2d 20 64 6f 6e  |  icon bar - don|
00000f60  27 74 20 71 75 69 74 20  69 74 20 6a 75 73 74 20  |'t quit it just |
00000f70  79 65 74 2e 20 0a 0a 20  20 20 20 20 20 43 6c 69  |yet. ..      Cli|
00000f80  63 6b 69 6e 67 20 3c 53  45 4c 45 43 54 3e 20 6f  |cking <SELECT> o|
00000f90  6e 20 74 68 65 20 69 63  6f 6e 62 61 72 20 69 63  |n the iconbar ic|
00000fa0  6f 6e 20 77 69 6c 6c 20  6f 70 65 6e 20 61 20 77  |on will open a w|
00000fb0  69 6e 64 6f 77 20 77 68  69 63 68 20 0a 20 20 20  |indow which .   |
00000fc0  20 20 20 68 61 73 20 74  68 65 20 75 73 75 61 6c  |   has the usual|
00000fd0  20 63 6f 6e 74 72 6f 6c  73 20 61 6e 64 20 6d 61  | controls and ma|
00000fe0  79 20 62 65 20 73 63 72  6f 6c 6c 65 64 20 61 6e  |y be scrolled an|
00000ff0  64 20 6d 6f 76 65 64 20  61 72 6f 75 6e 64 20 74  |d moved around t|
00001000  68 65 20 0a 20 20 20 20  20 20 73 63 72 65 65 6e  |he .      screen|
00001010  2e 20 4b 65 65 70 20 74  68 65 20 61 70 70 6c 69  |. Keep the appli|
00001020  63 61 74 69 6f 6e 20 79  6f 75 20 68 61 76 65 20  |cation you have |
00001030  6a 75 73 74 20 63 72 65  61 74 65 64 20 68 61 6e  |just created han|
00001040  64 79 20 61 73 20 69 6e  20 0a 20 20 20 20 20 20  |dy as in .      |
00001050  74 68 65 20 6e 65 78 74  20 73 65 63 74 69 6f 6e  |the next section|
00001060  20 77 65 27 6c 6c 20 6c  6f 6f 6b 20 61 74 20 74  | we'll look at t|
00001070  68 65 20 70 72 6f 67 72  61 6d 20 63 6f 64 65 20  |he program code |
00001080  61 6e 64 20 73 65 65 20  68 6f 77 20 74 6f 20 0a  |and see how to .|
00001090  20 20 20 20 20 20 63 68  61 6e 67 65 20 69 74 20  |      change it |
000010a0  74 6f 20 73 75 69 74 20  79 6f 75 72 20 6f 77 6e  |to suit your own|
000010b0  20 6e 65 65 64 73 2e 20  0a 0a 20 20 20 20 20 20  | needs. ..      |
000010c0  41 73 20 79 6f 75 20 63  61 6e 20 73 65 65 20 69  |As you can see i|
000010d0  74 20 69 73 20 76 65 72  79 20 65 61 73 79 20 74  |t is very easy t|
000010e0  6f 20 63 72 65 61 74 65  20 61 20 6e 65 77 20 73  |o create a new s|
000010f0  68 65 6c 6c 20 61 70 70  6c 69 63 61 74 69 6f 6e  |hell application|
00001100  20 0a 20 20 20 20 20 20  2d 20 65 76 65 6e 20 69  | .      - even i|
00001110  66 20 74 68 69 73 20 70  61 72 74 69 63 75 6c 61  |f this particula|
00001120  72 20 6f 6e 65 20 64 6f  65 73 6e 27 74 20 64 6f  |r one doesn't do|
00001130  20 61 6e 79 74 68 69 6e  67 20 75 73 65 66 75 6c  | anything useful|
00001140  20 79 65 74 21 20 0a 0c  0a 20 20 20 20 20 20 33  | yet! ...      3|
00001150  2e 20 41 20 54 75 74 6f  72 69 61 6c 20 0a 0a 20  |. A Tutorial .. |
00001160  20 20 20 20 20 54 68 65  20 66 69 72 73 74 20 66  |     The first f|
00001170  65 77 20 6c 69 6e 65 73  20 6f 66 20 61 6e 79 20  |ew lines of any |
00001180  45 76 6e 74 53 68 65 6c  6c 20 70 72 6f 67 72 61  |EvntShell progra|
00001190  6d 20 69 6e 69 74 69 61  6c 69 73 65 20 74 68 65  |m initialise the|
000011a0  20 0a 20 20 20 20 20 20  6d 65 6d 6f 72 79 20 6d  | .      memory m|
000011b0  61 6e 61 67 65 6d 65 6e  74 2c 20 73 65 74 20 75  |anagement, set u|
000011c0  70 20 65 72 72 6f 72 20  68 61 6e 64 6c 65 72 73  |p error handlers|
000011d0  20 61 6e 64 20 6c 6f 61  64 20 61 6e 79 20 72 65  | and load any re|
000011e0  73 6f 75 72 63 65 73 20  0a 20 20 20 20 20 20 28  |sources .      (|
000011f0  74 65 6d 70 6c 61 74 65  73 2c 20 6d 65 73 73 61  |templates, messa|
00001200  67 65 20 66 69 6c 65 73  2c 20 73 70 72 69 74 65  |ge files, sprite|
00001210  73 20 65 74 63 29 20 72  65 71 75 69 72 65 64 20  |s etc) required |
00001220  62 79 20 74 68 65 20 70  72 6f 67 72 61 6d 2e 20  |by the program. |
00001230  0a 20 20 20 20 20 20 54  68 69 73 20 63 6f 64 65  |.      This code|
00001240  20 73 68 6f 75 6c 64 20  6e 6f 74 20 6e 65 65 64  | should not need|
00001250  20 65 64 69 74 69 6e 67  2e 20 50 52 4f 43 61 70  | editing. PROCap|
00001260  70 5f 69 6e 69 74 20 64  65 74 65 72 6d 69 6e 65  |p_init determine|
00001270  73 20 77 68 61 74 20 0a  20 20 20 20 20 20 68 61  |s what .      ha|
00001280  70 70 65 6e 73 20 77 68  65 6e 20 74 68 65 20 61  |ppens when the a|
00001290  70 70 6c 69 63 61 74 69  6f 6e 20 73 74 61 72 74  |pplication start|
000012a0  73 2c 20 69 6e 20 74 68  69 73 20 63 61 73 65 20  |s, in this case |
000012b0  61 6e 20 69 63 6f 6e 62  61 72 20 69 63 6f 6e 20  |an iconbar icon |
000012c0  0a 20 20 20 20 20 20 69  73 20 63 72 65 61 74 65  |.      is create|
000012d0  64 20 61 6e 64 20 76 61  72 69 6f 75 73 20 27 65  |d and various 'e|
000012e0  76 65 6e 74 73 27 20 61  72 65 20 61 74 74 61 63  |vents' are attac|
000012f0  68 65 64 20 74 6f 20 69  74 2e 20 54 68 65 20 63  |hed to it. The c|
00001300  6f 64 65 20 0a 20 20 20  20 20 20 63 72 65 61 74  |ode .      creat|
00001310  65 64 20 62 79 20 21 41  70 70 42 75 69 6c 64 20  |ed by !AppBuild |
00001320  69 73 20 61 73 20 73 68  6f 77 6e 20 62 65 6c 6f  |is as shown belo|
00001330  77 2c 20 61 6c 74 68 6f  75 67 68 20 74 68 65 20  |w, although the |
00001340  52 45 4d 73 20 68 61 76  65 20 0a 20 20 20 20 20  |REMs have .     |
00001350  20 62 65 65 6e 20 61 64  64 65 64 20 66 6f 72 20  | been added for |
00001360  74 68 69 73 20 6d 61 6e  75 61 6c 2e 20 54 72 79  |this manual. Try|
00001370  20 64 65 66 69 6e 69 6e  67 20 6f 74 68 65 72 20  | defining other |
00001380  77 69 6e 64 6f 77 73 20  61 6e 64 20 6d 65 6e 75  |windows and menu|
00001390  73 20 0a 20 20 20 20 20  20 61 6e 64 20 73 65 65  |s .      and see|
000013a0  20 77 68 61 74 20 68 61  70 70 65 6e 73 2e 20 0a  | what happens. .|
000013b0  0a 20 20 20 20 20 20 0a  20 20 20 20 20 20 44 45  |.      .      DE|
000013c0  46 20 50 52 4f 43 61 70  70 5f 69 6e 69 74 0a 20  |F PROCapp_init. |
000013d0  20 20 20 20 20 50 52 4f  43 53 65 74 55 70 5f 4d  |     PROCSetUp_M|
000013e0  65 6e 75 73 20 20 20 3a  52 45 4d 20 73 65 74 20  |enus   :REM set |
000013f0  75 70 20 69 63 6f 6e 62  61 72 20 6d 65 6e 75 0a  |up iconbar menu.|
00001400  20 20 20 20 20 20 50 52  4f 43 53 65 74 55 70 5f  |      PROCSetUp_|
00001410  57 69 6e 64 6f 77 73 20  3a 52 45 4d 20 73 65 74  |Windows :REM set|
00001420  20 75 70 20 6d 61 69 6e  20 77 69 6e 64 6f 77 0a  | up main window.|
00001430  20 20 20 20 20 20 50 52  4f 43 53 65 74 55 70 5f  |      PROCSetUp_|
00001440  49 63 6f 6e 42 61 72 20  3a 52 45 4d 20 70 75 74  |IconBar :REM put|
00001450  20 69 63 6f 6e 20 6f 6e  20 74 68 65 20 69 63 6f  | icon on the ico|
00001460  6e 62 61 72 20 61 6e 64  20 61 74 74 61 63 68 20  |nbar and attach |
00001470  65 76 65 6e 74 73 0a 20  20 20 20 20 20 52 45 4d  |events.      REM|
00001480  20 61 6e 64 20 6e 6f 77  20 69 6e 69 74 69 61 6c  | and now initial|
00001490  69 73 65 20 74 68 65 20  53 74 72 6f 6e 67 48 6c  |ise the StrongHl|
000014a0  70 20 68 65 6c 70 20 73  79 73 74 65 6d 20 28 6f  |p help system (o|
000014b0  70 74 69 6f 6e 61 6c 21  29 0a 20 20 20 20 20 20  |ptional!).      |
000014c0  50 52 4f 43 73 68 65 6c  6c 5f 49 6e 69 74 48 65  |PROCshell_InitHe|
000014d0  6c 70 53 79 73 74 65 6d  28 46 4e 73 68 65 6c 6c  |lpSystem(FNshell|
000014e0  5f 47 65 74 41 70 70 44  69 72 2b 22 2e 46 4e 73  |_GetAppDir+".FNs|
000014f0  68 65 6c 6c 5f 47 65 74  41 70 70 4e 61 6d 65 22  |hell_GetAppName"|
00001500  0a 20 20 20 20 20 20 2c  54 52 55 45 29 0a 20 20  |.      ,TRUE).  |
00001510  20 20 20 20 45 4e 44 50  52 4f 43 20 20 0a 20 20  |    ENDPROC  .  |
00001520  20 20 20 20 3a 0a 20 20  20 20 20 20 52 45 4d 20  |    :.      REM |
00001530  3d 3d 3d 3d 3d 20 4d 65  6e 75 5f 53 65 74 75 70  |===== Menu_Setup|
00001540  20 72 6f 75 74 69 6e 65  73 20 3d 3d 3d 3d 3d 3d  | routines ======|
00001550  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |================|
00001560  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 0a 20 20  |=============.  |
00001570  20 20 20 20 0a 20 20 20  20 20 20 44 45 46 20 50  |    .      DEF P|
00001580  52 4f 43 53 65 74 55 70  5f 4d 65 6e 75 73 0a 20  |ROCSetUp_Menus. |
00001590  20 20 20 20 20 4c 4f 43  41 4c 20 76 6f 69 64 25  |     LOCAL void%|
000015a0  0a 20 20 20 20 20 20 52  45 4d 20 43 6f 6e 73 74  |.      REM Const|
000015b0  72 75 63 74 20 74 68 65  20 69 63 6f 6e 62 61 72  |ruct the iconbar|
000015c0  20 6d 65 6e 75 2e 2e 0a  20 20 20 20 20 20 4d 65  | menu...      Me|
000015d0  6e 75 48 61 6e 64 6c 65  5f 49 63 6f 6e 42 61 72  |nuHandle_IconBar|
000015e0  25 3d 46 4e 73 68 65 6c  6c 5f 4d 65 6e 75 4e 65  |%=FNshell_MenuNe|
000015f0  77 28 22 4e 65 77 41 70  70 22 29 0a 20 20 20 20  |w("NewApp").    |
00001600  20 20 4d 65 6e 75 49 74  65 6d 5f 49 6e 66 6f 25  |  MenuItem_Info%|
00001610  20 20 20 20 20 3d 46 4e  73 68 65 6c 6c 5f 4d 65  |     =FNshell_Me|
00001620  6e 75 41 64 64 28 30 2c  22 49 6e 66 6f 22 2c 22  |nuAdd(0,"Info","|
00001630  22 29 0a 20 20 20 20 20  20 76 6f 69 64 25 20 20  |").      void%  |
00001640  20 20 20 20 20 20 20 20  20 20 20 20 3d 46 4e 73  |            =FNs|
00001650  68 65 6c 6c 5f 4d 65 6e  75 41 64 64 28 30 2c 22  |hell_MenuAdd(0,"|
00001660  51 75 69 74 22 2c 22 5f  4d 65 6e 75 53 65 6c 65  |Quit","_MenuSele|
00001670  63 74 5f 51 75 69 74 22  29 0a 20 20 20 20 20 20  |ct_Quit").      |
00001680  52 45 4d 20 41 74 74 61  63 68 20 74 68 65 20 27  |REM Attach the '|
00001690  41 62 6f 75 74 20 74 68  69 73 20 70 72 6f 67 72  |About this progr|
000016a0  61 6d 27 20 64 69 61 6c  6f 67 20 62 6f 78 20 74  |am' dialog box t|
000016b0  6f 20 74 68 65 20 27 49  6e 66 6f 27 0a 20 20 20  |o the 'Info'.   |
000016c0  20 20 20 52 45 4d 20 69  74 65 6d 20 6f 66 20 74  |   REM item of t|
000016d0  68 65 20 6d 65 6e 75 2e  20 43 61 6c 6c 20 46 4e  |he menu. Call FN|
000016e0  5f 50 72 65 4f 70 65 6e  49 6e 66 6f 20 62 65 66  |_PreOpenInfo bef|
000016f0  6f 72 65 20 6f 70 65 6e  69 6e 67 20 69 74 20 73  |ore opening it s|
00001700  6f 0a 20 20 20 20 20 20  52 45 4d 20 74 68 61 74  |o.      REM that|
00001710  20 74 68 65 20 69 63 6f  6e 73 20 63 61 6e 20 62  | the icons can b|
00001720  65 20 66 69 6c 6c 65 64  20 69 6e 2c 20 64 6f 6e  |e filled in, don|
00001730  27 74 20 63 61 6c 6c 20  61 20 46 4e 20 61 66 74  |'t call a FN aft|
00001740  65 72 0a 20 20 20 20 20  20 52 45 4d 20 6f 70 65  |er.      REM ope|
00001750  6e 69 6e 67 20 69 74 2e  0a 20 20 20 20 20 20 50  |ning it..      P|
00001760  52 4f 43 73 68 65 6c 6c  5f 41 74 74 61 63 68 4d  |ROCshell_AttachM|
00001770  65 6e 75 44 42 6f 78 28  4d 65 6e 75 49 74 65 6d  |enuDBox(MenuItem|
00001780  5f 49 6e 66 6f 25 2c 22  70 72 6f 67 49 6e 66 6f  |_Info%,"progInfo|
00001790  22 2c 0a 20 20 20 20 20  20 22 5f 50 72 65 4f 70  |",.      "_PreOp|
000017a0  65 6e 49 6e 66 6f 22 2c  22 22 29 0a 20 20 20 20  |enInfo","").    |
000017b0  20 20 45 4e 44 50 52 4f  43 0a 20 20 20 20 20 20  |  ENDPROC.      |
000017c0  3a 0a 20 20 20 20 20 20  0a 20 20 20 20 20 20 52  |:.      .      R|
000017d0  45 4d 20 3d 3d 3d 3d 3d  20 57 69 6e 64 6f 77 5f  |EM ===== Window_|
000017e0  53 65 74 55 70 20 72 6f  75 74 69 6e 65 73 20 3d  |SetUp routines =|
000017f0  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |================|
*
00001810  0a 20 20 20 20 20 20 0a  20 20 20 20 20 20 44 45  |.      .      DE|
00001820  46 20 50 52 4f 43 53 65  74 55 70 5f 57 69 6e 64  |F PROCSetUp_Wind|
00001830  6f 77 73 0a 20 20 20 20  20 20 52 45 4d 20 63 72  |ows.      REM cr|
00001840  65 61 74 65 20 61 20 77  69 6e 64 6f 77 20 66 72  |eate a window fr|
00001850  6f 6d 20 74 68 65 20 74  65 6d 70 6c 61 74 65 20  |om the template |
00001860  63 61 6c 6c 65 64 20 27  6d 61 69 6e 77 27 2c 20  |called 'mainw', |
00001870  70 6c 61 63 65 20 74 68  65 20 0a 20 20 20 20 20  |place the .     |
00001880  20 52 45 4d 20 77 69 6e  64 6f 77 20 68 61 6e 64  | REM window hand|
00001890  6c 65 20 69 6e 20 6d 61  69 6e 77 25 0a 20 20 20  |le in mainw%.   |
000018a0  20 20 20 50 52 4f 43 73  68 65 6c 6c 5f 43 72 65  |   PROCshell_Cre|
000018b0  61 74 65 57 69 6e 64 6f  77 53 74 61 74 69 63 28  |ateWindowStatic(|
000018c0  22 6d 61 69 6e 77 22 2c  6d 61 69 6e 77 25 29 0a  |"mainw",mainw%).|
000018d0  20 20 20 20 20 20 45 4e  44 50 52 4f 43 0a 20 20  |      ENDPROC.  |
000018e0  20 20 20 20 3a 0a 20 20  20 20 20 20 0a 20 20 20  |    :.      .   |
000018f0  20 20 20 52 45 4d 20 3d  3d 3d 3d 3d 20 49 63 6f  |   REM ===== Ico|
00001900  6e 42 61 72 5f 53 65 74  55 70 20 72 6f 75 74 69  |nBar_SetUp routi|
00001910  6e 65 73 20 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |nes ============|
00001920  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |================|
00001930  3d 3d 3d 3d 0a 20 20 20  20 20 20 0a 20 20 20 20  |====.      .    |
00001940  20 20 44 45 46 20 50 52  4f 43 53 65 74 55 70 5f  |  DEF PROCSetUp_|
00001950  49 63 6f 6e 42 61 72 0a  20 20 20 20 20 20 52 45  |IconBar.      RE|
00001960  4d 20 73 69 63 6f 6e 20  69 73 20 74 68 65 20 68  |M sicon is the h|
00001970  61 6e 64 6c 65 20 6f 66  20 74 68 65 20 69 63 6f  |andle of the ico|
00001980  6e 2e 20 2d 31 20 6d 65  61 6e 73 20 72 69 67 68  |n. -1 means righ|
00001990  74 20 73 69 64 65 20 6f  66 0a 20 20 20 20 20 20  |t side of.      |
000019a0  52 45 4d 20 69 63 6f 6e  62 61 72 2c 20 2d 32 20  |REM iconbar, -2 |
000019b0  77 6f 75 6c 64 20 62 65  20 6c 65 66 74 20 73 69  |would be left si|
000019c0  64 65 2e 20 54 68 65 20  6e 61 6d 65 20 6f 66 20  |de. The name of |
000019d0  74 68 65 20 73 70 72 69  74 65 20 66 6f 72 0a 20  |the sprite for. |
000019e0  20 20 20 20 20 52 45 4d  20 74 68 65 20 69 63 6f  |     REM the ico|
000019f0  6e 20 69 73 20 74 68 65  20 73 61 6d 65 20 61 73  |n is the same as|
00001a00  20 74 68 65 20 61 70 70  6c 69 63 61 74 69 6f 6e  | the application|
00001a10  20 64 69 72 65 63 74 6f  72 79 2e 20 41 20 6d 65  | directory. A me|
00001a20  6e 75 0a 20 20 20 20 20  20 52 45 4d 20 77 69 74  |nu.      REM wit|
00001a30  68 20 74 68 65 20 68 61  6e 64 6c 65 20 27 4d 65  |h the handle 'Me|
00001a40  6e 75 48 61 6e 64 6c 65  5f 49 63 6f 6e 42 61 72  |nuHandle_IconBar|
00001a50  25 27 20 69 73 20 61 74  74 61 63 68 65 64 2e 0a  |%' is attached..|
00001a60  20 20 20 20 20 20 73 69  63 6f 6e 3d 46 4e 73 68  |      sicon=FNsh|
00001a70  65 6c 6c 5f 49 63 6f 6e  62 61 72 28 2d 31 2c 22  |ell_Iconbar(-1,"|
00001a80  21 22 2b 46 4e 73 68 65  6c 6c 5f 47 65 74 41 70  |!"+FNshell_GetAp|
00001a90  70 4e 61 6d 65 2c 22 22  2c 31 32 30 2c 0a 20 20  |pName,"",120,.  |
00001aa0  20 20 20 20 4d 65 6e 75  48 61 6e 64 6c 65 5f 49  |    MenuHandle_I|
00001ab0  63 6f 6e 42 61 72 25 2c  30 2c 30 2c 30 29 0a 20  |conBar%,0,0,0). |
00001ac0  20 20 20 20 20 52 45 4d  20 61 74 74 61 63 68 20  |     REM attach |
00001ad0  61 20 68 65 6c 70 20 74  61 67 20 66 6f 72 20 74  |a help tag for t|
00001ae0  68 65 20 69 63 6f 6e 2c  20 74 68 69 73 20 77 69  |he icon, this wi|
00001af0  6c 6c 20 73 65 6e 64 20  74 68 65 20 74 65 78 74  |ll send the text|
00001b00  20 0a 20 20 20 20 20 20  52 45 4d 20 66 6f 6c 6c  | .      REM foll|
00001b10  6f 77 69 6e 67 20 27 69  63 6f 6e 62 61 72 3a 27  |owing 'iconbar:'|
00001b20  20 74 6f 20 74 68 65 20  21 48 65 6c 70 20 61 70  | to the !Help ap|
00001b30  70 6c 69 63 61 74 69 6f  6e 2e 20 53 65 65 20 74  |plication. See t|
00001b40  68 65 20 0a 20 20 20 20  20 20 52 45 4d 20 27 4d  |he .      REM 'M|
00001b50  65 73 73 61 67 65 73 27  20 66 69 6c 65 20 66 6f  |essages' file fo|
00001b60  72 20 74 68 69 73 2e 0a  20 20 20 20 20 20 50 52  |r this..      PR|
00001b70  4f 43 73 68 65 6c 6c 5f  41 74 74 61 63 68 48 65  |OCshell_AttachHe|
00001b80  6c 70 54 61 67 28 2d 31  2c 73 69 63 6f 6e 2c 22  |lpTag(-1,sicon,"|
00001b90  69 63 6f 6e 62 61 72 22  29 0a 0c 0a 20 20 20 20  |iconbar")...    |
00001ba0  20 20 52 45 4d 20 6c 61  73 74 6c 79 20 61 74 74  |  REM lastly att|
00001bb0  61 63 68 20 74 68 65 20  63 6c 69 63 6b 73 65 6c  |ach the clicksel|
00001bc0  65 63 74 20 65 76 65 6e  74 2e 20 57 68 65 6e 20  |ect event. When |
00001bd0  3c 53 45 4c 45 43 54 3e  20 69 73 0a 20 20 20 20  |<SELECT> is.    |
00001be0  20 20 52 45 4d 20 63 6c  69 63 6b 65 64 20 6f 76  |  REM clicked ov|
00001bf0  65 72 20 74 68 65 20 69  63 6f 6e 20 63 61 6c 6c  |er the icon call|
00001c00  20 46 4e 5f 63 6c 69 63  6b 69 63 6f 6e 62 61 72  | FN_clickiconbar|
00001c10  0a 20 20 20 20 20 20 50  52 4f 43 73 68 65 6c 6c  |.      PROCshell|
00001c20  5f 41 74 74 61 63 68 43  6c 69 63 6b 53 65 6c 65  |_AttachClickSele|
00001c30  63 74 28 2d 31 2c 73 69  63 6f 6e 2c 22 5f 43 6c  |ct(-1,sicon,"_Cl|
00001c40  69 63 6b 53 65 6c 65 63  74 5f 49 63 6f 6e 42 61  |ickSelect_IconBa|
00001c50  72 22 29 0a 20 20 20 20  20 20 45 4e 44 50 52 4f  |r").      ENDPRO|
00001c60  43 0a 20 20 20 20 20 20  3a 0a 20 20 20 20 20 20  |C.      :.      |
00001c70  0a 20 20 20 20 20 20 52  45 4d 20 3d 3d 3d 3d 3d  |.      REM =====|
00001c80  20 44 69 61 6c 6f 67 5f  50 72 65 4f 70 65 6e 20  | Dialog_PreOpen |
00001c90  72 6f 75 74 69 6e 65 73  20 3d 3d 3d 3d 3d 3d 3d  |routines =======|
00001ca0  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |================|
00001cb0  3d 3d 3d 3d 3d 3d 3d 3d  0a 20 20 20 20 20 20 0a  |========.      .|
00001cc0  20 20 20 20 20 20 44 45  46 20 46 4e 5f 50 72 65  |      DEF FN_Pre|
00001cd0  4f 70 65 6e 49 6e 66 6f  28 68 25 29 0a 20 20 20  |OpenInfo(h%).   |
00001ce0  20 20 20 52 45 4d 20 66  69 6c 6c 20 69 6e 20 69  |   REM fill in i|
00001cf0  63 6f 6e 73 2e 20 54 72  79 20 65 64 69 74 69 6e  |cons. Try editin|
00001d00  67 20 74 68 65 20 27 4d  65 73 73 61 67 65 73 27  |g the 'Messages'|
00001d10  20 66 69 6c 65 20 74 6f  20 6d 61 6b 65 20 74 65  | file to make te|
00001d20  78 74 20 0a 20 20 20 20  20 20 52 45 4d 20 61 70  |xt .      REM ap|
00001d30  70 65 61 72 20 69 6e 20  74 68 65 20 69 63 6f 6e  |pear in the icon|
00001d40  73 20 28 6a 75 73 74 20  61 64 64 20 74 68 65 20  |s (just add the |
00001d50  74 65 78 74 20 61 66 74  65 72 20 70 72 6f 67 49  |text after progI|
00001d60  6e 66 6f 30 3a 20 65 74  63 29 2e 20 0a 20 20 20  |nfo0: etc). .   |
00001d70  20 20 20 52 45 4d 20 68  25 20 69 73 20 74 68 65  |   REM h% is the|
00001d80  20 68 61 6e 64 6c 65 20  6f 66 20 74 68 65 20 77  | handle of the w|
00001d90  69 6e 64 6f 77 2e 0a 20  20 20 20 20 20 50 52 4f  |indow..      PRO|
00001da0  43 73 68 65 6c 6c 5f 49  63 6f 6e 50 75 74 44 61  |Cshell_IconPutDa|
00001db0  74 61 28 68 25 2c 30 2c  46 4e 73 68 65 6c 6c 5f  |ta(h%,0,FNshell_|
00001dc0  4d 65 73 73 61 67 65 4e  6f 41 72 67 73 28 22 70  |MessageNoArgs("p|
00001dd0  72 6f 67 49 6e 66 6f 30  22 29 2c 30 29 0a 20 20  |rogInfo0"),0).  |
00001de0  20 20 20 20 50 52 4f 43  73 68 65 6c 6c 5f 49 63  |    PROCshell_Ic|
00001df0  6f 6e 50 75 74 44 61 74  61 28 68 25 2c 31 2c 46  |onPutData(h%,1,F|
00001e00  4e 73 68 65 6c 6c 5f 4d  65 73 73 61 67 65 4e 6f  |Nshell_MessageNo|
00001e10  41 72 67 73 28 22 70 72  6f 67 49 6e 66 6f 31 22  |Args("progInfo1"|
00001e20  29 2c 30 29 0a 20 20 20  20 20 20 50 52 4f 43 73  |),0).      PROCs|
00001e30  68 65 6c 6c 5f 49 63 6f  6e 50 75 74 44 61 74 61  |hell_IconPutData|
00001e40  28 68 25 2c 32 2c 46 4e  73 68 65 6c 6c 5f 4d 65  |(h%,2,FNshell_Me|
00001e50  73 73 61 67 65 4e 6f 41  72 67 73 28 22 70 72 6f  |ssageNoArgs("pro|
00001e60  67 49 6e 66 6f 32 22 29  2c 30 29 0a 20 20 20 20  |gInfo2"),0).    |
00001e70  20 20 50 52 4f 43 73 68  65 6c 6c 5f 49 63 6f 6e  |  PROCshell_Icon|
00001e80  50 75 74 44 61 74 61 28  68 25 2c 33 2c 46 4e 73  |PutData(h%,3,FNs|
00001e90  68 65 6c 6c 5f 4d 65 73  73 61 67 65 4e 6f 41 72  |hell_MessageNoAr|
00001ea0  67 73 28 22 70 72 6f 67  49 6e 66 6f 33 22 29 2c  |gs("progInfo3"),|
00001eb0  30 29 0a 20 20 20 20 20  20 3d 30 0a 20 20 20 20  |0).      =0.    |
00001ec0  20 20 3a 0a 20 20 20 20  20 20 0a 20 20 20 20 20  |  :.      .     |
00001ed0  20 52 45 4d 20 3d 3d 3d  3d 3d 20 44 69 61 6c 6f  | REM ===== Dialo|
00001ee0  67 5f 50 6f 73 74 4f 70  65 6e 20 72 6f 75 74 69  |g_PostOpen routi|
00001ef0  6e 65 73 20 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |nes ============|
00001f00  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |================|
00001f10  3d 3d 0a 20 20 20 20 20  20 0a 20 20 20 20 20 20  |==.      .      |
00001f20  52 45 4d 20 3d 3d 3d 3d  3d 20 43 6c 69 63 6b 5f  |REM ===== Click_|
00001f30  53 65 6c 65 63 74 20 72  6f 75 74 69 6e 65 73 20  |Select routines |
00001f40  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |================|
*
00001f60  3d 0a 20 20 20 20 20 20  0a 20 20 20 20 20 20 44  |=.      .      D|
00001f70  45 46 20 46 4e 5f 43 6c  69 63 6b 53 65 6c 65 63  |EF FN_ClickSelec|
00001f80  74 5f 49 63 6f 6e 42 61  72 28 77 68 25 2c 69 63  |t_IconBar(wh%,ic|
00001f90  6f 6e 25 29 0a 20 20 20  20 20 20 52 45 4d 20 6f  |on%).      REM o|
00001fa0  70 65 6e 20 74 68 65 20  77 69 6e 64 6f 77 20 77  |pen the window w|
00001fb0  69 74 68 20 74 68 65 20  68 61 6e 64 6c 65 20 6d  |ith the handle m|
00001fc0  61 69 6e 77 25 20 77 68  65 6e 20 61 20 63 6c 69  |ainw% when a cli|
00001fd0  63 6b 20 6f 66 0a 20 20  20 20 20 20 52 45 4d 20  |ck of.      REM |
00001fe0  3c 53 45 4c 45 43 54 3e  20 69 73 20 72 65 63 65  |<SELECT> is rece|
00001ff0  69 76 65 64 20 6f 6e 20  74 68 65 20 69 63 6f 6e  |ived on the icon|
00002000  62 61 72 20 69 63 6f 6e  2e 20 77 68 25 20 69 73  |bar icon. wh% is|
00002010  20 74 68 65 20 68 61 6e  64 6c 65 0a 20 20 20 20  | the handle.    |
00002020  20 20 52 45 4d 20 6f 66  20 74 68 65 20 77 69 6e  |  REM of the win|
00002030  64 6f 77 20 6f 76 65 72  20 77 68 69 63 68 20 74  |dow over which t|
00002040  68 65 20 63 6c 69 63 6b  20 6f 63 63 75 72 65 64  |he click occured|
00002050  20 28 74 68 65 20 69 63  6f 6e 62 61 72 29 20 61  | (the iconbar) a|
00002060  6e 64 0a 20 20 20 20 20  20 52 45 4d 20 69 63 6f  |nd.      REM ico|
00002070  6e 25 20 69 73 20 74 68  65 20 68 61 6e 64 6c 65  |n% is the handle|
00002080  20 6f 66 20 74 68 65 20  69 63 6f 6e 62 61 72 20  | of the iconbar |
00002090  69 63 6f 6e 0a 20 20 20  20 20 20 50 52 4f 43 73  |icon.      PROCs|
000020a0  68 65 6c 6c 5f 4f 70 65  6e 57 69 6e 64 6f 77 53  |hell_OpenWindowS|
000020b0  74 61 74 69 63 28 6d 61  69 6e 77 25 29 0a 20 20  |tatic(mainw%).  |
000020c0  20 20 20 20 3d 30 0a 20  20 20 20 20 20 3a 0a 20  |    =0.      :. |
000020d0  20 20 20 20 20 0a 20 20  20 20 20 20 52 45 4d 20  |     .      REM |
000020e0  3d 3d 3d 3d 3d 20 4d 65  6e 75 5f 53 65 6c 65 63  |===== Menu_Selec|
000020f0  74 20 72 6f 75 74 69 6e  65 73 20 3d 3d 3d 3d 3d  |t routines =====|
00002100  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |================|
00002110  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 0a 20 20  |=============.  |
00002120  20 20 20 20 0a 20 20 20  20 20 20 44 45 46 20 46  |    .      DEF F|
00002130  4e 5f 4d 65 6e 75 53 65  6c 65 63 74 5f 51 75 69  |N_MenuSelect_Qui|
00002140  74 28 62 6c 6b 25 29 0a  20 20 20 20 20 20 5f 63  |t(blk%).      _c|
00002150  6c 6f 73 65 64 6f 77 6e  25 3d 54 52 55 45 0a 20  |losedown%=TRUE. |
00002160  20 20 20 20 20 3d 30 0a  20 20 20 20 20 20 3a 0a  |     =0.      :.|
00002170  20 20 20 20 20 20 0a 20  20 20 20 20 20 52 45 4d  |      .      REM|
00002180  20 3d 3d 3d 3d 3d 20 4d  65 6e 75 5f 57 61 72 6e  | ===== Menu_Warn|
00002190  69 6e 67 20 72 6f 75 74  69 6e 65 73 20 3d 3d 3d  |ing routines ===|
000021a0  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |================|
000021b0  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 0a 20  |==============. |
000021c0  20 20 20 20 20 0a 20 20  20 20 20 20 52 45 4d 20  |     .      REM |
000021d0  3d 3d 3d 3d 3d 20 44 61  74 61 5f 4c 6f 61 64 20  |===== Data_Load |
000021e0  72 6f 75 74 69 6e 65 73  20 3d 3d 3d 3d 3d 3d 3d  |routines =======|
000021f0  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |================|
00002200  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 0a 20 20  |=============.  |
00002210  20 20 20 20 0a 20 20 20  20 20 20 52 45 4d 20 3d  |    .      REM =|
00002220  3d 3d 3d 3d 20 44 61 74  61 5f 53 61 76 65 20 72  |==== Data_Save r|
00002230  6f 75 74 69 6e 65 73 20  3d 3d 3d 3d 3d 3d 3d 3d  |outines ========|
00002240  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |================|
00002250  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 0a 20 20 20  |============.   |
00002260  20 20 20 0a 20 20 20 20  20 20 0a 20 20 20 20 20  |   .      .     |
00002270  20 34 2e 20 47 65 6e 65  72 61 6c 20 4f 76 65 72  | 4. General Over|
00002280  76 69 65 77 20 0a 0a 20  20 20 20 20 20 54 68 69  |view ..      Thi|
00002290  73 20 73 65 63 74 69 6f  6e 20 65 78 70 6c 61 69  |s section explai|
000022a0  6e 73 20 74 68 65 20 76  61 72 69 6f 75 73 20 65  |ns the various e|
000022b0  6c 65 6d 65 6e 74 73 20  6f 66 20 61 6e 20 61 70  |lements of an ap|
000022c0  70 6c 69 63 61 74 69 6f  6e 20 0a 20 20 20 20 20  |plication .     |
000022d0  20 75 73 69 6e 67 20 74  68 65 20 45 76 6e 74 53  | using the EvntS|
000022e0  68 65 6c 6c 20 6c 69 62  72 61 72 79 2c 20 61 6e  |hell library, an|
000022f0  64 20 61 6e 79 20 6c 69  6d 69 74 61 74 69 6f 6e  |d any limitation|
00002300  73 20 61 6e 64 20 61 73  73 75 6d 70 74 69 6f 6e  |s and assumption|
00002310  73 20 0a 20 20 20 20 20  20 6d 61 64 65 20 62 79  |s .      made by|
00002320  20 6d 65 2e 20 0a 0a 20  20 20 20 20 20 34 2e 31  | me. ..      4.1|
00002330  20 44 79 6e 61 6d 69 63  20 57 69 6e 64 6f 77 73  | Dynamic Windows|
00002340  20 0a 0a 20 20 20 20 20  20 44 79 6e 61 6d 69 63  | ..      Dynamic|
00002350  20 77 69 6e 64 6f 77 73  20 61 72 65 20 74 68 6f  | windows are tho|
00002360  73 65 20 63 72 65 61 74  65 64 20 62 79 20 6d 6f  |se created by mo|
00002370  76 69 6e 67 20 74 68 65  20 70 6f 69 6e 74 65 72  |ving the pointer|
00002380  20 6f 76 65 72 20 61 20  0a 20 20 20 20 20 20 73  | over a .      s|
00002390  75 62 6d 65 6e 75 20 70  6f 69 6e 74 65 72 20 61  |ubmenu pointer a|
000023a0  72 72 6f 77 20 28 69 2e  65 20 74 68 65 20 6e 6f  |rrow (i.e the no|
000023b0  72 6d 61 6c 20 27 41 62  6f 75 74 20 74 68 69 73  |rmal 'About this|
000023c0  20 70 72 6f 67 72 61 6d  27 20 77 69 6e 64 6f 77  | program' window|
000023d0  20 0a 20 20 20 20 20 20  70 72 6f 64 75 63 65 64  | .      produced|
000023e0  20 62 79 20 74 68 65 20  27 49 6e 66 6f 27 20 65  | by the 'Info' e|
000023f0  6e 74 72 79 20 6f 6e 20  74 68 65 20 69 63 6f 6e  |ntry on the icon|
00002400  62 61 72 20 6d 65 6e 75  29 20 6f 72 20 6f 70 74  |bar menu) or opt|
00002410  69 6f 6e 61 6c 6c 79 20  0a 20 20 20 20 20 20 77  |ionally .      w|
00002420  68 65 6e 20 61 20 27 68  6f 74 20 6b 65 79 27 20  |hen a 'hot key' |
00002430  69 73 20 70 72 65 73 73  65 64 20 28 66 6f 72 20  |is pressed (for |
00002440  65 78 61 6d 70 6c 65 20  46 33 20 69 6e 20 6d 6f  |example F3 in mo|
00002450  73 74 20 61 70 70 6c 69  63 61 74 69 6f 6e 73 20  |st applications |
00002460  0a 20 20 20 20 20 20 6f  70 65 6e 73 20 61 20 73  |.      opens a s|
00002470  61 76 65 20 62 6f 78 29  2e 20 54 68 65 79 20 61  |ave box). They a|
00002480  72 65 20 6f 70 65 6e 65  64 20 77 69 74 68 20 61  |re opened with a|
00002490  20 63 61 6c 6c 20 74 6f  20 0a 20 20 20 20 20 20  | call to .      |
000024a0  50 52 4f 43 73 68 65 6c  6c 5f 4f 70 65 6e 57 69  |PROCshell_OpenWi|
000024b0  6e 64 6f 77 44 79 6e 61  6d 69 63 2e 20 0a 0c 0a  |ndowDynamic. ...|
000024c0  20 20 20 20 20 20 57 68  65 6e 20 77 72 69 74 65  |      When write|
000024d0  61 62 6c 65 20 69 63 6f  6e 73 20 65 78 69 73 74  |able icons exist|
000024e0  20 69 6e 20 74 68 65 20  64 79 6e 61 6d 69 63 20  | in the dynamic |
000024f0  77 69 6e 64 6f 77 20 75  70 2f 64 6f 77 6e 20 63  |window up/down c|
00002500  75 72 73 6f 72 20 0a 20  20 20 20 20 20 6b 65 79  |ursor .      key|
00002510  70 72 65 73 73 65 73 20  6d 6f 76 65 20 74 68 65  |presses move the|
00002520  20 63 61 72 65 74 20 62  65 74 77 65 65 6e 20 74  | caret between t|
00002530  68 65 20 69 63 6f 6e 73  20 75 73 69 6e 67 20 74  |he icons using t|
00002540  68 65 20 69 63 6f 6e 20  0a 20 20 20 20 20 20 68  |he icon .      h|
00002550  61 6e 64 6c 65 73 20 74  6f 20 64 65 74 65 72 6d  |andles to determ|
00002560  69 6e 65 20 77 68 65 72  65 20 74 6f 20 6d 6f 76  |ine where to mov|
00002570  65 20 6e 65 78 74 2e 20  59 6f 75 20 73 68 6f 75  |e next. You shou|
00002580  6c 64 20 65 6e 73 75 72  65 20 0a 20 20 20 20 20  |ld ensure .     |
00002590  20 74 68 65 72 65 66 6f  72 65 20 74 68 61 74 20  | therefore that |
000025a0  74 68 65 20 6f 72 64 65  72 20 6f 66 20 74 68 65  |the order of the|
000025b0  20 69 63 6f 6e 20 68 61  6e 64 6c 65 73 20 69 73  | icon handles is|
000025c0  20 61 20 6c 6f 67 69 63  61 6c 20 0a 20 20 20 20  | a logical .    |
000025d0  20 20 70 72 6f 67 72 65  73 73 69 6f 6e 20 74 68  |  progression th|
000025e0  72 6f 75 67 68 20 74 68  65 20 64 69 61 6c 6f 67  |rough the dialog|
000025f0  20 62 6f 78 2e 20 49 63  6f 6e 73 20 77 68 69 63  | box. Icons whic|
00002600  68 20 61 72 65 20 75 6e  73 65 6c 65 63 74 61 62  |h are unselectab|
00002610  6c 65 20 0a 20 20 20 20  20 20 28 69 2e 65 2e 20  |le .      (i.e. |
00002620  67 72 65 79 65 64 20 6f  75 74 29 20 77 69 6c 6c  |greyed out) will|
00002630  20 62 65 20 69 67 6e 6f  72 65 64 2e 20 50 72 65  | be ignored. Pre|
00002640  73 73 69 6e 67 20 74 68  65 20 3c 52 45 54 55 52  |ssing the <RETUR|
00002650  4e 3e 20 6b 65 79 20 0a  20 20 20 20 20 20 6d 6f  |N> key .      mo|
00002660  76 65 73 20 74 68 65 20  63 61 72 65 74 20 74 6f  |ves the caret to|
00002670  20 74 68 65 20 6e 65 78  74 20 69 63 6f 6e 2c 20  | the next icon, |
00002680  75 6e 6c 65 73 73 20 74  68 65 20 63 61 72 65 74  |unless the caret|
00002690  20 69 73 20 61 6c 72 65  61 64 79 20 69 6e 20 0a  | is already in .|
000026a0  20 20 20 20 20 20 74 68  65 20 6c 61 73 74 20 77  |      the last w|
000026b0  72 69 74 65 61 62 6c 65  20 69 63 6f 6e 2c 20 69  |riteable icon, i|
000026c0  6e 20 77 68 69 63 68 20  63 61 73 65 20 69 63 6f  |n which case ico|
000026d0  6e 20 30 20 28 6e 6f 72  6d 61 6c 6c 79 20 61 20  |n 0 (normally a |
000026e0  0a 20 20 20 20 20 20 27  64 65 66 61 75 6c 74 20  |.      'default |
000026f0  61 63 74 69 6f 6e 27 20  69 63 6f 6e 20 77 69 74  |action' icon wit|
00002700  68 20 61 6e 20 65 78 74  72 61 20 62 6f 72 64 65  |h an extra borde|
00002710  72 29 20 69 73 20 70 72  65 73 73 65 64 20 61 6e  |r) is pressed an|
00002720  64 20 74 68 65 20 0a 20  20 20 20 20 20 6d 65 6e  |d the .      men|
00002730  75 2f 64 69 61 6c 6f 67  20 62 6f 78 20 63 6c 6f  |u/dialog box clo|
00002740  73 65 64 2e 20 41 63 74  75 61 6c 6c 79 20 63 6c  |sed. Actually cl|
00002750  69 63 6b 69 6e 67 20 3c  53 45 4c 45 43 54 3e 20  |icking <SELECT> |
00002760  6f 6e 20 69 63 6f 6e 20  30 20 6f 66 20 61 20 0a  |on icon 0 of a .|
00002770  20 20 20 20 20 20 64 79  6e 61 6d 69 63 20 64 69  |      dynamic di|
00002780  61 6c 6f 67 20 62 6f 78  20 77 69 6c 6c 20 63 61  |alog box will ca|
00002790  75 73 65 20 74 68 65 20  73 68 65 6c 6c 20 6c 69  |use the shell li|
000027a0  62 72 61 72 79 20 74 6f  20 63 6c 6f 73 65 20 74  |brary to close t|
000027b0  68 65 20 0a 20 20 20 20  20 20 77 69 6e 64 6f 77  |he .      window|
000027c0  20 61 73 20 77 65 6c 6c  2e 20 0a 0a 20 20 20 20  | as well. ..    |
000027d0  20 20 57 68 65 6e 20 61  20 27 68 6f 74 20 6b 65  |  When a 'hot ke|
000027e0  79 27 20 69 73 20 70 72  65 73 73 65 64 20 79 6f  |y' is pressed yo|
000027f0  75 20 68 61 76 65 20 74  68 65 20 6f 70 74 69 6f  |u have the optio|
00002800  6e 20 6f 66 20 6f 70 65  6e 69 6e 67 20 61 20 0a  |n of opening a .|
00002810  20 20 20 20 20 20 64 79  6e 61 6d 69 63 20 64 69  |      dynamic di|
00002820  61 6c 6f 67 20 62 6f 78  20 77 68 69 63 68 20 77  |alog box which w|
00002830  69 6c 6c 20 64 69 73 61  70 70 65 61 72 20 77 68  |ill disappear wh|
00002840  65 6e 20 61 20 6d 6f 75  73 65 20 63 6c 69 63 6b  |en a mouse click|
00002850  20 69 73 20 0a 20 20 20  20 20 20 6d 61 64 65 20  | is .      made |
00002860  6f 75 74 73 69 64 65 20  69 74 20 6f 72 20 74 68  |outside it or th|
00002870  65 20 3c 45 53 43 3e 20  6b 65 79 20 69 73 20 70  |e <ESC> key is p|
00002880  72 65 73 73 65 64 2c 20  6f 72 20 61 73 20 61 20  |ressed, or as a |
00002890  27 53 74 61 74 69 63 27  20 0a 20 20 20 20 20 20  |'Static' .      |
000028a0  64 69 61 6c 6f 67 20 62  6f 78 20 77 68 69 63 68  |dialog box which|
000028b0  20 6d 75 73 74 20 62 65  20 65 78 70 6c 69 63 69  | must be explici|
000028c0  74 6c 79 20 63 6c 6f 73  65 64 20 62 79 20 74 68  |tly closed by th|
000028d0  65 20 75 73 65 72 20 0a  20 20 20 20 20 20 61 70  |e user .      ap|
000028e0  70 6c 69 63 61 74 69 6f  6e 20 70 72 6f 67 72 61  |plication progra|
000028f0  6d 2e 20 0a 0a 20 20 20  20 20 20 44 6f 20 6e 6f  |m. ..      Do no|
00002900  74 20 61 74 74 65 6d 70  74 20 74 6f 20 63 6c 6f  |t attempt to clo|
00002910  73 65 20 61 20 64 79 6e  61 6d 69 63 20 64 69 61  |se a dynamic dia|
00002920  6c 6f 67 20 62 6f 78 20  77 69 74 68 20 61 20 63  |log box with a c|
00002930  61 6c 6c 20 74 6f 20 0a  20 20 20 20 20 20 50 52  |all to .      PR|
00002940  4f 43 73 68 65 6c 6c 5f  43 6c 6f 73 65 57 69 6e  |OCshell_CloseWin|
00002950  64 6f 77 20 6f 72 20 50  52 4f 43 73 68 65 6c 6c  |dow or PROCshell|
00002960  5f 44 65 6c 65 74 65 57  69 6e 64 6f 77 20 61 73  |_DeleteWindow as|
00002970  20 74 68 69 73 20 77 69  6c 6c 20 0a 20 20 20 20  | this will .    |
00002980  20 20 63 61 75 73 65 20  61 6e 20 65 72 72 6f 72  |  cause an error|
00002990  20 77 68 65 6e 20 74 68  65 20 73 68 65 6c 6c 20  | when the shell |
000029a0  6c 69 62 72 61 72 79 20  74 72 69 65 73 20 74 6f  |library tries to|
000029b0  20 63 6c 6f 73 65 20 6f  72 20 64 65 6c 65 74 65  | close or delete|
000029c0  20 0a 20 20 20 20 20 20  74 68 65 20 77 69 6e 64  | .      the wind|
000029d0  6f 77 2e 20 0a 0a 20 20  20 20 20 20 41 6c 6c 20  |ow. ..      All |
000029e0  77 69 6e 64 6f 77 73 20  75 73 65 64 20 62 79 20  |windows used by |
000029f0  74 68 65 20 75 73 65 72  20 61 70 70 6c 69 63 61  |the user applica|
00002a00  74 69 6f 6e 20 61 72 65  20 61 73 73 75 6d 65 64  |tion are assumed|
00002a10  20 74 6f 20 62 65 20 0a  20 20 20 20 20 20 64 65  | to be .      de|
00002a20  66 69 6e 65 64 20 69 6e  20 74 68 65 20 27 54 65  |fined in the 'Te|
00002a30  6d 70 6c 61 74 65 73 27  20 66 69 6c 65 20 61 6e  |mplates' file an|
00002a40  64 20 65 64 69 74 65 64  20 75 73 69 6e 67 20 46  |d edited using F|
00002a50  6f 72 6d 45 64 20 6f 72  20 6f 6e 65 20 6f 66 20  |ormEd or one of |
00002a60  0a 20 20 20 20 20 20 74  68 65 20 50 75 62 6c 69  |.      the Publi|
00002a70  63 20 44 6f 6d 61 69 6e  2f 53 68 61 72 65 57 61  |c Domain/ShareWa|
00002a80  72 65 20 65 71 75 69 76  61 6c 65 6e 74 73 2e 20  |re equivalents. |
00002a90  0a 0a 20 20 20 20 20 20  34 2e 32 20 53 74 61 74  |..      4.2 Stat|
00002aa0  69 63 20 57 69 6e 64 6f  77 73 20 0a 0a 20 20 20  |ic Windows ..   |
00002ab0  20 20 20 54 68 65 73 65  20 61 72 65 20 6f 70 65  |   These are ope|
00002ac0  6e 65 64 20 77 69 74 68  20 61 20 63 61 6c 6c 20  |ned with a call |
00002ad0  74 6f 20 50 52 4f 43 73  68 65 6c 6c 5f 4f 70 65  |to PROCshell_Ope|
00002ae0  6e 57 69 6e 64 6f 77 53  74 61 74 69 63 20 61 6e  |nWindowStatic an|
00002af0  64 20 0a 20 20 20 20 20  20 72 65 73 70 6f 6e 64  |d .      respond|
00002b00  20 74 6f 20 63 75 72 73  6f 72 20 61 6e 64 20 3c  | to cursor and <|
00002b10  52 45 54 55 52 4e 3e 20  6b 65 79 70 72 65 73 73  |RETURN> keypress|
00002b20  65 73 20 6c 69 6b 65 20  64 79 6e 61 6d 69 63 20  |es like dynamic |
00002b30  64 69 61 6c 6f 67 20 0a  20 20 20 20 20 20 62 6f  |dialog .      bo|
00002b40  78 65 73 20 65 78 63 65  70 74 20 74 68 61 74 20  |xes except that |
00002b50  70 72 65 73 73 69 6e 67  20 3c 52 45 54 55 52 4e  |pressing <RETURN|
00002b60  3e 20 69 6e 20 74 68 65  20 6c 61 73 74 20 77 72  |> in the last wr|
00002b70  69 74 65 61 62 6c 65 20  69 63 6f 6e 20 0a 20 20  |iteable icon .  |
00002b80  20 20 20 20 77 69 6c 6c  20 6e 6f 74 20 63 6c 6f  |    will not clo|
00002b90  73 65 20 74 68 65 20 77  69 6e 64 6f 77 2e 20 53  |se the window. S|
00002ba0  74 61 74 69 63 20 77 69  6e 64 6f 77 73 20 6d 75  |tatic windows mu|
00002bb0  73 74 20 62 65 20 63 72  65 61 74 65 64 20 77 69  |st be created wi|
00002bc0  74 68 20 61 20 0a 20 20  20 20 20 20 63 61 6c 6c  |th a .      call|
00002bd0  20 74 6f 20 50 52 4f 43  73 68 65 6c 6c 5f 43 72  | to PROCshell_Cr|
00002be0  65 61 74 65 57 69 6e 64  6f 77 53 74 61 74 69 63  |eateWindowStatic|
00002bf0  2e 20 0a 0a 20 20 20 20  20 20 43 6c 6f 73 69 6e  |. ..      Closin|
00002c00  67 20 74 68 65 73 65 20  77 69 6e 64 6f 77 73 20  |g these windows |
00002c10  69 73 20 74 68 65 20 72  65 73 70 6f 6e 73 69 62  |is the responsib|
00002c20  69 6c 69 74 79 20 6f 66  20 74 68 65 20 61 70 70  |ility of the app|
00002c30  6c 69 63 61 74 69 6f 6e  20 0a 20 20 20 20 20 20  |lication .      |
00002c40  70 72 6f 67 72 61 6d 20  28 75 73 65 20 50 52 4f  |program (use PRO|
00002c50  43 73 68 65 6c 6c 5f 43  6c 6f 73 65 57 69 6e 64  |Cshell_CloseWind|
00002c60  6f 77 29 20 65 78 63 65  70 74 20 69 6e 20 74 68  |ow) except in th|
00002c70  65 20 63 61 73 65 20 6f  66 20 61 20 63 6c 69 63  |e case of a clic|
00002c80  6b 20 0a 20 20 20 20 20  20 6f 6e 20 74 68 65 20  |k .      on the |
00002c90  27 43 6c 6f 73 65 27 20  69 63 6f 6e 20 69 6e 20  |'Close' icon in |
00002ca0  74 68 65 20 74 69 74 6c  65 20 62 61 72 20 69 63  |the title bar ic|
00002cb0  6f 6e 20 28 69 66 20 70  72 65 73 65 6e 74 29 2e  |on (if present).|
00002cc0  20 0a 0a 20 20 20 20 20  20 59 6f 75 20 77 6f 75  | ..      You wou|
00002cd0  6c 64 20 75 73 65 20 61  20 73 74 61 74 69 63 20  |ld use a static |
00002ce0  77 69 6e 64 6f 77 20 66  6f 72 20 74 68 65 20 6d  |window for the m|
00002cf0  61 69 6e 20 77 69 6e 64  6f 77 20 6f 66 20 61 6e  |ain window of an|
00002d00  20 0a 20 20 20 20 20 20  61 70 70 6c 69 63 61 74  | .      applicat|
00002d10  69 6f 6e 2c 20 6f 72 20  70 65 72 68 61 70 73 20  |ion, or perhaps |
00002d20  66 6f 72 20 61 20 73 61  76 65 20 62 6f 78 20 61  |for a save box a|
00002d30  73 20 69 6e 20 74 68 65  20 63 61 73 65 20 6f 66  |s in the case of|
00002d40  20 74 68 65 20 0a 20 20  20 20 20 20 21 57 69 6e  | the .      !Win|
00002d50  53 61 76 65 32 20 65 78  61 6d 70 6c 65 2e 20 54  |Save2 example. T|
00002d60  68 65 20 61 64 76 61 6e  74 61 67 65 20 6f 66 20  |he advantage of |
00002d70  75 73 69 6e 67 20 61 20  73 74 61 74 69 63 20 77  |using a static w|
00002d80  69 6e 64 6f 77 20 69 6e  20 74 68 69 73 20 0a 20  |indow in this . |
00002d90  20 20 20 20 20 63 61 73  65 20 69 73 20 74 68 61  |     case is tha|
00002da0  74 20 74 68 69 73 20 61  6c 6c 6f 77 73 20 74 68  |t this allows th|
00002db0  65 20 75 73 65 72 20 74  6f 20 6f 70 65 6e 20 64  |e user to open d|
00002dc0  69 72 65 63 74 6f 72 79  20 76 69 65 77 65 72 73  |irectory viewers|
00002dd0  20 6f 72 20 0a 20 20 20  20 20 20 73 74 61 72 74  | or .      start|
00002de0  20 6f 74 68 65 72 20 61  70 70 6c 69 63 61 74 69  | other applicati|
00002df0  6f 6e 73 20 77 68 69 6c  65 20 6b 65 65 70 69 6e  |ons while keepin|
00002e00  67 20 74 68 65 20 73 61  76 65 20 62 6f 78 20 6f  |g the save box o|
00002e10  6e 20 74 68 65 20 0a 20  20 20 20 20 20 73 63 72  |n the .      scr|
00002e20  65 65 6e 2e 20 0a 0a 20  20 20 20 20 20 34 2e 33  |een. ..      4.3|
00002e30  20 52 65 73 6f 75 72 63  65 73 20 0a 0a 20 20 20  | Resources ..   |
00002e40  20 20 20 27 52 65 73 6f  75 72 63 65 73 27 20 69  |   'Resources' i|
00002e50  73 20 61 20 67 65 6e 65  72 61 6c 20 74 65 72 6d  |s a general term|
00002e60  20 66 6f 72 20 61 64 64  69 74 69 6f 6e 61 6c 20  | for additional |
00002e70  66 69 6c 65 73 20 6e 65  65 64 65 64 20 62 79 20  |files needed by |
00002e80  61 6e 20 0a 20 20 20 20  20 20 61 70 70 6c 69 63  |an .      applic|
00002e90  61 74 69 6f 6e 2e 20 54  68 65 72 65 20 77 69 6c  |ation. There wil|
00002ea0  6c 20 28 61 6c 6d 6f 73  74 29 20 61 6c 77 61 79  |l (almost) alway|
00002eb0  73 20 62 65 20 73 6f 6d  65 20 6f 66 20 74 68 65  |s be some of the|
00002ec0  73 65 2c 20 73 75 63 68  20 61 73 20 0a 20 20 20  |se, such as .   |
00002ed0  20 20 20 73 70 72 69 74  65 20 66 69 6c 65 73 2e  |   sprite files.|
00002ee0  20 4f 74 68 65 72 73 2c  20 66 6f 72 20 65 78 61  | Others, for exa|
00002ef0  6d 70 6c 65 20 6d 65 73  73 61 67 65 20 66 69 6c  |mple message fil|
00002f00  65 73 20 6d 61 79 20 6e  6f 74 20 62 65 20 0a 20  |es may not be . |
00002f10  20 20 20 20 20 72 65 71  75 69 72 65 64 2e 20 0a  |     required. .|
00002f20  0a 20 20 20 20 20 20 54  68 65 20 45 76 6e 74 53  |.      The EvntS|
00002f30  68 65 6c 6c 20 6c 69 62  72 61 72 79 20 6e 6f 77  |hell library now|
00002f40  20 73 75 70 70 6f 72 74  73 20 52 65 73 46 69 6e  | supports ResFin|
00002f50  64 20 77 68 69 63 68 20  61 6c 6c 6f 77 73 20 74  |d which allows t|
00002f60  68 65 20 0a 20 20 20 20  20 20 73 65 6c 65 63 74  |he .      select|
00002f70  69 6f 6e 20 6f 66 20 74  68 65 20 64 65 73 69 72  |ion of the desir|
00002f80  65 64 20 6c 61 6e 67 75  61 67 65 20 66 6f 72 20  |ed language for |
00002f90  6d 65 73 73 61 67 65 20  66 69 6c 65 73 20 65 74  |message files et|
00002fa0  63 20 6d 75 63 68 20 0a  20 20 20 20 20 20 65 61  |c much .      ea|
00002fb0  73 69 65 72 2e 20 42 72  69 65 66 6c 79 20 65 78  |sier. Briefly ex|
00002fc0  70 6c 61 69 6e 65 64 20  69 74 20 63 68 65 63 6b  |plained it check|
00002fd0  73 20 74 68 65 20 63 75  72 72 65 6e 74 6c 79 20  |s the currently |
00002fe0  63 6f 6e 66 69 67 75 72  65 64 20 0a 20 20 20 20  |configured .    |
00002ff0  20 20 6c 61 6e 67 75 61  67 65 20 6f 66 20 74 68  |  language of th|
00003000  65 20 63 6f 6d 70 75 74  65 72 20 69 74 20 69 73  |e computer it is|
00003010  20 72 75 6e 6e 69 6e 67  20 6f 6e 20 61 6e 64 20  | running on and |
00003020  73 65 74 73 20 75 70 20  61 20 70 61 74 68 20 74  |sets up a path t|
00003030  6f 20 0a 20 20 20 20 20  20 74 68 65 20 72 65 73  |o .      the res|
00003040  6f 75 72 63 65 20 66 69  6c 65 73 2e 20 54 68 69  |ource files. Thi|
00003050  73 20 77 6f 75 6c 64 20  6e 6f 72 6d 61 6c 6c 79  |s would normally|
00003060  20 62 65 20 3c 41 70 70  24 44 69 72 3e 2e 52 65  | be <App$Dir>.Re|
00003070  73 6f 75 72 63 65 73 2e  55 4b 20 0a 20 20 20 20  |sources.UK .    |
00003080  20 20 66 6f 72 20 61 20  55 4b 20 63 6f 6e 66 69  |  for a UK confi|
00003090  67 75 72 65 64 20 63 6f  6d 70 75 74 65 72 2c 20  |gured computer, |
000030a0  6f 72 20 3c 41 70 70 24  44 69 72 3e 2e 52 65 73  |or <App$Dir>.Res|
000030b0  6f 75 72 63 65 73 2e 47  65 72 6d 61 6e 79 20 66  |ources.Germany f|
000030c0  6f 72 20 0a 20 20 20 20  20 20 61 20 47 65 72 6d  |or .      a Germ|
000030d0  61 6e 20 6f 6e 65 2e 20  54 68 69 73 20 69 73 20  |an one. This is |
000030e0  68 61 6e 64 6c 65 64 20  66 6f 72 20 79 6f 75 20  |handled for you |
000030f0  69 66 20 79 6f 75 20 75  73 65 20 21 41 70 70 42  |if you use !AppB|
00003100  75 69 6c 64 20 74 6f 20  0a 0c 0a 20 20 20 20 20  |uild to ...     |
00003110  20 63 72 65 61 74 65 20  74 68 65 20 61 70 70 6c  | create the appl|
00003120  69 63 61 74 69 6f 6e 2e  20 0a 0a 20 20 20 20 20  |ication. ..     |
00003130  20 41 70 70 42 75 69 6c  64 20 6e 6f 77 20 6f 66  | AppBuild now of|
00003140  66 65 72 73 20 74 6f 20  70 6c 61 63 65 20 74 68  |fers to place th|
00003150  65 20 72 65 73 6f 75 72  63 65 73 20 69 6e 20 74  |e resources in t|
00003160  68 65 20 61 70 70 72 6f  70 72 69 61 74 65 20 0a  |he appropriate .|
00003170  20 20 20 20 20 20 64 69  72 65 63 74 6f 72 69 65  |      directorie|
00003180  73 20 66 6f 72 20 79 6f  75 20 77 68 65 6e 20 79  |s for you when y|
00003190  6f 75 20 63 72 65 61 74  65 20 61 20 6e 65 77 20  |ou create a new |
000031a0  61 70 70 6c 69 63 61 74  69 6f 6e 2c 20 61 6e 64  |application, and|
000031b0  20 74 6f 20 0a 20 20 20  20 20 20 70 6c 61 63 65  | to .      place|
000031c0  20 61 20 63 61 6c 6c 20  74 6f 20 52 65 73 46 69  | a call to ResFi|
000031d0  6e 64 20 69 6e 20 74 68  65 20 21 52 75 6e 20 66  |nd in the !Run f|
000031e0  69 6c 65 2e 20 0a 0a 20  20 20 20 20 20 55 73 69  |ile. ..      Usi|
000031f0  6e 67 20 52 65 73 46 69  6e 64 20 69 73 20 6f 70  |ng ResFind is op|
00003200  74 69 6f 6e 61 6c 20 61  6e 64 20 45 76 6e 74 53  |tional and EvntS|
00003210  68 65 6c 6c 20 61 70 70  6c 69 63 61 74 69 6f 6e  |hell application|
00003220  73 20 77 69 6c 6c 20 0a  20 20 20 20 20 20 66 75  |s will .      fu|
00003230  6e 63 74 69 6f 6e 20 65  71 75 61 6c 6c 79 20 77  |nction equally w|
00003240  65 6c 6c 20 69 66 20 79  6f 75 20 64 6f 6e 27 74  |ell if you don't|
00003250  20 75 73 65 20 69 74 2e  20 49 74 20 64 6f 65 73  | use it. It does|
00003260  20 6d 61 6b 65 20 74 68  65 20 0a 20 20 20 20 20  | make the .     |
00003270  20 70 72 6f 64 75 63 74  69 6f 6e 20 6f 66 20 61  | production of a|
00003280  70 70 6c 69 63 61 74 69  6f 6e 73 20 74 68 61 74  |pplications that|
00003290  20 63 61 6e 20 62 65 20  65 61 73 69 6c 79 20 75  | can be easily u|
000032a0  73 65 64 20 69 6e 20 61  6e 79 20 63 6f 75 6e 74  |sed in any count|
000032b0  72 79 20 0a 20 20 20 20  20 20 6d 75 63 68 20 65  |ry .      much e|
000032c0  61 73 69 65 72 2c 20 68  6f 77 65 76 65 72 2c 20  |asier, however, |
000032d0  61 6e 64 20 74 68 69 73  20 73 68 6f 75 6c 64 20  |and this should |
000032e0  62 65 20 65 6e 63 6f 75  72 61 67 65 64 2e 20 4d  |be encouraged. M|
000032f0  6f 73 74 20 6f 66 20 74  68 65 20 0a 20 20 20 20  |ost of the .    |
00003300  20 20 70 72 6f 67 72 61  6d 6d 69 6e 67 20 74 6f  |  programming to|
00003310  6f 6c 73 20 61 6e 64 20  6d 6f 64 75 6c 65 73 20  |ols and modules |
00003320  75 73 65 64 20 64 75 72  69 6e 67 20 74 68 65 20  |used during the |
00003330  64 65 76 65 6c 6f 70 6d  65 6e 74 20 6f 66 20 74  |development of t|
00003340  68 69 73 20 0a 20 20 20  20 20 20 6c 69 62 72 61  |his .      libra|
00003350  72 79 20 77 65 72 65 20  77 72 69 74 74 65 6e 20  |ry were written |
00003360  6f 75 74 73 69 64 65 20  74 68 65 20 55 4b 2e 20  |outside the UK. |
00003370  0a 0a 20 20 20 20 20 20  54 68 65 20 61 75 74 68  |..      The auth|
00003380  6f 72 20 77 6f 75 6c 64  20 61 70 70 72 65 63 69  |or would appreci|
00003390  61 74 65 20 68 65 6c 70  20 69 6e 20 74 72 61 6e  |ate help in tran|
000033a0  73 6c 61 74 69 6e 67 20  74 68 65 20 53 68 65 6c  |slating the Shel|
000033b0  6c 4d 73 67 73 20 0a 20  20 20 20 20 20 66 69 6c  |lMsgs .      fil|
000033c0  65 20 61 6e 64 20 74 68  65 20 64 6f 63 75 6d 65  |e and the docume|
000033d0  6e 74 61 74 69 6f 6e 20  69 6e 74 6f 20 6f 74 68  |ntation into oth|
000033e0  65 72 20 6c 61 6e 67 75  61 67 65 73 2e 20 0a 0a  |er languages. ..|
000033f0  20 20 20 20 20 20 54 68  65 20 66 75 6c 6c 20 52  |      The full R|
00003400  65 73 46 69 6e 64 20 64  6f 63 75 6d 65 6e 74 61  |esFind documenta|
00003410  74 69 6f 6e 20 73 75 70  70 6c 69 65 64 20 77 69  |tion supplied wi|
00003420  74 68 20 74 68 65 20 6c  69 62 72 61 72 79 20 63  |th the library c|
00003430  6f 6e 74 61 69 6e 73 20  0a 20 20 20 20 20 20 66  |ontains .      f|
00003440  75 72 74 68 65 72 20 64  65 74 61 69 6c 73 20 6f  |urther details o|
00003450  6e 20 68 6f 77 20 69 74  20 77 6f 72 6b 73 20 61  |n how it works a|
00003460  6e 64 20 74 68 65 20 61  64 76 61 6e 74 61 67 65  |nd the advantage|
00003470  73 20 74 6f 20 62 65 20  67 61 69 6e 65 64 20 0a  |s to be gained .|
00003480  20 20 20 20 20 20 62 79  20 75 73 69 6e 67 20 69  |      by using i|
00003490  74 2e 20 41 73 20 61 20  74 61 73 74 65 72 2c 20  |t. As a taster, |
000034a0  68 65 72 65 20 69 73 20  74 68 65 20 70 61 72 74  |here is the part|
000034b0  20 6f 66 20 74 68 65 20  64 6f 63 75 6d 65 6e 74  | of the document|
000034c0  61 74 69 6f 6e 20 0a 20  20 20 20 20 20 69 6e 74  |ation .      int|
000034d0  65 6e 64 65 64 20 74 6f  20 62 65 20 64 69 73 74  |ended to be dist|
000034e0  72 69 62 75 74 65 64 20  77 69 74 68 20 61 70 70  |ributed with app|
000034f0  6c 69 63 61 74 69 6f 6e  73 20 75 73 69 6e 67 20  |lications using |
00003500  52 65 73 46 69 6e 64 2e  20 0a 0a 20 20 20 20 20  |ResFind. ..     |
00003510  20 0a 20 20 20 20 20 20  28 42 61 73 65 20 66 6f  | .      (Base fo|
00003520  72 20 74 68 65 20 61 70  70 6c 69 63 61 74 69 6f  |r the applicatio|
00003530  6e 27 73 20 64 6f 63 75  6d 65 6e 74 61 74 69 6f  |n's documentatio|
00003540  6e 20 2d 20 70 6c 65 61  73 65 20 72 65 70 6c 61  |n - please repla|
00003550  63 65 20 0a 20 20 20 20  20 20 3c 50 72 6f 67 4e  |ce .      <ProgN|
00003560  61 6d 65 3e 20 62 79 20  74 68 65 20 6e 61 6d 65  |ame> by the name|
00003570  20 6f 66 20 79 6f 75 72  20 61 70 70 6c 69 63 61  | of your applica|
00003580  74 69 6f 6e 20 77 69 74  68 6f 75 74 20 74 68 65  |tion without the|
00003590  20 21 29 0a 20 20 20 20  20 20 0a 20 20 20 20 20  | !).      .     |
000035a0  20 21 3c 50 72 6f 67 4e  61 6d 65 3e 20 61 64 61  | !<ProgName> ada|
000035b0  70 74 73 20 61 75 74 6f  6d 61 74 69 63 61 6c 6c  |pts automaticall|
000035c0  79 20 74 6f 20 74 68 65  20 63 6f 6e 66 69 67 75  |y to the configu|
000035d0  72 65 64 20 6c 61 6e 67  75 61 67 65 20 69 66 20  |red language if |
000035e0  0a 20 20 20 20 20 20 74  68 65 20 63 6f 72 72 65  |.      the corre|
000035f0  73 70 6f 6e 64 69 6e 67  20 6d 65 73 73 61 67 65  |sponding message|
00003600  73 20 65 74 63 2e 20 61  72 65 20 61 76 61 69 6c  |s etc. are avail|
00003610  61 62 6c 65 2e 20 46 6f  72 20 74 68 69 73 20 70  |able. For this p|
00003620  75 72 70 6f 73 65 20 61  20 0a 20 20 20 20 20 20  |urpose a .      |
00003630  52 65 73 6f 75 72 63 65  73 20 64 69 72 65 63 74  |Resources direct|
00003640  6f 72 79 20 69 73 20 63  6f 6e 74 61 69 6e 65 64  |ory is contained|
00003650  20 69 6e 20 74 68 65 20  61 70 70 6c 69 63 61 74  | in the applicat|
00003660  69 6f 6e 20 69 6e 20 77  68 69 63 68 20 61 20 0a  |ion in which a .|
00003670  20 20 20 20 20 20 73 75  62 64 69 72 65 63 74 6f  |      subdirecto|
00003680  72 79 20 66 6f 72 20 65  61 63 68 20 6c 61 6e 67  |ry for each lang|
00003690  75 61 67 65 20 73 75 70  70 6f 72 74 65 64 20 72  |uage supported r|
000036a0  65 73 69 64 65 73 2e 20  49 66 20 74 68 65 20 6c  |esides. If the l|
000036b0  61 6e 67 75 61 67 65 20  0a 20 20 20 20 20 20 79  |anguage .      y|
000036c0  6f 75 20 6e 65 65 64 20  69 73 6e 27 74 20 69 6e  |ou need isn't in|
000036d0  20 74 68 65 72 65 2c 20  70 6c 65 61 73 65 20 66  | there, please f|
000036e0  65 65 6c 20 66 72 65 65  20 74 6f 20 64 75 70 6c  |eel free to dupl|
000036f0  69 63 61 74 65 20 61 6e  79 20 6f 66 20 0a 20 20  |icate any of .  |
00003700  20 20 20 20 74 68 65 73  65 20 6c 61 6e 67 75 61  |    these langua|
00003710  67 65 20 64 69 72 65 63  74 6f 72 69 65 73 20 61  |ge directories a|
00003720  6e 64 20 74 72 61 6e 73  6c 61 74 65 20 74 68 65  |nd translate the|
00003730  20 63 6f 6e 74 65 6e 74  73 2e 0a 20 20 20 20 20  | contents..     |
00003740  20 0a 20 20 20 20 20 20  57 68 65 6e 20 79 6f 75  | .      When you|
00003750  20 72 75 6e 20 74 68 65  20 70 72 6f 67 72 61 6d  | run the program|
00003760  20 61 20 75 74 69 6c 69  74 79 20 63 61 6c 6c 65  | a utility calle|
00003770  64 20 52 65 73 46 69 6e  64 20 69 73 20 63 61 6c  |d ResFind is cal|
00003780  6c 65 64 20 77 68 69 63  68 20 0a 20 20 20 20 20  |led which .     |
00003790  20 72 65 61 64 73 20 74  68 65 20 6c 61 6e 67 75  | reads the langu|
000037a0  61 67 65 20 79 6f 75 72  20 63 6f 6d 70 75 74 65  |age your compute|
000037b0  72 20 69 73 20 63 6f 6e  66 69 67 75 72 65 64 20  |r is configured |
000037c0  74 6f 20 61 6e 64 20 74  68 65 6e 20 6c 6f 6f 6b  |to and then look|
000037d0  73 20 0a 20 20 20 20 20  20 66 6f 72 20 74 68 65  |s .      for the|
000037e0  20 63 6f 72 72 65 73 70  6f 6e 64 69 6e 67 20 6c  | corresponding l|
000037f0  61 6e 67 75 61 67 65 20  64 69 72 65 63 74 6f 72  |anguage director|
00003800  79 2e 20 49 66 20 74 68  69 73 20 66 61 69 6c 73  |y. If this fails|
00003810  20 74 68 65 20 0a 20 20  20 20 20 20 70 72 6f 67  | the .      prog|
00003820  72 61 6d 20 77 69 6c 6c  20 72 75 6e 20 69 6e 20  |ram will run in |
00003830  45 6e 67 6c 69 73 68 20  28 55 4b 29 2e 20 42 79  |English (UK). By|
00003840  20 73 65 74 74 69 6e 67  20 73 65 76 65 72 61 6c  | setting several|
00003850  20 73 79 73 74 65 6d 20  0a 20 20 20 20 20 20 76  | system .      v|
00003860  61 72 69 61 62 6c 65 73  20 28 62 65 73 74 20 64  |ariables (best d|
00003870  6f 6e 65 20 69 6e 20 79  6f 75 72 20 73 79 73 74  |one in your syst|
00003880  65 6d 27 73 20 21 42 6f  6f 74 20 66 69 6c 65 29  |em's !Boot file)|
00003890  20 79 6f 75 20 63 61 6e  20 63 68 61 6e 67 65 20  | you can change |
000038a0  0a 20 20 20 20 20 20 74  68 65 20 6c 61 6e 67 75  |.      the langu|
000038b0  61 67 65 20 6c 6f 6f 6b  65 64 20 66 6f 72 2e 20  |age looked for. |
000038c0  57 69 74 68 20 74 68 69  73 20 79 6f 75 20 63 61  |With this you ca|
000038d0  6e 20 6d 61 6b 65 20 73  75 72 65 20 61 20 70 72  |n make sure a pr|
000038e0  6f 67 72 61 6d 20 0a 20  20 20 20 20 20 72 75 6e  |ogram .      run|
000038f0  73 20 69 6e 20 61 20 63  65 72 74 61 69 6e 20 6c  |s in a certain l|
00003900  61 6e 67 75 61 67 65 2c  20 65 2e 67 2e 20 74 6f  |anguage, e.g. to|
00003910  20 61 76 6f 69 64 20 61  20 77 65 69 72 64 20 74  | avoid a weird t|
00003920  72 61 6e 73 6c 61 74 69  6f 6e 2e 20 0a 20 20 20  |ranslation. .   |
00003930  20 20 20 46 75 72 74 68  65 72 6d 6f 72 65 20 69  |   Furthermore i|
00003940  74 20 69 73 20 70 6f 73  73 69 62 6c 65 20 74 6f  |t is possible to|
00003950  20 6e 61 6d 65 20 73 65  76 65 72 61 6c 20 6c 61  | name several la|
00003960  6e 67 75 61 67 65 73 20  79 6f 75 20 70 72 65 66  |nguages you pref|
00003970  65 72 20 0a 20 20 20 20  20 20 74 6f 20 45 6e 67  |er .      to Eng|
00003980  6c 69 73 68 2e 0a 20 20  20 20 20 20 0a 20 20 20  |lish..      .   |
00003990  20 20 20 54 68 69 73 20  69 73 20 63 6f 6e 74 72  |   This is contr|
000039a0  6f 6c 6c 65 64 20 62 79  20 74 68 72 65 65 20 73  |olled by three s|
000039b0  79 73 74 65 6d 20 76 61  72 69 61 62 6c 65 73 3a  |ystem variables:|
000039c0  0a 20 20 20 20 20 20 0a  20 20 20 20 20 20 0a 20  |.      .      . |
000039d0  20 20 20 20 20 3c 50 72  6f 67 4e 61 6d 65 3e 24  |     <ProgName>$|
000039e0  4c 61 6e 67 75 61 67 65  2c 20 52 65 73 46 69 6e  |Language, ResFin|
000039f0  64 24 4c 61 6e 67 75 61  67 65 73 50 72 65 66 20  |d$LanguagesPref |
00003a00  61 6e 64 20 0a 20 20 20  20 20 20 52 65 73 46 69  |and .      ResFi|
00003a10  6e 64 24 4c 61 6e 67 75  61 67 65 73 24 53 75 66  |nd$Languages$Suf|
00003a20  66 2e 20 0a 0a 20 20 20  20 20 20 0a 20 20 20 20  |f. ..      .    |
00003a30  20 20 57 68 65 6e 20 72  75 6e 6e 69 6e 67 20 74  |  When running t|
00003a40  68 65 20 61 70 70 6c 69  63 61 74 69 6f 6e 20 52  |he application R|
00003a50  65 73 46 69 6e 64 20 6c  6f 6f 6b 73 20 66 6f 72  |esFind looks for|
00003a60  20 74 68 65 20 66 69 72  73 74 20 6c 61 6e 67 75  | the first langu|
00003a70  61 67 65 20 0a 20 20 20  20 20 20 73 75 70 70 6f  |age .      suppo|
00003a80  72 74 65 64 20 61 6c 6f  6e 67 20 74 68 65 20 66  |rted along the f|
00003a90  6f 6c 6c 6f 77 69 6e 67  20 6c 69 73 74 20 6f 66  |ollowing list of|
00003aa0  20 6c 61 6e 67 75 61 67  65 73 3a 0a 20 20 20 20  | languages:.    |
00003ab0  20 20 0a 20 20 20 20 20  20 0a 20 20 20 20 20 20  |  .      .      |
00003ac0  31 2e 20 43 6f 6e 74 65  6e 74 73 20 6f 66 20 74  |1. Contents of t|
00003ad0  68 65 20 76 61 72 69 61  62 6c 65 20 3c 50 72 6f  |he variable <Pro|
00003ae0  67 4e 61 6d 65 3e 24 4c  61 6e 67 75 61 67 65 20  |gName>$Language |
00003af0  32 2e 20 43 6f 6e 74 65  6e 74 73 20 6f 66 20 0a  |2. Contents of .|
00003b00  20 20 20 20 20 20 74 68  65 20 76 61 72 69 61 62  |      the variab|
00003b10  6c 65 20 52 65 73 46 69  6e 64 24 4c 61 6e 67 75  |le ResFind$Langu|
00003b20  61 67 65 73 50 72 65 66  20 33 2e 20 54 68 65 20  |agesPref 3. The |
00003b30  63 6f 6e 66 69 67 75 72  65 64 20 6c 61 6e 67 75  |configured langu|
00003b40  61 67 65 20 34 2e 20 0a  20 20 20 20 20 20 43 6f  |age 4. .      Co|
00003b50  6e 74 65 6e 74 73 20 6f  66 20 74 68 65 20 76 61  |ntents of the va|
00003b60  72 69 61 62 6c 65 20 52  65 73 46 69 6e 64 24 4c  |riable ResFind$L|
00003b70  61 6e 67 75 61 67 65 73  53 75 66 66 20 35 2e 20  |anguagesSuff 5. |
00003b80  55 4b 20 0a 0a 20 20 20  20 20 20 0a 20 20 20 20  |UK ..      .    |
00003b90  20 20 54 61 6b 65 20 61  20 4e 6f 72 77 65 67 69  |  Take a Norwegi|
00003ba0  61 6e 20 75 73 65 72 20  66 6f 72 20 65 78 61 6d  |an user for exam|
00003bb0  70 6c 65 20 28 6c 6f 74  73 20 6f 66 20 67 72 65  |ple (lots of gre|
00003bc0  61 74 20 70 72 6f 67 72  61 6d 73 20 63 6f 6d 65  |at programs come|
00003bd0  20 0a 20 20 20 20 20 20  66 72 6f 6d 20 74 68 65  | .      from the|
00003be0  72 65 29 20 77 68 6f 73  65 20 63 6f 6d 70 75 74  |re) whose comput|
00003bf0  65 72 20 69 73 20 63 6f  6e 66 69 67 75 72 65 64  |er is configured|
00003c00  20 74 6f 20 27 4e 6f 72  77 61 79 27 2e 20 53 69  | to 'Norway'. Si|
00003c10  6e 63 65 20 74 68 69 73  20 0a 20 20 20 20 20 20  |nce this .      |
00003c20  6c 61 6e 67 75 61 67 65  20 69 73 6e 27 74 20 74  |language isn't t|
00003c30  6f 6f 20 63 6f 6d 6d 6f  6e 20 69 6e 20 45 75 72  |oo common in Eur|
00003c40  6f 70 65 20 6d 6f 73 74  20 70 72 6f 67 72 61 6d  |ope most program|
00003c50  73 20 77 6f 6e 27 74 20  73 75 70 70 6f 72 74 20  |s won't support |
00003c60  0a 0c 0a 20 20 20 20 20  20 69 74 20 2d 20 65 78  |...      it - ex|
00003c70  63 65 70 74 20 66 6f 72  20 4e 6f 72 77 65 67 69  |cept for Norwegi|
00003c80  61 6e 20 6f 6e 65 73 2e  20 42 75 74 20 6f 75 72  |an ones. But our|
00003c90  20 75 73 65 72 20 69 73  20 70 72 65 74 74 79 20  | user is pretty |
00003ca0  67 6f 6f 64 20 69 6e 20  0a 20 20 20 20 20 20 47  |good in .      G|
00003cb0  65 72 6d 61 6e 20 61 6e  64 20 46 72 65 6e 63 68  |erman and French|
00003cc0  20 62 75 74 20 6e 6f 74  20 74 6f 6f 20 66 6f 6e  | but not too fon|
00003cd0  64 20 6f 66 20 45 6e 67  6c 69 73 68 2e 20 54 68  |d of English. Th|
00003ce0  65 72 65 66 6f 72 65 20  68 65 20 0a 20 20 20 20  |erefore he .    |
00003cf0  20 20 70 72 65 66 65 72  73 20 74 68 65 73 65 20  |  prefers these |
00003d00  6c 61 6e 67 75 61 67 65  73 20 74 6f 20 55 4b 20  |languages to UK |
00003d10  61 6e 64 20 77 6f 75 6c  64 20 74 68 75 73 20 70  |and would thus p|
00003d20  75 74 20 74 68 65 20 66  6f 6c 6c 6f 77 69 6e 67  |ut the following|
00003d30  20 0a 20 20 20 20 20 20  6c 69 6e 65 20 69 6e 20  | .      line in |
00003d40  68 69 73 20 73 79 73 74  65 6d 27 73 20 21 42 6f  |his system's !Bo|
00003d50  6f 74 20 66 69 6c 65 3a  0a 20 20 20 20 20 20 0a  |ot file:.      .|
00003d60  20 20 20 20 20 20 2a 53  65 74 20 52 65 73 46 69  |      *Set ResFi|
00003d70  6e 64 24 4c 61 6e 67 75  61 67 65 73 53 75 66 66  |nd$LanguagesSuff|
00003d80  20 47 65 72 6d 61 6e 79  2c 46 72 61 6e 63 65 0a  | Germany,France.|
00003d90  20 20 20 20 20 20 0a 20  20 20 20 20 20 52 75 6e  |      .      Run|
00003da0  6e 69 6e 67 20 61 6e 20  61 70 70 6c 69 63 61 74  |ning an applicat|
00003db0  69 6f 6e 73 20 28 73 75  63 68 20 61 73 20 74 68  |ions (such as th|
00003dc0  69 73 20 6f 6e 65 29 20  75 73 69 6e 67 20 52 65  |is one) using Re|
00003dd0  73 46 69 6e 64 20 74 68  65 20 6c 69 73 74 20 0a  |sFind the list .|
00003de0  20 20 20 20 20 20 6f 66  20 6c 61 6e 67 75 61 67  |      of languag|
00003df0  65 73 20 6c 6f 6f 6b 65  64 20 66 6f 72 20 69 73  |es looked for is|
00003e00  20 27 4e 6f 72 77 61 79  2c 47 65 72 6d 61 6e 79  | 'Norway,Germany|
00003e10  2c 46 72 61 6e 63 65 2c  55 4b 27 2e 0a 20 20 20  |,France,UK'..   |
00003e20  20 20 20 0a 20 20 20 20  20 20 49 6e 20 63 61 73  |   .      In cas|
00003e30  65 20 74 68 69 73 20 75  73 65 72 20 68 61 73 20  |e this user has |
00003e40  61 6e 20 61 70 70 6c 69  63 61 74 69 6f 6e 20 63  |an application c|
00003e50  61 6c 6c 65 64 20 21 50  65 74 65 20 73 75 70 70  |alled !Pete supp|
00003e60  6f 72 74 69 6e 67 20 74  68 65 20 0a 20 20 20 20  |orting the .    |
00003e70  20 20 6c 61 6e 67 75 61  67 65 20 27 48 75 6d 6f  |  language 'Humo|
00003e80  72 6f 75 73 27 20 74 68  65 20 6c 69 6e 65 3a 0a  |rous' the line:.|
00003e90  20 20 20 20 20 20 0a 20  20 20 20 20 20 0a 20 20  |      .      .  |
00003ea0  20 20 20 20 2a 53 65 74  20 50 65 74 65 24 4c 61  |    *Set Pete$La|
00003eb0  6e 67 75 61 67 65 20 48  75 6d 6f 72 20 0a 0a 20  |nguage Humor .. |
00003ec0  20 20 20 20 20 0a 20 20  20 20 20 20 69 6e 20 74  |     .      in t|
00003ed0  68 65 20 21 42 6f 6f 74  20 66 69 6c 65 20 6d 61  |he !Boot file ma|
00003ee0  6b 65 73 20 73 75 72 65  20 21 50 65 74 65 20 77  |kes sure !Pete w|
00003ef0  69 6c 6c 20 72 75 6e 20  68 75 6d 6f 72 6f 75 73  |ill run humorous|
00003f00  2e 0a 20 20 20 20 20 20  0a 20 20 20 20 20 20 0a  |..      .      .|
00003f10  20 20 20 20 20 20 41 20  62 72 69 65 66 20 64 65  |      A brief de|
00003f20  73 63 72 69 70 74 69 6f  6e 20 6f 66 20 74 68 65  |scription of the|
00003f30  20 76 61 72 69 6f 75 73  20 72 65 73 6f 75 72 63  | various resourc|
00003f40  65 20 66 69 6c 65 73 20  66 6f 6c 6c 6f 77 73 2e  |e files follows.|
00003f50  20 0a 0a 20 20 20 20 20  20 34 2e 33 2e 31 20 54  | ..      4.3.1 T|
00003f60  65 6d 70 6c 61 74 65 73  20 0a 0a 20 20 20 20 20  |emplates ..     |
00003f70  20 41 6c 6c 20 77 69 6e  64 6f 77 73 20 75 73 65  | All windows use|
00003f80  64 20 62 79 20 70 72 6f  67 72 61 6d 73 20 62 61  |d by programs ba|
00003f90  73 65 64 20 6f 6e 20 74  68 65 20 73 68 65 6c 6c  |sed on the shell|
00003fa0  20 6c 69 62 72 61 72 79  20 77 6f 75 6c 64 20 0a  | library would .|
00003fb0  20 20 20 20 20 20 6e 6f  72 6d 61 6c 6c 79 20 62  |      normally b|
00003fc0  65 20 64 65 66 69 6e 65  64 20 75 73 69 6e 67 20  |e defined using |
00003fd0  61 20 74 65 6d 70 6c 61  74 65 20 65 64 69 74 6f  |a template edito|
00003fe0  72 20 61 73 20 74 68 69  73 20 69 73 20 66 61 72  |r as this is far|
00003ff0  20 0a 20 20 20 20 20 20  73 69 6d 70 6c 65 72 20  | .      simpler |
00004000  74 68 61 6e 20 63 72 65  61 74 69 6e 67 20 74 68  |than creating th|
00004010  65 20 77 69 6e 64 6f 77  73 2f 69 63 6f 6e 73 20  |e windows/icons |
00004020  69 6e 20 74 68 65 20 75  73 65 72 20 70 72 6f 67  |in the user prog|
00004030  72 61 6d 2e 20 54 68 69  73 20 0a 20 20 20 20 20  |ram. This .     |
00004040  20 69 73 20 6e 6f 74 20  61 73 20 69 6e 66 6c 65  | is not as infle|
00004050  78 69 62 6c 65 20 61 73  20 69 74 20 6d 61 79 20  |xible as it may |
00004060  73 6f 75 6e 64 20 61 73  20 77 69 6e 64 6f 77 73  |sound as windows|
00004070  20 61 6e 64 20 69 63 6f  6e 73 20 63 61 6e 20 62  | and icons can b|
00004080  65 20 0a 20 20 20 20 20  20 72 65 73 69 7a 65 64  |e .      resized|
00004090  2c 20 6d 6f 76 65 64 20  6f 72 20 6f 74 68 65 72  |, moved or other|
000040a0  77 69 73 65 20 61 6c 74  65 72 65 64 20 62 79 20  |wise altered by |
000040b0  73 68 65 6c 6c 20 6c 69  62 72 61 72 79 20 72 6f  |shell library ro|
000040c0  75 74 69 6e 65 73 2e 20  0a 0a 20 20 20 20 20 20  |utines. ..      |
000040d0  54 68 65 20 74 65 6d 70  6c 61 74 65 20 66 69 6c  |The template fil|
000040e0  65 20 6d 75 73 74 20 62  65 20 63 61 6c 6c 65 64  |e must be called|
000040f0  20 27 54 65 6d 70 6c 61  74 65 73 27 20 61 6e 64  | 'Templates' and|
00004100  20 62 65 20 65 69 74 68  65 72 20 69 6e 20 74 68  | be either in th|
00004110  65 20 0a 20 20 20 20 20  20 61 70 70 6c 69 63 61  |e .      applica|
00004120  74 69 6f 6e 20 64 69 72  65 63 74 6f 72 79 20 6f  |tion directory o|
00004130  72 20 69 6e 20 74 68 65  20 61 70 70 72 6f 70 72  |r in the appropr|
00004140  69 61 74 65 20 6c 61 6e  67 75 61 67 65 20 64 69  |iate language di|
00004150  72 65 63 74 6f 72 79 20  69 66 20 0a 20 20 20 20  |rectory if .    |
00004160  20 20 52 65 73 46 69 6e  64 20 69 73 20 69 6e 20  |  ResFind is in |
00004170  75 73 65 2e 20 4e 6f 74  65 20 74 68 61 74 20 69  |use. Note that i|
00004180  66 20 79 6f 75 20 61 72  65 20 75 73 69 6e 67 20  |f you are using |
00004190  64 69 66 66 65 72 65 6e  74 20 74 65 6d 70 6c 61  |different templa|
000041a0  74 65 73 20 0a 20 20 20  20 20 20 66 6f 72 20 64  |tes .      for d|
000041b0  69 66 66 65 72 65 6e 74  20 6c 61 6e 67 75 61 67  |ifferent languag|
000041c0  65 73 20 79 6f 75 20 6d  75 73 74 20 75 73 65 20  |es you must use |
000041d0  52 65 73 46 69 6e 64 2e  20 49 6e 20 6d 6f 73 74  |ResFind. In most|
000041e0  20 63 61 73 65 73 2c 20  0a 20 20 20 20 20 20 68  | cases, .      h|
000041f0  6f 77 65 76 65 72 2c 20  69 74 20 69 73 20 73 75  |owever, it is su|
00004200  66 66 69 63 69 65 6e 74  20 74 6f 20 68 61 76 65  |fficient to have|
00004210  20 6f 6e 6c 79 20 6f 6e  65 20 74 65 6d 70 6c 61  | only one templa|
00004220  74 65 20 66 69 6c 65 20  69 6e 20 74 68 65 20 0a  |te file in the .|
00004230  20 20 20 20 20 20 61 70  70 6c 69 63 61 74 69 6f  |      applicatio|
00004240  6e 20 64 69 72 65 63 74  6f 72 79 20 61 6e 64 20  |n directory and |
00004250  74 6f 20 69 6e 73 65 72  74 20 74 68 65 20 74 65  |to insert the te|
00004260  78 74 20 74 61 6b 65 6e  20 66 72 6f 6d 20 74 68  |xt taken from th|
00004270  65 20 0a 20 20 20 20 20  20 6d 65 73 73 61 67 65  |e .      message|
00004280  20 66 69 6c 65 20 69 6e  20 74 68 65 20 6c 61 6e  | file in the lan|
00004290  67 75 61 67 65 20 6f 66  20 63 68 6f 69 63 65 20  |guage of choice |
000042a0  69 6e 74 6f 20 74 68 65  20 69 63 6f 6e 73 2e 20  |into the icons. |
000042b0  0a 0a 20 20 20 20 20 20  41 20 63 61 6c 6c 20 74  |..      A call t|
000042c0  6f 20 50 52 4f 43 73 68  65 6c 6c 5f 52 65 73 6f  |o PROCshell_Reso|
000042d0  75 72 63 65 73 49 6e 69  74 20 77 69 6c 6c 20 66  |urcesInit will f|
000042e0  69 6e 64 20 74 68 65 20  74 65 6d 70 6c 61 74 65  |ind the template|
000042f0  20 66 69 6c 65 20 61 6e  64 20 0a 20 20 20 20 20  | file and .     |
00004300  20 6c 6f 61 64 20 61 6c  6c 20 74 68 65 20 74 65  | load all the te|
00004310  6d 70 6c 61 74 65 73 20  69 74 20 63 6f 6e 74 61  |mplates it conta|
00004320  69 6e 73 20 61 6c 6c 6f  63 61 74 69 6e 67 20 6d  |ins allocating m|
00004330  65 6d 6f 72 79 20 61 73  20 72 65 71 75 69 72 65  |emory as require|
00004340  64 2e 20 0a 0a 20 20 20  20 20 20 34 2e 33 2e 32  |d. ..      4.3.2|
00004350  20 53 70 72 69 74 65 73  20 0a 0a 20 20 20 20 20  | Sprites ..     |
00004360  20 54 68 65 20 73 70 72  69 74 65 20 66 69 6c 65  | The sprite file|
00004370  20 6d 75 73 74 20 62 65  20 63 61 6c 6c 65 64 20  | must be called |
00004380  27 53 70 72 69 74 65 73  27 20 61 6e 64 20 62 65  |'Sprites' and be|
00004390  20 65 69 74 68 65 72 20  69 6e 20 74 68 65 20 0a  | either in the .|
000043a0  20 20 20 20 20 20 61 70  70 6c 69 63 61 74 69 6f  |      applicatio|
000043b0  6e 20 64 69 72 65 63 74  6f 72 79 20 6f 72 20 69  |n directory or i|
000043c0  6e 20 74 68 65 20 61 70  70 72 6f 70 72 69 61 74  |n the appropriat|
000043d0  65 20 6c 61 6e 67 75 61  67 65 20 64 69 72 65 63  |e language direc|
000043e0  74 6f 72 79 20 69 66 20  0a 20 20 20 20 20 20 52  |tory if .      R|
000043f0  65 73 46 69 6e 64 20 69  73 20 69 6e 20 75 73 65  |esFind is in use|
00004400  2e 20 41 20 63 61 6c 6c  20 74 6f 20 50 52 4f 43  |. A call to PROC|
00004410  73 68 65 6c 6c 5f 52 65  73 6f 75 72 63 65 73 49  |shell_ResourcesI|
00004420  6e 69 74 20 77 69 6c 6c  20 66 69 6e 64 20 0a 20  |nit will find . |
00004430  20 20 20 20 20 74 68 65  20 66 69 6c 65 20 69 66  |     the file if|
00004440  20 69 74 20 65 78 69 73  74 73 20 61 6e 64 20 6c  | it exists and l|
00004450  6f 61 64 20 61 6c 6c 20  74 68 65 20 73 70 72 69  |oad all the spri|
00004460  74 65 73 20 69 74 20 63  6f 6e 74 61 69 6e 73 20  |tes it contains |
00004470  0a 20 20 20 20 20 20 61  6c 6c 6f 63 61 74 69 6e  |.      allocatin|
00004480  67 20 6d 65 6d 6f 72 79  20 61 73 20 72 65 71 75  |g memory as requ|
00004490  69 72 65 64 2e 20 54 68  65 20 73 70 72 69 74 65  |ired. The sprite|
000044a0  20 61 72 65 61 20 70 6f  69 6e 74 65 72 20 66 6f  | area pointer fo|
000044b0  72 20 65 61 63 68 20 0a  20 20 20 20 20 20 6c 6f  |r each .      lo|
000044c0  61 64 65 64 20 74 65 6d  70 6c 61 74 65 20 77 69  |aded template wi|
000044d0  6c 6c 20 62 65 20 73 65  74 20 74 6f 20 70 6f 69  |ll be set to poi|
000044e0  6e 74 20 74 6f 20 74 68  65 20 75 73 65 72 20 73  |nt to the user s|
000044f0  70 72 69 74 65 20 61 72  65 61 2c 20 0a 20 20 20  |prite area, .   |
00004500  20 20 20 77 68 69 63 68  20 70 75 74 20 73 69 6d  |   which put sim|
00004510  70 6c 79 20 74 68 69 73  20 6d 65 61 6e 73 20 74  |ply this means t|
00004520  68 61 74 20 61 6c 6c 20  73 70 72 69 74 65 73 20  |hat all sprites |
00004530  64 69 73 70 6c 61 79 65  64 20 69 6e 20 77 69 6e  |displayed in win|
00004540  64 6f 77 73 20 0a 20 20  20 20 20 20 6d 75 73 74  |dows .      must|
00004550  20 62 65 20 70 72 65 73  65 6e 74 20 69 6e 20 74  | be present in t|
00004560  68 65 20 27 53 70 72 69  74 65 73 27 20 66 69 6c  |he 'Sprites' fil|
00004570  65 2e 20 54 68 69 73 20  6d 61 79 2c 20 68 6f 77  |e. This may, how|
00004580  65 76 65 72 2c 20 62 65  20 0a 20 20 20 20 20 20  |ever, be .      |
00004590  63 68 61 6e 67 65 64 20  61 66 74 65 72 20 6c 6f  |changed after lo|
000045a0  61 64 69 6e 67 2e 20 0a  0a 20 20 20 20 20 20 34  |ading. ..      4|
000045b0  2e 33 2e 33 20 4d 65 73  73 61 67 65 20 46 69 6c  |.3.3 Message Fil|
000045c0  65 73 20 0a 0a 20 20 20  20 20 20 54 68 65 20 6d  |es ..      The m|
000045d0  65 73 73 61 67 65 20 66  69 6c 65 20 69 73 20 61  |essage file is a|
000045e0  20 6e 6f 72 6d 61 6c 20  41 53 43 49 49 20 66 69  | normal ASCII fi|
000045f0  6c 65 20 77 72 69 74 74  65 6e 20 75 73 69 6e 67  |le written using|
00004600  20 21 45 64 69 74 20 6f  72 20 0a 20 20 20 20 20  | !Edit or .     |
00004610  20 73 69 6d 69 6c 61 72  20 74 68 61 74 20 63 6f  | similar that co|
00004620  6e 74 61 69 6e 73 20 6d  65 73 73 61 67 65 20 73  |ntains message s|
00004630  74 72 69 6e 67 73 20 70  72 65 63 65 65 64 65 64  |trings preceeded|
00004640  20 62 79 20 61 20 6d 65  73 73 61 67 65 20 74 61  | by a message ta|
00004650  67 2e 20 0a 20 20 20 20  20 20 54 68 65 20 61 70  |g. .      The ap|
00004660  70 6c 69 63 61 74 69 6f  6e 20 70 72 6f 67 72 61  |plication progra|
00004670  6d 20 73 68 6f 75 6c 64  20 66 69 6e 64 20 74 68  |m should find th|
00004680  65 20 6d 65 73 73 61 67  65 73 20 61 73 20 72 65  |e messages as re|
00004690  71 75 69 72 65 64 20 62  79 20 0a 20 20 20 20 20  |quired by .     |
000046a0  20 74 61 67 20 6e 61 6d  65 20 77 68 69 63 68 20  | tag name which |
000046b0  61 6c 6c 6f 77 73 20 74  68 65 20 70 72 6f 64 75  |allows the produ|
000046c0  63 74 69 6f 6e 20 6f 66  20 66 6f 72 65 69 67 6e  |ction of foreign|
000046d0  20 6c 61 6e 67 75 61 67  65 20 76 65 72 73 69 6f  | language versio|
000046e0  6e 73 20 0a 20 20 20 20  20 20 28 70 72 6f 62 61  |ns .      (proba|
000046f0  62 6c 79 20 62 79 20 73  6f 6d 65 6f 6e 65 20 65  |bly by someone e|
00004700  6c 73 65 21 29 2e 20 49  74 20 69 73 20 61 6c 73  |lse!). It is als|
00004710  6f 20 66 61 72 20 65 61  73 69 65 72 20 74 6f 20  |o far easier to |
00004720  65 64 69 74 20 74 68 65  20 0a 20 20 20 20 20 20  |edit the .      |
00004730  6d 65 73 73 61 67 65 20  66 69 6c 65 20 74 6f 20  |message file to |
00004740  63 68 61 6e 67 65 20 74  65 78 74 20 64 69 73 70  |change text disp|
00004750  6c 61 79 65 64 20 62 79  20 74 68 65 20 61 70 70  |layed by the app|
00004760  6c 69 63 61 74 69 6f 6e  20 74 68 61 6e 20 0a 0c  |lication than ..|
00004770  0a 20 20 20 20 20 20 75  73 69 6e 67 20 21 46 6f  |.      using !Fo|
00004780  72 6d 45 64 20 6f 72 20  73 69 6d 69 6c 61 72 2e  |rmEd or similar.|
00004790  20 0a 0a 20 20 20 20 20  20 54 68 65 20 21 52 75  | ..      The !Ru|
000047a0  6e 20 66 69 6c 65 20 6f  66 20 74 68 65 20 75 73  |n file of the us|
000047b0  65 72 20 61 70 70 6c 69  63 61 74 69 6f 6e 20 61  |er application a|
000047c0  75 74 6f 6d 61 74 69 63  61 6c 6c 79 20 6c 6f 61  |utomatically loa|
000047d0  64 73 20 61 20 0a 20 20  20 20 20 20 73 75 70 70  |ds a .      supp|
000047e0  6f 72 74 20 6d 6f 64 75  6c 65 20 27 4d 73 67 54  |ort module 'MsgT|
000047f0  72 61 6e 73 27 20 69 66  20 72 65 71 75 69 72 65  |rans' if require|
00004800  64 20 28 69 74 20 69 73  20 62 75 69 6c 74 20 69  |d (it is built i|
00004810  6e 20 74 6f 20 52 49 53  43 20 4f 53 20 0a 20 20  |n to RISC OS .  |
00004820  20 20 20 20 33 29 20 74  6f 20 70 72 6f 76 69 64  |    3) to provid|
00004830  65 20 74 68 69 73 20 66  61 63 69 6c 69 74 79 2e  |e this facility.|
00004840  20 0a 0a 20 20 20 20 20  20 54 68 65 20 6d 65 73  | ..      The mes|
00004850  73 61 67 65 20 66 69 6c  65 20 6d 75 73 74 20 62  |sage file must b|
00004860  65 20 63 61 6c 6c 65 64  20 27 4d 65 73 73 61 67  |e called 'Messag|
00004870  65 73 27 20 61 6e 64 20  62 65 20 69 6e 20 74 68  |es' and be in th|
00004880  65 20 0a 20 20 20 20 20  20 61 70 70 6c 69 63 61  |e .      applica|
00004890  74 69 6f 6e 20 64 69 72  65 63 74 6f 72 79 20 6f  |tion directory o|
000048a0  72 20 69 6e 20 74 68 65  20 61 70 70 72 6f 70 72  |r in the appropr|
000048b0  69 61 74 65 20 6c 61 6e  67 75 61 67 65 20 64 69  |iate language di|
000048c0  72 65 63 74 6f 72 79 20  69 66 20 0a 20 20 20 20  |rectory if .    |
000048d0  20 20 52 65 73 46 69 6e  64 20 69 73 20 69 6e 20  |  ResFind is in |
000048e0  75 73 65 2e 20 41 20 63  61 6c 6c 20 74 6f 20 50  |use. A call to P|
000048f0  52 4f 43 73 68 65 6c 6c  5f 52 65 73 6f 75 72 63  |ROCshell_Resourc|
00004900  65 73 49 6e 69 74 20 77  69 6c 6c 20 66 69 6e 64  |esInit will find|
00004910  20 0a 20 20 20 20 20 20  74 68 65 20 66 69 6c 65  | .      the file|
00004920  20 69 66 20 69 74 20 65  78 69 73 74 73 20 61 6e  | if it exists an|
00004930  64 20 6c 6f 61 64 20 61  6c 6c 20 74 68 65 20 6d  |d load all the m|
00004940  65 73 73 61 67 65 73 20  69 74 20 63 6f 6e 74 61  |essages it conta|
00004950  69 6e 73 20 0a 20 20 20  20 20 20 61 6c 6c 6f 63  |ins .      alloc|
00004960  61 74 69 6e 67 20 6d 65  6d 6f 72 79 20 61 73 20  |ating memory as |
00004970  72 65 71 75 69 72 65 64  2e 20 0a 0a 20 20 20 20  |required. ..    |
00004980  20 20 54 68 65 20 6d 65  73 73 61 67 65 73 20 69  |  The messages i|
00004990  73 73 75 65 64 20 62 79  20 74 68 65 20 6c 69 62  |ssued by the lib|
000049a0  72 61 72 79 20 63 6f 64  65 20 61 72 65 20 73 74  |rary code are st|
000049b0  6f 72 65 64 20 69 6e 20  61 20 66 69 6c 65 20 0a  |ored in a file .|
000049c0  20 20 20 20 20 20 63 61  6c 6c 65 64 20 27 53 68  |      called 'Sh|
000049d0  65 6c 6c 4d 73 67 73 27  20 69 6e 73 69 64 65 20  |ellMsgs' inside |
000049e0  74 68 65 20 21 53 68 65  6c 6c 53 79 73 2e 52 65  |the !ShellSys.Re|
000049f0  73 6f 75 72 63 65 73 2e  55 4b 20 64 69 72 65 63  |sources.UK direc|
00004a00  74 6f 72 79 2e 20 0a 20  20 20 20 20 20 49 66 20  |tory. .      If |
00004a10  74 68 69 73 20 66 69 6c  65 20 69 73 20 70 72 65  |this file is pre|
00004a20  73 65 6e 74 20 69 6e 20  74 68 65 20 75 73 65 72  |sent in the user|
00004a30  20 61 70 70 6c 69 63 61  74 69 6f 6e 20 64 69 72  | application dir|
00004a40  65 63 74 6f 72 79 20 28  6f 72 20 74 68 65 20 0a  |ectory (or the .|
00004a50  20 20 20 20 20 20 61 70  70 6c 69 63 61 74 69 6f  |      applicatio|
00004a60  6e 20 52 65 73 6f 75 72  63 65 73 20 64 69 72 65  |n Resources dire|
00004a70  63 74 6f 72 79 29 20 74  68 65 6e 20 69 74 20 69  |ctory) then it i|
00004a80  73 20 6c 6f 61 64 65 64  20 66 72 6f 6d 20 74 68  |s loaded from th|
00004a90  65 72 65 2c 20 69 66 20  0a 20 20 20 20 20 20 6e  |ere, if .      n|
00004aa0  6f 74 20 69 74 20 69 73  20 6c 6f 61 64 65 64 20  |ot it is loaded |
00004ab0  66 72 6f 6d 20 21 53 68  65 6c 6c 53 79 73 2e 20  |from !ShellSys. |
00004ac0  54 68 69 73 20 69 73 20  74 6f 20 61 69 64 20 74  |This is to aid t|
00004ad0  68 65 20 63 6f 6e 73 74  72 75 63 74 69 6f 6e 20  |he construction |
00004ae0  0a 20 20 20 20 20 20 6f  66 20 73 74 61 6e 64 20  |.      of stand |
00004af0  61 6c 6f 6e 65 20 61 70  70 6c 69 63 61 74 69 6f  |alone applicatio|
00004b00  6e 73 2e 20 0a 0a 20 20  20 20 20 20 34 2e 33 2e  |ns. ..      4.3.|
00004b10  34 20 4d 6f 64 75 6c 65  73 20 0a 0a 20 20 20 20  |4 Modules ..    |
00004b20  20 20 56 61 72 69 6f 75  73 20 50 75 62 6c 69 63  |  Various Public|
00004b30  20 44 6f 6d 61 69 6e 20  6d 6f 64 75 6c 65 73 20  | Domain modules |
00004b40  61 72 65 20 75 73 65 64  20 62 79 20 74 68 65 20  |are used by the |
00004b50  45 76 6e 74 53 68 65 6c  6c 20 6c 69 62 72 61 72  |EvntShell librar|
00004b60  79 2c 20 0a 20 20 20 20  20 20 74 68 65 73 65 20  |y, .      these |
00004b70  61 72 65 20 73 74 6f 72  65 64 20 69 6e 20 74 68  |are stored in th|
00004b80  65 20 21 53 68 65 6c 6c  53 79 73 20 61 70 70 6c  |e !ShellSys appl|
00004b90  69 63 61 74 69 6f 6e 20  61 6e 64 20 6c 6f 61 64  |ication and load|
00004ba0  65 64 20 61 73 20 0a 20  20 20 20 20 20 72 65 71  |ed as .      req|
00004bb0  75 69 72 65 64 2e 20 41  20 66 75 6c 6c 20 6c 69  |uired. A full li|
00004bc0  73 74 20 69 73 3a 20 0a  0a 20 20 20 20 20 20 0a  |st is: ..      .|
00004bd0  20 20 20 20 20 20 49 6e  74 65 72 66 61 63 65 20  |      Interface |
00004be0  20 20 2d 20 33 44 20 69  63 6f 6e 20 65 66 66 65  |  - 3D icon effe|
00004bf0  63 74 73 2c 20 63 68 61  6e 67 69 6e 67 20 70 6f  |cts, changing po|
00004c00  69 6e 74 65 72 20 73 68  61 70 65 73 20 65 74 63  |inter shapes etc|
00004c10  0a 20 20 20 20 20 20 4d  65 6e 75 55 74 69 6c 73  |.      MenuUtils|
00004c20  20 20 20 2d 20 6d 65 6e  75 20 68 61 6e 64 6c 69  |   - menu handli|
00004c30  6e 67 0a 20 20 20 20 20  20 46 6f 6e 74 4d 65 6e  |ng.      FontMen|
00004c40  75 20 20 20 20 2d 20 66  6f 6e 74 20 6d 65 6e 75  |u    - font menu|
00004c50  20 68 61 6e 64 6c 69 6e  67 0a 20 20 20 20 20 20  | handling.      |
00004c60  4d 73 67 54 72 61 6e 73  20 20 20 20 2d 20 6d 65  |MsgTrans    - me|
00004c70  73 73 61 67 65 20 66 69  6c 65 73 20 28 73 75 70  |ssage files (sup|
00004c80  70 6c 69 65 64 20 66 6f  72 20 52 69 73 63 2d 4f  |plied for Risc-O|
00004c90  53 20 32 0a 20 20 20 20  20 20 20 20 20 20 20 20  |S 2.            |
00004ca0  20 20 20 20 20 20 20 20  63 6f 6d 70 61 74 61 62  |        compatab|
00004cb0  69 6c 69 74 79 29 0a 20  20 20 20 20 20 46 6f 6e  |ility).      Fon|
00004cc0  74 57 69 6e 64 6f 77 20  20 2d 20 68 61 6e 64 6c  |tWindow  - handl|
00004cd0  69 6e 67 20 6f 75 74 6c  69 6e 65 20 66 6f 6e 74  |ing outline font|
00004ce0  73 20 61 63 72 6f 73 73  20 6d 6f 64 65 20 63 68  |s across mode ch|
00004cf0  61 6e 67 65 73 20 28 6e  6f 74 0a 20 20 20 20 20  |anges (not.     |
00004d00  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 75  |               u|
00004d10  73 65 64 20 61 74 20 74  68 65 20 6d 6f 6d 65 6e  |sed at the momen|
00004d20  74 29 0a 20 20 20 20 20  20 0a 20 20 20 20 20 20  |t).      .      |
00004d30  0a 20 20 20 20 20 20 4e  6f 74 65 20 74 68 61 74  |.      Note that|
00004d40  20 69 6e 20 67 65 6e 65  72 61 6c 20 6e 6f 20 64  | in general no d|
00004d50  6f 63 75 6d 65 6e 74 61  74 69 6f 6e 20 69 73 20  |ocumentation is |
00004d60  73 75 70 70 6c 69 65 64  20 66 6f 72 20 74 68 65  |supplied for the|
00004d70  73 65 20 0a 20 20 20 20  20 20 6d 6f 64 75 6c 65  |se .      module|
00004d80  73 2c 20 69 74 20 69 73  20 61 6c 6c 20 61 76 61  |s, it is all ava|
00004d90  69 6c 61 62 6c 65 20 65  6c 73 65 77 68 65 72 65  |ilable elsewhere|
00004da0  20 28 6f 72 20 77 68 79  20 6e 6f 74 20 77 72 69  | (or why not wri|
00004db0  74 65 20 74 6f 20 74 68  65 20 0a 20 20 20 20 20  |te to the .     |
00004dc0  20 61 75 74 68 6f 72 3f  29 20 0a 0a 20 20 20 20  | author?) ..    |
00004dd0  20 20 54 68 65 20 45 76  6e 74 53 68 65 6c 6c 20  |  The EvntShell |
00004de0  6c 69 62 72 61 72 79 20  6d 61 6b 65 73 20 74 68  |library makes th|
00004df0  65 20 61 73 73 75 6d 70  74 69 6f 6e 20 74 68 61  |e assumption tha|
00004e00  74 20 74 68 65 20 69 6e  74 65 72 66 61 63 65 20  |t the interface |
00004e10  0a 20 20 20 20 20 20 6d  6f 64 75 6c 65 20 77 69  |.      module wi|
00004e20  6c 6c 20 61 6c 77 61 79  73 20 62 65 20 75 73 65  |ll always be use|
00004e30  64 2e 20 54 68 65 20 72  65 61 73 6f 6e 20 69 73  |d. The reason is|
00004e40  20 74 68 61 74 20 66 69  72 73 74 6c 79 20 74 68  | that firstly th|
00004e50  61 74 20 69 74 20 69 73  20 0a 20 20 20 20 20 20  |at it is .      |
00004e60  68 69 67 68 6c 79 20 6c  69 6b 65 6c 79 20 74 68  |highly likely th|
00004e70  61 74 20 73 6f 6d 65 20  6f 74 68 65 72 20 50 44  |at some other PD|
00004e80  20 70 72 6f 67 72 61 6d  20 77 69 6c 6c 20 68 61  | program will ha|
00004e90  76 65 20 61 6c 72 65 61  64 79 20 6c 6f 61 64 65  |ve already loade|
00004ea0  64 20 0a 20 20 20 20 20  20 69 74 2c 20 61 6e 64  |d .      it, and|
00004eb0  20 73 65 63 6f 6e 64 6c  79 20 74 68 61 74 20 74  | secondly that t|
00004ec0  68 65 20 66 61 63 69 6c  69 74 69 65 73 20 69 74  |he facilities it|
00004ed0  20 70 72 6f 76 69 64 65  73 20 66 6f 72 20 63 68  | provides for ch|
00004ee0  61 6e 67 69 6e 67 20 0a  20 20 20 20 20 20 70 6f  |anging .      po|
00004ef0  69 6e 74 65 72 20 73 68  61 70 65 73 20 6f 76 65  |inter shapes ove|
00004f00  72 20 63 65 72 74 61 69  6e 20 69 63 6f 6e 73 20  |r certain icons |
00004f10  69 73 20 65 78 74 72 65  6d 65 6c 79 20 75 73 65  |is extremely use|
00004f20  66 75 6c 20 61 73 20 61  20 70 72 6f 6d 70 74 20  |ful as a prompt |
00004f30  0a 20 20 20 20 20 20 66  6f 72 20 77 68 61 74 20  |.      for what |
00004f40  74 68 65 20 69 63 6f 6e  20 69 73 20 66 6f 72 2e  |the icon is for.|
00004f50  20 49 6e 64 65 65 64 20  52 49 53 43 2d 4f 53 20  | Indeed RISC-OS |
00004f60  33 20 68 61 73 20 74 68  69 73 20 62 75 69 6c 74  |3 has this built|
00004f70  20 69 6e 20 73 6f 20 0a  20 20 20 20 20 20 65 76  | in so .      ev|
00004f80  65 6e 20 41 63 6f 72 6e  20 61 72 65 20 73 75 70  |en Acorn are sup|
00004f90  70 6f 72 74 69 6e 67 20  33 44 20 62 75 74 74 6f  |porting 3D butto|
00004fa0  6e 73 20 65 74 63 2e 2e  2e 2e 20 0a 0a 20 20 20  |ns etc.... ..   |
00004fb0  20 20 20 54 68 65 20 6d  6f 64 75 6c 65 20 69 73  |   The module is|
00004fc0  20 6c 6f 61 64 65 64 20  62 79 20 74 68 65 20 21  | loaded by the !|
00004fd0  52 75 6e 20 66 69 6c 65  20 69 66 20 6e 6f 74 20  |Run file if not |
00004fe0  61 6c 72 65 61 64 79 20  6c 6f 61 64 65 64 2e 20  |already loaded. |
00004ff0  0a 20 20 20 20 20 20 55  73 69 6e 67 20 61 20 74  |.      Using a t|
00005000  65 6d 70 6c 61 74 65 20  65 64 69 74 6f 72 20 74  |emplate editor t|
00005010  68 61 74 20 69 73 20 27  49 6e 74 65 72 66 61 63  |hat is 'Interfac|
00005020  65 20 41 77 61 72 65 27  20 6d 61 6b 65 73 20 0a  |e Aware' makes .|
00005030  20 20 20 20 20 20 69 6e  63 6f 72 70 6f 72 61 74  |      incorporat|
00005040  69 6e 67 20 74 68 65 73  65 20 65 66 66 65 63 74  |ing these effect|
00005050  73 20 69 6e 74 6f 20 61  20 75 73 65 72 20 70 72  |s into a user pr|
00005060  6f 67 72 61 6d 20 65 61  73 79 20 61 73 20 6f 6e  |ogram easy as on|
00005070  63 65 20 74 68 65 20 0a  20 20 20 20 20 20 69 63  |ce the .      ic|
00005080  6f 6e 73 20 68 61 76 65  20 62 65 65 6e 20 64 65  |ons have been de|
00005090  73 69 67 6e 65 64 20 61  6e 64 20 70 6c 61 63 65  |signed and place|
000050a0  64 20 74 68 65 20 73 68  65 6c 6c 20 6c 69 62 72  |d the shell libr|
000050b0  61 72 79 20 68 61 6e 64  6c 65 73 20 61 6c 6c 20  |ary handles all |
000050c0  0a 20 20 20 20 20 20 74  68 65 20 72 65 64 72 61  |.      the redra|
000050d0  77 69 6e 67 20 61 75 74  6f 6d 61 74 69 63 61 6c  |wing automatical|
000050e0  6c 79 2e 20 0a 0a 20 20  20 20 20 20 4e 6f 74 65  |ly. ..      Note|
000050f0  20 74 68 61 74 20 77 69  6e 64 6f 77 73 20 63 6f  | that windows co|
00005100  6e 74 61 69 6e 69 6e 67  20 33 64 20 69 6e 74 65  |ntaining 3d inte|
00005110  72 66 61 63 65 20 69 63  6f 6e 73 20 6d 75 73 74  |rface icons must|
00005120  20 68 61 76 65 20 74 68  65 20 0a 20 20 20 20 20  | have the .     |
00005130  20 27 41 75 74 6f 20 52  65 64 72 61 77 27 20 66  | 'Auto Redraw' f|
00005140  6c 61 67 20 6f 66 66 2c  20 62 75 74 20 69 66 20  |lag off, but if |
00005150  74 68 65 20 74 65 6d 70  6c 61 74 65 20 65 64 69  |the template edi|
00005160  74 6f 72 20 64 69 73 70  6c 61 79 73 20 0a 20 20  |tor displays .  |
00005170  20 20 20 20 69 6e 74 65  72 66 61 63 65 20 69 63  |    interface ic|
00005180  6f 6e 73 20 74 68 65 6e  20 74 68 65 20 75 73 65  |ons then the use|
00005190  72 20 61 70 70 6c 69 63  61 74 69 6f 6e 20 77 69  |r application wi|
000051a0  6c 6c 20 61 73 20 77 65  6c 6c 2e 20 0a 0a 20 20  |ll as well. ..  |
000051b0  20 20 20 20 34 2e 34 20  4d 65 6e 75 73 20 0a 0c  |    4.4 Menus ..|
000051c0  0a 20 20 20 20 20 20 4d  65 6e 75 73 20 61 72 65  |.      Menus are|
000051d0  20 6e 6f 77 20 68 61 6e  64 6c 65 64 20 62 79 20  | now handled by |
000051e0  4d 65 6e 75 55 74 69 6c  73 20 77 68 69 63 68 20  |MenuUtils which |
000051f0  77 61 73 20 77 72 69 74  74 65 6e 20 62 79 20 41  |was written by A|
00005200  6c 65 78 20 0a 20 20 20  20 20 20 50 65 74 72 6f  |lex .      Petro|
00005210  76 2e 20 56 65 72 73 69  6f 6e 73 20 6f 66 20 74  |v. Versions of t|
00005220  68 65 20 6c 69 62 72 61  72 79 20 70 72 69 6f 72  |he library prior|
00005230  20 74 6f 20 31 2e 32 30  20 75 73 65 64 20 61 20  | to 1.20 used a |
00005240  6d 65 6e 75 20 65 64 69  74 6f 72 20 0a 20 20 20  |menu editor .   |
00005250  20 20 20 74 6f 20 63 72  65 61 74 65 20 61 20 73  |   to create a s|
00005260  65 70 65 72 61 74 65 20  6d 65 6e 75 20 74 65 6d  |eperate menu tem|
00005270  70 6c 61 74 65 20 66 69  6c 65 2c 20 62 75 74 20  |plate file, but |
00005280  49 20 68 61 76 65 20 6e  6f 77 20 61 62 61 6e 64  |I have now aband|
00005290  6f 6e 65 64 20 0a 20 20  20 20 20 20 74 68 69 73  |oned .      this|
000052a0  20 61 73 20 69 74 20 77  61 73 20 72 61 74 68 65  | as it was rathe|
000052b0  72 20 69 6e 66 6c 65 78  69 62 6c 65 2e 20 0a 0a  |r inflexible. ..|
000052c0  20 20 20 20 20 20 54 68  65 20 75 73 65 20 6f 66  |      The use of|
000052d0  20 4d 65 6e 75 55 74 69  6c 73 20 68 61 73 20 65  | MenuUtils has e|
000052e0  6e 61 62 6c 65 64 20 6d  65 20 74 6f 20 72 65 6d  |nabled me to rem|
000052f0  6f 76 65 20 6c 61 72 67  65 20 63 68 75 6e 6b 73  |ove large chunks|
00005300  20 6f 66 20 0a 20 20 20  20 20 20 73 6c 6f 77 20  | of .      slow |
00005310  42 41 53 49 43 20 63 6f  64 65 20 61 6e 64 20 74  |BASIC code and t|
00005320  6f 20 70 72 6f 76 69 64  65 20 6d 61 6e 79 20 6d  |o provide many m|
00005330  6f 72 65 20 66 65 61 74  75 72 65 73 2c 20 73 75  |ore features, su|
00005340  63 68 20 61 73 20 0a 20  20 20 20 20 20 63 72 65  |ch as .      cre|
00005350  61 74 69 6f 6e 20 61 6e  64 20 6d 6f 64 69 66 69  |ation and modifi|
00005360  63 61 74 69 6f 6e 20 6f  66 20 6d 65 6e 75 73 20  |cation of menus |
00005370  75 6e 64 65 72 20 70 72  6f 67 72 61 6d 20 63 6f  |under program co|
00005380  6e 74 72 6f 6c 2e 20 54  68 65 20 0a 20 20 20 20  |ntrol. The .    |
00005390  20 20 6d 65 6e 75 73 20  74 68 65 6d 73 65 6c 76  |  menus themselv|
000053a0  65 73 20 61 70 70 65 61  72 20 6d 6f 72 65 20 71  |es appear more q|
000053b0  75 69 63 6b 6c 79 20 61  73 20 77 65 6c 6c 20 28  |uickly as well (|
000053c0  4f 4b 20 43 79 3f 29 2e  20 0a 0a 20 20 20 20 20  |OK Cy?). ..     |
000053d0  20 54 68 65 20 73 75 70  70 6f 72 74 20 6d 6f 64  | The support mod|
000053e0  75 6c 65 20 69 73 20 61  75 74 6f 6d 61 74 69 63  |ule is automatic|
000053f0  61 6c 6c 79 20 6c 6f 61  64 65 64 20 62 79 20 74  |ally loaded by t|
00005400  68 65 20 21 52 75 6e 20  66 69 6c 65 20 74 6f 20  |he !Run file to |
00005410  0a 20 20 20 20 20 20 70  72 6f 76 69 64 65 20 74  |.      provide t|
00005420  68 65 20 6e 65 77 20 6d  65 6e 75 20 68 61 6e 64  |he new menu hand|
00005430  6c 69 6e 67 20 53 57 49  73 20 75 73 65 64 20 62  |ling SWIs used b|
00005440  79 20 74 68 65 20 45 76  6e 74 53 68 65 6c 6c 20  |y the EvntShell |
00005450  6c 69 62 72 61 72 79 2e  20 0a 0a 20 20 20 20 20  |library. ..     |
00005460  20 34 2e 35 20 53 61 76  69 6e 67 20 46 69 6c 65  | 4.5 Saving File|
00005470  73 20 0a 0a 20 20 20 20  20 20 54 68 69 73 20 69  |s ..      This i|
00005480  73 20 61 63 68 69 65 76  65 64 20 62 79 20 61 20  |s achieved by a |
00005490  63 61 6c 6c 20 74 6f 20  50 52 4f 43 73 68 65 6c  |call to PROCshel|
000054a0  6c 5f 41 74 74 61 63 68  44 61 74 61 53 61 76 65  |l_AttachDataSave|
000054b0  20 77 68 69 63 68 20 0a  20 20 20 20 20 20 73 70  | which .      sp|
000054c0  65 63 69 66 69 65 73 20  77 68 69 63 68 20 66 69  |ecifies which fi|
000054d0  6c 65 74 79 70 65 20 74  68 65 20 73 61 76 65 64  |letype the saved|
000054e0  20 66 69 6c 65 20 73 68  6f 75 6c 64 20 62 65 20  | file should be |
000054f0  67 69 76 65 6e 2c 20 74  68 65 20 6e 61 6d 65 20  |given, the name |
00005500  0a 20 20 20 20 20 20 6f  66 20 61 20 66 75 6e 63  |.      of a func|
00005510  74 69 6f 6e 20 77 68 69  63 68 20 77 69 6c 6c 20  |tion which will |
00005520  61 63 74 75 61 6c 6c 79  20 70 65 72 66 6f 72 6d  |actually perform|
00005530  20 74 68 65 20 73 61 76  65 20 61 6e 64 20 74 68  | the save and th|
00005540  65 20 0a 20 20 20 20 20  20 77 69 6e 64 6f 77 2f  |e .      window/|
00005550  69 63 6f 6e 20 68 61 6e  64 6c 65 73 20 74 68 65  |icon handles the|
00005560  20 64 72 61 67 20 73 61  76 65 20 65 76 65 6e 74  | drag save event|
00005570  20 69 73 20 61 73 73 6f  63 69 61 74 65 64 20 77  | is associated w|
00005580  69 74 68 2e 20 49 74 20  69 73 20 0a 20 20 20 20  |ith. It is .    |
00005590  20 20 74 68 65 72 65 66  6f 72 65 20 70 6f 73 73  |  therefore poss|
000055a0  69 62 6c 65 20 74 6f 20  68 61 76 65 20 64 69 66  |ible to have dif|
000055b0  66 65 72 65 6e 74 20 64  72 61 67 20 73 61 76 65  |ferent drag save|
000055c0  20 65 76 65 6e 74 73 20  61 74 74 61 63 68 65 64  | events attached|
000055d0  20 74 6f 20 0a 20 20 20  20 20 20 64 69 66 66 65  | to .      diffe|
000055e0  72 65 6e 74 20 69 63 6f  6e 73 20 69 6e 20 74 68  |rent icons in th|
000055f0  65 20 73 61 6d 65 20 77  69 6e 64 6f 77 2e 20 54  |e same window. T|
00005600  68 69 73 20 69 73 20 75  73 65 66 75 6c 20 77 68  |his is useful wh|
00005610  65 72 65 20 69 74 20 69  73 20 0a 20 20 20 20 20  |ere it is .     |
00005620  20 70 6f 73 73 69 62 6c  65 20 74 6f 20 73 61 76  | possible to sav|
00005630  65 20 74 68 65 20 66 69  6c 65 20 61 73 20 6d 6f  |e the file as mo|
00005640  72 65 20 74 68 61 6e 20  6f 6e 65 20 74 79 70 65  |re than one type|
00005650  20 2d 20 79 6f 75 20 63  61 6e 20 68 61 76 65 20  | - you can have |
00005660  0a 20 20 20 20 20 20 6d  75 6c 74 69 70 6c 65 20  |.      multiple |
00005670  66 69 6c 65 74 79 70 65  20 69 63 6f 6e 73 20 69  |filetype icons i|
00005680  6e 20 74 68 65 20 73 61  76 65 20 77 69 6e 64 6f  |n the save windo|
00005690  77 2e 20 0a 0a 20 20 20  20 20 20 54 68 65 20 45  |w. ..      The E|
000056a0  76 6e 74 53 68 65 6c 6c  20 6c 69 62 72 61 72 79  |vntShell library|
000056b0  20 73 75 70 70 6f 72 74  73 20 52 41 4d 20 66 69  | supports RAM fi|
000056c0  6c 65 20 74 72 61 6e 73  66 65 72 20 66 6f 72 20  |le transfer for |
000056d0  73 70 65 65 64 20 77 68  65 6e 20 0a 20 20 20 20  |speed when .    |
000056e0  20 20 73 61 76 69 6e 67  20 64 61 74 61 20 74 6f  |  saving data to|
000056f0  20 63 6f 6e 73 65 6e 74  69 6e 67 20 61 70 70 6c  | consenting appl|
00005700  69 63 61 74 69 6f 6e 73  2e 20 0a 0a 20 20 20 20  |ications. ..    |
00005710  20 20 53 65 65 20 74 68  65 20 21 57 69 6e 53 61  |  See the !WinSa|
00005720  76 65 32 20 61 6e 64 20  21 56 42 61 73 65 32 20  |ve2 and !VBase2 |
00005730  65 78 61 6d 70 6c 65 20  61 70 70 6c 69 63 61 74  |example applicat|
00005740  69 6f 6e 73 20 66 6f 72  20 68 6f 77 20 74 6f 20  |ions for how to |
00005750  75 73 65 20 0a 20 20 20  20 20 20 74 68 69 73 20  |use .      this |
00005760  72 6f 75 74 69 6e 65 2e  20 0a 0a 20 20 20 20 20  |routine. ..     |
00005770  20 34 2e 36 20 4c 6f 61  64 69 6e 67 20 46 69 6c  | 4.6 Loading Fil|
00005780  65 73 20 0a 0a 20 20 20  20 20 20 54 68 69 73 20  |es ..      This |
00005790  69 73 20 61 63 68 69 65  76 65 64 20 62 79 20 61  |is achieved by a|
000057a0  20 63 61 6c 6c 20 74 6f  20 50 52 4f 43 73 68 65  | call to PROCshe|
000057b0  6c 6c 5f 41 74 74 61 63  68 44 61 74 61 4c 6f 61  |ll_AttachDataLoa|
000057c0  64 20 77 68 69 63 68 20  0a 20 20 20 20 20 20 74  |d which .      t|
000057d0  65 6c 6c 73 20 74 68 65  20 45 76 6e 74 53 68 65  |ells the EvntShe|
000057e0  6c 6c 20 6c 69 62 72 61  72 79 20 77 68 69 63 68  |ll library which|
000057f0  20 66 69 6c 65 74 79 70  65 73 20 74 68 65 20 75  | filetypes the u|
00005800  73 65 72 20 61 70 70 6c  69 63 61 74 69 6f 6e 20  |ser application |
00005810  0a 20 20 20 20 20 20 69  73 20 69 6e 74 65 72 65  |.      is intere|
00005820  73 74 65 64 20 69 6e 20  61 6e 64 20 74 68 65 20  |sted in and the |
00005830  6e 61 6d 65 20 6f 66 20  61 20 66 75 6e 63 74 69  |name of a functi|
00005840  6f 6e 20 74 6f 20 63 61  6c 6c 20 77 68 65 6e 20  |on to call when |
00005850  61 20 6c 6f 61 64 20 0a  20 20 20 20 20 20 65 76  |a load .      ev|
00005860  65 6e 74 20 6f 63 63 75  72 73 2e 20 4d 75 6c 74  |ent occurs. Mult|
00005870  69 70 6c 65 20 66 69 6c  65 73 20 6d 61 79 20 62  |iple files may b|
00005880  65 20 6c 6f 61 64 65 64  2c 20 62 75 74 20 69 6e  |e loaded, but in|
00005890  20 74 68 65 20 63 75 72  72 65 6e 74 20 0a 20 20  | the current .  |
000058a0  20 20 20 20 72 65 6c 65  61 73 65 20 6f 66 20 74  |    release of t|
000058b0  68 65 20 6c 69 62 72 61  72 79 20 69 74 20 69 73  |he library it is|
000058c0  20 75 70 20 74 6f 20 74  68 65 20 75 73 65 72 20  | up to the user |
000058d0  61 70 70 6c 69 63 61 74  69 6f 6e 20 74 6f 20 6b  |application to k|
000058e0  65 65 70 20 0a 20 20 20  20 20 20 74 72 61 63 6b  |eep .      track|
000058f0  20 6f 66 20 77 68 65 72  65 20 74 68 65 79 20 61  | of where they a|
00005900  72 65 20 6c 6f 61 64 65  64 20 61 6e 64 20 69 66  |re loaded and if|
00005910  20 74 68 65 79 20 68 61  76 65 20 62 65 65 6e 20  | they have been |
00005920  6d 6f 64 69 66 69 65 64  2e 20 0a 20 20 20 20 20  |modified. .     |
00005930  20 54 68 69 73 20 77 69  6c 6c 20 63 68 61 6e 67  | This will chang|
00005940  65 20 69 6e 20 61 20 66  75 74 75 72 65 20 72 65  |e in a future re|
00005950  6c 65 61 73 65 2e 20 0a  0a 20 20 20 20 20 20 49  |lease. ..      I|
00005960  66 20 72 65 71 75 69 72  65 64 20 74 68 65 20 66  |f required the f|
00005970  69 6c 65 73 20 63 61 6e  20 62 65 20 6c 6f 61 64  |iles can be load|
00005980  65 64 20 61 75 74 6f 6d  61 74 69 63 61 6c 6c 79  |ed automatically|
00005990  20 69 6e 74 6f 20 61 20  72 65 73 65 72 76 65 64  | into a reserved|
000059a0  20 0a 20 20 20 20 20 20  62 6c 6f 63 6b 20 6f 66  | .      block of|
000059b0  20 6d 65 6d 6f 72 79 2c  20 6f 72 20 74 68 65 20  | memory, or the |
000059c0  75 73 65 72 20 61 70 70  6c 69 63 61 74 69 6f 6e  |user application|
000059d0  20 63 61 6e 20 68 61 76  65 20 74 6f 74 61 6c 20  | can have total |
000059e0  63 6f 6e 74 72 6f 6c 20  0a 20 20 20 20 20 20 6f  |control .      o|
000059f0  76 65 72 20 6c 6f 61 64  69 6e 67 20 61 6e 64 20  |ver loading and |
00005a00  70 72 6f 63 65 73 73 69  6e 67 20 74 68 65 20 66  |processing the f|
00005a10  69 6c 65 2e 20 0a 0a 20  20 20 20 20 20 54 68 65  |ile. ..      The|
00005a20  20 45 76 6e 74 53 68 65  6c 6c 20 6c 69 62 72 61  | EvntShell libra|
00005a30  72 79 20 73 75 70 70 6f  72 74 73 20 52 41 4d 20  |ry supports RAM |
00005a40  66 69 6c 65 20 74 72 61  6e 73 66 65 72 20 66 6f  |file transfer fo|
00005a50  72 20 73 70 65 65 64 20  77 68 65 6e 20 0a 20 20  |r speed when .  |
00005a60  20 20 20 20 6c 6f 61 64  69 6e 67 20 64 61 74 61  |    loading data|
00005a70  20 66 72 6f 6d 20 63 6f  6e 73 65 6e 74 69 6e 67  | from consenting|
00005a80  20 61 70 70 6c 69 63 61  74 69 6f 6e 73 2e 20 0a  | applications. .|
00005a90  0a 20 20 20 20 20 20 49  74 20 69 73 20 61 6c 73  |.      It is als|
00005aa0  6f 20 70 6f 73 73 69 62  6c 65 20 74 6f 20 61 72  |o possible to ar|
00005ab0  72 61 6e 67 65 20 66 6f  72 20 74 68 65 20 75 73  |range for the us|
00005ac0  65 72 20 61 70 70 6c 69  63 61 74 69 6f 6e 20 74  |er application t|
00005ad0  6f 20 0a 20 20 20 20 20  20 72 65 73 70 6f 6e 64  |o .      respond|
00005ae0  20 74 6f 20 61 20 72 61  6e 67 65 20 6f 66 20 66  | to a range of f|
00005af0  69 6c 65 74 79 70 65 73  20 62 79 20 61 74 74 61  |iletypes by atta|
00005b00  63 68 69 6e 67 20 6d 6f  72 65 20 74 68 61 6e 20  |ching more than |
00005b10  6f 6e 65 20 0a 20 20 20  20 20 20 68 61 6e 64 6c  |one .      handl|
00005b20  65 72 2e 20 0a 0a 20 20  20 20 20 20 41 6e 20 65  |er. ..      An e|
00005b30  78 61 6d 70 6c 65 20 61  70 70 6c 69 63 61 74 69  |xample applicati|
00005b40  6f 6e 20 21 44 61 74 61  4c 6f 61 64 20 73 68 6f  |on !DataLoad sho|
00005b50  75 6c 64 20 68 61 76 65  20 62 65 65 6e 20 69 6e  |uld have been in|
00005b60  63 6c 75 64 65 64 20 77  69 74 68 20 0a 20 20 20  |cluded with .   |
00005b70  20 20 20 74 68 65 20 4c  69 62 72 61 72 79 20 74  |   the Library t|
00005b80  6f 20 64 65 6d 6f 6e 73  74 72 61 74 65 20 68 6f  |o demonstrate ho|
00005b90  77 20 74 6f 20 64 6f 20  74 68 69 73 2e 20 0a 0a  |w to do this. ..|
00005ba0  20 20 20 20 20 20 54 68  69 73 20 69 73 20 74 68  |      This is th|
00005bb0  65 20 63 6f 64 65 20 66  72 6f 6d 20 21 44 61 74  |e code from !Dat|
00005bc0  61 4c 6f 61 64 20 75 73  65 64 20 74 6f 20 61 63  |aLoad used to ac|
00005bd0  68 69 65 76 65 20 74 68  69 73 20 3a 20 0a 0a 20  |hieve this : .. |
00005be0  20 20 20 20 20 0a 20 20  20 20 20 20 50 52 4f 43  |     .      PROC|
00005bf0  73 68 65 6c 6c 5f 41 74  74 61 63 68 44 61 74 61  |shell_AttachData|
00005c00  4c 6f 61 64 28 6d 61 69  6e 77 25 2c 30 2c 26 46  |Load(mainw%,0,&F|
00005c10  45 43 2c 22 5f 64 61 74  61 6c 6f 61 64 46 45 43  |EC,"_dataloadFEC|
00005c20  22 2c 54 52 55 45 29 0a  20 20 20 20 20 20 0a 20  |",TRUE).      . |
00005c30  20 20 20 20 20 0a 20 20  20 20 20 20 54 68 65 20  |     .      The |
00005c40  66 69 72 73 74 20 70 61  72 61 6d 65 74 65 72 2c  |first parameter,|
00005c50  20 6d 61 69 6e 77 25 20  69 73 20 74 68 65 20 77  | mainw% is the w|
00005c60  69 6d 70 20 77 69 6e 64  6f 77 20 68 61 6e 64 6c  |imp window handl|
00005c70  65 2c 20 74 68 65 20 73  65 63 6f 6e 64 20 0a 0c  |e, the second ..|
00005c80  0a 20 20 20 20 20 20 69  73 20 74 68 65 20 69 63  |.      is the ic|
00005c90  6f 6e 20 68 61 6e 64 6c  65 2e 20 26 46 45 43 20  |on handle. &FEC |
00005ca0  69 73 20 74 68 65 20 66  69 6c 65 74 79 70 65 20  |is the filetype |
00005cb0  74 6f 20 72 65 73 70 6f  6e 64 20 74 6f 20 61 6e  |to respond to an|
00005cc0  64 20 0a 20 20 20 20 20  20 27 5f 64 61 74 61 6c  |d .      '_datal|
00005cd0  6f 61 64 46 45 43 27 20  69 73 20 74 68 65 20 6e  |oadFEC' is the n|
00005ce0  61 6d 65 20 6f 66 20 74  68 65 20 66 75 6e 63 74  |ame of the funct|
00005cf0  69 6f 6e 20 74 6f 20 63  61 6c 6c 20 74 6f 20 61  |ion to call to a|
00005d00  63 74 75 61 6c 6c 79 20  0a 20 20 20 20 20 20 6c  |ctually .      l|
00005d10  6f 61 64 20 74 68 65 20  66 69 6c 65 2e 20 54 68  |oad the file. Th|
00005d20  65 20 6c 61 73 74 20 70  61 72 61 6d 65 74 65 72  |e last parameter|
00005d30  20 69 73 20 54 52 55 45  20 74 6f 20 6c 6f 61 64  | is TRUE to load|
00005d40  20 74 68 65 20 66 69 6c  65 20 0a 20 20 20 20 20  | the file .     |
00005d50  20 61 75 74 6f 6d 61 74  69 63 61 6c 6c 79 20 69  | automatically i|
00005d60  6e 74 6f 20 61 20 72 65  73 65 72 76 65 64 20 62  |nto a reserved b|
00005d70  6c 6f 63 6b 20 6f 66 20  6d 65 6d 6f 72 79 20 6f  |lock of memory o|
00005d80  72 20 46 41 4c 53 45 20  69 66 20 79 6f 75 20 0a  |r FALSE if you .|
00005d90  20 20 20 20 20 20 77 61  6e 74 20 74 6f 20 68 61  |      want to ha|
00005da0  6e 64 6c 65 20 74 68 65  20 6c 6f 61 64 69 6e 67  |ndle the loading|
00005db0  20 79 6f 75 72 73 65 6c  66 2e 20 49 6e 20 74 68  | yourself. In th|
00005dc0  69 73 20 63 61 73 65 20  6c 6f 61 64 69 6e 67 20  |is case loading |
00005dd0  69 73 20 0a 20 20 20 20  20 20 61 75 74 6f 6d 61  |is .      automa|
00005de0  74 69 63 20 61 6e 64 20  74 68 65 20 6c 6f 61 64  |tic and the load|
00005df0  69 6e 67 20 66 75 6e 63  74 69 6f 6e 20 69 73 20  |ing function is |
00005e00  73 69 6d 70 6c 79 3a 20  0a 0a 20 20 20 20 20 20  |simply: ..      |
00005e10  0a 20 20 20 20 20 20 44  45 46 20 46 4e 5f 64 61  |.      DEF FN_da|
00005e20  74 61 6c 6f 61 64 46 45  43 28 6c 6f 63 25 2c 74  |taloadFEC(loc%,t|
00005e30  79 70 65 25 2c 6e 61 6d  65 24 2c 66 69 6c 65 5f  |ype%,name$,file_|
00005e40  73 69 7a 65 25 29 0a 20  20 20 20 20 20 76 6f 69  |size%).      voi|
00005e50  64 25 3d 46 4e 73 68 65  6c 6c 5f 4d 65 73 73 61  |d%=FNshell_Messa|
00005e60  67 65 57 69 6e 64 6f 77  28 22 46 69 6c 65 20 27  |geWindow("File '|
00005e70  22 2b 6e 61 6d 65 24 2b  22 27 22 2c 30 2c 22 44  |"+name$+"'",0,"D|
00005e80  61 74 61 4c 6f 61 64 22  2c 22 22 29 0a 20 20 20  |ataLoad","").   |
00005e90  20 20 20 3d 30 0a 20 20  20 20 20 20 0a 20 20 20  |   =0.      .   |
00005ea0  20 20 20 0a 20 20 20 20  20 20 54 68 65 20 64 61  |   .      The da|
00005eb0  74 61 20 66 69 6c 65 20  28 6f 66 20 74 79 70 65  |ta file (of type|
00005ec0  20 26 46 45 43 2c 20 74  65 6d 70 6c 61 74 65 29  | &FEC, template)|
00005ed0  20 68 61 73 20 62 65 65  6e 20 6c 6f 61 64 65 64  | has been loaded|
00005ee0  20 61 74 20 0a 20 20 20  20 20 20 6c 6f 63 61 74  | at .      locat|
00005ef0  69 6f 6e 20 6c 6f 63 25  2c 20 69 74 73 20 74 79  |ion loc%, its ty|
00005f00  70 65 20 69 73 20 69 6e  20 74 79 70 65 25 20 61  |pe is in type% a|
00005f10  6e 64 20 74 68 65 20 66  75 6c 6c 20 70 61 74 68  |nd the full path|
00005f20  20 6e 61 6d 65 20 6f 66  20 74 68 65 20 0a 20 20  | name of the .  |
00005f30  20 20 20 20 66 69 6c 65  20 69 73 20 69 6e 20 6e  |    file is in n|
00005f40  61 6d 65 24 2e 20 41 6c  6c 20 74 68 65 20 66 75  |ame$. All the fu|
00005f50  6e 63 74 69 6f 6e 20 69  74 73 65 6c 66 20 64 6f  |nction itself do|
00005f60  65 73 20 69 73 20 63 61  6c 6c 20 61 6e 6f 74 68  |es is call anoth|
00005f70  65 72 20 0a 20 20 20 20  20 20 66 75 6e 63 74 69  |er .      functi|
00005f80  6f 6e 20 74 6f 20 64 69  73 70 6c 61 79 20 61 20  |on to display a |
00005f90  6d 65 73 73 61 67 65 20  77 69 6e 64 6f 77 20 73  |message window s|
00005fa0  6f 20 74 68 61 74 20 79  6f 75 20 63 61 6e 20 73  |o that you can s|
00005fb0  65 65 20 74 68 61 74 20  0a 20 20 20 20 20 20 6c  |ee that .      l|
00005fc0  6f 61 64 69 6e 67 20 74  68 65 20 66 69 6c 65 20  |oading the file |
00005fd0  68 61 73 20 77 6f 72 6b  65 64 2e 20 54 68 69 73  |has worked. This|
00005fe0  20 69 73 20 61 20 75 73  65 66 75 6c 20 64 65 62  | is a useful deb|
00005ff0  75 67 67 69 6e 67 20 0a  20 20 20 20 20 20 74 65  |ugging .      te|
00006000  63 68 6e 69 71 75 65 21  20 0a 0a 20 20 20 20 20  |chnique! ..     |
00006010  20 54 68 69 73 20 6d 65  74 68 6f 64 20 6f 66 20  | This method of |
00006020  6c 6f 61 64 69 6e 67 20  61 20 66 69 6c 65 20 77  |loading a file w|
00006030  6f 72 6b 73 20 77 65 6c  6c 20 66 6f 72 20 64 61  |orks well for da|
00006040  74 61 66 69 6c 65 73 20  74 68 61 74 20 61 72 65  |tafiles that are|
00006050  20 0a 20 20 20 20 20 20  73 74 6f 72 65 64 20 61  | .      stored a|
00006060  73 20 6f 6e 65 20 63 6f  6e 74 69 6e 75 6f 75 73  |s one continuous|
00006070  20 62 6c 6f 63 6b 20 6f  66 20 64 61 74 61 20 73  | block of data s|
00006080  75 63 68 20 61 73 20 61  20 74 65 78 74 20 66 69  |uch as a text fi|
00006090  6c 65 20 77 68 69 63 68  20 0a 20 20 20 20 20 20  |le which .      |
000060a0  77 69 6c 6c 20 62 65 20  70 72 6f 63 65 73 73 65  |will be processe|
000060b0  64 20 69 6e 20 73 6f 6d  65 20 77 61 79 2e 20 53  |d in some way. S|
000060c0  75 70 70 6f 73 65 2c 20  68 6f 77 65 76 65 72 2c  |uppose, however,|
000060d0  20 79 6f 75 20 68 61 76  65 20 61 20 0a 20 20 20  | you have a .   |
000060e0  20 20 20 73 69 6d 70 6c  65 20 64 61 74 61 62 61  |   simple databa|
000060f0  73 65 20 74 79 70 65 20  61 70 70 6c 69 63 61 74  |se type applicat|
00006100  69 6f 6e 20 77 68 69 63  68 20 6e 65 65 64 73 20  |ion which needs |
00006110  74 6f 20 6c 6f 61 64 20  64 61 74 61 20 69 6e 74  |to load data int|
00006120  6f 20 0a 20 20 20 20 20  20 42 41 53 49 43 20 61  |o .      BASIC a|
00006130  72 72 61 79 73 2e 20 49  6e 20 74 68 69 73 20 63  |rrays. In this c|
00006140  61 73 65 20 79 6f 75 20  77 6f 75 6c 64 20 73 69  |ase you would si|
00006150  6d 70 6c 79 20 75 73 65  20 28 61 73 73 75 6d 69  |mply use (assumi|
00006160  6e 67 20 6e 6f 77 20 74  68 65 20 0a 20 20 20 20  |ng now the .    |
00006170  20 20 66 69 6c 65 74 79  70 65 20 69 73 20 26 32  |  filetype is &2|
00006180  30 35 29 3a 20 0a 0a 20  20 20 20 20 20 0a 20 20  |05): ..      .  |
00006190  20 20 20 20 50 52 4f 43  73 68 65 6c 6c 5f 41 74  |    PROCshell_At|
000061a0  74 61 63 68 44 61 74 61  4c 6f 61 64 28 6d 61 69  |tachDataLoad(mai|
000061b0  6e 77 25 2c 30 2c 26 32  30 35 2c 22 5f 64 61 74  |nw%,0,&205,"_dat|
000061c0  61 6c 6f 61 64 32 30 35  22 2c 46 41 4c 53 45 29  |aload205",FALSE)|
000061d0  0a 20 20 20 20 20 20 0a  20 20 20 20 20 20 0a 20  |.      .      . |
000061e0  20 20 20 20 20 46 4e 5f  64 61 74 61 6c 6f 61 64  |     FN_dataload|
000061f0  32 30 35 20 72 65 63 65  69 76 65 73 20 74 68 65  |205 receives the|
00006200  20 66 75 6c 6c 20 70 61  74 68 6e 61 6d 65 20 6f  | full pathname o|
00006210  66 20 74 68 65 20 66 69  6c 65 20 77 68 69 63 68  |f the file which|
00006220  20 68 61 73 20 0a 20 20  20 20 20 20 62 65 65 6e  | has .      been|
00006230  20 64 72 61 67 67 65 64  20 74 6f 20 69 63 6f 6e  | dragged to icon|
00006240  20 30 20 28 70 72 6f 76  69 64 69 6e 67 20 74 68  | 0 (providing th|
00006250  65 20 66 69 6c 65 74 79  70 65 20 6f 66 20 74 68  |e filetype of th|
00006260  65 20 66 69 6c 65 20 77  61 73 20 0a 20 20 20 20  |e file was .    |
00006270  20 20 26 32 30 35 2c 20  6f 74 68 65 72 77 69 73  |  &205, otherwis|
00006280  65 20 74 68 65 20 6c 6f  61 64 20 77 69 6c 6c 20  |e the load will |
00006290  62 65 20 69 67 6e 6f 72  65 64 29 20 77 68 69 63  |be ignored) whic|
000062a0  68 20 6d 61 79 20 6e 6f  77 20 62 65 20 6f 70 65  |h may now be ope|
000062b0  6e 65 64 20 0a 20 20 20  20 20 20 61 6e 64 20 74  |ned .      and t|
000062c0  68 65 20 64 61 74 61 20  6c 6f 61 64 65 64 20 61  |he data loaded a|
000062d0  73 20 75 73 75 61 6c 2e  20 49 66 20 74 68 65 20  |s usual. If the |
000062e0  27 6e 6f 20 6c 6f 61 64  27 20 66 6c 61 67 20 77  |'no load' flag w|
000062f0  61 73 20 73 65 74 20 66  6f 72 20 0a 20 20 20 20  |as set for .    |
00006300  20 20 74 68 69 73 20 6c  6f 61 64 20 65 76 65 6e  |  this load even|
00006310  74 20 61 6e 64 20 74 68  65 20 6c 6f 61 64 20 77  |t and the load w|
00006320  61 73 20 66 72 6f 6d 20  61 6e 6f 74 68 65 72 20  |as from another |
00006330  61 70 70 6c 69 63 61 74  69 6f 6e 20 74 68 65 20  |application the |
00006340  0a 20 20 20 20 20 20 64  61 74 61 20 69 73 20 73  |.      data is s|
00006350  61 76 65 64 20 69 6e 20  61 20 66 69 6c 65 20 63  |aved in a file c|
00006360  61 6c 6c 65 64 20 27 53  63 72 61 70 46 69 6c 65  |alled 'ScrapFile|
00006370  27 20 69 6e 20 74 68 65  20 75 73 65 72 20 0a 20  |' in the user . |
00006380  20 20 20 20 20 61 70 70  6c 69 63 61 74 69 6f 6e  |     application|
00006390  20 64 69 72 65 63 74 6f  72 79 2e 20 0a 0a 20 20  | directory. ..  |
000063a0  20 20 20 20 34 2e 37 20  43 6f 6d 70 72 65 73 73  |    4.7 Compress|
000063b0  69 6e 67 20 45 76 6e 74  53 68 65 6c 6c 20 41 70  |ing EvntShell Ap|
000063c0  70 6c 69 63 61 74 69 6f  6e 73 20 0a 0a 20 20 20  |plications ..   |
000063d0  20 20 20 44 75 65 20 74  6f 20 74 68 65 20 63 6f  |   Due to the co|
000063e0  6d 70 6c 65 78 20 6e 61  74 75 72 65 20 6f 66 20  |mplex nature of |
000063f0  74 68 65 20 6c 69 62 72  61 72 79 20 63 6f 64 65  |the library code|
00006400  20 61 6e 64 20 74 68 65  20 64 65 73 69 72 65 20  | and the desire |
00006410  66 6f 72 20 0a 20 20 20  20 20 20 69 74 20 74 6f  |for .      it to|
00006420  20 64 6f 20 61 73 20 6d  75 63 68 20 61 73 20 70  | do as much as p|
00006430  6f 73 73 69 62 6c 65 20  74 6f 20 6d 61 6b 65 20  |ossible to make |
00006440  61 20 75 73 65 72 20 61  70 70 6c 69 63 61 74 69  |a user applicati|
00006450  6f 6e 20 65 61 73 79 20  74 6f 20 0a 20 20 20 20  |on easy to .    |
00006460  20 20 77 72 69 74 65 20  74 68 65 20 53 68 65 6c  |  write the Shel|
00006470  6c 4c 69 62 20 6c 69 62  72 61 72 79 20 66 69 6c  |lLib library fil|
00006480  65 20 68 61 73 20 65 78  70 61 6e 64 65 64 20 74  |e has expanded t|
00006490  6f 20 61 72 6f 75 6e 64  20 31 35 30 4b 2e 20 54  |o around 150K. T|
000064a0  68 69 73 20 0a 20 20 20  20 20 20 69 73 20 6f 62  |his .      is ob|
000064b0  76 69 6f 75 73 6c 79 20  75 6e 64 65 73 69 72 61  |viously undesira|
000064c0  62 6c 65 20 65 73 70 65  63 69 61 6c 6c 79 20 69  |ble especially i|
000064d0  66 20 79 6f 75 20 61 72  65 20 70 6c 61 6e 6e 69  |f you are planni|
000064e0  6e 67 20 74 6f 20 73 65  6e 64 20 0a 20 20 20 20  |ng to send .    |
000064f0  20 20 79 6f 75 72 20 66  69 6e 69 73 68 65 64 20  |  your finished |
00006500  70 72 6f 67 72 61 6d 20  74 6f 20 61 20 50 44 20  |program to a PD |
00006510  6c 69 62 72 61 72 79 2e  20 49 66 20 79 6f 75 20  |library. If you |
00006520  77 61 6e 74 20 70 65 6f  70 6c 65 20 74 6f 20 62  |want people to b|
00006530  65 20 0a 20 20 20 20 20  20 61 62 6c 65 20 74 6f  |e .      able to|
00006540  20 72 65 61 64 20 79 6f  75 72 20 73 6f 75 72 63  | read your sourc|
00006550  65 20 63 6f 64 65 20 79  6f 75 20 63 61 6e 20 75  |e code you can u|
00006560  73 65 20 74 68 65 20 27  52 75 6e 54 69 6d 65 27  |se the 'RunTime'|
00006570  20 76 65 72 73 69 6f 6e  20 0a 20 20 20 20 20 20  | version .      |
00006580  6f 66 20 74 68 65 20 6c  69 62 72 61 72 79 20 77  |of the library w|
00006590  68 69 63 68 20 68 61 73  20 62 65 65 6e 20 6d 69  |hich has been mi|
000065a0  6c 64 6c 79 20 63 6f 6d  70 72 65 73 73 65 64 2c  |ldly compressed,|
000065b0  20 62 75 74 20 66 6f 72  20 74 68 65 20 0a 20 20  | but for the .  |
000065c0  20 20 20 20 73 6d 61 6c  6c 65 73 74 20 70 6f 73  |    smallest pos|
000065d0  73 69 62 6c 65 20 70 72  6f 67 72 61 6d 20 69 74  |sible program it|
000065e0  20 69 73 20 6e 65 63 65  73 73 61 72 79 20 74 6f  | is necessary to|
000065f0  20 61 70 70 65 6e 64 20  74 68 65 20 6c 69 62 72  | append the libr|
00006600  61 72 79 20 0a 20 20 20  20 20 20 28 65 69 74 68  |ary .      (eith|
00006610  65 72 20 76 65 72 73 69  6f 6e 29 20 74 6f 20 74  |er version) to t|
00006620  68 65 20 65 6e 64 20 6f  66 20 74 68 65 20 75 73  |he end of the us|
00006630  65 72 20 61 70 70 6c 69  63 61 74 69 6f 6e 2c 20  |er application, |
00006640  72 65 6d 6f 76 65 20 74  68 65 20 0a 20 20 20 20  |remove the .    |
00006650  20 20 6c 69 6e 65 20 77  68 69 63 68 20 6c 6f 61  |  line which loa|
00006660  64 73 20 74 68 65 20 6c  69 62 72 61 72 79 20 66  |ds the library f|
00006670  69 6c 65 20 61 6e 64 20  72 75 6e 20 74 68 65 20  |ile and run the |
00006680  77 68 6f 6c 65 20 6c 6f  74 20 74 68 72 6f 75 67  |whole lot throug|
00006690  68 20 61 20 0a 20 20 20  20 20 20 42 41 53 49 43  |h a .      BASIC|
000066a0  20 70 72 6f 67 72 61 6d  20 63 6f 6d 70 72 65 73  | program compres|
000066b0  73 6f 72 2e 20 0a 0a 20  20 20 20 20 20 49 20 72  |sor. ..      I r|
000066c0  65 63 6f 6d 6d 65 6e 64  20 21 42 61 73 53 68 72  |ecommend !BasShr|
000066d0  69 6e 6b 20 6f 72 20 21  53 68 72 69 6e 6b 5f 50  |ink or !Shrink_P|
000066e0  44 20 28 74 68 65 20 50  75 62 6c 69 63 20 44 6f  |D (the Public Do|
000066f0  6d 61 69 6e 20 76 65 72  73 69 6f 6e 20 0a 20 20  |main version .  |
00006700  20 20 20 20 6f 66 20 21  42 61 73 53 68 72 69 6e  |    of !BasShrin|
00006710  6b 29 20 62 79 20 4a 6f  68 6e 20 57 61 6c 6c 61  |k) by John Walla|
00006720  63 65 20 61 6c 74 68 6f  75 67 68 20 4a 6f 68 6e  |ce although John|
00006730  27 73 20 70 72 6f 67 72  61 6d 20 69 73 20 73 6c  |'s program is sl|
00006740  6f 77 20 0a 20 20 20 20  20 20 61 6e 64 20 6e 6f  |ow .      and no|
00006750  74 20 70 72 65 73 65 6e  74 6c 79 20 6d 75 6c 74  |t presently mult|
00006760  69 74 61 73 6b 69 6e 67  20 69 74 20 64 6f 65 73  |itasking it does|
00006770  20 70 72 6f 64 75 63 65  20 63 6f 64 65 20 74 68  | produce code th|
00006780  61 74 20 73 74 69 6c 6c  20 0a 20 20 20 20 20 20  |at still .      |
00006790  72 75 6e 73 21 20 54 68  69 73 20 69 73 20 75 6e  |runs! This is un|
000067a0  66 6f 72 74 75 6e 61 74  65 6c 79 20 6e 6f 74 20  |fortunately not |
000067b0  74 72 75 65 20 6f 66 20  43 79 20 42 6f 6f 6b 65  |true of Cy Booke|
000067c0  72 27 73 20 6f 74 68 65  72 77 69 73 65 20 0a 20  |r's otherwise . |
000067d0  20 20 20 20 20 73 75 70  65 72 62 20 21 42 43 20  |     superb !BC |
000067e0  77 68 69 63 68 20 77 69  6c 6c 20 6e 6f 74 20 77  |which will not w|
000067f0  6f 72 6b 20 6f 6e 20 74  68 65 20 45 76 6e 74 53  |ork on the EvntS|
00006800  68 65 6c 6c 20 6c 69 62  72 61 72 79 2e 20 48 6f  |hell library. Ho|
00006810  77 65 76 65 72 2c 20 0a  20 20 20 20 20 20 69 66  |wever, .      if|
00006820  20 49 20 6f 72 20 43 79  20 63 61 6e 20 66 69 6e  | I or Cy can fin|
00006830  64 20 6f 75 74 20 77 68  61 74 20 74 68 65 20 70  |d out what the p|
00006840  72 6f 62 6c 65 6d 20 69  73 20 77 65 27 6c 6c 20  |roblem is we'll |
00006850  66 69 78 20 69 74 2e 20  0a 0c 0a 20 20 20 20 20  |fix it. ...     |
00006860  20 46 75 74 75 72 65 20  76 65 72 73 69 6f 6e 73  | Future versions|
00006870  20 6f 66 20 21 42 61 73  53 68 72 69 6e 6b 20 73  | of !BasShrink s|
00006880  68 6f 75 6c 64 20 62 65  20 61 62 6c 65 20 74 6f  |hould be able to|
00006890  20 72 65 6d 6f 76 65 20  75 6e 75 73 65 64 20 0a  | remove unused .|
000068a0  20 20 20 20 20 20 72 6f  75 74 69 6e 65 73 20 74  |      routines t|
000068b0  6f 20 73 61 76 65 20 65  76 65 6e 20 6d 6f 72 65  |o save even more|
000068c0  20 73 70 61 63 65 2c 20  6f 72 20 61 6c 74 65 72  | space, or alter|
000068d0  6e 61 74 69 76 65 6c 79  20 42 4c 69 62 49 49 20  |natively BLibII |
000068e0  63 61 6e 20 62 65 20 0a  20 20 20 20 20 20 75 73  |can be .      us|
000068f0  65 64 20 74 6f 20 70 72  65 2d 70 72 6f 63 65 73  |ed to pre-proces|
00006900  73 20 74 68 65 20 61 70  70 6c 69 63 61 74 69 6f  |s the applicatio|
00006910  6e 20 74 6f 20 6c 69 6e  6b 20 69 6e 20 6f 6e 6c  |n to link in onl|
00006920  79 20 74 68 65 20 72 6f  75 74 69 6e 65 73 20 0a  |y the routines .|
00006930  20 20 20 20 20 20 74 68  61 74 20 61 72 65 20 61  |      that are a|
00006940  63 74 75 61 6c 6c 79 20  75 73 65 64 2e 20 53 65  |ctually used. Se|
00006950  65 20 74 68 65 20 6d 61  6e 75 61 6c 20 73 65 63  |e the manual sec|
00006960  74 69 6f 6e 20 27 4f 74  68 65 72 20 54 6f 6f 6c  |tion 'Other Tool|
00006970  73 27 20 66 6f 72 20 0a  20 20 20 20 20 20 6d 6f  |s' for .      mo|
00006980  72 65 20 64 65 74 61 69  6c 73 2e 20 0a 0a 20 20  |re details. ..  |
00006990  20 20 20 20 54 68 65 72  65 20 69 73 20 6f 6e 65  |    There is one|
000069a0  20 69 6d 70 6f 72 74 61  6e 74 20 70 6f 69 6e 74  | important point|
000069b0  20 74 6f 20 62 65 61 72  20 69 6e 20 6d 69 6e 64  | to bear in mind|
000069c0  20 77 68 65 6e 20 75 73  69 6e 67 20 74 68 65 20  | when using the |
000069d0  73 68 65 6c 6c 20 0a 20  20 20 20 20 20 6c 69 62  |shell .      lib|
000069e0  72 61 72 79 20 61 6e 64  20 21 42 61 73 53 68 72  |rary and !BasShr|
000069f0  69 6e 6b 20 74 6f 67 65  74 68 65 72 20 2d 20 66  |ink together - f|
00006a00  75 6e 63 74 69 6f 6e 20  6e 61 6d 65 73 20 74 68  |unction names th|
00006a10  61 74 20 61 72 65 20 0a  20 20 20 20 20 20 45 56  |at are .      EV|
00006a20  41 4c 75 61 74 65 64 20  62 79 20 74 68 65 20 73  |ALuated by the s|
00006a30  68 65 6c 6c 20 6c 69 62  72 61 72 79 20 73 68 6f  |hell library sho|
00006a40  75 6c 64 20 62 65 67 69  6e 20 77 69 74 68 20 61  |uld begin with a|
00006a50  20 27 5f 27 20 63 68 61  72 61 63 74 65 72 20 0a  | '_' character .|
00006a60  20 20 20 20 20 20 61 6e  64 20 74 68 65 20 27 50  |      and the 'P|
00006a70  72 65 73 65 72 76 65 20  6e 61 6d 65 73 20 73 74  |reserve names st|
00006a80  61 72 74 69 6e 67 20 77  69 74 68 27 20 72 61 64  |arting with' rad|
00006a90  69 6f 20 62 75 74 74 6f  6e 20 69 6e 20 74 68 65  |io button in the|
00006aa0  20 0a 20 20 20 20 20 20  21 42 61 73 53 68 72 69  | .      !BasShri|
00006ab0  6e 6b 20 77 69 6e 64 6f  77 20 6d 75 73 74 20 62  |nk window must b|
00006ac0  65 20 4f 4e 2e 20 49 6e  20 73 68 6f 72 74 20 69  |e ON. In short i|
00006ad0  66 20 79 6f 75 20 61 72  65 20 63 61 6c 6c 69 6e  |f you are callin|
00006ae0  67 20 61 6e 79 20 0a 20  20 20 20 20 20 73 68 65  |g any .      she|
00006af0  6c 6c 20 6c 69 62 72 61  72 79 20 72 6f 75 74 69  |ll library routi|
00006b00  6e 65 20 74 68 61 74 20  68 61 73 20 61 20 66 75  |ne that has a fu|
00006b10  6e 63 74 69 6f 6e 20 6e  61 6d 65 20 61 73 20 61  |nction name as a|
00006b20  20 70 61 72 61 6d 65 74  65 72 20 0a 20 20 20 20  | parameter .    |
00006b30  20 20 74 68 65 6e 20 74  68 61 74 20 6e 61 6d 65  |  then that name|
00006b40  20 6d 75 73 74 20 73 74  61 72 74 20 77 69 74 68  | must start with|
00006b50  20 61 20 27 5f 27 2e 20  46 61 69 6c 75 72 65 20  | a '_'. Failure |
00006b60  74 6f 20 6f 62 73 65 72  76 65 20 74 68 69 73 20  |to observe this |
00006b70  0a 20 20 20 20 20 20 72  75 6c 65 20 77 69 6c 6c  |.      rule will|
00006b80  20 72 65 73 75 6c 74 20  69 6e 20 61 20 6e 6f 6e  | result in a non|
00006b90  2d 77 6f 72 6b 69 6e 67  20 63 6f 6d 70 72 65 73  |-working compres|
00006ba0  73 65 64 20 70 72 6f 67  72 61 6d 21 20 0a 0a 20  |sed program! .. |
00006bb0  20 20 20 20 20 41 73 73  75 6d 69 6e 67 20 79 6f  |     Assuming yo|
00006bc0  75 20 68 61 76 65 20 21  42 61 73 53 68 72 69 6e  |u have !BasShrin|
00006bd0  6b 20 32 2e 31 34 20 6f  72 20 6c 61 74 65 72 20  |k 2.14 or later |
00006be0  74 68 65 20 45 76 6e 74  53 68 65 6c 6c 20 6c 69  |the EvntShell li|
00006bf0  62 72 61 72 79 20 0a 20  20 20 20 20 20 63 61 6e  |brary .      can|
00006c00  20 62 65 20 63 6f 6d 70  72 65 73 73 65 64 20 77  | be compressed w|
00006c10  69 74 68 20 61 6c 6c 20  73 77 69 74 63 68 65 73  |ith all switches|
00006c20  20 6f 6e 20 65 78 63 65  70 74 20 27 53 68 6f 72  | on except 'Shor|
00006c30  74 65 6e 20 46 4e 20 6e  61 6d 65 73 27 2c 20 0a  |ten FN names', .|
00006c40  20 20 20 20 20 20 27 53  68 6f 72 74 65 6e 20 50  |      'Shorten P|
00006c50  52 4f 43 20 6e 61 6d 65  73 27 20 61 6e 64 20 27  |ROC names' and '|
00006c60  52 65 6d 6f 76 65 20 2a  20 63 6f 6d 6d 65 6e 74  |Remove * comment|
00006c70  73 27 2e 20 49 66 20 79  6f 75 20 61 72 65 20 6e  |s'. If you are n|
00006c80  6f 74 20 0a 20 20 20 20  20 20 67 6f 69 6e 67 20  |ot .      going |
00006c90  74 6f 20 75 73 65 20 21  42 4c 69 62 49 49 20 79  |to use !BLibII y|
00006ca0  6f 75 20 63 61 6e 20 73  77 69 74 63 68 20 6f 6e  |ou can switch on|
00006cb0  20 27 52 65 6d 6f 76 65  20 2a 20 63 6f 6d 6d 65  | 'Remove * comme|
00006cc0  6e 74 73 27 20 74 6f 20  0a 20 20 20 20 20 20 73  |nts' to .      s|
00006cd0  74 72 69 70 20 6f 75 74  20 74 68 65 20 21 42 4c  |trip out the !BL|
00006ce0  69 62 49 49 20 63 6f 6d  6d 61 6e 64 73 2e 20 0a  |ibII commands. .|
00006cf0  0a 20 20 20 20 20 20 49  66 20 79 6f 75 20 61 70  |.      If you ap|
00006d00  70 65 6e 64 20 74 68 65  20 45 76 6e 74 53 68 65  |pend the EvntShe|
00006d10  6c 6c 20 6c 69 62 72 61  72 79 20 74 6f 20 74 68  |ll library to th|
00006d20  65 20 75 73 65 72 20 61  70 70 6c 69 63 61 74 69  |e user applicati|
00006d30  6f 6e 20 0a 20 20 20 20  20 20 6d 61 6e 75 61 6c  |on .      manual|
00006d40  6c 79 20 6f 72 20 62 79  20 75 73 69 6e 67 20 42  |ly or by using B|
00006d50  4c 69 62 49 49 20 79 6f  75 20 63 61 6e 20 63 6f  |LibII you can co|
00006d60  6d 70 72 65 73 73 20 74  68 65 20 63 6f 6d 70 6c  |mpress the compl|
00006d70  65 74 65 20 70 72 6f 67  72 61 6d 20 0a 20 20 20  |ete program .   |
00006d80  20 20 20 77 69 74 68 20  61 6c 6c 20 73 77 69 74  |   with all swit|
00006d90  63 68 65 73 20 6f 6e 2e  20 0a 0a 20 20 20 20 20  |ches on. ..     |
00006da0  20 34 2e 38 20 54 68 65  20 52 75 6e 54 69 6d 65  | 4.8 The RunTime|
00006db0  20 4c 69 62 72 61 72 79  20 0a 0a 20 20 20 20 20  | Library ..     |
00006dc0  20 54 68 69 73 20 69 73  20 61 20 63 6f 6d 70 72  | This is a compr|
00006dd0  65 73 73 65 64 20 76 65  72 73 69 6f 6e 20 6f 66  |essed version of|
00006de0  20 74 68 65 20 66 75 6c  6c 20 6c 69 62 72 61 72  | the full librar|
00006df0  79 20 77 68 69 63 68 20  73 68 6f 75 6c 64 20 62  |y which should b|
00006e00  65 20 0a 20 20 20 20 20  20 75 73 65 64 20 77 68  |e .      used wh|
00006e10  65 72 65 76 65 72 20 70  6f 73 73 69 62 6c 65 20  |erever possible |
00006e20  61 73 20 69 74 20 77 69  6c 6c 20 6c 6f 61 64 20  |as it will load |
00006e30  61 6e 64 20 72 75 6e 20  66 61 73 74 65 72 2e 20  |and run faster. |
00006e40  54 68 65 20 6f 6e 6c 79  20 0a 20 20 20 20 20 20  |The only .      |
00006e50  72 65 61 73 6f 6e 20 66  6f 72 20 75 73 69 6e 67  |reason for using|
00006e60  20 74 68 65 20 75 6e 63  6f 6d 70 72 65 73 73 65  | the uncompresse|
00006e70  64 20 6c 69 62 72 61 72  79 20 77 6f 75 6c 64 20  |d library would |
00006e80  62 65 20 74 6f 20 61 64  64 20 65 78 74 72 61 20  |be to add extra |
00006e90  0a 20 20 20 20 20 20 64  65 62 75 67 67 69 6e 67  |.      debugging|
00006ea0  20 63 6f 64 65 20 6f 72  20 70 65 72 68 61 70 73  | code or perhaps|
00006eb0  20 74 6f 20 6d 6f 64 69  66 79 20 74 68 65 20 72  | to modify the r|
00006ec0  6f 75 74 69 6e 65 73 2e  20 49 6e 20 74 68 69 73  |outines. In this|
00006ed0  20 63 61 73 65 2c 20 0a  20 20 20 20 20 20 68 6f  | case, .      ho|
00006ee0  77 65 76 65 72 2c 20 69  74 20 69 73 20 62 65 74  |wever, it is bet|
00006ef0  74 65 72 20 74 6f 20 6a  75 73 74 20 63 6f 70 79  |ter to just copy|
00006f00  20 74 68 65 20 75 6e 63  6f 6d 70 72 65 73 73 65  | the uncompresse|
00006f10  64 20 72 6f 75 74 69 6e  65 20 69 6e 74 6f 20 0a  |d routine into .|
00006f20  20 20 20 20 20 20 74 68  65 20 75 73 65 72 20 61  |      the user a|
00006f30  70 70 6c 69 63 61 74 69  6f 6e 20 61 6e 64 20 65  |pplication and e|
00006f40  64 69 74 20 69 74 20 74  68 65 72 65 2e 20 0a 0a  |dit it there. ..|
00006f50  20 20 20 20 20 20 54 68  65 20 75 6e 63 6f 6d 70  |      The uncomp|
00006f60  72 65 73 73 65 64 20 76  65 72 73 69 6f 6e 20 69  |ressed version i|
00006f70  73 20 63 61 6c 6c 65 64  20 53 68 65 6c 6c 4c 69  |s called ShellLi|
00006f80  62 2c 20 74 68 65 20 63  6f 6d 70 72 65 73 73 65  |b, the compresse|
00006f90  64 20 0a 20 20 20 20 20  20 76 65 72 73 69 6f 6e  |d .      version|
00006fa0  20 69 73 20 53 68 65 6c  6c 4c 69 62 52 54 2e 20  | is ShellLibRT. |
00006fb0  42 6f 74 68 20 63 61 6e  20 62 65 20 66 6f 75 6e  |Both can be foun|
00006fc0  64 20 69 6e 73 69 64 65  20 74 68 65 20 21 53 68  |d inside the !Sh|
00006fd0  65 6c 6c 53 79 73 20 0a  20 20 20 20 20 20 61 70  |ellSys .      ap|
00006fe0  70 6c 69 63 61 74 69 6f  6e 20 64 69 72 65 63 74  |plication direct|
00006ff0  6f 72 79 2e 20 0a 0a 20  20 20 20 20 20 54 68 65  |ory. ..      The|
00007000  20 53 68 65 6c 6c 4c 69  62 52 54 20 66 69 6c 65  | ShellLibRT file|
00007010  20 68 61 73 20 68 61 64  20 74 68 65 20 42 4c 69  | has had the BLi|
00007020  62 49 49 20 63 6f 6d 6d  61 6e 64 73 20 73 74 72  |bII commands str|
00007030  69 70 70 65 64 20 6f 75  74 20 74 6f 20 0a 20 20  |ipped out to .  |
00007040  20 20 20 20 73 61 76 65  20 73 70 61 63 65 2e 20  |    save space. |
00007050  0a 0a 20 20 20 20 20 20  34 2e 39 20 54 68 65 20  |..      4.9 The |
00007060  21 53 68 65 6c 6c 53 79  73 20 41 70 70 6c 69 63  |!ShellSys Applic|
00007070  61 74 69 6f 6e 20 0a 0a  20 20 20 20 20 20 41 73  |ation ..      As|
00007080  20 6c 61 72 67 65 20 63  68 75 6e 6b 73 20 6f 66  | large chunks of|
00007090  20 63 6f 64 65 20 61 72  65 20 63 6f 6d 6d 6f 6e  | code are common|
000070a0  20 74 6f 20 61 6c 6c 20  45 76 6e 74 53 68 65 6c  | to all EvntShel|
000070b0  6c 20 61 70 70 6c 69 63  61 74 69 6f 6e 73 20 0a  |l applications .|
000070c0  20 20 20 20 20 20 69 74  20 6d 61 6b 65 73 20 73  |      it makes s|
000070d0  65 6e 73 65 20 74 6f 20  73 74 6f 72 65 20 69 74  |ense to store it|
000070e0  20 6f 6e 6c 79 20 6f 6e  63 65 20 6f 6e 20 74 68  | only once on th|
000070f0  65 20 64 69 73 6b 2c 20  68 65 6e 63 65 20 21 53  |e disk, hence !S|
00007100  68 65 6c 6c 53 79 73 20  0a 20 20 20 20 20 20 77  |hellSys .      w|
00007110  68 69 63 68 20 73 68 6f  75 6c 64 20 62 65 20 74  |hich should be t|
00007120  72 65 61 74 65 64 20 6c  69 6b 65 20 74 68 65 20  |reated like the |
00007130  21 53 79 73 74 65 6d 20  61 70 70 6c 69 63 61 74  |!System applicat|
00007140  69 6f 6e 2e 20 49 66 20  79 6f 75 20 68 61 76 65  |ion. If you have|
00007150  20 0a 20 20 20 20 20 20  61 20 68 61 72 64 20 64  | .      a hard d|
00007160  69 73 6b 20 70 75 74 20  69 74 20 69 6e 20 74 68  |isk put it in th|
00007170  65 20 72 6f 6f 74 20 64  69 72 65 63 74 6f 72 79  |e root directory|
00007180  20 28 6f 72 20 65 6e 73  75 72 65 20 69 74 20 69  | (or ensure it i|
00007190  73 20 62 6f 6f 74 65 64  20 0a 20 20 20 20 20 20  |s booted .      |
000071a0  62 79 20 79 6f 75 72 20  42 6f 6f 74 20 66 69 6c  |by your Boot fil|
000071b0  65 29 2e 20 49 66 20 79  6f 75 20 68 61 76 65 20  |e). If you have |
000071c0  61 20 66 6c 6f 70 70 79  20 6f 6e 6c 79 20 73 79  |a floppy only sy|
000071d0  73 74 65 6d 20 70 75 74  20 69 74 20 6f 6e 20 0a  |stem put it on .|
000071e0  20 20 20 20 20 20 61 6c  6c 20 79 6f 75 72 20 64  |      all your d|
000071f0  69 73 6b 73 20 28 72 65  6d 6f 76 69 6e 67 20 74  |isks (removing t|
00007200  68 65 20 53 68 65 6c 6c  4c 69 62 20 66 69 6c 65  |he ShellLib file|
00007210  20 61 6e 64 20 6d 61 6b  69 6e 67 20 73 75 72 65  | and making sure|
00007220  20 61 6c 6c 20 0a 20 20  20 20 20 20 45 76 6e 74  | all .      Evnt|
00007230  53 68 65 6c 6c 20 61 70  70 6c 69 63 61 74 69 6f  |Shell applicatio|
00007240  6e 73 20 75 73 65 20 53  68 65 6c 6c 4c 69 62 52  |ns use ShellLibR|
00007250  54 20 77 69 6c 6c 20 68  65 6c 70 20 73 61 76 65  |T will help save|
00007260  20 64 69 73 6b 20 73 70  61 63 65 29 2e 20 0a 20  | disk space). . |
00007270  20 20 20 20 20 54 68 65  20 73 79 73 74 65 6d 20  |     The system |
00007280  6d 65 73 73 61 67 65 20  66 69 6c 65 20 61 6e 64  |message file and|
00007290  20 76 61 72 69 6f 75 73  20 6d 6f 64 75 6c 65 73  | various modules|
000072a0  20 61 72 65 20 61 6c 73  6f 20 74 6f 20 62 65 20  | are also to be |
000072b0  66 6f 75 6e 64 20 0a 20  20 20 20 20 20 68 65 72  |found .      her|
000072c0  65 2e 20 0a 0a 20 20 20  20 20 20 34 2e 31 30 20  |e. ..      4.10 |
000072d0  48 61 6e 64 6c 69 6e 67  20 50 61 6e 65 73 20 0a  |Handling Panes .|
000072e0  0a 20 20 20 20 20 20 41  20 70 61 6e 65 20 77 69  |.      A pane wi|
000072f0  6e 64 6f 77 20 69 73 20  61 20 77 69 6e 64 6f 77  |ndow is a window|
00007300  20 61 74 74 61 63 68 65  64 20 74 6f 20 61 20 70  | attached to a p|
00007310  61 72 65 6e 74 20 77 69  6e 64 6f 77 20 77 68 69  |arent window whi|
00007320  63 68 20 68 61 73 20 0a  20 20 20 20 20 20 64 69  |ch has .      di|
00007330  66 66 65 72 65 6e 74 20  70 72 6f 70 65 72 74 69  |fferent properti|
00007340  65 73 20 74 6f 20 74 68  65 20 70 61 72 65 6e 74  |es to the parent|
00007350  2e 20 41 20 77 65 6c 6c  2d 6b 6e 6f 77 6e 20 65  |. A well-known e|
00007360  78 61 6d 70 6c 65 20 69  73 20 74 68 65 20 0a 20  |xample is the . |
00007370  20 20 20 20 20 27 54 6f  6f 6c 42 6f 78 27 20 70  |     'ToolBox' p|
00007380  61 6e 65 20 61 74 74 61  63 68 65 64 20 74 6f 20  |ane attached to |
00007390  61 20 21 44 72 61 77 20  77 69 6e 64 6f 77 20 77  |a !Draw window w|
000073a0  68 69 63 68 20 61 6c 77  61 79 73 20 61 70 70 65  |hich always appe|
000073b0  61 72 73 20 61 74 20 0a  20 20 20 20 20 20 74 68  |ars at .      th|
000073c0  65 20 74 6f 70 20 6c 65  66 74 20 6f 66 20 74 68  |e top left of th|
000073d0  65 20 70 61 72 65 6e 74  20 77 69 6e 64 6f 77 20  |e parent window |
000073e0  68 6f 77 65 76 65 72 20  74 68 65 20 70 61 72 65  |however the pare|
000073f0  6e 74 20 77 69 6e 64 6f  77 20 69 73 20 0a 20 20  |nt window is .  |
00007400  20 20 20 20 73 63 72 6f  6c 6c 65 64 2e 20 41 6e  |    scrolled. An|
00007410  6f 74 68 65 72 20 65 78  61 6d 70 6c 65 20 63 6f  |other example co|
00007420  75 6c 64 20 62 65 20 61  20 70 61 72 65 6e 74 20  |uld be a parent |
00007430  77 69 6e 64 6f 77 20 77  69 74 68 6f 75 74 20 0a  |window without .|
00007440  20 20 20 20 20 20 73 63  72 6f 6c 6c 62 61 72 73  |      scrollbars|
00007450  20 77 68 69 63 68 20 68  61 73 20 61 20 73 63 72  | which has a scr|
00007460  6f 6c 6c 69 6e 67 20 70  61 6e 65 20 61 74 74 61  |olling pane atta|
00007470  63 68 65 64 20 74 6f 20  74 68 65 20 77 6f 72 6b  |ched to the work|
00007480  20 61 72 65 61 20 0a 0c  0a 20 20 20 20 20 20 77  | area ...      w|
00007490  68 69 63 68 20 6d 69 67  68 74 20 62 65 20 75 73  |hich might be us|
000074a0  65 64 20 69 6e 20 61 20  27 46 69 6e 64 46 69 6c  |ed in a 'FindFil|
000074b0  65 27 20 61 70 70 6c 69  63 61 74 69 6f 6e 20 74  |e' application t|
000074c0  6f 20 64 69 73 70 6c 61  79 20 61 20 6c 69 73 74  |o display a list|
000074d0  20 0a 20 20 20 20 20 20  6f 66 20 66 69 6e 64 73  | .      of finds|
000074e0  2e 20 0a 0a 20 20 20 20  20 20 50 61 6e 65 73 20  |. ..      Panes |
000074f0  61 72 65 20 63 72 65 61  74 65 64 20 75 73 69 6e  |are created usin|
00007500  67 20 21 46 6f 72 6d 45  64 20 6f 72 20 73 69 6d  |g !FormEd or sim|
00007510  69 6c 61 72 20 77 69 74  68 20 74 68 65 20 27 70  |ilar with the 'p|
00007520  61 6e 65 27 20 66 6c 61  67 20 0a 20 20 20 20 20  |ane' flag .     |
00007530  20 73 65 74 2e 20 41 20  63 61 6c 6c 20 74 6f 20  | set. A call to |
00007540  50 52 4f 43 73 68 65 6c  6c 5f 41 74 74 61 63 68  |PROCshell_Attach|
00007550  50 61 6e 65 20 73 70 65  63 69 66 69 65 73 20 77  |Pane specifies w|
00007560  68 69 63 68 20 70 61 6e  65 20 69 73 20 0a 20 20  |hich pane is .  |
00007570  20 20 20 20 61 74 74 61  63 68 65 64 20 74 6f 20  |    attached to |
00007580  77 68 69 63 68 20 77 69  6e 64 6f 77 20 61 6e 64  |which window and|
00007590  20 74 68 65 20 70 6f 73  69 74 69 6f 6e 20 6f 66  | the position of|
000075a0  20 74 68 65 20 70 61 6e  65 2e 20 4d 75 6c 74 69  | the pane. Multi|
000075b0  70 6c 65 20 0a 20 20 20  20 20 20 70 61 6e 65 73  |ple .      panes|
000075c0  20 6d 61 79 20 74 6f 20  61 74 74 61 63 68 65 64  | may to attached|
000075d0  20 74 6f 20 61 20 70 61  72 65 6e 74 20 77 69 6e  | to a parent win|
000075e0  64 6f 77 20 28 73 65 65  20 74 68 65 20 65 78 61  |dow (see the exa|
000075f0  6d 70 6c 65 20 0a 20 20  20 20 20 20 61 70 70 6c  |mple .      appl|
00007600  69 63 61 74 69 6f 6e 20  21 50 61 6e 65 73 29 2e  |ication !Panes).|
00007610  20 0a 0a 20 20 20 20 20  20 54 68 65 20 6f 70 65  | ..      The ope|
00007620  6e 69 6e 67 20 61 6e 64  20 63 6c 6f 73 69 6e 67  |ning and closing|
00007630  20 6f 66 20 70 61 6e 65  73 20 69 73 20 68 61 6e  | of panes is han|
00007640  64 6c 65 64 20 74 6f 74  61 6c 6c 79 20 62 79 20  |dled totally by |
00007650  74 68 65 20 73 68 65 6c  6c 20 0a 20 20 20 20 20  |the shell .     |
00007660  20 6c 69 62 72 61 72 79  20 2d 20 61 20 63 61 6c  | library - a cal|
00007670  6c 20 74 6f 20 50 52 4f  43 73 68 65 6c 6c 5f 4f  |l to PROCshell_O|
00007680  70 65 6e 57 69 6e 64 6f  77 20 61 66 74 65 72 20  |penWindow after |
00007690  61 74 74 61 63 68 69 6e  67 20 74 68 65 20 0a 20  |attaching the . |
000076a0  20 20 20 20 20 70 61 6e  65 73 20 77 69 6c 6c 20  |     panes will |
000076b0  6f 70 65 6e 20 74 68 65  20 70 61 72 65 6e 74 20  |open the parent |
000076c0  77 69 6e 64 6f 77 20 61  6e 64 20 74 68 65 20 70  |window and the p|
000076d0  61 6e 65 73 20 74 6f 67  65 74 68 65 72 2e 20 0a  |anes together. .|
000076e0  0a 20 20 20 20 20 20 49  74 20 69 73 20 6e 6f 72  |.      It is nor|
000076f0  6d 61 6c 6c 79 20 6e 65  63 65 73 73 61 72 79 20  |mally necessary |
00007700  66 6f 72 20 63 65 72 74  61 69 6e 20 62 69 74 73  |for certain bits|
00007710  20 69 6e 20 74 68 65 20  77 69 6e 64 6f 77 20 0a  | in the window .|
00007720  20 20 20 20 20 20 64 65  66 69 6e 69 74 69 6f 6e  |      definition|
00007730  20 62 6c 6f 63 6b 20 74  6f 20 62 65 20 73 65 74  | block to be set|
00007740  20 75 70 20 69 6e 20 61  20 73 70 65 63 69 61 6c  | up in a special|
00007750  20 77 61 79 20 69 66 20  61 20 77 69 6e 64 6f 77  | way if a window|
00007760  20 69 73 20 74 6f 20 0a  20 20 20 20 20 20 62 65  | is to .      be|
00007770  20 74 72 65 61 74 65 64  20 61 73 20 61 20 70 61  | treated as a pa|
00007780  6e 65 2e 20 54 68 69 73  20 69 73 20 6e 6f 74 20  |ne. This is not |
00007790  72 65 71 75 69 72 65 64  20 77 68 65 6e 20 75 73  |required when us|
000077a0  69 6e 67 20 74 68 65 20  0a 20 20 20 20 20 20 45  |ing the .      E|
000077b0  76 6e 74 53 68 65 6c 6c  20 6c 69 62 72 61 72 79  |vntShell library|
000077c0  20 61 73 20 74 68 65 20  61 63 74 20 6f 66 20 61  | as the act of a|
000077d0  74 74 61 63 68 69 6e 67  20 74 68 65 20 65 76 65  |ttaching the eve|
000077e0  6e 74 20 6d 61 6b 65 73  20 74 68 65 20 0a 20 20  |nt makes the .  |
000077f0  20 20 20 20 63 68 61 6e  67 65 73 20 6e 65 65 64  |    changes need|
00007800  65 64 2e 20 0a 0a 20 20  20 20 20 20 59 6f 75 20  |ed. ..      You |
00007810  73 68 6f 75 6c 64 20 61  76 6f 69 64 20 61 74 74  |should avoid att|
00007820  61 63 68 69 6e 67 20 61  20 70 61 6e 65 20 74 6f  |aching a pane to|
00007830  20 61 20 70 61 72 65 6e  74 20 77 69 6e 64 6f 77  | a parent window|
00007840  20 77 68 65 72 65 20 69  74 20 69 73 20 0a 20 20  | where it is .  |
00007850  20 20 20 20 70 6f 73 73  69 62 6c 65 20 74 6f 20  |    possible to |
00007860  72 65 73 69 7a 65 20 74  68 65 20 70 61 72 65 6e  |resize the paren|
00007870  74 20 69 6e 20 73 75 63  68 20 61 20 77 61 79 20  |t in such a way |
00007880  74 68 61 74 20 74 68 65  20 70 61 6e 65 20 6c 69  |that the pane li|
00007890  65 73 20 0a 20 20 20 20  20 20 6f 75 74 73 69 64  |es .      outsid|
000078a0  65 20 74 68 65 20 77 69  6e 64 6f 77 20 69 74 20  |e the window it |
000078b0  69 73 20 61 74 74 61 63  68 65 64 20 74 6f 2e 20  |is attached to. |
000078c0  54 68 69 73 20 77 69 6c  6c 20 63 61 75 73 65 20  |This will cause |
000078d0  28 6e 6f 6e 2d 66 61 74  61 6c 29 20 0a 20 20 20  |(non-fatal) .   |
000078e0  20 20 20 70 72 6f 62 6c  65 6d 73 20 77 68 65 6e  |   problems when|
000078f0  20 74 68 65 20 77 69 6e  64 6f 77 73 20 61 72 65  | the windows are|
00007900  20 72 65 64 72 61 77 6e  2e 20 4d 6f 73 74 20 52  | redrawn. Most R|
00007910  49 53 43 20 4f 53 20 70  72 6f 67 72 61 6d 73 20  |ISC OS programs |
00007920  61 6c 73 6f 20 0a 20 20  20 20 20 20 61 76 6f 69  |also .      avoi|
00007930  64 20 74 68 69 73 20 66  6f 72 20 74 68 65 20 73  |d this for the s|
00007940  61 6d 65 20 72 65 61 73  6f 6e 73 2e 20 0a 0a 20  |ame reasons. .. |
00007950  20 20 20 20 20 34 2e 31  31 20 4f 75 74 6c 69 6e  |     4.11 Outlin|
00007960  65 20 46 6f 6e 74 73 20  0a 0a 20 20 20 20 20 20  |e Fonts ..      |
00007970  54 68 65 20 45 76 6e 74  53 68 65 6c 6c 20 4c 69  |The EvntShell Li|
00007980  62 72 61 72 79 20 73 75  70 70 6f 72 74 73 20 4f  |brary supports O|
00007990  75 74 6c 69 6e 65 20 46  6f 6e 74 73 20 69 6e 20  |utline Fonts in |
000079a0  74 77 6f 20 77 61 79 73  20 61 74 20 74 68 65 20  |two ways at the |
000079b0  0a 20 20 20 20 20 20 6d  6f 6d 65 6e 74 2e 20 46  |.      moment. F|
000079c0  69 72 73 74 6c 79 20 4a  6f 72 69 73 20 52 f6 6c  |irstly Joris R.l|
000079d0  69 6e 67 27 73 20 46 6f  6e 74 4d 65 6e 75 20 6d  |ing's FontMenu m|
000079e0  6f 64 75 6c 65 20 69 73  20 75 73 65 64 20 74 6f  |odule is used to|
000079f0  20 64 69 73 70 6c 61 79  20 0a 20 20 20 20 20 20  | display .      |
00007a00  61 20 6d 65 6e 75 20 6f  66 20 61 6c 6c 20 61 76  |a menu of all av|
00007a10  61 69 6c 61 62 6c 65 20  66 6f 6e 74 73 20 6f 6e  |ailable fonts on|
00007a20  20 74 68 65 20 73 79 73  74 65 6d 2c 20 61 6e 64  | the system, and|
00007a30  20 73 65 63 6f 6e 64 6c  79 20 74 68 65 20 0a 20  | secondly the . |
00007a40  20 20 20 20 20 77 69 6e  64 6f 77 20 74 65 6d 70  |     window temp|
00007a50  6c 61 74 65 20 6c 6f 61  64 69 6e 67 20 72 6f 75  |late loading rou|
00007a60  74 69 6e 65 20 61 6c 6c  6f 77 73 20 69 63 6f 6e  |tine allows icon|
00007a70  73 20 61 6e 64 20 77 69  6e 64 6f 77 20 74 69 74  |s and window tit|
00007a80  6c 65 73 20 74 6f 20 0a  20 20 20 20 20 20 75 73  |les to .      us|
00007a90  65 20 66 6f 6e 74 73 2e  20 0a 0a 20 20 20 20 20  |e fonts. ..     |
00007aa0  20 52 6f 75 74 69 6e 65  73 20 61 72 65 20 70 72  | Routines are pr|
00007ab0  6f 76 69 64 65 64 20 74  6f 20 61 74 74 61 63 68  |ovided to attach|
00007ac0  20 61 20 66 6f 6e 74 20  6d 65 6e 75 20 74 6f 20  | a font menu to |
00007ad0  61 6e 20 65 78 69 73 74  69 6e 67 20 6d 65 6e 75  |an existing menu|
00007ae0  20 0a 20 20 20 20 20 20  61 73 20 61 20 73 75 62  | .      as a sub|
00007af0  6d 65 6e 75 20 28 50 52  4f 43 73 68 65 6c 6c 5f  |menu (PROCshell_|
00007b00  41 74 74 61 63 68 46 6f  6e 74 53 75 62 4d 65 6e  |AttachFontSubMen|
00007b10  75 29 2c 20 6f 72 20 74  6f 20 6f 70 65 6e 20 74  |u), or to open t|
00007b20  68 65 20 66 6f 6e 74 20  0a 20 20 20 20 20 20 6d  |he font .      m|
00007b30  65 6e 75 20 61 73 20 61  20 6d 65 6e 75 20 69 6e  |enu as a menu in|
00007b40  20 69 74 73 20 6f 77 6e  20 72 69 67 68 74 20 28  | its own right (|
00007b50  50 52 4f 43 73 68 65 6c  6c 5f 41 74 74 61 63 68  |PROCshell_Attach|
00007b60  46 6f 6e 74 4d 65 6e 75  29 2e 20 49 66 20 0a 20  |FontMenu). If . |
00007b70  20 20 20 20 20 74 68 65  20 75 73 65 72 20 6d 61  |     the user ma|
00007b80  6b 65 73 20 61 20 76 61  6c 69 64 20 66 6f 6e 74  |kes a valid font|
00007b90  20 73 65 6c 65 63 74 69  6f 6e 20 74 68 65 20 66  | selection the f|
00007ba0  6f 6e 74 20 6e 61 6d 65  20 63 61 6e 20 62 65 20  |ont name can be |
00007bb0  0a 20 20 20 20 20 20 72  65 74 72 69 65 76 65 64  |.      retrieved|
00007bc0  20 28 77 69 74 68 20 46  4e 73 68 65 6c 6c 5f 46  | (with FNshell_F|
00007bd0  6f 6e 74 4d 65 6e 75 47  65 74 4c 61 73 74 53 65  |ontMenuGetLastSe|
00007be0  6c 65 63 74 65 64 46 6f  6e 74 29 20 66 6f 72 20  |lectedFont) for |
00007bf0  75 73 65 20 69 6e 20 0a  20 20 20 20 20 20 74 68  |use in .      th|
00007c00  65 20 75 73 65 72 20 61  70 70 6c 69 63 61 74 69  |e user applicati|
00007c10  6f 6e 2e 20 43 68 61 6e  67 65 73 20 74 6f 20 74  |on. Changes to t|
00007c20  68 65 20 46 6f 6e 74 24  50 61 74 68 20 76 61 72  |he Font$Path var|
00007c30  69 61 62 6c 65 20 73 75  63 68 20 61 73 20 0a 20  |iable such as . |
00007c40  20 20 20 20 20 61 64 64  69 6e 67 20 6f 72 20 72  |     adding or r|
00007c50  65 6d 6f 76 69 6e 67 20  66 6f 6e 74 20 64 69 72  |emoving font dir|
00007c60  65 63 74 6f 72 69 65 73  20 61 72 65 20 64 65 74  |ectories are det|
00007c70  65 63 74 65 64 20 61 6e  64 20 74 68 65 20 66 6f  |ected and the fo|
00007c80  6e 74 20 0a 20 20 20 20  20 20 6d 65 6e 75 20 72  |nt .      menu r|
00007c90  65 62 75 69 6c 74 20 61  73 20 6e 65 63 65 73 73  |ebuilt as necess|
00007ca0  61 72 79 2e 20 0a 0a 20  20 20 20 20 20 49 74 20  |ary. ..      It |
00007cb0  77 69 6c 6c 20 6e 6f 74  2c 20 68 6f 77 65 76 65  |will not, howeve|
00007cc0  72 2c 20 64 65 74 65 63  74 20 66 6f 6e 74 73 20  |r, detect fonts |
00007cd0  62 65 69 6e 67 20 61 64  64 65 64 20 6f 72 20 72  |being added or r|
00007ce0  65 6d 6f 76 65 64 20 66  72 6f 6d 20 61 6e 20 0a  |emoved from an .|
00007cf0  20 20 20 20 20 20 65 78  69 73 74 69 6e 67 20 66  |      existing f|
00007d00  6f 6e 74 20 64 69 72 65  63 74 6f 72 79 20 77 68  |ont directory wh|
00007d10  69 6c 65 20 74 68 65 20  45 76 6e 74 53 68 65 6c  |ile the EvntShel|
00007d20  6c 20 61 70 70 6c 69 63  61 74 69 6f 6e 20 69 73  |l application is|
00007d30  20 0a 20 20 20 20 20 20  72 75 6e 6e 69 6e 67 2e  | .      running.|
00007d40  20 49 74 20 61 70 70 65  61 72 73 20 74 68 61 74  | It appears that|
00007d50  20 61 20 72 65 2d 62 6f  6f 74 20 69 73 20 72 65  | a re-boot is re|
00007d60  71 75 69 72 65 64 20 74  6f 20 73 6f 72 74 20 74  |quired to sort t|
00007d70  68 69 6e 67 73 20 6f 75  74 20 0a 20 20 20 20 20  |hings out .     |
00007d80  20 61 66 74 65 72 20 74  68 65 20 63 6f 6e 74 65  | after the conte|
00007d90  6e 74 73 20 6f 66 20 74  68 65 20 66 6f 6e 74 20  |nts of the font |
00007da0  64 69 72 65 63 74 6f 72  69 65 73 20 68 61 76 65  |directories have|
00007db0  20 63 68 61 6e 67 65 64  2e 20 4f 68 20 77 65 6c  | changed. Oh wel|
00007dc0  6c 2c 20 0a 20 20 20 20  20 20 69 74 20 73 65 65  |l, .      it see|
00007dd0  6d 73 20 74 68 61 74 20  61 20 6c 6f 74 20 6f 66  |ms that a lot of|
00007de0  20 6f 74 68 65 72 20 61  70 70 6c 69 63 61 74 69  | other applicati|
00007df0  6f 6e 73 20 63 61 6e 27  74 20 63 6f 70 65 20 77  |ons can't cope w|
00007e00  69 74 68 20 74 68 69 73  20 0a 20 20 20 20 20 20  |ith this .      |
00007e10  65 69 74 68 65 72 21 20  0a 0a 20 20 20 20 20 20  |either! ..      |
00007e20  54 68 65 20 46 6f 6e 74  4d 65 6e 75 20 6d 6f 64  |The FontMenu mod|
00007e30  75 6c 65 20 63 72 65 61  74 65 73 20 61 20 6d 65  |ule creates a me|
00007e40  6e 75 20 69 6e 20 74 68  65 20 72 65 6c 6f 63 61  |nu in the reloca|
00007e50  74 61 62 6c 65 20 6d 6f  64 75 6c 65 20 61 72 65  |table module are|
00007e60  61 20 0a 20 20 20 20 20  20 77 68 69 63 68 20 69  |a .      which i|
00007e70  73 20 73 68 61 72 65 64  20 62 65 74 77 65 65 6e  |s shared between|
00007e80  20 61 6c 6c 20 61 70 70  6c 69 63 61 74 69 6f 6e  | all application|
00007e90  73 20 77 69 73 68 69 6e  67 20 74 6f 20 75 73 65  |s wishing to use|
00007ea0  20 69 74 2e 20 41 73 20  61 20 0a 20 20 20 20 20  | it. As a .     |
00007eb0  20 66 6f 6e 74 20 6d 65  6e 75 20 70 6f 74 65 6e  | font menu poten|
00007ec0  74 69 61 6c 6c 79 20 74  61 6b 65 73 20 75 70 20  |tially takes up |
00007ed0  61 20 6c 6f 74 20 6f 66  20 73 70 61 63 65 20 74  |a lot of space t|
00007ee0  68 69 73 20 69 73 20 61  20 76 65 72 79 20 0a 20  |his is a very . |
00007ef0  20 20 20 20 20 65 66 66  69 63 69 65 6e 74 20 77  |     efficient w|
00007f00  61 79 20 6f 66 20 68 61  6e 64 6c 69 6e 67 20 69  |ay of handling i|
00007f10  74 2c 20 65 73 70 65 63  69 61 6c 6c 79 20 61 73  |t, especially as|
00007f20  20 74 68 65 20 6d 65 6e  75 20 69 73 20 6c 61 69  | the menu is lai|
00007f30  64 20 6f 75 74 20 0a 20  20 20 20 20 20 73 6f 20  |d out .      so |
00007f40  74 68 61 74 20 69 74 20  69 73 20 65 61 73 69 65  |that it is easie|
00007f50  72 20 74 6f 20 75 73 65  20 74 68 61 6e 20 61 20  |r to use than a |
00007f60  73 74 72 61 69 67 68 74  20 6c 69 73 74 20 6f 66  |straight list of|
00007f70  20 66 6f 6e 74 73 2e 20  0a 0a 20 20 20 20 20 20  | fonts. ..      |
00007f80  41 20 68 65 6c 70 20 73  79 73 74 65 6d 20 63 6f  |A help system co|
00007f90  6e 74 61 69 6e 69 6e 67  20 74 68 65 20 66 75 6c  |ntaining the ful|
00007fa0  6c 20 46 6f 6e 74 4d 65  6e 75 20 64 6f 63 75 6d  |l FontMenu docum|
00007fb0  65 6e 74 61 74 69 6f 6e  20 69 73 20 0a 20 20 20  |entation is .   |
00007fc0  20 20 20 73 75 70 70 6c  69 65 64 20 77 69 74 68  |   supplied with|
00007fd0  20 74 68 65 20 45 76 6e  74 53 68 65 6c 6c 20 6c  | the EvntShell l|
00007fe0  69 62 72 61 72 79 20 61  73 20 69 74 20 69 73 20  |ibrary as it is |
00007ff0  61 20 72 65 71 75 69 72  65 6d 65 6e 74 20 74 68  |a requirement th|
00008000  61 74 20 0a 20 20 20 20  20 20 74 68 65 20 74 68  |at .      the th|
00008010  65 20 6d 6f 64 75 6c 65  20 61 6e 64 20 69 74 73  |e module and its|
00008020  20 64 6f 63 75 6d 65 6e  74 61 74 69 6f 6e 20 6d  | documentation m|
00008030  75 73 74 20 62 65 20 73  75 70 70 6c 69 65 64 20  |ust be supplied |
00008040  74 6f 67 65 74 68 65 72  2e 20 0a 20 20 20 20 20  |together. .     |
00008050  20 48 6f 77 65 76 65 72  2c 20 69 74 20 69 73 20  | However, it is |
00008060  75 6e 6c 69 6b 65 6c 79  20 74 68 61 74 20 74 68  |unlikely that th|
00008070  65 20 53 57 49 73 20 70  72 6f 76 69 64 65 64 20  |e SWIs provided |
00008080  62 79 20 74 68 65 20 6d  6f 64 75 6c 65 20 77 69  |by the module wi|
00008090  6c 6c 20 0a 20 20 20 20  20 20 6e 65 65 64 20 74  |ll .      need t|
000080a0  6f 20 62 65 20 63 61 6c  6c 65 64 20 62 79 20 74  |o be called by t|
000080b0  68 65 20 75 73 65 72 20  61 70 70 6c 69 63 61 74  |he user applicat|
000080c0  69 6f 6e 20 61 73 20 74  68 65 20 6c 69 62 72 61  |ion as the libra|
000080d0  72 79 20 63 6f 64 65 20  0a 20 20 20 20 20 20 70  |ry code .      p|
000080e0  65 72 66 6f 72 6d 73 20  74 68 65 20 6e 65 63 65  |erforms the nece|
000080f0  73 73 61 72 79 20 61 63  74 69 6f 6e 73 2e 20 0a  |ssary actions. .|
00008100  0c 0a 20 20 20 20 20 20  54 68 65 20 65 78 61 6d  |..      The exam|
00008110  70 6c 65 20 61 70 70 6c  69 63 61 74 69 6f 6e 20  |ple application |
00008120  21 52 65 64 72 61 77 20  64 65 6d 6f 6e 73 74 72  |!Redraw demonstr|
00008130  61 74 65 73 20 74 68 65  20 75 73 65 20 6f 66 20  |ates the use of |
00008140  74 68 65 73 65 20 0a 20  20 20 20 20 20 72 6f 75  |these .      rou|
00008150  74 69 6e 65 73 2e 20 0a  0a 20 20 20 20 20 20 34  |tines. ..      4|
00008160  2e 31 32 20 49 6e 74 65  72 61 63 74 69 76 65 20  |.12 Interactive |
00008170  48 65 6c 70 20 0a 0a 20  20 20 20 20 20 54 68 65  |Help ..      The|
00008180  20 45 76 6e 74 53 68 65  6c 6c 20 6c 69 62 72 61  | EvntShell libra|
00008190  72 79 20 73 75 70 70 6f  72 74 73 20 41 63 6f 72  |ry supports Acor|
000081a0  6e 27 73 20 49 6e 74 65  72 61 63 74 69 76 65 20  |n's Interactive |
000081b0  48 65 6c 70 20 0a 20 20  20 20 20 20 61 70 70 6c  |Help .      appl|
000081c0  69 63 61 74 69 6f 6e 20  21 48 65 6c 70 20 62 79  |ication !Help by|
000081d0  20 73 65 61 72 63 68 69  6e 67 20 69 63 6f 6e 20  | searching icon |
000081e0  76 61 6c 69 64 61 74 69  6f 6e 20 73 74 72 69 6e  |validation strin|
000081f0  67 73 20 66 6f 72 20 74  68 65 20 0a 20 20 20 20  |gs for the .    |
00008200  20 20 27 49 27 20 63 6f  6d 6d 61 6e 64 20 28 61  |  'I' command (a|
00008210  73 20 72 65 63 6f 6d 6d  65 6e 64 65 64 20 62 79  |s recommended by|
00008220  20 74 68 65 20 61 75 74  68 6f 72 20 6f 66 20 74  | the author of t|
00008230  68 65 20 49 6e 74 65 72  66 61 63 65 20 0a 20 20  |he Interface .  |
00008240  20 20 20 20 6d 6f 64 75  6c 65 29 20 66 6f 72 20  |    module) for |
00008250  61 20 6d 65 73 73 61 67  65 20 74 61 67 2e 20 0a  |a message tag. .|
00008260  0a 20 20 20 20 20 20 54  68 65 20 6d 65 73 73 61  |.      The messa|
00008270  67 65 20 62 65 6c 6f 6e  67 69 6e 67 20 74 6f 20  |ge belonging to |
00008280  74 68 65 20 74 61 67 20  77 69 6c 6c 20 62 65 20  |the tag will be |
00008290  6c 6f 6f 6b 65 64 20 75  70 20 61 6e 64 20 73 65  |looked up and se|
000082a0  6e 74 20 74 6f 20 0a 20  20 20 20 20 20 21 48 65  |nt to .      !He|
000082b0  6c 70 20 28 69 66 20 21  48 65 6c 70 20 69 73 20  |lp (if !Help is |
000082c0  72 75 6e 6e 69 6e 67 29  2e 20 41 6e 20 65 78 61  |running). An exa|
000082d0  6d 70 6c 65 20 77 6f 75  6c 64 20 62 65 20 61 20  |mple would be a |
000082e0  76 61 6c 69 64 61 74 69  6f 6e 20 0a 20 20 20 20  |validation .    |
000082f0  20 20 73 74 72 69 6e 67  20 6f 66 20 22 69 4d 65  |  string of "iMe|
00008300  73 73 54 61 67 30 31 22  2c 20 77 68 65 72 65 20  |ssTag01", where |
00008310  74 68 65 20 66 69 6c 65  20 27 4d 65 73 73 61 67  |the file 'Messag|
00008320  65 73 27 20 63 6f 6e 74  61 69 6e 73 20 74 68 65  |es' contains the|
00008330  20 0a 20 20 20 20 20 20  6c 69 6e 65 20 27 4d 65  | .      line 'Me|
00008340  73 73 54 61 67 30 31 3a  54 68 69 73 20 69 73 20  |ssTag01:This is |
00008350  61 20 74 65 73 74 27 2e  20 27 54 68 69 73 20 69  |a test'. 'This i|
00008360  73 20 61 20 74 65 73 74  27 20 77 6f 75 6c 64 20  |s a test' would |
00008370  62 65 20 74 68 65 20 0a  20 20 20 20 20 20 6d 65  |be the .      me|
00008380  73 73 61 67 65 20 64 69  73 70 6c 61 79 65 64 2e  |ssage displayed.|
00008390  20 0a 0a 20 20 20 20 20  20 49 74 20 69 73 20 61  | ..      It is a|
000083a0  6c 73 6f 20 70 6f 73 73  69 62 6c 65 20 74 6f 20  |lso possible to |
000083b0  61 74 74 61 63 68 20 61  20 6d 65 73 73 61 67 65  |attach a message|
000083c0  20 74 61 67 20 74 6f 20  61 20 77 69 6e 64 6f 77  | tag to a window|
000083d0  20 6f 72 20 61 20 0a 20  20 20 20 20 20 77 69 6e  | or a .      win|
000083e0  64 6f 77 2f 69 63 6f 6e  20 75 73 69 6e 67 20 50  |dow/icon using P|
000083f0  52 4f 43 73 68 65 6c 6c  5f 41 74 74 61 63 68 48  |ROCshell_AttachH|
00008400  65 6c 70 54 61 67 2e 20  41 20 6d 65 73 73 61 67  |elpTag. A messag|
00008410  65 20 74 61 67 20 69 73  20 61 20 0a 20 20 20 20  |e tag is a .    |
00008420  20 20 73 74 72 69 6e 67  20 63 6f 6e 73 69 73 74  |  string consist|
00008430  69 6e 67 20 6f 66 20 6e  6f 74 20 6d 6f 72 65 20  |ing of not more |
00008440  74 68 61 6e 20 31 31 20  63 68 61 72 61 63 74 65  |than 11 characte|
00008450  72 73 20 6c 6f 6e 67 20  61 6e 64 20 0a 20 20 20  |rs long and .   |
00008460  20 20 20 72 65 70 72 65  73 65 6e 74 73 20 61 20  |   represents a |
00008470  6d 65 73 73 61 67 65 20  73 74 72 69 6e 67 20 74  |message string t|
00008480  6f 20 62 65 20 66 6f 75  6e 64 20 69 6e 20 74 68  |o be found in th|
00008490  65 20 27 4d 65 73 73 61  67 65 73 27 20 66 69 6c  |e 'Messages' fil|
000084a0  65 2e 20 0a 0a 20 20 20  20 20 20 34 2e 31 33 20  |e. ..      4.13 |
000084b0  55 73 65 72 20 52 65 64  72 61 77 73 20 0a 0a 20  |User Redraws .. |
000084c0  20 20 20 20 20 34 2e 31  33 2e 31 20 53 69 6d 70  |     4.13.1 Simp|
000084d0  6c 65 20 43 61 73 65 73  20 0a 0a 20 20 20 20 20  |le Cases ..     |
000084e0  20 42 79 20 27 53 69 6d  70 6c 65 20 43 61 73 65  | By 'Simple Case|
000084f0  73 27 20 49 20 6d 65 61  6e 20 74 65 78 74 2c 20  |s' I mean text, |
00008500  6c 69 6e 65 73 2c 20 61  72 63 73 2c 20 66 69 6c  |lines, arcs, fil|
00008510  6c 65 64 20 73 68 61 70  65 73 20 65 74 63 2e 20  |led shapes etc. |
00008520  49 6e 20 0a 20 20 20 20  20 20 6f 74 68 65 72 20  |In .      other |
00008530  77 6f 72 64 73 20 61 6e  79 74 68 69 6e 67 20 74  |words anything t|
00008540  68 61 74 20 69 74 20 69  73 20 65 61 73 79 20 66  |hat it is easy f|
00008550  6f 72 20 74 68 65 20 70  72 6f 67 72 61 6d 20 74  |or the program t|
00008560  6f 20 72 65 64 72 61 77  20 0a 20 20 20 20 20 20  |o redraw .      |
00008570  71 75 69 63 6b 6c 79 20  2d 20 74 68 69 73 20 65  |quickly - this e|
00008580  78 63 6c 75 64 65 73 20  6d 61 70 73 20 6f 66 20  |xcludes maps of |
00008590  74 68 65 20 77 6f 72 6c  64 20 61 6e 64 20 61 6e  |the world and an|
000085a0  79 20 6b 69 6e 64 20 6f  66 20 72 61 6e 64 6f 6d  |y kind of random|
000085b0  20 0a 20 20 20 20 20 20  64 69 73 70 6c 61 79 2e  | .      display.|
000085c0  20 46 6f 72 20 74 68 65  73 65 20 63 61 73 65 73  | For these cases|
000085d0  20 69 74 20 69 73 20 6d  75 63 68 20 66 61 73 74  | it is much fast|
000085e0  65 72 20 74 6f 20 72 65  64 69 72 65 63 74 20 74  |er to redirect t|
000085f0  68 65 20 73 63 72 65 65  6e 20 0a 20 20 20 20 20  |he screen .     |
00008600  20 6f 75 74 70 75 74 20  69 6e 74 6f 20 61 20 73  | output into a s|
00008610  70 72 69 74 65 20 28 73  65 65 20 74 68 65 20 6e  |prite (see the n|
00008620  65 78 74 20 73 65 63 74  69 6f 6e 29 2e 20 0a 0a  |ext section). ..|
00008630  20 20 20 20 20 20 55 73  69 6e 67 20 74 68 65 20  |      Using the |
00008640  65 78 61 6d 70 6c 65 20  61 70 70 6c 69 63 61 74  |example applicat|
00008650  69 6f 6e 20 79 6f 75 20  63 72 65 61 74 65 64 20  |ion you created |
00008660  65 61 72 6c 69 65 72 20  28 6f 72 20 63 72 65 61  |earlier (or crea|
00008670  74 65 20 61 20 0a 20 20  20 20 20 20 6e 65 77 20  |te a .      new |
00008680  6f 6e 65 20 75 73 69 6e  67 20 41 70 70 42 75 69  |one using AppBui|
00008690  6c 64 29 20 61 64 64 20  74 68 65 20 66 6f 6c 6c  |ld) add the foll|
000086a0  6f 77 69 6e 67 20 6c 69  6e 65 20 74 6f 20 0a 20  |owing line to . |
000086b0  20 20 20 20 20 50 52 4f  43 53 65 74 55 70 5f 57  |     PROCSetUp_W|
000086c0  69 6e 64 6f 77 73 3a 20  0a 0a 20 20 20 20 20 20  |indows: ..      |
000086d0  0a 20 20 20 20 20 20 50  52 4f 43 73 68 65 6c 6c  |.      PROCshell|
000086e0  5f 41 74 74 61 63 68 55  73 65 72 52 65 64 72 61  |_AttachUserRedra|
000086f0  77 28 6d 61 69 6e 77 25  2c 22 5f 72 65 64 72 61  |w(mainw%,"_redra|
00008700  77 22 29 0a 20 20 20 20  20 20 0a 20 20 20 20 20  |w").      .     |
00008710  20 0a 20 20 20 20 20 20  61 6e 64 20 61 64 64 20  | .      and add |
00008720  74 68 65 20 66 6f 6c 6c  6f 77 69 6e 67 20 46 4e  |the following FN|
00008730  20 64 65 66 69 6e 69 74  69 6f 6e 3a 20 0a 0a 20  | definition: .. |
00008740  20 20 20 20 20 0a 20 20  20 20 20 20 44 45 46 20  |     .      DEF |
00008750  46 4e 5f 72 65 64 72 61  77 28 62 6c 6b 25 2c 78  |FN_redraw(blk%,x|
00008760  30 25 2c 79 30 25 29 0a  20 20 20 20 20 20 52 45  |0%,y0%).      RE|
00008770  4d 20 73 65 74 20 63 6f  6c 6f 75 72 20 66 6f 72  |M set colour for|
00008780  20 63 69 72 63 6c 65 20  2d 20 63 6f 6c 6f 75 72  | circle - colour|
00008790  73 20 61 72 65 20 6e 75  6d 62 65 72 65 64 20 30  |s are numbered 0|
000087a0  2d 31 35 21 0a 20 20 20  20 20 20 52 45 4d 20 64  |-15!.      REM d|
000087b0  72 61 77 20 74 68 65 20  63 69 72 63 6c 65 2e 2e  |raw the circle..|
000087c0  0a 20 20 20 20 20 20 53  59 53 20 22 57 69 6d 70  |.      SYS "Wimp|
000087d0  5f 53 65 74 43 6f 6c 6f  75 72 22 2c 31 31 0a 20  |_SetColour",11. |
000087e0  20 20 20 20 20 43 49 52  43 4c 45 20 46 49 4c 4c  |     CIRCLE FILL|
000087f0  20 78 30 25 2b 32 30 30  2c 79 30 25 2d 32 30 30  | x0%+200,y0%-200|
00008800  2c 31 32 30 0a 20 20 20  20 20 20 52 45 4d 20 73  |,120.      REM s|
00008810  65 74 20 63 6f 6c 6f 75  72 20 66 6f 72 20 74 65  |et colour for te|
00008820  78 74 2e 2e 2e 0a 20 20  20 20 20 20 53 59 53 20  |xt....      SYS |
00008830  22 57 69 6d 70 5f 53 65  74 43 6f 6c 6f 75 72 22  |"Wimp_SetColour"|
00008840  2c 38 20 3a 52 45 4d 20  63 6f 6c 6f 75 72 73 20  |,8 :REM colours |
00008850  61 72 65 20 6e 75 6d 62  65 72 65 64 20 30 2d 31  |are numbered 0-1|
00008860  35 21 0a 20 20 20 20 20  20 4d 4f 56 45 20 78 30  |5!.      MOVE x0|
00008870  25 2b 38 30 2c 79 30 25  2d 33 34 30 3a 50 52 49  |%+80,y0%-340:PRI|
00008880  4e 54 20 22 54 68 69 73  20 69 73 20 61 6e 20 65  |NT "This is an e|
00008890  78 61 6d 70 6c 65 20 6f  66 22 0a 20 20 20 20 20  |xample of".     |
000088a0  20 4d 4f 56 45 20 78 30  25 2b 34 30 2c 79 30 25  | MOVE x0%+40,y0%|
000088b0  2d 33 38 30 3a 50 52 49  4e 54 20 22 75 73 65 72  |-380:PRINT "user|
000088c0  20 64 72 61 77 6e 20 74  65 78 74 20 61 6e 64 20  | drawn text and |
000088d0  67 72 61 70 68 69 63 73  22 0a 20 20 20 20 20 20  |graphics".      |
000088e0  4d 4f 56 45 20 78 30 25  2b 39 35 2c 79 30 25 2d  |MOVE x0%+95,y0%-|
000088f0  34 32 30 3a 50 52 49 4e  54 20 22 69 6e 20 61 20  |420:PRINT "in a |
00008900  64 65 73 6b 74 6f 70 20  77 69 6e 64 6f 77 22 0a  |desktop window".|
00008910  20 20 20 20 20 20 3d 30  0a 20 20 20 20 20 20 0a  |      =0.      .|
00008920  20 20 20 20 20 20 0a 20  20 20 20 20 20 54 68 65  |      .      The|
00008930  20 72 6f 75 74 69 6e 65  20 74 68 61 74 20 61 74  | routine that at|
00008940  74 61 63 68 65 73 20 74  68 65 20 72 65 64 72 61  |taches the redra|
00008950  77 20 65 76 65 6e 74 20  61 6c 73 6f 20 61 6c 74  |w event also alt|
00008960  65 72 73 20 74 68 65 20  0a 20 20 20 20 20 20 27  |ers the .      '|
00008970  66 6c 61 67 73 27 20 6f  66 20 74 68 65 20 77 69  |flags' of the wi|
00008980  6e 64 6f 77 20 73 6f 20  74 68 61 74 20 74 68 65  |ndow so that the|
00008990  20 27 41 75 74 6f 20 72  65 64 72 61 77 27 20 62  | 'Auto redraw' b|
000089a0  69 74 20 69 73 20 73 65  74 20 75 70 20 0a 20 20  |it is set up .  |
000089b0  20 20 20 20 63 6f 72 72  65 63 74 6c 79 2e 20 57  |    correctly. W|
000089c0  68 65 6e 20 79 6f 75 20  72 75 6e 20 74 68 65 20  |hen you run the |
000089d0  61 70 70 6c 69 63 61 74  69 6f 6e 20 61 6e 64 20  |application and |
000089e0  6f 70 65 6e 20 74 68 65  20 6d 61 69 6e 20 77 69  |open the main wi|
000089f0  6e 64 6f 77 20 0a 20 20  20 20 20 20 6e 6f 77 2c  |ndow .      now,|
00008a00  20 61 20 63 69 72 63 6c  65 20 61 6e 64 20 73 6f  | a circle and so|
00008a10  6d 65 20 74 65 78 74 20  77 69 6c 6c 20 61 70 70  |me text will app|
00008a20  65 61 72 20 69 6e 20 74  68 65 20 77 69 6e 64 6f  |ear in the windo|
00008a30  77 2e 20 49 66 20 61 6e  6f 74 68 65 72 20 0a 20  |w. If another . |
00008a40  20 20 20 20 20 77 69 6e  64 6f 77 20 69 73 20 6d  |     window is m|
00008a50  6f 76 65 64 20 6f 76 65  72 20 74 68 69 73 20 6f  |oved over this o|
00008a60  6e 65 2c 20 6e 6f 74 65  20 74 68 61 74 20 74 68  |ne, note that th|
00008a70  65 20 77 69 6e 64 6f 77  20 69 73 20 63 6f 72 72  |e window is corr|
00008a80  65 63 74 6c 79 20 0a 20  20 20 20 20 20 72 65 64  |ectly .      red|
00008a90  72 61 77 6e 2e 20 0a 0c  0a 20 20 20 20 20 20 54  |rawn. ...      T|
00008aa0  68 65 20 70 61 72 61 6d  65 74 65 72 73 20 78 30  |he parameters x0|
00008ab0  25 20 61 6e 64 20 79 30  25 20 66 6f 72 20 74 68  |% and y0% for th|
00008ac0  65 20 72 65 64 72 61 77  20 72 6f 75 74 69 6e 65  |e redraw routine|
00008ad0  20 61 72 65 20 74 68 65  20 0a 20 20 20 20 20 20  | are the .      |
00008ae0  63 6f 6f 72 64 69 6e 61  74 65 73 20 6f 66 20 74  |coordinates of t|
00008af0  68 65 20 74 6f 70 20 6c  65 66 74 20 63 6f 72 6e  |he top left corn|
00008b00  65 72 20 6f 66 20 74 68  65 20 77 69 6e 64 6f 77  |er of the window|
00008b10  2e 20 4e 6f 74 65 20 74  68 61 74 20 79 20 0a 20  |. Note that y . |
00008b20  20 20 20 20 20 63 6f 6f  72 64 69 6e 61 74 65 73  |     coordinates|
00008b30  20 61 72 65 20 6e 65 67  61 74 69 76 65 21 20 54  | are negative! T|
00008b40  72 79 20 65 78 70 65 72  69 6d 65 6e 74 69 6e 67  |ry experimenting|
00008b50  20 77 69 74 68 20 6f 74  68 65 72 20 64 72 61 77  | with other draw|
00008b60  69 6e 67 20 0a 20 20 20  20 20 20 63 6f 6d 6d 61  |ing .      comma|
00008b70  6e 64 73 20 61 6e 64 20  70 75 74 74 69 6e 67 20  |nds and putting |
00008b80  74 65 78 74 20 69 6e 20  64 69 66 66 65 72 65 6e  |text in differen|
00008b90  74 20 70 6c 61 63 65 73  20 69 6e 20 74 68 65 20  |t places in the |
00008ba0  77 69 6e 64 6f 77 20 74  6f 20 0a 20 20 20 20 20  |window to .     |
00008bb0  20 67 65 74 20 74 68 65  20 68 61 6e 67 20 6f 66  | get the hang of|
00008bc0  20 74 68 69 73 2e 20 0a  0a 20 20 20 20 20 20 34  | this. ..      4|
00008bd0  2e 31 33 2e 32 20 44 72  61 77 69 6e 67 20 49 6e  |.13.2 Drawing In|
00008be0  74 6f 20 41 20 53 70 72  69 74 65 20 0a 0a 20 20  |to A Sprite ..  |
00008bf0  20 20 20 20 57 69 74 68  20 61 20 6d 6f 72 65 20  |    With a more |
00008c00  63 6f 6d 70 6c 69 63 61  74 65 64 20 6f 72 20 72  |complicated or r|
00008c10  61 6e 64 6f 6d 20 64 69  73 70 6c 61 79 20 79 6f  |andom display yo|
00008c20  75 20 6e 65 65 64 20 74  6f 20 73 65 74 20 75 70  |u need to set up|
00008c30  20 61 20 0a 20 20 20 20  20 20 73 70 72 69 74 65  | a .      sprite|
00008c40  20 74 6f 20 64 72 61 77  20 69 6e 74 6f 2e 20 54  | to draw into. T|
00008c50  68 65 20 65 78 61 6d 70  6c 65 20 61 70 70 6c 69  |he example appli|
00008c60  63 61 74 69 6f 6e 20 21  52 65 64 72 61 77 32 20  |cation !Redraw2 |
00008c70  73 68 6f 77 73 20 68 6f  77 20 0a 20 20 20 20 20  |shows how .     |
00008c80  20 74 6f 20 64 6f 20 74  68 69 73 2e 20 0a 0a 20  | to do this. .. |
00008c90  20 20 20 20 20 4e 6f 74  65 20 69 6e 20 74 68 69  |     Note in thi|
00008ca0  73 20 63 61 73 65 20 74  68 61 74 20 74 68 65 20  |s case that the |
00008cb0  64 69 73 70 6c 61 79 20  77 69 74 68 69 6e 20 74  |display within t|
00008cc0  68 65 20 77 69 6e 64 6f  77 20 69 73 20 61 6e 69  |he window is ani|
00008cd0  6d 61 74 65 64 20 0a 20  20 20 20 20 20 62 79 20  |mated .      by |
00008ce0  63 61 6c 6c 69 6e 67 20  74 68 65 20 70 6c 6f 74  |calling the plot|
00008cf0  74 69 6e 67 20 72 6f 75  74 69 6e 65 20 61 74 20  |ting routine at |
00008d00  65 76 65 72 79 20 6e 75  6c 6c 20 65 76 65 6e 74  |every null event|
00008d10  20 72 65 63 65 69 76 65  64 2e 20 0a 20 20 20 20  | received. .    |
00008d20  20 20 54 68 65 72 65 20  61 6c 73 6f 20 68 61 73  |  There also has|
00008d30  20 74 6f 20 62 65 20 74  77 6f 20 72 65 64 72 61  | to be two redra|
00008d40  77 69 6e 67 20 72 6f 75  74 69 6e 65 73 2c 20 6f  |wing routines, o|
00008d50  6e 65 20 63 61 6c 6c 65  64 20 77 68 65 6e 20 79  |ne called when y|
00008d60  6f 75 20 0a 20 20 20 20  20 20 77 61 6e 74 20 74  |ou .      want t|
00008d70  68 65 20 64 69 73 70 6c  61 79 20 72 65 64 72 61  |he display redra|
00008d80  77 6e 20 61 6e 64 20 6f  6e 65 20 66 6f 72 20 77  |wn and one for w|
00008d90  68 65 6e 20 74 68 65 20  77 69 6d 70 20 77 61 6e  |hen the wimp wan|
00008da0  74 73 20 69 74 20 0a 20  20 20 20 20 20 72 65 64  |ts it .      red|
00008db0  72 61 77 6e 20 28 68 65  6e 63 65 20 74 68 65 20  |rawn (hence the |
00008dc0  63 61 6c 6c 20 74 6f 20  50 52 4f 43 73 68 65 6c  |call to PROCshel|
00008dd0  6c 5f 41 74 74 61 63 68  55 73 65 72 52 65 64 72  |l_AttachUserRedr|
00008de0  61 77 29 2e 20 49 6e 20  62 6f 74 68 20 0a 20 20  |aw). In both .  |
00008df0  20 20 20 20 63 61 73 65  73 20 69 74 20 69 73 20  |    cases it is |
00008e00  6e 65 63 65 73 73 61 72  79 20 6a 75 73 74 20 74  |necessary just t|
00008e10  6f 20 72 65 70 6c 6f 74  20 74 68 65 20 73 70 72  |o replot the spr|
00008e20  69 74 65 2e 20 0a 0a 20  20 20 20 20 20 34 2e 31  |ite. ..      4.1|
00008e30  34 20 43 6f 6d 70 6c 65  78 20 49 63 6f 6e 73 20  |4 Complex Icons |
00008e40  0a 0a 20 20 20 20 20 20  34 2e 31 34 2e 31 20 42  |..      4.14.1 B|
00008e50  75 6d 70 20 49 63 6f 6e  73 20 0a 0a 20 20 20 20  |ump Icons ..    |
00008e60  20 20 42 75 6d 70 20 69  63 6f 6e 73 20 61 72 65  |  Bump icons are|
00008e70  20 73 69 6d 70 6c 79 20  61 20 70 61 69 72 20 6f  | simply a pair o|
00008e80  66 20 28 75 73 75 61 6c  6c 79 21 29 20 61 72 72  |f (usually!) arr|
00008e90  6f 77 20 73 68 61 70 65  64 20 69 63 6f 6e 73 20  |ow shaped icons |
00008ea0  0a 20 20 20 20 20 20 74  68 61 74 20 65 66 66 65  |.      that effe|
00008eb0  63 74 20 74 68 65 20 76  61 6c 75 65 20 64 69 73  |ct the value dis|
00008ec0  70 6c 61 79 65 64 20 69  6e 20 61 20 74 68 69 72  |played in a thir|
00008ed0  64 20 69 63 6f 6e 2e 20  54 68 65 20 45 76 6e 74  |d icon. The Evnt|
00008ee0  53 68 65 6c 6c 20 0a 20  20 20 20 20 20 6c 69 62  |Shell .      lib|
00008ef0  72 61 72 79 20 61 6c 6c  6f 77 73 20 79 6f 75 20  |rary allows you |
00008f00  74 6f 20 63 72 65 61 74  65 20 74 68 69 73 20 65  |to create this e|
00008f10  66 66 65 63 74 20 77 69  74 68 20 6f 6e 65 20 63  |ffect with one c|
00008f20  61 6c 6c 20 74 6f 20 0a  20 20 20 20 20 20 50 52  |all to .      PR|
00008f30  4f 43 73 68 65 6c 6c 5f  41 74 74 61 63 68 42 75  |OCshell_AttachBu|
00008f40  6d 70 49 63 6f 6e 48 61  6e 64 6c 65 72 2e 20 53  |mpIconHandler. S|
00008f50  65 65 20 74 68 65 20 21  56 42 61 73 65 32 20 64  |ee the !VBase2 d|
00008f60  65 6d 6f 20 61 70 70 6c  69 63 61 74 69 6f 6e 20  |emo application |
00008f70  0a 20 20 20 20 20 20 66  6f 72 20 61 6e 20 65 78  |.      for an ex|
00008f80  61 6d 70 6c 65 20 6f 66  20 69 74 73 20 75 73 65  |ample of its use|
00008f90  2e 20 0a 0a 20 20 20 20  20 20 34 2e 31 35 20 4d  |. ..      4.15 M|
00008fa0  65 6d 6f 72 79 20 4d 61  6e 61 67 65 6d 65 6e 74  |emory Management|
00008fb0  20 0a 0a 20 20 20 20 20  20 41 20 63 72 75 63 69  | ..      A cruci|
00008fc0  61 6c 20 65 6c 65 6d 65  6e 74 20 6f 66 20 74 68  |al element of th|
00008fd0  65 20 45 76 65 6e 74 53  68 65 6c 6c 20 6c 69 62  |e EventShell lib|
00008fe0  72 61 72 79 20 69 73 20  74 68 65 20 75 73 65 20  |rary is the use |
00008ff0  6f 66 20 6d 65 6d 6f 72  79 20 0a 20 20 20 20 20  |of memory .     |
00009000  20 6d 61 6e 61 67 65 6d  65 6e 74 20 72 6f 75 74  | management rout|
00009010  69 6e 65 73 20 6f 72 69  67 69 6e 61 6c 6c 79 20  |ines originally |
00009020  70 75 62 6c 69 73 68 65  64 20 69 6e 20 52 69 73  |published in Ris|
00009030  63 20 55 73 65 72 20 6d  61 67 61 7a 69 6e 65 20  |c User magazine |
00009040  0a 20 20 20 20 20 20 61  6e 64 20 75 73 65 64 20  |.      and used |
00009050  77 69 74 68 20 70 65 72  6d 69 73 73 69 6f 6e 2e  |with permission.|
00009060  20 4d 61 6e 79 20 6c 69  62 72 61 72 79 20 72 6f  | Many library ro|
00009070  75 74 69 6e 65 73 20 72  65 71 75 69 72 65 20 73  |utines require s|
00009080  6f 6d 65 20 0a 20 20 20  20 20 20 6d 65 6d 6f 72  |ome .      memor|
00009090  79 20 77 6f 72 6b 73 70  61 63 65 20 61 6e 64 20  |y workspace and |
000090a0  74 68 65 79 20 6f 62 74  61 69 6e 20 74 68 69 73  |they obtain this|
000090b0  20 62 79 20 63 61 6c 6c  69 6e 67 20 0a 20 20 20  | by calling .   |
000090c0  20 20 20 46 4e 73 68 65  6c 6c 5f 48 65 61 70 42  |   FNshell_HeapB|
000090d0  6c 6f 63 6b 46 65 74 63  68 28 62 79 74 65 73 5f  |lockFetch(bytes_|
000090e0  72 65 71 75 69 72 65 64  29 20 77 68 69 63 68 20  |required) which |
000090f0  72 65 74 75 72 6e 73 20  74 68 65 20 61 64 64 72  |returns the addr|
00009100  65 73 73 20 0a 20 20 20  20 20 20 6f 66 20 74 68  |ess .      of th|
00009110  65 20 61 6c 6c 6f 63 61  74 65 64 20 6d 65 6d 6f  |e allocated memo|
00009120  72 79 20 61 6e 64 20 72  65 6c 65 61 73 65 20 69  |ry and release i|
00009130  74 20 77 68 65 6e 20 74  68 65 79 20 61 72 65 20  |t when they are |
00009140  66 69 6e 69 73 68 65 64  20 0a 20 20 20 20 20 20  |finished .      |
00009150  77 69 74 68 20 50 52 4f  43 73 68 65 6c 6c 5f 48  |with PROCshell_H|
00009160  65 61 70 42 6c 6f 63 6b  52 65 74 75 72 6e 2e 20  |eapBlockReturn. |
00009170  0a 0a 20 20 20 20 20 20  54 68 69 73 20 69 73 20  |..      This is |
00009180  76 69 74 61 6c 20 66 6f  72 20 61 76 6f 69 64 69  |vital for avoidi|
00009190  6e 67 20 27 73 69 64 65  20 65 66 66 65 63 74 73  |ng 'side effects|
000091a0  27 20 63 61 75 73 65 64  20 62 79 20 75 73 69 6e  |' caused by usin|
000091b0  67 20 74 68 65 20 0a 20  20 20 20 20 20 73 61 6d  |g the .      sam|
000091c0  65 20 62 6c 6f 63 6b 20  6f 66 20 6d 65 6d 6f 72  |e block of memor|
000091d0  79 20 66 6f 72 20 64 69  66 66 65 72 65 6e 74 20  |y for different |
000091e0  70 75 72 70 6f 73 65 73  20 61 73 20 6d 6f 73 74  |purposes as most|
000091f0  20 57 49 4d 50 20 70 72  6f 67 72 61 6d 73 20 0a  | WIMP programs .|
00009200  20 20 20 20 20 20 74 65  6e 64 20 74 6f 20 64 6f  |      tend to do|
00009210  2e 20 45 71 75 61 6c 6c  79 20 69 6d 70 6f 72 74  |. Equally import|
00009220  61 6e 74 20 69 73 20 74  68 65 20 66 61 63 74 20  |ant is the fact |
00009230  74 68 61 74 20 61 73 20  74 68 65 20 72 6f 75 74  |that as the rout|
00009240  69 6e 65 73 20 0a 20 20  20 20 20 20 61 72 65 20  |ines .      are |
00009250  77 72 69 74 74 65 6e 20  69 6e 20 41 52 4d 20 63  |written in ARM c|
00009260  6f 64 65 20 74 68 65 79  20 61 72 65 20 65 78 74  |ode they are ext|
00009270  72 65 6d 65 6c 79 20 66  61 73 74 2e 20 0a 0a 20  |remely fast. .. |
00009280  20 20 20 20 20 41 6e 6f  74 68 65 72 20 70 6f 69  |     Another poi|
00009290  6e 74 20 74 6f 20 6e 6f  74 65 20 69 73 20 74 68  |nt to note is th|
000092a0  61 74 20 74 68 69 73 20  6d 65 6d 6f 72 79 20 69  |at this memory i|
000092b0  73 20 63 6c 61 69 6d 65  64 20 66 72 6f 6d 20 74  |s claimed from t|
000092c0  68 65 20 0a 20 20 20 20  20 20 63 75 72 72 65 6e  |he .      curren|
000092d0  74 20 77 69 6d 70 20 73  6c 6f 74 20 61 6e 64 20  |t wimp slot and |
000092e0  6e 6f 74 20 74 68 65 20  52 4d 41 20 28 52 65 6c  |not the RMA (Rel|
000092f0  6f 63 61 74 61 62 6c 65  20 4d 6f 64 75 6c 65 20  |ocatable Module |
00009300  41 72 65 61 29 2e 20 54  68 69 73 20 0a 20 20 20  |Area). This .   |
00009310  20 20 20 65 6e 73 75 72  65 73 20 74 68 61 74 20  |   ensures that |
00009320  61 6c 6c 20 6f 66 20 74  68 65 20 6d 65 6d 6f 72  |all of the memor|
00009330  79 20 63 6c 61 69 6d 65  64 20 62 79 20 74 68 65  |y claimed by the|
00009340  20 61 70 70 6c 69 63 61  74 69 6f 6e 20 69 73 20  | application is |
00009350  0a 20 20 20 20 20 20 72  65 6c 65 61 73 65 64 20  |.      released |
00009360  62 61 63 6b 20 74 6f 20  74 68 65 20 66 72 65 65  |back to the free|
00009370  20 70 6f 6f 6c 20 77 68  65 6e 20 74 68 65 20 61  | pool when the a|
00009380  70 70 6c 69 63 61 74 69  6f 6e 20 71 75 69 74 73  |pplication quits|
00009390  20 2d 20 74 68 69 73 20  0a 20 20 20 20 20 20 69  | - this .      i|
000093a0  73 20 6e 6f 74 20 74 68  65 20 63 61 73 65 20 69  |s not the case i|
000093b0  66 20 6d 65 6d 6f 72 79  20 69 73 20 63 6c 61 69  |f memory is clai|
000093c0  6d 65 64 20 66 72 6f 6d  20 74 68 65 20 52 4d 41  |med from the RMA|
000093d0  2e 20 49 74 20 69 73 20  6f 6e 6c 79 20 0a 20 20  |. It is only .  |
000093e0  20 20 20 20 70 6f 73 73  69 62 6c 65 20 74 6f 20  |    possible to |
000093f0  72 65 63 6c 61 69 6d 20  52 4d 41 20 6d 65 6d 6f  |reclaim RMA memo|
00009400  72 79 20 69 66 20 74 68  65 20 66 72 65 65 20 73  |ry if the free s|
00009410  70 61 63 65 20 69 73 20  61 74 20 74 68 65 20 74  |pace is at the t|
00009420  6f 70 20 6f 66 20 0a 20  20 20 20 20 20 74 68 65  |op of .      the|
00009430  20 52 4d 41 20 77 68 69  63 68 20 6c 65 61 64 73  | RMA which leads|
00009440  20 74 6f 20 74 68 65 20  52 4d 41 20 61 6c 6c 6f  | to the RMA allo|
00009450  63 61 74 69 6f 6e 20 67  72 61 64 75 61 6c 6c 79  |cation gradually|
00009460  20 67 72 6f 77 69 6e 67  20 61 73 20 0a 20 20 20  | growing as .   |
00009470  20 20 20 79 6f 75 20 72  75 6e 20 61 6e 64 20 71  |   you run and q|
00009480  75 69 74 20 61 70 70 6c  69 63 61 74 69 6f 6e 73  |uit applications|
00009490  2e 20 0a 0a 20 20 20 20  20 20 55 6e 66 6f 72 74  |. ..      Unfort|
000094a0  75 6e 61 74 65 6c 79 20  28 69 6e 20 74 68 65 20  |unately (in the |
000094b0  61 75 74 68 6f 72 73 20  76 69 65 77 21 29 20 74  |authors view!) t|
000094c0  68 65 20 4d 65 6e 75 55  74 69 6c 73 20 6d 6f 64  |he MenuUtils mod|
000094d0  75 6c 65 20 75 73 65 73  20 0a 20 20 20 20 20 20  |ule uses .      |
000094e0  74 68 65 20 52 4d 41 20  66 6f 72 20 73 74 6f 72  |the RMA for stor|
000094f0  61 67 65 20 6f 66 20 69  6e 64 69 72 65 63 74 65  |age of indirecte|
00009500  64 20 64 61 74 61 20 61  6e 64 20 6d 65 6e 75 20  |d data and menu |
00009510  73 74 72 75 63 74 75 72  65 73 2e 20 0a 20 20 20  |structures. .   |
00009520  20 20 20 48 6f 70 65 66  75 6c 6c 79 20 74 68 69  |   Hopefully thi|
00009530  73 20 64 61 74 61 20 67  65 74 73 20 70 75 74 20  |s data gets put |
00009540  69 6e 20 61 6e 79 20 73  6d 61 6c 6c 20 61 76 61  |in any small ava|
00009550  69 6c 61 62 6c 65 20 62  6c 6f 63 6b 73 20 73 6f  |ilable blocks so|
00009560  20 0a 20 20 20 20 20 20  74 68 61 74 20 74 68 65  | .      that the|
00009570  20 52 4d 41 20 61 6c 6c  6f 63 61 74 69 6f 6e 20  | RMA allocation |
00009580  64 6f 65 73 20 6e 6f 74  20 69 6e 63 72 65 61 73  |does not increas|
00009590  65 2e 20 0a 0c 0a 20 20  20 20 20 20 59 6f 75 20  |e. ...      You |
000095a0  61 72 65 20 73 74 72 6f  6e 67 6c 79 20 61 64 76  |are strongly adv|
000095b0  69 73 65 64 20 74 6f 20  75 73 65 20 74 68 65 20  |ised to use the |
000095c0  73 75 70 70 6c 69 65 64  20 6d 65 6d 6f 72 79 20  |supplied memory |
000095d0  6d 61 6e 61 67 65 6d 65  6e 74 20 0a 20 20 20 20  |management .    |
000095e0  20 20 72 6f 75 74 69 6e  65 73 20 69 6e 20 74 68  |  routines in th|
000095f0  65 20 75 73 65 72 20 61  70 70 6c 69 63 61 74 69  |e user applicati|
00009600  6f 6e 20 73 68 6f 75 6c  64 20 79 6f 75 20 72 65  |on should you re|
00009610  71 75 69 72 65 20 73 74  6f 72 61 67 65 20 66 6f  |quire storage fo|
00009620  72 20 0a 20 20 20 20 20  20 64 61 74 61 2c 20 6f  |r .      data, o|
00009630  72 20 74 65 6d 70 6f 72  61 72 79 20 62 6c 6f 63  |r temporary bloc|
00009640  6b 73 20 66 6f 72 20 75  73 65 20 77 69 74 68 20  |ks for use with |
00009650  53 57 49 20 63 61 6c 6c  73 20 66 6f 72 20 65 78  |SWI calls for ex|
00009660  61 6d 70 6c 65 2e 20 54  68 65 20 0a 20 20 20 20  |ample. The .    |
00009670  20 20 74 69 6d 65 20 70  65 6e 61 6c 74 79 20 66  |  time penalty f|
00009680  6f 72 20 64 6f 69 6e 67  20 74 68 69 73 20 69 73  |or doing this is|
00009690  20 76 65 72 79 20 73 6d  61 6c 6c 20 61 6e 64 20  | very small and |
000096a0  69 6e 20 61 6e 79 20 63  61 73 65 20 72 65 73 75  |in any case resu|
000096b0  6c 74 73 20 0a 20 20 20  20 20 20 69 6e 20 61 20  |lts .      in a |
000096c0  6d 6f 72 65 20 72 65 6c  69 61 62 6c 65 20 61 6e  |more reliable an|
000096d0  64 20 65 61 73 69 65 72  20 74 6f 20 6d 61 69 6e  |d easier to main|
000096e0  74 61 69 6e 20 61 70 70  6c 69 63 61 74 69 6f 6e  |tain application|
000096f0  2e 20 0a 0a 20 20 20 20  20 20 35 20 54 68 65 20  |. ..      5 The |
00009700  54 6f 6f 6c 73 20 0a 0a  20 20 20 20 20 20 56 61  |Tools ..      Va|
00009710  72 69 6f 75 73 20 70 72  6f 67 72 61 6d 6d 69 6e  |rious programmin|
00009720  67 20 74 6f 6f 6c 73 20  68 61 76 65 20 62 65 65  |g tools have bee|
00009730  6e 20 77 72 69 74 74 65  6e 20 62 79 20 6d 79 73  |n written by mys|
00009740  65 6c 66 20 61 6e 64 20  6f 74 68 65 72 73 20 0a  |elf and others .|
00009750  20 20 20 20 20 20 74 6f  20 6d 61 6b 65 20 70 72  |      to make pr|
00009760  6f 64 75 63 69 6e 67 20  77 69 6d 70 20 61 70 70  |oducing wimp app|
00009770  6c 69 63 61 74 69 6f 6e  73 20 65 61 73 69 65 72  |lications easier|
00009780  20 61 6e 64 20 66 61 73  74 65 72 2e 20 49 66 20  | and faster. If |
00009790  79 6f 75 20 0a 20 20 20  20 20 20 6f 62 74 61 69  |you .      obtai|
000097a0  6e 65 64 20 74 68 65 20  45 76 6e 74 53 68 65 6c  |ned the EvntShel|
000097b0  6c 20 6c 69 62 72 61 72  79 20 6f 72 20 75 70 64  |l library or upd|
000097c0  61 74 65 73 20 74 68 65  72 65 6f 66 20 66 72 6f  |ates thereof fro|
000097d0  6d 20 74 68 65 20 61 75  74 68 6f 72 20 0a 20 20  |m the author .  |
000097e0  20 20 20 20 79 6f 75 20  77 69 6c 6c 20 68 61 76  |    you will hav|
000097f0  65 20 72 65 63 65 69 76  65 64 20 61 6c 6c 20 6f  |e received all o|
00009800  66 20 74 68 65 20 74 6f  6f 6c 73 20 64 65 73 63  |f the tools desc|
00009810  72 69 62 65 64 20 68 65  72 65 2e 20 49 66 20 79  |ribed here. If y|
00009820  6f 75 20 0a 20 20 20 20  20 20 6f 62 74 61 69 6e  |ou .      obtain|
00009830  65 64 20 69 74 20 66 72  6f 6d 20 61 20 50 44 20  |ed it from a PD |
00009840  6c 69 62 72 61 72 79 20  74 68 65 20 61 75 74 68  |library the auth|
00009850  6f 72 20 68 61 73 20 6c  69 74 74 6c 65 20 6f 72  |or has little or|
00009860  20 6e 6f 20 63 6f 6e 74  72 6f 6c 20 0a 20 20 20  | no control .   |
00009870  20 20 20 6f 76 65 72 20  77 68 61 74 20 65 6c 73  |   over what els|
00009880  65 20 69 73 20 73 75 70  70 6c 69 65 64 20 6f 6e  |e is supplied on|
00009890  20 74 68 65 20 64 69 73  6b 2c 20 73 6f 20 79 6f  | the disk, so yo|
000098a0  75 20 6d 61 79 20 68 61  76 65 20 74 6f 20 6f 62  |u may have to ob|
000098b0  74 61 69 6e 20 0a 20 20  20 20 20 20 74 68 65 20  |tain .      the |
000098c0  6d 69 73 73 69 6e 67 20  74 6f 6f 6c 73 20 66 72  |missing tools fr|
000098d0  6f 6d 20 6f 74 68 65 72  20 64 69 73 6b 73 20 69  |om other disks i|
000098e0  6e 20 74 68 65 20 50 44  20 6c 69 62 72 61 72 79  |n the PD library|
000098f0  2c 20 6f 72 20 62 65 74  74 65 72 20 0a 20 20 20  |, or better .   |
00009900  20 20 20 73 74 69 6c 6c  20 73 65 6e 64 20 6d 65  |   still send me|
00009910  20 61 20 62 6c 61 6e 6b  20 64 69 73 6b 2e 20 0a  | a blank disk. .|
00009920  0a 20 20 20 20 20 20 4f  6e 6c 79 20 6f 6e 65 20  |.      Only one |
00009930  6f 66 20 74 68 65 20 74  6f 6f 6c 73 20 28 6f 6e  |of the tools (on|
00009940  65 20 6f 66 20 74 68 65  20 6d 61 6e 79 20 54 65  |e of the many Te|
00009950  6d 70 6c 61 74 65 20 65  64 69 74 6f 72 73 20 0a  |mplate editors .|
00009960  20 20 20 20 20 20 61 76  61 69 6c 61 62 6c 65 29  |      available)|
00009970  20 61 72 65 20 76 69 74  61 6c 20 74 6f 20 74 68  | are vital to th|
00009980  65 20 45 76 6e 74 53 68  65 6c 6c 20 4c 69 62 72  |e EvntShell Libr|
00009990  61 72 79 2c 20 74 68 65  20 6f 74 68 65 72 73 20  |ary, the others |
000099a0  79 6f 75 20 63 61 6e 20  0a 20 20 20 20 20 20 64  |you can .      d|
000099b0  6f 20 77 69 74 68 6f 75  74 20 62 75 74 20 74 68  |o without but th|
000099c0  65 79 20 64 6f 20 6d 61  6b 65 20 6c 69 66 65 20  |ey do make life |
000099d0  65 61 73 69 65 72 2e 20  0a 0a 20 20 20 20 20 20  |easier. ..      |
000099e0  54 68 65 20 66 6f 6c 6c  6f 77 69 6e 67 20 69 73  |The following is|
000099f0  20 61 20 62 72 69 65 66  20 64 65 73 63 72 69 70  | a brief descrip|
00009a00  74 69 6f 6e 20 6f 66 20  74 68 65 20 74 6f 6f 6c  |tion of the tool|
00009a10  73 20 73 75 70 70 6c 69  65 64 20 6f 6e 20 0a 20  |s supplied on . |
00009a20  20 20 20 20 20 41 50 44  4c 20 64 69 73 6b 20 42  |     APDL disk B|
00009a30  31 32 32 2c 20 61 6e 64  20 73 6f 6d 65 20 6f 74  |122, and some ot|
00009a40  68 65 72 20 73 6f 66 74  77 61 72 65 20 77 68 69  |her software whi|
00009a50  63 68 20 6d 61 79 20 62  65 20 75 73 65 66 75 6c  |ch may be useful|
00009a60  20 66 6f 72 20 0a 20 20  20 20 20 20 64 65 76 65  | for .      deve|
00009a70  6c 6f 70 69 6e 67 20 61  70 70 6c 69 63 61 74 69  |loping applicati|
00009a80  6f 6e 73 20 0a 0a 20 20  20 20 20 20 35 2e 31 20  |ons ..      5.1 |
00009a90  21 41 70 70 42 75 69 6c  64 20 0a 0a 20 20 20 20  |!AppBuild ..    |
00009aa0  20 20 43 72 65 61 74 65  73 20 6e 65 77 20 61 70  |  Creates new ap|
00009ab0  70 6c 69 63 61 74 69 6f  6e 20 73 68 65 6c 6c 73  |plication shells|
00009ac0  20 61 73 20 27 73 74 61  6e 64 20 61 6c 6f 6e 65  | as 'stand alone|
00009ad0  27 20 61 70 70 6c 69 63  61 74 69 6f 6e 73 20 66  |' applications f|
00009ae0  6f 72 20 0a 20 20 20 20  20 20 64 69 73 74 72 69  |or .      distri|
00009af0  62 75 74 69 6f 6e 2c 20  6f 72 20 6f 6e 65 73 20  |bution, or ones |
00009b00  74 68 61 74 20 64 65 70  65 6e 64 20 6f 6e 20 21  |that depend on !|
00009b10  53 68 65 6c 6c 53 79 73  2e 20 59 6f 75 20 63 61  |ShellSys. You ca|
00009b20  6e 20 73 70 65 63 69 66  79 20 61 20 0a 20 20 20  |n specify a .   |
00009b30  20 20 20 6e 61 6d 65 20  66 6f 72 20 74 68 65 20  |   name for the |
00009b40  61 70 70 6c 69 63 61 74  69 6f 6e 2c 20 61 6e 64  |application, and|
00009b50  20 63 68 6f 6f 73 65 20  77 68 65 74 68 65 72 20  | choose whether |
00009b60  6f 72 20 6e 6f 74 20 74  6f 20 6d 61 6b 65 20 69  |or not to make i|
00009b70  74 20 0a 20 20 20 20 20  20 27 53 74 61 6e 64 20  |t .      'Stand |
00009b80  41 6c 6f 6e 65 27 20 69  2e 65 20 69 66 20 61 6c  |Alone' i.e if al|
00009b90  6c 20 74 68 65 20 66 69  6c 65 73 20 72 65 71 75  |l the files requ|
00009ba0  69 72 65 64 20 61 72 65  20 63 6f 70 69 65 64 20  |ired are copied |
00009bb0  69 6e 74 6f 20 74 68 65  20 0a 20 20 20 20 20 20  |into the .      |
00009bc0  6e 65 77 20 61 70 70 6c  69 63 61 74 69 6f 6e 20  |new application |
00009bd0  64 69 72 65 63 74 6f 72  79 2e 20 49 66 20 69 74  |directory. If it|
00009be0  20 69 73 20 6e 6f 74 20  61 20 73 74 61 6e 64 20  | is not a stand |
00009bf0  61 6c 6f 6e 65 20 61 70  70 6c 69 63 61 74 69 6f  |alone applicatio|
00009c00  6e 20 0a 20 20 20 20 20  20 74 68 65 6e 20 6d 6f  |n .      then mo|
00009c10  64 75 6c 65 73 2c 20 6d  65 73 73 61 67 65 20 66  |dules, message f|
00009c20  69 6c 65 73 20 65 74 63  20 77 69 6c 6c 20 62 65  |iles etc will be|
00009c30  20 6c 6f 61 64 65 64 20  66 72 6f 6d 20 74 68 65  | loaded from the|
00009c40  20 21 53 68 65 6c 6c 53  79 73 20 0a 20 20 20 20  | !ShellSys .    |
00009c50  20 20 64 69 72 65 63 74  6f 72 79 2e 20 0a 0a 20  |  directory. .. |
00009c60  20 20 20 20 20 54 68 69  73 20 61 70 70 6c 69 63  |     This applic|
00009c70  61 74 69 6f 6e 20 73 75  70 70 6f 72 74 73 20 41  |ation supports A|
00009c80  63 6f 72 6e 27 73 20 21  48 65 6c 70 20 61 70 70  |corn's !Help app|
00009c90  6c 69 63 61 74 69 6f 6e  2e 20 0a 0a 20 20 20 20  |lication. ..    |
00009ca0  20 20 35 2e 32 20 21 53  68 65 6c 6c 44 42 75 67  |  5.2 !ShellDBug|
00009cb0  20 0a 0a 20 20 20 20 20  20 41 20 76 65 72 79 20  | ..      A very |
00009cc0  73 69 6d 70 6c 65 20 64  65 62 75 67 67 65 72 20  |simple debugger |
00009cd0  74 68 61 74 20 64 69 73  70 6c 61 79 73 20 74 72  |that displays tr|
00009ce0  61 63 65 20 6f 75 74 70  75 74 20 66 72 6f 6d 20  |ace output from |
00009cf0  74 68 65 20 75 73 65 72  20 0a 20 20 20 20 20 20  |the user .      |
00009d00  61 70 70 6c 69 63 61 74  69 6f 6e 20 61 6e 64 20  |application and |
00009d10  74 68 65 20 6c 69 62 72  61 72 79 20 63 6f 64 65  |the library code|
00009d20  2e 20 4e 6f 74 65 20 74  68 61 74 20 63 75 72 72  |. Note that curr|
00009d30  65 6e 74 6c 79 20 74 68  69 73 20 0a 20 20 20 20  |ently this .    |
00009d40  20 20 61 70 70 6c 69 63  61 74 69 6f 6e 20 6d 75  |  application mu|
00009d50  73 74 20 62 65 20 72 75  6e 6e 69 6e 67 20 62 65  |st be running be|
00009d60  66 6f 72 65 20 74 68 65  20 61 70 70 6c 69 63 61  |fore the applica|
00009d70  74 69 6f 6e 20 79 6f 75  20 77 61 6e 74 20 74 6f  |tion you want to|
00009d80  20 0a 20 20 20 20 20 20  64 65 62 75 67 2e 20 0a  | .      debug. .|
00009d90  0a 20 20 20 20 20 20 54  68 65 20 45 76 6e 74 53  |.      The EvntS|
00009da0  68 65 6c 6c 20 6c 69 62  72 61 72 79 20 6f 75 74  |hell library out|
00009db0  70 75 74 73 20 61 20 63  6f 6d 6d 65 6e 74 61 72  |puts a commentar|
00009dc0  79 20 6f 6e 20 77 68 61  74 20 69 74 20 69 73 20  |y on what it is |
00009dd0  64 6f 69 6e 67 20 0a 20  20 20 20 20 20 69 6e 74  |doing .      int|
00009de0  6f 20 61 20 74 72 61 63  65 66 69 6c 65 2c 20 70  |o a tracefile, p|
00009df0  72 6f 76 69 64 69 6e 67  20 74 68 61 74 20 50 52  |roviding that PR|
00009e00  4f 43 73 68 65 6c 6c 5f  54 72 61 63 65 49 6e 69  |OCshell_TraceIni|
00009e10  74 20 61 6e 64 20 0a 20  20 20 20 20 20 50 52 4f  |t and .      PRO|
00009e20  43 73 68 65 6c 6c 5f 54  72 61 63 65 4f 6e 20 68  |Cshell_TraceOn h|
00009e30  61 76 65 20 62 65 65 6e  20 63 61 6c 6c 65 64 2e  |ave been called.|
00009e40  20 54 68 65 20 75 73 65  72 20 61 70 70 6c 69 63  | The user applic|
00009e50  61 74 69 6f 6e 20 63 61  6e 20 61 6c 73 6f 20 0a  |ation can also .|
00009e60  20 20 20 20 20 20 70 6c  61 63 65 20 6f 75 74 70  |      place outp|
00009e70  75 74 20 69 6e 20 74 68  69 73 20 66 69 6c 65 20  |ut in this file |
00009e80  75 73 69 6e 67 20 50 52  4f 43 73 68 65 6c 6c 5f  |using PROCshell_|
00009e90  54 72 61 63 65 66 30 2e  20 0a 0a 20 20 20 20 20  |Tracef0. ..     |
00009ea0  20 4f 75 74 70 75 74 74  69 6e 67 20 74 72 61 63  | Outputting trac|
00009eb0  65 20 69 6e 66 6f 72 6d  61 74 69 6f 6e 20 77 69  |e information wi|
00009ec0  6c 6c 20 73 6c 6f 77 20  74 68 65 20 75 73 65 72  |ll slow the user|
00009ed0  20 61 70 70 6c 69 63 61  74 69 6f 6e 20 0a 20 20  | application .  |
00009ee0  20 20 20 20 6e 6f 74 69  63 65 61 62 6c 79 2c 20  |    noticeably, |
00009ef0  65 73 70 65 63 69 61 6c  6c 79 20 77 68 65 6e 20  |especially when |
00009f00  73 74 61 72 74 69 6e 67  20 75 70 20 61 73 20 61  |starting up as a|
00009f10  20 6c 6f 74 20 6f 66 20  74 72 61 63 65 20 69 6e  | lot of trace in|
00009f20  66 6f 20 69 73 20 0a 20  20 20 20 20 20 67 65 6e  |fo is .      gen|
00009f30  65 72 61 74 65 64 20 62  79 20 74 68 65 20 63 61  |erated by the ca|
00009f40  6c 6c 20 74 6f 20 50 52  4f 43 73 68 65 6c 6c 5f  |ll to PROCshell_|
00009f50  52 65 73 6f 75 72 63 65  73 49 6e 69 74 2e 20 54  |ResourcesInit. T|
00009f60  68 65 72 65 66 6f 72 65  20 69 74 20 69 73 20 0a  |herefore it is .|
00009f70  20 20 20 20 20 20 62 65  73 74 20 74 6f 20 6f 6e  |      best to on|
00009f80  6c 79 20 74 75 72 6e 20  6f 6e 20 74 72 61 63 69  |ly turn on traci|
00009f90  6e 67 20 77 68 65 6e 20  6e 65 63 65 73 73 61 72  |ng when necessar|
00009fa0  79 2c 20 61 6e 64 20 6f  66 20 63 6f 75 72 73 65  |y, and of course|
00009fb0  20 6d 61 6b 65 20 0a 20  20 20 20 20 20 73 75 72  | make .      sur|
00009fc0  65 20 74 68 61 74 20 74  72 61 63 69 6e 67 20 69  |e that tracing i|
00009fd0  73 20 6f 66 66 20 6f 6e  20 61 6e 79 20 61 70 70  |s off on any app|
00009fe0  6c 69 63 61 74 69 6f 6e  73 20 79 6f 75 20 64 69  |lications you di|
00009ff0  73 74 72 69 62 75 74 65  21 20 0a 0a 20 20 20 20  |stribute! ..    |
0000a000  20 20 35 2e 33 20 4f 74  68 65 72 20 54 6f 6f 6c  |  5.3 Other Tool|
0000a010  73 20 0a 0a 20 20 20 20  20 20 54 68 65 72 65 20  |s ..      There |
0000a020  66 6f 6c 6c 6f 77 73 20  61 20 62 72 69 65 66 20  |follows a brief |
0000a030  64 65 73 63 72 69 70 74  69 6f 6e 20 6f 66 20 73  |description of s|
0000a040  6f 6d 65 20 6f 74 68 65  72 20 50 44 2f 53 68 61  |ome other PD/Sha|
0000a050  72 65 57 61 72 65 20 0a  20 20 20 20 20 20 70 72  |reWare .      pr|
0000a060  6f 67 72 61 6d 73 20 77  68 69 63 68 20 49 20 68  |ograms which I h|
0000a070  61 76 65 20 66 6f 75 6e  64 20 75 73 65 66 75 6c  |ave found useful|
0000a080  20 77 68 65 6e 20 64 65  76 65 6c 6f 70 69 6e 67  | when developing|
0000a090  20 45 76 6e 74 53 68 65  6c 6c 20 0a 20 20 20 20  | EvntShell .    |
0000a0a0  20 20 61 70 70 6c 69 63  61 74 69 6f 6e 73 2e 20  |  applications. |
0000a0b0  0a 0c 0a 20 20 20 20 20  20 35 2e 33 2e 31 20 21  |...      5.3.1 !|
0000a0c0  42 61 73 53 68 72 69 6e  6b 2f 21 42 61 73 53 68  |BasShrink/!BasSh|
0000a0d0  72 69 6e 6b 5f 50 44 20  0a 0a 20 20 20 20 20 20  |rink_PD ..      |
0000a0e0  49 73 20 61 20 42 41 53  49 43 20 70 72 6f 67 72  |Is a BASIC progr|
0000a0f0  61 6d 20 63 6f 6d 70 72  65 73 73 6f 72 20 77 68  |am compressor wh|
0000a100  69 63 68 20 68 61 73 20  62 65 65 6e 20 70 72 6f  |ich has been pro|
0000a110  76 65 64 20 74 6f 20 77  6f 72 6b 20 77 69 74 68  |ved to work with|
0000a120  20 0a 20 20 20 20 20 20  45 76 6e 74 53 68 65 6c  | .      EvntShel|
0000a130  6c 20 61 70 70 6c 69 63  61 74 69 6f 6e 73 2e 20  |l applications. |
0000a140  21 42 61 73 53 68 72 69  6e 6b 5f 50 44 20 69 73  |!BasShrink_PD is|
0000a150  20 50 75 62 6c 69 63 20  44 6f 6d 61 69 6e 20 61  | Public Domain a|
0000a160  6e 64 20 0a 20 20 20 20  20 20 61 76 61 69 6c 61  |nd .      availa|
0000a170  62 6c 65 20 66 72 6f 6d  20 76 61 72 69 6f 75 73  |ble from various|
0000a180  20 50 44 20 6c 69 62 72  61 72 69 65 73 2c 20 21  | PD libraries, !|
0000a190  42 61 73 53 68 72 69 6e  6b 20 63 6f 73 74 20 a3  |BasShrink cost .|
0000a1a0  35 2e 30 30 20 61 6e 64  20 0a 20 20 20 20 20 20  |5.00 and .      |
0000a1b0  63 61 6e 20 62 65 20 6f  62 74 61 69 6e 65 64 20  |can be obtained |
0000a1c0  66 72 6f 6d 3a 20 0a 0a  20 20 20 20 20 20 4a 6f  |from: ..      Jo|
0000a1d0  68 6e 20 57 61 6c 6c 61  63 65 2c 20 41 72 63 68  |hn Wallace, Arch|
0000a1e0  69 74 79 70 65 20 53 6f  66 74 77 61 72 65 2c 20  |itype Software, |
0000a1f0  35 34 20 50 61 72 6b 65  73 20 48 61 6c 6c 20 52  |54 Parkes Hall R|
0000a200  6f 61 64 2c 20 0a 20 20  20 20 20 20 57 6f 6f 64  |oad, .      Wood|
0000a210  73 65 74 74 6f 6e 2c 20  44 75 64 6c 65 79 2c 20  |setton, Dudley, |
0000a220  57 65 73 74 20 4d 69 64  6c 61 6e 64 73 2c 20 44  |West Midlands, D|
0000a230  59 31 20 33 53 52 20 45  4e 47 4c 41 4e 44 20 0a  |Y1 3SR ENGLAND .|
0000a240  0a 20 20 20 20 20 20 53  65 65 20 74 68 65 20 73  |.      See the s|
0000a250  65 63 74 69 6f 6e 20 6f  6e 20 63 6f 6d 70 72 65  |ection on compre|
0000a260  73 73 69 6e 67 20 45 76  6e 74 53 68 65 6c 6c 20  |ssing EvntShell |
0000a270  70 72 6f 67 72 61 6d 73  20 66 6f 72 20 67 75 69  |programs for gui|
0000a280  64 61 6e 63 65 20 6f 6e  20 0a 20 20 20 20 20 20  |dance on .      |
0000a290  74 68 65 20 6f 70 74 69  6f 6e 73 20 74 68 61 74  |the options that|
0000a2a0  20 63 61 6e 20 62 65 20  75 73 65 64 2e 20 0a 0a  | can be used. ..|
0000a2b0  20 20 20 20 20 20 35 2e  33 2e 32 20 21 42 4c 69  |      5.3.2 !BLi|
0000a2c0  62 49 49 20 0a 0a 20 20  20 20 20 20 41 20 42 41  |bII ..      A BA|
0000a2d0  53 49 43 20 4c 69 6e 6b  65 72 20 70 72 6f 67 72  |SIC Linker progr|
0000a2e0  61 6d 20 61 76 61 69 6c  61 62 6c 65 20 6f 6e 20  |am available on |
0000a2f0  41 50 44 4c 20 44 69 73  6b 20 42 31 33 38 2e 20  |APDL Disk B138. |
0000a300  54 68 69 73 20 62 75 69  6c 64 73 20 61 20 0a 20  |This builds a . |
0000a310  20 20 20 20 20 70 72 6f  67 72 61 6d 20 66 72 6f  |     program fro|
0000a320  6d 20 74 68 65 20 75 73  65 72 20 61 70 70 6c 69  |m the user appli|
0000a330  63 61 74 69 6f 6e 20 61  6e 64 20 74 68 65 20 45  |cation and the E|
0000a340  76 6e 74 53 68 65 6c 6c  20 6c 69 62 72 61 72 79  |vntShell library|
0000a350  20 0a 20 20 20 20 20 20  63 6f 6e 74 61 69 6e 69  | .      containi|
0000a360  6e 67 20 6f 6e 6c 79 20  74 68 65 20 72 6f 75 74  |ng only the rout|
0000a370  69 6e 65 73 20 74 68 61  74 20 61 72 65 20 61 63  |ines that are ac|
0000a380  74 75 61 6c 6c 79 20 6e  65 65 64 65 64 2e 20 54  |tually needed. T|
0000a390  68 69 73 20 69 73 20 0a  20 20 20 20 20 20 76 65  |his is .      ve|
0000a3a0  72 79 20 75 73 65 66 75  6c 20 66 6f 72 20 64 69  |ry useful for di|
0000a3b0  73 74 72 69 62 75 74 69  6e 67 20 74 68 65 20 66  |stributing the f|
0000a3c0  69 6e 61 6c 20 61 70 70  6c 69 63 61 74 69 6f 6e  |inal application|
0000a3d0  20 61 73 20 21 42 4c 69  62 49 49 20 61 6e 64 20  | as !BLibII and |
0000a3e0  0a 20 20 20 20 20 20 21  42 61 73 53 68 72 69 6e  |.      !BasShrin|
0000a3f0  6b 20 75 73 65 64 20 74  6f 67 65 74 68 65 72 20  |k used together |
0000a400  77 69 6c 6c 20 70 72 6f  64 75 63 65 20 74 68 65  |will produce the|
0000a410  20 6d 69 6e 69 6d 75 6d  20 70 72 6f 67 72 61 6d  | minimum program|
0000a420  20 73 69 7a 65 20 0a 20  20 20 20 20 20 70 6f 73  | size .      pos|
0000a430  73 69 62 6c 65 2e 20 0a  0a 20 20 20 20 20 20 46  |sible. ..      F|
0000a440  75 6c 6c 20 69 6e 73 74  72 75 63 74 69 6f 6e 73  |ull instructions|
0000a450  20 61 72 65 20 70 72 6f  76 69 64 65 64 20 77 69  | are provided wi|
0000a460  74 68 20 21 42 4c 69 62  49 49 2c 20 73 6f 20 49  |th !BLibII, so I|
0000a470  20 77 6f 6e 27 74 20 67  6f 20 69 6e 74 6f 20 0a  | won't go into .|
0000a480  20 20 20 20 20 20 64 65  74 61 69 6c 73 20 68 65  |      details he|
0000a490  72 65 20 65 78 63 65 70  74 20 74 6f 20 6e 6f 74  |re except to not|
0000a4a0  65 20 74 68 61 74 20 74  68 65 20 53 68 65 6c 6c  |e that the Shell|
0000a4b0  4c 69 62 20 6c 69 62 72  61 72 79 20 61 6c 72 65  |Lib library alre|
0000a4c0  61 64 79 20 0a 20 20 20  20 20 20 63 6f 6e 74 61  |ady .      conta|
0000a4d0  69 6e 73 20 74 68 65 20  65 78 74 72 61 20 69 6e  |ins the extra in|
0000a4e0  66 6f 72 6d 61 74 69 6f  6e 20 74 68 61 74 20 21  |formation that !|
0000a4f0  42 4c 69 62 49 49 20 72  65 71 75 69 72 65 73 2c  |BLibII requires,|
0000a500  20 61 6c 74 68 6f 75 67  68 20 0a 20 20 20 20 20  | although .     |
0000a510  20 74 68 65 20 63 6f 6e  64 69 74 69 6f 6e 61 6c  | the conditional|
0000a520  20 6c 69 6e 6b 69 6e 67  20 62 69 74 73 20 61 72  | linking bits ar|
0000a530  65 20 6e 6f 74 20 79 65  74 20 69 6e 20 70 6c 61  |e not yet in pla|
0000a540  63 65 2e 20 54 68 69 73  20 6d 65 61 6e 73 20 0a  |ce. This means .|
0000a550  20 20 20 20 20 20 74 68  61 74 20 74 68 65 20 6c  |      that the l|
0000a560  69 6e 6b 65 64 20 70 72  6f 67 72 61 6d 20 69 73  |inked program is|
0000a570  20 62 69 67 67 65 72 20  74 68 61 6e 20 69 74 20  | bigger than it |
0000a580  73 68 6f 75 6c 64 20 62  65 2c 20 62 75 74 20 61  |should be, but a|
0000a590  6e 20 0a 20 20 20 20 20  20 69 6d 70 72 6f 76 65  |n .      improve|
0000a5a0  6d 65 6e 74 20 6f 76 65  72 20 6a 75 73 74 20 61  |ment over just a|
0000a5b0  70 70 65 6e 64 69 6e 67  20 74 68 65 20 6c 69 62  |ppending the lib|
0000a5c0  72 61 72 79 20 63 6f 64  65 20 74 6f 20 74 68 65  |rary code to the|
0000a5d0  20 65 6e 64 20 6f 66 20  0a 20 20 20 20 20 20 74  | end of .      t|
0000a5e0  68 65 20 75 73 65 72 20  61 70 70 6c 69 63 61 74  |he user applicat|
0000a5f0  69 6f 6e 2e 20 54 68 69  73 20 77 69 6c 6c 20 69  |ion. This will i|
0000a600  6d 70 72 6f 76 65 20 69  6e 20 66 75 74 75 72 65  |mprove in future|
0000a610  20 72 65 6c 65 61 73 65  73 2e 20 0a 0a 20 20 20  | releases. ..   |
0000a620  20 20 20 4e 6f 74 65 20  74 68 61 74 20 79 6f 75  |   Note that you|
0000a630  20 73 68 6f 75 6c 64 20  75 73 65 20 74 68 65 20  | should use the |
0000a640  53 68 65 6c 6c 4c 69 62  20 6c 69 62 72 61 72 79  |ShellLib library|
0000a650  20 66 6f 72 20 6c 69 6e  6b 69 6e 67 20 77 69 74  | for linking wit|
0000a660  68 20 0a 20 20 20 20 20  20 42 4c 69 62 49 49 20  |h .      BLibII |
0000a670  62 65 63 61 75 73 65 20  53 68 65 6c 6c 4c 69 62  |because ShellLib|
0000a680  52 54 20 68 61 73 20 68  61 64 20 74 68 65 20 42  |RT has had the B|
0000a690  4c 69 62 49 49 20 63 6f  6d 6d 61 6e 64 73 20 72  |LibII commands r|
0000a6a0  65 6d 6f 76 65 64 20 74  6f 20 0a 20 20 20 20 20  |emoved to .     |
0000a6b0  20 73 61 76 65 20 73 70  61 63 65 2e 20 0a 0a 20  | save space. .. |
0000a6c0  20 20 20 20 20 35 2e 33  2e 33 20 21 54 65 6d 70  |     5.3.3 !Temp|
0000a6d0  6c 45 64 20 0a 0a 20 20  20 20 20 20 41 6c 73 6f  |lEd ..      Also|
0000a6e0  20 6f 6e 20 41 50 44 4c  20 64 69 73 6b 20 42 31  | on APDL disk B1|
0000a6f0  33 38 20 74 68 69 73 20  69 73 20 49 20 62 65 6c  |38 this is I bel|
0000a700  69 65 76 65 20 74 68 65  20 62 65 73 74 20 54 65  |ieve the best Te|
0000a710  6d 70 6c 61 74 65 20 65  64 69 74 6f 72 20 0a 20  |mplate editor . |
0000a720  20 20 20 20 20 61 76 61  69 6c 61 62 6c 65 20 61  |     available a|
0000a730  6e 79 77 68 65 72 65 2e  20 46 6f 72 67 65 74 20  |nywhere. Forget |
0000a740  21 46 6f 72 6d 45 64 32  20 77 68 69 63 68 20 77  |!FormEd2 which w|
0000a750  61 73 20 6f 6e 20 73 6f  6d 65 20 41 50 44 4c 20  |as on some APDL |
0000a760  42 31 32 32 20 0a 20 20  20 20 20 20 64 69 73 6b  |B122 .      disk|
0000a770  73 2c 20 21 46 6f 72 6d  45 64 20 28 52 69 73 63  |s, !FormEd (Risc|
0000a780  20 53 71 75 61 64 20 76  65 72 73 69 6f 6e 20 32  | Squad version 2|
0000a790  2e 38 34 62 20 6f 6e 20  42 30 35 33 20 6f 72 20  |.84b on B053 or |
0000a7a0  32 2e 38 37 20 61 6c 73  6f 20 6f 6e 20 0a 20 20  |2.87 also on .  |
0000a7b0  20 20 20 20 42 31 33 38  29 20 61 6e 64 20 61 6e  |    B138) and an|
0000a7c0  79 20 41 63 6f 72 6e 20  76 65 72 73 69 6f 6e 73  |y Acorn versions|
0000a7d0  2e 20 0a 0a 20 20 20 20  20 20 35 2e 33 2e 34 20  |. ..      5.3.4 |
0000a7e0  21 53 74 72 6f 6e 67 45  64 32 20 0a 0a 20 20 20  |!StrongEd2 ..   |
0000a7f0  20 20 20 41 20 74 65 78  74 20 65 64 69 74 6f 72  |   A text editor|
0000a800  20 77 68 69 63 68 20 6d  61 79 20 6f 72 20 6d 61  | which may or ma|
0000a810  79 20 6e 6f 74 20 6e 6f  77 20 62 65 20 69 6e 20  |y not now be in |
0000a820  74 68 65 20 70 75 62 6c  69 63 20 64 6f 6d 61 69  |the public domai|
0000a830  6e 20 0a 20 20 20 20 20  20 61 6e 64 20 74 68 75  |n .      and thu|
0000a840  73 20 61 76 61 69 6c 61  62 6c 65 20 66 72 6f 6d  |s available from|
0000a850  20 50 44 20 6c 69 62 72  61 72 69 65 73 2e 20 54  | PD libraries. T|
0000a860  68 65 20 62 69 67 20 61  64 76 61 6e 74 61 67 65  |he big advantage|
0000a870  20 74 68 69 73 20 68 61  73 20 0a 20 20 20 20 20  | this has .     |
0000a880  20 6f 76 65 72 20 61 6e  79 20 6f 74 68 65 72 20  | over any other |
0000a890  65 64 69 74 6f 72 20 69  73 20 74 68 65 20 61 63  |editor is the ac|
0000a8a0  63 6f 6d 70 61 6e 79 69  6e 67 20 21 53 74 72 6f  |companying !Stro|
0000a8b0  6e 67 48 6c 70 20 61 70  70 6c 69 63 61 74 69 6f  |ngHlp applicatio|
0000a8c0  6e 2e 20 0a 20 20 20 20  20 20 50 72 65 73 73 69  |n. .      Pressi|
0000a8d0  6e 67 20 46 31 20 6f 76  65 72 20 61 20 77 6f 72  |ng F1 over a wor|
0000a8e0  64 20 69 6e 20 61 20 70  72 6f 67 72 61 6d 20 6b  |d in a program k|
0000a8f0  6e 6f 77 6e 20 74 6f 20  21 53 74 72 6f 6e 67 48  |nown to !StrongH|
0000a900  6c 70 20 63 61 75 73 65  73 20 0a 20 20 20 20 20  |lp causes .     |
0000a910  20 61 6e 20 69 6e 66 6f  72 6d 61 74 69 6f 6e 20  | an information |
0000a920  77 69 6e 64 6f 77 20 74  6f 20 6f 70 65 6e 2e 20  |window to open. |
0000a930  56 65 72 73 69 6f 6e 73  20 62 65 66 6f 72 65 20  |Versions before |
0000a940  31 2e 32 31 20 77 65 72  65 20 61 20 62 69 74 20  |1.21 were a bit |
0000a950  0a 20 20 20 20 20 20 75  6e 73 74 61 62 6c 65 20  |.      unstable |
0000a960  74 68 6f 75 67 68 2e 20  0a 0a 20 20 20 20 20 20  |though. ..      |
0000a970  35 2e 33 2e 35 20 21 53  74 72 6f 6e 67 48 6c 70  |5.3.5 !StrongHlp|
0000a980  20 0a 0a 20 20 20 20 20  20 41 20 68 79 70 65 72  | ..      A hyper|
0000a990  74 65 78 74 20 74 79 70  65 20 61 70 70 6c 69 63  |text type applic|
0000a9a0  61 74 69 6f 6e 20 77 68  69 63 68 20 61 6c 6d 6f  |ation which almo|
0000a9b0  73 74 20 72 65 6d 6f 76  65 73 20 74 68 65 20 6e  |st removes the n|
0000a9c0  65 65 64 20 66 6f 72 20  0a 20 20 20 20 20 20 74  |eed for .      t|
0000a9d0  68 65 20 52 65 66 65 72  65 6e 63 65 20 4d 61 6e  |he Reference Man|
0000a9e0  75 61 6c 73 2e 20 46 69  6c 65 73 20 73 75 70 70  |uals. Files supp|
0000a9f0  6c 69 65 64 20 77 69 74  68 20 69 74 20 64 65 74  |lied with it det|
0000aa00  61 69 6c 20 6d 6f 73 74  20 6f 66 20 74 68 65 20  |ail most of the |
0000aa10  0a 20 20 20 20 20 20 53  57 49 73 20 61 76 61 69  |.      SWIs avai|
0000aa20  6c 61 62 6c 65 20 61 6e  64 20 6d 75 63 68 20 6d  |lable and much m|
0000aa30  6f 72 65 20 69 6e 66 6f  72 6d 61 74 69 6f 6e 20  |ore information |
0000aa40  69 73 20 70 72 6f 76 69  64 65 64 20 6f 6e 20 42  |is provided on B|
0000aa50  41 53 49 43 2c 20 0a 20  20 20 20 20 20 56 44 55  |ASIC, .      VDU|
0000aa60  20 63 61 6c 6c 73 2c 20  46 69 6c 65 74 79 70 65  | calls, Filetype|
0000aa70  73 20 65 74 63 2e 20 21  53 74 72 6f 6e 67 48 6c  |s etc. !StrongHl|
0000aa80  70 20 69 73 20 6e 6f 77  20 6f 6e 6c 79 20 61 76  |p is now only av|
0000aa90  61 69 6c 61 62 6c 65 20  61 73 20 66 61 72 20 0a  |ailable as far .|
0000aaa0  20 20 20 20 20 20 61 73  20 49 20 6b 6e 6f 77 20  |      as I know |
0000aab0  61 73 20 61 20 27 66 72  65 65 27 20 61 64 64 20  |as a 'free' add |
0000aac0  6f 6e 20 77 69 74 68 20  74 68 65 20 63 6f 6d 6d  |on with the comm|
0000aad0  65 72 63 69 61 6c 20 76  65 72 73 69 6f 6e 20 6f  |ercial version o|
0000aae0  66 20 0a 20 20 20 20 20  20 21 53 74 72 6f 6e 67  |f .      !Strong|
0000aaf0  45 44 20 66 72 6f 6d 20  53 74 61 6c 6c 69 6f 6e  |ED from Stallion|
0000ab00  20 53 6f 66 74 77 61 72  65 2c 20 61 6c 74 68 6f  | Software, altho|
0000ab10  75 67 68 20 61 20 6e 65  77 20 50 44 20 76 65 72  |ugh a new PD ver|
0000ab20  73 69 6f 6e 20 6d 61 79  20 0a 20 20 20 20 20 20  |sion may .      |
0000ab30  62 65 20 72 65 6c 65 61  73 65 64 20 69 6e 20 74  |be released in t|
0000ab40  68 65 20 66 75 74 75 72  65 2e 20 0a 0c 0a 20 20  |he future. ...  |
0000ab50  20 20 20 20 54 68 65 20  45 76 6e 74 53 68 65 6c  |    The EvntShel|
0000ab60  6c 20 6c 69 62 72 61 72  79 20 61 6c 73 6f 20 68  |l library also h|
0000ab70  61 73 20 61 20 66 65 77  20 50 52 4f 43 73 20 74  |as a few PROCs t|
0000ab80  6f 20 69 6e 74 65 72 66  61 63 65 20 77 69 74 68  |o interface with|
0000ab90  20 0a 20 20 20 20 20 20  53 74 72 6f 6e 67 48 6c  | .      StrongHl|
0000aba0  70 20 74 6f 20 65 6e 61  62 6c 65 20 75 73 65 72  |p to enable user|
0000abb0  20 61 70 70 6c 69 63 61  74 69 6f 6e 73 20 74 6f  | applications to|
0000abc0  20 72 65 67 69 73 74 65  72 20 68 65 6c 70 20 73  | register help s|
0000abd0  79 73 74 65 6d 73 2e 20  0a 0a 20 20 20 20 20 20  |ystems. ..      |
0000abe0  57 68 65 6e 20 61 20 72  65 71 75 65 73 74 20 69  |When a request i|
0000abf0  73 20 73 65 6e 74 20 74  6f 20 53 74 72 6f 6e 67  |s sent to Strong|
0000ac00  48 6c 70 20 74 68 65 20  61 63 74 69 76 65 20 61  |Hlp the active a|
0000ac10  70 70 6c 69 63 61 74 69  6f 6e 73 20 6f 6e 20 0a  |pplications on .|
0000ac20  20 20 20 20 20 20 74 68  65 20 69 63 6f 6e 20 62  |      the icon b|
0000ac30  61 72 20 61 72 65 20 63  68 65 63 6b 65 64 20 74  |ar are checked t|
0000ac40  6f 20 73 65 65 20 69 66  20 53 74 72 6f 6e 67 48  |o see if StrongH|
0000ac50  6c 70 20 69 73 20 72 75  6e 6e 69 6e 67 2e 20 49  |lp is running. I|
0000ac60  66 20 69 74 20 69 73 20  0a 20 20 20 20 20 20 6e  |f it is .      n|
0000ac70  6f 74 20 61 6e 64 20 69  74 73 20 21 42 6f 6f 74  |ot and its !Boot|
0000ac80  20 66 69 6c 65 20 68 61  73 20 62 65 65 6e 20 27  | file has been '|
0000ac90  73 65 65 6e 27 20 62 79  20 74 68 65 20 46 69 6c  |seen' by the Fil|
0000aca0  65 72 20 74 68 65 6e 20  69 74 20 77 69 6c 6c 20  |er then it will |
0000acb0  0a 20 20 20 20 20 20 62  65 20 73 74 61 72 74 65  |.      be starte|
0000acc0  64 20 61 75 74 6f 6d 61  74 69 63 61 6c 6c 79 2e  |d automatically.|
0000acd0  20 49 66 20 53 74 72 6f  6e 67 48 6c 70 20 68 61  | If StrongHlp ha|
0000ace0  73 20 6e 6f 74 20 62 65  65 6e 20 27 73 65 65 6e  |s not been 'seen|
0000acf0  27 20 74 68 65 6e 20 0a  20 20 20 20 20 20 61 6e  |' then .      an|
0000ad00  20 65 72 72 6f 72 20 77  69 6c 6c 20 62 65 20 67  | error will be g|
0000ad10  65 6e 65 72 61 74 65 64  2e 20 0a 0a 20 20 20 20  |enerated. ..    |
0000ad20  20 20 4e 6f 74 65 20 74  68 61 74 20 66 6f 72 20  |  Note that for |
0000ad30  74 68 65 20 61 62 6f 76  65 20 74 6f 20 77 6f 72  |the above to wor|
0000ad40  6b 20 69 74 20 69 73 20  76 69 74 61 6c 20 74 68  |k it is vital th|
0000ad50  61 74 20 74 68 65 20 68  65 6c 70 20 73 79 73 74  |at the help syst|
0000ad60  65 6d 20 0a 20 20 20 20  20 20 64 69 72 65 63 74  |em .      direct|
0000ad70  6f 72 79 20 68 61 73 20  74 68 65 20 73 61 6d 65  |ory has the same|
0000ad80  20 6e 61 6d 65 20 61 73  20 74 68 65 20 61 70 70  | name as the app|
0000ad90  6c 69 63 61 74 69 6f 6e  20 28 6d 69 6e 75 73 20  |lication (minus |
0000ada0  74 68 65 20 27 21 27 29  2e 20 0a 0a 20 20 20 20  |the '!'). ..    |
0000adb0  20 20 36 20 44 69 73 74  72 69 62 75 74 69 6e 67  |  6 Distributing|
0000adc0  20 45 76 6e 74 53 68 65  6c 6c 20 41 70 70 6c 69  | EvntShell Appli|
0000add0  63 61 74 69 6f 6e 73 20  0a 0a 20 20 20 20 20 20  |cations ..      |
0000ade0  49 74 20 69 73 20 70 72  6f 62 61 62 6c 79 20 62  |It is probably b|
0000adf0  65 73 74 20 74 6f 20 63  6f 70 79 20 53 68 65 6c  |est to copy Shel|
0000ae00  6c 4c 69 62 52 54 2c 20  53 68 65 6c 6c 4d 73 67  |lLibRT, ShellMsg|
0000ae10  73 20 61 6e 64 20 74 68  65 20 6d 6f 64 75 6c 65  |s and the module|
0000ae20  73 20 0a 20 20 20 20 20  20 69 6e 74 6f 20 79 6f  |s .      into yo|
0000ae30  75 72 20 61 70 70 6c 69  63 61 74 69 6f 6e 20 64  |ur application d|
0000ae40  69 72 65 63 74 6f 72 79  2c 20 6e 6f 74 20 66 6f  |irectory, not fo|
0000ae50  72 67 65 74 74 69 6e 67  20 74 6f 20 61 6c 74 65  |rgetting to alte|
0000ae60  72 20 74 68 65 20 21 52  75 6e 20 0a 20 20 20 20  |r the !Run .    |
0000ae70  20 20 66 69 6c 65 20 61  6e 64 20 74 68 65 20 4c  |  file and the L|
0000ae80  49 42 52 41 52 59 20 73  74 61 74 65 6d 65 6e 74  |IBRARY statement|
0000ae90  20 69 6e 20 74 68 65 20  72 75 6e 69 6d 61 67 65  | in the runimage|
0000aea0  20 66 69 6c 65 20 74 6f  20 70 6f 69 6e 74 20 74  | file to point t|
0000aeb0  6f 20 0a 20 20 20 20 20  20 74 68 65 20 6e 65 77  |o .      the new|
0000aec0  20 6c 6f 63 61 74 69 6f  6e 2e 20 54 68 61 74 20  | location. That |
0000aed0  77 61 79 20 79 6f 75 20  61 72 65 20 73 75 72 65  |way you are sure|
0000aee0  20 74 68 61 74 20 61 6c  6c 20 74 68 65 20 6e 65  | that all the ne|
0000aef0  63 65 73 73 61 72 79 20  0a 20 20 20 20 20 20 66  |cessary .      f|
0000af00  69 6c 65 73 20 61 72 65  20 69 6e 20 6f 6e 65 20  |iles are in one |
0000af10  70 6c 61 63 65 20 66 6f  72 20 65 61 73 65 20 6f  |place for ease o|
0000af20  66 20 63 6f 70 79 69 6e  67 2e 20 0a 0a 20 20 20  |f copying. ..   |
0000af30  20 20 20 37 20 44 65 62  75 67 67 69 6e 67 20 0a  |   7 Debugging .|
0000af40  0a 20 20 20 20 20 20 41  20 73 69 6d 70 6c 65 20  |.      A simple |
0000af50  64 65 62 75 67 67 65 72  20 28 21 53 68 65 6c 6c  |debugger (!Shell|
0000af60  44 42 75 67 29 20 69 73  20 73 75 70 70 6c 69 65  |DBug) is supplie|
0000af70  64 20 77 69 74 68 20 74  68 65 20 6c 69 62 72 61  |d with the libra|
0000af80  72 79 20 74 6f 20 0a 20  20 20 20 20 20 64 69 73  |ry to .      dis|
0000af90  70 6c 61 79 20 74 72 61  63 65 20 6d 65 73 73 61  |play trace messa|
0000afa0  67 65 73 2e 20 59 6f 75  20 63 61 6e 20 61 6c 73  |ges. You can als|
0000afb0  6f 20 64 6f 20 77 6f 6e  64 65 72 73 20 77 69 74  |o do wonders wit|
0000afc0  68 20 61 20 66 65 77 20  56 44 55 37 20 0a 20 20  |h a few VDU7 .  |
0000afd0  20 20 20 20 63 61 6c 6c  73 20 74 6f 20 63 68 65  |    calls to che|
0000afe0  63 6b 20 77 68 69 63 68  20 70 61 72 74 73 20 6f  |ck which parts o|
0000aff0  66 20 74 68 65 20 61 70  70 6c 69 63 61 74 69 6f  |f the applicatio|
0000b000  6e 20 61 72 65 20 61 63  74 75 61 6c 6c 79 20 62  |n are actually b|
0000b010  65 69 6e 67 20 0a 20 20  20 20 20 20 65 78 65 63  |eing .      exec|
0000b020  75 74 65 64 2e 2e 20 0a  0a 20 20 20 20 20 20 38  |uted.. ..      8|
0000b030  20 54 68 65 20 43 72 65  64 69 74 73 20 0a 0a 20  | The Credits .. |
0000b040  20 20 20 20 20 51 75 69  74 65 20 61 20 66 65 77  |     Quite a few|
0000b050  20 70 65 6f 70 6c 65 20  68 61 76 65 20 62 65 65  | people have bee|
0000b060  6e 20 28 68 6f 77 65 76  65 72 20 75 6e 77 69 74  |n (however unwit|
0000b070  74 69 6e 67 6c 79 29 20  69 6e 76 6f 6c 76 65 64  |tingly) involved|
0000b080  20 69 6e 20 0a 20 20 20  20 20 20 74 68 69 73 20  | in .      this |
0000b090  70 72 6f 6a 65 63 74 20  73 75 63 68 20 61 73 3a  |project such as:|
0000b0a0  20 0a 0a 20 20 20 20 20  20 44 61 76 69 64 20 42  | ..      David B|
0000b0b0  72 65 61 6b 77 65 6c 6c  20 28 74 68 65 20 6f 72  |reakwell (the or|
0000b0c0  69 67 69 6e 61 6c 20 69  64 65 61 29 2c 20 52 6f  |iginal idea), Ro|
0000b0d0  62 65 72 74 20 53 65 61  67 6f 20 28 66 6f 72 20  |bert Seago (for |
0000b0e0  75 73 69 6e 67 20 69 74  20 0a 20 20 20 20 20 20  |using it .      |
0000b0f0  66 6f 72 20 74 68 69 6e  67 73 20 49 20 77 6f 75  |for things I wou|
0000b100  6c 64 6e 27 74 20 64 72  65 61 6d 20 6f 66 20 61  |ldn't dream of a|
0000b110  74 74 65 6d 70 74 69 6e  67 21 29 2c 20 43 79 20  |ttempting!), Cy |
0000b120  42 6f 6f 6b 65 72 20 28  76 61 72 69 6f 75 73 20  |Booker (various |
0000b130  0a 20 20 20 20 20 20 68  65 6c 70 66 75 6c 20 73  |.      helpful s|
0000b140  75 67 67 65 73 74 69 6f  6e 73 20 2d 20 49 20 77  |uggestions - I w|
0000b150  6f 6e 27 74 20 72 65 77  72 69 74 65 20 69 74 20  |on't rewrite it |
0000b160  69 6e 20 43 20 6f 72 20  41 73 73 65 6d 62 6c 65  |in C or Assemble|
0000b170  72 20 74 68 6f 75 67 68  20 0a 20 20 20 20 20 20  |r though .      |
0000b180  2d 20 52 49 53 43 2d 4f  53 20 33 20 44 6f 63 75  |- RISC-OS 3 Docu|
0000b190  6d 65 6e 74 61 74 69 6f  6e 20 61 6e 64 20 74 68  |mentation and th|
0000b1a0  65 20 46 6f 6e 74 57 69  6e 64 6f 77 20 6d 6f 64  |e FontWindow mod|
0000b1b0  75 6c 65 29 2c 20 52 69  73 63 20 55 73 65 72 20  |ule), Risc User |
0000b1c0  0a 20 20 20 20 20 20 6d  61 67 61 7a 69 6e 65 20  |.      magazine |
0000b1d0  28 66 6f 72 20 70 65 72  6d 69 73 73 69 6f 6e 20  |(for permission |
0000b1e0  74 6f 20 75 73 65 20 69  74 73 20 68 65 61 70 20  |to use its heap |
0000b1f0  6d 61 6e 61 67 65 72 20  63 6f 64 65 29 2c 20 4a  |manager code), J|
0000b200  6f 72 69 73 20 0a 20 20  20 20 20 20 52 f6 6c 69  |oris .      R.li|
0000b210  6e 67 20 28 46 6f 6e 74  4d 65 6e 75 20 6d 6f 64  |ng (FontMenu mod|
0000b220  75 6c 65 29 2c 20 53 69  6d 6f 6e 20 48 75 6e 74  |ule), Simon Hunt|
0000b230  69 6e 67 64 6f 6e 20 28  49 6e 74 65 72 66 61 63  |ingdon (Interfac|
0000b240  65 20 6d 6f 64 75 6c 65  29 2c 20 0a 20 20 20 20  |e module), .    |
0000b250  20 20 41 6c 65 78 20 50  65 74 72 6f 76 20 28 4d  |  Alex Petrov (M|
0000b260  65 6e 75 55 74 69 6c 73  29 2c 20 4a 61 6e 2d 48  |enuUtils), Jan-H|
0000b270  65 72 6d 61 6e 20 42 75  69 6e 69 6e 67 20 28 57  |erman Buining (W|
0000b280  41 53 50 20 61 70 70 6c  69 63 61 74 69 6f 6e 20  |ASP application |
0000b290  0a 20 20 20 20 20 20 66  72 6f 6d 20 77 68 69 63  |.      from whic|
0000b2a0  68 20 49 20 77 6f 72 6b  65 64 20 6f 75 74 20 68  |h I worked out h|
0000b2b0  6f 77 20 74 6f 20 64 6f  20 52 41 4d 20 66 69 6c  |ow to do RAM fil|
0000b2c0  65 20 74 72 61 6e 73 66  65 72 73 29 20 61 6e 64  |e transfers) and|
0000b2d0  20 6c 61 73 74 6c 79 20  0a 20 20 20 20 20 20 74  | lastly .      t|
0000b2e0  68 65 20 77 69 66 65 20  28 48 69 6c 6b 65 29 20  |he wife (Hilke) |
0000b2f0  66 6f 72 20 70 75 74 74  69 6e 67 20 75 70 20 77  |for putting up w|
0000b300  69 74 68 20 6d 65 20 70  6f 75 6e 64 69 6e 67 20  |ith me pounding |
0000b310  61 77 61 79 20 61 74 20  61 20 0a 20 20 20 20 20  |away at a .     |
0000b320  20 6b 65 79 62 6f 61 72  64 20 66 6f 72 20 68 6f  | keyboard for ho|
0000b330  75 72 73 20 77 68 65 6e  20 77 65 20 63 6f 75 6c  |urs when we coul|
0000b340  64 20 68 61 76 65 20 62  65 65 6e 20 6c 6f 6f 6b  |d have been look|
0000b350  69 6e 67 20 66 6f 72 20  6e 65 77 20 0a 20 20 20  |ing for new .   |
0000b360  20 20 20 66 75 72 6e 69  74 75 72 65 20 69 6e 73  |   furniture ins|
0000b370  74 65 61 64 2e 20 0a 0a  20 20 20 20 20 20 39 20  |tead. ..      9 |
0000b380  46 75 74 75 72 65 20 45  6e 68 61 6e 63 65 6d 65  |Future Enhanceme|
0000b390  6e 74 73 20 0a 0a 20 20  20 20 20 20 54 68 65 20  |nts ..      The |
0000b3a0  73 6f 66 74 77 61 72 65  20 77 69 6c 6c 20 62 65  |software will be|
0000b3b0  63 6f 6d 65 20 66 61 73  74 65 72 20 61 6e 64 20  |come faster and |
0000b3c0  62 65 20 61 62 6c 65 20  74 6f 20 6c 65 61 70 20  |be able to leap |
0000b3d0  74 61 6c 6c 20 0a 20 20  20 20 20 20 62 75 69 6c  |tall .      buil|
0000b3e0  64 69 6e 67 73 20 77 69  74 68 20 61 20 73 69 6e  |dings with a sin|
0000b3f0  67 6c 65 20 62 6f 75 6e  64 2e 20 42 75 67 73 20  |gle bound. Bugs |
0000b400  61 6e 64 20 6c 69 6d 69  74 61 74 69 6f 6e 73 20  |and limitations |
0000b410  77 69 6c 6c 20 62 65 63  6f 6d 65 20 0a 20 20 20  |will become .   |
0000b420  20 20 20 66 65 77 65 72  20 61 73 20 77 65 6c 6c  |   fewer as well|
0000b430  2e 20 0a 0a 20 20 20 20  20 20 0a 20 20 20 20 20  |. ..      .     |
0000b440  20 2d 20 53 75 70 70 6f  72 74 20 66 6f 72 20 61  | - Support for a|
0000b450  75 74 6f 6d 61 74 69 63  20 68 61 6e 64 6c 69 6e  |utomatic handlin|
0000b460  67 20 6f 66 20 6d 6f 72  65 0a 20 20 20 20 20 20  |g of more.      |
0000b470  20 20 63 6f 6d 70 6c 69  63 61 74 65 64 20 69 63  |  complicated ic|
0000b480  6f 6e 20 74 79 70 65 73  2c 20 66 6f 72 20 65 78  |on types, for ex|
0000b490  61 6d 70 6c 65 0a 20 20  20 20 20 20 20 20 73 6c  |ample.        sl|
0000b4a0  69 64 65 72 73 2c 20 72  6f 74 61 74 69 6e 67 20  |iders, rotating |
0000b4b0  6b 6e 6f 62 73 20 65 74  63 0a 20 20 20 20 20 20  |knobs etc.      |
0000b4c0  20 20 28 73 74 65 61 64  79 20 6e 6f 77 20 64 6f  |  (steady now do|
0000b4d0  6e 27 74 20 67 65 74 20  63 61 72 72 69 65 64 20  |n't get carried |
0000b4e0  61 77 61 79 29 0a 20 20  20 20 20 20 2d 20 49 6d  |away).      - Im|
0000b4f0  70 6f 72 74 20 61 6e 64  20 64 69 73 70 6c 61 79  |port and display|
0000b500  20 6f 66 20 44 72 61 77  46 69 6c 65 73 20 61 6e  | of DrawFiles an|
0000b510  64 0a 20 20 20 20 20 20  20 20 53 70 72 69 74 65  |d.        Sprite|
0000b520  73 0a 20 20 20 20 20 20  2d 20 49 6e 63 6c 75 73  |s.      - Inclus|
0000b530  69 6f 6e 20 6f 66 20 6d  6f 72 65 20 64 65 62 75  |ion of more debu|
0000b540  67 67 69 6e 67 20 61 69  64 73 0a 20 20 20 20 20  |gging aids.     |
0000b550  20 2d 20 4d 6f 72 65 20  64 72 61 67 20 74 79 70  | - More drag typ|
0000b560  65 73 0a 20 20 20 20 20  20 2d 20 41 75 74 6f 73  |es.      - Autos|
0000b570  63 72 6f 6c 6c 20 68 61  6e 64 6c 65 72 20 77 68  |croll handler wh|
0000b580  65 6e 20 6f 62 6a 65 63  74 20 69 73 0a 20 20 20  |en object is.   |
0000b590  20 20 20 20 20 64 72 61  67 67 65 64 20 77 69 74  |     dragged wit|
0000b5a0  68 69 6e 20 61 20 77 69  6e 64 6f 77 0a 0c 0a 20  |hin a window... |
0000b5b0  20 20 20 20 20 2d 20 43  6f 6c 6f 75 72 20 70 69  |     - Colour pi|
0000b5c0  63 6b 20 64 69 61 6c 6f  67 73 0a 20 20 20 20 20  |ck dialogs.     |
0000b5d0  20 2d 20 41 75 74 6f 6d  61 74 69 63 20 68 61 6e  | - Automatic han|
0000b5e0  64 6c 69 6e 67 20 6f 66  20 6e 6f 6e 2d 69 63 6f  |dling of non-ico|
0000b5f0  6e 20 74 65 78 74 0a 20  20 20 20 20 20 20 20 77  |n text.        w|
0000b600  69 74 68 69 6e 20 61 20  77 69 6e 64 6f 77 20 28  |ithin a window (|
0000b610  6c 69 6b 65 20 43 20 74  78 74 20 6f 62 6a 65 63  |like C txt objec|
0000b620  74 73 29 0a 20 20 20 20  20 20 2d 20 50 6c 61 79  |ts).      - Play|
0000b630  69 6e 67 20 6f 66 20 4d  61 65 73 74 72 6f 20 74  |ing of Maestro t|
0000b640  75 6e 65 73 20 28 41 72  63 68 57 61 79 20 64 6f  |unes (ArchWay do|
0000b650  65 73 21 29 0a 20 20 20  20 20 20 2d 20 45 78 74  |es!).      - Ext|
0000b660  65 6e 64 69 6e 67 20 6d  65 73 73 61 67 65 20 66  |ending message f|
0000b670  69 6c 65 20 75 73 65 61  67 65 20 74 6f 20 69 63  |ile useage to ic|
0000b680  6f 6e 73 2f 0a 20 20 20  20 20 20 20 20 77 69 6e  |ons/.        win|
0000b690  64 6f 77 73 2f 6d 65 6e  75 73 0a 20 20 20 20 20  |dows/menus.     |
0000b6a0  20 2d 20 52 65 70 6c 61  79 20 46 69 6c 6d 73 20  | - Replay Films |
0000b6b0  28 21 21 21 29 0a 20 20  20 20 20 20 2d 20 42 65  |(!!!).      - Be|
0000b6c0  74 74 65 72 20 6d 75 6c  74 69 70 6c 65 20 66 69  |tter multiple fi|
0000b6d0  6c 65 20 62 75 66 66 65  72 73 0a 20 20 20 20 20  |le buffers.     |
0000b6e0  20 2d 20 43 6f 6d 70 6c  65 74 65 20 47 65 72 6d  | - Complete Germ|
0000b6f0  61 6e 20 6d 65 73 73 61  67 65 20 66 69 6c 65 73  |an message files|
0000b700  0a 20 20 20 20 20 20 2d  20 43 68 6f 69 63 65 20  |.      - Choice |
0000b710  6f 66 20 6d 65 73 73 61  67 65 20 66 69 6c 65 20  |of message file |
0000b720  6c 61 6e 67 75 61 67 65  20 66 72 6f 6d 0a 20 20  |language from.  |
0000b730  20 20 20 20 20 20 77 69  74 68 69 6e 20 70 72 6f  |      within pro|
0000b740  67 72 61 6d 0a 20 20 20  20 20 20 2d 20 41 75 74  |gram.      - Aut|
0000b750  6f 6d 61 74 69 63 20 61  74 74 61 63 68 69 6e 67  |omatic attaching|
0000b760  20 6f 66 20 27 68 6f 74  20 6b 65 79 27 20 65 76  | of 'hot key' ev|
0000b770  65 6e 74 73 0a 20 20 20  20 20 20 20 20 62 79 20  |ents.        by |
0000b780  65 78 61 6d 69 6e 69 6e  67 20 6d 65 6e 75 20 74  |examining menu t|
0000b790  65 78 74 0a 20 20 20 20  20 20 0a 20 20 20 20 20  |ext.      .     |
0000b7a0  20 0a 20 20 20 20 20 20  31 30 20 43 68 61 6e 67  | .      10 Chang|
0000b7b0  65 73 20 53 69 6e 63 65  20 56 31 2e 30 39 20 0a  |es Since V1.09 .|
0000b7c0  0a 20 20 20 20 20 20 0a  20 20 20 20 20 20 56 31  |.      .      V1|
0000b7d0  2e 31 30 20 2d 20 43 6f  72 72 65 63 74 65 64 20  |.10 - Corrected |
0000b7e0  64 6f 63 75 6d 65 6e 74  61 74 69 6f 6e 20 66 6f  |documentation fo|
0000b7f0  72 20 50 52 4f 43 73 68  65 6c 6c 5f 41 74 74 61  |r PROCshell_Atta|
0000b800  63 68 48 6f 74 4b 65 79  0a 20 20 20 20 20 20 56  |chHotKey.      V|
0000b810  31 2e 31 31 20 2d 20 41  64 64 65 64 20 73 75 70  |1.11 - Added sup|
0000b820  70 6f 72 74 20 66 6f 72  20 21 42 4c 69 62 49 49  |port for !BLibII|
0000b830  20 42 41 53 49 43 20 6c  69 6e 6b 65 72 0a 20 20  | BASIC linker.  |
0000b840  20 20 20 20 20 20 20 20  20 20 2d 20 50 52 4f 43  |          - PROC|
0000b850  73 68 65 6c 6c 5f 41 74  74 61 63 68 55 73 65 72  |shell_AttachUser|
0000b860  52 65 64 72 61 77 20 61  6c 74 65 72 73 20 72 65  |Redraw alters re|
0000b870  64 72 61 77 20 66 6c 61  67 20 6f 66 0a 20 20 20  |draw flag of.   |
0000b880  20 20 20 20 20 20 20 20  20 20 20 77 69 6e 64 6f  |           windo|
0000b890  77 20 69 66 20 6e 65 63  65 73 73 61 72 79 0a 20  |w if necessary. |
0000b8a0  20 20 20 20 20 56 31 2e  31 32 20 2d 20 50 52 4f  |     V1.12 - PRO|
0000b8b0  43 73 68 65 6c 6c 5f 41  74 74 61 63 68 50 61 6e  |Cshell_AttachPan|
0000b8c0  65 20 61 6c 74 65 72 73  20 70 61 6e 65 20 77 69  |e alters pane wi|
0000b8d0  6e 64 6f 77 20 66 6c 61  67 73 20 69 66 0a 20 20  |ndow flags if.  |
0000b8e0  20 20 20 20 20 20 20 20  20 20 20 20 6e 65 63 65  |            nece|
0000b8f0  73 73 61 72 79 0a 20 20  20 20 20 20 20 20 20 20  |ssary.          |
0000b900  20 20 2d 20 44 61 74 61  53 61 76 65 20 72 6f 75  |  - DataSave rou|
0000b910  74 69 6e 65 20 6e 6f 77  20 61 75 74 6f 6d 61 74  |tine now automat|
0000b920  69 63 61 6c 6c 79 20 73  61 76 65 73 20 64 61 74  |ically saves dat|
0000b930  61 20 69 66 20 0a 20 20  20 20 20 20 20 20 20 20  |a if .          |
0000b940  20 20 20 20 64 61 74 61  20 69 73 20 69 6e 20 61  |    data is in a|
0000b950  20 68 65 61 70 62 6c 6f  63 6b 20 61 6e 64 20 6e  | heapblock and n|
0000b960  6f 20 46 4e 20 69 73 20  6e 61 6d 65 64 20 74 6f  |o FN is named to|
0000b970  20 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  | .              |
0000b980  61 63 74 75 61 6c 6c 79  20 70 65 72 66 6f 72 6d  |actually perform|
0000b990  20 74 68 65 20 73 61 76  65 0a 20 20 20 20 20 20  | the save.      |
0000b9a0  20 20 20 20 20 20 2d 20  41 64 64 65 64 20 66 69  |      - Added fi|
0000b9b0  6c 65 20 73 69 7a 65 20  70 61 72 61 6d 65 74 65  |le size paramete|
0000b9c0  72 20 74 6f 20 75 73 65  72 20 46 4e 20 41 74 74  |r to user FN Att|
0000b9d0  61 63 68 44 61 74 61 4c  6f 61 64 0a 20 20 20 20  |achDataLoad.    |
0000b9e0  20 20 56 31 2e 31 33 20  2d 20 42 75 67 20 66 69  |  V1.13 - Bug fi|
0000b9f0  78 65 73 20 66 6f 72 20  27 6e 6f 20 6c 6f 61 64  |xes for 'no load|
0000ba00  27 20 66 72 6f 6d 20 61  6e 6f 74 68 65 72 20 61  |' from another a|
0000ba10  70 70 6c 69 63 61 74 69  6f 6e 0a 20 20 20 20 20  |pplication.     |
0000ba20  20 56 31 2e 31 34 20 2d  20 4d 6f 72 65 20 6c 69  | V1.14 - More li|
0000ba30  62 72 61 72 79 20 72 6f  75 74 69 6e 65 73 20 63  |brary routines c|
0000ba40  6c 61 69 6d 20 70 72 69  76 61 74 65 20 77 6f 72  |laim private wor|
0000ba50  6b 73 70 61 63 65 20 74  6f 0a 20 20 20 20 20 20  |kspace to.      |
0000ba60  20 20 20 20 20 20 20 20  61 76 6f 69 64 20 69 6e  |        avoid in|
0000ba70  74 65 72 61 63 74 69 6f  6e 73 0a 20 20 20 20 20  |teractions.     |
0000ba80  20 20 20 20 20 20 20 2d  20 41 64 64 65 64 20 72  |       - Added r|
0000ba90  6f 75 74 69 6e 65 20 50  52 4f 43 73 68 65 6c 6c  |outine PROCshell|
0000baa0  5f 53 65 74 49 63 6f 6e  42 75 74 74 6f 6e 54 79  |_SetIconButtonTy|
0000bab0  70 65 0a 20 20 20 20 20  20 20 20 20 20 20 20 2d  |pe.            -|
0000bac0  20 41 64 64 65 64 20 72  6f 75 74 69 6e 65 20 50  | Added routine P|
0000bad0  52 4f 43 73 68 65 6c 6c  5f 49 63 6f 6e 53 65 74  |ROCshell_IconSet|
0000bae0  45 53 47 0a 20 20 20 20  20 20 20 20 20 20 20 20  |ESG.            |
0000baf0  2d 20 41 64 64 65 64 20  72 6f 75 74 69 6e 65 20  |- Added routine |
0000bb00  50 52 4f 43 73 68 65 6c  6c 5f 49 63 6f 6e 53 65  |PROCshell_IconSe|
0000bb10  74 54 65 78 74 0a 20 20  20 20 20 20 20 20 20 20  |tText.          |
0000bb20  20 20 2d 20 41 64 64 65  64 20 72 6f 75 74 69 6e  |  - Added routin|
0000bb30  65 20 50 52 4f 43 73 68  65 6c 6c 5f 49 63 6f 6e  |e PROCshell_Icon|
0000bb40  53 65 74 53 70 72 69 74  65 0a 20 20 20 20 20 20  |SetSprite.      |
0000bb50  20 20 20 20 20 20 2d 20  41 64 64 65 64 20 72 6f  |      - Added ro|
0000bb60  75 74 69 6e 65 20 50 52  4f 43 73 68 65 6c 6c 5f  |utine PROCshell_|
0000bb70  49 63 6f 6e 53 65 74 42  6f 72 64 65 72 0a 20 20  |IconSetBorder.  |
0000bb80  20 20 20 20 20 20 20 20  20 20 2d 20 41 64 64 65  |          - Adde|
0000bb90  64 20 72 6f 75 74 69 6e  65 20 50 52 4f 43 73 68  |d routine PROCsh|
0000bba0  65 6c 6c 5f 49 63 6f 6e  53 65 74 48 43 65 6e 74  |ell_IconSetHCent|
0000bbb0  72 65 64 0a 20 20 20 20  20 20 20 20 20 20 20 20  |red.            |
0000bbc0  2d 20 41 64 64 65 64 20  72 6f 75 74 69 6e 65 20  |- Added routine |
0000bbd0  50 52 4f 43 73 68 65 6c  6c 5f 49 63 6f 6e 53 65  |PROCshell_IconSe|
0000bbe0  74 56 43 65 6e 74 72 65  64 0a 20 20 20 20 20 20  |tVCentred.      |
0000bbf0  20 20 20 20 20 20 2d 20  41 64 64 65 64 20 72 6f  |      - Added ro|
0000bc00  75 74 69 6e 65 20 50 52  4f 43 73 68 65 6c 6c 5f  |utine PROCshell_|
0000bc10  49 63 6f 6e 53 65 74 46  69 6c 6c 65 64 0a 20 20  |IconSetFilled.  |
0000bc20  20 20 20 20 20 20 20 20  20 20 2d 20 41 64 64 65  |          - Adde|
0000bc30  64 20 72 6f 75 74 69 6e  65 20 50 52 4f 43 73 68  |d routine PROCsh|
0000bc40  65 6c 6c 5f 49 63 6f 6e  53 65 74 52 69 67 68 74  |ell_IconSetRight|
0000bc50  4a 75 73 74 0a 20 20 20  20 20 20 20 20 20 20 20  |Just.           |
0000bc60  20 2d 20 50 52 4f 43 73  68 65 6c 6c 5f 41 74 74  | - PROCshell_Att|
0000bc70  61 63 68 4d 65 6e 75 20  6e 6f 77 20 63 68 61 6e  |achMenu now chan|
0000bc80  67 65 73 20 74 68 65 20  62 75 74 74 6f 6e 20 74  |ges the button t|
0000bc90  79 70 65 0a 20 20 20 20  20 20 20 20 20 20 20 20  |ype.            |
0000bca0  20 20 6f 66 20 74 68 65  20 69 63 6f 6e 20 74 6f  |  of the icon to|
0000bcb0  20 31 20 28 63 6c 69 63  6b 29 20 69 66 20 74 68  | 1 (click) if th|
0000bcc0  65 20 6d 65 6e 75 20 69  73 20 62 65 69 6e 67 0a  |e menu is being.|
0000bcd0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 61 74  |              at|
0000bce0  74 61 63 68 65 64 20 74  6f 20 61 6e 20 69 63 6f  |tached to an ico|
0000bcf0  6e 0a 20 20 20 20 20 20  56 31 2e 32 30 20 2d 20  |n.      V1.20 - |
0000bd00  4e 6f 77 20 75 73 65 73  20 4d 65 6e 75 55 74 69  |Now uses MenuUti|
0000bd10  6c 73 20 6d 6f 64 75 6c  65 20 66 6f 72 20 6d 65  |ls module for me|
0000bd20  6e 75 20 68 61 6e 64 6c  69 6e 67 0a 20 20 20 20  |nu handling.    |
0000bd30  20 20 20 20 20 20 20 20  2d 20 41 64 64 65 64 20  |        - Added |
0000bd40  72 6f 75 74 69 6e 65 20  50 52 4f 43 73 68 65 6c  |routine PROCshel|
0000bd50  6c 5f 49 63 6f 6e 53 65  74 53 65 6c 65 63 74 65  |l_IconSetSelecte|
0000bd60  64 0a 20 20 20 20 20 20  20 20 20 20 20 20 2d 20  |d.            - |
0000bd70  41 64 64 65 64 20 72 6f  75 74 69 6e 65 20 50 52  |Added routine PR|
0000bd80  4f 43 73 68 65 6c 6c 5f  49 63 6f 6e 53 65 74 55  |OCshell_IconSetU|
0000bd90  6e 73 65 6c 65 63 74 61  62 6c 65 0a 20 20 20 20  |nselectable.    |
0000bda0  20 20 20 20 20 20 20 20  2d 20 41 64 64 65 64 20  |        - Added |
0000bdb0  72 6f 75 74 69 6e 65 20  46 4e 73 68 65 6c 6c 5f  |routine FNshell_|
0000bdc0  53 74 72 6f 6e 67 48 6c  70 49 73 41 76 61 69 6c  |StrongHlpIsAvail|
0000bdd0  61 62 6c 65 0a 20 20 20  20 20 20 20 20 20 20 20  |able.           |
0000bde0  20 2d 20 41 64 64 65 64  20 72 6f 75 74 69 6e 65  | - Added routine|
0000bdf0  20 46 4e 73 68 65 6c 6c  5f 4d 65 6e 75 4e 65 77  | FNshell_MenuNew|
0000be00  0a 20 20 20 20 20 20 20  20 20 20 20 20 2d 20 41  |.            - A|
0000be10  64 64 65 64 20 72 6f 75  74 69 6e 65 20 46 4e 73  |dded routine FNs|
0000be20  68 65 6c 6c 5f 4d 65 6e  75 41 64 64 0a 20 20 20  |hell_MenuAdd.   |
0000be30  20 20 20 20 20 20 20 20  20 2d 20 41 64 64 65 64  |         - Added|
0000be40  20 72 6f 75 74 69 6e 65  20 46 4e 73 68 65 6c 6c  | routine FNshell|
0000be50  5f 4d 65 6e 75 44 65 6c  65 74 65 0a 20 20 20 20  |_MenuDelete.    |
0000be60  20 20 20 20 20 20 20 20  2d 20 41 64 64 65 64 20  |        - Added |
0000be70  72 6f 75 74 69 6e 65 20  46 4e 73 68 65 6c 6c 5f  |routine FNshell_|
0000be80  4d 65 6e 75 43 6f 6c 6f  75 72 73 0a 20 20 20 20  |MenuColours.    |
0000be90  20 20 20 20 20 20 20 20  2d 20 41 64 64 65 64 20  |        - Added |
0000bea0  72 6f 75 74 69 6e 65 20  46 4e 73 68 65 6c 6c 5f  |routine FNshell_|
0000beb0  4d 65 6e 75 44 6f 74 74  65 64 0a 20 20 20 20 20  |MenuDotted.     |
0000bec0  20 20 20 20 20 20 20 2d  20 41 64 64 65 64 20 72  |       - Added r|
0000bed0  6f 75 74 69 6e 65 20 46  4e 73 68 65 6c 6c 5f 4d  |outine FNshell_M|
0000bee0  65 6e 75 57 72 69 74 61  62 6c 65 0a 20 20 20 20  |enuWritable.    |
0000bef0  20 20 20 20 20 20 20 20  2d 20 41 64 64 65 64 20  |        - Added |
0000bf00  72 6f 75 74 69 6e 65 20  46 4e 73 68 65 6c 6c 5f  |routine FNshell_|
0000bf10  4d 65 6e 75 54 69 63 6b  4f 6e 6c 79 31 0a 20 20  |MenuTickOnly1.  |
0000bf20  20 20 20 20 20 20 20 20  20 20 2d 20 41 64 64 65  |          - Adde|
0000bf30  64 20 72 6f 75 74 69 6e  65 20 46 4e 73 68 65 6c  |d routine FNshel|
0000bf40  6c 5f 4d 65 6e 75 54 69  63 6b 4f 6e 6c 79 32 0a  |l_MenuTickOnly2.|
0000bf50  20 20 20 20 20 20 20 20  20 20 20 20 2d 20 4d 6f  |            - Mo|
0000bf60  64 69 66 69 65 64 20 61  6c 6c 20 6f 74 68 65 72  |dified all other|
0000bf70  20 6d 65 6e 75 20 72 6f  75 74 69 6e 65 73 0a 20  | menu routines. |
0000bf80  20 20 20 20 20 20 20 20  20 20 20 2d 20 41 64 64  |           - Add|
0000bf90  65 64 20 72 6f 75 74 69  6e 65 20 46 4e 73 68 65  |ed routine FNshe|
0000bfa0  6c 6c 5f 53 74 72 6f 6e  67 48 6c 70 49 73 41 76  |ll_StrongHlpIsAv|
0000bfb0  61 69 6c 61 62 6c 65 0a  20 20 20 20 20 20 20 20  |ailable.        |
0000bfc0  20 20 20 20 2d 20 41 64  64 65 64 20 72 6f 75 74  |    - Added rout|
0000bfd0  69 6e 65 20 50 52 4f 43  73 68 65 6c 6c 5f 41 74  |ine PROCshell_At|
0000bfe0  74 61 63 68 50 72 65 51  75 69 74 48 61 6e 64 6c  |tachPreQuitHandl|
0000bff0  65 72 0a 20 20 20 20 20  20 20 20 20 20 20 20 2d  |er.            -|
0000c000  20 41 64 64 65 64 20 72  6f 75 74 69 6e 65 20 50  | Added routine P|
0000c010  52 4f 43 73 68 65 6c 6c  5f 41 74 74 61 63 68 4f  |ROCshell_AttachO|
0000c020  70 65 6e 57 69 6e 64 6f  77 48 61 6e 64 6c 65 72  |penWindowHandler|
0000c030  0a 20 20 20 20 20 20 20  20 20 20 20 20 2d 20 41  |.            - A|
0000c040  64 64 65 64 20 72 6f 75  74 69 6e 65 20 50 52 4f  |dded routine PRO|
0000c050  43 73 68 65 6c 6c 5f 41  74 74 61 63 68 43 6c 6f  |Cshell_AttachClo|
0000c060  73 65 57 69 6e 64 6f 77  48 61 6e 64 6c 65 72 0a  |seWindowHandler.|
0000c070  20 20 20 20 20 20 20 20  20 20 20 20 2d 20 41 64  |            - Ad|
0000c080  64 65 64 20 72 6f 75 74  69 6e 65 20 46 4e 73 68  |ded routine FNsh|
0000c090  65 6c 6c 5f 53 70 72 69  74 65 41 72 65 61 4c 6f  |ell_SpriteAreaLo|
0000c0a0  61 64 0a 0c 0a 20 20 20  20 20 20 20 20 20 20 20  |ad...           |
0000c0b0  20 2d 20 41 64 64 65 64  20 72 6f 75 74 69 6e 65  | - Added routine|
0000c0c0  20 50 52 4f 43 73 68 65  6c 6c 5f 53 70 72 69 74  | PROCshell_Sprit|
0000c0d0  65 41 72 65 61 53 61 76  65 0a 20 20 20 20 20 20  |eAreaSave.      |
0000c0e0  20 20 20 20 20 20 2d 20  41 64 64 65 64 20 72 6f  |      - Added ro|
0000c0f0  75 74 69 6e 65 20 46 4e  73 68 65 6c 6c 5f 53 70  |utine FNshell_Sp|
0000c100  72 69 74 65 47 65 74 50  74 72 0a 20 20 20 20 20  |riteGetPtr.     |
0000c110  20 20 20 20 20 20 20 2d  20 41 64 64 65 64 20 72  |       - Added r|
0000c120  6f 75 74 69 6e 65 20 50  52 4f 43 73 68 65 6c 6c  |outine PROCshell|
0000c130  5f 53 70 72 69 74 65 52  65 6e 61 6d 65 0a 20 20  |_SpriteRename.  |
0000c140  20 20 20 20 20 20 20 20  20 20 2d 20 41 64 64 65  |          - Adde|
0000c150  64 20 72 6f 75 74 69 6e  65 20 46 4e 73 68 65 6c  |d routine FNshel|
0000c160  6c 5f 4f 53 43 68 65 63  6b 56 65 72 73 69 6f 6e  |l_OSCheckVersion|
0000c170  0a 20 20 20 20 20 20 20  20 20 20 20 20 2d 20 41  |.            - A|
0000c180  64 64 65 64 20 72 6f 75  74 69 6e 65 20 46 4e 73  |dded routine FNs|
0000c190  68 65 6c 6c 5f 4f 53 43  68 65 63 6b 4d 6f 64 75  |hell_OSCheckModu|
0000c1a0  6c 65 56 65 72 73 69 6f  6e 0a 20 20 20 20 20 20  |leVersion.      |
0000c1b0  20 20 20 20 20 20 2d 20  41 64 64 65 64 20 72 6f  |      - Added ro|
0000c1c0  75 74 69 6e 65 20 50 52  4f 43 73 68 65 6c 6c 5f  |utine PROCshell_|
0000c1d0  49 63 6f 6e 53 65 74 4c  65 66 74 4a 75 73 74 0a  |IconSetLeftJust.|
0000c1e0  20 20 20 20 20 20 20 20  20 20 20 20 2d 20 46 69  |            - Fi|
0000c1f0  78 65 64 20 50 52 4f 43  73 68 65 6c 6c 5f 49 63  |xed PROCshell_Ic|
0000c200  6f 6e 53 65 74 52 69 67  68 74 4a 75 73 74 0a 20  |onSetRightJust. |
0000c210  20 20 20 20 20 20 20 20  20 20 20 2d 20 57 72 69  |           - Wri|
0000c220  74 61 62 6c 65 20 69 63  6f 6e 20 68 61 6e 64 6c  |table icon handl|
0000c230  65 72 20 6e 6f 77 20 69  67 6e 6f 72 65 73 20 75  |er now ignores u|
0000c240  6e 73 65 6c 65 63 74 61  62 6c 65 20 69 63 6f 6e  |nselectable icon|
0000c250  73 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |s.              |
0000c260  77 68 65 6e 20 6d 6f 76  69 6e 67 20 63 61 72 65  |when moving care|
0000c270  74 0a 20 20 20 20 20 20  20 20 20 20 20 20 2d 20  |t.            - |
0000c280  41 64 64 65 64 20 73 75  70 70 6f 72 74 20 66 6f  |Added support fo|
0000c290  72 20 52 65 73 46 69 6e  64 20 28 69 6e 74 65 72  |r ResFind (inter|
0000c2a0  6e 61 74 69 6f 6e 61 6c  69 73 61 74 69 6f 6e 20  |nationalisation |
0000c2b0  6f 66 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |of.             |
0000c2c0  20 6d 65 73 73 61 67 65  73 20 65 74 63 29 0a 20  | messages etc). |
0000c2d0  20 20 20 20 20                                    |     |
0000c2d5