Both array mutation and array reference now work.
The simulator has been updated to simulate it.
Special variables SIXPIC_FSR0..2 have been introduced. These variables
are always of type int16, and are always stored in the appropriate FSR
register. Wherever an array reference is made using one of these
variables, the destination address is not calculated, whatever was in
the FSR is used. This is faster, but means that SIXPIC_FSR0[0] and
SIXPIC_FSR0[1] return the same value. The dereferencement operator
should be used instead of the array indexing one, but six does not
support it yet.
The special variable code has been changes accordingly, now instead of
simply setting a compiler variable, when a special variable is found,
a thunk associated to the variable is called, and it can do pretty
much anything it wants. This is much more flexible.
Also, minor changes were made to the type system : literals are now of
the smallest type possible, and arithmetic operations return a value
of the type of the largest operand (this might cause early overflows,
but I doubt this would come up often).