Jacques Mattheij

technology, coding and business

Computers I Have Known

Over the years I’ve owned quite a few computers. An endless series of PC compatibles that mostly differed from each other in CPU speed or memory capacity. But before the PC era computers were a bit different in that they differed vastly from each other. The advent of the PC homogenized personal computing to a large extent, this is now due to the proliferation of mobile platforms and various tinkerer devices (Raspi, Arduino, etc) changing again but for the longest time it seemed as though x86 was what computing was all about.

The very first computer that I owned outright was a TRS-80 pocket computer. It was actually manufactured by Sharp and marketed by Radio Shack in the USA and Tandy in Europe. I’d befriended a number of Tandy store managers in and around Amsterdam, they let me play with the bigger machines so when I’d finally delivered enough papers and repaired enough TVs to buy a computer it was a fairly natural decision to get a TRS-80 of some kind and at 549,- guilders it was just within reach. The paper route was pretty steady income, the TVs mostly hit and miss (scan the garbage on wednesdays and fridays for likely candidates for fixing up or parts, then sell the TVs through classified ads for 25 guilders a piece). But eventually I got there and my first computer was mine. I still have it and it still works!

A cassette interface was another 150 guilders or so so I ended up writing out all my first programs into a copybook. 2K of RAM isn’t a whole lot so most programs were under a hundred lines or so.

The next step up was a pretty big one. From the pocket computer I went on to a ‘dragon 32’. The dragon was a clone of the TRS 80 color computer, it had an interesting mix of hardware and software, with the software doing the job where other computers of that time would have used a piece of hardware. For instance, the sound interface and the cassette tape interface were entirely in software. This taught me a lot about timing, phase locked loops in software and serializing memory to tape and back again. I fixed a friends computer (burned out RAM chip) and we realized that the chips were 64 Kbit x 1, and there were 8 of them. So our ‘dragon 32’ was really a dragon 64! The 6809 chip that powered it could address 64K, the memory was laid out with 32K of RAM in the low part, then 16K of ROM and then another 16K of ROM + peripherals in the final portion. The controller could bank switch each 16K block between ROM and between RAM, an undocumented feature. We found out how to move the BASIC rom to RAM and had endless fun documenting and modifying the BASIC interpreter using 6809 assembly.

Because I couldn’t afford a disk drive I wrote a disk simulator that would seek to a specific spot on the tape and then hit the ‘stop’ button on the cassette drive, then switch to record or play mode depending on whether I wanted to read or write a block. Auto-reverse cassette recorder doubled the storage space available :) I’m pretty sure Sony never foresaw that putting electrical push-buttons on their cassette recorders instead of the usual piano keys would allow some crazy dutch kid to use them as random access storage.

The dragon could interface to a TV or, if you fiddled around a bit with it to a monitor. I scavenged a ‘real’ monitor from a studio TV camera that I found in a dumpster, an old tube driven beast with a super sharp 8” black and white display. It kept losing sync as it warmed up but it had a ton of thumbwheels to adjust Hsync, Vsync and so on. Especially in winter this was lots of fun since the room I lived in didn’t have any heat. Effectively that old tube monitor was both my screen and my heater :)

My friend Henri and me had the same machine, we’d write assembly programs and then we’d call each other and transfer our code in ‘hex’ by typing it in line by line on the other end with a checksum to make sure we had not made any mistakes. Human modems!

Then came the KIM-1. In many ways this was a huge step down from the dragon. The KIM-1 was a very barebones computer, basically nothing but a board with a couple of 7 segment displays and a keypad that wouldn’t look bad on a calculator. The KIM-1 had only a few hundred bytes of memory and a 6502 CPU. This was interesting because it allowed me to learn 6502 assembler. Tape interface was through an FSK chip. What’s funny is that this was such a restrictive environment that you ended up having to be extremely creative in order to do anything useful at all.

Ever tried to play ‘snake’ on a couple of 7 segment displays?

Next up, one of my big loves, the BBC micro model ‘B’. The ‘beeb’ as it was known at the time was an absolutely amazing machine. Excellent hardware build quality, a switching power supply, several rom slots which you could use to install software available at boot time (exmon, word and a ton of others). What really set the BBC apart from the rest was the language that came with it, Acorn Soft structured basic. A basic which - unlike other basics at the time - allowed you to define functions and procedures by name rather than by line number. This opened up the world of structured programming for me and I distinctly remember that resounding click when I got it. Suddenly I could write programs several times larger without getting bogged down. Names are so much easier to remember than line numbers, and it made it much less of a chore to renumber a programs lines. (remember the renum command and how you had to re-set your whole internal symbol table about what lived where? No? lucky you!).

Mass storage ended up being two 160K teac 5 1/4” floppy drives, and the internal memory was expanded using a thingy called a ‘solidisk’ to 128K, using a technique called bankswitching. Every one of the 16 rom slots could be paged in for read or write into a 16K segment of the memory map.

After the BBC micro I moved on to the Atari ST. The ST was a serious step up from the 8 bit era. The Motorola 68000 that powered it could address a lot more memory. The initial run of the ST (the 260) had 256K of ram, then the 520 came and after that the 1040 with a full meg of RAM. That was an amazing amount of memory for that time and it seemed as though I would never write a program that would fill it all. (this didn’t take long, Jenny Yips laws of computing have held true over the years: eventually computer programs will fill every cycle, every byte of RAM and every bit of secondary storage that you’ve got). The ST came with something else as well, it had a hard drive interface and you could use this to connect a small selection of 5 1/4” hard disks to it. I eventually got a 20M hard disk and bought a C compiler. This bootstrapped my career as a free lance programmer and I proceded to write computer games profesionally for a studio in Leiderdorp (Aackosoft, long since bankrupt, two titles that I wrote that shipped were ‘FlightDeck’ and ‘Indy 500’.).

After the ST there was a brief period where I used an Acorn Risc Machine, but since it was a pre-production demo unit and it took forever for the machine to pick up more steam in the marketplace I ended up abandoning it. This was a real pity because it was an extremely powerful computer for the day, the chip that powered it (the ARM) is no used in countless mobile platforms and has survived where lots of others have not.

Next up, the PC era. I worked for a bank for a bit and got my first introduction to PCs there. The first PCs seemed quite underpowered compared to the computers that I’d been using and for the longest time I didn’t get what all the fuss was about. Even though the ST only had a megabyte of RAM the CPU was already using larger registers than the CPU in the PC and it could address that megabyte without resorting to bank switching or other tricks. But PCs got better with every new generation of CPU and by the time the 286 came out I got an el-cheapo mother board from some taiwanese manufacturer and a ‘hercules’ graphics board. A bit more scrounging got me another drive (a Seagate 40 MB unit) and this eventually gave me enough experience to start offering my services as a PC programmer as well. This was important because economically speaking the ST was doomed forever to be a ‘game computer’ (though you’d be surprised to see what we did with it, including a full CAD-CAM program directly driving lathes and mills!), and the PC was the choice of just about every business.

Programming the PC (after the ST with its linear memory space) really felt like a step back in many ways. But over time it got better, and after I discovered the QnX operating system it really came into its own. I wrote tons of software for the PC platform either for Windows or for QnX. Cad systems (for instance, for classical sail designs), process control, a whole suite of software around the idea of digitizing pictures, printing them on credit cards and distributing these (you probably have a descendant of that system in your pocket right now), editors, database applications, a good chunk of a message switch for telex messages used to broker shipping capacity and so on, and finally my own 32 bit QnX clone called ‘Unite!’, a multi-tasking multi-user operating system with built in networking and primitive clustering capabilities.

Around the time the world wide web launched I used SGI machines for several years. IRIX, SGI’s version of Unix was a really nice implementation and was quite fast. Hardware accelerated graphics meant that you could do reasonably complex 3D scenes with acceptable frame rates. It also doubled as my first web server, hooked up to a nearby provider using what was probably the longest run of coax on the internet at that time ;) The Indy as it was called was this funny little pizza box with a MIPS cpu running at 200 MHz, 32M of ram and internal 3.5” hard drive. It was quite fast and the operating system felt extremely well integrated with the desk top environment. To this day, whatever machine I’ve got I try to re-create that feeling as much as possible.

SGI eventually bit off more than they could chew with the acquisition of CRAY, the hardware was way overpriced compared to the PC offerings and eventually the company died and I was back to PCs.

In spite of the PCs (especially from the 386 onwards) dominance in the market, their utility and eventual performance and the fact that they powered a huge part of my professional career there was something special about those funny little 8 bit machines.

Apart from the operating system exercise (which, together with games programming taught me more about computers than anything else) I have over the years come to feel more and more out of touch with the machine. Those 8 bitters you could actually know, you’d be aware of each and every memory location and what was going on there, you could know those computers exhaustively, until there was literally nothing left that you did not know.

Nowadays when I boot my trusty Ubuntu machine (24G of ram, 48T of attached storage, 2.6GHz clock, one of those 8 bitters would fit in a very small corner of that machine) I feel strongly that it is impossible for me to fully ‘grok’ that computer. I have to rely on trust rather than knowledge that everything is the way it should be and when I program I know I write on top of countless layers of code written by others rather than directly to the machine. API gluing rather than actual coding. Of course the effect of tying together a few APIs with some glue code will outmatch anything you could have achieved in a lifetime writing on an 8 bitter but still, there is some aspect that is missing there.

I don’t actually know the computer that I’m using for my day to day work any longer. Those oldies they had personality, they were quirky and strange, each computer completely different from the others in many ways, and knowing them intimately gave you a tremendous edge. In that sense they were more personable, more individual.

A man named Jim Lawless just mailed me, we seem to have more than just a title in common, read his post as well if you feel like it and spot the 7 differences :) : Computers I have known.