it's old, but it still works!

Having played around with DosBox lately, I decided to do some more digging in my archives and found some stuff from the early 90s, pre-university era. Back then I was programming in QuickBASIC, which was awesome at the time. I found a half a dozen programs: a game of Yahtzee that I wrote and my brother and sister had loads of fun with, some typeins I converted from BBC Basic, early forays into texture mapping experiments and sprite editing, and a 7500-ish-line database program for tracking salesforce performance.

I wrote this last one at a time when my dad was regional director of such an outfit. We called the program “Activity”. Version 1 (I still have it) was written in FRED, a macro language in Ashton-Tate’s Framework (which, I am amazed to discover, is apparently still alive). Framework was one of those “integrated packages” that were everywhere until MS Office obliterated the market in the mid-90s. Activity version 2 was a rewrite in QB. It was simple, but in many ways it was ahead of its time – it could handle consolidating team figures, branches, etc, all the way up to the national figures, and it also offered the ability to track progress against goals. And it was much more stable than version 1, which was lacking in error handling. Version 1 was rolled out to the sales force, and some of them even persevered with trying to make it work. Version 2 was completed, but with one thing and another (not least, the direct salesforce portion of the company being sold) it never saw battle. I’m sure that such companies have since spent literally millions of pounds on software to do essentially the same function. But we were there first, in 1992.

So anyway, I dug it out, dusted it off, figured out how to work it again, and it still works! None of your Y2K bug, either – although it does seem to be coming to the end of its original commissioned lifetime – the last year supported is 2007. I was pleased to discover the 17-year-old me had actually commented the code and left it in a pretty readable state, too!

Anyway, since 7500+ lines is too much to post here, I’ll leave you with another snippet: a program I wrote to play Scott Joplin’s The Entertainer on the beepy PC speaker.

CLS
PRINT “Press a Key for Entertainment”
start:
DO
LOOP UNTIL INKEY$ <> “”
intro$ = “O4T100L16DEC<A8BG8DEC<A8BG8DEC<A8BAA-L8GN0O3G”
a$ = “O3L16DD+E>C8<E>C8<E>L4C.”
b$ = “L16CDD+ECDE8<B>D8L4C.”
c$ = “L16N0<AGG-A>CE8DC<A>L4D.”
d$ = “L16CDECDE8CDCECDE8CDCECDE8<B>D8L4CL16N0”
e$ = “L16<EFF+G8AG8EFF+G8AG8>EC<GAB>CDEDCD<G>EFGAGEF”
f$ = “G8AG8EFF+G8AG8GAA+BL8BBL16AF+DG4N0”
g$ = “L16<EFF+L8GL16AL8GL16EFF+L8GL16AL8G>L16EC<GAB>CDEDCDC4N0”
h$ = “L16O3GF+G>” + “C8<A>C8<A>C<AG>CEG8EC<GA8>C8ED8L4C.L16N0”
i$ = “O4L16AG+A4>C8D8<<B-AB->CD8FEF4A8B-8<GF+GAB->GD8GD8GD8C4”
j$ = “L16F4EG+B>E8D<B>C<A4B-4”
k$ = “L8F.L16FA>C8<G8CDEL8FN0>FN0”
l$ = “L16O4C8<A>C8<A>C<AG>CEG8EC<GA8>C8ED8C4N0>L8CN0”
m$ = “O3L16F8EF8EF8N0A>D<A>CDC<AG8F+G8F+G8N0>CECDEDC”
n$ = “D8C+D8C+D8N0FAFGAGF>CCC4<A8G8<GGG8G8”
o$ = “O3L16AG+A>G8F8CED+EA8>C<GEC8C8ED8C4N0>L8CN0”
enter1$ = intro$ + a$ + b$ + a$ + c$ + a$ + b$ + d$ + e$ + f$ + g$ + h$
enter2$ = a$ + b$ + a$ + c$ + a$ + b$ + LEFT$(d$, LEN(d$) – 2) + “O5L8CN0”
enter3$ = i$ + j$ + i$ + k$ + l$
enter4$ = m$ + n$ + m$ + o$
PLAY enter1$ + enter2$ + enter3$ + enter4$
GOTO start

2 Responses to “it's old, but it still works!”

  1. […] of 5s, several 4s, and the remainder 3s. For me it would be: 6 (C++), 6 (C), 5 (Common Lisp), 5 (BASIC), 4 (Haskell), 4 (PHP), 4 (Javascript), 4 (SQL), and take your pick of 3s (Perl, Python, Bourne […]

  2. Albert Bee says:

    I actually used Framework II in the late 80’s, and it had advanced features like being able to work with multiple files of different types and cut & paste between them, just like a Windows-like environment, way before Windows 95 was introduced. But the hardware (processor, speed, memory etc) was inadequate at that time. I recently tried it in Dosbox and it worked great.

Leave a Reply