BASIC
From Maze
(Difference between revisions)
(→Altair BASIC and Micro-Soft) | |||
| Line 25: | Line 25: | ||
The computer programs that followed in the electromechanical and early electronic age of computing were quite a bit less intelligible, with a much less direct relationship to familiar symbols. The ENIAC, a fully electronic computer built at the University of Pennsylvania from 1943 to 1945, was programmed initially by plugging in an elaborate set of cables (da Cruz). To run particular calculations, constants were then set using dials. | The computer programs that followed in the electromechanical and early electronic age of computing were quite a bit less intelligible, with a much less direct relationship to familiar symbols. The ENIAC, a fully electronic computer built at the University of Pennsylvania from 1943 to 1945, was programmed initially by plugging in an elaborate set of cables (da Cruz). To run particular calculations, constants were then set using dials. | ||
| − | The next step in programming was machine language. A program in machine language is simply a sequence of numbers. On the ENIAC, these were decimal (base 10) numbers, but different bases were used on other significant early systems. The EDVAC used binary; the ORDVAC, octal; and the BRLESC, sexadecimal (Bergin p. 62). In all of these cases, programmers needed to arduously determine the sequence of numbers that would constitute a program, writing something that did not look remotely like human language. Each operation the computer was to perform corresponded to a number, while the operands, if there were any, were provided as similar numbers. For instance, to jump unconditionally to a particular absolute address, an opcode such as "76" (in base 10) is used, followed by two bytes specifying the address. In fact, this is the opcode used for an unconditional branch to an absolute address on the Commodore 64. | + | The next step in programming was machine language. A program in machine language is simply a sequence of numbers. On the ENIAC, these were decimal (base 10) numbers, but different bases were used on other significant early systems. The EDVAC used binary; the ORDVAC, octal; and the BRLESC, sexadecimal (Bergin 62). In all of these cases, programmers needed to arduously determine the sequence of numbers that would constitute a program, writing something that did not look remotely like human language. Each operation the computer was to perform corresponded to a number, while the operands, if there were any, were provided as similar numbers. For instance, to jump unconditionally to a particular absolute address, an opcode such as "76" (in base 10) is used, followed by two bytes specifying the address. In fact, this is the opcode used for an unconditional branch to an absolute address on the Commodore 64. |
| − | A more legible form of code arose in the second generation programming languages, assembly languages. Assembly allows the use of mnemonics for operators such as LDA ("load accumulator"), JMP ("jump"), and INC ("increment memory") to stand in for the less easily remembered numeric codes. On the Commodore 64, the letters JMP followed by an absolute address are converted by the assembler to "76" in a machine language program. The first assembler ran on Cambridge University's EDSAC, the first stored-program computer, in 1949 (Campbell-Kelly and Aspray p. 184). | + | A more legible form of code arose in the second generation programming languages, assembly languages. Assembly allows the use of mnemonics for operators such as LDA ("load accumulator"), JMP ("jump"), and INC ("increment memory") to stand in for the less easily remembered numeric codes. On the Commodore 64, the letters JMP followed by an absolute address are converted by the assembler to "76" in a machine language program. The first assembler ran on Cambridge University's EDSAC, the first stored-program computer, in 1949 (Campbell-Kelly and Aspray 184). |
Although cryptic compared to a high-level language such as BASIC, an assembler program is nevertheless much more comprehensible to a human than a machine language program is. While assembly is still used today in, for instance, programming firmware and in the demoscene, there are usually significant disadvantages to programming at this level. Programming in assembly highlights technical details of platforms and the transfer of values between memory locations and registers. Higher-level languages allow the programmer to concentrate on other matters, such as solving mathematical and scientific problems or modeling business processes. | Although cryptic compared to a high-level language such as BASIC, an assembler program is nevertheless much more comprehensible to a human than a machine language program is. While assembly is still used today in, for instance, programming firmware and in the demoscene, there are usually significant disadvantages to programming at this level. Programming in assembly highlights technical details of platforms and the transfer of values between memory locations and registers. Higher-level languages allow the programmer to concentrate on other matters, such as solving mathematical and scientific problems or modeling business processes. | ||
| Line 37: | Line 37: | ||
Programs written in early versions of COBOL and FORTRAN were specific to the punched card in certain ways: COBOL reserved columns 1-6 for the line number and column 7 for a continuation mark if the card's code ran on from the previous one. FORTRAN was similar, with columns 1-5 indicating the statement number. "Comments" (usually the program name) went in columns 73-80 in both languages; a "C" in the first column indicated that the whole FORTRAN card was to be considered a comment. Unless a programmer wrote a one-liner -- which in this case means writing a program that fits on a single card -- a COBOL or FORTRAN program would take the form of a stack, often a massive stack, of punched cards. These had to be punched on a keypunch machine and fed into a card reader by an operator. Line numbers were of great importance in one particular situation: if someone dropped the stack of cards and they needed to be sorted into order. | Programs written in early versions of COBOL and FORTRAN were specific to the punched card in certain ways: COBOL reserved columns 1-6 for the line number and column 7 for a continuation mark if the card's code ran on from the previous one. FORTRAN was similar, with columns 1-5 indicating the statement number. "Comments" (usually the program name) went in columns 73-80 in both languages; a "C" in the first column indicated that the whole FORTRAN card was to be considered a comment. Unless a programmer wrote a one-liner -- which in this case means writing a program that fits on a single card -- a COBOL or FORTRAN program would take the form of a stack, often a massive stack, of punched cards. These had to be punched on a keypunch machine and fed into a card reader by an operator. Line numbers were of great importance in one particular situation: if someone dropped the stack of cards and they needed to be sorted into order. | ||
| − | FORTRAN's GOTO command was the basis for the GOTO in the original BASIC (MoP p. 86), which of course was carried over into Commodore 64 BASIC. GOTO functions in the same way the assembly language JMP does. There is not much of an advantage to using BASIC if one is simply interested in easily writing JMP, but other BASIC commands, such as PRINT, allow one to efficiently accomplish what would take very many machine-language operations. | + | FORTRAN's GOTO command was the basis for the GOTO in the original BASIC (MoP 86), which of course was carried over into Commodore 64 BASIC. GOTO functions in the same way the assembly language JMP does. There is not much of an advantage to using BASIC if one is simply interested in easily writing JMP, but other BASIC commands, such as PRINT, allow one to efficiently accomplish what would take very many machine-language operations. |
The creators of BASIC hoped to develop a programming language for the next computing revolution, one that would go beyond punched cards and batch processing to allow numerous users interactive access to a system simultaneously. This revolution was time-sharing. | The creators of BASIC hoped to develop a programming language for the next computing revolution, one that would go beyond punched cards and batch processing to allow numerous users interactive access to a system simultaneously. This revolution was time-sharing. | ||
| Line 43: | Line 43: | ||
== Dartmouth BASIC and Time-Sharing Minicomputers == | == Dartmouth BASIC and Time-Sharing Minicomputers == | ||
| − | In 1962, change was sweeping through the remote Dartmouth campus. ''Time'' noted late that year, in article that declared the college was coming "out of the woods," that the school had built a major new arts center and that John Kemeny, who had made full professor at age 27, had built "the best college math department in the country." That year, Kemeny and his colleague Thomas Kurtz had started developing a time-sharing system and a new programming language for the education of all students at Dartmouth -- not just those studying math, science, or engineering. They aimed to make a radical improvement in access to computers and to computer programming. "While the availability of FORTRAN extended computer usage from a handful of experts to thousands of scientific users," Kemeny wrote, "we at Dartmouth envisaged the possibility of millions of people writing their own computer programs." (Man and the Computer p. 30) | + | In 1962, change was sweeping through the remote Dartmouth campus. ''Time'' noted late that year, in article that declared the college was coming "out of the woods," that the school had built a major new arts center and that John Kemeny, who had made full professor at age 27, had built "the best college math department in the country." That year, Kemeny and his colleague Thomas Kurtz had started developing a time-sharing system and a new programming language for the education of all students at Dartmouth -- not just those studying math, science, or engineering. They aimed to make a radical improvement in access to computers and to computer programming. "While the availability of FORTRAN extended computer usage from a handful of experts to thousands of scientific users," Kemeny wrote, "we at Dartmouth envisaged the possibility of millions of people writing their own computer programs." (Kemeny 30) |
| − | To reach millions, Kemeny and Kurtz would clearly have to significantly lower the existing barriers to programming, barriers which were related not only to the esoterics of programming languages but also to the material nature of programming. The two began working with a team of undergraduates to develop the Dartmouth Timesharing System, and with it the BASIC programming language. They considered developing a subset of FORTRAN or Algol, but found these options unsuitable (Masterminds of Programming p. 79). As Kurtz told an interviewer, "we wanted ... to get away from the requirements that punched cards imposed on users, which was that things had to be on certain columns on the card." (Masterminds of Programming p. 81) They saw the value of an interactive time-sharing system for allowing users to quickly correct minor errors rather than coming back 24 hours later with a new stack of punched cards for their next scheduled batch job. They also relaxed some of the specific requirements that were tied to using keypunch machines and cards. Oddly enough, BASIC was so relaxed that spaces between tokens were optional in Dartmouth's versions of the language. Spaces were ignored, as Kurtz explains, because "some people, especially faculty members, couldn't type very well." (MoP p. 81) This aspect of Dartmouth BASIC was carried over onto the Commodore 64, as mentioned in the introduction. | + | To reach millions, Kemeny and Kurtz would clearly have to significantly lower the existing barriers to programming, barriers which were related not only to the esoterics of programming languages but also to the material nature of programming. The two began working with a team of undergraduates to develop the Dartmouth Timesharing System, and with it the BASIC programming language. They considered developing a subset of FORTRAN or Algol, but found these options unsuitable (Masterminds of Programming 79). As Kurtz told an interviewer, "we wanted ... to get away from the requirements that punched cards imposed on users, which was that things had to be on certain columns on the card." (Masterminds of Programming 81) They saw the value of an interactive time-sharing system for allowing users to quickly correct minor errors rather than coming back 24 hours later with a new stack of punched cards for their next scheduled batch job. They also relaxed some of the specific requirements that were tied to using keypunch machines and cards. Oddly enough, BASIC was so relaxed that spaces between tokens were optional in Dartmouth's versions of the language. Spaces were ignored, as Kurtz explains, because "some people, especially faculty members, couldn't type very well." (MoP 81) This aspect of Dartmouth BASIC was carried over onto the Commodore 64, as mentioned in the introduction. |
BASIC was designed in other ways to help new programmers, with "error messages that were clear and friendly" and default options that would satisfy most users' needs (9). "If the expert needs something fancier," Kemeny and Kurtz declared, "let the expert do the extra work!" (11). Since BASIC was meant to be a true high-level language, programmers would not need any detailed knowledge of the specific hardware being used either. The initial idea, at least, was that programmers would not have to care about the computer that BASIC happened to be running on. | BASIC was designed in other ways to help new programmers, with "error messages that were clear and friendly" and default options that would satisfy most users' needs (9). "If the expert needs something fancier," Kemeny and Kurtz declared, "let the expert do the extra work!" (11). Since BASIC was meant to be a true high-level language, programmers would not need any detailed knowledge of the specific hardware being used either. The initial idea, at least, was that programmers would not have to care about the computer that BASIC happened to be running on. | ||
| − | DTSS and the versions of BASIC that ran on it served almost all of the students at that college: Kemeny stated in 1971 that 90% of seven classes of freshmen had received computer training. Access to Dartmouth's system extended to many other campuses, and it was not the only time-sharing system with BASIC. By 1965, General Electric -- on whose computers DTSS and the original BASIC ran -- was offering a commercial time-sharing service that included BASIC (Waldrop p. 292). Before the microcomputer revolution, other college and university students were taking required courses in computing using BASIC -- at NYU's business school, for instance. Even before the arrival of home computers with built-in BASIC, the language had extensive influence. And even before the microcomputer era and the full toppling of BASIC's Tower of Babel, the permissive attitude of Kemeny and Kurtz had led to many different implementations of BASIC for different systems. Writing in 1975, one author commented: "BASIC systems differ among themselves in much the same way that the English language as we know it differs among the English-speaking nations around the globe." (Mullish p. 6) BASIC's openness and widespread adoption, combined with a lack of any enforced standard, meant that the language wasn't as independent of particular hardware as had been hoped. | + | DTSS and the versions of BASIC that ran on it served almost all of the students at that college: Kemeny stated in 1971 that 90% of seven classes of freshmen had received computer training. Access to Dartmouth's system extended to many other campuses, and it was not the only time-sharing system with BASIC. By 1965, General Electric -- on whose computers DTSS and the original BASIC ran -- was offering a commercial time-sharing service that included BASIC (Waldrop 292). Before the microcomputer revolution, other college and university students were taking required courses in computing using BASIC -- at NYU's business school, for instance. Even before the arrival of home computers with built-in BASIC, the language had extensive influence. And even before the microcomputer era and the full toppling of BASIC's Tower of Babel, the permissive attitude of Kemeny and Kurtz had led to many different implementations of BASIC for different systems. Writing in 1975, one author commented: "BASIC systems differ among themselves in much the same way that the English language as we know it differs among the English-speaking nations around the globe." (Mullish 6) BASIC's openness and widespread adoption, combined with a lack of any enforced standard, meant that the language wasn't as independent of particular hardware as had been hoped. |
| − | While BASIC was a significant project at Dartmouth, it was only one part of the push to expand access to computing that resulted in DTSS, allowed sites all around the East Coast to connect to Dartmouth's computers, and fostered a more productive and creative relationship to computing. In his 1972 book ''Man and the Computer,'' Kemeny defends programming and playing games and other "recreational" uses of the computer as important, writing that such activities are relaxing and help people to overcome their fear of computers (p. 35). Kemeny also describes some of the context in which BASIC programming was done at Dartmouth: "The computation center is run in a manner analogous to Dartmouth's million-volume open-stack library. Just as any student may go in and browse the library or check out any book he wishes without asking for permission or explaining why he wants that particular book, he may use the computation center without asking permission or explaining why he is running a particular program." (Man and the Computer p. 33) It was not only the BASIC programming language, but also the development of this permissive attitude toward computing that allowed for programs with no obvious military, business, or scientific purpose -- programs such as 10 PRINT -- to come about. | + | While BASIC was a significant project at Dartmouth, it was only one part of the push to expand access to computing that resulted in DTSS, allowed sites all around the East Coast to connect to Dartmouth's computers, and fostered a more productive and creative relationship to computing. In his 1972 book ''Man and the Computer,'' Kemeny defends programming and playing games and other "recreational" uses of the computer as important, writing that such activities are relaxing and help people to overcome their fear of computers (35). Kemeny also describes some of the context in which BASIC programming was done at Dartmouth: "The computation center is run in a manner analogous to Dartmouth's million-volume open-stack library. Just as any student may go in and browse the library or check out any book he wishes without asking for permission or explaining why he wants that particular book, he may use the computation center without asking permission or explaining why he is running a particular program." (Kemeny 33) It was not only the BASIC programming language, but also the development of this permissive attitude toward computing that allowed for programs with no obvious military, business, or scientific purpose -- programs such as 10 PRINT -- to come about. |
It's remarkable that Kemeny was able to further his liberal ideas about computers and education from the position he attained in 1970: President of Dartmouth College. He served in that role until 1981, presiding over Dartmouth's conversion to a coeducational campus, removing the "Indian" as the college's mascot, and encouraging efforts at the recruitment of minority students. On his final day as president, he gave a commencement address that warned students, including those involved in the recently-founded conservative ''Dartmouth Review,'' against the impulse that "tries to divide us by setting whites against blacks, by setting Christians against Jews, by setting men against women. And if it succeeds in dividing us from our fellow beings, it will impose its evil will upon a fragmented society" (Faison). After leaving the presidency of Dartmouth, he returned to full-time teaching. He died in 1992. Thomas Kurtz continued to teach at Dartmouth long after he worked on BASIC, directing the Computer and Information Systems program there from 1980 to 1988. | It's remarkable that Kemeny was able to further his liberal ideas about computers and education from the position he attained in 1970: President of Dartmouth College. He served in that role until 1981, presiding over Dartmouth's conversion to a coeducational campus, removing the "Indian" as the college's mascot, and encouraging efforts at the recruitment of minority students. On his final day as president, he gave a commencement address that warned students, including those involved in the recently-founded conservative ''Dartmouth Review,'' against the impulse that "tries to divide us by setting whites against blacks, by setting Christians against Jews, by setting men against women. And if it succeeds in dividing us from our fellow beings, it will impose its evil will upon a fragmented society" (Faison). After leaving the presidency of Dartmouth, he returned to full-time teaching. He died in 1992. Thomas Kurtz continued to teach at Dartmouth long after he worked on BASIC, directing the Computer and Information Systems program there from 1980 to 1988. | ||
| Line 59: | Line 59: | ||
== CHR$ and the Dollar Sign in BASIC (Sidebar) == | == CHR$ and the Dollar Sign in BASIC (Sidebar) == | ||
| − | In designing BASIC, Kemeny and Kurtz needed to distinguish variables that hold numeric values from those that hold strings of text. They chose to have string variables and string functions end with "$," so that a string variable might be named A$ and the function that produced one-character strings based on ASCII values was called CHR$. They selected the dollar sign because "There were not so many keys on a Teletype, and we needed to find one that had not yet been used for BASIC. Of the few remaining ones, none seemed very appropriate. Then one of us observed that $ looks like S for string." (BtB p. 28) | + | In designing BASIC, Kemeny and Kurtz needed to distinguish variables that hold numeric values from those that hold strings of text. They chose to have string variables and string functions end with "$," so that a string variable might be named A$ and the function that produced one-character strings based on ASCII values was called CHR$. They selected the dollar sign because "There were not so many keys on a Teletype, and we needed to find one that had not yet been used for BASIC. Of the few remaining ones, none seemed very appropriate. Then one of us observed that $ looks like S for string." (Kemeny & Kurtz 28) |
Computers are fundamentally machines to add and multiply; the accounting and commercial functions that they carry out are much higher-level. So it is a curious circumstance that the Commodore 64 keyboard, like modern North American keyboards, has a dollar sign on it but does not have a multiplication sign. Instead, the asterisk (*), a typographical mark used to indicate a footnote, is pressed into service as the symbol for multiplication. | Computers are fundamentally machines to add and multiply; the accounting and commercial functions that they carry out are much higher-level. So it is a curious circumstance that the Commodore 64 keyboard, like modern North American keyboards, has a dollar sign on it but does not have a multiplication sign. Instead, the asterisk (*), a typographical mark used to indicate a footnote, is pressed into service as the symbol for multiplication. | ||
| Line 77: | Line 77: | ||
There were two major successful efforts to develop a BASIC interpreter for the Altair, and their varied histories are important and intriguing. While this tale of two BASICs doesn't clearly show the best of BASIC and the worst of BASIC, it does show two extremes in software development: one commercial, closely coordinated with hardware manufacturers, and highly tied to licensing and cost structures; the other community-based, non-profit, and "copyleft." The BASICs that led in these directions were Microsoft's Altair BASIC, the official BASIC for the platform, which was licensed to the manufacturer of the system, MITS; and Tiny BASIC, which originated at the People's Computer Company or PCC. The Commodore 64's BASIC is directly descended from Microsoft's Altair BASIC; its BASIC is, although this is not visible on the startup screen, a Microsoft product. At the same time, the 10 PRINT program participated in a context of BASIC sharing and exploration that was strongly influenced by the People's Computer Company. | There were two major successful efforts to develop a BASIC interpreter for the Altair, and their varied histories are important and intriguing. While this tale of two BASICs doesn't clearly show the best of BASIC and the worst of BASIC, it does show two extremes in software development: one commercial, closely coordinated with hardware manufacturers, and highly tied to licensing and cost structures; the other community-based, non-profit, and "copyleft." The BASICs that led in these directions were Microsoft's Altair BASIC, the official BASIC for the platform, which was licensed to the manufacturer of the system, MITS; and Tiny BASIC, which originated at the People's Computer Company or PCC. The Commodore 64's BASIC is directly descended from Microsoft's Altair BASIC; its BASIC is, although this is not visible on the startup screen, a Microsoft product. At the same time, the 10 PRINT program participated in a context of BASIC sharing and exploration that was strongly influenced by the People's Computer Company. | ||
| − | The story of Microsoft BASIC, and of Microsoft, begins with Paul Allen catching sight of the now-famous ''Popular Electronics'' in December 1974, just after the issue hit the stands. Allen read the Altair 8800 article and raced to show it to his friend and business partner Bill Gates, telling him, "Well here's our opportunity to do something with BASIC." (Wallace & Erikson p. 67) The two had already earned some limited success when Gates was still in high school. Their first venture was called Traf-O-Data and produced hardware and software to count cars. They programmed the Intel 8008 using a simulator running on a Washington State University mainframe. | + | The story of Microsoft BASIC, and of Microsoft, begins with Paul Allen catching sight of the now-famous ''Popular Electronics'' in December 1974, just after the issue hit the stands. Allen read the Altair 8800 article and raced to show it to his friend and business partner Bill Gates, telling him, "Well here's our opportunity to do something with BASIC." (Wallace & Erikson 67) The two had already earned some limited success when Gates was still in high school. Their first venture was called Traf-O-Data and produced hardware and software to count cars. They programmed the Intel 8008 using a simulator running on a Washington State University mainframe. |
| − | By 1975, Gates was at Harvard University and he and Allen were ready to envision a project with broader reach. They devised the idea of writing BASIC for the Altair and phoned up Ed Roberts at MITS to ask if he would be interested in having their BASIC for his system. Roberts said he would buy the first version that worked (Wallace & Erikson p. 74). As Gates and Allen had done when developing their Traf-O-Data system, they initially programmed on a university's computer system, using a simulator. What they were programming at this point was, of course, a modified and minimized version of the original 1964 BASIC. Given how often the success of personal computing software is attributed to entrepreneurial and business advances and to Microsoft in particular, it's remarkable that Microsoft's first product was developed borrowing time from Harvard's computer and was (as Microsoft clearly acknowledged) an implementation of Dartmouth's programming language. | + | By 1975, Gates was at Harvard University and he and Allen were ready to envision a project with broader reach. They devised the idea of writing BASIC for the Altair and phoned up Ed Roberts at MITS to ask if he would be interested in having their BASIC for his system. Roberts said he would buy the first version that worked (Wallace & Erikson 74). As Gates and Allen had done when developing their Traf-O-Data system, they initially programmed on a university's computer system, using a simulator. What they were programming at this point was, of course, a modified and minimized version of the original 1964 BASIC. Given how often the success of personal computing software is attributed to entrepreneurial and business advances and to Microsoft in particular, it's remarkable that Microsoft's first product was developed borrowing time from Harvard's computer and was (as Microsoft clearly acknowledged) an implementation of Dartmouth's programming language. |
| − | Gates and Allen devised the Altair BASIC project and did most of the programming, but there was a third Altair BASIC programmer, a sort of legendary fifth Beatle of Microsoft (or at least of Altair BASIC). This was Monte Davidoff, who wrote the floating-point routines. Gates and Allen were discussing how they needed to code these up when Davidoff, a student who was sitting with them at the table, spoke up and said he could write them. After talking it over with him, they enlisted him to contribute these (Wallace & Erikson p. 76-77). | + | Gates and Allen devised the Altair BASIC project and did most of the programming, but there was a third Altair BASIC programmer, a sort of legendary fifth Beatle of Microsoft (or at least of Altair BASIC). This was Monte Davidoff, who wrote the floating-point routines. Gates and Allen were discussing how they needed to code these up when Davidoff, a student who was sitting with them at the table, spoke up and said he could write them. After talking it over with him, they enlisted him to contribute these (Wallace & Erikson 76-77). |
| − | The code of this first Microsoft project is mainly by Gates and Allen, though, with Gates listed as first author. Comments at the beginning of the code declare, "BILL GATES WROTE THE RUNTIME STUFF," which he did over a period of eight weeks at Harvard. Gates would say years later that this 4 KB BASIC interpreter "was the coolest program I ever wrote" (Wallace & Erikson p. 76-77). | + | The code of this first Microsoft project is mainly by Gates and Allen, though, with Gates listed as first author. Comments at the beginning of the code declare, "BILL GATES WROTE THE RUNTIME STUFF," which he did over a period of eight weeks at Harvard. Gates would say years later that this 4 KB BASIC interpreter "was the coolest program I ever wrote" (Wallace & Erikson 76-77). |
Allen flew to visit MITS in Albuquerque, taking the program on paper tape. He realized during the plane's decent that he did not have a way to get the Altair to read the tape and run it -- a bootloader. So he wrote one in machine language as the plane was landing. Then, he headed to see an Altair for the first time -- all of the work he, Gates, and Davidoff had done was via a simulator. The BASIC demo, of course, was a success and the interpreter was licensed by MITS. Gates and Allen moved to New Mexico to create new versions of BASIC for the Altair and to maintain the original code, and Microsoft was booted and running. | Allen flew to visit MITS in Albuquerque, taking the program on paper tape. He realized during the plane's decent that he did not have a way to get the Altair to read the tape and run it -- a bootloader. So he wrote one in machine language as the plane was landing. Then, he headed to see an Altair for the first time -- all of the work he, Gates, and Davidoff had done was via a simulator. The BASIC demo, of course, was a success and the interpreter was licensed by MITS. Gates and Allen moved to New Mexico to create new versions of BASIC for the Altair and to maintain the original code, and Microsoft was booted and running. | ||
