Lupe Darksnout
New member
Hello everyone. It's time to share my story.
Browsing one of the last issues of the computer magazines in the 90's, I came upon an advertisement for LOADSTAR. The ad (that was years old already) promised a free sample issue. Were they still around? I called them up.
On the other end of the line was Fender Tucker, although I did not know it at the time. He gave me a brief spiel about LOADSTAR and got my details. I asked about program submissions, do they pay for them, and so on. He was always interested in new stuff and offered to send some program submission guidelines for me to read. I still have them.
My sample eventually arrived, issue #132. I dug in with great interest. This was brand new C64 stuff! Other people were still using this machine! I am not the only one playing with a 15-year old computer in their bedroom!
On side 2, was a little puzzle called "Gordian Challenge". There was a box with all letters a-z in it, but also a word representing how many of that letter appeared inside the box. For example, there may be "one v" and this might be true, but as soon as there are "five" of another letter, now there are at least TWO v's - making the statement incorrect again. Your job was to find a perfect solution, or one as close as you can with as few letters in the "fudge box" (a place to add letters you "need" to make the statement true, at no penalty) as possible.
Hoo hoo! This looks like a task to brute force with machine language! Lucky me, I recently learned this skill, although I was still writing code exclusively with an ML monitor at the time. I wrote code that would randomly take a letter in question, and check its statement. If that statement was currently false, I would make it true. (The "one v" of the last paragraph would change to read "two v") and the program did a quick check to see how well it fared with that change. It was a neat puzzle in that changing one value effectively corrupted multiple others. Perhaps logically, the code was running in little loops in certain areas, waiting for the rare opportunity of alignment where the numbers would fall into place perfectly.
And eventually they did.
My program was able to find one perfect solution to the puzzle, after running at top speed for hours. The program had a nice graphical display of the current letter counts and guesses and since it was all ML, it ran through choices at an impressive speed that resembled WOPR. It did run much faster if the SHIFT LOCK key was down (skipping the visual update) so that was mostly for looks. It wasn't until much later did I realize SHIFT LOCK was effectively holding a key down for hours on end, which meant the interrupt was doing the full keyscan routine every time, wasting a lot of time that could have been better spent crunching numbers for the contest.
Anyways, I printed out my result. I also sent a disk along with the program I wrote to solve it, and perhaps a printout of the source code - or at least the disassembly - with comments in pen? Can't remember. But off it went.
Some time later, maybe it was a couple months, I received a letter in the mail from Fender Tucker. It had a printout of the results from the Gordian Challenge, which was about to appear in the next issue, plus a handwritten note.
"Lee - Your program is fantastic. Let me see some more of your creations. Your subscription will be extended by three months, but send me something I can publish and you may never need to subscribe again."
I raced upstairs to show mom the letter. I got the attention of some disk magazine editor! Wow! That means I could actually write stuff that might actually be seen by someone other than my siblings! But what could I write that they'd want to see? I only just learned machine language! I don't even have an assembler!
A short time later I did acquire an assembler: PAL. It was found one day at a local used computer shop. Turned out to be the best $15 I ever spent. The last time I used PAL? Earlier this week. Best $15 ever, remember?
I began submitting things to LOADSTAR, mostly contest entries at first, but later a "game" or two - if they could be called that. Mondo Wordo II - a tetris-y letter drop game that made use of the dictionary routine from a previous contest, and the Rainbow Challenge, which was a "align the colored tiles" efficiency puzzle. Easy to do, but who could do it the best? It was neat because to enter this contest, you actually needed to submit the save file the program generated, so others could watch the moves you made to finish the puzzle.
Around that time (EVERYTHING happened "around that time") I probably sent in the first version of the toolbox that earned my place in their little history: MR. MOUSE. It was inspired by Jeff Jones' ML toolboxes but with the added bonus of being able to add mouse & joystick support nearly effortlessly into new program creations.
The program improved down the road with MR.MOUSE 2, with at least 3 versions available. Think there was a 3KB, 4KB, and a 7KB version, each having an ideal complement of commands that fit into the space. Why waste memory on a "multi-selectable disk directory menu" if you don't have to? Well, that's in the 7KB version if you need one.
At some point I ended up dealing with Jeff Jones a lot. He was LOADSTAR's ML wizard. He had ideas and I had ideas and it was neat to have two nerds on the phone discussing things. I saw him as a mentor of sorts. A lot of the little "tricks of the LOADSTAR trade" I learned from him. From the programming articles he wrote for the magazine, to analyzing bits of code from his actual toolboxes.
One of the biggest successes in dealing with Jeff was that together, we solved one of the biggest flaws with the STAR LINKER program. That program takes all the little files that a LOADSTAR program might want to load in separately, such as the character set, sprite data, and perhaps text files or ML segments, and (tries to) put them into memory where they are supposed to go while it unpacks itself, and then RUNs the BASIC program. One LOAD instead of five. Except some combinations refused to link properly. It was hit and miss.
Well, we figured it out. Arrange all the files in the order they are in memory, and attach them to the BASIC file. Then, when the program begins to unpack itself, ALL the little files get shoved snugly against the true end of memory ($FFFF) and one by one, lowest to highest, the modules are copied to where they are supposed to go. Corruption-free, every time.
So, I ended up re-writing STAR LINKER. At nearly the same time, I also wrote my own compression program, STAR PACKER. It was nothing a demo coder would want to use now (or then) but the compression was decent and the unpack time was faster than anything else going. I found packers that showed garbage all over the screen (or flickered the borders while the unpacking was going on) to be distracting and unprofessional. My program unpacked silently and quickly. When done well, you might not even realize it was packed at all.
So, although MR. MOUSE was probably the program I am best known for, TRIO 2000 is my favorite. Trio? Oh yeah, forgot to mention STAR DISSOLVER. You see, if you took a program, linked it with all its little modules, then STAR PACKED it, now you got a linked, packed, single-file dealie that in all likelihood is up and running in seconds after you hit RUN. The perfect single file to submit to LOADSTAR.
Well, that kinda sucks for users who WANT to see what the BASIC program looked like, or grab the font for their own purpose, or whatever. Just use STAR DISSOLVER and LOAD that suspect program! If it was linked or packed using my tools, it will undo those things and present to you the raw files the programmer used, and give you the ability to write them all back to disk! Steal, change, re-link, whatever. No secrets on LOADSTAR.
My most profitable program however, was probably QUICKSMITH: a reworking of the already-published SONGSMITH program. I changed the editor completely, added mouse support and more, as well as changing the format to something more compact, where every tune is now 1 file instead of 2. SONGSMITH needed a separate music AND instrument file for each tune.
But no one really used it... and there went 1997.
I probably went back to the well one last time to come up with MR. MOUSE 3, where the goal was to pack as much usefulness as possible into a single 4KB toolbox. I know it had my most-recent mouse driver code, which increased sensitivity without looking jittery. I was rather proud of it - although the true core of every iteration of mouse driver code was an idea taken from elsewhere, starting from the Programmer's Reference Manual, to sources I never bothered to document and therefore can never credit either. But the simplicity of the last version's mouse driver was elegant beauty: the best of all worlds.
Dave Moorman was working on DOTBASIC around that time. It was an extension that added a lot of functionality to BASIC, at the same time integrating a lot of the features MR. MOUSE allowed. A "super toolbox" of sorts. He was using Version 2.1 of MR. MOUSE because the screen stash/restore commands in MM3 actually became "full screen cut/paste" instead. Shared code saved space, but turned the "stash" buffer into a nightmare of screen code, color code, screen code, color code - and so on.
So, I quickly edited the original source for MR. MOUSE 2.1 and added the more sensitive mouse driver code. It was so smooth that NOT using it would be doing every program made with DOTBASIC a disservice. Dave has the only copy of MR. MOUSE 2.2 because of it. I never completely learned all the things DOTBASIC could do, and I never made a single program using it.
I feel awful about that. He worked so hard on it.
In the end, Dave Moorman ended up in control of the Tower. I am pretty sure I continued to receive LOADSTAR for free, despite not releasing much at all after the takeover. It was not for a lack of trying or desire. PREVIEW GALLERY 2002 showed a few screenshot mockups of programs that were on the back burner for years at that point, each waiting on one or more programs that I had yet to write. A font editor, a sound effects editor, and so on. I actually had most of the work done on a program to incorporate QUICKSMITH tunes with simultaneous sound effects. Never got done.
I soon moved into my own place. And while I finally had the setup I always wanted - a big computer desk and space to spread it out - I also gained new distractions. Things like a "big screen" 27-inch TV, a PlayStation 2, and internet access (!) made it harder and harder to get back to work on the little breadbox that could.
The time between each new LOADSTAR issue was getting longer and longer. At least it felt that way. Some of the joy of digging into it was gone too. I did not know why. Perhaps I felt what most of us probably felt. The end was coming near.
My excitement with finally having an outlet for my C64 creations was beat down by the sheer amount of work and time it took to get a worthwhile program done, not to mention that back-of-the-mind "masterpiece" that required several tools be written before it can even be attempted.
Eventually, the doors of the LOADSTAR Tower were locked, and everyone went home. One of my biggest regrets in life is that this is partly my fault. I never made the programs I hinted at, SHOWED even! I always believed they were GOING to happen. But when?
Around that time, a distraction worse than the internet arose: a female. Practically nothing happened for over a decade. Well, not much computer stuff at least. Eventually, she wandered off, and now the computer occupies my time once again. That little flame inside still burns. I'm the same guy I was before, but also not. It is a very strange feeling.
Today, that same yearning, that same excitement of the potential of "What can I make with this?" is no longer focused on the Commodore 64, but the Commander X16. Similar processor, more powerful hardware. Still got ideas.
I still believe I can.
Browsing one of the last issues of the computer magazines in the 90's, I came upon an advertisement for LOADSTAR. The ad (that was years old already) promised a free sample issue. Were they still around? I called them up.
On the other end of the line was Fender Tucker, although I did not know it at the time. He gave me a brief spiel about LOADSTAR and got my details. I asked about program submissions, do they pay for them, and so on. He was always interested in new stuff and offered to send some program submission guidelines for me to read. I still have them.
My sample eventually arrived, issue #132. I dug in with great interest. This was brand new C64 stuff! Other people were still using this machine! I am not the only one playing with a 15-year old computer in their bedroom!
On side 2, was a little puzzle called "Gordian Challenge". There was a box with all letters a-z in it, but also a word representing how many of that letter appeared inside the box. For example, there may be "one v" and this might be true, but as soon as there are "five" of another letter, now there are at least TWO v's - making the statement incorrect again. Your job was to find a perfect solution, or one as close as you can with as few letters in the "fudge box" (a place to add letters you "need" to make the statement true, at no penalty) as possible.
Hoo hoo! This looks like a task to brute force with machine language! Lucky me, I recently learned this skill, although I was still writing code exclusively with an ML monitor at the time. I wrote code that would randomly take a letter in question, and check its statement. If that statement was currently false, I would make it true. (The "one v" of the last paragraph would change to read "two v") and the program did a quick check to see how well it fared with that change. It was a neat puzzle in that changing one value effectively corrupted multiple others. Perhaps logically, the code was running in little loops in certain areas, waiting for the rare opportunity of alignment where the numbers would fall into place perfectly.
And eventually they did.
My program was able to find one perfect solution to the puzzle, after running at top speed for hours. The program had a nice graphical display of the current letter counts and guesses and since it was all ML, it ran through choices at an impressive speed that resembled WOPR. It did run much faster if the SHIFT LOCK key was down (skipping the visual update) so that was mostly for looks. It wasn't until much later did I realize SHIFT LOCK was effectively holding a key down for hours on end, which meant the interrupt was doing the full keyscan routine every time, wasting a lot of time that could have been better spent crunching numbers for the contest.
Anyways, I printed out my result. I also sent a disk along with the program I wrote to solve it, and perhaps a printout of the source code - or at least the disassembly - with comments in pen? Can't remember. But off it went.
Some time later, maybe it was a couple months, I received a letter in the mail from Fender Tucker. It had a printout of the results from the Gordian Challenge, which was about to appear in the next issue, plus a handwritten note.
"Lee - Your program is fantastic. Let me see some more of your creations. Your subscription will be extended by three months, but send me something I can publish and you may never need to subscribe again."
I raced upstairs to show mom the letter. I got the attention of some disk magazine editor! Wow! That means I could actually write stuff that might actually be seen by someone other than my siblings! But what could I write that they'd want to see? I only just learned machine language! I don't even have an assembler!
A short time later I did acquire an assembler: PAL. It was found one day at a local used computer shop. Turned out to be the best $15 I ever spent. The last time I used PAL? Earlier this week. Best $15 ever, remember?
I began submitting things to LOADSTAR, mostly contest entries at first, but later a "game" or two - if they could be called that. Mondo Wordo II - a tetris-y letter drop game that made use of the dictionary routine from a previous contest, and the Rainbow Challenge, which was a "align the colored tiles" efficiency puzzle. Easy to do, but who could do it the best? It was neat because to enter this contest, you actually needed to submit the save file the program generated, so others could watch the moves you made to finish the puzzle.
Around that time (EVERYTHING happened "around that time") I probably sent in the first version of the toolbox that earned my place in their little history: MR. MOUSE. It was inspired by Jeff Jones' ML toolboxes but with the added bonus of being able to add mouse & joystick support nearly effortlessly into new program creations.
The program improved down the road with MR.MOUSE 2, with at least 3 versions available. Think there was a 3KB, 4KB, and a 7KB version, each having an ideal complement of commands that fit into the space. Why waste memory on a "multi-selectable disk directory menu" if you don't have to? Well, that's in the 7KB version if you need one.
At some point I ended up dealing with Jeff Jones a lot. He was LOADSTAR's ML wizard. He had ideas and I had ideas and it was neat to have two nerds on the phone discussing things. I saw him as a mentor of sorts. A lot of the little "tricks of the LOADSTAR trade" I learned from him. From the programming articles he wrote for the magazine, to analyzing bits of code from his actual toolboxes.
One of the biggest successes in dealing with Jeff was that together, we solved one of the biggest flaws with the STAR LINKER program. That program takes all the little files that a LOADSTAR program might want to load in separately, such as the character set, sprite data, and perhaps text files or ML segments, and (tries to) put them into memory where they are supposed to go while it unpacks itself, and then RUNs the BASIC program. One LOAD instead of five. Except some combinations refused to link properly. It was hit and miss.
Well, we figured it out. Arrange all the files in the order they are in memory, and attach them to the BASIC file. Then, when the program begins to unpack itself, ALL the little files get shoved snugly against the true end of memory ($FFFF) and one by one, lowest to highest, the modules are copied to where they are supposed to go. Corruption-free, every time.
So, I ended up re-writing STAR LINKER. At nearly the same time, I also wrote my own compression program, STAR PACKER. It was nothing a demo coder would want to use now (or then) but the compression was decent and the unpack time was faster than anything else going. I found packers that showed garbage all over the screen (or flickered the borders while the unpacking was going on) to be distracting and unprofessional. My program unpacked silently and quickly. When done well, you might not even realize it was packed at all.
So, although MR. MOUSE was probably the program I am best known for, TRIO 2000 is my favorite. Trio? Oh yeah, forgot to mention STAR DISSOLVER. You see, if you took a program, linked it with all its little modules, then STAR PACKED it, now you got a linked, packed, single-file dealie that in all likelihood is up and running in seconds after you hit RUN. The perfect single file to submit to LOADSTAR.
Well, that kinda sucks for users who WANT to see what the BASIC program looked like, or grab the font for their own purpose, or whatever. Just use STAR DISSOLVER and LOAD that suspect program! If it was linked or packed using my tools, it will undo those things and present to you the raw files the programmer used, and give you the ability to write them all back to disk! Steal, change, re-link, whatever. No secrets on LOADSTAR.
My most profitable program however, was probably QUICKSMITH: a reworking of the already-published SONGSMITH program. I changed the editor completely, added mouse support and more, as well as changing the format to something more compact, where every tune is now 1 file instead of 2. SONGSMITH needed a separate music AND instrument file for each tune.
But no one really used it... and there went 1997.
I probably went back to the well one last time to come up with MR. MOUSE 3, where the goal was to pack as much usefulness as possible into a single 4KB toolbox. I know it had my most-recent mouse driver code, which increased sensitivity without looking jittery. I was rather proud of it - although the true core of every iteration of mouse driver code was an idea taken from elsewhere, starting from the Programmer's Reference Manual, to sources I never bothered to document and therefore can never credit either. But the simplicity of the last version's mouse driver was elegant beauty: the best of all worlds.
Dave Moorman was working on DOTBASIC around that time. It was an extension that added a lot of functionality to BASIC, at the same time integrating a lot of the features MR. MOUSE allowed. A "super toolbox" of sorts. He was using Version 2.1 of MR. MOUSE because the screen stash/restore commands in MM3 actually became "full screen cut/paste" instead. Shared code saved space, but turned the "stash" buffer into a nightmare of screen code, color code, screen code, color code - and so on.
So, I quickly edited the original source for MR. MOUSE 2.1 and added the more sensitive mouse driver code. It was so smooth that NOT using it would be doing every program made with DOTBASIC a disservice. Dave has the only copy of MR. MOUSE 2.2 because of it. I never completely learned all the things DOTBASIC could do, and I never made a single program using it.
I feel awful about that. He worked so hard on it.
In the end, Dave Moorman ended up in control of the Tower. I am pretty sure I continued to receive LOADSTAR for free, despite not releasing much at all after the takeover. It was not for a lack of trying or desire. PREVIEW GALLERY 2002 showed a few screenshot mockups of programs that were on the back burner for years at that point, each waiting on one or more programs that I had yet to write. A font editor, a sound effects editor, and so on. I actually had most of the work done on a program to incorporate QUICKSMITH tunes with simultaneous sound effects. Never got done.
I soon moved into my own place. And while I finally had the setup I always wanted - a big computer desk and space to spread it out - I also gained new distractions. Things like a "big screen" 27-inch TV, a PlayStation 2, and internet access (!) made it harder and harder to get back to work on the little breadbox that could.
The time between each new LOADSTAR issue was getting longer and longer. At least it felt that way. Some of the joy of digging into it was gone too. I did not know why. Perhaps I felt what most of us probably felt. The end was coming near.
My excitement with finally having an outlet for my C64 creations was beat down by the sheer amount of work and time it took to get a worthwhile program done, not to mention that back-of-the-mind "masterpiece" that required several tools be written before it can even be attempted.
Eventually, the doors of the LOADSTAR Tower were locked, and everyone went home. One of my biggest regrets in life is that this is partly my fault. I never made the programs I hinted at, SHOWED even! I always believed they were GOING to happen. But when?
Around that time, a distraction worse than the internet arose: a female. Practically nothing happened for over a decade. Well, not much computer stuff at least. Eventually, she wandered off, and now the computer occupies my time once again. That little flame inside still burns. I'm the same guy I was before, but also not. It is a very strange feeling.
Today, that same yearning, that same excitement of the potential of "What can I make with this?" is no longer focused on the Commodore 64, but the Commander X16. Similar processor, more powerful hardware. Still got ideas.
I still believe I can.