It's been an interesting past couple of months.
Mitzi and I, along with her daughters and their guys, visited Colorado in September. We spent about eight days exploring the state and enjoying one another's company. I'll post an album to SmugMug eventually, once I get my act together.
I liked Colorado very much, though I didn't really care for the dry air. It was very tough on my nose and sinuses. I suppose you adapt at some point, but a week isn't enough time to do it. I also think they have it just about right regarding the legalization of marijuana. I can't help but think that the current situation is little more than the modern prohibition era, which does little to control the consumption of the product, but does much to capitalize organized crime and burden our criminal justice system.
We stayed at an AirBnB in the Highlands area of Denver. It was a beautiful little community with walkable streets and some wonderful restaurants and shops. Not that we stayed there very much during the day. We went somewhere nearly every day.
Had a great time, hope to do it again some day.
This month had its own unwelcome excitement in the arrival of Hurricane Matthew. For only the second time in the thirty years I've lived here, the beaches were ordered to evacuate; and I spent a couple of nights away from my home, wondering if I was going to have a home to return to.
We were very fortunate that the storm remained as far offshore as it did. Not quite far enough, but had it been ten or twenty miles closer to the beach, the more destructive winds and greater storm surge would have caused far more damage. As it was, I stayed at Mitzi's house and she never lost power or water. Belleza, my condominium community, suffered a few trees down, and the wooden fence around the property is down nearly everywhere, but apart from that and many scattered leaves and small limbs, there was no sign there'd even been a hurricane.
Some of the nearby communities couldn't say the same. The storm surge overtopped the dunes in some areas, essentially erasing the dune line, and flooded much of south Jacksonville Beach, as well as areas south of us at Vilano Beach and St. Augustine. Some folks have lost their homes. I wonder if this storm will mark the official beginning of the retreat from the coast in Florida, if lots are essentially condemned and purchased by the federal government to preclude rebuilding on them. We'll need to do it sooner or later. The Starks may say, "Winter is coming," but I'll tell you, "The ocean is coming," and that's no fantasy.
Apple iPhone 7
In other news, I upgraded to the iPhone 7 this week. I had the iPhone 6s Plus, and it was just too big a handset. Too small to be a tablet, and too large to be comfortable to hold with one hand. The large size didn't make it significantly easier to read, either. The damn thing had that flakey touch-screen too, and I couldn't keep a Lightning cable plugged into it to charge half the time.
I got the plain old matte black model, with 128 GB of memory. I like the size and the fact that it's waterproof. Everything else about it is pretty much the same. The fixed "haptic-engine" home button is kind of annoying. Mostly I like that it fits better in my pocket, and I can put it in my running belt without having to remove the case and jam it in there.
My tech obsession with modern Apple and its current products is definitely and completely over. There's little "special" about Apple anymore. They're simply the latest incarnation of the 600-lb gorilla. First there was IBM, then there was Microsoft, now there's Apple. Eventually it'll be either Google or Amazon. Apple today is just another Microsoft, and there's little that's going on there that's exciting, or even very good. Siri is a joke. Photos is a cruel trick. I actually stuck up for Apple Maps in Colorado, using it to navigate whenever it was my turn, as none of my traveling companions trusted it. I was rewarded for my loyalty by a total mapping clusterfuck on our last day, as Siri tried to get us to "take an immediate right" from an interstate at 70mph.
The sole remaining appeal of Apple and its products is that it's not Google, and the hardware generally remains well constructed, my iPhone 6s Plus experience being an exception. The software, however, is just a long slow slide into bloated failure, just like Microsoft.
But, on a cheerier note, my tech obsession for "old" Apple has grown, much to the detriment of my credit card balance. I now own two Apple //e computers. (The second one has the original painted case that my 1983 Apple //e had. It matters.) I've got two working Disk ][ drives, along with a modern day SD card reader that interfaces to a Disk ][ controller card. I've got a little 8-inch color LCD screen for games and color graphics, and the 13-inch green screen Monitor ][ for text and hi-res (monochrome) graphics.
Back in the day, I was a commissioned officer on active duty, later a husband and a father, and I didn't have as much time to devote to my hobby as I would have preferred. My ex-wife would probably disagree and say I spent too much time on it. But I was fascinated by the computer and had an extensive library of technical documentation. I'm in the process of reconstructing some portion of that library today.
We didn't have Amazon back then, all we had were Waldenbooks and Barnes and Noble. What's fascinating today is Amazon's capacity for searching within the contents of the books themselves, such that there are many (old) titles with significant Apple II-related content that may not be suggested by the title alone, and I've bought a couple of those. One deals with automated controls, the other with biological simulations.
"But what are you going to do with it?!"
Whatever I want.
Well, up to a point. It's far more clear today what the limitations are to an 8-bit processor that can access only 64K of RAM without performing some elaborate tricks. And the graphics are laughably, well, maybe "charmingly" primitive.
But all of that makes for a device that is far more accessible, far easier to grasp and understand (Well, except for Woz's memory-mapped video scheme. Brilliant, but not exactly straightforward.)
When my son was taking a little game development programming course, he had to write a little game in a language called Perlenspiel, which is a very constrained environment as well. The constraints are intended to make the language easily grasped, so you can focus on what you want to use it to do. I enjoyed helping him work on some of those projects and tried to get back into a little casual programming using X-Code and Lua, but nothing really stuck. I may return to Lua.
But way back when, I'd laboriously type in Basic listings from Apple magazines like Nibble. Some of those programs were rather sophisticated, and by typing them in and studying the listing (and doing the inevitable debugging), you would get an idea of how the program worked and the choices the programmer made to solve certain problems or overcome certain challenges.
It was fun!
The Apple has Applesoft Basic built right in the box. There's no "integrated development environment" to install, no libraries to be updated. You don't have to "compile" your "source." It doesn't know what white space is, let alone care about it! It's an abstraction from machine language, to be sure, but it's far less of an abstraction than today's programming languages!
While typing those listings in was fun, and I was a reasonable touch-typist, there were inevitably errors; and the Apple has little in the way of built-in editing. It does have some facility, but it's very primitive.
Beagle Bros. was a software publisher that produced all these wonderful utility programs. And their manuals were filled with old-timey illustrations, and puns, and silly little two-line programs that asked you "Why does this do this?" Plus they had lots of hints and tips, and the famous Peeks and Pokes chart. Well, one of their apps was one that had been published before by Synergistic Software I think, but eventually made its way to Beagle and that was Neil Konzen's Global Program Line Editor (GPLE). I used that program to type in listings from Nibble and other magazines. (Beagle went on to publish Program Writer, by Alan Bird, which was a much more sophisticated screen editor, versus a line editor. I used that as well, but I wanted to experience the days of "control-character" mnemonics! (Control-E prompts "Edit" and you enter the line number you wish to edit! Awesome!))
They also published a utility called Double-Take that allowed two-way scrolling(!) of program listings, and included a number of useful little programming utilities, the part that I was most interested in was the variable cross-reference utility and the Applesoft pretty-lister. (A pretty-lister reformats the program listing such that each command is on a separate line. While Basic relies on line numbers, a line may contain many program statements separated by a colon.)
What Are You Going to Do With It? Apple Trek!
So, it's the fiftieth anniversary of the debut of the television series that went on to become a cultural icon, Star Trek. Star Trek was an early Basic game on nearly every computer everywhere, timeshared systems and "personal" computers. William Sander, the designer of the Apple ///, wrote Apple Trek in 1977 for the Apple II in Integer Basic. Integer Basic is the first Basic language that shipped with an Apple II, and like the II itself, was created by Steve Wozniak. As its name implies, Integer Basic had no floating-point arithmetic routines built-in. Apple later licensed a modified version of Microsoft Basic and called it Applesoft, that did have floating-point arithmetic, and that's what is in most of the extent Apple II computers "straight out of the box."
Well, I want to play Star Trek, and I can. There's an iOS app called Retro Trek that you can buy from the App Store and play the old version of Star Trek on your 21st century hand-held supercomputer! But I want to play it on my Apple IIe. And I can do that too, right now.
But I want to do a little more. I want to modify Apple Trek, add some bells and whistles if you will. So that's my current little "what are you going to do with it?!" project.
I found a copy of Apple Trek online. I used a little trick I found in one of the books I bought, The Beagle Bros Big Tip Book for the Apple II Series. Basically (heh, get it?), you add a couple lines to the program to list itself to a text file, then switch to Applesoft with the FP ("floating point") command and use the DOS EXEC function to type itself into memory as an Applesoft program. It won't run, because the syntax differs in a few significant ways, but it's there in memory. Now all you have to do is make all the changes!
Which is, of course, easier said than done.
So before I got started with Apple Trek, I made a little "development environment" of my own, using Beagle Bros utilities. First up, I got ProntoDos, a DOS 3.3 modifier that speeds up some routines, adds a TYPE command for text files, and moves DOS up in memory into the Language Card, which allows more memory for Applesoft programs. (The Language Card was a 16K RAM card that went into slot 0. It allowed you to load whatever version of Basic wasn't built into your machine, though it was originally developed to allow Pascal to run on an Apple II. The //e has 64K of RAM on the motherboard, and omits slot 0, but that region of RAM is usually referred to as the Language Card anyway.) Then I had to search for the last versions of GPLE and Double-Take to ensure they were compatible with one another. GPLE will reside happily with ProntoDos up in the Language Card, which is good because the full Double-Take install takes 8K of RAM.
I did all this using an emulator, Virtual ][, working on disk images of the applications involved. I wrote a little set-up routine that is required when using GPLE, to get it up into the Language Card and then auto-run another "Hello" program which is what installs Double-Take. I call the little environment "ABIDE" (Applesoft-Beagle Imagination Development Environment.)
When ABIDE was up and running, I had Double-Take do a pretty-list of the Applesoft listing of Apple Trek. There's a virtual printer connected to Virtual ][ that creates a PDF of whatever printout you're making. So a quick "PR#1" followed by CTRL-F, ("Function") - 1 (List), and I get a nice PDF of the listing with all statements on individual lines.
The same Big Tip Book has a nice little section on the differences between Integer Basic and Applesoft. Integer has a MOD function, Applesoft doesn't. On my 27" Thunderbolt display, I have the PDF listing open in Preview on the left, and Virtual ]['s window open on the right. I search for the MOD string in Preview, and then edit each of the lines with GPLE to insert the correct Applesoft statements.
All variables in Applesoft are floating point unless declared as integers by a "%", or strings ($). Floating point variables use more memory than integer, and Apple Trek didn't use any floating point arithmetic at all, so I figured I'd just make all the non-string variables integer variables.
I had Double-Take give me a list of all the variables in the program and where they appeared, then I used GPLE's search and replace function to go through and change them all.
Integer Basic can use "#" to denote "not equal," which is one less character (and byte) than "<>", which it can also use. But Applesoft must use "<>", so again, search and replace.
Integer Basic has a different GOSUB implementation that must be replaced by "ON...GOSUB" in Applesoft. That's where I'm at right now, trying to figure out how that worked, so I can write the correct expression to be evaluated for "ON...GOSUB." Kind of fun. Had to track down the Integer Basic reference manual, found a PDF online. There's one on E-Bay, may try to snag it.
So, anyway, that's all pretty boring I'm sure; but I'm having a lot of fun doing it. One of the advantages of doing this in the emulator is the emulator can run faster than the real hardware. GPLE is kind of pokey when it's searching through a long listing. Setting Virtual ]['s speed dial to "3" makes it pretty much instantaneous.
Beagle has some other utilities I may add to ABIDE. D-Code is an Applesoft debugger. Once I finish going through all the Integer translations, I intend to run the program through D-Code, just to see what it comes up with before I run it. I'm hoping to actually have it work the first time I type "Run"!
Then I'll transfer the disk image to a micro-SD card, insert that in my FloppyEmu, and run the program on my real //e! Eventually I transfer the program to a real 5.25" floppy.
There's also Beagle Compiler, which will compile an Applesoft program into a meta-language that runs faster than interpreted Applesoft. May or may not try that.
Once it's up and running, my first goal is to add some sound effects. Right now all the program does is issue some "control-G" (bell) commands, which just makes the computer beep. We can do better.
There's a retro-computing challenge in October, and you were supposed to sign up in September. I thought about signing up, but couldn't think of anything to pose as a "challenge." This sort of just evolved since then. I may write it up anyway, assuming I can get everything to work.
If you don't hear from me again for a while, I'm probably head-down in Applesoft listings, or fighting Klingons in some far-off sector of the galaxy.