The recent announcement of MiniBASIC has been met with surprising (and gratifying) enthusiasm! So I thought today I would go over the demos included with it.
You can find these by doing
cd demo to change to the demo directory, and then
dir to list the files. (Note that in MiniBASIC, unlike in MiniScript, quotes are not require around file names that contain no punctuation; but they're always accepted. So
cd "demo" would also work.)
Here you find almost a dozen demos of various sizes (plus GAME.TXT, which is a Silver Mountain save file — more on that later). Let's take a quick look at each one.
To launch the first demo, enter
load alienLetters followed by
This is a game I wrote when I was in middle school, on an Apple ][. I found it somehow still hanging around my hard drive, made minor changes to convert the old sound routine (which relied on poking a small machine-language program into memory) to MiniBASIC's
SOUND command, and threw it into the demo directory.
The game is a typing tutor: as letters fall from the top of the screen, you must press the corresponding letter to shoot them before they reach the ground. The game gets harder over time by starting the letters closer to the ground.
The set of letters, and how many fall at once, are both set by line 30 (use
list -100 to list up to line 100):
30 LT$ = "ASDFJKL;":NL = 3: REM LETTERS USED, NO. OF LETTERS FALLING AT ONCE
Currently it's set to the QWERTY home row keys, three at a time. You can retype this line (or use
edit 30 to edit it) if you want to change this.
Despite the name, the asciiTable program displays not only ASCII characters (code points 0-127) but also code points 128-255. This is a handy reference for values you can use with
CHR$(n). For example, if you want to print the µ (mu) symbol, you'll find this in the chart as 181, so
PRINT CHR$(181) will do it.
(Keep in mind that MiniBASIC is not case-sensitive, and
? is a shortcut for
? chr$(181) would work just as well.)
This program also demonstrates combining graphics and text — the vertical lines are graphics, done with the PLOT and LINE commands. When the text scrolls, the graphics do not, which may be surprising when you first see it. Use
CLS to clear the screen.
This is another program from my youth. It required no changes to get running in MiniBASIC. However, as I was inspecting the code, I did notice a bug: line 360 read
360 PRINT "Shuffling...": FOR A = 1 TO 13: FOR B = 1 TO 4:CU(A,C) = 0: NEXT : NEXT
CU(A,C), when it should have been
CU(A,B). So, I finally fixed this bug... 38 years later!
The colors demo simply draws a color chart, showing the built-in 16-color palette (which is the same as the Commodore 64).
You can use these numeric values with the
COLOR command. For example,
COLOR 8 will change both the text and the graphics-drawing color to orange. You can also use strings with arbitrary HTML colors, whether they're part of the standard palette or not. For example,
COLOR "#FFCCCC" will get you a light pink. Use
COLOR 5 to go back to the default green.
The drawing program demonstrates the six drawing commands in MiniBASIC:
You just press the number of the one you want to see, and then watch as it both shows the code and the result of using that command.
One thing this demo does not currently demonstrate is the
PEN command, which changes the line thickness of subsequent drawing. Try adding
59 PEN 4 to see what that looks like.
This one is an in-progress port of the original Lemonade Stand game from Apple, circa 1979. This classic game was perhaps the first economic simulation game to reach the general public, and was hugely popular.
It's still in-progress because of two things:
It uses the Apple's "low-resolution graphics" mode, which doesn't port easily to MiniBASIC. And it does it via some funky tricks, like printing characters to the text screen which, when lores graphics are turned on, happen to form blocks of color. Yikes.
It also uses a machine-language routine to make music. I have attempted to convert the parameters to this routine into the corresponding notes four our SOUND command, but it's not quite right, so the music is a bit out of tune.
So I will keep working on it. Unless some kind and ambitious reader out there wants to help — pull requests are gratefully accepted!
silverMountain is the complete code from the Usborne book Mystery of Silver Mountain. To get this code into MiniBASIC, I first tried OCR (optical character recognition), but it didn't do very well. So I ended up just typing it in, line by line, just like we would have done in the old days.
Then I spent a couple days debugging it... also like we would have done in the old days!
But now I believe it to be complete and correct. But I must warn you: this is a hard game! You will need to actually read the book and study the pictures for clues. For example, just because nothing on the screen says there is a pot, doesn't mean you don't have to "EXAMINE POT" to find some critical item. The pictures in the book are the only way you would know to do this.
I did make some minor enhancements to the original program: I made it accept both lowercase and uppercase text, and I added a few synonyms, like "LOOK" for "EXAMINE", as well as a "QUIT" command. You'll find my changes on lines 270 and 351-359.
The sounds program demonstrates usage of MiniBASIC's
Again, you just press the key of the demo you want to run; but in this case, it just plays the sound. The code for each demo is already on the screen.
SOUND command takes four parameters:
- frequency (if > 0) or note (if <= 0), or array of same
- duration (in seconds)
- volume (0-1, or an array of values 0-1)
- waveform (0-4)
By varying these parameters, you can make a variety of interesting sounds, all very much in character for the first wave of home computers.
This is a very simple drawing demo, using a little bit of
COS to draw a many-pointed star. This demo (and its code) were featured in the original announcement.
star is a neat little program I found over on a forum called Basic4All. It draws an 8-pointed star on the text screen.
It does this with surprisingly little code, using
TAB to position the cursor.
5 CLS 10 FOR m = 5 TO 9 20 FOR n = m - 4 TO 22 - m 30 PRINT TAB(27 + m, 3 + n); "*" 40 PRINT TAB(27 + n, 3 + m); "*" 50 PRINT TAB(27 + 18 - m, 3 + n); "*" 60 PRINT TAB(27 + n, 3 + 18 - m); "*" 70 NEXT n 80 NEXT m 90 VTAB 24 : END
Finally, the tenPrint program is our version of the classic 10 PRINT demo:
The core of this program is the 1-line infinite loop:
10 PRINT CHR$(47 + 45 *(RND(1) > 0.5)); : GOTO 10
This is slightly different from the famous Commodore 64 version, because that uses the PETSCII character set which has diagonal lines at code points 205 and 206. We have to use slash and backslash, which are at code points 47 and 92. But otherwise, it's basically the same.
To break out of this infinite loop, just press Control-C.
And that's it for the contents of the
demo directory, at least at the time of this writing. I will probably add a few more as time goes on.
Do you have some cool BASIC code lying around, or an idea for a new MiniBASIC program? Let me know! Maybe I'll include it as a demo (with attribution, of course) in a future update to MiniBASIC!
Top comments (1)
I've just added one more: oddChars.bas, which prints this handy chart of odd characters included in the Mini Micro (and therefore MiniBASIC) text font: