New features in BBC BASIC (Z80) version 5.00, January 2025: 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, ORIGIN, RECTANGLE (graphics) 4.8 Hooks for MOUSE, OFF, ON, SYS, TINT, WAIT (statements) 4.9 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 THEN; (trailing semicolon) 5.6 == synonymous with = in comparisons 5.7 DIM a global array inside a FN/PROC (use RETURN) 5.8 DIM var LOCAL -1 returns the stack pointer, even outside a FN/PROC 5.9 RESTORE LOCAL restores local variables without exiting the FN/PROC 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.