|Developer(s)||Bill Gates, Neil Konzen|
Donkey, often known by its file name DONKEY.BAS, was a computer game written in 1981 and included with early versions of the PC DOS operating system distributed with the original IBM PC. It is a driving game in which the player must avoid hitting donkeys. While extremely simple compared to later PC games, and to games available for other systems at the time of its release, DONKEY.BAS is arguably a predecessor of all IBM PC games. The game is also notable because it was co-written by Microsoft co-founder Bill Gates.
When IBM was developing the PC in the late 1970s and early 1980s it contracted Microsoft to develop an operating system and a version of the BASIC programming language to release with the new computer. The operating system was released as PC DOS when included with IBM PCs and MS-DOS when sold separately by Microsoft. Both included versions of Microsoft BASIC.
The game continues to generate interest in part because of the involvement of Gates at a time when Microsoft was relatively small and only six years old. According to a speech delivered by Gates in 2001:
Actually, it was myself and Neil Thompson [sic] 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.
Apple's Andy Hertzfeld mentioned the game in a description of the Macintosh team's reaction to the 1981 IBM PC purchased for them by Steve Jobs "to dissect and evaluate," noting that the new computer shipped 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.
The first version of DONKEY.BAS was released in 1981, followed by version 1.10 in 1982. The operating systems with which the game was first distributed still work on modern computers with compatible BIOS and 5.25-inch floppy drives, however IBM BASICA which ran the program under PC DOS 1.x requires ROM-based IBM Cassette BASIC, which modern computers do not have. The source code is still available. The game may be played with the GW-BASIC (original code) or QBasic (adapted code) interpreters or in compiled form (see "external links" below).
DONKEY.BAS is an extremely simple driving game in which the player controls a car but cannot steer, accelerate or brake, only changing lanes to avoid a series of donkeys on the road. There is no goal other than to avoid donkeys.
The game uses the CGA display mode, the only colour graphics mode available on the original IBM PC. The mode allows four colours but in DONKEY.BAS there are usually only three on screen. The game's low-resolution graphics are very basic.
The center of the screen shows a vertical scrolling road with two lanes; the areas either side of the road are used for scores and instructions. The player's car is driving up the road and every few seconds a donkey will appear at random on one side of the road at the top of the screen. As the donkey moves down the screen the player can press the space bar to switch between lanes to avoid the donkey. If the car hits the donkey, both car and donkey explode, and parts of the graphics are scattered to the four corners of the screen to the sound of a short monophonic tune played through the PC speaker, with the word "BOOM!" displayed on the left side of the screen. If the player avoids the donkey, it will scroll off the bottom of the screen, with the words "Donkey loses!" displayed on the right side of the screen, and after a few seconds another will appear. There is never more than one donkey on the screen at any one time.
The game keeps score between the player and the donkeys. If the car hits a donkey, the donkey gets a point and the player is returned to the start of the road. As the car avoids donkeys it moves slowly up the screen, giving the player less time to react when donkeys appear. If the car avoids enough donkeys the player receives a point and the car is moved back to the bottom of the road. The game displays the number of points earned by the player and donkey but does not end or change when a particular score is reached.
Apart from pressing the space bar, the only control available to the player is to press the Esc key and quit the game.
The sprites rendered slightly differently between the QBasic interpreter and the original IBM BASICA/GW-BASIC interpreter.
Although on the game's title screen it is simply named Donkey, today it is often known by its file name as DONKEY.BAS or Donkey.bas. This was the name of the file containing the program and like all BASIC programs in DOS used the ".BAS" extension. All versions of DOS that came before Windows 95 displayed file names in upper case and this is often maintained when the game is referred to in writing.
As a programming example for the new .NET platform and Visual Basic .NET programming language, in 2001 Microsoft developed a game called Donkey .NET in homage to DONKEY.BAS. Donkey .NET is a three-dimensional driving game in which the aim is to hit donkeys. The game demonstrates to programmers how a Visual Basic .NET application can be structured and how to use various features of the .NET platform.
DONKEY.GB is a free software remake of the game in the modern Gambas variant of BASIC for Linux computers developed by Piga Software and hosted by icculus.org. The game requires a graphical layer unlike the original but features the same basic gameplay and artwork style. It is paced and scaled somewhat differently and allows players to win if they reach 10 points or to lose if the donkey gains 5 points. Piga released it on February 6, 2011 as part of their "Gambas Examples" collection.
iPhone and iPad
There's also a recreation of DONKEY.BAS for Apple's iOS. The app named DONKEY.BAS is compatible with iPhone, iPad and iPod Touch. Unlike the original game, the iOS game ends when the player hits the donkey 5 times. The game is more challenging as the downward speed of the donkey increases as the player wins more points. The app was released in the iTunes App Store on January 27, 2012.
- Source code at the Wayback Machine (archived September 18, 2013)
- Speech in which Bill Gates and Ari Bixhorn discuss DONKEY.BAS and Donkey .NET
- Story about Macintosh developers discovering DONKEY.BAS
- DONKEY.BAS source code adapted for QBasic.
- DONKEY.BAS executable, a compiled version of the above source code that can be executed on Windows PCs without an interpreter.
- Donkey .NET download from Microsoft.
- An implementation of DONKEY.BAS for the Picaxe microcontroller.
- Article on Donkey.bas with animation showing program running
- DONKEY.GB on PigaLore, the Piga Software Wiki
- An implementation of DONKEY.BAS for Windows Phone.
- DONKEY.BAS for iPhone and iPad
- DONKEY.BAS for Windows 8 in the Windows Store