7 ms·
--------- ---- -- ---- ----- --- ---- ----- COPYRIGHT 1975 BY BILL GATES AND PAUL ALLEN --------- ---- -- ---- ----- --- ---- ----- ORIGINALLY WRITTEN
by jblazevic 5y ago
--------- ---- -- ---- ----- --- ---- -----
COPYRIGHT 1975 BY BILL GATES AND PAUL ALLEN
--------- ---- -- ---- ----- --- ---- -----
ORIGINALLY WRITTEN ON THE PDP-10 FROM
FEBRUARY 9 TO APRIL 9 1975
BILL GATES WROTE A LOT OF STUFF.
PAUL ALLEN WROTE A LOT OF OTHER STUFF AND FAST CODE.
- quietbritishjim 5y agoAccording to Paul Allen's book [1] about his time at Microsoft (admittedly a biased source), his particularly critical contribution was an 8088 emulator/simulator for the PDP-10. That allowed them to write and even interactively debug (if I remember right) BASIC for the 8088 on the PDP. It would've been hopeless to develop directly on a microcomputer, so they would've had to have written on the minicomputer, transferred the binary across and see if it worked, and iterate like that. That contribution wouldn't show up directly in the BASIC source code, since the emulator wasn't part of BASIC itself. [1] https://www.amazon.co.uk/Idea-Man-Memoir-Co-founder-Microsoft/dp/0241953715 https://www.amazon.co.uk/Idea-Man-Memoir-Co-founder-Microsof...
- PaulHoule 5y agoUsing a minicomputer as a dev environment for micros was particularly popular in the late 1970s and early 1980s. See Infocom https://www.filfre.net/2013/03/the-top-of-its-game/ https://www.filfre.net/2013/03/the-top-of-its-game/ which used virtual machine technology to deliver games developed on a Decsystem 20 to many different kinds of Micro. When Microsoft BASIC came out in 1976 it was rare for a micro to fill out the 16-bit address space with a full 64k. I had a TRS-80 Color Computer which ran a multitasking operating system https://en.wikipedia.org/wiki/OS-9 https://en.wikipedia.org/wiki/OS-9 With 64k of RAM I wrote a FORTH interpreter that ran under OS-9 with a good standard library in about 3000 lines of assembly. OS-9 looked a lot like UNIX or VMS. Dev tools in 1984 were good enough that writing a BASIC interpreter on a micro in assembly would have been straightforward, I'm sure you could on a C-64. No way you could do that on the base configuration Altair that Microsoft BASIC originally targeted. The first time I used emulation was circa 1987 when I developed a BASIC program for a high school teacher who had a Z-80 based CP/M system on my generic 286 machine... Even then there was a CP/M emulator for the 286 which could destroy any Z-80 machine on the market -- even though the protected mode of the 286 was as "brain damaged" as Bill Gates said it was, the raw performance of the 286 was the beginning of the end for the 6502, 68--, 68---, Z80 and all the other architectures.
- dunham 5y agoI had an obscure machine ("Interact") in the early 80's that had an 8080, 16 kb of memory, and a cassette drive. There was an assembler for it. If I remember right, you read the editor from tape, edit and save your file, then read the assembler from tape, it reads the tape with your code and then writes the output to tape. I have no idea what the people ("Micro Video") producing software for this thing did, but I can't imagine they used this on-machine assembler. (The tape loading mechanism was basically blocks of address + data. They put loading screens on the tapes by populating video memory first.)
- hougaard 5y ago... an 8080 emulator, not 8088 :)
- scionthefly 5y agoSo I might be able to use a PiDP-11 microcomputer, presuming it is compatible with thd PDP-10, to run an 8088 emulator, on which I could run early DOS programs?
- aidenn0 5y agoPDP-11 and PDP-10 are completely different. The 11 was in the DEC 16-bit series and the 10 was in the DEC 36-bit series.
- cbm-vic-20 5y agoWhile this is completely true, the PiDP-11 mentioned by the parent is based on SimH, which does simulate PDP-10 (as well as dozens of other early systems). [1] https://obsolescence.wixsite.com/obsolescence/pidp-11 https://obsolescence.wixsite.com/obsolescence/pidp-11 [2] https://github.com/simh/simh https://github.com/simh/simh
- unfocussed_mike 5y agoYes. There's an even more extraordinary story about them travelling to demonstrate their implementation of BASIC to the MITS team. They realise they have not written a bootloader for the Altair, and Allen writes out a bootloader on the plane, which works when they get to MITS. https://en.wikipedia.org/wiki/Altair_BASIC#Origin_and_development https://en.wikipedia.org/wiki/Altair_BASIC#Origin_and_develo... My first encounter with a real Microsoft BASIC wasn't for another 15 years; the interpreter-only QBASIC that came with Halvorson & Rygmyr's Learn BASIC Now, which was a great book I gave away and now feel the urge to repurchase for nostalgia's sake. I used it for my GCSE Computer Science project.
- WalterBright 5y agoWriting an 8080 emulator on the -10 is not extraordinary, after all, it's a trivial instruction set. What was extraordinary is Allen realizing he could do this as a shortcut.
- WalterBright 5y agoAn 8080 has what, 40 opcodes? All doing simple things like "add" and "mov". https://altairclone.com/downloads/manuals/8080%20Programmers%20Manual.pdf https://altairclone.com/downloads/manuals/8080%20Programmers...
- phkahler 5y agoI learned on an 8080 system (Interact) that also had MS basic. Almost every one of 256 op-codes is used on the 8080. That's not to say there were that many instructions. For example register-to-register move might be considered one instruction but the source and destination register are encoded into that one byte so there are many reg-reg moves. Same with add sub, etc... My father wrote a disassembler in basic to read out the ROM and he made his own mnemonics which amounted to probably 20-40 actual instructions (I still have it and could look it up), but there were maybe 8 entries in the opcode table that did nothing.
- 5y ago
- deleted 5y ago[deleted]
- submeta 5y agoThey wrote this in two months? In assembly? Impressive! I wonder if they used code generators or wrote plain assembly?
- compiler-guy 5y agoEveryone wrote plain assembly in those days. If you were lucky your assembler did nice things like symbolic constants. It was a skill pretty much everyone knew.
- jll29 5y agoIt's fair to assume this is handcrafted and hand-optimized code, as machines back then were typically too small to use for many tasks. Any code generated would have added bloat making the whole project untenable.
- PaulHoule 5y agoAssembly language isn't that hard. I wrote a FORTH interpreter with a pretty good standard library in 3000 lines of 6809 assembly that pretty much worked right the first time. Today you could spend as much time getting the build to work with npm or maven for something very simple. Macro assemblers are nowhere near as much fun on the x86 (and other 80's era micros) as they are on something like the IBM 360 or AVR8 with a big register file... If you've got 32 registers you can write macros where the register names are parameters and avoid a lot of the meaningless activity involved in "calling conventions" in programming languages like C.
- Mountain_Skies 5y agoWas the FORTH interpreter for your own use or did you sell it? I ask because it's always fun to see someone on HN that wrote products I saw in the pages of Rainbow long ago.
- PaulHoule 5y agoIt was for my own use. It was unusual in quite a few ways. For one thing it was subroutine threaded which made it a little faster than most FORTHs, also it used self-modifying code in an inner loop to save a cycle in an important place. Most FORTHs at the time used block-based disk I/O because you could do that without a real operating system and have some nice benefits such being able to copy a block of source code to the screen buffer to edit in place, easy memory allocation, etc. OS-9 had a handle-based API for filesystem access basically the same as UNIX and MS-DOS 2.0 so my FORTH used that. OS-9 had a choice of text editors, including a vi clone so I didn't feel the need to embed an editor in the interpreter.
- deleted 5y ago[deleted]