IanG on Tap

Ian Griffiths in Weblog Form (RSS 2.0)

Blog Navigation

April (2018)

(1 item)

August (2014)

(1 item)

July (2014)

(5 items)

April (2014)

(1 item)

March (2014)

(1 item)

January (2014)

(2 items)

November (2013)

(2 items)

July (2013)

(4 items)

April (2013)

(1 item)

February (2013)

(6 items)

September (2011)

(2 items)

November (2010)

(4 items)

September (2010)

(1 item)

August (2010)

(4 items)

July (2010)

(2 items)

September (2009)

(1 item)

June (2009)

(1 item)

April (2009)

(1 item)

November (2008)

(1 item)

October (2008)

(1 item)

September (2008)

(1 item)

July (2008)

(1 item)

June (2008)

(1 item)

May (2008)

(2 items)

April (2008)

(2 items)

March (2008)

(5 items)

January (2008)

(3 items)

December (2007)

(1 item)

November (2007)

(1 item)

October (2007)

(1 item)

September (2007)

(3 items)

August (2007)

(1 item)

July (2007)

(1 item)

June (2007)

(2 items)

May (2007)

(8 items)

April (2007)

(2 items)

March (2007)

(7 items)

February (2007)

(2 items)

January (2007)

(2 items)

November (2006)

(1 item)

October (2006)

(2 items)

September (2006)

(1 item)

June (2006)

(2 items)

May (2006)

(4 items)

April (2006)

(1 item)

March (2006)

(5 items)

January (2006)

(1 item)

December (2005)

(3 items)

November (2005)

(2 items)

October (2005)

(2 items)

September (2005)

(8 items)

August (2005)

(7 items)

June (2005)

(3 items)

May (2005)

(7 items)

April (2005)

(6 items)

March (2005)

(1 item)

February (2005)

(2 items)

January (2005)

(5 items)

December (2004)

(5 items)

November (2004)

(7 items)

October (2004)

(3 items)

September (2004)

(7 items)

August (2004)

(16 items)

July (2004)

(10 items)

June (2004)

(27 items)

May (2004)

(15 items)

April (2004)

(15 items)

March (2004)

(13 items)

February (2004)

(16 items)

January (2004)

(15 items)

Blog Home

RSS 2.0

Writing

Programming C# 5.0

Programming WPF

Other Sites

Interact Software

Thirty Years of Backwards Compatibility

Wednesday 1 September, 2004, 04:22 PM

I was recently reading an entry in Eric Lippert's blog about error handling in VBScript. Towards the end, he shows a table of error code mappings.

The significance of this table may have passed you by.

This is commitment to backwards compatibility above and beyond the call of duty - how many software companies do you know that still maintain backwards compatibility with their first ever product? Don't believe me? Well take a look at the error codes for Altair BASIC, and compare them with those in Eric's article. Notice how all of the low numbers are the same. And it turns out that there are some errors that will come from the interpreter itself that are not listed in that map, but which are also the same as the old Altair error codes. For example, this:

On Error Resume Next
x = 1 / 0
wscript.echo(Err.number)

prints out 11, which is the old Altair error code for division by zero.

This puts the "20 year commitment to backwards compatibility" Jim Alchin demonstrated at the 2003 PDC by running VisiCalc into shadow. Altair Basic was Microsoft's first ever product, and was released in 1976, so by the time Longhorn ships, those error codes will be 30 years old. (And I'm assuming Longhorn will still be supporting VB Script.)

(I am indebted to Reuben Harris, developer extraordinaire, for pointing this out to me. Reuben produced an excellent annotated disassembly of the original Altair BASIC interpreter a few years back. Sadly it doesn't seem to be on the web right now. It's in the wayback machine though, here. Sadly, although his even more remarkable Altair emulator Java applet appears to be there too, it looks like the wayback machine doesn't have the actual class files...)

Copyright © 2002-2024, Interact Software Ltd. Content by Ian Griffiths. Please direct all Web site inquiries to webmaster@interact-sw.co.uk