Happy Birthday to us – for tomorrow.

Tomorrow, Microsoft will be 30 years old. Just for a change, I will post a blog that isn’t about debugging. Instead, I would like to look back to 30 years ago and compare what we have now with what we had then. I hadn’t used a computer back then. I wrote my first program when I was 14 and that was back in 1977. I wrote it on coding sheets and sent it off to be punched on to cards. The cards were then sent to be run and I got the printout back the next time there was a drop off. This was on an ICL 1900 series mainframe. If the timing worked out, I could go from an idea to a (hopefully) working 10 line program in as little as 8 days. Things were not so different back 1975.

Mainframes ruled the roost. Machines such as the IBM 1620 were at the end of their lifetime and hadn’t changed very much over the previous 10 years. The core could hold 60,000 digits – These were binary coded decimal machines so that would be effectively rather less than 40K in modern terms. In my last blog, I commented that memory accesses outside the cache were expensive. They are. They can take 20 nS. A memory access on a 1620 was 20 mS. The CPU could handle about 1800 additions per second. It could read 250 punch cards a minute giving a theoretical data rate of .33 K per second. Of course, there were faster machines on the market but these were systems still in commercial use.

Microcomputers were few and far between. They were mostly for self build hobbyists but there were a few commercially produced systems around. The MITS Altair 8800 was very impressive at the time. This was the first product to run Microsoft Software unless you count the traff-o-data which was really just a controller. The Altair was sold as a kit which was a common enough model. The Acorn Atom was sold that way a few years later. So was the UK101. But Altair was the first. The kit version was $397 for the base kit and $498 for a prebuilt one. It came with 256 bytes of RAM. 2K of RAM would cost you another $197. The video resolution was… well, none actually since it didn’t support a monitor. You needed a serial card to hook it up to a dumb terminal. They had cassette interfaces and if you have ever used paper tape then you might see that as a big improvement. Extended Basic from Bill and Paul was cheap at $150. The RAM needed to hold it was about $1200 and if you actually wanted to write a program then you would need some more. A terminal such as an Westrex 33 would cost about $1300-2000 depending on how new it was. For my sins, I have repaired those in an earlier job. So, let's do the sums. To have a system that ran Basic, saved to cassette and printed to a teletype came to about $3700 and that was 1975 dollars. That is about $13,300 in modern terms. No. Really. I am not kidding. Your software had cost you $540 in the same terms. VS.NET 2003 Pro costs $799 so that has gone up but you do get a bit more than a 12K BASIC in the package.

You may have noticed that I haven’t mentioned operating system. That is because you didn’t have one which is perhaps just as well given the cost of memory. You got dumped in the BASIC interpreter. This was true of systems for years. The Acorn Atom, the UK101, the Commodore Pet, the Sinclair (Timex to Americans) ZX80 and ZX81 all did this because only programmers had microcomputers. Oh, these were all 8 bit machines, naturally.

When I had my first job, CP/M was the only common operating system and it ran on Z80 based systems. S100 systems like the Altair were still common and I remember systems like the NorthStar Horizon with some fondness. A disk drive cost a week’s salary. An 8 pin dot matrix printer cost a month’s salary. A lazer printer cost a year’s salary.

When I joined Microsoft in 1995, Windows for Workgroups 3.11 was a common operating system and OS2 Warp was bright and shiny and new. The stock price was around $3. A Pentium 90 was a blisteringly fast machine.

Things have changed beyond all recognition in 30 years. There is one thing that has stayed the same though. There are worse ways to find a bug than walk through the code one line at a time. You just don’t fix it with tape and a razor any more.