Wednesday, June 28, 2023

🎉 New version of BASIC Anywhere Machine

Latest version of BASIC Anywhere Machine:  try it now !

The list of enhancements in this new version of BASIC Anywhere Machine is faithful to those mentioned earlier (see the 🚧 In the works post.)

Some things may have changed a wee touch, so I'll mention any deviations in this post and also provide links to relevant documentation in the BASIC Anywhere Machine Programming Reference and User Guide.

Before getting into any details, here's the list:

  • New "View Code Issues" functionality
  • Documentation: Adding Syntax (aka Railroad) Diagrams

  • New UrlQueryString$ function
  • New UrlKey$ function
  • New PUTSTRING statement
  • New SCROLL statement
  • New IFF function
  • New BETWEEN function
  • New CHOOSE function
  • New MIN and MAX functions
  • New DAY$ function
  • New FRAC function
  • Added DIV keyword as an alternative to the "\" operator
  • Improved INSTR function
  • Improved SLEEP statement
  • Improved conversion from base 10 numbers to binary/hexadecimal/octal number systems
  • Added BIN$ as alternative keyword for _BIN$
  • Improved WIDTH statement
  • New HEIGHT statement
  • Improved RANDOMIZE statement
  • Improved DEFtype statements
  • Changed INTEGER data type

"View Code Issues" functionality


I would like to present this in a video, hopefully in the not too distant future.


Syntax (aka Railroad) Diagrams

Finding myself very dissatisfied trying to express syntax with text notation, I've decided to try railroad diagrams, and I like the results.  You'll find syntax diagrams in many of the statement/function documentation links below.


For all statements and functions, the arguments can be simple literal values, variables, constants, or any expression of any kind involving literals/variables/constants/functions.  I'm still unsure how to coherently  and concisely indicate that in the documentation.

UrlQueryString$ function



Although the UrlKey$ function sort of makes the UrlQueryString$ function irrelevant, UrlKey$ makes use of UrlQueryString$; since UrlQueryString$ is needed by BAM "internally", why bother hiding it?

UrlKey$ function



PUTSTRING statement



SCROLL statement



IFF function



BETWEEN function


Although planned as solely an "inclusive" between, now it is "inclusive" by default with the option of to use it as "exclusive" via a parameter.


CHOOSE function



MIN and MAX functions


Although originally planned as two-argument functions, they both allow any number of arguments.

See the documentation pages: MIN, MAX.

DAY$



FRAC function



DIV keyword



INSTR function



SLEEP statement



Conversion from base 10 numbers


See the documentation pages: BIN$, HEX$, and OCT$

WIDTH and HEIGHT statements


See the documentation pages: WIDTH and HEIGHT

RANDOMIZE statement


Although BASIC Anywhere Machine does nothing with the RANDOMIZE statement, the statement is recognized without errors: all about making old BASIC programs work in BASIC Anywhere Machine without too much fuss.


DEFtype statements


See the documentation pages: DEFDBL, DEFINT, DEFLNG, DEFSNG, DEFSTR

INTEGER data type

"INTEGER" was previously treated by BASIC Anywhere Machine as equivalent to a LONG integer.

"DEFINT" defines variables that begin with a specified letter as SHORT integer.

To be consistent with DEFINT, and to be consistent/compatible with GW-BASIC, QBASIC, and QB64, "INTEGER" has been changed to be treated as equivalent to  SHORT integer.


No comments:

Post a Comment

🖥 Flower Tesselation: Testing DRAW and recursive SUB's

This BAM program inspired by Richard Russell's "Flower-like tesselation" BBC BASIC program posted on Facebook . I did not get ...