That Month Again
Amazing Product Rallies Information Lunatics
By now, most of you have heard that Atari has announced that it is, indeed, going to sell a CD-ROM. The advantage of a CD-ROM is that a single optical disk can hold hundreds of megabytes of information. The disadvantage is that CD-ROMs are exactly what the second part of their acronyms suggest: Read Only Memory. The computer can not write to such a device.
But the computer industry is working very hard to overcome this restriction. Welcome to the world of the WORM—Write Once Read Many. Special optical disk drives have already been introduced that use lasers to write information. The data thus written cannot be changed, but it can effectively be "erased" and a later, updated copy can be written to another part of the disk. A typical home user could probably use a single such optical disk for a couple of years before needing to copy the most recent versions of all files to a new, clean disk. But don't hold your breath waiting to buy one—at least not unless you'd rather buy one than, say, a new sports car. However....
Fantastic Option OverLooked!
I know it may be hard to believe, but the designers of the original eight-bit Atari computers, way back in 1979, included a close relative of the WORM in their design. True, it is slower than a WORM, and it isn't as easy to use, but it works! And yes, the WORN is built into each Atari eight-bit computer!
There are a couple of ways to use an Atari WORN, but here is one of the simplest. From BASIC, just type in the command:
Then load a BASIC program type:
Presto! Your program will be saved to this marvelous device. (Hit RESET to disable the WORN.)
Of course, you should be careful not to rely on the WORN. Certainly, compared to a WORM, recovering programs saved to this Write Once Read Never device can take a while. If you happen to have a LAND device handy, you can make a quick copy of small programs saved to the WORN, but otherwise you will probably have to ensure a reliable connection between your biological optical devices and your digital extremity input devices.
Another marvelous acronym, pronounced "wizz-ee-wigg," is an old one that is relatively new to computers: What You See Is What You Get. Usually applied to word processing programs, where it means that the printed copy will look like the screen display (implying a higher-resolution display than that of an eight-bit Atari), this time I use it in its old meaning, the one a flea market vendor might use. Take another look at just the initial letters of the words in my headings up until now. Together they make a single acronym. One very appropriate to this month's issue.
Actually, my tale of the WORN device owes much to tales of WOM (Write Only Memory) devices that have abounded in computer folklore for ages. (Well, 10 or 15 years is "ages" when it comes to computers, right?) I remember one article that showed a picture of a water tower and claimed it was a WOM big enough for a whole town. So, if you don't like jokes, I apologize, but I haven't pulled an April Fool jest in a couple of years. It was time. (Oh, yes, the LAND above is not an acronym: I was referring to a Polaroid Land camera. And biological optical devices are your eyes, and digital extremity input devices are your fingers, of course.)
A couple of my columns lately have turned out to be mildly prophetic of other COMPUTE! articles. One article that related to some of my recent comments was "Tri-Sort for Atari" on page 88 of the February issue, in which Arthur Horan provides you with a fast machine language sort that you can use with the pseudo-fields and pseudorecords I described in my February and March columns. The Shell-Metzner sort used by Mr. Horan is not the fastest for very large arrays of data, but it is probably quite well suited for the number of records you can pack into an Atari BASIC string. In my March column (which, of course, was written long before I saw the February issue) I said that I hoped you wouldn't use my quick-and-dirty bubble sort. With the help of Mr. Horan, you don't have to.
Last month, I also promised to return to the subject of my December article: Acrostic and other word puzzles. Well, in the December issue I said that I had yet to see a really good crossword puzzle program. Lo and behold, on page 61 of the February issue is a review of Crossword Power (for IBM PCs) that shows indeed how limited such programs are. I think the program did a creditable job with the number of words it was given, but the result was far from ideal.
For example, a typical newspaper crossword puzzle is perhaps 5-10-percent black space. The one shown in that review was more like 75-percent black space. Too, it is considered less than ideal for words in a newspaper puzzle to have more than one uncrossed letter. In the puzzle of the review, several words are "hooked in" by a single letter! In at least one case, this results in a clue with two answers. (See 21 Across: A musical instrument. Is it a piano or cello?) Granted, the reviewer gave the program very few words to work with (only 35), but I can't help but wonder how long it would take to generate a good puzzle if one gave it a list of a couple of thousand words.
More Words About Words
In this same vein, several readers wrote to give comments and suggestions about the acrostics problem. (To refresh your memory: The problem is to write a program that will produce all valid five-by-five acrostics or word squares from a given list of five-letter words. Assume that there are 5000 words in the list.) One gentleman suggested that I was making the problem too hard: I should limit the number of words and accept the first puzzle produced. Well, yes, that wouldn't take as long, but that is kind of like building a chess-playing program that can only take over after a human has played the first 40 moves, and even then it can only play until it finds the first check (but not mate). As a practical matter, perhaps the gentleman is right. As a mathematician (which I was, once, I think), I want to see a problem solved, not sidestepped.
I even got two versions for other computers. An Amiga version took about three times as long on the Amiga as on the eight-bit Atari. But that is because of the inefficient way that Microsoft BASIC strings are implemented.
As for myself, I haven't had time to put together a complete solution, but I have started a couple of paper designs. I am convinced that, as with so very many computer problems, a really good solution depends on finding the right way to represent the data (in this case, the word list).
One possibility is this: How about a "map" wherein every single possible five-letter word is represented by a YES/NO flag? (That is, yes or no that the flagged word exists in our word list.) In compact form, such a map requires 26^5 bits, or about 1.5 megabytes. In a more practical form (use a 32-bit computer word for each set of 26 bits), one still needs just a little under 1.9 megabytes. Hmmm ... anybody with a four-megabyte ST listening out there? (Actually, for efficiency, you would want four maps of increasing size—26^2, 26^3, 26^4, and 26^5—to represent the possible sequential letter sets. With some intelligent compression, all this might be possible in a half megabyte or so.)
I also tend to think that building the valid word set via a linked tree or list would work (albeit probably slower than the brute force approach, above). At worst, such a list would need about 75,000 bytes. Given the likely letter patterns in 5000 English words, I wouldn't be surprised to find that we could make do with 30,000 bytes or fewer. (Now we're down in eight-bit territory again!)
Are you asking "What is a linked list?" That's a big topic. For now, let me show you a way of simulating a word tree in Atari BASIC. The accompanying listing looks long, but you will quickly find that the bulk of it is nothing but simple DATA statements. This program has no real practical value, so don't feel that you need to type it in unless you are curious. But I do hope that at least some of you will look at my word tree and become inspired. If you are, write to me (P.O. Box 710352, San Jose, CA, 95171-0352).