New features in BBC BASIC (Z80) version 5.00, June 2024:

1. BASIC V statements

1.1  WHILE...ENDWHILE
1.2  Multi-line IF...THEN...ELSE...ENDIF
1.3  CASE...WHEN...OTHERWISE...ENDCASE
1.4  LOCAL DATA / RESTORE DATA
1.5  ON ERROR LOCAL / RESTORE ERROR
1.6  DIM var LOCAL size 
1.7  ERROR err, message$
1.8  RESTORE +n
1.9  SWAP var1,var2
1.10 BPUT #file,string$[;]
1.11 QUIT

2. BASIC V functions

2.1  DIM(array()[,sub])
2.2  END (pointer to free space)
2.3  REPORT$
2.4  Binary constants
2.5  LEFT$ & RIGHT$ with last parameter omitted
2.6  MOD(array())
2.7  SUM(array())
2.8  SUMLEN(array())
2.9  GET$#file 

3. BASIC V whole array operations

3.1  Pass a whole array to a FN/PROC
3.2  Pass a whole array to CALL
3.3  Whole array assignment
3.4  Whole array arithmetic *
3.5  Array dot-product operator
3.6  Array initialisation lists
3.7  Array compound assignment (+= etc.)
3.8  Make a whole array LOCAL
3.9  DIM a LOCAL array (on the stack) + 

* String array expressions are not currently supported, instead of using
     a$() = b$() + c$()  use  a$() = b$() : a$() += c$()
  The use of EVAL with whole-array expressions is not currently supported.

+ LOCAL string arrays should be initialised to their maximum needed length
  to eliminate the risk of a memory leak each time the PROC/FN is called:
     LOCAL a$() : DIM a$(size%) : a$() = STRING$(max%, "a") : a$() = ""

4. Miscellaneous BASIC V features

4.1  Bit-shifts <<, >>, >>>
4.2  Floating-point indirection (|)
4.3  Additional VDU delimiter '|' 
4.4  RETURNed parameters from FN/PROC
4.5  Compound assignment (+=, -=, *=, /= etc.)
4.6  Assigning to a sub-string: LEFT$()=, MID$()= , RIGHT$()=
4.7  Hooks for CIRCLE,ELLIPSE,FILL,LINE,MOUSE,ORIGIN,RECTANGLE,SYS,TINT,WAIT
4.8  Hooks for MODE function, TINT function, WIDTH function

5. Extensions to Acorn's BASIC V, compatible with BB4W, BBCSDL and BBCTTY

5.1  EXIT REPEAT / WHILE / FOR [var]
5.2  Address-of operator (^)
5.3  Byte (unsigned 8-bit) variables and arrays (& suffix)
5.4  'BY len' and 'TO term' qualifiers to GET$#file
5.5  ELSE IF <condition> THEN; (trailing semicolon)
5.6  == synonymous with = in comparisons
5.7  DIM a global array inside a FN/PROC (use RETURN)

Note: The token for PUT has changed from &CE in version 3 to &0E in version 5.
If this token is present in existing programs it will list as ENDWHILE rather
than PUT, and the programs will need to be modified to restore functionality.
