I have today released version 6.14a of BBC BASIC for Windows. This is a maintenance release, primarily to fix a couple of significant bugs discovered in version 6.13a. I have also taken the opportunity to improve compatibility with BBC BASIC for SDL 2.0 by introducing a few features supported in that version but not previously in BB4W.The changes are as follows:
To upgrade the full (paid-for) version of BBC BASIC for Windows to v6.14a download and install upgrade.exe from the web site; remember that you are allowed to install it on multiple computers so long as only one copy is in use at any given time. To upgrade the trial version (or install it from scratch) download and install bbcwdemo.exe. It is possible that these executables may trigger security alerts until they have acquired a reputation for safety.
- Interpreter / Run-Time Engine:
Fixed a race hazard causing the SYS "SetWindowLong" API call to misbehave intermittently, resulting in an unresponsive window.
Fixed a bug in the 'pending newline' functionality, which previouly could misbehave after a VDU 9.
Fixed a bug which resulted in the printer not being reliably enabled when a program was run from the IDE.
Changed the behaviour of the TIME pseudo-variable so that it is signed rather than unsigned.
Extended the *TEMPO command to optionally enable more accurate emulation of the 'auto-repeat pitch envelope' feature of the BBC Micro.
Added the SYS function which returns the address of a Windows API function given its name.
Added the PTR(object) = statement which sets the memory address of a string, array, structure or FN/PROC. This is most useful for pointing a structure at a specific memory location, for example in order to implement a linked list.
Extended the use of PTR(object) as a function to return the memory address of an array (descriptor), structure or FN/PROC, as well as its previous use to return the address of a string.
Added support for black text and mosaics in MODE 7, and to toggle between primary and secondary character sets (part of the teletext Full Level One Facilities). These features must be enabled using VDU 23,18,3,1,0;0;0;.
Added the IMGLIB, MODE7LIB, SHADERLIB and BOX2D* libraries (compatible with those supplied with BBCSDL).
Added BBCMODE7.FNT, which is a 16x20 bitmapped font similar to that of the SAA5050 character generator.
Updated the GDIPLIB library to clip to the current graphics viewport, if any.
Updated the UTF8LIB library to include functions for converting between ANSI and UTF-8 character encodings (as far as is possible), compatible with the equivalent BBCSDL library.
- Example Programs:
Updated MODE7DEM.BBC to demonstrate black text and mosaics, and alternative character sets.
Added the following example programs, functionally equivalent to those supplied with BBC BASIC for SDL 2.0:
In examples\general: SORTDEMO.BBC.
In examples\graphics\: ALIENS.BBC, FLUID.BBC, SEASCAPE.BBC, SLITSCAN.BBC, VORONOI.BBC.
In examples\physics\: CRATES.BBC, DANGLE.BBC, PINBALL.BBC, PINTOGRAPH.BBC.
In examples\tools\: SAA505X.BBC.
Note 1: ALIENS.BBC animates just 10 aliens, compared with 80 in the BBC BASIC for SDL 2.0 version, demonstrating how much faster the latter is when plotting rotated and scaled images.
Note 2: If you have the full version of BBC BASIC for Windows you can also run the other Physics Simulations supplied with BBCSDL, but they need more memory than is available with the trial version.