It's hard to imagine now, but in the early days of Microsoft, Bill Gates was an actual programmer. One bit of hard evidence is the BASIC program DONKEY.BAS included with original IBM PCs running IBM DOS 1.10. The history of this weird little program is covered in a 2001 TechEd keynote by Gates himself:
ARI BIXHORN: Well, I am thrilled to be here today, because this week we are celebrating the ten-year birthday of the world's most powerful, productive and popular developer tool. And of course I'm talking about Visual Basic.Now, to help set the context for just how far Visual Basic has come and really how far the Basic language has come, I'd like to take a step back just a few years and look at an application that was written in Basic. This application, called Donkey.bas was actually written by none other than the gentleman standing to the left of me. Bill, how long ago was it that you wrote Donkey.bas?
BILL GATES: Actually, it was myself and Neil Konzen at four in the morning with this prototype IBM PC sitting in this small room. IBM insisted that we had to have a lock on the door and we only had this closet that had a lock on it, so we had to do all our development in there and it was always over 100 degrees, but we wrote late at night a little application to show what the Basic built into the IBM PC could do. And so that was Donkey.bas. It was at the time very thrilling. So go ahead and show them what that looks like.
Here's a small animation I captured of DONKEY.BAS running in a virtual machine:
Thrilling indeed. The Macintosh folks were suitably unimpressed:
[PC-DOS] came with some games written in BASIC that were especially embarrassing. The most embarrassing game was a lo-res graphics driving game called "Donkey". The player was supposed to be driving a car down a slowly scrolling, poorly rendered "road", and could hit the space bar to toggle the jerky motion. Every once in a while, a brown blob would fill the screen, which was supposed to be a donkey manifesting in the middle of the road. If you didn't hit the space bar in time, you would crash into the donkey and lose the game.We thought the concept of the game was as bad the crude graphics that it used. Since the game was written in BASIC, you could list it out and see how it was written. We were surprised to see that the comments at the top of the game proudly proclaimed the authors: Bill Gates and Neil Konzen. Neil was a bright teenage hacker who I knew from his work on the Apple II (who would later become Microsoft's technical lead on the Mac project) but we were amazed that such a thoroughly bad game could be co-authored by Microsoft's co-founder, and that he would actually want to take credit for it in the comments.
It's funny to think that DONKEY.BAS is part of Gates' legacy as a programmer. If nothing else, at least he has a healthy sense of humor about his past. The only copy of the source code for DONKEY.BAS I can find has been stripped of any credits by Gates or Konzen. It's a fairly short program, but it's also a painful reminder of how awkward programming was in 1981. Update: Leon was kind enough to send in an original copy of DONKEY.BAS from the DOS 1.1 disks.
During the TechEd 2001 keynote, Microsoft demonstrated a tongue-in-cheek, fully 3D update of Donkey written in the then-beta VB.NET language, to illustrate just how far BASIC had come in the intervening 20 years.
You can still download the VB.NET version of Donkey from Microsoft. It even converts to Visual Studio 2005 and .NET 2.0 fine. But I couldn't get it to run because of its oddball dependency on DirectX 8.
I suppose that's another enduring lesson of DONKEY.BAS; the various BASIC implementations have never been known for their stellar compatibility.
"Bill Gates was an actual programmer."
In the same way as I'm an actual ballerina, because I've attempted a pli?
Rik Hemsley on May 16, 2007 1:12 AM"Where ignorance is bliss, tis folly to be wise."
Bill Gates WAS an actual programmer. He was also pretty good. Check the website link for details. According to at least one book, he also used to come to DEC (if memory serves) to help fix bugs in their OS.
hehe, what a charming little "game".
Does the story say anything about why 2 guys sitting in a 100 degree room come up with a game about donkeys? :)
Anyway, how can a dotnet directx game, show how far visual basic has come?
I wonder why credits stripped.
Bill is so shy :)
--I wonder why credits stripped.
Not so hard to imagine why.. I guess it could also be that IBM's IP lawyers decided leaving the names there would ambiguise (is that even a word?) the license holder of that code.
Most folks that peruse this page would understand why this is no longer a problem - your rights to your code are signed off in your contract, thus the author can happily be left in the code.
Shakespeare back in his day was "just the writer", just as developers are viewed today by a lot of firms out there.
Brandon on May 16, 2007 2:23 AMCould Bill Gates write code? Yes, He Bloody Well Could!
http://www.theregister.co.uk/2001/05/15/could_bill_gates_write_code/
Raiders of the Lost Altair BASIC Source Code:
http://www.theregister.co.uk/2001/05/13/raiders_of_the_lost_altair/
Reuben Harris' Altair Basic Disassembly:
http://web.archive.org/web/20011211233332/www.rjh.org.uk/altair/4k/index2.html
Altair Basic Error Codes, some still used in VB today ;)
http://web.archive.org/web/20011224184550/www.rjh.org.uk/altair/4k/int_dis_3.htm
"Gates, Allen and Davidoff threw every trick at the book to squeeze the interpreter into 4 kilobytes. They succeeded and left some headroom for the programs themselves - without which it would have been pretty useless, of course."
peasant on May 16, 2007 2:25 AMHeh... ragging on a quick sample program Gates wrote in a couple hours is exactly the kind of douchebaggery I've come to expect from Mac users. ;)
Telos on May 16, 2007 5:14 AMI can tell you why it's a donkey..
Conversation:
: What are we going to put in the road.
: How about a dog.
: Okay.. Let me try something...
: Wow. That's a terrible looking dog.
: Well.. We don't have a whole lot of artistic talent or tools hanging around. We're working with blocks on a screen here.
: It does kind of look like a donkey...
... and donkey.bas was formed.
The moral:
If the spec says dog and you code a donkey.. change the spec to say donkey. =)
I like the moral of that story!
BobbyCannon on May 16, 2007 5:43 AMInteresting, around 1980 I was in 8th grade and we were playing with Commodore PET 2001's (16K memory and a tape drive for storage) and making games that reminded me of Donkey. A particular one I recall was a skier (A capital W with double quotes beneath for skies) going downhill trying to avoid trees and rocks. We used the natural screen scrolling to make it look like he was going downhill, and 'peek' and 'poke' commands to place him on the screen and to do collision detection. Maybe it was much simpler, but certainly not very complicated.
It seemed to have better game play that Donkey from what I can tell.
Eric on May 16, 2007 5:58 AM@Telos
You do know that the author of this site is a Windows coder, dont you? Windows users are fully capable of their own anti-Gates douchebaggery.
jhn on May 16, 2007 6:07 AMAnyone remember the game bananas? It was a physics about gorillas slinging bananas, pretty cool!
30 something on May 16, 2007 6:08 AMI found a copy of Donkey online a few years back. The code did include Bill Gate's name as one of the authors. At the time I also had a 286 still lying around that worked, but the floppy was bad. I ended up typing the source in on the 286 and ran it. It worked quite well, relatively speaking. It was rather amusing to see Bill Gate's name in the source and I wondered if it was actually him. I think I still have that 286 somewhere, hmm...
Jeff S on May 16, 2007 6:15 AM@jhn
I think he was referring to the second quote down...
Ross on May 16, 2007 6:32 AMThis was the first game my 4 year old ever played. He loved it.
While not related to Steve, this was possibly the first computer game I ever played, at age 4, and I too could not get enough of it.
Dugald Wilson on May 16, 2007 6:46 AMI knew Bill Gates in college ('72-75) and used to tease him about his late nights hunched over a PDP-10 terminal writing code for "hobbyist micros". He was a damned good programmer.
Chris Ryliand on May 16, 2007 6:47 AMFor a game written in Basic in 1981, this isn't really that bad.
Steve McGuigan on May 16, 2007 6:51 AMAh.
Let me tell you a little story. About 5 years ago I was up in New York working for a small financial services company. Our CIO who we had just hired was a former MITS guy who worked with Ed Roberts "back in the day", and was essentially the interface between BillG and MITS way back when.
So one day, my birthday rolls around (it's June 10th -- it's OK if you get me a gift) and he shows up at my desk with this huge stack of paper in one of these old 70's looking binders. I'm thumbing through it all, and it's a code listing -- PDP-8 (or 11? I forget) assembly code. Pages and pages of it. I had no idea what I was looking at. He says, "Happy Birthday." I give him a puzzled look. He says, "Look at the top of the page." And there, sure enough, "Microsoft BASIC 1.0 By Bill Gates and Paul Allen".
"Holy Crap! Is this my birthday present?" (tongue in cheek)
"Your birthday present was that you got to SEE it."
Still a great and memorable birthday present. I can't believe he saved it all these years, especially in the late 70's and early 80's. But now it's got to be worth at least a hundred large or two. That looked like code to be proud of.
Well, may be I could hate uncle Bill as much as you do all together, but... I'm a two-legged donkey old enough to remember the time where graphical modes didn't exist, and people having a Hercules graphic card, 2bits depth (monochrome!), on a green phosphore screen were the kings. I wonder what could do many modern programmers with such a technology, where showing data on screen was not as easy as dropping components and then calling "form1.Load". "Wow, I'm the best!!"- says today the omnipresent lamer, after writing 20 lines of code. I think history is always valuable, doesn't deserve to laugh to.
oscar on May 16, 2007 8:18 AM"Heh... ragging on a quick sample program Gates wrote in a couple hours is exactly the kind of douchebaggery I've come to expect from Mac users. ;)"
Except the ragging didn't come from Mac Users. Well in a way it did. They were Mac CREATORS. From back in the day when you didn't have the crutch of a framework and a bug in your code meant stopping production on the chips and starting over. ;)
Scott on May 16, 2007 8:20 AM@30 something
My very first programming experience was with bananas... Ah, simpler times. :)
Matt Rudder on May 16, 2007 8:22 AM@jhn
I was referring to the quote from the Macintosh people, not this article.
@Scott
So you're saying Mac creators are as big of douchebags as Mac users? ;)
Telos on May 16, 2007 8:28 AMYeah, Gates was a programmer. Who do you think wrote the conversion of Dartmouth Basic for the trash 80's, Apple II's, "Commodors, etc. Where do you think Digital Research went to get and license their CPM Basic?
Gates; thats who and he is the guy that wrote the original Basic interpreter that was adapted to those machines...
Don't forget Microsoft was orginally in the supplying Basic interpreters game, OS and applications came later...
By the way, ever try to program anything of significance on an 8 bit processor with 16K of memover and 60k of floppy (two if you could afford it). Now try to program anything significant with graphics in it. You better know assembler.
I tell, you young programmers don't know how easy you have it. Most of the grunt work is already taken care of for you so you can simply type something like Move mySprite (X, Y) instead of a couple of thousand:
LDA H1024
LDX H1028
MOV X, H1030
...
By the way, what do you think Gates wrote the interpreters in? Assembler.
rabid wolverine on May 16, 2007 8:34 AMProgramming even the simplest side-scroller without background/layering and sprite libraries is no easy task. It's pretty amazing that Bill and Neil churned that out in a single night.
I find it funny that the Mac guys thumb their noses at it in hindsight, as if they had developed or seen anything that much better in 1981. The abomination that was the Apple Lisa didn't even come out until 1983. Hell, Macs didn't even get colour until about 1990. And he compares the 8088 to the 68000, but by the time they were using the 68000 in production, PCs were already using the 80286 and even the 80386. Sheesh, that site is riddled with so many historical inaccuracies and embellishments, it's no wonder they call it "folklore".
Aaron G on May 16, 2007 9:27 AMWow, I'm impressed that you got things running and have links to the back stories for this. This was a great little trip down memory lane. 8^D
...oh and I was a gorillas player as well. Got some friends in high school into it and we'd spend way too much time before class on the teacher's computer 8^D
Sean Patterson on May 16, 2007 9:32 AM> A particular one I recall was a skier
Perhaps an early SkiFree?
http://www.codinghorror.com/blog/archives/000471.html
> Anyone remember the game bananas? It was a physics about gorillas slinging bananas, pretty cool!
Yep, it was!
http://www.codinghorror.com/blog/archives/000403.html
Viewer.vb, Line 98:
Private DonkeysHit As Integer = 0
Of course, VB isn't case-sensitive...
Eric Kemp on May 16, 2007 9:46 AMif anyone can get the donkey.net to work, i'd like to have the solution.
VF on May 16, 2007 10:11 AMIt's a painful reminder of how *BASIC* programming is, not how programming was in 1981. At the time, you could still have chosen Lisp or (god forbid) C instead :)
Barry Kelly on May 16, 2007 10:13 AMI think the point is that it's probably one of the worst videogames ever made.
art on May 16, 2007 10:24 AMJeff, you imply that all programming in 1981 was awkward.
What about Smalltalk an Lisp? They both predate MS Basic, and they are generally considered as being among the most elegant programming languages.
Timo Stamm on May 16, 2007 10:44 AMIt's a pretty fugly game and a worthless time waster. But back in the early 80s I probably would have spent at least a couple of days playing it. Any better and you would have paid a quarter to play it!
Does anybody have a cell-phone or PDA port in Java yet?
Chubber on May 16, 2007 10:51 AMTo be honest, I think most of the negative boo-hiss comments about Bill coding are just out of spite.
If he some 20+ years ago took part in coding some BASIC language demonstration, which looks awful by todays standards, it doesn't mean it was _that_ bad at the time - as a demo.
Its not like they were developing a commercial game for sales etc. It's just something demonstrating BASIC language at the time.
Those of us who actually worked on programming/computers at the time, know what it was like and how games looked 20 years ago. Remember those source code printouts in magazines that you had to type into your machine? Yes, that kind of stuff.
Press play on tape
and best regards,
Tommi
What's scary is how few lines of code it took! Look at the size of the .NET download. This is PROGRESS?!
steve on May 16, 2007 12:40 PM> those source code printouts in magazines that you had to type into your machine? Yes, that kind of stuff.
I think I do, yes :)
http://www.codinghorror.com/blog/archives/000414.html
http://programming.reddit.com/info/1r4bh/comments/c1r5fj
"A very historic moment in Microsoft's history. A bunch of asses in your way, and crashing is pretty much inevitable. My, how things of changed!"
Genius. Utter genius.
Jeff Atwood on May 16, 2007 1:03 PMOh wow! Now we know where the inspiration for the dogcow (http://en.wikipedia.org/wiki/Dogcow) comes from! And you thought it was an original idea by Apple.
Martin on May 16, 2007 1:34 PMI remember being absolutely wow'd by Gorillas.bas back in the day. As I learned/toyed with QBASIC (heh) it was a great deal of fun to slowly modify the game so that you could throw super destructive bananas, (by arcing your banana through a 'power ring' in the sky) and all sort of other ridiculous things.
In hindsight, that was probably my first game-mod...
N on May 16, 2007 1:42 PMAaron: 1987, not 1990, actually.
Later than the PC, but full 640x480x256 (ala VGA, which was only available on the PS/2 in 1987), which shamed the EGA (640x350x16) of most PCs.
I'm not sure that CGA (640x200 mono or 320x240 4-color-of-16) vs. 9" Mac mono (512x342 mono) is something that's a definite win for CGA simply because CGA had color...
I'm not much of one for platform wars, having used and liked both PCs and Macs (and unix) for ages upon ages now, but ... shall we talk about multiple monitor support, then, if we're going to go there?
Sigivald on May 16, 2007 1:55 PMDONKEY.BAS is actually a great illustration of the early philosophy of MS/PC vs. the Mac philosophy (which has endured to this day, unlike the MS/PC philosophy): The PC and BASIC are for churning out crappy hacks at 4AM that get something simple done acceptably well, not spending days/weeks/months wandering through the Mac toolkit documentation, compiling Pascal, tring to figure the frameworks out, creating icons and graphics, and trying to make some really elegant program.
Reed on May 16, 2007 2:18 PMCompare that idea to Donkey.net to see how much the programming philosophy of MS has changed:
"Donkey .NET is a three-dimensional driving simulator game that demonstrates the new features available to Microsoft Visual Basic developers. Written in Visual Basic .NET RTM, this sample uses XML Web services, multithreading, structured exception handling, shaped Windows Forms, and custom-drawn controls. The sample includes the setups for both the game application and an optional XML Web service used with the game. The setups will also install the source code."
jeebus. I know it's supposed to basically be a parody, but that means that there's somtehing there to parody!
Reed on May 16, 2007 2:21 PM@art: I think the point is that it's probably one of the worst videogames ever made.
I dunno, there's always FF8 and FF12. Certainly contenders, anyway.
"@Scott
So you're saying Mac creators are as big of douchebags as Mac users? ;)"
Well the possibilities for people to be douchebags are endless. But what I'm saying is if someone who's a fan of classical music tells you that a cello player isn't very good. You say, "sure, what ever". If Yo Yo Ma tells you that a cello player isn't very good, you take it more seriously. ;)
Scott on May 16, 2007 4:07 PMI don't see how Mac creators are anywhere near Yo Yo Ma-like. :P
Telos on May 16, 2007 4:18 PMWhile people opinions about MS & Bill may vary, Bill wrote a basic interpretor for the ALTAIR and to write it, he had to write an emulator of the ALTAIR. I don't know about you, but writing interpretors and emulators on mid-1970's machines counts as rocket science in my book. The annotated disassembly of it can still be found on the web.
Matthew Martin on May 16, 2007 5:41 PMany one can understand what the game is?
inqwisitive on May 16, 2007 10:25 PM
There was a Microsoft Lisp avilable in the 80's. The product had a very short life.
N: Yes, I also enjoyed tweaking various parts of the code to create banana's that wiped out half the screen.
I didn't really understand what I was doing... but it was fun to fiddle with the source and get instant results :)
Peter Bridger on May 17, 2007 8:37 AMI'm too lazy to look into why is is right now, but in regards to Donkey.net: If you get the "type mismatch error" on line 208 in file "Viewer.vb", you can mangle the file path and it will run without error. Go figure.
The name beneath on May 17, 2007 9:42 PMAnyone remember the game bananas? It was a physics about gorillas slinging bananas, pretty cool! - 30 something on May 16, 2007 06:08 AM
I do indeed, exploding bananas. It was similar to scorched earth, a more logical tank game or indeed Worms of more recent. It was fun as... well as gorillas throwing exploding bananas at each other.
Burnman on May 22, 2007 7:05 AMI don't understand this... isn't the driver's score always going to be zero?
I can't tell you how many programs like this I made myself. My masterpiece was "Chew Man Fu" - an oriental-theme Pac-Man clone for the C-64. I would love to get the source codes from some of these old games. Anybody up for "World Power" :)
Does anyone even remember that?
Jasmine on May 24, 2007 4:06 PMhttp://en.wikipedia.org/wiki/DONKEY.BAS
The page has recently been updated.
===
Note that the vast majority of 'software historians' disagree with the statement that "... it is arguably a predecessor of all IBM PC games."
They consider it a dead and failed branch of the software evolutionary ladder. And it is.
===
Am I the only one who finds it ironic that the man behind Microsoft Windows was originally successful for his small, efficient code in Altair BASIC?
Dan G. on September 24, 2007 7:27 AMThat's f***ing weird. My name is Dan G too.
Dan G on September 24, 2007 5:04 PMDoes anyone notice that the sprites are rendered slightly different depending on if you are running the original IBM Basic version of DONKEY.BAS in GW Basic (Microsofts standalone of the original IBM Basic interpreter)or in QBasic?
random guest on October 21, 2007 10:52 AMYes, he was a programmer, he (co-)wrote the M$ BASIC interpreter IIRC and it was pretty bad, constant crashes, etc.
I used that program on the Amiga, truly awful language, truly awful implementation.
Luke.
hello a guy 4rm nigeria lucky Moses
lucky on January 27, 2009 1:17 AM@Telos
Careful now...some of us like FF12...
I'll grant you its not the greatest FF game ever made, but it's still fun.
Joe on January 27, 2009 5:47 AMThe story from the Apple folklore site states: "We were surprised to see that the comments at the top of the game proudly proclaimed the authors: Bill Gates and Neil Konzen."
Yet the "original copy of DONKEY.BAS from the DOS 1.1 disks" doesn't show the names of the authors (proudly or otherwise.)
So is this not the original source code, or is the "folklore" story site just made up?
Winslow Theramin on February 23, 2009 10:03 AMI remember playing this several decades ago. Maybe around 1986, when I was 11. My whole family went to visit on of my father's co-workers. I always immediately went to either the Atari 2600 or the IBM he had. The one time I picked the IBM, he loaded up Donkey for me. I remember liking it.
Steve on July 29, 2009 8:59 AM| Content (c) 2009 Jeff Atwood. Logo image used with permission of the author. (c) 1993 Steven C. McConnell. All Rights Reserved. |