Sunday, January 30, 2022
Wednesday, January 12, 2022
New feature: Export BASIC programs (three options)
Today's new version of BASIC Anywhere Machine adds the "Export" button to the File menu.
This export button is the standard TiddlyWiki export button. Upon clicking it, the button presents a pop-up menu which will offer you options to export the tiddler in multiple formats.
To the standard formats, BASIC Anywhere Machine adds these three new options:
This will take the tiddler for the BASIC program, resolve all transclusions (via "wikification") and export the program to a plain text file.
The usefulness of this: take a program that you've created and tested, and use the source code with other BASIC implementations (QB64, Qbasic, FREEBasic, PureBASIC, Gambas, etc. etc.) So BASIC Anywhere Machine as portable and run anywhere generic BASIC programming (and testing, and source code manager), feeding projects using other BASIC implementations. Cool.
".bas.html" file
This will do the same as export to ".bas" file, but wrap the basic program with all of the html and javascript needed to have a legit single-file web page (fully self-contained) for running the BASIC program.
- BASIC Anywhere Machine uses a custom version of wwwBASIC.js and embeds the javascript directly in the HTML file (i.e. does not use "include" of any external files). The resulting file will otherwise be very similar to the file described on the wwwBASIC github page.
The usefulness of this: deploy/share a BASIC program as a self-contained HTML file. (i.e. just the necessaries for the BASIC program to run. Anybody can run the BASIC program anywhere: the only thing needed is a web browser.
".bas.json" file
Partially complete !!! Currently only works for BASIC programs that do not have any TiddlyWiki transclusions of source code. For information about the source code transclusion feature in BASIC Anywhere Machine, please read about that further below.
This is an enhanced version of the native TiddlyWiki single-tiddler JSON file export option, but adds to the export the bare minimum number of tiddlers needed to run the BASIC program in another TiddlyWiki.
The usefulness of this: take a program created and tested in BASIC Anywhere Machine, and export just what is needed for the BASIC program to run in any other TiddlyWiki instance. The tiddlers in the JSON file created by BASIC Anywhere Machine can be imported into another TiddlyWiki instance.
Man, all of this gets my geek mojo going.
Cheers !
BASIC Anywhere Machine's "Code Transclusion" Feature
BASIC Anywhere Machine enhances BASIC programming by taking advantage of TiddlyWiki's "Transclusion in Wikitext" feature.
Upon start (aka RUN) of a BASIC program in BASIC Anywhere Machine, the program is pre-processed before getting handed over to the interpreter. Pre-processing resolves all transclusion instances.
In the following program, the "{{Conversion Functions}}" transclusion reference will get replaced during pre-processing by the content of the tiddler called "Conversion Functions".
' 📚 libraries{{Conversion Functions}}'' 🏁 start'print "The number of kilometers in 2 miles = "; MilesToKms!(2)print "The number of miles in 2 kilometers = "; KmsToMiles!(2)'end' 🏁
The "Conversion Functions" program:
function MilesToKms!(Miles!)MilesToKms! = Miles! * 1.609345end functionfunction KmsToMiles!(Kms!)KmsToMiles! = Kms! / 1.609345end function
The result of pre-processing, the code that will be passed to the interpreter:
' 📚 librariesfunction MilesToKms!(Miles!)MilesToKms! = Miles! * 1.609345end functionfunction KmsToMiles!(Kms!)KmsToMiles! = Kms! / 1.609345end function'' 🏁 start'print "The number of kilometers in 2 miles = "; MilesToKms!(2)print "The number of miles in 2 kilometers = "; KmsToMiles!(2)'end' 🏁
Aside: in the sample programming code above, single-quotes are alternatives to the "REM" statements (used for comments in BASIC programs.) Also, for a bit of experimentation with code readability, I've added emoji's. I think it is something which should be used sparingly.
Subscribe to:
Posts (Atom)
🖥 Pongy game
This program is a port (and slight mod) of the QB64pe program by SierraKen. (SierraKen's program shared with the QB64pe community in th...
-
This BAM program is a port, with mods, of the GW-BASIC "CALENDAR" program by Taung-Chao Lee and Benito Navarro Mtz, as found on Fa...
-
QB64 is a performance demon. BAM, not so much. So I had to mod this program a fair bit as part of reducing the resolution of the screen. A...
-
Although BAM supports arrays, BAM does not support the REDIM statement. So, I've modified the original code to use _MAPSET and _MAPGET, ...