DONKEY.BAS

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.

History
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.

DONKEY.BAS was written by Bill Gates and Neil Konzen to demonstrate the IBM PC and the BASIC programming language's capability to produce interactive programs with color graphics and sound.

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. Although the operating systems with which the game was first distributed do not work on modern computers, the source code is still available. The game can still be played with the QBasic interpreter (a later version of the interpreters with which DONKEY.BAS was included) or in compiled form (see "external links" below).

Game play
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. If the player avoids the donkey, it will scroll off the bottom 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 PC Basic/GW Basic interpreter.

Naming
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.

Donkey .NET
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.