PDP 11/45 light chaser

Pete Turnbull pete at dunnington.u-net.com
Mon May 23 02:24:03 CDT 2005


On May 22 2005, 20:49, Jay West wrote:
> Jim wrote....
> > Location    Content Op-code            comment
> > 001000    012700    mov #1,r0        load ro with 1
> > 001002    000001
> > 001004    006100    rol                    rotate r1 left
> > 001006    012701    mov delay r1    load register r1 with delay
> > 001010    007777    delay
> > 001012    005301    dec r1                decrement register 1
> > 001014    001376    bne -2                continue to decrement r1
until
> > r1=0
> > 001016    000772    br -12                back to 001002 (dec r0)
>
> This runs on my /45, but produces a steady light display, not a cylon
or
> "blinking" effect.

I'm not much of a Unibus expert but I seem to remember there's
something odd about what's displayed in the lights, and how you get it
to change.

> It's been decades since I looked at '11 assembler. I'm
> confused about something in the listing above. If the 012700 at
location
> 1000 is a load r0 with 1, I'm guessing the next word (1002) is the
constant
> to be loaded? So, why would the branch at location 1016 go back to
the data
> at 1002? Obviously there's something I'm missing.

The code is correct, the comments are correct, but the mnemonic
instructions are wrong :-)

Remember that what's counted in a BR instruction are words, not bytes,
but that when the instruction is interpreted, the PC has already been
incremented.  So 777 is a "branch to self", and 776 is "branch back to
the previous instruction".  1376 is "branch back to the previous
instruction if Z is set", as at 1014.  772 does indeed branch back to
the ROL instruction, because it's "branch back 6".  Looks like Jim
remembered that "branch back to the previous" is "br -2", thought "two
bytes", and just doubled the six to twelve -- except that what he wrote
was octal 12 (there's no decimal point after it), or ten decimal :-)
 Actually, if I'm being really picky, it should be "br .-2".


-- 
Pete						Peter Turnbull
						Network Manager
						University of York


More information about the cctalk mailing list