Loginskip to content

November 30th, 2009

NXC updates

I have uploaded a new test release of BricxCC and NBC/NXC tonight (11/30/09 at 9:00pm CST).

http://bricxcc.sourceforge.net/test_release.zip

The biggest change is support for enums.  At the moment NXC does not enforce types on enums so you can define a variable of an enum named type and then assign to that variable any integer value rather than only enumerations that are a member of the named enum type.

http://bricxcc.svn.sourceforge.net/viewvc/bricxcc/tests/enums.nxc?revision=264

I fixed a bug with unsigned values in a return statement.  I also added a slew of stdio.h, string.h, and ctype.h functions to the NXC API.  Here are a couple sample programs. The first one shows some of the new functions from string.h:

http://bricxcc.svn.sourceforge.net/viewvc/bricxcc/tests/strings.nxc?revision=264

This next program demonstrates how to use several functions from stdio.h:

http://bricxcc.svn.sourceforge.net/viewvc/bricxcc/tests/fileio.nxc?revision=269

The fseek, rewind, and all the printf-like functions require the enhanced NBC/NXC firmware. Make sure that you configure your compiler options to target version 1.28 or later of the enhanced firmware (aka NXT 2.0 compatible).

A while ago someone on the nxtasy forums reported problems with the FileSeek operation that I added to the enhanced firmware. Based on my testing this evening, it looks like the problem was with using the LDR_CMD_FILESEEKSTART constants as the origin. The LDR_CMD_* constants are not the right numeric values to use as the seek origin. Instead, use the SEEK_SET, SEEK_CUR, and SEEK_END constants (0, 1, and 2) that are included in the API as of tonights update.