Subject: Re: Infocom on PDP-11
From: Paul Koning <pkoning at equallogic.com>
Date: Mon, 09 May 2005 09:58:58 -0400
To: cctalk at
classiccmp.org
Allison> IBM360 like a PDP-8???? Explain please.
Small directly addressable range (128 words for the 8, 4k for the
360) is what I was thinking about.
Not unusual for machine that address a larger memory with shorter
words or worse use a extended memory hack.
However the PDP-8 is a bit different. You have a direct addressing
of 128 words in the current field and Page zero field. Makes it
easier to have variables that can be accesses from anywhere in the
4k frame and since the EMA allows for I&D you can still access the
zero'th field from code anywhere in the 32kW space. Also the 8
autoindex memory locations are in zero field. Programming the -8
is a good exercise in what is really needed, and how to exploit
it.
I believe the main reason is to make the code smaller.
P-code
compilers have been used on the PDP-11 (the Algol compiler was ported
there, and Fortran-4 was P-code). Basic-Plus is P-code of course, and
so is Forth. Then there is UCSD Pascal.
Actually it also allows one other thing. Machines like the PDP-8
only address 4k, they got to 32kW with EMA and using the IL
interpreter to do the memory management so programs can exceed
4k hides a lot of stuff the compiler would have to deal with.
The PDP-11 is a good stack machine so doing any programming style
on that ends up compact and fairly fast. I used to run UCSD Psystem
on an 11/23, not bad.
Sure. But my point is that, even when you have NO help
from the
processor instruction set, you can do a block oriented language. The
I figured that was a given if the basic addressing range was large
enough to reasonably fit the code.
Cyber is about the most unhelpful architecture you can
find: no stack,
no autoincrement registers, function call works by writing the return
address into the first word of the function, etc. And sure enough,
Never looked at the Cyber, sounds like the other earlier PDP-n systems.
The PDP-8 has the same subroutine call as Cyber, the return address
is the first byte of the routine. The problem for the -8 programmer
is that subroutine must be in the same 4k bank otherwise you have
to invoke a small potload of code to set up a bank change then do
the call (JMS I,target).
Wirth bitched a lot about that, but the compiler works,
anyway. In
fact, it worked well enough that the first VMS Pascal compiler was a
quick hackjob on the Cyber compiler -- you can still see the Cyber
code patterns when you look at the VAX machine code that VAX Pascal
V1.0 generates -- which is quite hilarious.
Never saw V1 of the VMS Pascal. Sound like the typical things that
happen when you try to reuse code across widely different archetectures.
I have to admit I'm a bit soft for anything PDP-8 or "8" like and
as a result I have an 8f, DecmateIII, 6100 and 6120 based hardware.
I suspect it was from my first contact with one 36 years ago. I've
worked with just about every 8bitter save for the 2650. But the minis
are definately different from any micro.
Allison