<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<!DOCTYPE faq PUBLIC "-//SiliconOwl//DTD FAQ document 1.20//EN" "http://www.aether.demon.co.uk/dtd/faq.dtd">
<faq title="The comp.sys.acorn.programmer FAQ"
     maintainer="Matthew Hambley"
     email="faq@aether.demon.co.uk"
     version="1.45"
     updated="2nd April 2006">
 <usenet>
  <distribution>
   <homegroup name="comp.sys.acorn.programmer"/>
   <answergroup name="comp.sys.acorn.announce"/>
   <answergroup name="comp.answers"/>
   <answergroup name="news.answers"/>
  </distribution>
  <archive name="acorn/programmer"/>
 </usenet>
 <web>
  <weblocation url="http://www.aether.demon.co.uk/faqs/programmer.html"/>
  <fullhistorylocation url="http://www.aether.demon.co.uk/faqs/programmer-history.html" />
  <keywords>acorn,computer,programmer,faq</keywords>
 </web>
 <summary>
   This is the FAQ for the comp.sys.acorn.programmer news group.  It gives
   answers to many often asked questions and some not so often asked
   questions.  It should be read by anyone considering posting to this
   group before they do so.
 </summary>
 <preamble>
  <introduction>
    <p>
      There are a number of questions which crop up time and again in the
      comp.sys.acorn.programmer newsgroup.  This FAQ hopes to answer these in
      an attempt to keep the signal to noise ratio on the group high.  It
      also covers a number of points concerning the nature of the news group
      itself.
    </p>
    <p>
      Please be aware that this FAQ does not hope to be a comprehensive
      resource for programmers.  Rather it is intended to be what it claims
      to be, an answer to some frequently asked questions.  If you don't like
      this, please feel free to write and maintain your own.
    </p>
    <p>
      Furthermore note that due to the depressingly large amounts of spam
      which afflict my FAQ e-mail address I automatically delete all mail
      which does not have the word <quote>FAQ</quote> in the subject line.
      Simply replying to this post is OK otherwise make sure you include
      <quote>FAQ</quote> somewhere in the subject.
    </p>
  </introduction>
  
  <history>
   <release version="1.45" date="2nd April 2006">
    <revision>New version of GCC</revision>
   </release>

   <release version="1.44" date="2nd February 2006">
    <revision>New version of RTK</revision>
    <revision>New version of XhoX11</revision>
    <revision>Example mirror for JFShared</revision>
    <revision>New URL for <quote>Routines</quote></revision>
    <revision>New URL for SharedBLibM</revision>
    <revision>New home for Smalltalk</revision>
    <revision>New home for new version of Dr Wimp</revision>
    <revision>New home and maintainer for RiscXLib</revision>
    <revision>Noted lack of home for Desk</revision>
    <revision>Removed Mesa as the author appears to have disowned it</revision>
    <revision>Typo and spelling fixes</revision>
   </release>

   <release version="1.43" date="6th January 2006">
    <revision>New version of OSLib</revision>
   </release>

   <release version="1.42" date="2nd July 2005">
    <revision>
     Removed reference to the old GCC.  There's no reason to use it that I
     can think of
    </revision>
    <revision>Update the current version of GCC</revision>
   </release>

   <release version="1.41" date="12th June 2005">
    <revision>
     Added Adam Richardson's page of tips to the list of information sources
    </revision>
   </release>

   <release version="1.40" date="1st March 2005">
    <revision>Spotted that the complete history URL was missing</revision>
   </release>

   <release version="1.39" date="3rd November 2004">
    <revision>
     Added the <quote>Routines</quote> library to the BASIC libraries
     section
    </revision>
   </release>

   <release version="1.38" date="1st July 2004">
     <revision>Added the Risc Package project to</revision>
   </release>

   <release version="1.37" date="3rd June 2004">
     <revision>Updated language and library details</revision>
     <revision>Added the RISC OS Toolkit to the C/C++ libraries list</revision>
   </release>

   <release version="1.36" date="5th May 2004">
     <revision>Added more languages</revision>
     <revision>Removed C-learning service</revision>
     <revision>Many changes to library deatails</revision>
     <revision>Updated GCC information</revision>
     <revision>Re-worded to clarify the status of this document</revision>
     <revision>Re-wrote 32-bit processor section</revision>
   </release>

   <release version="1.35" date="15th April 2004">
     <revision>Spelling mistakes and typo squashing session</revision>
     <revision>Added Bob to the languages list</revision>
     <revision>Added Weave to the languages list</revision>
   </release>

   <release version="1.34" date="5th October 2003">
    <revision>Removed Dynamite from the library list as it is no longer
     easily available</revision>
    <revision>Some random tidying up</revision>
   </release>

   <release version="1.33" date="2nd February 2003">
    <revision>Heard about a new version of OSLib.</revision>
   </release>

   <release version="1.32" date="15th December 2002">
    <revision>New information on OSLib and WimpWorks</revision>
    <revision>The 26/32 bit situation has changed so the answer has too</revision>
    <revision>Spelling corrections</revision>
    <revision>Changed the Mesa URL</revision>
   </release>

   <release version="1.31" date="1st November 2002">
    <revision>Added a note about the need to include the word <quote>FAQ</quote>
     in the subject line of e-mail sent to me</revision>
    <revision>Added a reference to the <quote>C Learning</quote> initiative</revision>
   </release>
   
   <release version="1.3" date="14th July 2002">
    <revision>Added a new section for programming information and moved some
    of the old information into it</revision>
    <revision>Got URL's and version numbers for JFShared and Dr. Wimp.</revision>
    <revision>A little elaboration on the nature of the Beta 32-bit addressing
    mode Shared C Library.</revision>
    <revision>Ammended PHP URL.</revision>
   </release>
   
   <release version="1.1" date="5th July 2001">
    <revision>Amended Python URL, again.</revision>
    <revision>Changed reference to Deja News to Google Groups.</revision>
    <revision>Corrected some spelling.</revision>
    <revision>Added Zhaba to the JVM question</revision>
   </release>
   
   <release version="1.0" date="1st July 2001">
     <revision>
       The FAQ has been approved for posting to *.answers.  It is now
       <quote>legit</quote>
     </revision>
   </release>
   
   <release version="0.9ß" date="4th June 2001">
    <revision>It was pointed out to me that HUGS is an interpreter, not a laguage</revision>
   </release>
   
   <release version="0.8ß" date="18th May 2001">
    <revision>Added Dreamscape to the libraries section and removed the reference to a C++
    class library as I presume this is it</revision>
   </release>
   
   <release version="0.7ß" date="3rd May 2001">
    <revision>Added JFShared</revision>
    <revision>Corrected some URL's</revision>
    <revision>Added PHP to list of available languages</revision>
   </release>
   
   <release version="0.06ß" date="14th Apr 2001">
    <revision>Changed the Easy C/C++ answer in light of new information</revision>
    <revision>Added Mesa to the C libraries section</revision>
    <revision>Added a whole host of URL's to various things</revision>
    <revision>Added a bit concerning spawning processes in BASIC</revision>
   </release>
   
   <release version="0.05ß" date="8th Apr 2001">
    <revision>Move to XML based publicationn</revision>
    <revision>Spelling corrections.</revision>
    <revision>Added SharedBLib to the BASIC libraries section</revision>
    <revision>Various tweaks to library mentiones</revision>
    <revision>A few other minor changes</revision>
   </release>
   
   <release version="0.04ß" date="31st Mar 2001">
    <revision>Plumped up the Java section with some honest-to-goodness information.</revision>
   </release>
   
   <release version="0.03ß" date="3rd Mar 2001">
    <revision>Added a few more links to the introduction.</revision>
    <revision>Then removed them into a dedicated question.</revision>
    <revision>Added a nicer hierarchical question structure.</revision>
    <revision>Added the IF..THEN..ELSE..ENDIF gotcha.</revision>
   </release>
   
   <release version="0.02ß" date="25th Feb 2001">
    <revision>Added the <quote>getting started with WIMP programming</quote> question.</revision>
    <revision>Added reference to Thumb code in the 32-bit section.</revision>
   </release>
   
   <release version="0.01ß" date="15th Feb 2001">
    <revision>This is the first version, thanks to Martin Penny for valuable assistance.</revision>
   </release>
  </history>
 </preamble>
 
 <group topic="Concerning the news group itself">

  <answer question="What is comp.sys.acorn.programmer?">
   <p>
    Comp.sys.acorn.programmer is a newsgroup for discussion regarding
    programming RISC OS computer systems.  Its remit is wide covering
    everything from novice programmers to assembly hackers.
   </p>
   <p>
    You are encouraged to ask any programming questions but be aware that
    you may find people more knowledgeable in a specific area of programming
    (e.g. 3D graphics) on a group dedicated to that subject.
   </p>
  </answer>

  <answer question="Are there any matters of netiquette of which I should be
aware?">
   <p>
    First, a reminder of basic netiquette.  Before posting a question check
    that it is not in this FAQ.  Then check that it has not been discussed
    before. <link url="http://groups.google.com/">Google</link> may be used
    for this last task.
   </p>
   <p>
    You may also find an answer to your question in either a RISC OS
    specific web site (try
    <link url="http://www.drobe.co.uk/search?launched=yes&amp;type=pages&amp;term=">Acorn Search</link>)
    or a generic programming resource such as
    <link url="http://www.wotsit.org">Wotsit</link>.
   </p>
   <p>
    Finally consider whether your question is appropriate to
    comp.sys.acorn.programmer. In particular bear in mind that although you
    are writing your program on a RISC OS machine your question may not be
    RISC OS specific. In these cases there may be a more appropriate group
    available.
   </p>
   <p>
    Having said all that don't be put off posting.  As long as the denizens
    of the group think you have employed due diligence in searching for an
    answer they will be happy to try and help.
   </p>
   <p>
    One last thought.  Do not end your message with <quote>Please reply by
    private e-mail as I do not read this group.</quote>  This is considered
    exceptionaly rude and exploitative.  If you can not be bothered to
    participate in the group, even for the life span of your query, then
    the regulars can not be bothered to help you.
   </p>
  </answer>

  <answer question="What are the rules regarding code fragments?">
   <p>
    It is often a good idea to include a code fragment when asking a
    question as it is often much easier to sort out the problem from the
    code than from a hand-wavey discription.  The golden rule is
    <quote>Keep it short and relevant</quote>.
   </p>
   <p>
    Another trick to make potential helpers' lives easier and increase the
    likelyhood of you getting a useful reply is to include as much error
    information as you can.  Also outline your debugging effort to date:
    What you have tried and what did and didn't work.
   </p>
   <p>
    Code fragments should be included in-line rather than being attached
    with uucode or MIME.  It is also not acceptable to attach binary files
    to your posts. If you feel that a binary will make matters clearer then
    upload it to a web site and provide a link to it.
   </p>
  </answer>
 </group>
 
 <group topic="On the matter of languages and libraries">
   <answer question="Which programming languages are available?">
     <p>
       The most obvious languages are BASIC with its built in assembler as
       these are provided <quote>for free</quote> with the operating system.
       There are a number of C/C++ products as outlined in a following
       question. The Acorn C/C++ package also comes with the ObjAsm assembly
       language development application.  Other languages which have
       received ports over the years include:
     </p>
     <softwarelist title="Languages">
       <package name="Ada"/>
       <package name="AWK" url="http://awk.riscos.org.uk/"/>
       <package name="Bob" version="4" url="http://www.wra1th.plus.com/bob/index.html">
         <p>
           This language is derived from Bob 1.5, an experimental
           object-oriented language with a C-like syntax by David Betz and
           the subject of an article in Dr Dobbs Journal in September 1991.
           Betz is the author of XLisp and later became programming language
           consultant for Apple; NewtonScript has strong resemblances to Bob.
         </p>
         <p>
           ArmBob is a Risc OS extension of Bob. You can write wimp programs
           with it. 
         </p>
       </package>
       <package name="Forth"
                url="ftp://ftp.taygeta.com/pub/Forth/Reviewed/forthmacs.arc"/>
       <package name="Fortran" cost="£124 + VAT"
                url="http://www.intint.demon.co.uk/riscos/sw/ii68.html">
         <p>
           II68 Desktop Fortran 77:  Commercial product from Inteligent
           Interfaces.
         </p>
       </package>
       <package name="Foger"/>
       <package name="Haskell"/>
       <package name="Icon"/>
       <package name="Java"/>
       <package name="Lisp" url="http://www.users.dircon.co.uk/~arcangel/files/"/>
       <package name="Lua" url="http://lua.riscos.org.uk/"/>
       <package name="Pascal"/>
       <package name="Perl"/>
       <package name="PHP" url="http://www.php.alexwaugh.com/"/>
       <package name="Python" url="http://www.schwertberger.de/"/>
       <package name="Sather"/>
       <package name="Smalltalk" url="http://www.rowledge.org/tim/squeak/RISCOSSqueak.html"/>
       <package name="Weave" url="http://weave.riscos.org.uk/">
         <p>
           This is a programming language specialised for constructing web
           sites.  It is a full programming language with variables,
           functions etc, in which the names of HTML tags become strings,
           functions or functionals.
         </p>
       </package>
     </softwarelist>
   </answer>
  
   <answer question="Are there any libraries or similar to ease BASIC programming?">
    <p>There certainly are:</p>
    <softwarelist title="Tools">
     <package name="AppBasic" version="2.02 beta"
              url="http://www.jettons.co.uk/riscos/toolbox/">
      <p>
       The aim of this package is to offer a Visual BASIC style environment
       whereby WIMP applications may be developed quickly.  It utilises the
       Toolbox modules and replaces EasyB by the same author.
      </p>
     </package>

     <package name="DrWimp" cost="freeware" version="4.40"
              url="http://www.rayfavre.me.uk/drwimp.html">
      <p>
       A highly regarded set of resources including not only a library
       but also a skeleton application to ease matters further.
      </p>
     </package>
    
     <package name="JFShared" version="2.54">
      <p>
       A collection of BASIC libraries which come with a few templates to get
       you started.  This library was written by Justin Fletcher for his own
       use so your mileage may vary.
      </p>
      <p>
       Currently dropped off the net but is still available from various
       mirror sites. For instance <link url="http://www.drobe.co.uk/archives/index.php?directory=/freenet.barnet.ac.uk/Acorn/freenet/j.fletcher/jfshared/">Drobe</link>.
      </p>
     </package>

     <package name="Routines" cost="Freeware" version="1.18"
              url="http://www.7thsoftware.com/software.htm">
      <p>
       A collectino of useful functions and procedures which can by
       dynamically included in your applications.
      </p>
     </package>

     <package name="SharedBLib" cost="LGPL" version="1.00"
              url="http://rrt.sc3d.org/Software/RISC%20OS/SharedBLib/">
      <p>
       In the vein of SharedCLib a set of BASIC libraries which exist only
       once in memory.  Supports both CLI and WIMP interfaces and networking.
      </p>
      <p>
       The download page is a little confusing so don't be surprised if it
       takes a while to work out how to download it.
      </p>
     </package>
  
     <package name="WimpBASIC 2" cost="£39"
              url="http://www.apdl.co.uk/progs/wbasic.htm">
      <p>A commercial development environment from APDL.</p>
     </package>
  
     <package name="WimpWorks" cost="£39.99"
              url="http://www.jaffasoft.co.uk/product/wimpworks.html">
      <p>A commercial development environment from Jaffa Software.</p>
     </package>
    </softwarelist>
   </answer>
  
  <answer question="I want to work in C/C++, what is available?">
<softwarelist title="Compilers">
  <package name="Acorn C/C++" cost ="£199">
    <p>Includes the toolbox bits and a pile of other utilities.</p>
    <p>The C compiler (often refered to as Norcroft) is very capable however
    the C++ compiler is based on CFront and as such is showing its age.</p>
    <p>Now developed and available from Castle Technology</p>
  </package>
  
  <package name="Easy C/C++" cost="£19" url="http://www.apdl.co.uk/prog.htm">
    <p>
      Originally produced by Beebug, now sold by ProAction/APDL.  It aims to
      be a good basic C and C++ compiler.  It is a little dated now and some
      doubt has been cast as to its reliability on newer machines. However it
      is cheap and therefore ideal for people who are just learning or who
      are dabbling and don't want to muck about with command lines as in GCC.
    </p>
  </package>

  <package name="GCC" version="3.4.5" cost="free" url="http://gccsdk.riscos.info/">
    <p>
      The latest version of the GNU Compiler Collection ported to RISC OS.
    </p>
  </package>

  <package name="LCC" version="4.20" cost="free" url="http://www.riscos.info/lcc/">
    <p>
      This C compiler is designed to be light-weight.  As such it does not
      support the various extensions which GCC has added.  Nor does it include
      a C++ compiler.
    </p>
  </package>
</softwarelist>

<p>There was also a C interpreter, is that still available? I think it was
written by Hugo Fiennes and came on a magazine cover disc.  We have a vote for
Acorn User, February 1994.</p>

<softwarelist title="Tools">
  <package name="CMunge" url="http://support.riscos.com/Support/Resources/Libraries/StubsG/">
    <p>
      Generates a code skeleton to allow the programming of relocatable
      modules in C. Similar to CMHG which comes with the Acorn C/C++ environment
      but, according to advocates, better.  May be found in the stubsg
      collection.
    </p>
  </package>
</softwarelist>

<softwarelist title="Libraries">
  <package name="conio.h">
    <p>Port of <quote>the most abhorrent M$ lib/header file</quote>.</p>
  </package>

  <package name="ChoX11" version="0.30" url="http://www.riscos.info/xlib/">
    <p>
      An X client library produced as part of the authors Unix Porting Project.
    </p>
  </package>

  <package name="Curses">
    <p>Port of the Unix command line cursor control system.</p>
  </package>

  <package name="DeskLib" verion="2.52" url="http://www.riscos.info/desklib/">
    <p>
      The library from which Desk is a fork.
    </p>
  </package>

  <package name="Desk" version="3.24">
    <p>
      A fork of DeskLib.  It seems to have fallen of the web for the time
      being.
    </p>
  </package>

  <package name="Dreamscape">
    <p>This C++ class library was last updated in June 1998 and an archive of
    it could not be found at the time of writing.  It wraps up the various
    toolbox modules in an object oriented fashion.</p>
  </package>

  <package name="FlexLib">
    <p>Memory manager</p>
  </package>

  <package name="JSLib">
    <p>Mozilla JavaScript library.  Allows applications to support JS
    scripting.</p>
  </package>
  
  <package name="OSLib" version="6.80" cost="GPL" url="http://ro-oslib.sourceforge.net/">
    <p>Well thought of and nigh on comprehensive set of libraries.  A recent
    revision introduced 26/32-bit agnostic code and support for RISC OS 5 and
    Select API's.</p>
  </package>

  <package name="RISC OS Toolkit" version="0.7.1" url="http://rtk.riscos.org.uk/">
    <p>
      A class library to aid application development.  Of particular note is
      its dynamic window construction in the style of Java layout managers.
    </p>
  </package>

  <package name="RiscXLib" url="http://www.riscos.info/xlib/">
    <p>
      A set of X client libraries.  Part of the Unix Porting Project.
    </p>
  </package>

  <package name="StubsG" version="0.04" url="http://support.riscos.com/Support/Resources/Libraries/StubsG/">
    <p>
      The full gammet of libraries supplied by RISC OS Ltd.  Not only does this
      include the stubs library for use with the shared C library but also
      libraries for the toolbox modules, tcp/ip and memory allocation.
    </p>
  </package>

  <package name="UnixLib" url="http://gccsdk.riscos.info/">
    <p>Provides all the functions required for GCC but can also be used with
    Acorn C.  Very useful for porting Unix applications.</p>
  </package>

  <package name="ylib">
    <p>For machines with floating point hardware.  Provides faster versions of
    the maths functions.</p>
  </package>
</softwarelist>
  </answer>
  
  <answer question ="Where can I get an update to the Java virtual machine?">
    <p>If you have version 0.76 then you can't, that's the most recent there
    is.</p>
  </answer>
  
  <answer question="What is available in the way of Java tools?">
    <p>
      There is a web site at which <link url="http://www.chocky.org/java/">
      further information</link> may be found.
    </p>
    <subsection>Virtual Machines</subsection>
    <p>
      The original Java Virtual Machine (JVM) for RISC OS machines is
      called RiscCafe and was written by Acorn, therefore it is not currently
      supported. It supports applets written to the 1.0.2 standard. If you
      want a copy keep your eyes on the charity stalls at shows or the small
      ads in magazines.
    </p>
    <p>
      A newer JVM and support libraries called
      <link url="http://www.chocky.org/unix/downloads.html#kaffe-cvs">Kaffe</link>
      has been made available by the Unix Porting Project.
    </p>
    <p>
      A coding group called eQ R&amp;D gas recently released an alpha test
      version of their JVM,
      <link url="http://www.eqrd.net/english/riscos/index.html">Zhaba</link>
    </p>
    <p>
      A third JVM, called Chockcino, is currently under development. As yet
      no release date is known.
    </p>
    <subsection>Compilers</subsection>

<p>Two Java compilers exist for RISC OS. The first, guavac, compiles to the 1.1
version of the Java run-time environment. It can be used in conjuction with the
libraries supplied with RiscCafe or version 1.1 libraries are available for it.
Guavac support has been dropped in favour of Jikes.</p>

<p>The second compiler is a port of Jikes from IBM. It's newer, faster, leaner
and smells of peppermint.</p>
  </answer>
 </group>
 
 <group topic="Programming RISC OS">
  <answer question="How do I get started?">
<p>In my experience the best way to learn programming is to do it however some
tutorials and reference material can be invaliable.</p>

<p>The various Acorn/RISC OS magazines have covered this topic (generally some
time ago so you will have to seek out back issues) and I can particularly
recomend some of the series run in <citation>Risc User</citation>. The book
<citation>Wimp Programming for All</citation> is based on these articles and is
available on the <quote>RISC User in a Nutshell</quote> CD-ROM.</p>

<p>You may also be interested in Paul Vigays <quote>RISC OS Academy</quote>
initiative.  This is an on-line correspondence course which is to cover
BASIC programming as well as a number of other topics including HTML coding.
<link url="http://www.vigay.com/academy/">Details</link> of the
syllabus and subscription rates are available.</p>
  </answer>
  <answer question="I need manuals and other technical information.  Where can I get it?">
   <p>
    As part of their Select scheme RISC OS Ltd are building up a
    comprehensively revised and updated set of PRMs.  This is available in
    electronic form from the Select members private site.  This is going to
    be a definitive reference for many things and is another good reason for
    joining the Select scheme.  (I also give excelent false witness, price
    list is available on request)
   </p>
   <p>
    There is also a wealth of information for C programmers at
    <link url="http://www.riscos.info">riscos.info</link>.
   </p>
   <p>
    Adam Richardson has collected together a page of
    <link url="http://www.snowstone.org.uk/riscos/documents/programmertips.html">useful little odds and ends</link>.
    It is a short distilate of the PRMs and Style Guide along with some
    common sense suggestions on good practice.
   </p>
  </answer>
  <answer question="What general programming utilities are available">
    <p>
      Much software has been written to ease the process of writing
      software.  Below are listed some of the non language-specific pieces
      which may prove useful.
    </p>
    <softwarelist title="Programming Utilities">
      <package name="RISC OS Packaging Project" url="http://www.riscpkg.org/">
        <p>
          This project aims to provide a dependency tracking package manager
          in the style of Debian's APT.  It is still at an early stage of
          development but you may wish to consider it as a means to
          distribute your software.
        </p>
      </package>
    </softwarelist>
  </answer>
 </group>

  <group topic="Technical issues of import">
    <answer question="What's all this about '32-bit' code?">
      <p>
        It relates to the underlying ARM hardware; the simplest explanation is
        that the earliest ARM CPUs used a combined program counter/processor
        status register.  This limited the effective address range to 64MB
        (<quote>26-bit</quote> code).  Later ARM CPUs provide 26-bit
        compatibility along with extra modes that have separate program
        counter and status registers (<quote>32-bit</quote> code).
      </p>
      <p>
        Some ARM CPUs - such as the one used in the Castle Iyonix - lack the
        26-bit compatibility modes. For one thing 26-bit mode is incompatible
        with the <quote>Thumb</quote> instruction set provided by some ARM
        processors.
      </p>
      <p>
        There is a longer
        <link url="http://www.riscos.info/32bit/">disertation</link> on this
        topic should you wish some further reading.
      </p>
  </answer>
  
  <answer question="Fine, but what C/C++ stuff is 32-bit compatible?">
    <p>
      Castle sell an improved version of the Norcroft compiler, tools and
      libraries which includes an addressing scheme agnostic (i.e. it works for
      both 26 and 32 bit addressing modes) version of the shared C library.
    </p>

    <p>
      GCC also offers 32-bit addressing mode support as does LCC.
    </p>

    <p>
      As far as libraries are concerned most have now been updated but check
      with the original distribution site before assuming that the one you use
      has.
    </p>
  </answer>
 </group>
 
 <group topic="Gotchas of which to be aware">
  <answer question="My BASIC IF...ENDIF block doesn't appear to be working
  properly">
<p>Chances are you have a space after the THEN. In these cases BASIC will
assume that it is dealing with a single line IF. Thus it will execute the rest
of the block regardless of the state of the condition.</p>

<p>There are a number of ways of avoiding this problem in the future. Both Zap
and StrongEd provide a means whereby trailing spaces may be automatically
stripped on file save. Alternatively you can use the BASIC command CRUNCH to
perform a number of size reducing operations including the removal of trailing
spaces.</p>
  </answer>
  
  <answer question="When I try to run another program from within my BASIC
  application something weird happens.">
<p>Performing this task is a little trickier than you might at first think. It
is not simply a matter of *RUNing the new program as doing this will replace
the currently executing code with the new stuff.  Hence when the new program
finishes executing it will exit but the original program is no longer in
existence to return to.</p>

<p>There are a number of ways to achieve the desired goal.  The hardest, most
prone to errors and least recommended method is to fiddle around, a lot, to set
up a new environment in which the new program may run.</p>

<p>If you are looking for an easier and less nasty way there are several.
There is *WimpTask which will work inside and outside the WIMP.  Be warned
though that you have to be careful keeping track of which task is swapped in
at any given time.  If you try to include arguments to the new program by
placing them in memory which is then swapped out you can suffer crashes.</p>

<p>There is also the BASICShell module which is part of the SharedBLib
library.  This module may have trouble if another has claimed certain
vectors.</p>

<p>Finally you can try hacking the code which provides this function out of the
SlideShow application.</p>
  </answer>
 </group>
</faq>
