> <BasicLib$Dir>.!Help

  The floating point assembler FloatAss gives access to floating-point
assembler mnemonics from the Basic assembler. It should be installed with
LIBRARY "<BasicLib$Dir>.FloatAss", and used by putting
FNfloat("<operation>") into an assembler program. The full syntax is
supported, together with the pseudo-ops EQUFS, EQUFD, EQUFE and EQUFP to
produce floating-point constants of the required precision. EQUFD and EQUFE
require the floating point emulator to be present at assembly time, as Basic
doesn't have the precision required to generate these.

  The OPT pseudo-operation is also supported; this just sets the global
variable Z%. Note that the initial value of Z% will be unpredictable, so you
should always set OPT explicitly.

  An example file FloatCirc is provided; it just draws a circle. The code
isn't supposed to be particularly efficient, it just shows how to use the
floating-point intructions.

  It's effectively impossible to test all options (it would take a lot
longer than writing the code in the first place), so no guarantee is given
that the correct code will always be assembled. To help with problems, an
extra option can be enabled by setting bit 3 of the OPT (numbers 8-15),
which will use the SWI Debugger_Disassemble to disassemble the code which
has been generated, and print this in the same format as the normal assembly
listing. It is therefore possible to compare the output with the input,
which should highlight any problems. This facility does not apply to
constants generated with EQUFx; however, the most common format here is
likely to be packed decimal, and this is fairly easy to decode by eye.

  Internal variables are all local, except for Z% described above. No
internal floating-point variables are used, so expressions involving them
should always evaluate correctly. The only exception to this is that PC and
pc are made local and defined to 15 while evaluating register numbers, as
these are known internally by the normal Basic assembler.

  Unfortunately, procedures and functions can't be made local in Basic. The
names used internally are:

PROCsplit    PROCopt        PROCequfp   PROCequfs   PROCequf
PROCopcode   PROCmnem       FNgetreg    PROCencode  PROCregs
PROCregaddr  PROCloadstore  PROCsetaddr
FNisnum      FNissnum       FNisfnum    FNisexpnum  FNtoupper

  Finally, the standard disclaimer. This code is FreeWare, but I retain
copyright. You can copy it freely, as long as you don't sell it for profit,
and as long as this file goes with it. If you make any changes add a comment
to that effect in both the program header and in this file. I make no
warranty for the performance of the program, fitness for any purpose, or
absence of bugs, and I take no responsibility for files erased, computers
blown up, nuclear wars started, or any other consequence of the use of the
program. Basically, I've done the best I can to make it bug free, but beyond
that (as with all PD programs) you should use it with care.

  If you find the program useful you might like to make a donation to Oxfam
- say 5.

  I can be contacted by e-mail on Janet (the UK academic network) as
SB2 @ UK.AC.RL.IB, or by snail mail:

       Stephen Burke,
   c/o 7, Egdon Drive,
       Luton,
       Beds
       LU2 7AZ
