Matrix Brandy V1.23.3 released

Hi,

I have released version 1.23.3 of Matrix Brandy.

Changes include:
- General: Implemented code tidy-ups recommended by OpenBSD. Thank you to Jag Talon for this!
- Build: Added build option -DBRANDY_NOVERCHECK to disable new version checking on startup.
- BASIC: Implemented EXIT FOR, EXIT REPEAT and EXIT WHILE, based on the extensions in Richard Russell's BB4W, BBCSDL, BBCTTY and BBCZ80v5.
- BASIC: Implement == to be synonymous with = in comparisons. Another compatility follow from Richard Russell's BASICs.
- BASIC: Allow DIM var LOCAL -1 outside of FN/PROC (as per BB4W, BBCSDL, BBCTTY and BBCZ80v5).
- BASIC: Implement BBCSDL's PLOT BY x,y (equivalent to PLOT 65,x,y), and equivalent to POINT BY x,y in ARM BASIC V.
- BASIC: WIDTH is now operational for GUI mode and the 'tbrandy' text-mode builds. Note that unlike RISC OS it affects almost ALL output (VDU excluded), including from built-in *-commands (but not external commands).

Source and binary downloads are available from the website, source is also available from GitHub.

Edit: Clarify WIDTH correctly does not affect VDU output.

Comments

  • Hated_moron
    edited August 11
    Soruk wrote: »
    Note that unlike RISC OS it affects ALL output, including from built-in *-commands (but not external commands).
    My testing suggests that it's not ALL output, because output using VDU isn't affected by WIDTH (which is of course correct).
  • Yes, you are correct. The check is in the send-string-to-VDU function emulate_vdustr(), which is bypassed by direct VDU calls, but is used by emulate_printf() which is why it also affects internal *-commands such as *HELP, *BRANDYINFO and even *FX0, hence the comparison with RISC OS BBC BASIC where WIDTH has no effect on *-commands.
  • Soruk wrote: »
    hence the comparison with RISC OS BBC BASIC where WIDTH has no effect on *-commands.
    I don't think you can really make a comparison because in RISC OS (or the BBC Micro for that matter) * commands are by definition executed by the (M)OS, not the Language, and since WIDTH is a language feature - indeed specific to BASIC as far as I know - it never sees them.

    Exactly the same applies to COUNT, which is again a BASIC language feature. External star commands can't change the value of COUNT because the language never sees them at all. COUNT and WIDTH are inextricably linked, which is why I was so surprised to see one of them implemented in Matrix Brandy but not the other.

    That's now fixed, but as you know WIDTH still isn't working properly; for example TAB(n) can misbehave when WIDTH is active (non-zero).
  • I will investigate that one, thank you.
  • Hopefully this is now fixed...