Date: Thu, 3 Apr 2025 15:20:35 -0500
From: Doug McIntyre via cctalk <cctalk(a)classiccmp.org>
On Thu, Apr 03, 2025 at 02:40:23PM -0400, Michael
Thompson via cctalk wrote:
> I wonder if the source, not just the listing is
available. It would be
> interesting to build it on TOPS-10 running on a KA-10 simulated on Simh.
Perhaps, although at LCM (long before the "+L" was added--or we opened to the
public) we built it on the 2065 running Tops-10 v7.04. Architecture is
architecture, after all.
[ snip ]
As described in Bill Gate's recent auto-biography
(Source Code: My
Beginnings), or Paul Allen's auto-biography (Idea Man), they developed their
BASIC code on the PDP-10 because they both had been hacking on the PDP-10 for
their previous projects for a couple years?, and Paul Allen had written an
8080 emulator (somehow with macro?) for the system, and they could emulate
the 8080 chip before the Altair 8800 existed (for real, not the dummy one
they pre-announced in the magazine ahead of it actually shipping).
Allen and Gates began programming on the PDP-10 in 1970, when Paul was a junior
and Bill was a freshman. They were good enough that after Paul graduated, they
(along with 3 of their friends) got jobs programming the PDP-10s for the
control systems at the Bonneville Power Adminstration for the summer of 1971.
As for Paul's 8080 simulator, it was indeed made up of Macro-10 macros (which
can be very sophisticated) which processed 8080 assembler into user-mode UUOs
and a set of UUO routines which perform the work defined for each such 8080
instruction.
The simulator is used by including its source code with the 8080 source code
to be executed, assembling everything, and executing the result. It's a
marvelous piece of programming which utilizes the PDP-10 architecture to its
fullest.
So I don't think the 8080 Source code of Altair
BASIC would do you
much on the PDP-10 without also having Paul Allen's macro package for
the 8080 emulation and developer system that they were doing. As they
explained in their books, an Altair with 4k wasn't exactly a system
anything could be developed on, so the various PDP-10's they rented
time on was utilized as the dev system, and they seeked that one out
because they had the support system already in place for what they
were doing. (ie. emulator/macro package/assembler/linker)
Rented time on while they were located in Albuquerque, then outright owned once
they moved the company to Bellevue.
They later were able to successfully do the same
emulation trick with the
other micro CPUs that they wrote basic for until PCs could actually start
hosting dev environments (many years later).
A friend of mine, M$ employee no. 11, was one of the developers of the other
macro packages for different micro acrchitectures.
Rich
[1] For the non-PDP10 folks out there, "UnUsed Operations", later
"Unimplemented
User Operations", op codes left intentionally undefined which when
encountered in the instruction stream check to see whether there is a trap
defined, so a system-style subroutine call. Opcodes 001-037 are avaiable
to user programs, while 040-077 are defined for the operating system.