From mboxrd@z Thu Jan 1 00:00:00 1970 From: jsteve@superglobalmegacorp.com (Jason Stevens) Date: Sat, 15 Oct 2011 00:20:34 -0400 Subject: [TUHS] b remnants? Message-ID: Wasn't the other 'advantage' of threaded/pcode that it'd be smaller than a native executable? I know it's out of left field, but building Dungeon on RT-11, you have to use the treaded compiler, and I assume it was a space thing.. Just as on MS-DOS (Yeah I know...) a save for fitting stuff in 64kb for the later compilers was to compile to p-code.. Wikipedia gives p-code for Pascal a timeframe of the 'early 70's and attribes the whole interpeted code as O-Code for BCPL .... I wonder if anyone ever did save any TripOS tapes for the PDP-11..... -----Original Message----- From: A. P. Garcia [mailto:a.phillip.garcia@gmail.com] Sent: Friday, October 14, 2011 11:58 PM To: tuhs at minnie.tuhs.org Subject: Re: [TUHS] b remnants? On Fri, Oct 14, 2011 at 9:52 AM, A. P. Garcia wrote: > > In memoriam, I read The Development of the C Language: > http://cm.bell-labs.com/who/dmr/chist.html > > It talks a bit about how B was originally implemented somewhat like > ETH Pascal (p-code). Are there any B interpreters or programs in the > archive? What intrigued me about this is that it's such an early example of an abstract machine running as an interpreter. BCPL, roughly contemporaneous, used ocode as an intermediate language, but it seems this was intended to be further translated into assembly. While it's possible to interpret ocode, in practice it seems this was rare, if it was done at all. Almost everything I've read about abstract/vitual machines traces its roots back to the following source: James R. Bell. 1973. Threaded code. Commun. ACM 16, 6 (June 1973), 370-372. DOI=10.1145/362248.362270 http://doi.acm.org/10.1145/362248.362270 Here's where dmr mentions implementing B using this technique: The B compiler on the PDP-7 did not generate machine instructions, but instead `threaded code' [Bell 72], an interpretive scheme in which the compiler's output consists of a sequence of addresses of code fragments that perform the elementary operations. The operations typically-in particular for B-act on a simple stack machine. Note he says it was published in 1972, when it actually appeared in print in 1973 (same page numbers). Two paragraphs later he writes: By 1970, the Unix project had shown enough promise that we were able to acquire the new DEC PDP-11. The processor was among the first of its line delivered by DEC, and three months passed before its disk arrived. Making B programs run on it using the threaded technique required only writing the code fragments for the operators, and a simple assembler which I coded in B; ; soon, dc became the first interesting program to be tested, before any operating system, on our PDP-11. Almost as rapidly, still waiting for the disk, Thompson recoded the Unix kernel and some basic commands in PDP-11 assembly language. Of the 24K bytes of memory on the machine, the earliest PDP-11 Unix system used 12K bytes for the operating system, a tiny space for user programs, and the remainder as a RAM disk. This version was only for testing, not for real work; the machine marked time by enumerating closed knight's tours on chess boards of various sizes. Once its disk appeared, we quickly migrated to it after transliterating assembly-language commands to the PDP-11 dialect, and porting those already in B. The abstract machine is also mentioned in Thompson's "Users' Reference to B", dated January 7, 1972. If the 1970 date is correct, they were using this technique some three years before most of the computing world knew about it!? _______________________________________________ TUHS mailing list TUHS at minnie.tuhs.org https://minnie.tuhs.org/mailman/listinfo/tuhs