It’s easy enough nowadays to find a good drawing program, but it’s not so easy to find one that’s well suited to those of us on a budget.
I love all these new-fangled fancypants image editors that make it possible to seamlessly add moustaches to old photos of your grandmother, but I don’t want to shell out hundred of dollars just so that I can express myself artistically. Art is for everybody. Art saves lives. The arts are not a luxury.
That’s why I was pleased to run across something that was right in my price range. Costing absolutely nothing, this application, simply titled “EG40.BAS”, is manna from heaven. Granted, it’s from the days of DOS and is a tad on the low-res side of things, but it’s free. Only thing I can’t figure out is the meaning of “EG40.BAS” – I don’t know what that’s a reference to. Could be some kind of commie code or something. The file extension clearly indicates that this is an open source program written in BASIC, but the name itself is a mystery.
Oh, well.
I decided to test the application by performing a standard artistic benchmark: The recreation of Botticelli's Birth of Venus from start to finish. I figure that’ll give me a chance to sample most of the program’s features.
My goal, then, is to end with something like this:

Seems doable.
Getting started
I happen to have a copy of DOS running under Virtual PC on my Mac, and I decided that the proper way to perform this test would be under that environment. Nothing, I think, could more faithfully reproduce the experience of a 4.77Mhz IBM PC with a CGA card than a high-powered modern computer set up to emulate hardware that’s decades old and architecturally alien.
It was easy enough to get the program running. I started up a BASIC interpreter, used the “F3” macro to load the file, and then hit “F2” to run it.
Perhaps not an example of good user interface design, the startup screen for EG40 is nevertheless simple:

You’re presented with a blinking green cursor. From the size of the sucker, I’d guess that we’re running in a 40 character wide text mode.
That’s OK. I think I can draw the Birth of Venus with those limitations. A true artist rises to the challenge.
Laying the foundation
It took me about twenty minutes to get from the blank start up screen to this one:

I didn’t know how to make the program draw, so I dropped into the code (open source!) and figured out what was going on. It was a spaghetti mess, but I found an INKEY$ loop where keyboard input was being monitored.
The cursor is navigated using the numeric keypad, but you have to have NUM-LOCK on for it to work. To put the “pen” down on the “canvas”, you have to hit “D”. Note that it’s case-sensitive. For the various commands to work, you also need CAPS-LOCK on.
That’s all right, though. Remember: This sucker’s free. Some poor bastard put this thing together in his spare time.
Also note that there’s a color changing feature. You can see it in action in the screenshot above. After hitting “C” the app will ask you to enter in a number corresponding to the text-mode color you’d like. I think there’s a total of 16 colors if we include black.
But things are going well, I’d say. I may only have the beginnings of Venus drawn, and that may have taken me twenty minutes, but most of that was the learning curve associated with figuring out that I had to have CAPS-LOCK on.
Saving your work
Once you’re done futzing around and you’ve gotten serious about your endeavor, you’d better start saving.
After drawing the clam shell beneath Venus, I knew I’d hit a milestone, and decided to save. Having already examined the code, I knew that this was accomplished with a simple “S”:

I entered the name “BOV” which stands for “Birth of Venus”, but you probably already figured that out.
The save mechanism worked well, producing a binary file about 17k in size. Although this is larger than many JPG images of the same dimensions, it’s still quite acceptable. If you were to forward one of these images to a friend, for example, you wouldn’t find her complaining about her mailbox being cluttered with gigantic attachments. She wouldn’t be able to open the file, but that’s her problem.
I also found that, regardless of image detail, the file is always 17k. This is due to the method used to store the image, that being a direct dump of the first (roughly) 17k of video memory to file. It’s wasteful for undetailed images, but keep in mind that I could completely recreate the Birth of Venus, and it would still only be a 17k file. That’s pretty cool. Museums should be interested in this application for its potential as an archiving aid.
Looking for tools
When I got to work creating the landscape background, I started to run up against EG40’s limitations. For example, I had to draw the broad, sweeping sea with the same “brush” I used on Venus herself. While the precision of the block by block accuracy of the cursor is great for doing finely detailed work like Venus, it’s woefully malsuited to larger, more repetitive sections of the work.
Take a look at this:

I had to do all that green and blue by hand – by hand. There’s no “fill” feature here, and I know because I repeatedly hit “F” trying to make something happen.
One solution to the problem I considered was to draw the outline of the sea, take a screenshot of my progress, import it into MS Paint, use Paint’s powerful fill feature, save it, and then get the picture back into EG40 where I could finish the job.
You’ve probably already hit on the problem, though: EG40 isn’t compatible with MS Paint file formats, so you’re screwed if you go this route.
It’s weird because you’d think that an open source app like this would also support common file formats, but no beans. My guess is the author intended on getting the world hooked on his drawing program, convincing people that his binary format was “all that,” and then closing the source, locking the doors, and charging like crazy for future copies and upgrades after retroactively revoking its freeware status.
Sleazy.
Speaking of the author…
I think I was about eight or nine when I wrote EG40. It was around about that time that I became obsessed with drawing programs. EG40 was my first, and I went on to write about ten more, ending with my grand masterpiece: A VGA drawing program that used the mouse. It was pretty h4x0ring cool.
Although I’ve lost most of the code that I wrote when I was a kid, I’ve managed to carry a good sampling with me through the years, having transferred it from 5 1/4 inch floppies to 3 1/2 inch floppies, then to various hard drives, and finally to CD (with HD backups).
The code is, understandably, awful, but it’s cool to still have my childhood code after all these years.
If you’re interested, you can grab the source here. Feel free to make improvements to it, but understand that nothing gets committed to the main source tree without my approval.