
The version number to be written on your registration card is 1.31

Changes since 1.30
==================
The vq_color in the VDI library function now returns the values as
in the manual - it no longer also includes the index

Changes since 1.23
==================

Due to lack of disk space we can no longer supply a high resolution
version of the picture used by the program DEMO.BAS, i.e. JACK.SCR.
The program still works in high resolution but the picture doesn't
look as good.

New Language Features
---------------------
FUNCTIONs can now be defined as well as DEF FNs. FUNCTIONs work exactly
like sub-prorgams except that they return a value. They have the
advantage over DEF FNs that their names need not start with FN. For
example,

FUNCTION Fibonacci(VAL n)
SELECT CASE n
CASE 0: Fibonacci=0
CASE 1: Fibonacci=1
CASE REMAINDER: Fibonacci=Fibonacci(n-1)+Fibonacci(n-2)
END SELECT
END FUNCTION

However FUNCTIONs can not be used before their definition unless they
are declared using the DECLARE statement. The function above could be
declared as follows:

DECLARE FUNCTION Fibonacci(VAL n)

Notice that the syntax declaration is exactly the same as the FUNCTION
statement. You can also declare SUB-programs if you wish. This is not
required in HiSoft BASIC but gives greater compatibility with
QuickBASIC and better documentation.

BIN$ is a new function that returns the binary representation of a
number as a string in a similar way to HEX$ and OCT$.

The GET and PUT statements have been extended so that rather than using
just an array name you can give an array element. This will be the
first element that will be used for the image. As a result you can
store more than one image in one array to make programming cycling
images much easier. In general it is best to use 2 dimensional arrays.

e.g.

DIM pics%(2,2503)	'	enough for low resolution
....
GET (0,0)-(99,99),a(1,0)
.....
GET (0,0)-(99,99),a(2,0)

FOR i=1 TO 2		' display both
	PUT (0,0),a(i,0),PSET
	INPUT a$
NEXT i

You can now change the currency symbol used by the PRINT USING command.
This is achieved by changing the value at SYSTAB+66. For example,

pokeb systab+66,asc("")

changes it to a  sign so that

print using "$$#.##",1.23

will give

 1.23

You can also change the size of the line buffer used by the INPUT# command.
This is acheived by changing the long word value at SYSTAB+68. For example,

pokeb systab+68,2048

changes the buffer to be 2048 bytes rather than the default 1024 bytes, thus
allowing you to read longer strings using INPUT#. In general, it is better to
read long strings using INPUT$ as this is more effecient.

SYSTAB can now be used in TOS mode although the attributes for windows etc.
are not supported.

The compiler now optimises raising to integer powers and as a result you
can now use negative numbers in this case.

e.g. print (-2) ^2

will give 4.

Editor improvement
------------------
The cursor is positioned better after the Find, Goto Line, Goto Bottom
and other commands.

Programs can now be compiled without showing the options box using
Shift-Alt-C.

Library improvements
---------------------
We have added support for the new operating system calls provided by
TOS 1.4 and TOS 1.6. These are detailed in the file NEWTOS.BAS.

We have also implemented FNshel_write% in the GEMAES library, which can
be used to run another program when control would return to the Desktop.
This can be used to CHAIN programs without 'losing' any memory although
with the disadvantage that the program cannot be run from a CLI or within
another program. The syntax is as follows:

res=FNshel_write(ex%,gr%,over%,commandname$,commandline$)

Both the ex% and over% parameters must be 1 on all current versions of the
operating system. The gr% parameter should be 1 for GEM programs, 0 for TOS
and TTP programs. The program to be run is given in commandname$ and its
command line is passed in command$.

form_keybd and form_button have also been included. These functions are
only of use when writing your own version of form_do and so will not
be detailed here.

Other bits and pieces
---------------------

The compiler now rings the bell when an error is detected and when
compilation is complete.

The maximum number of lines in a program has now been extended to 16383
although DATA statements must be in the first 4095 lines. The compiler
now has much better checks for these limits.

However with large programs you may get the message 'internal error SYMFULL'
when compiling. This means that the program is too big to be compiled
with Power BASIC although it can be compiler with HiSoft BASIC. Please
contact us for upgrade details.

INPUT ; is now fully implemented.

When CLOSE#ing a file, if you have any FIELDed variables associated
with that channel then they will be set them to a null string
immediately after the CLOSE# automatically. You need no longer do this
yourself.

TOS programs generated with the compiler can now take advantage of
screens that are wider than 80 columns automatically. If your programs
need to have exactly 80 columns for cosmetic reasons then use

WIDTH 80

to enforce this.
Page 4-13 top right - please note the default program buffer size is
now 30k. This permits all of the DEMO programs to be compiled immediately
(except FASTCONV which needs a bigger edit buffer size).

Changes since 1.15
==================

There is a new sub-program in the BIOS library:
BLOCKMOVE source&,dest&,length&
This copies length& bytes of memory from source& to dest&.

There is a sub-program in the VDI library we neglected to document:
vsc_form array()

Compatibility with QuickBASIC 3.0 has been improved and COMMON SHARED
is now supported. This works like DIM SHARED except that any arrays
are not dimensioned. They should be dimensioned first. Functions may
now have spaces between the FN and the name. The compiler is now faster
(by 8% on one large test).

Both the editor and compiled programs are now 100% VDI legal which
means they run under the Abaq GEM driver and on large-screen displays.

Various bugs in the runtimes have been fixed.

New Editor Features
===================
There is a new item under Preferences allowing the user to stop the
cursor flashing. This setting is remembered if you Save Preferences.

There is a keyboard shortcut for Save, Shift-Alt-S.

CheckST has been updated.

Manual Corrections
=================
Page 7-7: dgetpath VARPTR a$,drive%
The current path is returned in the variable string parameter a$.
Page 7-21: The VDI call to clear a workstation is v_clrwk, not v_clrwrk

Last changed: 2nd August 1990
