BBC BASIC for SDL version 1.35a released

In mid-November, Richard released version 1.26a of BBC BASIC for SDL 2.0 - the cross-platform programming language for Windows, MacOS, Linux, Raspberry Pi OS, Android, iOS and in-browser. The changes in this version are as follows:

1. BASIC Interpreter / Run Time Engine

Changed the behaviour of VDU 127 (DEL) in VDU 5 mode to correspond to that of Acorn systems, i.e. the background GCOL mode is ignored.

Fixed a bug causing VDU 127 not to work correctly in VDU 5 mode if the text direction has been changed.

Fixed a bug (in ARM and 64-bit editions only) whereby characters plotted in VDU 5 mode could not be read back using GET(x,y).

2. IDEs and Utilities

Fixed a minor bug in SDLIDE.bbc which could cause incorrect indentation of lines added at the end of a program.

Modified compiler.bbc so that message boxes still work when path names are very long.

Modified compiler.bbc (on Windows only) to be tolerant of spaces in the path to BBCSDL.

3. Libraries

Added gfxlib.bbc which partially emulates David Williams's GFXLIB2 library for BB4W; see gfxlib_docs.pdf for a detailed description.

Added audiolib to support playing music (including MP3) and sound effects.

Modified dlglib so that it works correctly if @ox% or @oy% is non-zero, or the graphics ORIGIN has been moved.

4. Example Programs

Added cowboy.bbc in examples/games; this is David Williams's GFXLIB2 demo for BB4W, converted to use the new gfxlib library.

Added metronome.bbc in examples/sounds (this is also compatible with BBC BASIC for Windows)

Modified lemmings.bbc and tower.bbc to use the new audiolib library.

This version may be downloaded, for all the supported platforms, from the usual location. The GitHub repository has been updated (used to build the MacOS, Raspberry Pi, Android, iOS, 64-bit Linux and in-browser editions, currently).

Comments

  • I've released version 1.27a of BBC BASIC for SDL 2.0 - the cross-platform programming language for Windows, Mac OS, Linux, Raspberry Pi OS, Android, iOS and in-browser. The changes in this version are as follows:
    1. BASIC Interpreter / Run Time Engine

      Treat hexdecimal pointers in *LOAD commands etc. as unsigned numbers.

      Disable ON ERROR when in AUTO line-entry mode (64-bit and ARM editions only).

    2. IDEs and Utilities

      The compiler utility can now build a 'web application' bundle to deploy online using https://wasm.bbcbasic.co.uk/bbcsdl.html?app=<URL of web bundle>.

      Fixed a race-hazard in the debugger which could cause a rare crash during variable listing.

    3. Libraries

      Updated gfxlib and gfxlib_docs.pdf to add PROC_gfxPlotColumnListScale, PROC_gfxPlotRowListScale and FN_gfxLoadTextureSwapRGB.

      Updated audiolib to add PROC_mixCancel (truncates a sound effect) and PROC_mixSoundLevel (plays a sound effect at a specified level).

    4. Example Programs

      Added candle.bbc (in examples/graphics), an animation of a burning candle, adapted from a program by David Williams.

      Added compiler directives to a few examples so they run as web applications without modification.

    This version may be downloaded, for all the supported platforms, from the usual location. The GitHub repository has been updated (used to build the MacOS, Raspberry Pi, Android, iOS, 64-bit Linux and in-browser editions, currently).

  • Here's the output from candle.bbc:
  • I have released version 1.28a of BBC BASIC for SDL 2.0 - the cross-platform programming language for Windows, Mac OS, Linux, Raspberry Pi OS, Android, iOS and in-browser. The changes in this version are as follows:
    1. BASIC Interpreter / Run Time Engine

      Updated SDL2_ttf to version 2.0.18 (Windows edition only); note that this changes the appearance of some fonts, especially in small sizes.

      ARM and 64-bit versions brought into line with 32-bit x86 versions in a couple of minor respects.

    2. IDEs and Utilities

      Updated about.bbc to be compatible with SDL2_ttf version 2.0.18 or later (in reporting the version of FreeType).

    3. Libraries

      Updated imglib.bbc to support displaying animated GIFs (there is an updated BB4W library too).

      Updated gfxlib.bbc to include PROC_gfxGaussianBlur3x3 (also updated gfxlib_docs.pdf).

      Updated dlglib.bbc to behave better with SDL2_ttf version 2.0.18 or later.

    4. Example Programs

      Added anigif.bbc (in examples/graphics) to illustrate displaying an animated GIF.

      Modified telstar.bbc so that F11 sends a carriage-return character to the line.

    This version may be downloaded, for all the supported platforms, from the usual location. The GitHub repository has been updated (used to build the MacOS, Raspberry Pi, Android, iOS, 64-bit Linux and in-browser editions, currently).

  • Soruk
    edited February 2022
    I'm curious about the use case for sending an actual CR to a Viewdata server - from my extremely limited experience (Telstar and CCl4) the accept # to function as an analogue to Enter/Return (in my client I even send # when you hit Enter).

    (Also, reposted the announce to the other site.)
  • Soruk wrote: »
    I'm curious about the use case for sending an actual CR to a Viewdata server

    As I understand it, from the user who requested the addition, it's not for use with a Viewdata server but with an IP modem (i.e. to connect to a telephone line, not the internet). This is what he said:

    "hitting enter produces a # which doesn't work well when trying to dial out since a modem requires ASCII 13 to enter the line. In CommStar in viewdata mode, pressing CTRL M will send ASCII 13 whereas enter will send #".
  • I have released version 1.29a of BBC BASIC for SDL 2.0 - the cross-platform programming language for Windows, Mac OS, Linux, Raspberry Pi OS, Android, iOS and in-browser. The changes in this version are as follows:
    1. BASIC Interpreter / Run Time Engine

      Added support for Serial I/O (e.g. EXT# returning the number of bytes waiting in a serial input buffer).

      Fixed a minor graphics bug which could cause fill operations to fail if an odd-value relative coordinate was supplied.

    2. IDEs and Utilities

      Updated searchin.bbc to avoid it being confused by an Acorn-format tokenised program.

      Improved error reporting if SDLIDE.bbc fails to create a temporary file.

    3. Libraries

      Optimised aagfxlib by calling SDL2 API functions by address rather than by name.

    4. Example Programs

      Added conway.bbc (in examples/general), a version of Conway's Game of Life in which the calculations are performed by the GPU.

      Added video.bbc (in examples/general) as a proof-of-principle demonstration of playing a video, albeit uncompressed and with no sound.
    Important note for Android users: the Code Signing Certificate has been updated, and because the company from which I have previously obtained them has closed down the new certificate has a different ID. You will need to uninstall BBC BASIC before you can install v1.29a; take care to backup (e.g. to a PC) anything you need in @usr$.

    This version may be downloaded, for all the supported platforms, from the usual location. The GitHub repository has been updated (used to build the MacOS, Raspberry Pi, Android, iOS, 64-bit Linux and in-browser editions, currently).
  • You may have noticed a minor regression in version 1.29a: the appearance of radiobuttons was accidentally affected. Although only cosmetic, if you want to fix this defect the files at the website have been updated (the dlglib library has been changed); simply download and install the new version.
  • I have released version 1.30a of BBC BASIC for SDL 2.0 - the cross-platform programming language for Windows, Mac OS, Linux, Raspberry Pi OS, Android, iOS and in-browser. The changes in this version are as follows:
    1. BASIC Interpreter / Run Time Engine

      OS Filing System errors now update the SDL error string, for the convenience of BASIC programs.

      iOS edition only: Reduced size of the back button on iPads.

      iOS edition only: Reinstated the ability to create a home screen icon to run a specific BASIC program (which stopped working at some point).

    2. IDEs and Utilities

      The Compile utility no longer quits if an embedded file cannot be found.

      Touch IDE: The background may now be selected from a choice of eight colours.

      Android and iOS only: added the ability to disable or enable fullscreen mode.

    3. Libraries

      Updated gfxlib to accept negative inter-character spacing values (@vdu.w.d&).

    4. Example Programs

      Added bugs.bbc (in examples/games), written by David Williams in 2006 based on the Flash game Ladybug Sumo.

      Added pageturn.bbc (in examples/graphics) which is a BBCSDL conversion of the old BB4W demo.
    This version may be downloaded, for all the supported platforms, from the usual location. The GitHub repository has been updated (used to build the MacOS, Raspberry Pi, Android, iOS, 64-bit Linux and in-browser editions, currently).
  • Soruk
    edited May 2022
    Hi Richard,

    Just a heads-up for your Telstar client, I have moved the server to a new host - teletext.matrixnetwork.co.uk:6502 - the old address still works for the time being as I am running a forwarder on the port so nothing is broken for now.
  • I have released version 1.31a of BBC BASIC for SDL 2.0 - the cross-platform programming language for Windows, Mac OS, Linux, Raspberry Pi OS, Android, iOS and in-browser. The changes in this version are as follows:
    1. BASIC Interpreter / Run Time Engine

      Updated the bundled stb_image library to version 2.2.7.

      (Windows and MacOS editions only) Updated the bundled SDL library to version 2.0.22.

      (Windows and MacOS editions only) Updated the bundled SDL_ttf library to version 2.0.18, which includes FreeType version 2.10.4.

    2. IDEs and Utilities

      Updated compiler.bbc to allow the selection of multiple embedded files.

      Updated SDLIDE.bbc to ensure compatibility with SDL version 2.0.22.

    3. Libraries

      Extended dlglib.bbc to support multiple-selection listboxes (LBS_MULTIPLESEL or LBS_EXTENDEDSEL style).

      Extended filedlg.bbc to support the selection of multiple files.

      Updated pdflib.bbc to ensure compatibility with SDL2_ttf version 2.0.18.

    4. Example Programs

      Added pdfdemo.bbc (in examples/general) to demonstrate creating a PDF file.

      Updated the list of available videotex services in telstar.bbc.

      Fixed a minor bug in pageturn.bbc affecting the shading of the 'fold'.

    This version may be downloaded, for all the supported platforms, from the usual location. The GitHub repository has been updated (used to build the MacOS, Raspberry Pi, Android, iOS, 64-bit Linux and in-browser editions, currently).

  • Richard has released version 1.32a of BBC BASIC for SDL 2.0 - the cross-platform programming language for Windows, Mac OS, Linux, Raspberry Pi OS, Android, iOS and in-browser. The changes in this version are as follows:
    1. BASIC Interpreter / Run Time Engine

      Fixed a minor issue affecting returned ON MOUSE coordinates when @panx% is negative.


    2. IDEs and Utilities

      Updated SDLIDE to support keyword abbreviations (but you are recommended not to use them!).


    3. Libraries

      Added mysqllib.bbc for queryimg a MySQL database (not compatible with the in-browser edition).


    4. Example Programs

      Added mysqldem.bbc (in examples/general) to demonstrate the mysqllib library by querying a public database.

    This version may be downloaded, for all the supported platforms, from the usual location. The GitHub repository has been updated (used to build the MacOS, Raspberry Pi, Android, iOS, 64-bit Linux and in-browser editions, currently).
  • Richard has released version 1.33a of BBC BASIC for SDL 2.0 - the cross-platform programming language for Windows, Mac OS, Linux, Raspberry Pi OS, Android, iOS and in-browser. The changes in this version are as follows:
    1. BASIC Interpreter / Run Time Engine

      The *FLOAT 80 command has been enabled in ARM editions, because although they do not support 80-bit floats the
      command is needed to be able to write a 64-bit integer to a data file without loss of precision.


    2. IDEs and Utilities

      Fixed compiler.bbc failing to upload a web bundle for testing, more than once per session.


    3. Libraries

      Added FN_readlinesocketM() to socklib.bbc, for use when multiple concurrent connections are open.


    4. Example Programs

      Modified Ceefax.bbc to restore functionality of the Sport index after a change to the BBC website.

    This version may be downloaded, for all the supported platforms, from the usual location. The GitHub repository has been updated (used to build the MacOS, Raspberry Pi, Android, iOS, 64-bit Linux and in-browser editions, currently).
  • Back in February, Richard released version 1.34a of BBC BASIC for SDL 2.0 - the cross-platform programming language for Windows, Mac OS, Linux, Raspberry Pi OS, Android, iOS and in-browser. The main changes are as follows:
    1. BASIC Interpreter / Run Time Engine

      Updated the version of SDL to 2.26.2 (Windows, MacOS, Android and iOS editions) or 2.24.2 (in-browser edition).

      Updated the version of SDL_ttf to 2.20.1 (Windows, MacOS, Android and iOS editions) or 2.0.15 (in-browser edition).

      Updated the version of SDL_net to 2.2.0 (Windows, MacOS, Android and iOS editions).


    2. IDEs and Utilities

      Added the addconst utility (desktop editions only) to scan a program and create a list of SDL constant declarations on the clipboard.

      Updated SDLIDE to include addconst in the Utilities menu (slot 5).

      Updated the compiler utility to include hidden files in a Linux bundle, and to support the use of labels without having to disable any crunch options.


    3. Libraries

      Added script.bbc to support the Harfbuzz text-shaping engine available in SDL2_ttf 2.20.1.

      Updated pdflib.bbc to improve the 'hardcopy' capability (which now behaves similarly to *HARDCOPY in BB4W).

      Updated dlglib.bbc to fix the recently-reported crash on scrolling a listbox too far with the mouse wheel.


    4. Example Programs

      Updated pdfdemo.bbc to demonstrate the new capabilities of the pdfib library.

      Updated unicode.bbc to use the new script library for rendering Arabic text.

      Updated tower.bbc to use the SDL_RenderGeometry() API, available in SDL 2.0.18 and later. This may mean it will no longer run in Linux, depending on the version of SDL available from your repository.

    This version may be downloaded, for all the supported platforms, from the usual location. The GitHub repository has also been updated.
  • A few days ago, Richard released version 1.35a of BBC BASIC for SDL 2.0 - the cross-platform programming language for Windows, Mac OS, Linux, Raspberry Pi OS, Android, iOS and in-browser. The changes in this version are as follows:
    1. BASIC Interpreter / Run Time Engine

      Non-file devices (e.g. serial ports) now use unbuffered I/O on all platforms, not just Windows.

      Fatal errors set the exit code (%ERRORLEVEL% in Windows) to 512 rather than zero, although this normally won't affect Linux.

      Fixed a bug causing PLOT 68 to plot something, when it shouldn't!

      Fixed READ crashing if there are no DATA statements (ARM and 64-bit editions only).


    2. Example Programs

      Added blacksmith.bbc and carousel.bbc in examples/sounds/.

      Added welcome.bbc, from the BBC Micro Welcome Disc, in examples/general/ (this is sensitive to the PLOT 68 bug).

    This version may be downloaded, for all the supported platforms, from the usual location. The GitHub repository has also been updated.