![]() |
Forum Index : Microcontroller and PC projects : MMB4L: MMBasic for Linux version 0.5.0
Author | Message | ||||
thwill![]() Guru ![]() Joined: 16/09/2019 Location: United KingdomPosts: 4252 |
Previous MMB4L alpha release thread Well it's here, and I'm not sure it was worth waiting for since most of what is new has happened internally, or is the addition of more unit and integration tests. Download: https://github.com/thwill1000/mmb4l/releases/tag/0.5.0 README: https://github.com/thwill1000/mmb4l/blob/0.5.0/README.md ChangeLog --------- Version 0.5.0 - 3-Feb-2023: - Changed to semantic versioning scheme. Note that MMB4L is still versioned independently of Geoff and Peter's "mainline" MMBasic platforms. - MM.INFO(VERSION) will return the integer 5000000 for this release, divide by 10000000 to get float equivalent, e.g. 0.5 - MM.INFO(VERSION MAJOR) will return major version, 0 for this release. - MM.INFO(VERSION MINOR) will return minor version, 5 for this release. - MM.INFO(VERSION MICRO) will return minor/patch version, 0 for this release. - MM.INFO(VERSION BUILD) will return the build number, 0 for this release and only included for use in some theoretical future. - Added "automatic path completion" to the MMBasic prompt. - Pressing TAB will attempt to complete (as far as can be unambiguously determined) a filename that the user is typing at the prompt, or sound the console bell if no completion is possible. - Added MM.INFO(CALLDEPTH) to return the current function/subroutine call depth. - 0 when at the global level, i.e. not in a function/subroutine. - Primarily for debugging purposes, though a possible production use-case would be to allow a program to "bail out" if recursion gets too deep. - Added MM.INFO(PID) to get the process ID of the MM4L process. - Added MM.INFO(CPUTIME) to get the value (in nanoseconds) of the CPU timer for the MMB4L process. - Changed function, label, subroutine and variable lookup to use hashmap. - Depending on the problem this might be expected to produce a 3-5% improvement in performance. - Changed syntax of RUN command to: RUN [file$] [, cmdline$] Both file$ and cmdline$ can now be string expressions instead of the legacy behaviour where the command line argument was "not processed" by MMBasic and was copied verbatim into the MM.CMDLINE$ of the new program. - This change means that cmdline$ can now be constructed from other variables and functions instead of having to be hardcoded, or finessed by using EXECUTE to construct the RUN statement. - If the text following the comma contains an unquoted minus sign then for backward compatibility MMB4L trys to use the legacy behaviour, but this does not work for all possible legacy command lines. Note that the behaviour of the * command is unchanged; expressions in any command line provided via * are not evaluated by MMB4L, e.g. *foo a$ + b$ is equivalent to: RUN "foo", "a$ + b$" - Changed RUN file$ so that it is not necessary for file$ to have a ".bas" extension. - If file$ does not exist then will try appending the extensions ".bas", ".BAS" and ".Bas" in turn. - Changed #INCLUDE "<file>" so that it is not necessary for <file> to have a ".inc" extension. - If <file> does not exist then will try appending the extension ".inc", ".INC" and ".Inc" in turn. - Changed XMODEM to improve read/write performance. - It now reads/writes 128 characters at a time instead of 1. - Changed MMBasic prompt so that you can access the history with the up and down cursors even after you start typing a command. - Changed some error messages to be clearer and/or more specific. - Changed "mmbasic.syntax.nanorc" to improve syntax highlighting of comments. - Even so it is still not 100% correct. - Fixed bug where relative #INCLUDE files could not be found when running a symbolic link to an MMBasic file. - The path to the #INCLUDE files was incorrectly being resolved relative to the parent of the symbolic link instead of the parent of the target file. - Fixed several bugs with identifiers allowing / being limited to 32 characters (not including variable/function type suffix). - Fixed bug with GOSUB/RETURN corrupting the interpreter state when using ON ERROR SKIP. - Fixed bug where function returns corrupted the interpreter state when using ON ERROR SKIP. - Fixed bug where an "Internal fault" error would be reported immediately if the console/tty dimensions could not be determined when displaying the MMBasic prompt. - This can be a transient problem so MMB4L now retries for 1 second before reporting a "Cannot determine terminal size" error. - Fixed bug in OPTION LIST for F<num> function key options whose values contained carriage-return character. Best wishes, Tom Edited 2023-02-03 08:15 by thwill MMBasic for Linux, Game*Mite, CMM2 Welcome Tape, Creaky old text adventures |
||||
JohnS Guru ![]() Joined: 18/11/2011 Location: United KingdomPosts: 4006 |
Looks like good progress :) John Edited 2023-02-03 09:36 by JohnS |
||||
lizby Guru ![]() Joined: 17/05/2016 Location: United StatesPosts: 3326 |
Thanks for this. A ton of work. PicoMite, Armmite F4, SensorKits, MMBasic Hardware, Games, etc. on fruitoftheshed |
||||
![]() |
![]() |
The Back Shed's forum code is written, and hosted, in Australia. | © JAQ Software 2025 |