I arrived for my first day at Microsoft during the afternoon of December 30, 1980. The company had just moved into their new location, occupying a third of the building at the corner of Northrup Way and 108th Avenue. Most of the offices were empty, and I had to work my way around boxes cluttering the hallways to find the way to my new boss, Charles Simonyi. He seemed a bit surprised, then ruffled through a stack of papers, handed me a stapled pair of pages to read, then walked me down the hall to select an office.
My office didn’t have a computer yet. I sat down and read the paper, which Charles had authored, describing the Hungarian naming convention for writing self-documenting code. Incidentally, Charles was from Hungary.
About an hour later, Steve Ballmer dropped by to say hi. He had hired me as part of the first 100 people at Microsoft who would be writing applications targeted for the new MSDOS operating system and the IBM PC. Steve chatted with me for a few minutes, ending the conversation with “I’ll let you get back to work.” That meant re-reading Charles’s paper, which really didn’t make much sense. (Several months later, after a chat with Charles, I would become a hard-core adopter of Hungarian.)
The following day, the last day of 1980, Charles gave me a copy of Kernighan and Ritchey, so I could learn C, and a description of the Zilog Z8000 architecture and instruction set. My first assignment would be to write a p-code interpreter that would run on the z8k. Of course we didn’t have an assembler yet, but that didn’t matter because I didn’t have a computer yet either.
Evening of that day, Martha and I went to the grocery store, trying to figure out how to stretch the $30 that remained in our bank account to last until my first paycheck. The next day was the New Year.
First day at work in 1981, someone installed a computer terminal in my office. It was tied to a DEC PDP-11 time-sharing system. Charles gave me another manual so I could learn to use Unix. A little later, I received a document describing the architecture of the virtual machine and p-code interpreter I was to implement on the Z-8000.
I was part of the new end user group Charles had formed at Microsoft. Our mission was to create new applications that would run on personal computers: spreadsheet, word processing, charting and database. These applications would be written in C, compiled by their new CS compiler into p-code, which would run on virtual machines we also developed for the many different personal computer architectures at the time: the Radio Shack TRS-80, IBM PC, Osborne, Commodore, Apple II, and Olivetti’s new z8k box. Charles’s strategy aimed at creating a revenue bomb because each new application would be written only one time, rather than separately for each pc architecture. Also, it was easier to write interpreters for new hardware than it was to create a new C Compiler.
I believe it was April by the time my p-code interpreter was running on the z8k. Proof came in the form loading and running compiled p-code from Microsoft’s new spreadsheet on the Olivetti computer. That was Multiplan.