Article 71 of comp.sys.cdc:
Path: matra.meer.net!news.neumedia.net!uunet!in3.uu.net!207.172.3.52!feed1.news.erols.com!news-peer.sprintlink.net!news.sprintlink.net!Sprint!howland.erols.net!vixen.cso.uiuc.edu!avenir!walker
From: walker@avenir.cerl.uiuc.edu (Michael W. Walker)
Newsgroups: comp.lang.fortran,comp.sys.cdc
Subject: Re: Reminiscing About the Cyber 6600
Date: 5 May 1997 14:31:26 GMT
Organization: University of Illinois at Urbana-Champaign
Lines: 38
Distribution: inet
Message-ID: <5kkqvu$mka@vixen.cso.uiuc.edu>
References: <01bc567d$25cfb000$7a59e1cc@default> <336DD429.74BA@rsn.hp.com> <336DEB2D.2FCD@worldnet.att.net>
NNTP-Posting-Host: avenir.cso.uiuc.edu
Xref: matra.meer.net comp.lang.fortran:50212 comp.sys.cdc:71


In article <336DEB2D.2FCD@worldnet.att.net>,
Dick Hendrickson  <dick.hendrickson@worldnet.att.net> wrote:
>Joel Williamson wrote:
>
>> Here's a bit of trivia.  Each time we trained a new systems programmer,
>> about the time they thought they knew it all, we'd challenge them to
>> save the contents of all the registers to memory _without_ using the
>> exchange jump instruction.  Anybody remember how to do it?
>> 
>Gee, this sure brings back happy memories.  To do a store the hardware
>required placing an address into either register B6 or B7 and that
>"automatically" stored the contents of X6 or X7 to the memory address.
>So, the only hard part is saving either B6 or B7 before putting an
>address into it.  I don't remember the op code sequence, but the trick
>is that a "return jump" does code modification.  So, the code looks
>something like:
>            Jump if B6 negative to Label-2
>            return jump to Label-1
>Label-1     zero
>Label-2     SB6   B6+B6
>
>The net effect is that the contnts of Label-1 will be zero if
>the sign bit of B6 is positive and non-zero if B6 is negative.
>The add at Label-1 shifts B6 left 1 place (the 6600 was a 
>one's (or two's? I forget) complement machine, so any overflow
>was ignored.)  Repeat 23 more times and you wind up with a
>sequence of 24 memory words that are zero or not depending on the
>value of the associated B6 bit.  After that, it's easy to store X6
>and all of the other registers.
>

Close, but not exactly right.  Two minor problems:  it is A6 or A7 that you
have to modify to store the corresponding X register.  One has to first save
a B register in order to have a place to save either A6 or A7.  A B register is
18 bits, not 24.
-- 
Michael W. Walker		 mwwalker@uiuc.edu
University of Illinois at Urbana-Champaign


