If Looks Could Kill

by Leonard Tramiel

At one of the many computer trade shows over the years I had a really funny interaction with Bill Gates. I was doing demos on the PET and answering the questions of those that walked by. I noticed a large group of people approaching, but at first I didn’t recognize anyone. As they got closer I saw that it was Bill Gates leading the others around. There was a translator repeating what Bill said into Japanese.

When they reached me Bill walked up to a PET and typed WAIT 6502,10. This caused the machine to hang and he froze. I said, quietly enough in the loud hall that only he could hear, “Bill, there’s nothing at 6502 so that’s just going to freeze”. He turned and gave me a look that was a perfect example of a look that could kill. I knew what he was doing so I turned to the group and said something along the lines of, “Microsoft BASIC is a valuable part of this machine”. Bill relaxed and the group left the suite.

The WAIT command in Microsoft BASIC was an unusual addition to the language that allowed very low level access to the hardware of the system. It would not go to the next step in the program until the memory location in the first parameter met certain criteria, the details don’t matter here. There is no doubt that Bill knew this so why would he type something that would hang the machine? There was a bit of special code, now known as an Easter Egg, that, when the location was 6502, would print MICROSOFT! the number of times indicated in the second parameter. He was expecting this to print the name of his company on the screen to indicate that it was his BASIC in the machine. What he didn’t know, until then, was that the Easter Egg had been found and removed. Microsoft gave us a fanfold printed listing of BASIC with the Easter Egg hidden by a NOLIST directive which appeared in that listing. John typed in the entire listing to create the source code for BASIC 4.0 and converted all the macro assembly to standard 6502 assembly language. To reveal what was hidden in the NOLIST area, the object code from Microsoft was disassembled. As soon as it became apparent what the code contained, the Easter Egg was removed as it really was a bug that could cause code not to work if a programmer really wanted to execute WAIT 6502!

Popular posts from this blog

Calculators, codes, and hidden messages

Programming by Tweezer