||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 Hamish Dewar's implementation in the IMP language for the English Electric clone of the IBM 360.
Robin Popplestone.