Retro Computer Day was a Success! Mostly
Saturday morning I woke up early excited about my planned experiment. I took care of all the online stuff I needed to and rushed to prepare a boot disk for the Apple II Plus as an intro for Retro Computer Day. A couple of pictures, a little bit of image conversion on "the timeshare", and a quick transfer of files to floppy using an Apple IIe with an AppleTalk link. I then went around and turned off all the Macs and I was just barely ready at 8am.
To try to keep myself from spending the day sitting in a text terminal trying to crudely do "Internet things" I had planned several activities around the II+ doing things I had wanted to tinker with but just hadn't yet. I had a Z80 card for trying to get CP/M installed on the SASI drive. A 64k Legend Industries RAM card was ready to be installed to see if any software would recognize more than the 64k a II+ usually has. An Echo II speech synthesizer was another option with a Mockingboard with another speech chip on standby.
Most of the hardware was something you'd find around the 1985 timeframe. The Apple II Plus I chose to use for Retro Computer Day was itself made in 1984, making it quite appropriate. Upgrades to the II+ included burning my own lowercase ROM to match the lowercase style of the Apple IIe and IIc, a one-wire shift-key mod so that software can detect shift key presses, a clone 16k Language Card with a socket for an auto-start ROM with my three-finger-salute ROM, a Super Serial Card connected to a 1200 baud Atari modem, two original Disk II floppy drives, a Videx 80 column card, and a Xebec Sider SASI card with a scsi2sd acting as a 20 megabyte Sider hard drive.
After a quick call into Level 29 to check if there were any new messages I was inspired to tinker with the Echo II. I found the manuals and software that came with the Echo II we had in our II+ and had it talking right away. But just making it say things using the Cylon demo program wasn't enough. I wanted to make it talk through my communications program while dialed into a BBS, à la WarGames! I browsed through the manual expecting to find information on how to link the speech software with other applications and was surprised to find nothing at all. This seemed a little strange, what exactly were people supposed to use the Echo II for if it couldn't be easily used in other applications? As a kid though I don't think the Echo II was ever more than a novelty that I would fire up briefly just to make it say a couple of things, then reboot the computer to do something else.
Since I'm using a Super Serial Card in the II+ my thought was to try to use the simple built-in terminal mode of the SSC. Unfortunately when terminal mode was active it seemed to bypass the Echo II software, most likely because it was printing directly to the screen instead of calling the hooks the Echo II had put in place. Determined to find a way to dial in to the BBS and have it speak to me I thought I could cobble together some crude little BASIC program. This is where going retro became a problem.
I've gotten very used to having all the information of the world right at my fingertips and only a quick search away. Such powers aren't entirely new, I've been able to do it since 1989 when I got my first taste of Digital Librarian on NeXT computers with all of the NeXT system administration, developer documentation, and man pages searchable in one place. Today things have progressed to the point where knowledge not stored on your computer is also just as easily accessed without having to leave your chair.
Anticipating that I might need physical documentation I had at least printed out a Beagle Bros. Peeks, Pokes, & Pointers chart (I used to have about a dozen of these but somehow they have all disappeared). The chart was as usual extremely handy but wasn't going to provide information on how to check if a character was ready to be read under DOS. The Beagle chart also didn't have any information on the Super Serial Card dip switches and registers. I dialed into the corporate timeshare where I keep copies of scanned manuals (aka my Linux server) hoping that maybe there was a way to extract the text from a PDF and then grep it and also hoping that someone had actually bothered to run OCR on the PDF and that text wasn't so full of mistakes as to be unsearchable. Unfortunately though trying to get information out of a scanned PDF without a GUI proved to be far too difficult.
For a moment I considered trying to make something that could extract each page of the PDF and convert it to the Apple II hi-res graphics but I knew that would be at least a week long project in and of itself and I wanted to stay focused on the speech over dialup project. I ended up resorting to using my phone to search for plain text documentation on the SSC registers, avoiding links to PDFs because as modern as an iPhone is, PDFs are still difficult to deal with.
With a table describing the SSC registers and status bits in hand, it seemed like slapping together a simple BASIC program would be quite easy. The program itself was less than 10 lines long but could not keep up with even the response codes from the modem at 1200 baud. Dropping to 300 baud was better but it still dropped characters. I tried everything I could think of to optimize the program but blamed the speed problems on the lack of bitwise operators in Applesoft BASIC and all the conversions between floating point and integers required to see if a bit was set in the middle of a byte. It was suggested that I try Woz's original Integer BASIC instead and since my boot drive seemed to be loading Integer BASIC into the Language Card I set about quickly hand recoding the Applesoft into Integer BASIC. When I got to the line for printing the characters received from the modem I was completely stumped trying to figure out what to use for CHR$() which is missing from Integer BASIC. Yesterbits offered up a small machine language routine to be poked in that would print an ASCII value directly on the screen. Somehow even that proved too slow!
Not willing to surrender, not wanting to put the effort in to learn Lazer's Interactive Symbolic Assembler which I had both on disk and a manual for, and lacking the mini-assembler that was in the original Apple II, a call was made to the timeshare where I could use its powerful editor and cross assembler. A small assembly program was carefully crafted which would handle both checking the keyboard for input and checking the SSC for new data and take care of shuffling bytes back and forth where they needed to go. At last I had something fast enough to gather nearly a full line of text and speak it! Good enough and I shall add trying to support speech synthesizers to my ToDo list for when I finally get around to writing a fully fledged Apple II communications program.
This small achievement had taken nearly all day so I took a break for dinner. After dinner I wanted to see if I could get CP/M installed on the hard drive so the genuine Microsoft Z80 card was installed and I rummaged through several disks that had come with an Apple IIe that I found at a yard sale to see if I had any bootable CP/M disks. One with WordStar on it booted up but when I consulted the Sider hard drive installation manual I discovered that I didn't have the Sider CP/M installation disk on floppy already. It might have been possible to download it and somehow write it to a disk but I had only 15 minutes remaining until my original planned end time of 8pm so I decided to call it a day and go watch a movie.
Mostly a Success. Mostly.
The choice of using the Apple II Plus in this experiment was definitely fueled by an Apple II Plus being my very first computer. While I don't have that exact same machine anymore, I do still have all of the manuals and software that went with it which fill several shelves. Trying to do a Retro Computer Day with a system that wasn't my daily driver once upon a time would probably be more difficult. Even with as many manuals as I still have, afterward I had to go check eBay to see about getting some real manuals for some stuff that I've been using scanned manuals for, such as the Super Serial Card and perhaps an Integer BASIC manual.
One of things that was most difficult for me was often I felt like I need a faster interface. I kept wanting to go into my office and use the "big computer" where typing in things was easier and more comfortable. Often when I'm doing retro development I'll do all my editing in a text file on a modern machine and then transfer the text file over to the retro computer. It's much easier than using the crude editors on those old machines.
Another thing I didn't mess with was graphics! Having graphics was important on my list of requirements but at least this time around I didn't even try to display any pictures. I even had the ThunderScan and ImageWriter II setup on the desk next to the II+ so that I could try scanning in photos and possibly trying to upload the raw images and tweet them out. ChartreuseK even put together a program to convert the raw ThunderScan images to PNG for me.
The iPhone I used during the event was not my current phone but instead a four year old iPhone 6+. I had considered using my iPhone 3G which I still use as an mp3 player when I walk the dog, but Twitter crashes on it, the camera quality is terrible, and it can't even shoot video. I did my best to use the iPhone only for taking photos, shooting video, and Twitter, but a few times I really needed to use Google. I did not use the iPhone for reading my email, I stuck to using /usr/bin/mail on my server for that.
When choosing a movie after my Retro Computer Day I wanted to try to find something from around the same era and a little bit nerdy to go along with the rest of the day. Spies Like Us came up in a search and seemed perfect and I was quite delighted when an Apple II appeared on the screen! Anyone want to try identifying all the cards that are installed?
The day was capped off by winning an auction that I had been watching for the last few weeks for yet another Apple II Plus. Why was I interested in it? Because the II+ in the auction was bundled with a couple of books that I had never seen before!