Saturday, April 26, 2025

🚧 In the Works: "Code Insertion" buttons

Try this in the πŸ”— development version of BASIC Anywhere Machine.

Who likes looking up statement/function statements (or code blocks) to whenever does not remember the precise syntax?  These buttons (very much a work in progress) will insert template code.












Sunday, April 20, 2025

πŸ“š TIP: Exporting a BAM Program for Embedding as an App in Web Pages

Say we have written an analog clock program, and we want to show that clock on a Web Page.

Here is a QB64 program by b+ ported to BAM:

Although you might want to embed a "development" version of your BASIC program (as a preview of your app, and/or for testing purposes), let's assume that your BASIC program has been promoted to the "production" level, and it is the "production" version of the program that we want to embed in some Web Page.

In BAM, click on the "Project" menu.  In the "Project" pop-up menu, click on the "Export" menu item (the last item in the menu).



In the "Export Options" dialog, click on "Stand-Alone (PROD):



You will then be prompted with a dialog in which you give the export file a name, and you provide the location where to save that file (the dialog's appearance will vary by Web browser):



The HTML file that has been exported and saved contains everything needed for the BASIC program to run as an independent Web Page: the BASIC program, the transpiler (which at Web Page rendering converts the BASIC program to JavaScript, and whatever else is needed for any proper Web Page.)

To be accessed on the web (either directly as a Web Page, or embedded in an "iframe" HTML element in some other web Page), the HTML file needs to be copied to some Web server that can host "static" Web pages.  (The "Run the program" link at the top of this blog article is a link to the HTML file uploaded to my Neocities website.)

To include the exported BASIC program as an app in some webpage, add code like the following to that web page:

<iframe
src="https://basicanywheremachine.neocities.org/sample_programs/Analog%20Clock%20by%20b+.prod.run"
style="width:100%;"/>

Note: for the clock to be embedded in another Web Page, the website hosting the clock's HTML file must be on a Web server that allows pages on that web server to be displayed in pages from other websites.

How's that for a pretty convenient way, if you are a BASIC programmer, to add your own custom apps to any Web Page ???

For example, here's the clock program running in a TiddlyWiki instance (a TiddlyWiki instance, whether stored locally or on the web, behaves a little bit like a single-file Web site):










Friday, April 18, 2025

πŸ–₯ Dony Grapher

This program is a port and mod of a program shared by Antoni Gual Via with the "BASIC, QBasic, GWBasic computer programming" Facebook group.

From Antoni's post:

Some graphics from Mr Dony's book. It uses the "bugs in love" algorithm. The circle is divided into triangular sectors. At each vertex of one sector there is a bug that's attracted by tha bug in the vertex in front of him so it moves to reach it. At intervals a picture of the new triangle defined by the moving bugs is plotted. The order of the initial vertices is inverted in even and odd sectors to increase symmetry.




































Saturday, March 15, 2025

πŸ“š Simulating OOP Methods in BAM Using GOSUB

BASIC Anywhere Machine's GOSUB implementation allows using numeric expressions for dynamic line numbers or using string expressions for dynamic line labels.

  • As of this blog entry's publishing,  the "production" version of BAM requires such an expression to be within parentheses and preceded by the "EVAL" keyword
    • example:  GOSUB EVAL( some_expression )
  • The current "development" version of BAM drops the "EVAL" keyword, because the parentheses are enough for indicating an expression for GOSUB
    • example:  GOSUB ( some_expression )
    • note: this syntax will appear in some yet-to-be-determined "production" release of BAM, replacing the syntax using "EVAL"
The use of expressions as GOSUB arguments allows BAM programs to simulate OOP methods, as demonstrated in the following program:
The program fills the screen with 570 random shapes (circles or squares) with random ( x, y ) center coordinates, random colours, and random sizes.

Each type of shape has a dedicated shape-drawing GOSUB routine.

The program is written in a way that assumes a future enhancement that involves movement of the shapes and bouncing away from the edges of the screen.

Saturday, March 8, 2025

πŸ–₯ Hypnot

This program is a port (and very minor mod) of a QB64 program by bplus.  The program by bplus is a port and mod of a ZBASIC program.



Saturday, March 1, 2025

πŸ–₯ Isometric Bouncing Ball Sim

This program is a port and mod of a QB64 program by b+, that program being a port and mod of a BASIC program by "Claude."




Sunday, February 23, 2025

πŸ–₯ Rotating Icosahedron

Icosahedron: I cause a head-run ???  (Yup, that's this sponge's insta-thought...)

This BAM program is a port of a QBJS program created and shared by "vince" on the QB64 Phoenix Edition forums. (πŸ”—link)

This program port was a little tricky because BAM does not have a "MapTriangle" function to create filled-in triangles.  I had to put a PAINT statement in an IF statement that checks to make sure the triangle is not so thin that PAINT does not work.



🚧 In the Works: "Code Insertion" buttons

Try this in the πŸ”— development version of BASIC Anywhere Machine . Who likes looking up statement/function statements (or code blocks) to wh...