Raspberry BASIC

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - Richard Russell

Pages: [1] 2 3
1
BBC BASIC / BBC BASIC for SDL 2.0 version 1.39a released
« on: February 27, 2024, 03:58:26 PM »
I have released version 1.39a 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:
  • Environment

    Updated SDL2 to version 2.30.0 and SDL2_ttf to version 2.22.0 (Windows, MacOS, Android, iOS).

    Increased the initial value of HIMEM to 32 Mbytes above PAGE.

    Increased the maximum heap size, in 64-bit editions only, to 4 Gbytes (heap pointers are 32-bits so this is the largest possible size).

  • BASIC Interpreter / Run Time Engine

    Extended VDU 19 to be able to set colours with an alpha (opacity) value.

    Added *FX 19 as a synonym for *REFRESH.

  • IDEs and Utilities

    Modified the 'compiler' to support wildcards in REM!Embed directives.

    Modified SDLIDE for compatibility with 'self-examining' programs.

  • Libraries

    Added PROC_slice() and PROC_redim() (etc.) to the arraylib library.

    Modified the gpiolib library for compatibility with 64-bit PiOS and the Raspberry Pi 5.

  • Example Programs

    Added smithchart.bbc, an antialiased Smith Chart graticule, in examples/graphics.

    Added keywords.bbc, a list of one-line keyword descriptions, principally for the Android and iOS editions.

    Added server_multi.bbc (in examples/general, desktop editions only) which can accept up to 8 concurrent connections.

    Added gpiotest.bbc (in examples/general, Raspberry Pi only) to test the gpiolib library.
This version may be downloaded, for all the supported platforms, from the usual location (the Android and iOS editions should be installed from the appropriate App Store).  The GitHub repository has also been updated.

2
BBC BASIC / BBC BASIC for SDL 2.0 version 1.38a released
« on: November 13, 2023, 03:32:23 PM »
I have released version 1.38a 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:
  • Environment

    Updated SDL2 to version 2.28.5 (Windows, MacOS, Android, iOS).

    Updated the DejaVuSansMono font to include Hebrew.

    In iOS it is no longer necessary to disable the Smart Punctuation setting.

  • BASIC Interpreter / Run Time Engine

    Added a new entry to the internal function table: @fn%(21) points to the RedefineChar function which can be used, for example, to redefine a character in MODE 7.

    Improved error reporting if a malformed DEF FN or DEF PROC statement is present in the program.

    Fixed 64-bit floats 'underflowing' to give a negative number or a 'Number too big' error rather than zero.

  • IDEs and Utilities

    Modified SDLIDE to increase the number of point sizes that can be selected in the Set Font dialogue.

    Modified crossref.bbc, searchin.bbc, memmon.bbc, macrorec.bbc and addconst.bbc to scale their output windows in accordance with the guiscale setting in sdlide.ini.  This should improve legibility in High DPI situations.

    Added settab.bbc (in examples/tools/) which configures the Tab key to move to a specified column in the SDLIDE program editor.

  • Libraries

    Modified dlglib.bbc so that a static control can be hidden by setting the WS_VISIBLE flag, and to remove some of the limitations of a list box with the LBS_USETABSTOPS style.

    Modified editbox.bbc to support user-settable tab stops (added PROC_seteditboxtabs).

    Modified mode7lib to improve compatibility with 64-bit systems (previously, if you were unlucky, it could fail with a 'Number too big' error).

  • Example Programs

    Added timerdem.bbc (in examples/general) which is a simple, and frankly rather boring, example of the use of the timerlib library!

This version may be downloaded, for all the supported platforms, from the usual location (the Android and iOS editions should be installed from the appropriate App Store).  The GitHub repository has also been updated.

3
BBC BASIC / BBC BASIC for SDL 2.0 version 1.37a released
« on: September 01, 2023, 05:48:22 PM »
I have released version 1.37a 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:
  • Environment

    Updated the Windows, MacOS, Android and iOS editions to SDL 2.28.2.  SDL2 has now entered a maintenance phase, with new developments focussing on SDL3.

    Updated the Android edition to target Android 14 (API level 34), which is a requirement of the Play Store (and the main reason for this unscheduled release).

  • BASIC Interpreter / Run Time Engine

    Paths and file names may now include a comma, so long as they are enclosed in quotes (a comma is treated the same as a space in that regard).

    Fixed an issue when entering accented characters using the Alt Gr key.

    Added a new system variable @cache% which points to the font cache, for example to allow defining custom glyphs.

  • IDEs and Utilities

    Modified SDLIDE so that keyboard input (and pasting from the clipboard) work as expected in ANSI mode.

    Modified SDLIDE so that File... Compare can be interrupted by pressing the ESCape key.

    Updated BBCEdit to version 0.40.0 (thanks to Andy Parkes), amongst other changes this accepts the input of accented characters using the Alt Gr key.

  • Libraries

    Modified arraylib.bbc to add PROC_pcopy() (and variants) to copy part of one array into another array.

    Modified dlglib.bbc and editbox.bbc to scale scroll bars in proportion to other GUI elements.

    Fixed a minor memory leak in shaderlib.bbc.

  • Example Programs

    Added calculator.bbc in examples/general (yes I know everybody writes a calculator, it's an obvious application for the EVAL function, but this is my take).

    Modified dibley.bbc, dropperz.bbc and triples.bbc to scale their output on a window resize.

    Modified Ceefax.bbc to improve the formatting of hyphenated text.
This version may be downloaded, for all the supported platforms, from the usual location (the Android and iOS editions should be installed from the appropriate App Store).  The GitHub repository has also been updated.

4
BBC BASIC / BBC BASIC for SDL 2.0 version 1.36a released
« on: July 31, 2023, 09:35:35 AM »
I have released version 1.36a 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:

  • BASIC Interpreter / Run Time Engine

    Updated the Windows and MacOS editions to use SDL 2.28.1.

    Updated the iOS edition so that the virtual back button is recreated if required, also fixed VAL not working with a unary minus in iOS.

  • IDEs and Utilities

    Updated the 'compiler' to create a standalone EXE file in Windows!  You can still create a ZIP archive if you prefer by explicitly adding .zip to the application bundle filename.

    Updated SDLIDE.bbc to support bi-directional text (e.g. right-to-left scripts like Arabic and Hebrew in a quoted string).  This requires SDL2_ttf 2.20.0 or later.

    Updated SDLIDE.bbc to support window resizing when comparing programs.

  • Libraries

    Updated webgllib.bbc to support emissive materials and alpha-blending without external code, and to increase the maximum number of lights from 5 to 8.  Also created a functionally-equivalent library for BBC BASIC for Windows.

    Updated script.bbc to support positioning the text caret (cursor) and selecting (hilighting) text.  Also created a functionally-equivalent library for BBC BASIC for Windows.

    Updated arraylib.bbc to support MOD and SUM operations on a partial-array.

    Updated filedlg.bbc to support changing the filter by entering '*.ext' as the filename.

    Updated utf8lib.bbc to add FN_umidx() which behaves like MID$ with only two parameters.

    Added the DejaVuSans-Oblique.ttf font, which gives better results than slanting the standard font (desktop editions only).

  • Example Programs

    Added Hello_Box2D.bbc in examples/physics/samples/.

    Added analyser.bbc, an audio spectrum analyser, in examples/general (desktop editions only).

    Updated kerning.bbc (in examples/general/) to work around an apparent bug in the Harfbuzz shaping engine.
This version may be downloaded, for all the supported platforms, from the usual location (the Android and iOS editions should be installed from the appropriate App Store).  The GitHub repository has also been updated.

5
BBC BASIC / BBC BASIC for SDL 2.0 version 1.35a released
« on: April 06, 2023, 11:42:19 AM »
I have 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:
  • 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).

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


6
BBC BASIC / BBC BASIC for SDL 2.0 version 1.34a released
« on: February 07, 2023, 12:36:48 PM »
I have 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:
  • 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).

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

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

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

7
BBC BASIC / BBC BASIC for SDL 2.0 version 1.33a released
« on: October 28, 2022, 09:56:35 PM »
I have 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:
  • 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.

  • IDEs and Utilities

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

  • Libraries

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

  • 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).

8
BBC BASIC / BBC BASIC for SDL 2.0 version 1.32a released
« on: August 20, 2022, 04:24:55 PM »
I have 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:

  • BASIC Interpreter / Run Time Engine

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

  • IDEs and Utilities

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

  • Libraries

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

  • 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).

9
BBC BASIC / BBC BASIC for SDL 2.0 version 1.30a released
« on: May 08, 2022, 11:15:40 AM »
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:

  • 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).

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

  • Libraries

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

  • 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).

10
BBC BASIC / BBC BASIC for SDL 2.0 version 1.29a released
« on: March 26, 2022, 10:59:22 PM »
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:
  • 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.

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

  • Libraries

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

  • 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).

11
BBC BASIC / BBC BASIC for SDL 2.0 version 1.28a released
« on: February 10, 2022, 04:52:49 PM »
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:

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

  • IDEs and Utilities

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

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

  • 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).


12
BBC BASIC / BBC BASIC for SDL 2.0 version 1.27a released
« on: December 30, 2021, 05:17:13 PM »
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:

  • 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).

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

  • 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).

  • 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).


13
BBC BASIC / BBC BASIC for SDL 2.0 version 1.26a released
« on: November 19, 2021, 01:54:45 PM »
I've 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:

  • 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).

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

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

  • 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).

14
BBC BASIC / BBC BASIC for SDL 2.0 version 1.25a released
« on: October 08, 2021, 03:58:15 PM »
I've released version 1.25a 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:

  • BASIC Interpreter / Run Time Engine

    PAGE may now be lowered without generating an error.  This is dangerous in general, but in limited memory environments (e.g. the Raspberry Pi Pico) it can be useful, as it was on the original BBC Micro.

    Implemented a new SUM operator which performs modulo-2^64 addition, i.e. overflows are ignored.  Using this operator modulo-2^64 subtraction and multiplication functions can be written:
Code: [Select]
      DEF FNsub64(a%%,b%%)=a%%SUMNOTb%%SUM1
      DEF FNmul64(a%%,b%%)LOCALA%,B%:A%=a%%AND&7FFFFFFF:B%=b%%AND&7FFFFFFF
      =A%*B%SUM((a%%>>31)*B%<<<31)SUM(A%*(b%%>>31)<<<31)SUM((a%%>>31AND3)*(b%%>>31AND3)<<<62)
  • IDEs and Utilities

    No changes (other than the version number of SDLIDE.bbc being updated).

  • Libraries

    stringlib.bbc modified so that FN_binary() and FN_tobase() accept 64-bit integers.

  • Example Programs

    There are no changes to the example programs in this release.
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).

15
BBC BASIC / BBC BASIC for the Raspberry Pi Pico
« on: August 26, 2021, 02:39:52 PM »
Eric Olson and 'Memotech Bill' have developed a version of BBC BASIC (based on mine) for the Raspberry Pi Pico, it's a Work In Progress but is substantially working and can run all the example programs supplied with the Console Mode editions.  There's a GitHub repository here.

Despite the Pico being a $5 microcontroller with only 264K of RAM it suits this application very well, not least because of BBC BASIC's simple memory management (which was of course originally designed for a machine with only as little as 16K of RAM, the BBC Micro).  Something like 240K of memory is available for the BASIC program, variables, stack and libraries.

Pages: [1] 2 3