Skip to content
Why is a raven like a writing desk?

Thoughts both confusing and enlightening.

Why is a raven like a writing desk?

Thoughts both confusing and enlightening.

it's old, but it still works!

elbeno, 22 February, 200729 July, 2007

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

Programming

Post navigation

Previous post
Next post

Related Posts

Profiling with SBCL

29 February, 200829 February, 2008

My Bézier curve code was not optimal, so I decided to learn how to profile with SBCL. In particular, I was not yet doing a binary search of the sampled points, neither was I doing an interpolation to recover the parameter t. Finally, I was sampling the curve at a…

Read More

Webular lisp

9 October, 2007

I’ve decided to pick up the reins of lisp again and see if I can’t make some lispy web goodness. So to that end, I installed apache2, mod_lisp2, and did an asdf-install of cl-modlisp tonight. It seems to be correctly installed: next step is to go back to Practical Common…

Read More

Recursive lambdas

16 April, 201530 June, 2015

One can assign a lambda to auto or to std::function. Normally one would assign a lambda to auto to avoid possible unwanted allocation from std::function. But if you want recursion, you need to be able to refer to the lambda variable inside the lambda, and you can’t do that if…

Read More

Comments (2)

  1. Pingback: Why is a raven like a writing desk? » Blog Archive » How many programming languages do you know?
  2. Albert Bee says:
    9 November, 2018 at 6:57 pm

    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

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

©2026 Why is a raven like a writing desk? | WordPress Theme by SuperbThemes