| Release Notes | Index |
07.25.01 - Updated board info: Version 1.0, Build 1, SN 00000000
08.05.01 - Assembled first boards for Build 2.
08.20.01 - Assembled more boards for Build 2.
08.29.01 - We are now on Build 3.
I moved the gp_ver.asm info into a file called core_ver.asm
and changed some labels. The core_ver.asm file has the
table for all the chip ID data and can be common to all
BrainStem modules.
09.12.01 - Performed assembly of Build 3 modules over several days.
09.15.01 No major changes to any firmware.
Reversed order of Serial Number bytes in an attempt to
get the SQTP feature to work. (Later found out that the
SQTP feature will not work with the PIC18C252.)
09.26.01 - We are now on Build 4.
Fixed servo STOP bug -- movlw should have been addlw (FW).
Fixed servo LMT port bug -- POS0 had offset added twice (FW).
Fixed servo REL port bug -- directions were reversed (FW).
Fixed servo RFLX port bug -- MSG byte had erroneous 0-127 check (FW).
Added 0-time check for timer set routines (VM and CMD).
(Entering a 0-time crashed the timer routine.)
09.27.01 - Made digital polling use a copy
of PORTB. The polling has not had any problems,
but this change should improve reliability.
10.01.01 - Turned on weak pull-ups for PORTB. This seems to
help with some of the pin interference problems I
have been seeing (when combined with IO mode toggling).
10.01.01 - Assembled Build 4 modules.
10.06.01 - We are now working on Build 5.
Fixed IIC Master Read bug. Interrupt was not saving
state correctly which would sometimes cause crashes.
10.09.01 - Assembled Build 5 modules.
10.15.01 - We are now on working Build 6.
Added packet size verification in serial RX.
A size of 0 or greater than the max (8) will be
rejected and the packet will be discarded. Otherwise,
a bogus size could cause incoming data to overwrite
system variables and crash the Stem.
10.18.01 - Software libraries completed and posted for WinCE with
either a SH3 (HP Jornada) or ARM (Compaq iPAQ) processor
running PocketPC 3.0.
10.18.01 - Software moved to Build 4
10.18.01 - We are still working on firmware Build 6
Eliminated the 0-size packet check in the serial RX
routine because that broke the Magic Byte function
(which uses a 0-size packet). When a digital input
is switched to an output, the output state is
initialized as 0. The weak pull-ups may make the output
state default to 1 otherwise.
10.26.01 - We are now working on Build 7 for firmware.
Updated GP2D02 driver to assert VIN high at power-up.
That puts the GP2D02 in its idle state. Also increased
the number of TEA files from 8 to 11. There was some
blank space that was reserved for future system data
or user applications. This feature was not documented.
The blank space is better utilized as TEA file space.
10.26.01 - Added support for default extensions to Console.
The following commands do not require filename extensions:
Default extension for "steep" is ".tea"
Default extension for "load" is ".cup"
Default extension for "dsm" is ".cup"
Default extension for "ast" is ".tea"
Default extension for "pp" is ".tea"
10.28.01 - Fixed a problem in Windows in the aIO library where
aStream_Read would return aErrIO instead of aErrNotReady
if no bytes were available on the serial wire.
10.31.01 - Added unary ops -,+,!,~ to compiler.
Updated TEA grammar file in docs.
(Still debugging.)
11.02.01 - We are still working on Build 7 for firmware.
Turned off internal weak pull-ups for digital IO ports.
Although it added convenience for some things, it
decreased the overall flexibility of the module.
So starting with Build 7, the internal weak pull-ups
will be off. (Builds 4-6 have weak pull-ups on.)
11.06.01 - Added implicit casting (byte to short) in compiler for most cases
where it can be applied: constants, variables, functions, etc.
(Still debugging.)
11.19.01 - Performed assembly of more Firmware Build 7 modules.
Latest compiler improvements have been tested.
Now working on releasing Build 4 of the software.
11.26.01 - Now working on Build 5 of the software.
Switched to newer version (IDE 4.2.5.766) of Metrowerks compiler.
Updated all relevant projects.
11.28.01 - Still working on Build 5 of the software.
Added new default extension in Console.
Default extension for "launch" is now ".cup"
12.14.01 - Re-naming effort with the TEA libraries.
Now enforcing this naming convention: libfilename_functionname
This cleans up the code and makes it easier to create
libraries in the future.
01.07.02 - Now working on Build 8 Firmware.
Added support for future system value.
All other functionality is unchanged.
02.03.02 - Moved to Build 6 of the software libraries and applications
02.04.02 - Fixed a bug in the steep compiler when handling nested #defines
02.04.02 - Fixed a bug in the steep compiler where math was not
left-to-right evaluation
02.10.02 - Finished Digital panels for all GP 1.0 platforms
02.28.02 - Pushed Build 6
03.01.02 - Moved to Build 7 of the software versions.
03.04.02 - Optimized the TEA compiler to better dead-strip code resulting
in smaller object code.
03.23.02 - Fixed a bug where typing commands that take a filename argument without
providing the filename would crash the console.
03.29.02 - Added a new LEAF compiler to the console commands to enable compilation
of reflex definition files (LEAF).
04.17.02 - Changed the aPPRK library to default to module 2 when the controller
is set to BrainStem. This can be modified with a "module" setting in
the aPPRK.config settings file.
04.25.02 - Pushed Build 7 of the software versions.
04.26.02 - Moved to Build 8 of the software versions.
04.26.02 - Fixed a typo in the aSRF08.tea library file where ms measurements were
being returned in cm. Thanks to Michael Cone for pointing this out! Also
added new routines for allowing multiple echo reads from a SRF08 within
a TEA program, including the light sensor value.
05.17.02 - Released first GP modules with Build 9 firmware.
Build 9 includes several bug fixes and new features:
- Fixed Firmware Bug 08
- Fixed Firmware Bug 09
- Fixed Firmware Bug 10
- Fixed Firmware Bug 11
- Fixed Firmware Bug 12
- Fixed Firmware Bug 13
- Fixed Firmware Bug 14
- support for 57600 and 115200 serial baud rates
- hard reset now uses IIC SDA and serial SRX
- adjustable serial timeout via system parameter 21
- new serial relay mode (cmdSER_RELAY and cmdSER_TOIIC)
- new TEA serial functionality via ports 0x0013 and 0x0014
- new port 0x0015 for reading the EEPROM
- new quiet mode for disabling VM messages
- new "serialError" message when serial buffer is overwritten
- timers can now be killed by issuing a cmdTMR_SET
command with a timer ID, but no time setting
06.04.02 - Released first GP modules with Build 10 firmware.
- Fixed Firmware Bug 15
07.10.02 - Fixed several steep compiler issues:
- Added support for variable declarations inside of any
compound statement, not just the routine scope.
- Fixed a pre-processor bug with // comments
- Fixed a bug where opcodes that expect parameters weren't
requiring them. Now appropriate messages are displayed.
- Added a check for variable initialization. Now if a
variable is used before being initialized, it results in
a compile error.
Improved the console with the following features:
- Resizable windows (accept on handhelds).
- Improved coloring and aesthetics of UI.
- Command line recall now allows you to recall
previously typed commands.
- The output window now supports scrolling and has
an adjustable buffer size (through console.config).
- Added an exit button for convenience on WinCE.
Updated the TEA library files in aSystem directory:
- Added initializers for variables.
- Added aEEP.tea to TEA library files.
This new file provides support for I2C EEPROMs.
- Fixed bug in aMulti.tea routines.
(The aMulti functions only worked on BrainStem modules
with an address of 2.)
Added a new aIO_MSSleep routine to the aIO library
to give a low-resolution sleep function across platforms.
07.11.02 - The MacOS version is no longer moving forward. Future build releases
will work natively on MacOS X.
07.11.02 - Pushed Build 8 of the software versions.
07.12.02 - Moved to Build 9 of the software versions.
07.17.02 - Fixed some problems with the aPPRK library and Config program on
all supported platforms.
07.17.02 - Added the aIO and aStem library build trees to the Linux cdev
distribution.
07.17.02 - Pushed Build 9 of the software versions.
07.17.02 - Moved to Build 10 of the software versions.
07.30.02 - Fixed a pre-processor problem when an include file couldn't be
found. Now the compilers can offer errors to this effect.
07.31.02 - Fixed a bug where a missing final curly brace in a TEA program
would crash the compiler. Now this is reported as an error.
09.30.02 - Fixed a problem with the steep compiler where goto statements in
TEA code were not generating the opcodes.
10.05.02 - Fixed a problem with the steep compiler that prevented the
continue statement from working properly.
10.07.02 - Fixed a problem with the leaf compiler that caused all messages
to default to module address 2.
10.09.02 - Brought online the MacX versions of the Console and GP applications.
10.09.02 - Numerous stability fixes for the steep compiler.
10.09.02 - Changed the default debug level for the Console to 1 from 0.
10.09.02 - Added summary messages for the steep compiler to describe the
success or failure of the compile.
10.11.02 - Pushed Build 10 of the software versions.
10.11.02 - Moved to Build 11 of the software versions.
10.14.02 - Standardized the PPRK Config program for all platfoms adding
the MacOS X version as well. The graphics are now all based
on common code running against the aUI library.
10.17.02 - Fixed a bug in the Console application where packets typed in
that were too long were quietly truncated. Now they are not
accepted and a meaningful error is generated.
10.17.02 - Fixed a pre-processor problem where #define would cause problems
if a symbol was defined more than once. This now generates
an appropriate error in the tokenizer. This affected the steep
and leaf compilers.
10.19.02 - Added macro substitution to the pre-processor to allow parametrized
macro substitution.
10.21.02 - Completed all the modes except Stepper Motor mode in the Moto
Application.
10.22.02 - Fixed a problem when loading files onto module slots. When the
module was not present or the slot index was out of range, the
console was not handling the problem gracefully. Now the console
reports a meaningful error and no longer can crash in this case.
10.22.02 - Pushed Build 11 of the software versions.
10.22.02 - Moved to Build 12 of the software versions.
10.23.02 - Fixed a problem in the WinCE consoles that was introduced in the
last build where the link was never established
10.23.02 - Fixed a problem in the steep compiler where constant expressions
with a shift by zero bits evaluated as 0.
10.22.02 - Pushed Build 12 of the software versions.
10.22.02 - Moved to Build 13 of the software versions.
11.02.02 - Added the commands "say" and "SP03" to the console to support the
Devantech SP03 speech module on all platforms the console runs on.
11.06.02 - Fixed a bug in the MacOS X aIO library that prevented any baud rate
other than 9600 from working properly. Now all supported baud rates
work well on the Mac. This fix also affects the Linux code as well.
11.08.02 - Pushed Build 13 of the software versions.
11.08.02 - Moved to Build 14 of the software versions.
01.08.03 - Pushed Build 14 of the software versions.
- Added beta version of opcode-level web-based debugger.
- Fixed bug in handling trailing white space in settings file lines.
- Increased default length of string tokens to 81 characters.
- Console "stat" commands now displays TCP/IP address.
- Console "relay" command automatically looks up TCP/IP address.
- Restored aStub example.
- Added aDataLogger example.
01.10.03 - Moved to Build 15 of the software versions
01.29.03 - Assembled first GP 1.0 Build 11 modules.
01.29.03 - Now shipping Moto 1.0 Build 3 and GP 1.0 Build 11.
02.10.03 - Moved up maximum setting length to 32 characters for files
like console.config, moto.config, and gp.config. This
accomodates long portnames on MacOS X.
02.10.03 - Console "stat" command now displays portname and baudrate.
02.20.03 - Added i686 directories to Linux distribution for building
on PII and better platforms. Also fixed some minor compile
issues for Linux.
03.01.03 - Added packet synchronization to the aStem library to
automatically synchronize packet framing when ill formed
packets show up. This affects all platforms and will work
for any software that relies on the aStem library.
03.03.03 - Fixed extern "C" in headers for distributed source files to
avoid problems with C++ mangling of names. This allows
easier linking from C++ to the basic libraries and these
auxilary routines.
03.04.03 - Changed to style-sheets and re-designed the reference
generation to work more smoothly and be visually easier.
03.08.03 - Software Build 15 Released
04.07.03 - Fixed a bug for Win95 relating to socket communication.
04.07.03 - Made the aPPRK library slightly more general with regard to
creating the serial stream. This now allows relaying through
TCP/IP connections for BrainStem-based PPRK models. This change
adds the requirement of the aUI library for aPPRK linked code.
04.22.03 - Added a compiler message to warn when declaring a routine
with a name that has already been #defined as a symbol. For
example:
#define foo 5
int foo() {
return 2;
}
This used to create a zero-lengthed file with no error message.
Now it would give the error "identifier required, found integer".
Thanks to David Rosenbaum for pointing this one out!
04.22.03 - Added a compiler check for multiple type definitions in
declarators. An example would be:
int void foo() {
return 0;
}
This now give a "type already defined" error.
04.22.03 - Added a better compiler warning when types do not match. It used
to not always point to the error file location.
04.22.03 - Fixed a compiler bug where simple expressions were not being
carefully type checked which could cause bad code generation.
An example would be:
int foo() {
char a = 1;
char b = 2;
int c;
c = a + b;
return c;
}
Now, this will result in a type mismatch at "a + b".
04.22.03 - Added the ability to have nested parens in pre-processor
macro calls. An example would be:
#define foo(a, b) (a+b)
int bar() {
return foo((1), 3);
}
Also added check for mismatched numbers of parens in
macro calls.
04.28.03 - Added a new routine to the aIO library to enumerate
files in a directory. This is plumbing to allow
plugin architectures and automated software updates.
The new routine is aDirectory_List.
05.03.03 - Added a new routine to the aStem library to create
Streams to serial relays on slave modules. This
was tested up to 115200 baud and seems reliable.
The new routine is aStem_CreateRelayStream.
05.08.03 - Software Build 16 Released
05.19.03 - GP 1.0 Build 12, Moto 1.0 Build 6 Released
- Fixes Errata 22,23,24,25.
- Complete Overhaul and Upgrade of I2C routines.
- Counter and enabler RAM may be used as scratch pad.
(Makes it possible to use 56 scratch pad bytes.)
- New I2C Slave Transmit from scratch pad feature
- New cmdPAD_SETPTR command for setting address register
for I2C Slave Transmit.
06.25.03 - Software Build 17 Released
- New user library files: aAnalog.c, aDigital.c, aServo.c
(They replace some functions in aStemCore.c)
New functions in aModuleVM.c.
See online C docs for details.
- aStemCore.c only contains an input filter routine.
- Added extra info to Console debug output:
Echos lines typed in input box to StemDebug file.
09.10.03 - Software Build 18 Released
- Improved error checking in LEAF compiler.
- LEAF messages and vectors now must be wrapped
in a module[n]{} block. This new syntax makes
it possible to write multi-module reflexes.
- Removed LEAF compiler limitation where a reflex could
only send messages to itself and not to other modules.
- Compiler prints warning when it finds illegal characters.
- Garcia braindump features added to Console.
- New aGarciaTool application.
- Updated Garcia libraries and TEA source code.
- New TEA libraries: aI2C.tea, aIRCM.tea, aDump.tea.
09.30.03 - Software Build 19 Released
- Updated aGarciaTool application.
Includes Recovery and BrainDump features.
- Updated Garcia libraries and TEA source code.
11.18.03 - Software Build 20 Released
- Cleaned up all warnings and errors
in the Linux source tree.
- Cleaned up and made current all the primitive
operations in the Garcia APIView
that the Garcia API serves as a website
whenever it is in use.
- Support for XML scripts in Garcia API.
- New aGarciaScript application.
- New TEA library: aGPM.tea
- Updated Garcia libraries and TEA source code.
- Fixed problem where Console would halt upon
reaching a blank line when executing batch command.
- Fixed problem where TEA compiler would
perform unsigned comparisons incorrectly.
- Fixed other signed vs. unsigned issues in TEA compiler.
02.27.04 - Software Build 21 Released
- Fixed bug in compiler which was generating
faulty code for doing signed subtractions.
- Fixed some bugs in the aGPM.tea library.
- Added two new routines to aPPRK.tea library.
- Did complete overhaul of Garcia API. Switched
to an Object-Oriented design with inherited
interfaces for all objects and a Property-Value
protocol for accessing attributes of the Garcia
and associated objects.
- Updated TEA code and reflexes for Garcia.
- New aGarciaAgent application. Acts as a relay
between the Garcia and other applications.
05.19.03 - GP 1.0 Build 14 Released
- Fixes Errata 26
06.30.04 - Software Build 22 Released
- Fixed bug in compiler which was generating
faulty code for the continue statement.
- Added many new features to GarciaTool:
Button indicator and user LED controls.
Stats and new log view in Config pane.
RF pane for reconfiguring RF module.
Motor test pane. IR transmit and receive
test pane.
- The aStem.dll now supports a stem.config file
which can be added to the aBinary folder.
A "tea-delay" setting can be added to this
config file to alter the delay between packets when
downloading TEA files. The default value is 5ms.
- Updated TEA code and reflexes for Garcia.
Demo roaming program uses more sophisticated logic.
- Updated Mac OS X example projects for Xcode
development environment.
- Added TEA library with routines for use with
the Wheel Watcher encoder assembly.
07.08.04 - Moto 1.0 Build 7 Released
- Fixes Errata 27
08.17.04 - GP 1.0 Build 15 Released
- Supports the MIDI Baud Rate (31250).
11.11.04 - Moto 1.0 Build 8 Released
- Fixes Errata 28.
- Dual-read feature added for cmdMO_ENC32.
- Added servo PWM output mode.
- Centering offset parameter will adjust the
servo center point in servo PWM output mode.
- Velocity damping can be applied to PID position modes
to make gradual setpoint changes.
- PID minimum period lowered to 0.5ms.
- Setpoint in encoder-based PID control mode has
been changed from a relative setpoint with respect
to the previous position to an absolute setpoint
with respect to starting position when the mode
is enabled.
- The 32-bit odometer is no longer applicable
in the encoder-based PID control mode.