[Simh] PDP-6 Microtape bootstrap

Angelo Papenhoff aap at papnet.eu
Thu Mar 1 05:23:36 EST 2018


On 01/03/18, Lars Brinkhoff wrote:
> Hello,
> 
> Below is the PDP-6 Microtape (DECtape) bootstrap code used at the MIT AI
> Lab.  There are some of us wondering why it was written this way?  Why
> add one to the input word and check that it's negative, and that the
> right half is not zero?
> 
>   0/   JFCL             ;Nop.
>   1/   MOVSI (JFCL)     ;Set 0 to nop.
>   2/   CONO 635550      ;Reset processor.
>   3/   CONO PI,11577    ;Reset priority interrupts.
>   4/   CONO UTC,223110  ;Reset Microtape controller.
>   5/   CONO DC,4010     ;Start transfer.
>   6/   CONSO DC,1000    ;Ready?
>   7/   JRST 6           ;No, loop.
>   10/  DATAI DC,13      ;Yes, store word at 13.
>   11/  AOJGE 13,6       ;Add one to contents of 13, and loop if positive.
>   12/  TRNE 13,-1       ;Right half zero?
>   13/  .                ;No, execute.
>   14/  JRST 6           ;Yes, loop.

To that I want to add that the TRNE actually makes sense.
If the right half is zero, that implies the AOJGE caused a carry into
the left half and we probably don't want to execute an instruction then.
Why one is added and only negative instructions are executed is still a
mystery though.

I have asked Richard Greenblatt and Peter Samson about that piece of
code too, but they were puzzled as well.

It's not hard to write some code that puts a more conventional loader
into memory somewhere, but that still doesn't explain the strangeness
of this thing.

aap



More information about the Simh mailing list