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 _______________________________________________ Simh mailing list Simh@trailing-edge.com http://mailman.trailing-edge.com/mailman/listinfo/simh