BBC BASIC for Windows version 6.14a released

New releases of BB4W and BBCSDL, and other updates, will be announced here
DDRM
Posts: 321
Joined: Mon 02 Apr 2018, 18:04

BBC BASIC for Windows version 6.14a released

Post by DDRM »

Copied from Richard's post on April 1st, on groups.io:

https://groups.io/g/bb4w/topic/bbc_basi ... 0,81773718

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:

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;.

Libraries:

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.

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.

DDRM
Posts: 321
Joined: Mon 02 Apr 2018, 18:04

Re: BBC BASIC for Windows version 6.14a released

Post by DDRM »

Richard posted the following addendum on groups.io: anyone interested in the BOX2D engine (and you should be - it's great!) please note:

Whilst playing with the Box2D Physics Engine in BBCSDL I spotted an obscure bug in the 'box2dlib.bbc' library (an unwanted dependence on the value of a static variable). It turns out that this same bug has been present in the BB4W version of the library from when it was originally written, something like 8 years ago!

Since I only bundled the BB4W library for the first time less than a week ago, with version 6.14a, it would be unfortunate for this bug to remain for another year or more until the next release, if any. Therefore I have today re-released it with the bug fixed.

If you have any expectation of using Box2D, or simply of running the bundled physics examples (or those supplied with BBCSDL), I would encourage you to re-download and re-install BB4W just to be on the safe side.

https://groups.io/g/bb4w/topic/bbc_basi ... 0,81773718