Category Archives: Technology

KansasFest 2012

IMG_0210This story begins early in 2012. I was listening to the latest episode of Retro Computing Roundtable, a podcast about old computers, when they started talking about KansasFest. KansasFest is a gathering of Apple // enthusiasts which has been happening yearly for many years. The 2012 event would be their 24th and the hosts of the Retro Computing Roundtable announced on their podcast that they would all be attending.

Among the hosts is Earl Evans who had often talked about wanting to attend KansasFest the same way that I had over the years. In university, I just didn’t have the money. After university, I was focused on my BeBox and BeOS. And then I was married and Matthew and Samantha arrived. There always seemed to be a good reason why I couldn’t go.

But Earl and the rest of the hosts found a way. I literally paused the podcast and started thinking “why couldn’t I go this year”. Maybe it would be too costly? But I have lots of air miles – enough to get me a flight there for free. And the cost of the event itself is cheap considering that meals and lodging is included. Would my family be OK with me going on a “vacation” by myself? And there is the problem that our wedding anniversary happens during KansasFest.

So, I asked the boss and after a bit of negotiating, I had my OK. I booked my flight and registered. I was going to KansasFest!

I subscribed to the KansasFest mailing list and as the date drew closer, the traffic on the list increased along with my excitement. At one point, someone sent an email asking who was going to be bringing real Apple //’s to the event. I was surprised to see how many people were bringing their old computers. I really wanted to bring my Replica One or my Apple //e but I didn’t trust the airline to treat them properly. I was only planning to bring my MacBook and an iPad.

But everyone seemed to be bringing a pile of cool old hardware. I needed to bring something so I looked around my room and saw my Curta mechanical calculator. That was something I could easily transport and people should be interested in that. So, I replied to the mailing list that I wasn’t bringing any of my Apple //’s but I would have my Curta.

Soon enough, I was in Kansas City and meeting people who I had heard of by watching the Apple // community. People like Ken Gagne, Tony Diaz, Geoff Weiss and more. I listened to John Romero describe the early days of game programming on the Apple // and the strange characters who wrote some of those classics. Randy Brandt talked about Beagle Bros. and the story of AppleWorks. Randy is a Canadian originally from Manitoba and we chatted for a short time about that. I met Vince Briel who created the Replica One which I built. I demonstrated the Curta to many people and it was definitely a unique bit of hardware at KansasFest.

At meals, people would often ask if I was working on a HackFest entry. HackFest is a programming competition where you create something during KansasFest and on the last day, everyone demonstrates their program. They are judged and winners are selected. I had a big project I was working on before KansasFest which was not eligible under HackFest rules and I planned to continue working on it throughout KansasFest. But everyone was encouraging me to do something for HackFest.

Walking back to the dorms afterwards, I started to think what I might do for HackFest if I was going to enter. Then I realized that what I should do is write a simulator of a Curta calculator for the Apple //. The Curta has a crank as its primary interface and I could simulate a crank using the joystick. With a bit of graphics and sound, I could make a pretty good simulation of a Cuta.

I started working on it right away. I used my MacBook and coded it in C using the cc65 cross compiler. I tested it using the Virtual ][ emulator. First, I got a basic simulation of the Curta working. I controlled the calculator using the keyboard on the first version and the output was just text. But that was the basics. I had something which worked and if all else failed, this could be my HackFest entry.

CurtaSimNext, I added graphics. I used the 280×150 resolution Apple // hi-res screen. The bottom of the screen has four lines of text which I used to display the output of the calculator. The graphical display allowed you to see the settings of the dials on the Curta. I coded this between sessions or in the evenings. While waiting for another session to start, I would open up my MacBook and code a bit more. Soon enough, I had graphics working.

But the controls were still through the keyboard. I really wanted it to be fully controlled using the joystick. So, I started coding those interfaces. I could adjust the dials. I could crank the calculator. Soon enough, I only used the keyboard to signal the program to quit. Everything else was controlled using the joystick which was kind of similar to the real Curta.

CurtaSimIt still wasn’t quite enough. It didn’t make any of the grinding and clicking sounds of a real Curta doing calculations. The Apple // is actually pretty good at making grinding sounds. A bit more work and I had something approximating the sound of a Curta coming out of the speakers. I pretty much built the application I envisioned while walking back from breakfast a couple of days before.

On the final day, I sat nervously in my room waiting for the judges to come and see my entry. Before the public demonstration, the judges spent some time looking at the entrants. Once they arrived, I announced that “Lots of effort had been put into emulating the Apple // on newer platforms but I thought it was time that the Apple // emulate an older computing machine”. I gave a demo of the simulator and answered a few questions about how I coded it. They seemed impressed and I thought I did well.

CurtaSimA little while later, I had to demonstrate my simulator to all of the attendees. I was the first entrant to demonstrate and I did calculations on the real Curta and on my simulation. Then, I watched as people demonstrated their entries. There was a cool lo-res game. There were a couple of entries on the Apple /// demonstrating graphics and sound. There was a great modification to Applesoft Basic which allowed you to jump to subroutines by name instead of by line number. And many more great programs.

The winners were announced and I thought I might place. Third place when to the named subroutine utility. And second place was the lo-res game. And then they said that I had won first place! I was really taken aback. While still trying to absorb that I had won, I was asked which of several prizes I would like. I opted for a $50 gift certificate to Think Geek but I am not sure I really knew what my options were. I was still kind of shocked I had won. Since then, I used that gift certificate to pick up a couple shirts and some new puzzles like a 7x7x7 Rubik’s cube (not solved, yet).

Since then, I have published the source code to my program on github, was a guest on the Open Apple Podcast talking about my experience at KansasFest. I even wrote an article for JuicedGS about my HackFest entry. JuicedGS is the longest running Apple // publication and is still in print (I am ashamed to admit I only became a subscriber after KansasFest). I even was mentioned online in more mainstream computer news. There is an article at ComputerWorld about KansasFest and HackFest where my CurtaSim is among those featured.

Will I be going to KansasFest 2013? I sure hope so.

Tic-Tac-Toe

Tic-Tac-ToeAt work one day, I walked past my director’s desk and noticed he had an editor open and was typing some C code. That was strange (not as strange as it might be in other companies – our director definitely is capable of coding but generally doesn’t). So I asked him what he was up to.

We were looking to grow the team and he was considering asking candidates to code up an implementation of tic-tac-toe as a test. That way, we can see how they approach problems and their coding style. But he wanted to see how difficult the task was before asking anyone to do it so he was trying it out.

Intrigued, I went home that night planning to write my own. I decided to do my implementation in Perl. I didn’t want to write any code for data structures so I just wanted to use a language which had basic arrays and hashes built in. After a short time, I had an implementation which worked and would never lose. It computed all possible moves and scored them. If you weren’t careful, it would beat you. But it was pretty slow. The first move took a couple of minutes on my iMac which is a pretty fast machine.

The other feature of my implementation was that the size of the board was configurable. I decided to try a 4×4 game and it was unplayable. After a couple hours, it still hadn’t made a move.

But, that was enough of a proof of concept. At work though, others started talking about writing their own implementations. People were going to try Python, or C++ or raw C. People said they were going to make an implementation which was faster than mine and still search all possible moves. I needed to do better before I was beaten.

So, I tried again. I ported my implementation to C. And I started adding more smarts. I noticed that I could skip several board configurations. Perhaps the board is a mirror image of one I have already looked at. Or maybe a rotation of one already investigated. So, I added a cache to keep the best move given a board configuration and added code to recognize that one board state is symmetrical with another. That significantly shrunk the space of moves to search.

Then, I added “Grand Central Dispatch” support. On the Mac, this allows you to schedule tasks to multiple cores on the processor. That way, I could investigate multiple board configurations concurrently. With these changes, a 4×4 game became playable. It took my Mac a couple of minutes to make the first move but once it had pre-calculated everything, it was fast.

And as a challenge, I decided I would see if I could get the 3×3 game working well enough on some of my older machines. I have a C cross compiler for my Apple //e and my Replica One. I ripped out the “Grand Central Dispatch” code because that would never work on these old machines. I shrunk the data structures and did a bit of math in my head to see if they would fit. I needed to store enough state for all possible games on my Replica One which had 32K of memory. After a bit of optimization, I decided it would fit.

I compiled the program for the //e and the Replica One and they worked. Again, it took a couple of minutes to make the first move as it investigated all possible games but after that it was fast. And this was on a 8-bit processor running at 1MHz with as little as 32K of memory. I figured I had done enough to defend my reputation since I had a usable version working on nearly 40 year old hardware. More than that, I had a version of tic tac toe running on hardware nearly 40 years old which I assembled myself with a soldering iron. I win the title of “king of the geeks” and none shall challenge me.

And to this day, I don’t think anyone has even attempted their own implementations. If anyone does come to challenge me, I think I will learn OpenCL which will let me put the game search on the GPU in my iMac and then I can get a huge amount of parallelism. Maybe 5×5 becomes playable that way. Maybe…

Steve Wozniak at iPhone 4S Launch

IMG_0115I happened to be in Mountain View, CA for a short time on a business trip during the launch of the iPhone 4S. It was later in the day and I was thinking of leaving the office to get some dinner. Before I left though, I checked my news feeds to see if anything interesting was happening. That is when I read this article.

Steve Wozniak, the creator of the Apple // and one of the founders of Apple was in line to buy an iPhone 4S at the Los Gatos Apple Store. That was only about a 20 minute drive from where I was. This was my chance to meet someone who had seriously influenced the direction of my life.

I recently finished building my Replica One which is a replica of one of Woz’s first computer designs, the Apple 1. I grabbed a copy of a schematic of the Apple 1 and printed it out before leaving the office. My plan was to see if I could get him to sign it for me.

Once I arrived, I found Woz surrounded by a dozen or so people. And true to form, he seemed to be spending most of his time talking to the kids who were asking him what they should do be an engineer and build cool things. He gave great advice and I wish I recorded some video of what he was saying. I used my phone to get some pictures of him but it was tough with the low light and the crowds. Only two pictures ended up almost reasonable.

After he talked to a bunch of the kids, someone asked him for a picture and then another person on the crowd asked for him to sign something. I had my schematic, an iPad 2 which I was going to use as a surface for him to sign on and my pen in my hand. After a couple more people got their pictures or something signed, I got his attention and asked him to sign my document. I passed him the iPad 2 and schematic but he had a pen ready to go.

After starting to sign, his eyes focused more on what he was signing and he said “Hey, this is my design!”. I said it was significant to me because I had just assembled a Replica One and I planned to put the signed document next to my little piece of computer history. He said he loved the Replica One and thought it was great that some people still put systems together like they did back then with a soldering iron.

He finished signing the schematic and passed it back to me. I thanked him and probably had a crazy grin on my face and he went on to posing for more pictures or signing anything people brought to him.

Once I got home, we bought a frame for the signed schematic and it sits right now next to my Replica One and it reminds me often of the chance I had to meet Woz.

A Case for the Replica One

Replica OneI had already assembled my Replica One and powered it up to see that it worked. But, it was just a bare board. I had it connected to a power supply and a small USB keyboard. The Replica One didn’t have USB so I had it connected through a USB to PS2 adaptor. The whole thing sat on top of a piece of cardboard. It worked but it looked more like a bomb from a movie than a working computer. It needed a case.

Years ago, my dad and I build the Rand X computer together and that is where my hobby and my profession work in software began. I assembled the Replica One with help from Matthew. But I wanted a nice wooden case and for that, I wanted help from my dad.

We were planning a visit to Tillsonburg that summer so I prepared by drawing out a basic plan. I measured the key components. The motherboard is rectangular and I decided it would be best to have the long edge of the board run along the length of the case. The power supply would be to the left of the motherboard. Unfortunately, the power switch, serial port and video output would then have to come out the right hand side of the case. In the end, it seemed to be the best compromise so that is what we went with.

I arrived in Tillsonburg with some rough plans. It called for a shape which is more or less a rectangular box except the front, top slopes down where the keyboard is mounted. This approximated the shape of the Apple //. Also, I wanted the top of the case to be plexiglass so the board would be visible.

We sourced the plexi in London and went to pick up a piece. They cut it to the size we specified and when I asked, “how much?” they said not to worry about it. They had scraps bigger than that. We cut the panels to the appropriate sizes and shapes and screwed it together. We cut a large hole in the back panel for the power supply fan and power connector. We also cut a smaller opening on the right edge for the connectors on the motherboard.

We probably struggled the most with finding a good way to mount the board to our case. We ended up with small spacers which we screwed into the board and then screwed the spacers into the bottom of the case. It wouldn’t be too convenient to remove the board from the case but I didn’t plan to do that very often.

We drilled a small hole for the keyboard cable to pass through into the case so it could be connected to the board. Mom had some velcro which we often uses for their boat projects and we used to that connect the keyboard and the plexi to the case. After a couple of coats of varnish, we had a beautiful case for my Replica One.

Once I got the system home again after our trip, I remove the old piece of cardboard that everything used to sit on and cleared a spot for it on my desk. I hooked up the serial cable to the iMac and started loading programs onto it. I even got a C compiler working for the Replica One and I have coded a few things for it since then (more stories coming about that soon).

So, it sits beside me now in my computer room. I have many old computers here but it has a special place physically on my desk but also it means so much to me because of the work which went into it by Matthew, my dad and I.

Building The Replica One

IMG_0033One of the last things I did before we moved back to Canada was order a Replica One computer. The Replica One is a reproduction of the original Apple I computer designed by Steve Wozniak back in 1976. Shipping it to Canada would have been more expensive and more of a hassle and I always wanted one so I bought the kit. But with the move, I left everything in the box until I was ready to work on it.

Once we were settled, I was itching to start but I just didn’t have the room. I had my own room for my gadgets but I only had a tiny desk which had room for our iMac and printer but not much else. I really needed all new office furniture and a large desk to go with the large room.

By September, I had found the furniture collection I wanted and ordered it online. But months later, it was still back ordered. Someone didn’t want me to work on my computer project.

By November everything arrived and in a couple of evenings of work, I had the furniture all assembled. With desk space, I decided to bring out some of my other old hardware. Like the Apple //GS I used throughout university and have completely customized in a tall tower case. Or my uncles old Apple //e which needed a bit of cleaning but still works great. My BeBox which replaced my Apple //GS as my main computer when I started working life. The BeBox is probably the rarest machine I own and the model I have is thought to be one of about 800 ever sold.

But, while waiting for room to work on my project, I also started collecting some other old systems. I found an original Mac 128k on eBay and bought it. I have a video of Samantha using it in the kitchen. Now it has a permanent spot next to our iMac which is many orders of magnitude faster. It works well and Samantha often asks to use it. She loves MacPaint.

I also got a Apple MessagePad 2000 on eBay. These devices are often called “Newtons” although it is the software on them that is branded Newton. The hardware is MessagePad. It is a strange device and ahead of its time in many ways. The Palm Pilot which followed it is definitely a refinement and simplification of the MessagePad and it succeeded because it was a better compromise for size, battery life and cost. But it is a pretty neat machine and in some ways is a predecessor of the much more successful iPod and iPhone mobile devices which Apple would make much later.

The final machine I bought off eBay recently was an Apple Lisa 2. This is quite a rare machine and is a predecessor of the Mac and is one of the first machines with a graphical user interface. The model I have has a single 400k floppy drive and a 10M internal hard drive. The hard drive is physically huge. Given that 3TB hard drives exist today, you can probably have about 12TB of disk space in the same physical dimensions as this 10M drive. That is about 1,250,000x more capacity in the same physical space. The machine itself was in Ottawa so I was able to inspect it before bidding on it and once I had won it, I didn’t have to pay shipping costs since I just had to pick it up. It was missing a keyboard but I found one in another auction. The system does power up but it doesn’t boot. There is definitely an error booting to the hard drive but I am not sure what the problem is yet. It could be that the OS isn’t loaded on the hard drive which means I have to find some way to write some floppies. That alone will be an interesting challenge.

The only other machine I am tempted to try to find is a Next Cube but they are rare enough that they tend to go for $1000 or more. I just can’t justify that much money for something that old, regardless of how cool the hardware is (or was).

But what I really wanted to work on was the Replica One. I setup the desk and put some of my old machines together in the corner of the L where I could work with them but they also wouldn’t be in the way too much. The iMac sat on on end of the L leaving the other side empty. Also before moving, I bought a very good soldering iron at Fry’s so I set that up. I put a nice bright desk lamp there also to help me get enough light.

I was bit nervous to start since it had been years since I did any soldering and never really did anything this intricate. I watched a bunch of YouTube videos on soldering technique just to review and prepare. One night a couple of weeks ago, I opened up the box and organized all of the parts. The instructions suggested starting with the resistors and there were only a dozen or so to mount so I dove in.

In a short time, I had all of the resistors mounted. The next day, I soldered all of the sockets. Then, the capacitors. A day or so later I was soldering on the connectors and other devices. Every day, I would show Matthew the progress and demonstrated soldering for him. But once all of the soldering was done, Matthew would help me out more.

First, we needed to make sure that the connections were good. Without inserting any chips into the sockets, I hooked the board up to the power supply and turned it on. We got a red light from the LED which was a good sign. Using the voltmeter, Matthew and I checked +5 and ground on all of the key pins. Everything looked good. Time to power it off and move to the next step.

With bedtime fast approaching, we started mounting the chips into their sockets. There were only 10 chips to insert (versus the dozens of chips found on the original Apple 1) but it was slow going because we didn’t want to bend any pins. With all of the chips mounted and Cynthia ready with the video camera, it was time to power it up. And it worked! A quick reset and I was in the monitor. A quick instruction in the monitor and I was in Apple basic. A quick command in Apple basic and I was running a program. We had built a computer!

In many ways, this project was a way to relive the building of the Rand X computer my dad I built nearly thirty years ago. The Replica One is actually less powerful than the Rand X. My Replica One has 32k of memory versus the 64k we had in the Rand X. But my Replica One is also built to interface better with technologies of today. It has a PS/2 port for a standard PC keyboard. It has a serial port which you can use to send it programs. I am currently waiting for a USB to serial cable so I can hook the iMac up to the Replica One and downloads some programs to it.

And I bought a compact flash reader for the Replica One. This lets me store programs on a compact flash card. The Apple 1 never had a disk drive. All it supported for storage was cassette tape. Compact flash is a much more convenient solution. However, it was difficult finding a good flash card to buy. The problem is that regardless of the size of the flash memory, the reader will only give you access to the first 32M of space. In the store, the smallest and cheapest I could find was 4G. So, I now have a 4G compact flash card inserted into a device with 32k of main memory. Of that 4G, I can use only 128th of it and of that 128th, I will be hard pressed to use even a megabyte of space.

Matthew has shown some interest in learning more about the Replica One also. I showed him just a bit of Basic and how he could use it to write programs which can do his math homework for him. That seemed to get his attention. I often wonder what the best route is to get a child into programming today. Making a program which counts from 1 to 100 on today’s machines just seems so anti-climatic. But to get a machine which is nothing more than a bare circuit board hooked up to a keyboard and monitor to count to 100 just seems like more of an accomplishment. At least I think so. We will see whether Matthew thinks so too.

The next step is to build a case for it. Today it is sitting on a piece of cardboard but my plan is to build something out of plexiglass. I also need to find a keyboard which is a bit smaller and more appropriate to mount into the case.

So my Replica One joins my museum of old technology. But unlike the other ones, this one is just a bit more unique because we assembled it ourselves.

The Apple //GS

In September of 1986, Apple released the Apple //GS. Of course, in 1986 it wasn’t nearly as easy as today to get tech news. I found out about the new machine weeks later when I went to a local magazine shop and saw it on the covers of the Apple // magazines. I promptly bought every one of them and went home to learn about the new machine.

It seemed to have everything I wanted in a new computer. The CPU was a 16-bit version of the 6502, a 65816. It was clocked at 2.8 MHz versus the 1 MHz of the Apple ][+ I had (note that as I write this, 2.8 GHz machines and faster are common). It came with 256Kb of memory versus the 64Kb I had. And, it had a mouse, detached keyboard, 3.5″ floppy drives (external) and an RGB monitor. But best of all, it had much better graphics and sound. The graphics modes were 320×200 with 16 colours or 640×200 with 4 colours so it wasn’t necessarily competitive with the Atari ST or the Amiga but it was a huge step forward from my Apple ][+. The sound though was probably better than anything on the market at the time with a real music synthesizer chip capable of 16 stereo voices. Add in a Mac-like interface and it seemed like the perfect machine.

That winter I started reading everything I could about it. I bought lots of magazines and as usual, Nibble seemed to have the best technical coverage. I also bought a book from Apple called “Technical Introduction to the Apple //GS” and read it multiple times. I had to have this machine.

At the time, the cost of an Apple computer in Canada was far more than buying it in the US and bringing it across the border, paying all the duties even with the exchange rate. As we did every summer, we vacationed on our sailboat in western Lake Erie so we made a quick stop in Sandusky, OH and visited a local Apple dealer. They had a few Apple //GS’s on display and I went right to one. We tried a few applications but the ones we liked best were Bard’s Tale and Instant Music. So, along with those two software packages, we bought an Apple //GS, an external 3.5″ floppy drive, an RGB monitor and a 256K RAM card to bring the total memory to 512K. Our existing pair of 5.25″ floppy drives would work with it so we would re-use those from the old Apple ][+.

Then, I waited until we got home to actually set it up and try out my new computer. It was a long wait but eventually, I got my chance to try it out. I unpacked the boxes and started setting everything up. I opened the computer to add the RAM card and to plug in the interface card for the 5.25″ floppies but found the inside empty. Well, it did have a power supply but there was nothing else. There was no motherboard in the case. I grabbed the receipt and we called the store in Sandusky and told them what happened.

Apparently they had swapped the motherboard to fix someone else’s system who was having a problem and sold us the empty case! Thankfully, they agreed to send us a motherboard by courier. When the courier got to the border, he was having problems bringing it across because they insisted on duties being applied to the value of the part. After getting copies of receipts and documents showing we already paid the duties, and he was allowed to proceed. But it began to seem like someone didn’t want me to have a new computer.

When the motherboard arrived, I installed it in the case, plugged in the power supply and finished setting up the system. Shortly thereafter I had the familiar, reassuring beep to tell me everything was fine and my new computer was working. Many hours playing Bard’s Tale and making strange music with Instant Music ensued.

In the glow of this new computer, the old Apple ][+ clone which my dad and I built started to gather dust. We could still use Visicalc and all our old Apple // software on the new system so it very quickly replaced it. A friend of ours was looking for another Apple and without thinking too long, we sold it to him. A few years later, my dad and I realized we had let go something which was actually quite valuable to us. Compared to the new system, it just didn’t seem worth keeping at the time. But to this day, I would love to have it on my desk next to my current computer(s). It really was a one of a kind. We did go back to the man who bought it from us but he had scrapped it long before. The “Rand X” was gone.

But, I did have this fancy new computer which did do a whole lot more and I really wanted to write programs for it. But Applesoft Basic didn’t seem to be the way to do it anymore.

Other 8-Bit Computers

Within a couple of years of building our Apple ][+ clone, it seemed like almost everyone had a computer. But, almost no one I knew had an Apple ][. My best friends both got Atari 800XL’s. We played a bunch of games on those. I remember playing Conan on the Atari quite alot. Also, one of my friends got a 300 baud modem for his Atari. Sometimes I would watch as he would log onto a local BBS. He would post messages to different boards and I remember he would get into heated arguments about something or other with these people he had never met and didn’t know at all. It all seemed pretty strange but I would see it all again on Usenet a bit less than 10 years later.

Then a computer store opened in our small town. The owner was an Atari fanatic so my friends fit right in. We would hang out there quite a bit and talk about computers. I would get a bunch of ribbing about my Apple from these guys which probably helped to instill a sense of defensiveness about my choice of computer which would often pop up over the next several years. More on that later.

Perhaps looking for more like-minded people, I joined the “London Apple Corps” at some point. It must have been around 1984 or so because I remember someone bringing a Macintosh 128K to a meeting. At these meetings, new software and hardware would be demonstrated, people would ask for help with some problem they were having and just talk about Apple. They sold freeware software and if you knew who to ask, you could also obtain some other not so free software also. Later, I would become the librarian for the user group. This meant that I kept a good supply of the software for sale, making copies of the 5 1/4″ disks as necessary and filling orders.

But more than anything else, people had Commodore 64’s. I hated the C-64. Compared to my Apple, it just seemed slow and clunky. On my Apple, I could draw graphics without incanting peeks and pokes. Just a couple of “HCOLORS” and “HPLOTS” in a Basic program and you could do some interesting things. On my Apple, you can cram 256 characters and tokens on a single line of Basic which was great for making cool and complicated 1 or 2 line Basic programs. On the C-64, you could only have 80 characters on a line which seemed like a serious problem at the time. But more than anything, the performance of the disk drive on the C-64 drove me nuts. I cared because at school, this is what we had.

In high school, we had a grade 11 and grade 12 computer science course. They allowed students who were interested to take the grade 11 course in grade 10 and the grade 12 course in grade 11. However, I was allowed to skip the grade 11 computer science course and take the grade 12 computer science course in grade 10. Oh joy, I get to use a Commodore 64!

For our year end project, we had to decide on something we would write and then code it. I decided to make a “Adventure Writer” and an “Adventure Player”. I created a simple language to describe the locations in an adventure game, the relationship between these places and the objects in the game. The writer allowed you to create these things and save it into a data file. Then, you could run the player, load your data file and play the game you had made. So, I was actually writing two programs for my project, not just one. And, they were the most complex Basic programs I had written and were very long. The disk drive on the C-64 was so slow that the time to load and save the programs was significant. In a one hour period, I would spend several minutes just waiting for my program to load. And if I didn’t start saving it early enough, I would be late for my next class. In the end, I got it done but I did have to go to a friends house one Saturday to work on it.

By 1985 and 1986, things were changing. At the London Apple Corps, there was conflict between all of the Apple ][ users and the new Macintosh users. It seemed more and more time was spent talking about the Mac. Eventually, the user group would split and the die hard Apple ][ users like myself wouldn’t have to worry about the Mac anymore. Also, the Amiga 1000 and the Atari 520ST arrived. At the computer store in town, the Atari fans would extoll the virtues of the ST, deride the Amiga and completely mock the Mac which had no colour at the time and was far more expensive. One of my friends replaced his 800XL with a 520ST and would later upgrade it to a 1040ST. I never met anyone with an Amiga at the time but later in university would meet an Amiga owner.

By 1986, my Apple ][+ clone was just not as cool as it once was. But what would I replace it with. Soon enough I would have my answer.

Life with an 8-Bit Computer

As I said in my previous article, I didn’t just use my Apple clone to learn programming. There were games to play and work to do. Most of this software was copied, which was the style at the time (to quote Grandpa Simpson) but not all of it was illegal. Honestly, the games we enjoyed the most were the ones we bought so at least the developers of those great games were properly reimbursed.

Among those games which we bought and spent hours playing were the Ultima series. Specifically Ultima III, Ultima IV and Ultima V. To me, Ultima III was the one which I enjoyed the most. It was a simple role playing game where the goal was, in general, kill everything you see. If you need a bit more gold, we would often raid a city, kill the inhabitants and take all the gold. And, if you leave the city and come right back, you could do it all again. It was a quick way to get the gold you need for buying a new ship or whatever you thought you might need next. But with Ultima IV, that all changed. In Ultima IV, your actions and choices affected your ability to progress in the game. Your character needed to develop different virtues like honesty and honour. So, killing the inhabitants of a city and stealing their gold didn’t help anymore. I finished Ultima III (a couple of times I think) but I never got to the end of Ultima IV. I was pretty far along but didn’t get there. I don’t think I spent more than a couple of hours playing Ultima V. My brother, Steve spent a bunch of time playing that one. But it came on a crazy number of disks and I really didn’t enjoy all of the disk swapping which was required.

We also played Summer Games alot. I remember that we would often play a single player game and take turns on the events. My brother was best at some events, I was best at others, our friends best at other ones. Our goal was to try to get the best score possible. But, no one was good at the gymnastics event and it seemed to go on and on forever. So, if someone screwed up their event, they had to do the gymnastics event.

That wasn’t the only olympics style game we had. We “acquired” a copy of Microsoft Decathalon and am I thankful we didn’t pay for it. Firstly, because the game sucked. Secondly, because it allows me to say that I am one of the few people who haven’t ever purchased a Microsoft product (and this is the only one I ever pirated). I remember the shot put event the most. You had to use the joystick to control your players arm. One axis controlled the rotation of your shoulder and the other axis controlled the rotation of your elbow. Try as you might to throw the shotput, inevitably you would end up with your arm in a completely unnatural position and the shotput would go anyway. Truly an awful game but not a bad piece of software for Microsoft. I honestly don’t recall it ever crashing which is something.

It wasn’t just games on our Apple though. I had a copy of Apple Writer which I was using to write essays and other things for school. We bought an Epson RX-80 dot matrix printer and a Grappler parallel interface card to hook it up. So, I could print out whatever I was working on in Apple Writer. But, an Apple ][+ only had 40 columns of text and no lower case (unless you bought an 80 column card or modded it to get lower case, neither of which I did). In Apple Writer, it showed everything as upper case but if you printed it, it was all lower case. If you pressed “escape” and then a letter, that letter would be shown in inverse text and indicated it was actually upper case. Sure enough, it would be upper case when you printed. So, that is how you got upper case and lower case in your documents on a computer which only supported upper case. The printer had 80 columns of text (I think you could get 132 with the right control sequence also) but the screen only had 40. Between the different columns of text and the lack of lower case, it definitely wasn’t WYSIWIG but it was good enough for me.

We also bought The Print Shop from Broderbund. Suddenly, we were printing banner, signs and lots of other crazy things. It was a great little program though and it made it really easy to create a nice simple, reasonably good looking documents. Or, you could use lots of pieces of clip art, turn on all of the different text modes and really create a god awful looking poster. We did that quite often too.

The other neat thing about the Grappler interface card was that it could print directly from the Apple ][‘s graphics screen. Using the right commands, you could print the text screen, the low res screen or the high res screen. So, all of the little programs I wrote to create strange patterns in hi res I could print now. Pretty soon the walls around the computer was covered in paper of different images I had printed.

We had that computer from 1982 until 1987 and it served us very well. In 1982, I didn’t know anyone else with a computer but within a couple of years, it seemed almost everyone had one.

What Can You Do With An Apple ][

Turns out if you build an Apple ][+ clone in your basement, you can take first prize in your school’s grade 7 and 8 science fair. In retrospect, I (and my dad) assembled a computer from parts but clearly from the look on people’s faces when I showed my project, people thought we had designed it. In the future, I would come to better understand the difference but at the time I was happy to have people think what I had done was somehow very significant.

But, in a way it was. What I had was a computer but no real manuals which came with it. Doug provided us with a Dos 3.3 manual (which is visible in one of the pictures about the construction of the computer) and some photocopies of some other manuals. On the whole though, the machine was undocumented.

He did provide us with a bunch of disks of programs. I would experiment with these programs and figure out how they worked. For example, we had a copy of VisiCalc but no manuals. So, I experimented with it until I understood how it worked. Eventually, I had figured out enough that I helped my dad build a budget spreadsheet for the family.

I didn’t just experiment with programs. Any time I found a BASIC program on these disks, I would load them and read them. I would try to figure out how they worked. If I saw a command like “poke” in the text which I didn’t know, I would try to figure out what it did and why the program did it. I would try to change the program and see what happened.

The other place I was learning was from Nibble magazine. There were other Apple ][ magazines on the rack but Nibble was the only one I really cared about. If I remember correctly, I ended up getting a subscription so I didn’t miss an issue if I didn’t get to the store on time. Nibble was different because it was packed full of useful and interesting programs. They had a one-liner and two-liner contest where people would submit programs which were 1 or 2 lines of BASIC long but did incredible things. In many ways, it was similar to the Obfuscated C Contest because what these programs lacked in readability, they made up for in creativity.

Plus, the magazine had lots of long BASIC and machine code programs. I would type many of these programs in. With machine code programs, it was just a listing of hexadecimal numbers which I would enter into the Apple ][ monitor. Often, my friend Jeff would be over reading the hex numbers to me while I typed away. Often after entering everything and then running it, it wouldn’t work. With machine code, I didn’t really have the skills at the time to do anything except just check the hex digits against the listing. But with BASIC programs, I would start debugging it.

So, from this early stage, I had already learned two key skills which were and still are critical to my work today. First, there is no better way to learn than to experiment with something. Real understanding comes when you see how something works. Secondly, and probably more important for someone interested in software, read other people’s code. For me, I was reading all of the BASIC programs I could find. I would read them to see how they worked. I would read them to see what tricks other people used. And I would read them so I could change them and make them work for me the way I wanted. To develop these skills today, get involved in open source projects. Get the code to a project you are interested in. Figure out how it works. Try changing it. Did it do what you thought it would? If not, why not? Nothing beats getting your hands dirty, especially with someone else’s code.

But, I didn’t just program on this new toy I had. My next story will describe some of the other things I was doing with my Apple ][.

If Not A Sinclair?

CCI00015Now that realities of tax, duties and exchange rates had squashed my dream of owning a Timex Sinclair computer, my dad offered an alternative. A good friend of his, Doug Leverton, taught electronics at Fanshawe College but built Apple ][+ clones on the side. He would supply us with all the parts to build an Apple ][+ clone and my dad and I would assemble it.

Visiting Doug’s place one night, I remember he let me play with a completed clone for a while. I played Apple Panic and Apple Adventure. I was completely hooked.

My uncle George was interested in a computer also. So, we obtained the parts to build two computers and started work. When people talk about building computers now, they buy a motherboard, a processor, some RAM, a case and power supply and plug everything together. In 1982, it was different. The motherboard was bare and we soldered components and sockets onto the board, including the 8 slot connectors. All chips were socketed onto the board. We sourced keyboards from a surplus store which used to be part of electric typewriters. These keyboards needed a special interface board to connect them to the Apple motherboard.

The components we didn’t assemble were the power supply, disk drive and the disk controller card. However, the disk drives needed another interface board between it and the disk controller which we built and attached inside the case of the disk drive itself. So, the drive was customized a bit. Also, we built a 16K RAM card for slot 0 which brought the total memory size to 64K. With a disk drive and 32x more RAM capacity than the Sinclair I was considering, this would be a much better computer.

The case was custom also. The sides were wood and two pieces of sheet metal were bent into the correct shape for the bottom and the top of the computer. Everything was connected together. We hooked it up to an old black and white TV set using an RF modulator. All we were missing were the ROMs.

We spent an evening at Doug’s house to burn the EEPROMs. We started with the official Apple ][+ ROMs and changed exactly 8 bytes. We changed the “APPLE ][” string which appeared when the machine boots with a “<RAND X>” string. So, yes, the ROMs were copied from Apple but to me, it didn’t seem wrong at the time.

With the newly burnt ROMs installed, we turned the computers on, one at a time and heard the satisfying “beep” and the whir of the disk drive. My dad and I had successfully built two computers.

But what now?