I just located my copy of PC-SPITBOL for the IBM PC, 8086, circa 1983. This is a 16-bit version.
It can be downloaded here.
Here are some pictures of the manual and a screenshot showing PC-SPITBOL starting up:
PC-SPITBOL Manual, 1983
I did comparative runs of PC-SPITBOL 8086, SPITBOL/386, and CPython, using Cygwin on Windows XP:
CPython 55 seconds
SPITBOL/86 15 seconds
SPITBOL 8086 22 seconds
The numbers speak for themselves. PC-SPITBOL, written in 1983, is almost three times faster than CPython. SPITBOL/386, created over a decade ago, is more that four times faster than CPython.
Screenshot showing comparative times
Here are the test programs:
Python:
def add(a,b):
return a+b
def sub(a,b):
return a-b
n = 0
limit = 1000000
limit = limit * 50
trips = 0
for i in xrange(0, limit):
m = add(n, 1)
n = sub(m, 1)
trips += 1
PC-SPITBOL, 8086, 16-bit:
&stlimit = -1
define("add(a,b)") :(add_end)
add
add = a + b: (return)
add_end
define("sub(a,b)") :(sub_end)
sub
sub = a - b: (return)
sub_end
* repeat for limit1 * limit2 * limit3
n = 0
* limit = 1000000
* limit = limit * 50
* variant for 16-bit spitbol, need to keep numbers small
limit1 = 10000
limit2 = 100
limit3 = 50
trip3 = 1
lp3
trip2 = 1
lp2
trip1 = 1
lp1
m = add(n, 1)
n = sub(m, 1)
trip1 = trip1 + 1
le(trip1, limit1) :s(lp1)
trip2 = trip2 + 1
le(trip2, limit2) :s(lp2)
trip3 = trip3 + 1
le(trip3,limit3) :s(lp3)
output = limit1 " " limit2 " " limit3
end
SPITBOL/386, 32-bit:
&stlimit = -1
define("add(a,b)") :(add_end)
add
add = a + b: (return)
add_end
define("sub(a,b)") :(sub_end)
sub
sub = a - b: (return)
sub_end
n = 0
limit = 1000000
limit = limit * 50
trips = 0
lp
m = add(n, 1)
n = sub(m, 1)
trips = trips + 1
le(trips, limit) :s(lp)
output = trips
end
There is a bug in the “sourcecode” function in that right parenthesis followed by a colon is deemed to be a “smiley face” and so rendered as an image. I find this so charming that I have left it in.