Apple IIc Plus – Bootstrap

Posted: 28th October 2014 by Quinn Dunki in Hacks

We need eggs, but the chickens all died in 1992.

 

Last time, I gave my IIc Plus a little checkup, then proceeded to try booting it. Everything seemed to go well, but that was based entirely on a red light and an audible bonk. We need to see some video output!

I have a plan cooking to solve the video output problem, but as a stop-gap measure, I found this thing on the junk pile:

 

..

“XLR8”. Get it?

 

That’s an InterView USB video scanner that works with S-Video and Composite. In theory, it allows you to see composite signals in a window on your modern computer. In reality, they stopped updating the driver several years ago, so it’s a door-stop. Such is the world we live in. The newest drivers available on their website no longer work on current versions of OS X or Windows, so I’m a bit stuck. Or am I?  They still make a newer product called the XtraView, which uses software called ProView. It stands to reason that it has mostly the same hardware in it as the older InterView product, so maybe the newer software will recognize it. It doesn’t have to work perfectly- anything approximating a visible video signal would solve my problem here. The software is a free download, so it’s worth a try.

Well, amazingly, it works! Sort of. The picture is rubbish, and riddled with artifacts, but you can see what’s going on for the most part. It’s unclear how much of the issues are due to it not being the correct driver, and how much is just the limits of the product. It’s worth noting here that the Apple II doesn’t exactly produce an NTSC signal. It’s more like… “NTSC-ish”. Woz found he could save some chips by faking color. The signal is monochrome, but by changing the pixels faster than expected for a monochrome signal, it gets interpreted as having a chroma subcarrier, and shown as color. This is known as “artifact color”. It was a hack that worked okay at the time, but modern displays are fussier about signals being in-spec, so not all of the quality issues here may be the InterView’s fault. There’s a lot of conversion going on here between the Apple II and my USB port, so we have to expect rough edges. Anyways, it solves my immediate problem, so hooray for the junk pile.

 

 

Please excuse the nasty fan noise and the video artifacts. Ironically, all that is coming from the modern equipment doing the recording, not the IIc Plus.

The first thing to notice is the error message when it can’t find a floppy in the drive. “Unable to find a bootable disk online”. The wording is odd and reads like something written by the marketing department. The word “online” here was rather incorrectly used even in 1988. Add it to the list of quirks in an already quirky machine.

The second thing to notice is that, from power on, in 3.5 seconds flat, the machine is sitting at an interactive prompt where you can write code. This really shows the difference between retrocomputers and modern computers. These old machines begged you to program them. It was hard not to be in state where you could program them. A modern machine takes several minutes and many gigabytes of software to reach a comparable state, and even then it requires hours of reading documentation and most of a computer science degree to know what to do from there. Retrocomputers were so approachable that a six-year-old child could turn it on and write code with no help. I’ll give you one guess how I know that to be true. I think this level of approachability today has been lost in the machines themselves, but I suppose it still exists in some environments, such as the web. Things like Scratch and the Lego programming environment are decent substitutes, but they still require adult supervision and a lot of infrastructure to get going. So, to summarize, get off my lawn.

 

Well, now what? There’s a noticeable lack of being able to do anything besides write code. The reason being, there’s no operating system to boot. This is a problem, and here’s where we arrive at the central challenge for this article. Let’s say you’ve bought a retrocomputer from eBay, craigslist, etc. Most likely, it didn’t come with any floppies. Perhaps you have a blank floppy or two, but those are no good by themselves. How do you boot the machine into real software? Like a modern computer, we need an operating system. To get an operating system, we need to format a floppy disk and make it bootable. To do that, we need an operating system. You see the dilemma we’re in.

This is a distinctly modern problem. Back in the day, the machine would have, of course, come with many bootable disks, any number of which could be used to create subsequent bootable disks. The machines have largely outlived their original software, however, so we’re in a classic chicken-and-egg quandary. Luckily, we can break the cycle by going deeper. What do we really need here? We need the ability to create a bootable disk. That really means we need code in the RAM of the machine capable of doing so. There are ways to get that code into RAM without booting an OS from a floppy.

One common way is using the cassette port. Lots of early retrocomputers had cassette ports, because it was an inexpensive form of persistent storage, and a cassette interface is a very easy thing to build into a computer (it’s literally a single I/O pin). The nice thing about a cassette port is that it relies on a lowest-common-denominator file format that still exists- audio. Cassette ports are the original mass storage for home computers, and you can boot software and save/load data with them. Very, very, very slowly. This is something of a last resort. It’s also possible to boot games through this port with modern tools like Apple Game Server. This works because the Apple II has support in ROM for loading from the cassette port with no operating system in memory. Not so for the floppy drives. In any case, Apple did not see fit to include a cassette port on the IIc Plus, and nobody blames them.

Luckily, there’s a better way- Apple Disk Transfer Pro. This is a fantastic piece of free software that no Apple II user should be without. In addition to using the cassette port if needed, ADTPro can get code into the RAM on your machine via serial port. It takes advantage of a feature of the Apple firmware whereby it can take standard input from the serial port (or any expansion card that conforms to certain rules). ADTPro sends input commands to put the machine into the ROM Monitor mode, then proceeds to type its own client code into memory via standard input, after which it runs itself. The author has effectively created a way to netboot an Apple II, and it is simply marvelous to watch.

However, that means we need a serial connection from our modern laptop to the Apple II. Even that is a lot to ask these days, because computers don’t even have RS232 serial ports anymore! These days we have USB, which is a complex and demanding set of standards and protocols that an 8-bit Apple II would have no hope of talking to without assistance. Luckily, there are USB-to-Serial converters. If you’ve played with Arduinos or Raspberry Pis or similar toys, there’s a good chance you already have one these, in fact. Of course, they require a driver, which is always unsettling, because it means at some arbitrary point in the future, it will stop working. For the moment, though, it solves our problem.

So, we need two cables to start with- a USB-RS232 converter, and then something to convert to the IIc Plus’ MiniDIN-8 serial port.

 

..

These cost less than a fancy cup of coffee, including tax and shipping.

 

Being the hacking-inclined sort of person that I am, I fully intended to get my hands dirty and build a cable for this. Well, thanks to globalization, these things are so insanely, ridiculously, mind-bogglingly cheap that I just couldn’t justify the time and effort. Buying the two cables you see above cost less than getting the connectors alone would have cost me in order to build my own cable. What a strange world we live in.

At the very least, I intended to combine those two cables into one with some hackery. Unfortunately, the critical part (the FTDI chip that converts USB to RS232) is inside the male DB-9 connector. That means I have to keep the “middle” part of the two cables, so no combining is really possible. I’m doubtful I could extract the circuit from inside that connector without destroying it, so I’m stuck with a boring, unhacked pair of off-the-shelf cables. Boo.

 

..

Here’s a typical bootstrapping setup. The Apple IIc is piping the video back to my laptop through the InterView.

 

IMG_4729

Around the back, it’s very simple. Power, video, and serial. Yes, I know Monster cables are pseudoscientific gullible audiophile nonsense, but it’s been on the junk pile for 20 years. I was very stupid about some things when I young. Now I’m old, and stupid about different things.

 

Once connected, ADTPro can work its magic. Rather than reproduce a video of the process, I’ll include David Schmidt’s nicely produced one. He’s the author of ADTPro, and I could not demo it better than he does.

 

 

Once the ADTPro client has teleported itself into RAM, it can then write itself to a blank floppy. This leaves us with a bootable client version of the ADTPro software in the drive. With that, we can now transfer other disk images from our modern computer to the Apple II and save them out as real floppies. In this way, we can build up a library of usable disks that make the machine as useful on its own as it once was!

So, once we have a bootable ADTPro client, we can use it to transfer a copy of the Apple IIc Plus System Utilities. This is a disk that would have come with the machine, and allows you to do basic housekeeping tasks of the sort we have an urgent need to do. Transferring it takes a little while, because it’s 800k (one of the downsides to the large 3.5″ format in the IIc Plus). So, you’ll spend some time looking at this…

 

 

Now that we can boot the system utilities, we have the ability to make new bootable ProDOS disks, create and save our own programs, and so on. Yay!

 

 

Unfortunately, this video reveals that we’ve hit a wall on usability for this setup. The 80-column text mode (which is the most useful) is a bit too much for this XLR8 video scanner to handle. This was a common problem back in the 1980s as well, since a lot of people used a television as their computer monitor. Televisions of the period weren’t good enough to show 80-column text either. So, time to say goodbye to the USB digitizer and solve our display problem once and for all. More on that later.

 

Oh, and for all you regular IIc owners who are scoffing at the IIc Plus, let me ask you- can your Apple IIc do this?

 

 

Didn’t think so.  *drops mic*

 

  1. Derek Lewis says:

    “Of course, they require a driver, which is always unsettling, because it means at some arbitrary point in the future, it will stop working.”

    So painfully true. Had you written that yet when the FTDI driver debacle happened?

    • Quinn Dunki says:

      I’m glad you brought that up- I did write this before all that, so I didn’t get a chance to comment on it. Sounds like they sorted it out, but for those readers who don’t know, here’s the TL;DR:

      FTDI recently decided to go after “counterfeit” USB/Serial converter chips by punishing consumers who unknowingly bought them. They pushed a driver out through Windows Update that bricked counterfeit devices by setting the USB id to zero in the USB client chip. They were able to detect “counterfeit” devices, because they use a different architecture than the native FTDI chips. In fact, this alternate architecture was a legally reverse-engineered clone of FTDI’s chip, and in any case users had no way of knowing which chip was in devices they were buying.

      They’ve backed off on it now and reverted the aggressively anti-consumer driver, but it was a dick move, to be sure.

  2. exar says:

    Hey, nice write-up. I am a huge fan of the old Apple II devices, since I grabbed two complete IIe Machines from the scrap at my former school, Dualdisk and everything(including a huge box with about 500 floppy disks, manuals and books about CS and programming, in big parts originally sealed) just waiting for the Garbage Truck.

    As for your video “Problem” I can recommend old Commodore Screens, especially from the later Amigas. I got mine fairly cheap, and it has a “stunning” image quality, well for an old 80s/90s color CRT at least.

  3. Jac Goudsmit says:

    “When I was a lad”, “online” simply meant that something was connected and ready to go. My Epson dot matrix printers had an “online” button and LED to temporary hold the printing (e.g. to change fanfold paper). When everyone started using networks and the Internet, everyone started using “online” to imply that something was connected to a network, which of course a floppy (or floppy drive) never is. In my grown-up-in-the-70s/80s ears, “no floppy online” sounded totally okay but I guess the meaning of the word has changed. Go figure 🙂

    As for drivers that stop working… they only stop working if you insist on going to that new-fangled Windows, now with Bigger Buttons (TM), and with menus in upper case and monochrome icons everywhere because that’s So Much Better 🙂 I keep an old 1998 Dell laptop around with 128MB memory running Windows 98 so I can use it with my DCC (Digital Compact Cassette) recorder that connects to the parallel port, and automatically makes mix-tapes in glorious MPEG layer 1 from the 4GB hard disk. Works great, except the recorder needs a new belt.

    Developers getting lazier about designing hardware and updating software is one of the reasons why I keep old computers around. My 1980 Commodore CBM4032 boots faster than the CRT can warm up. It doesn’t even really “boot” from floppy disk; the closest you can get to that is to hit shift+RUNSTOP which is basically just a built-in shortcut for DLOAD”*”:RUN — those commands load the first BASIC program it can find on the first floppy disk (erasing whatever happens to be in memory) and then run it. Good times!

    ===Jac

    • Quinn Dunki says:

      Well, at the risk of getting pedantic, “online” has always meant a state of connection to a remote device. I also grew up in the ’70s and ’80s and also remember the use in printers. Printers are a bit of an exception because they have their roots in teletypes, which were network devices. Printers are also “remote” peripherals in a sense, since they are at the end of a serial or parallel connection to a host. Using “online” to indicate a floppy disk in a drive is silly no matter what time period you’re in. 🙂

  4. starhawk says:

    Who is Mike and why did you drop him?

    😉

    …sorry, it’s a pet peeve of mine… my mother was a librarian at some point. I blame it on her 😛

    • Quinn Dunki says:

      Hah! Well met, squire! That’s a mistake I’ve been making for years. I fixed it. 🙂

      • Mike Whalen says:

        Hmmm… maybe you meant to say “Mike” and Open Apple will experience some kind of big change soon.

      • starhawk says:

        By the way, you are not alone in lamenting the stupidifying of the computer interface. People these days need to be taught that they’re smart, because everyone and everything around them seems to have convinced them otherwise. It’s ridiculous — and sad.

  5. datajerk says:

    “Very, very, very slowly.” Really? The average load time for a game is 20 seconds due to compression and higher frequencies. The time to make a boot disk using diskserver is 150-180 seconds. Yes, not as fast as ADT via serial port (iff you already have the ADT disk, forget it, if you have to bootstrap). I’d say the average time to make a disk with ADT is 60 seconds if you have the boot disk handy, your serial cable handy, ADT/Java installed on your workstation, etc… Maybe 30 seconds if you type fast. If you define “slowly” as 2x, then that’d be 60 seconds. I’ll assume each “very” is a 2x factor as well. Then that’d be 480 seconds. And that’s assuming the 30 second ADT result with all ADT prereqs met. I’ll give you at best “very slowly” if your an ADT pro and in a really hurry to boot that disk, and just “a bit slower” if you are not.

    • Quinn Dunki says:

      It was not my intention to suggest that Apple Game Server is slow, if that’s what you’re upset about. I quite like it, hence my making a point of linking to it here.

      Edit- though on further inspection, my wording does sound like that. I’ve changed it.

      • datajerk says:

        Upset? Not in the least. I guess I should have used a lot of :-)’s to express some form of levity or poking fun.

        In all serious the cassette ports are “very, very, very slow”. I’ve tried to do everything I could to get from 1333 bps to 8K bps (9.6K bps if you’ve got the right Apple II). 2x the bps with compression.

        You didn’t need to change anything. Defend your position, and challenge me to a duel! (ADT Pro vs. diskserver 🙂

        • Quinn Dunki says:

          Heh, sorry- it’s difficult to interpret tone in a medium like this sometimes.

          I changed the wording anyway, because it did sound unfair to AGS. Original cassettes were mind-numbingly slow (which was my intended point), but they certainly didn’t operate anywhere near the maximum potential throughput of the port, the way AGS does.

          Correct me if I’m wrong here, but my impression is that AGS fills a slightly different niche. It seems more like a way to boot and play games any time you want, but it’s not a tool you’d use to, for example, make a bunch of floppies from Asimov images. Comparing them feels a bit like Apples (teehee) and Oranges.

          • datajerk says:

            Correct, AGS online is used to stream binary code directly to memory and then execute it–just like tape.

            The Apple Disk Server (http://asciiexpress.net/diskserver/) uses the same code as AGS to stream entire disks from the Internet via your phone/tablet/computer to your floppy drive as an alternative to ADT.

            The tool to create audio files of code or disk is the same (c2t). The source (with binaries) can be had here: http://asciiexpress.net/files/. I mentioned diskserver to compare apples (ADT) to apples (diskserver/c2t).

            I use c2t over ADT for convenience. No serial cable, USB2Serial, modern computer, CFFA3000, etc… I just run c2t, put the .wav in Dropbox, descend two flights to my basement retro man cave, jack my phone in, insert floppy, type LOAD, and press play. About 3 min later I have a floppy. No need to drag a computer, USBtoSerial, serial cable, etc… with me, or have a permanent setup. The retro cave is very retro, I’m unsure if I have anything down there that can run Java/ADT.

            Sadly, //e and ][+ only. No audio on the //c or GS. If you have a //e, give it a try.

  6. Kelli says:

    Here’s a little tidbit that you might find interesting. It involves a guy who works with replicating and rehabilitating Apple I systems, and his recent communication with Woz Himself regarding power issues with interactions between the -5C line and -12V line that can occasionally make the RAM unreliable.

    In his response, Woz mentions having had an epiphany regarding a ‘trivial’ way to allow the Apple II to output two different levels of grey, and the comments go into detail about how that might be done.

    Anyway, here’s the link: http://www.willegal.net/blog/?p=6023