Discussion about this post

User's avatar
Mark Miller's avatar

I have my own "failed submission" story. I got the idea, since I liked the game Mad Libs, to create a digital version of it. These were some of the first programs I ever wrote. I started out in Basic on the Atari, writing hardcoded stories in Basic. Each program would run a single story. It would ask for what words to fill in the blanks in Graphics 0, and then would show the story in Graphics 2, I think.

I got the idea to create a "system" so the Mad Libs could be saved to text files, so the program to play them would only have to be written once. I tried this idea out in Basic on the Apple II. The only way I could figure out how to do this (it may have been before I learned how to use a word processor, much less how it saved files) was to write separate programs for creating a Mad Lib, and playing it. The way I did the "create" part was very clunky. I asked the user how many words were in the story, and how many blanks, so I could dimension my arrays. Then it had them enter the blanks and the story one "item" at a time, using Input statements. So, blanks were entered as "NOUN", "ADJECTIVE", etc. They were supposed to be entered in the order that they appeared in the story. Then, to enter the story, each word had to be entered one at a time... You'd mark the corresponding position of a blank in the story by leaving the prompt blank (just press Return). The blanks were saved in one file, and the story in another. I then wrote a "displayer" program to load both of these, and ask the player to enter words to fill in the blanks, and then it displayed the story with word-wrapping, and pagination.

I then realized I'd make mistakes entering the blanks and story. So, I figured I needed a way to edit them. I wrote a separate program to do that. It had a menu system, but it was the same one-item-at-a-time approach, for both blanks and the words in the story. I spent from Jr. high to high school debugging and improving these programs, on my free time. I started getting the idea to submit this to Compute! Magazine, since I'd been reading it for a while, and enjoyed it a lot. I changed the name of the program to "Ad Libs," thinking calling it Mad Libs would violate copyright. I wrote up an article, and spent a lot of time making sure it described how the system worked accurately and clearly, and how to use it. To submit it, I needed a copy of the programs on disk, maybe even an electronic version of the article. Though, what I remember is just sending a printout of the article text. I had to figure out a mailer for the disk (I taped up a couple pieces of cardboard around it to protect it), and sent it in. I got a form rejection letter, saying it "didn't fit our editorial focus," something like that.

I learned many years later that it was good practice to float the idea for an article with a publisher before spending time writing it, because they may not like the idea to begin with.

I think sometime while I was in college, I realized that the way I did this was complicated both in implementation, and for the user, and that I could do it better by leveraging a word processor. I wrote a version in Basic on my Atari that had me use a word processor or text editor to write the story with embedded blanks (I had them enclosed in []'s, so, "[NOUN], [VERB], etc.). This worked out well, since I could implicitly get the ordering and position of the blanks in the story down in a very natural way. You'd save that to disk. My program would read in the file, ask the user to fill in the blanks, and then would nicely format the story. A lot simpler. By that point, Compute! had stopped publishing type-ins. I didn't think there was a point to repeating the process (with anyone else).

Anyway, back in the 2000s, I managed to use a friend's Apple IIGS to transfer some of my Apple disks to images, so I can run my old programs in emulation. It was not an easy process, but I managed to get my most prized Apple projects into images. This was one of them.

Chris Chiesa's avatar

Jeez. And to think I always just did it the hard way: either by issuing XIO commands (XIO 33 to delete a file, and XIO 254 to format a disk, are the only two I remember off the top of my head), or issuing an OPEN #1,6,0,"D1:*.*" followed by a FOR T=1 to 1 STEP 0:GET #1,A:?CHR$(A);:N.T to pull a directory listing. :-)

Actually I exaggerate slightly: I eventually found that directory listing sequence tedious enough to save it to disk as a LOADable / RUNnable program... And eventually, once I had more than one disk drive, I did myself one better by having the program interrogate the IOSB that BASIC used for the LOAD and RUN commands, to determine what drive the program itself had been loaded from, so that Dn:SELFMENU.BAS always listed the directory of the DRIVE IT WAS RUN FROM. :-) Put a copy of that program on every disk, and it became trivial to get a directory of any disk no matter what drive it was in. Very handy!

8 more comments...

No posts

Ready for more?