Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Push and pop first used when?

1 view
Skip to first unread message

Karen Lofstrom

unread,
Mar 2, 2003, 5:15:02 AM3/2/03
to
I have been googling for an hour to find out when the terms push and pop
were first used to describe stack operations. I have even -- <gasp!>--
consulted the FAQ for this group. But no luck. I have a feeling that it's
sometime in the 60s or 70s. Found the earliest mention of push and pop in
some Burroughs instructions. Also found linked with Vaxen and PDPs. But
that's just the web.

Does anyone here know when and where push and pop were first used?

--
Karen Lofstrom lofs...@lava.net
========================================================================
"All along the untrodden paths of the future, I can see the footprints of
an unseen hand." -- Sir Boyle Roche

jmfb...@aol.com

unread,
Mar 2, 2003, 4:44:38 AM3/2/03
to
In article <v63md6s...@corp.supernews.com>,

lofs...@lava.net (Karen Lofstrom) wrote:
>I have been googling for an hour to find out when the terms push and pop
>were first used to describe stack operations. I have even -- <gasp!>--
>consulted the FAQ for this group. But no luck. I have a feeling that it's
>sometime in the 60s or 70s. Found the earliest mention of push and pop in
>some Burroughs instructions. Also found linked with Vaxen and PDPs. But
>that's just the web.

The PDP-10 instruction set had PUSHJ, POPJ, PUSH, POP which did
the obvious things. I played on a KA10 in 1969.

>
>Does anyone here know when and where push and pop were first used?
>

I don't know but my earliest encounter with the instructions
were 1969.

/BAH

Subtract a hundred and four for e-mail.

Lars Brinkhoff

unread,
Mar 2, 2003, 5:41:00 AM3/2/03
to
lofs...@lava.net (Karen Lofstrom) writes:
> I have been googling for an hour to find out when the terms push and
> pop were first used to describe stack operations. I have even --
> <gasp!>-- consulted the FAQ for this group. But no luck. I have a
> feeling that it's sometime in the 60s or 70s. Found the earliest
> mention of push and pop in some Burroughs instructions. Also found
> linked with Vaxen and PDPs.

Not a first, but the popular PDP-10 and its predecessor PDP-6 from
about 1964 had PUSH and POP instructions.

--
Lars Brinkhoff, Services for Unix, Linux, GCC, PDP-10, HTTP
Brinkhoff Consulting http://www.brinkhoff.se/

Karen Lofstrom

unread,
Mar 2, 2003, 7:35:57 PM3/2/03
to
In article <85isv29...@junk.nocrew.org>, Lars Brinkhoff wrote:

> Not a first, but the popular PDP-10 and its predecessor PDP-6 from
> about 1964 had PUSH and POP instructions.

Yet more googling and I'm fairly sure that PUSH and POP were first used in
1963 on the Burroughs B5000. Designed by Bob Barton. Probably influenced
by a Rice University custom-designed computer that used operations called
SAVE and UNSAVE that seemed to have worked like PUSH and POP.

There! Definitively stating something on Usenet is bound to provoke a
reaction. People will pop (!) out of the woodwork to prove me wrong :)

--
Karen Lofstrom lofs...@lava.net
----------------------------------------------------------
You cannot truly appreciate Atlas Shrugged until you have
read it in the original Klingon. --Sea Wasp

Jonathan Griffitts

unread,
Mar 3, 2003, 3:15:09 AM3/3/03
to
In article <85isv29...@junk.nocrew.org>, Lars Brinkhoff
<lars...@nocrew.org> writes

>lofs...@lava.net (Karen Lofstrom) writes:
>> I have been googling for an hour to find out when the terms push and
>> pop were first used to describe stack operations. I have even --
>> <gasp!>-- consulted the FAQ for this group. But no luck. I have a
>> feeling that it's sometime in the 60s or 70s. Found the earliest
>> mention of push and pop in some Burroughs instructions. Also found
>> linked with Vaxen and PDPs.
>
>Not a first, but the popular PDP-10 and its predecessor PDP-6 from
>about 1964 had PUSH and POP instructions.

The General Precision/Librascope L3055 processor had an indexing mode
called "PDPM", which stood for "Push-Down/Pop Mode". (Why it was Push
Down but not Pop Up, I dunno.) This processor was introduced in July,
1964.


Since this is an obscure system, some historical notes:

http://americanhistory.si.edu/scienceservice/052125.htm
http://ed-thelen.org/comp-hist/BRL64-l.html (scroll down a bit)

Only 3 of these CPUs were made: two installed as a dual-processor
mainframe in the Pentagon for the US Air Force project 473L. There was
one more processor made for the same site as a CPU spare.

This processor was also known by its military designation AN/FYQ-11. As
I understand it, the Air Force never actually used it in a production
mode. It was soon surplussed and Brigham Young University got the
dual-CPU, where it was used by students for a long time. The spare CPU
went to the University of Colorado, where it lived in obscurity in the
basement of the Engineering Department (I had a key to that room from
about 1974 on, and used the beast a fair amount). The U of Colorado
system was scrapped in about 1981, the BYU ones had gone a few years
earlier.

It was a decimal machine with an accumulator. The word size was
RECTANGULAR: 8 x 6 bits. This represented 8 decimal (BCD) digits, with
the extra bits in each digit containing sign information and an optional
floating-point exponent. Or it represented 8 6-bit characters. The
integer instructions could operate on any contiguous field of
characters/digits in the accumulator. There were about 18 index
registers. The instruction set was quite complex, and apparently never
completely debugged (some of the indexing modes didn't work). Each
instruction occupied a single 8x6 word.

It was all implemented in discrete transistor logic. The console was an
IBM selectric-I typewriter (not the typeball, the conventional
typewriter mechanism). The front panel had an ENORMOUS number of neon
blinkenlights.

The U of Colorado system ran completely from tape drives (7-track, 556
BPI). We programmed it with Fortran IV and LAP (Librascope Assembler
Program) via punch cards. There were physically huge fixed disks that
came with the system, but they never worked (the local story was that
there had been head crashes during the initial bringup attempt). There
were also a couple of multicolor graphics terminals that likewise never
worked (but I never saw anyone really try to fix them), and a probably
functional but completely useless crypto unit.


Even more digression:
I have really fond memories of that old machine. One thing that sticks
in my memory is Fortran run-time error messages included the name of the
guy who wrote the Fortran run-time system. The first line of the error
report would read something like:

FTIO VERSION xxx BY RAY VAN TASSLE

We'd sometimes joke about it, "I just heard from Ray Van Tassle again."

I often wondered who Ray Van Tassle was. Are you out there, Ray? Your
name is indelibly inscribed on my memory, associated with dumb Fortran
mistakes and core dumps.
--
Jonathan Griffitts
AnyWare Engineering Boulder, CO, USA

Christopher C. Stacy

unread,
Mar 3, 2003, 3:46:32 AM3/3/03
to
>>>>> On Mon, 03 Mar 2003 00:35:57 -0000, Karen Lofstrom ("Karen") writes:

Karen> In article <85isv29...@junk.nocrew.org>, Lars Brinkhoff wrote:
>> Not a first, but the popular PDP-10 and its predecessor PDP-6 from
>> about 1964 had PUSH and POP instructions.

Karen> Yet more googling and I'm fairly sure that PUSH and POP were first used in
Karen> 1963 on the Burroughs B5000. Designed by Bob Barton. Probably influenced
Karen> by a Rice University custom-designed computer that used operations called
Karen> SAVE and UNSAVE that seemed to have worked like PUSH and POP.

Karen> There! Definitively stating something on Usenet is bound to provoke a
Karen> reaction. People will pop (!) out of the woodwork to prove me wrong :)

I'd be leery of jumping to any conclusions based primarily
on what you can find on the web or in a random newsgroup.
But I think you've got the right information in this case,
partly because it's what I remember being taught in the 70s.
If the answer is important to you, I'd suggest chasing down
some professors who teach historical computer architecture.
Anyway, here's what I found out (and/or re-learned) from the web.

Subroutines were invented in 1947 on EDSAC by David Wheeler, and they
were called "Wheeler Jumps". Subroutine calling via a LIFO "stack"
is a very old idea, invented by Willem Louis van der Poel in 1952.

The B5000 (1961-1963) probably is the first machine with stack instructions.
It was designed to be programmed in Algol (and COBOL), not assembler.
It was more "stack based" than a machine like the PDP-10: it was RPN,
like an HP calculator! For subroutine calling, it had stack pointer (SP)
and frame pointer (FP) registers to manage call activation records.
This machine had a number of other very cool features, too.

Before the B5000, I think everything used the TSR/TSX method,
with and without indexing hacks. (When the PDP-6 came along,
it provided the full suite of transfer instructions with JSR,
JSP, and JSA, just in case you didn't want to use PUSHJ.
Oh yeah, and UUOs.)

From reading the same web page that you probably did,
I don't think the Rice Computer actually had stack instructions.
In particular, SAVE/UNSAVE were SPIREL (monitor) entry points,
not machine instruction opcodes.

I looked up information on a lot of different computers and their
instruction sets, but couldn't find detailed information on the
various early Dutch machines (Testudo, PTERA, ZEBRA), and to be
comprehensive I think you should check those out. Also, see Van der
Poel's 1955 PhD thesis: "The Logical Principles of Some Simple Computers",
for more clues. I think van der Poel is still alive, so maybe you could
contact him through the Koninklijke Nederlandse Academie van Wetenschappen.
I bet he would know which was the first computer that implemented his idea.

jmfb...@aol.com

unread,
Mar 3, 2003, 7:02:43 AM3/3/03
to
In article <v658rdq...@corp.supernews.com>,

lofs...@lava.net (Karen Lofstrom) wrote:
>In article <85isv29...@junk.nocrew.org>, Lars Brinkhoff wrote:
>
>> Not a first, but the popular PDP-10 and its predecessor PDP-6 from
>> about 1964 had PUSH and POP instructions.
>
>Yet more googling and I'm fairly sure that PUSH and POP were first used in
>1963 on the Burroughs B5000. Designed by Bob Barton. Probably influenced
>by a Rice University custom-designed computer that used operations called
>SAVE and UNSAVE that seemed to have worked like PUSH and POP.
>
>There! Definitively stating something on Usenet is bound to provoke a
>reaction. People will pop (!) out of the woodwork to prove me wrong :)

Huh?

Sarr J. Blumson

unread,
Mar 3, 2003, 9:57:44 AM3/3/03
to
In article <v658rdq...@corp.supernews.com>,

Karen Lofstrom <lofs...@lava.net> wrote:
>
>Yet more googling and I'm fairly sure that PUSH and POP were first used in
>1963 on the Burroughs B5000. Designed by Bob Barton. Probably influenced
>by a Rice University custom-designed computer that used operations called
>SAVE and UNSAVE that seemed to have worked like PUSH and POP.

It will be morning in the UK eventually, but in the meantime I'll mention
the English Electric KDF-9 (spelling?) that, I think, went back before
1960.

--
--------
Sarr Blumson sa...@umich.edu
voice: +1 734 998 9932 home: +1 734 665 9591
JSTOR, University of Michigan http://www-personal.umich.edu/~sarr/

CBFalconer

unread,
Mar 3, 2003, 10:44:58 AM3/3/03
to
Jonathan Griffitts wrote:
> <lars...@nocrew.org> writes
> >lofs...@lava.net (Karen Lofstrom) writes:
>
> >> I have been googling for an hour to find out when the terms
> >> push and pop were first used to describe stack operations. I
> >> have even -- <gasp!>-- consulted the FAQ for this group. But
> >> no luck. I have a feeling that it's sometime in the 60s or
> >> 70s. Found the earliest mention of push and pop in some
> >> Burroughs instructions. Also found linked with Vaxen and PDPs.
> >
> > Not a first, but the popular PDP-10 and its predecessor PDP-6
> > from about 1964 had PUSH and POP instructions.
>
> The General Precision/Librascope L3055 processor had an indexing
> mode called "PDPM", which stood for "Push-Down/Pop Mode". (Why
> it was Push Down but not Pop Up, I dunno.) This processor was
> introduced in July, 1964.
>
... snip ...

I recall general discussions of stacks and queues in the hardware
magazines of the later 50's under LIFO and FIFO. I believe the
whole subject appeared in the expression compilation literature of
the day, under the guise of 'shift/reduce'.

--
Chuck F (cbfal...@yahoo.com) (cbfal...@worldnet.att.net)
Available for consulting/temporary embedded and systems.
<http://cbfalconer.home.att.net> USE worldnet address!

Karen Lofstrom

unread,
Mar 3, 2003, 2:40:39 PM3/3/03
to
Thanks to all. I'm putting together a small report for the professor who
said he'd give extra credit to anyone who could find out when PUSH and POP
were first used. I *need* the credit; I'm much better at googling than I
am at writing Java. I have credited by name anyone who gave me useful
information, and also listed all the web sites.

By professional historian standards, it ain't much. A professional job
would mean extensive searches in the pre-1962 literature and interviews
with surviving designers. But, I've done what I can. Again, thanks.

--
Karen Lofstrom lofs...@lava.net
----------------------------------------------------------

Oh what a cute wee thing!

Charlie Gibbs

unread,
Mar 3, 2003, 3:16:35 PM3/3/03
to
In article <I3K8a.1644$XR3....@news.itd.umich.edu>

sa...@tetris.gpcc.itd.umich.edu (Sarr J. Blumson) writes:

>In article <v658rdq...@corp.supernews.com>,
>Karen Lofstrom <lofs...@lava.net> wrote:
>
>>Yet more googling and I'm fairly sure that PUSH and POP were first
>>used in 1963 on the Burroughs B5000. Designed by Bob Barton. Probably
>>influenced by a Rice University custom-designed computer that used
>>operations called SAVE and UNSAVE that seemed to have worked like
>>PUSH and POP.

Let's pause here for a little programmer's cheer:

Shift to the left!
Shift to the right!
Push down, pop up,
Byte, byte, byte!

But I digress...

>It will be morning in the UK eventually, but in the meantime I'll
>mention the English Electric KDF-9 (spelling?) that, I think, went
>back before 1960.

Once again I'll turn to my favourite source of apocryphal computer
history, "The Devil's DP Dictionary" by Stan Kelly-Bootle:

nest n. & v.trans [Origin: first used on English Electric KDF9
system, Kidsgrove, England (1962)]

1. n. A well-feathered {stack} where data and instructions can
be mother-henned and incubated for indefinite periods.

2. v.trans To expose (loops, subroutines) to premature and/or
unexpected {calls}. To each such exposure a positive integer,
known as the depth, is assigned, indicating the approximate
number of person-months needed to correct the situation.

New string vests for ALGOL compilers;
A night on the nest with the KDF9ers;
Palimpsestuous programs with nebulous wings,
These are a few of my favorite things.

--
/~\ cgi...@kltpzyxm.invalid (Charlie Gibbs)
\ / I'm really at ac.dekanfrus if you read it the right way.
X Top-posted messages will probably be ignored. See RFC1855.
/ \ HTML will DEFINITELY be ignored. Join the ASCII ribbon campaign!

jmfb...@aol.com

unread,
Mar 4, 2003, 5:21:54 AM3/4/03
to
In article <v67btnq...@corp.supernews.com>,

lofs...@lava.net (Karen Lofstrom) wrote:
>Thanks to all. I'm putting together a small report for the professor who
>said he'd give extra credit to anyone who could find out when PUSH and POP
>were first used. I *need* the credit; I'm much better at googling than I
>am at writing Java. I have credited by name anyone who gave me useful
>information, and also listed all the web sites.

Pfui. List some real code. Web sites.... ;-) I'd _write_ a program
that used it and make a CREF listing (that shows both the assembler
language and the machine language).

>
>By professional historian standards, it ain't much. A professional job
>would mean extensive searches in the pre-1962 literature and interviews
>with surviving designers. But, I've done what I can. Again, thanks.

You're welcome.

Jeff Raben

unread,
Mar 4, 2003, 7:40:12 PM3/4/03
to
"preserve" and "restore" were "verbs" in IPL-V and ran as far back as the
IBM-650 and IBM-709.
My dusty manual was prepared by the RAND Corporation in 1960.

--
Jeff Raben

... and stir with a Runcible spoon
"Karen Lofstrom" <lofs...@lava.net> wrote in message
news:v63md6s...@corp.supernews.com...

Heinz W. Wiggeshoff

unread,
Mar 5, 2003, 11:23:47 AM3/5/03
to

"CBFalconer" <cbfal...@yahoo.com> wrote in message
news:3E6376F9...@yahoo.com...

>I recall general discussions of stacks and queues in the hardware
> magazines of the later 50's under LIFO and FIFO. I believe the
> whole subject appeared in the expression compilation literature of
> the day, under the guise of 'shift/reduce'.

Now that brings back memories of Knuth's LR(k) work,


Charlton Wilbur

unread,
Mar 6, 2003, 4:30:25 PM3/6/03
to
>>>>> "KL" == Karen Lofstrom <lofs...@lava.net> writes:

KL> Thanks to all. I'm putting together a small report for the
KL> professor who said he'd give extra credit to anyone who could
KL> find out when PUSH and POP were first used.

KL> By professional historian standards, it ain't much. A
KL> professional job would mean extensive searches in the pre-1962
KL> literature and interviews with surviving designers. But, I've
KL> done what I can. Again, thanks.

I suspect that push and pop may date back to formal systems theory;
weren't pushdown automata part of the early work that predated Turing
machines? I know that I *learned about them* first....

Charlton

0 new messages