Okay, kids, let's take a look at what was happening in the LB community three years ago. It's fun to see from where we've come.
March 2000 was a very active month for the publishers of the Liberty BASIC Newsletter. There are no less than four (count 'em, folks) publications that carry the date "March 2000": NL66, NL67, NL68 and NL69. Alyce and Cliff Bros co-published all four.
The first one, NL66, focused on code to select a font for the Open Source Editor. At this time, version 2 of Liberty BASIC was only at alpha 4, and apparently no native font dialog was available for LB1.42. The code contributor for font selection was Chris Robertson. The Open Source Editor was probably at version 1 or version 2 at the time.
Chris' program obtained the installed fonts by querying the system registry with the following command:
run "regedit /e ";DefaultDir$;"\font.lst Hkey_Local_Machine\Software\Microsoft\Windows\CurrentVersion\Fonts", SW_HIDE
When executed, this command would run Regedit in a hidden state, then deposit the results of the font query in the text file called "font.lst". Following that, the article provides an extremely detailed tutorial on how to read "font.lst" with LB's FILES command, store the data in a font array, and select the font with a home-made font dialog box. Very nicely done by Alyce and Cliff.
The next March 2000 newsletter, NL67, begins with a brief review of some of the new features in the upcoming Liberty BASIC 2, including printer and font dialogs, popup menu command, color control, and enhancements to the native LB editor, among other features.
But the feature article of NL67, authored by Carl Gundel, focused on LB2's implementation of user-defined functions. Carl identifed user-defined functions as "the single most significant feature of Liberty BASIC v2.0". The reason is because variables used inside functions are "local" in scope, meaning that their values aren't seen outside of the function. For this reason, the programmer can freely choose variable names without regard for the fact that the same variable names may be used elsewhere in the program. This makes functions more modular: they can be clipped and used within other programs without fear of causing variable-naming problems. (Programmer's advisory: arrays used in functions are global in scope, as are "things with handles".) Following Carl's article, NL67 provided a patiently-crafted tutorial on the use of user-defined functions.
NL68 was a thorough preview of the Alpha 5 version of Liberty BASIC 2.0. The newsletter began with a discussion of the new LB2 native editor, which featured a toolbar across the top, and a list of the most recently opened files in the files menu. Following that, the editors discussed colors for windows and controls; the use of expressions in the creation of controls; the graphics SET command; the font dialog; the popupMenu command; decimal to hex conversions; new time and date functions; the improved random function; and support for 24-bit bitmaps.
The last March 2000 newsletter edition was NL69. This unusual newsletter consisted entirely of an edited transcript of an online chat with Carl Gundel about LB2. At that point, LB2 was nearing it's first Beta. The online group discussed API calls, sprites, the LB debugger, communications support, limits on LB shareware, ON ERROR, an LB Mascot (wha?), LB for kids, a future 32-bit version, and a future Linux version. It was clear from the transcript that the enthusiasm was high.
What most impresses me about my review of past newsletter issues is the consistent, durable quality which Alyce's stewardship has lent them.