Release Notes for Vesta
Basic 9.0
Welcome to Vesta
Technology Inc. Single Board Computers for the 21st Century
07/29/2002 Copyright 1998-2002 Vesta Technology
Thank you for purchasing the Vesta
Basic Integrated Development Environment. This file contains release history information
for the MC2000-077, SBC2000-074, MC2000-074 and SBC2000-062. Descriptions refer
to both hardware and software problems, fixes, and features. This is because Vesta
Basic on these boards is inseparable from the hardware.
The major release numbers (before the
decimal point) refer to differences in the code for the Basic engine on the SBC2000.
Minor release numbers (after the decimal point) refer to changes which do not
affect the Basic runtime engine on the SBC2000.
07/10/2002 Release Notes (Rev 9.0)
New features in this release:
- None. This is a bug fix release for the MC2000-077. Apart from changing the
revision numbers to match, there are no changes related to the SBC2000-077, the
MC2000-074 or the SBC2000-062.
Bugs and problems fixed in this release:
-
If you pass an empty constant string to
STRIP(), the compiler will abort without an error message. That is to say, do not use a
statement of the form:
x = STRIP("")
-
If you use long lines and/or a narrow IDE
window, individual lines can wrap to a second or third line on the display. The IDE counts
these as separate lines; the compiler does not. This means that the control-L function of the IDE (to report the line number) can report a different number for a line than the compiler. This does not affect the highlighting of lines by the IDE for single-stepping and animation.
-
On the SBC2000-062, holding down certain
key combinations on the keypad will interfere with output to the LCD.
-
If you have a print statement where there
is a missing comma between the arguments, the compiler may list the error as occurring on a
different line. The following line shows an example which will cause the problem:
PRINT x "string literal"
- Due to the limits of number representation,
you cannot use 32767 or -32768 as the final value of a FOR..NEXT loop. Also, if you use an
increment which goes beyond the limiting value and causes a wrap from positive to negative
or vice-versa, the loop will not terminate properly. As an example, the following loop will
never terminate (because the loop index 'x' never reaches 32766 exactly, and the next value
reached beyond it is -32768, which is less than 32766):
GLOBAL x AS INTEGER
FOR x = 32760 TO 32766 STEP 4
PRINT x, "\009"
NEXT
07/10/2002 Release Notes (Rev 8.0)
New features in this release:
-
The IDE now supports compiler
directives in program source code. If there is a mismatch between the compiler
option(s) set in the source code and the IDE settings, the IDE will inform you
of the mismatch so that you can change one or the other to correct the situation.
Compiler options have the form:
REM COMPILER_OPTION option
where the REM appears at the start
of a line, with one space between it and the word COMPILER_OPTION, and one space
between COMPILER_OPTION and the option itself. Allowed options are DEBUG, NODEBUG,
062, 074, and 077.
-
MC2000-077 support and many other
significant enhancements were added with Revision 7.3,
see below.
Bugs and problems fixed in this release:
-
The MC2000-077 now correctly addresses
variables "spilled" to stack space.
-
LCD_DISPLAY() now works correctly
on the MC2000-077.
-
Parity now works correctly on the
MC2000-077 DEV port.
- The compiler now enforces the prohibition
against BIT variables in RAM addresses beyond 0xFF.
-
The spurious early exits from HIBERNATE()
have been fixed on the SBC2000-062, SBC2000-074, and MC2000-074. The only way
to determine whether an exit from HIBERNATE() was caused by a wakeup interrupt
or by expiration of the hibernation time is to compare the time at wakeup with
the time the HIBERNATE() call was executed.
- The serial port buffers on the MC2000-077
no longer sacrifice a byte of buffer space to the pointer.
-
The error message "Run-time
error '340': Control array element '20' doesn't exist" may appear and the
IDE may exit when you attempt to download, if you had an earlier revision of
Vesta Basic and installed the upgrade into the existing directory, rather than
allowing the install program to put it in a new directory. The solution is to
delete the old Vesta Basic Settings file, VBasSet.SET, from your Vesta Basic
directory, then reboot the IDE.
-
If you use long lines and/or a
narrow IDE window, individual lines can wrap to a second or third line on the
display. The IDE counts these as separate lines; the compiler does not. This
means that the control-L function of the IDE (to report the line number) can
report a different number for a line than the compiler. This does not affect
the highlighting of lines by the IDE for single-stepping and animation.
-
Because the IDE has changed, we
have changed the name of the Vesta Basic subdirectory. This allows you to have
two different installations of Vesta Basic on your system at the same time,
but it may also cause confusion. we recomend that you uninstall the old directory
(\Program Files\VSTBasic2) once you have moved any important program files over
to the new \Program Files\VSTBasic directory.
-
On the SBC2000-062, holding down
certain key combinations on the keypad will interfere with output to the LCD.
-
If you have a print statement where
there is a missing comma between the arguments, the compiler may list the error
as occurring on a different line. The following line shows an example which
will cause the problem:
PRINT x "string literal"
- Due to the limits of number representation,
you cannot use 32767 or -32768 as the final value of a FOR..NEXT loop. Also, if
you use an increment which goes beyond the limiting value and causes a wrap from
positive to negative or vice-versa, the loop will not terminate properly. As an
example, the following loop will never terminate (because the loop index 'x' never
reaches 32766 exactly, and the next value reached beyond it is -32768, which is
less than 32766):
GLOBAL x AS INTEGER
FOR x = 32760 TO 32766 STEP 4
PRINT x, "\009"
NEXT
05/22/2002
Release Notes (Rev 7.3)
New features in this release:
Bugs and problems fixed in this release:
-
On the SBC2000-074 and SBC2000-062,
HIBERNATE() will not work reliably beyond about 4 minutes; the system will wake
up before time has expired without a wakeup event. If you need to hibernate
for longer periods, it must be done in a series of shorter hibernations. The
MC2000-077 does not have this problem. The only way to tell whether HIBERNATE()
has exited because the time has elapsed or because of an interrupt is to check
the system time before and after the call to HIBERNATE().
-
If you use long lines and/or a
narrow IDE window, individual lines can wrap to a second or third line on the
display. The IDE counts these as separate lines; the compiler does not. This
means that the control-L function of the IDE (to report the line number) can
report a different number for a line than the compiler. This does not affect
the highlighting of lines by the IDE for single-stepping and animation.
-
On the SBC2000-062, holding down
certain key combinations on the keypad will interfere with output to the LCD.
-
If you have a print statement where
there is a missing comma between the arguments, the compiler may list the error
as occurring on a different line. The following line shows an example which
will cause the problem:
PRINT x "string literal"
- Due to the limits of number representation,
you cannot use 32767 or -32768 as the final value of a FOR..NEXT loop. Also, if
you use an increment which goes beyond the limiting value and causes a wrap from
positive to negative or vice-versa, the loop will not terminate properly. As an
example, the following loop will never terminate (because the loop index 'x' never
reaches 32766 exactly, and the next value reached beyond it is -32768, which is
less than 32766):
GLOBAL x AS INTEGER
FOR x = 32760 TO 32766 STEP 4
PRINT x, "\009"
NEXT
03/07/2002 Release Notes (Rev 7.2)
New features in this release:
Bugs and problems fixed in this release:
-
If you use long lines and/or a
narrow IDE window, individual lines can wrap to a second or third line on the
display. The IDE counts these as separate lines; the compiler does not. This
means that the control-L function of the IDE (to report the line number) can
report a different number for a line than the compiler. This does not affect
the highlighting of lines by the IDE for single-stepping and animation.
-
On the SBC2000-062, holding down
certain key combinations on the keypad will interfere with output to the LCD.
-
If you have a print statement where
there is a missing comma between the arguments, the compiler may list the error
as occurring on a different line. The following line shows an example which
will cause the problem:
PRINT x "string literal"
- Due to
the limits of number representation, you cannot use 32767 or -32768 as the final
value of a FOR..NEXT loop. Also, if you use an increment which goes beyond the
limiting value and causes a wrap from positive to negative or vice-versa, the
loop will not terminate properly. As an example, the following loop will never
terminate (because the loop index 'x' never reaches 32766 exactly, and the next
value reached beyond it is -32768, which is less than 32766):
GLOBAL x AS INTEGER
FOR x = 32760 TO 32766 STEP 4
PRINT x, "\009"
NEXT
05/16/2001 Release Notes (Rev 7.1)
New features in this release:
Bugs and problems fixed in this release:
-
If you use long lines and/or
a narrow IDE window, individual lines can wrap to a second or third line on the
display. The IDE counts these as separate lines; the compiler does not. This means
that the control-L function of the IDE (to report the line number) can report a
different number for a line than the compiler. This does not affect the highlighting
of lines by the IDE for single-stepping and animation.
-
On the SBC2000-062, holding down
certain key combinations on the keypad will interfere with output to the LCD.
-
If you have a print statement where
there is a missing comma between the arguments, the compiler may list the error
as occurring on a different line. The following line shows an example which
will cause the problem:
PRINT x "string literal"
- Due to
the limits of number representation, you cannot use 32767 or -32768 as the final
value of a FOR..NEXT loop. Also, if you use an increment which goes beyond the
limiting value and causes a wrap from positive to negative or vice-versa, the
loop will not terminate properly. As an example, the following loop will never
terminate (because the loop index 'x' never reaches 32766 exactly, and the next
value reached beyond it is -32768, which is less than 32766):
GLOBAL x AS INTEGER
FOR x = 32760 TO 32766 STEP 4
PRINT x, "\009"
NEXT
01/29/2001 Release Notes (Rev 7.0)
New features in this release:
-
BYTE, INTEGER, and FLOAT variables
can now be assigned to specific addresses in RAM. This allows for simpler and
faster code to access machine registers and I/O ports.
The syntax is: GLOBAL name AS TYPE = address
-
Two new statements, BINPUT and
BPRINT, have been added. These work similarly to INPUT and PRINT, but use binary
representation for numbers rather than ASCII representation. That is, BPRINTing
the integer value 511 will send the two bytes 0xFF, 0x01, rather than the bytes
0x20, 0x35, 0x31, 0x31 (" 511").
-
Access speed for GLOBAL and STATIC
BYTE variables has been increased. Referencing these variables is no longer
slower than accessing GLOBAL and STATIC INTEGER variables.
-
Timeout errors on input now return
separate error codes for the COM (error 89) and DEV (error 90) ports.
Bugs and problems fixed in this release:
-
If you use long lines and/or
a narrow IDE window, individual lines can wrap to a second or third line on the
display. The IDE counts these as separate lines; the compiler does not. This means
that the control-L function of the IDE (to report the line number) can report a
different number for a line than the compiler. This does not affect the highlighting
of lines by the IDE for single-stepping and animation.
-
On the SBC2000-062, holding down
certain key combinations on the keypad will interfere with output to the LCD.
-
If you have a print statement where
there is a missing comma between the arguments, the compiler may list the error
as occurring on a different line. The following line shows an example which
will cause the problem:
PRINT x "string literal"
- Due to
the limits of number representation, you cannot use 32767 or -32768 as the final
value of a FOR..NEXT loop. Also, if you use an increment which goes beyond the
limiting value and causes a wrap from positive to negative or vice-versa, the
loop will not terminate properly. As an example, the following loop will never
terminate (because the loop index 'x' never reaches 32766 exactly, and the next
value reached beyond it is -32768, which is less than 32766):
GLOBAL x AS INTEGER
FOR x = 32760 TO 32766 STEP 4
PRINT x, "\009"
NEXT
4/11/2000 Release Notes (Rev 6.0)
New features in this release:
-
Constant bit declarations are
now allowed. The only legal values which can be used for bit constants are -1
and 0.
-
CONSTANT True AS BIT = -1
CONSTANT False AS BIT = 0
-
The Help file is now in HTML format.
-
The file VSTBD.EXE is now in the
distribution. This is a downloader program which will transfer a compiled VSTB
application to an SBC2000-074 or SBC2000-062. It is intended so that you can
distribute upgrades to your applications without having to release your Basic
source code. Your compiled application image will be in the VSTBasic2 subdirectory
with the name "Program1.tsk". You will need to copy it elsewhere or rename it
before you exit the IDE, or the IDE will delete it as part of its cleanup routine.
The downloader is a DOS application, and takes a command line of the following
form (the "/p" and following number are optional, but must follow the file name
if present):
VSTBD filename /p comport #
Bugs and problems fixed in this release:
-
If you use long lines and/or a narrow IDE window, individual lines can wrap to a
second or third line on the display. The IDE counts these as separate lines; the
compiler does not. This means that the control-L function of the IDE (to report
the line number) can report a different number for a line than the compiler. This
does not affect the highlighting of lines by the IDE for single-stepping and animation.
-
On the SBC2000-062, holding down
certain key combinations on the keypad will interfere with output to the LCD.
-
If you have a print statement where
there is a missing comma between the arguments, the compiler may list the error
as occurring on a different line. The following line shows an example which
will cause the problem:
PRINT x "string literal"
- Due to
the limits of number representation, you cannot use 32767 or -32768 as the final
value of a FOR..NEXT loop. Also, if you use an increment which goes beyond the
limiting value and causes a wrap from positive to negative or vice-versa, the
loop will not terminate properly. As an example, the following loop will never
terminate (because the loop index 'x' never reaches 32766 exactly, and the next
value reached beyond it is -32768, which is less than 32766):
GLOBAL x AS INTEGER
FOR x = 32760 TO 32766 STEP 4
PRINT x, "\009"
NEXT
2/07/2000 Release Notes (Rev 5.0)
New features in this release:
-
Writing to EEPROM now causes a read
operation to be performed first, to determine if the write is necessary. If it is
not, the write operation is not performed. This causes a slight performance penalty
in the case where a write is required, but a speedup if it is not required. It also
helps to minimize "wear" on the EEPROM. Faster execution on the SBC2000-062. The
speedup which was applied to the SBC2000-074 in revision 4 has now been applied
to the SBC2000-062. Detailed information about the execution time of specific statements
and the speedup factor on both boards is available in the Examples\Vesta ST Basic\Applications\Speed
subdirectory.
Bugs and problems fixed in this release:
-
If you use long lines and/or a narrow
IDE window, individual lines can wrap to a second or third line on the display.
The IDE counts these as separate lines; the compiler does not. This means that the
control-L function of the IDE (to report the line number) can report a different
number for a line than the compiler. The highlighting of lines by the IDE for single-stepping
and animation is not affected by this problem. On the SBC2000-062, holding down
certain key combinations on the keypad will interfere with output to the LCD. If
you have a print statement where there is a missing comma between the arguments,
the compiler may list the error as occurring on a different line. The following
line shows an example which will cause the problem:
10/11/1999 Release Notes (Rev 4.0)
New features in this release:
-
Faster execution on the SBC2000-074.
This version of Vesta Basic runs applications more quickly than previous versions.
The speedup you see will depend upon the particular mix of instructions in your
program. Transcendental functions on the SBC2000-074, for example, show about
a 7% improvement in speed. Integer operations show a much larger speed improvement
(up to 80%).
-
Analog input has been added as
a built-in function. See the examples for information on setting up and using
the AIN() function. VAST_SPI_XFER() on the SBC2000-074 now supports active-low
as well as active-high serial clock for peripheral devices (notably, the VADC24).
This is implemented via the new VAST_CLOCK() built-in subroutine. VAST_CLOCK(0),
which is the powerup default, provides an active-high clock. Passing a value
of 2 or 3 to VAST_CLOCK() will provide an active-low clock.
-
The limit of 16 bit variables has
been removed.
-
A new compiler option allows you
to permit global and static variables to "overflow" into the bottom of the stack
area. If you have an application with a large number of global variables which
does not use much stack space, this can be helpful. It is a capability which
requires care in use, though. See the document "Variable Spilling.WRI" for more
information.
-
A new example has been added ("embedded
interface") which includes a Windows 95 application to allow you to monitor/modify
variables and EEPROM array elements.
Bugs and problems fixed in this release:
-
Integer comparisons would fail
if the numerical difference between the two arguments was greater than 32767,
as would happen in the call MAX(30000, -30000), or FOR x = -20000 TO 20000.
-
The third (clock rate) argument
has been removed from the built-in function VAST_SPI_XFER(), since it did nothing.
-
Floating-point constant values
which were used in parameter lists for subroutines and functions were being
passed in with incorrect values in the low-order bits.
-
On the SBC2000-062, holding down
certain key combinations on the keypad will interfere with output to the LCD.
-
If you have a print statement where
there is a missing comma between the arguments, the compiler may list the error
as occurring on a different line. The following line shows an example which
will cause the problem:
PRINT x "string literal"
02/17/1999 Release Notes (Rev 3.2)
New features in this release:
Bugs and problems fixed in this release:
Known bugs and problems:
-
On the SBC2000-062, holding down
certain key combinations on the keypad will interfere with output to the LCD.
-
If you have a print statement where
there is a missing comma between the arguments, the compiler may list the error
as occurring on a different line. The following line shows an example which
will cause the problem:
PRINT x "string literal"
02/01/1999 Release Notes (Rev 3.1)
New features in this release:
Bugs and problems fixed in this release:
Known bugs and problems:
- On the SBC2000-062, holding down
certain key combinations on the keypad will interfere with output to the LCD.
- The IDE's "Debug | Add Watch" function
does not work properly for BYTE variables.
01/22/1999 Release Notes (Rev 3.0)
New features in this release:
Bugs and problems fixed in this release:
-
Character output to LCD displays
has been slowed down so that certain displays which had problems will now work
reliably.
-
The reliability problems with LCD
initialization at powerup have been fixed.
-
Reading individual input bits with
the VTEST() function in the example file "Examples\Vesta ST Basic\Peripherals\VAST
Opto-relay-TTL Digital\VAST DigitalIO.txt" did not work properly for all bits.
This has been corrected.
-
MAX() and MIN() were not returning
correct values when both arguments were negative floating-point numbers.
-
Assignment of values to floating-point
arrays in EEPROM wrote incorrect values. Constant arrays of float and integer
values did not exhibit this problem.
-
RX() and TX() did not work properly
when the transfer size was specified as 16 bits.
-
On the SBC2000-062, holding down
certain key combinations on the keypad will interfere with output to the LCD.
-
The IDE's "Debug | Add Watch" function
does not work properly for BYTE variables.
Miscellaneous information:
Between
revisions 1 and 2, the initialization for the COM port was rewritten. This improved
the reliability of input on the COM port. To get the same reliability on revision
1 boards, put the following two lines at the start of your application:
POKE(0x98, PEEK(0x98) AND 0xFB)
POKE(0x99, 31)
11/20/1998 Release Notes (Rev 2.0)
New features in this release:
Bugs and problems fixed in this release:
-
Executing an INPUT statement would
cause a 0x20 to be written to I/O Port A.
-
SELECT ... CASE did not work with
floating-point variables.
-
MAX() and MIN() did not work properly
with floating-point values.
-
Holding two or more keys down on
the keypad would give an indication of "no key down".
-
LCD output was not reliable when
VAST peripherals were connected to the SBC2000-074.
-
Resistor R3 on the SBC2000-074
should be 100 ohms, not 10k ohms. This prevented data from being read correctly
from VAST peripherals such as analog-to-digital converters.
-
TX() does not work on some revision
1 SBC2000-074s.
Known bugs in this release:
10/14/1998 Release Notes (Rev 1.1)
New features in this release:
Bugs and problems fixed in this release:
Known bugs in this release:
10/09/98 Release Notes (Rev 1)
New features in this release:
Bugs and problems fixed in this release:
10/06/98 Release Notes (Rev 0)
New features in this release:
- None - this is the first release.
Bugs and problems fixed in this release:
- On the SBC2000-074, printing a floating-point
value to the LCD will not display the correct value. The following program shows
a workaround for this problem:
REM This subroutine will print a floating-point number. It is to
REM be used when printing a floating-point value to the LCD.
REM Printing floating-point values to the serial ports works
REM correctly.
SUBROUTINE FPRINT(arg AS FLOAT)
LOCAL index AS INTEGER
LOCAL DIGIT AS INTEGER
LOCAL EXPONENT AS INTEGER
REM Short-circuit test for zero.
IF arg = 0.0
PRINT " 0.00000E+00"
RETURN
ENDIF
REM Print the sign character, and make sure we're working with a
REM positive value.
IF arg < 0.0
PRINT "-" arg =
ABS(arg)
ELSE
PRINT " "
ENDIF
REM Scale the number down into the range 1.0 <= x < 10.0
DO WHILE arg > 10.0
EXPONENT = EXPONENT + 1
arg = arg / 10.0
LOOP
REM Scale the number up into the range 1.0 <= x < 10.0
DO WHILE arg < 1.0
EXPONENT = EXPONENT - 1
arg = arg * 10.0 LOOP
REM Now we have a number in the proper range. Get the leading
REM digit and print it.
DIGIT = arg
PRINT CHR(digit + 48)
PRINT "." : REM Print the decimal point
REM Print the remaining digits of the number
FOR index = 1 TO 5
arg = arg - DIGIT
arg = arg * 10
DIGIT = arg
PRINT CHR(digit + 48)
NEXT index
REM Now print the exponent.
PRINT "E" IF EXPONENT < 0 PRINT "-" EXPONENT = ABS(EXPONENT)
ELSE PRINT "+"
ENDIF
PRINT CHR(EXPONENT/10 + 48)
PRINT CHR(EXPONENT\10 + 48)
END
REM Declare a working variable
GLOBAL fvalue AS FLOAT
DO WHILE 1
PIPE PRINT COMM0
PRINT "\013\010" PRINT fvalue : REM Print the value to the COM port
PIPE PRINT LCD
LCD_Command(0x80)
FPRINT(fvalue) : REM Print the value to the LCD
fvalue = fvalue
+ 1
LOOP
VestaTech Home
© 2002 Vesta Technology