MMBasic Ten Years On


Author Message
Geoffg

Guru

Joined: 06/06/2011
Location: Australia
Posts: 3264
Posted: 07:48am 26 Apr 2021      

This morning I was looking through some old documents and realised that it has been exactly ten years since MMBasic was first released.  This was in the March, April and May 2011 issues of Silicon Chip which introduced the first Maximite (the original monochrome version).

A lot has happened since then and it has been a long step by step process for MMBasic.  A little improvement here, a new feature there.  Over time these small incremental changes have amounted to a huge improvement.   And not to forget the bug fixes, there have been a lot of bugs to fix.

The original MMBasic was version 2.0 (V1.0 was never released) and it was positively archaic compared to the current version.  Line numbers were mandatory and you had to enter a program by prefixing each program line with a number, which caused it to be entered into program memory.  It took a lot of typing to enter anything so a 100 line program was considered HUGE.  This was how the original BASICs worked and it seemed normal at the time.  The saving grace was that MMBasic included support for an SD card from the beginning - so you could always enter the program on your PC, save it to an SD card and walk that over to the Maximite.  Tedious but it worked.

The first version was missing many features that we now take for granted.  There were no user subroutines of functions.  All you had was GOTO and GOSUB.  You could set an I/O pin high or low but there were no communication protocols (not even serial ports), there were no PWM, timers, etc.  There were some graphics commands to draw a line or circle, etc but nothing like that provided by the Colour Maximite 2.

However, the one thing that this version did have was a lot of bugs.  Before its release I had done a huge amount of testing and I thought that I had eliminated most bugs but when it got into the hands of the early adopters the bugs came out in force.  Due to the magazines lead time I had done the development a few months prior to publication and by the time the first users started to find the bugs I was in the middle of an extended six month camping trip through the interior of Australia.  So there I was, in the heat of central Australia, with the laptop on a camping table hunting bugs in MMBasic.

There were so many bugs that my view of MMBasic became quite distorted I expected bugs and I was surprised if a program ran without falling over.  For example, I am still faintly amazed when something like Mauro Xaviers Gauntlet runs all the way through without hitting some hidden bug.  The reason why there are so few bugs in the core of MMBasic today is because of the many users on The Back Shed who have diligently reported and documented them.  Without your effort I would still be in some sort of false heaven thinking that there were no bugs to be found.  Thankfully today MMBasic is quite stable.  I might receive reports of a few bugs now and then but most are trivial.

Over time features such as optional line numbers, the built in editor, user defined subroutines/functions, better memory management, optimisations and additional language constructs (CASE, STR$(), etc) have been added.  However a big step was made with the introduction of the Micromite in May 2014.  This introduced many new features such as integers, LCD display panels, CFunctions and more.  The Colour Maximite 2 is built on this branch of MMBasic which is why it is similar in many ways to the Micromite  for example, both save the BASIC program to flash memory.

Peter Mather contributed hugely to the later versions of the Micromite with support for LCD panels, CFunction improvements, updated protocol stacks and the countless bugs that he has found and reported.  Peter is also an expert at porting MMBasic to other platforms including the PIC32MZ, ARM processors and the Raspberry Pi.  He probably knows the internals of MMBasic as well as I do and his latest venture, the Colour Maximite 2, has been hugely successful and illustrates the robustness of the MMBasic core (now that most of the bugs have been removed).

If you are interested in reading more I have documented the original development of the Maximite and MMBasic on this web page and it is worth a read if you have not seen it.

Geoff