Article 163012 of comp.os.vms: Linwood Ferguson writes: >Gregory Travis wrote: >> The 6600 was a beautiful machine. I can't imagine there ever being anything >> remotely like it again. >And you're really showing you're your age if you can place the phrase: >"This book is dedicated to A6 and A7 without whom none of this could >have been saved". (+/- my failing non-parity memory). Then you can only be talking about "Assembly Language Programming for the Control Data 6000 Series and the Cyber 70 Series" by Ralph Grishman (1974). A fantastic book and the book from which I learned COMPASS back in the 1970s. And I'm "only" 33! greg p.s. The actual quote is "This book is dedicated to A6 & A7, without which none of the results in this book could have been saved" p.p.s. For the great unwashed, the 6000 series had three distinct registers: The first set was B0-B7. These were 18-bit general-purpose registers usually used for temporary address storage, boolean values, conditional registers, or as loop counters. The second was X0-X7 which were 60-bit general-purpose registers which were generally used for shift/mask and arithmetic operations The third was A0-A7 which were purely address registers. However, loading an 18-bit value into A1-A5 caused the associated "X" register (X1-X5) to be LOADED with the contents of the memory location which corresponded to the address loaded into the "A" register. Moving a value beyond your program's "field length" into a A register resulted in what UNIX guys would call a segfault. Loading a value into A6 or A7 caused the value of the associated X register to be STORED at the address specified in A6 or A7. X0 and A0 were not connected to each other in either of these ways. Loading a value into A0 caused nothing to happen with X0. A0 was used as a general purpose variable to pass addresses to subroutines (such as the address in which to store return values) Ahh, for the days. -- greg greg@indiana.edu http://gtravis.ucs.indiana.edu/