This is G o o g l e's cache of http://history.dcs.ed.ac.uk/history/PopUsenetPost as retrieved on 10 Aug 2006 08:04:22 GMT.
G o o g l e's cache is the snapshot that we took of the page as we crawled the web.
The page may have changed since that time. Click here for the current page without highlighting.
This cached page may reference images which are no longer available. Click here for the cached text only.
To link to or bookmark this page, use the following url: http://www.google.com/search?q=cache:BdS9vyIYuScJ:history.dcs.ed.ac.uk


Google is neither affiliated with the authors of this page nor responsible for its content.

PopUsenetPost - Edinburgh Computer History
  PopUsenetPost UserPreferences
 
HelpContents FindPage Diffs Info Edit Subscribe XML Print View

Date: Mon Jan 13 14:03:00 1993
Subject: Early POP.
From: Robin Popplestone
Volume-ID: 930114.01

> Am I right in thinking that that version was mostly written in
> assembler?

The device routines were inherited from the Minimac project, and were written in assembly code by Dave Pullin. Basic functions (+ - * / front back subscr etc. ) probably including hd and tl were written in assembly code, as was the garbage collector. The rest was written in POP 1.5, which was a reverse polish language derived from POP-1 but with POP-2 semantics in mind. Originally, the compiler was written in POP 1.5, although chunks of that, together with other functions, were recoded in assembly code. POP 1.5 was compiled by a compiler written in POP-1 into an object code format (of our own devising) on punched paper tape. This was read in by an assembly-code program to build a POP-2 system.

> I believe the incremental compilers for Lisp in the USA used not to
> garbage collect compiled functions (nor arrays?) until recently (mid
> 80s??) whereas compiled Pop-2 functions were already garbage
> collectable by the time I met Pop-2 in 1972, and in every other Pop
> system I have met.

Naturally, since we saw POP-2 as a functional language, code blocks were always garbage collected (except of course for the built-in functions), as were all other data-structures. This was made quite easy by the fact (a) that jumps were relative in the 4100 series (full marks to Tony Hoare) thus simplifying relocation and (b) that the POP compiler could only generate a small subset of the machine instructions. Our task was complicated by the fact that addresses in instructions were limited to 15 bits, and therefore we had to keep references in a cage (originally the current value of all variables was held in a reference just like any reference made by consref).

Most other POP-2 systems were I believe written in assembly code by sundry virtuosi of that art. One exception was [WWW]Hamish Dewar's implementation in the IMP language for the English Electric clone of the IBM 360.

Robin Popplestone.

PythonPowered