"Final" Status Report It's not really final because retrocomputing never ends! It's February 1st, at least in Japan, which officially brings RetroChallenge Winter Warm-up 2010 to an end. Though I don't consider my own project complete and intend to continue working on it, this is a summary of what I accomplished during the Challenge. * "I'm a programmer, not a phlogger!" Early in the Challenge, a commentator on retrochallenge.org teased me for long-winded entries in my gopher log. He was right, but around the half-way point I found that I had to make a choice between writing about the project and actually doing it. I followed my inner programmer and chose the better part, and let the phlog languish. The same problem has come up in the past whenever I've tried to keep a phlog or blog: No matter how much I want to share my thoughts or practice writing prose, my good intentions always seem to get trumped by some programming project that needs to get done first. So instead of an active phlog/blog/whatever, I have years of accumulated finished and half-finished programs. * RetroNET / Creative Computing Classic BASIC Game Library So what have I done? I set out to "port" the BASIC programs of the Creative Computing Library (CCL) to RetroNET so that members could both run the programs and have access to the source code. The porting process has been much ado about very little. My initial choice of for BASIC interpreter on RetroNET, Bywater BASIC, proved to have too many incompatibility with the early MicroSoft BASIC version for which the CCL was written[1] for my ability to program a conversion function. (My tribulations are documented in my phlog.) Knowing I didn't have enough time or patience to hand port all 103 programs in the library, this prompted me to search for another interpreter. I found Unix-friendly bas, which unlike Bywater can run the majority of CCL programs with no change other than converting end-of-line characters from DOS- to Unix-format. I verified 21 of the 103 programs run with bas, and then had to turn my attention to another matter. The delivery system. I wanted to make the programs available through a series of menus in the same style as RetroNET's MCP, 40x8 retro-computer-friendly. Originally concieving the program as a Bourne shell script like MCP, I realized that the most appropriate language for programming the menu system was BASIC itself after learning that both Bywater BASIC and bas support a high degree of interaction with the shell. In addition to the basic menu functionality, I set a couple of additional goals for programming the RC3BGL menu. First, I wanted to show off 20+ years of programming experience by demonstrating that a BASIC program doesn't have to be spaghetti code. I had only limited success with this oal. Second, in the spirit of retro-computing I wanted to avoid the structured programming constructs that were introduced into later BASIC versions and implement the program with only those core elements of the language that were available in its early microcomputer versions. I was more successful with this and think that except for the shell access statements the menu program might even run with the original Dartmouth BASIC. I'll write more about re-experiencing BASIC programming in a separate post. * To Come Even though the Challenge is over, there are still a few improvements I intend to make to RC3BGL. I'd add "... over the next few weeks" except that putting a deadline on it makes it like work and drains the fun. - Improve help :: I need to add a note somewhere about the programs needing text input in upper-case, and about some of the programs requiring Ctrl-C to terminate (ungracefully). I've also thought about adding an "About" screen with a link to the source CCL collection and appropriate credits. It is really hard to communicate much in 40x8 characters, though. - Quick wins :: I believe most of the remaining programs in the CCL will probably run unmodified with bas, but I want to check each program once before adding it to the RC3BGL menu. This work will go pretty quickly if I can get a few quiet and otherwise uncommitted evenings at home. - Debugging :: Once I've found all the programs that run as-is, I'll go back through the collection and try to fix the programs that didn't work on the first attempt. I'll probably test them with GW-BASIC or something earlier to see if the problem is just an incompatibility between bas and the BASIC the programs were originally written for, or if I've found a but that's somehow remained uncorrected for 30 years. I have no idea how long this will take. You might start a betting pool on whether or not this will become my summer RetroChallenge project. - Improvements :: This is something I have purposely avoided since the beginning of the project. Long ago I fooled myself into thinking I could improve the code in some of these masses of spaghetti and know that that way lies madness. However, having to end some of the games with a terminal-killing Ctrl-C is too grotty for my pride to bear. I promise myself to only fix parts of the programs that make them especially difficult to use in the RC3BGL. (I will NOT be adding support for lower-case text input.) * Notes [1] References to Dartmouth University in some of the programs suggest that they may have been developed prior to the advent of MicroSoft BASIC, possibly for the original Dartmouth BASIC.