> PDP-11, DEC's high volume product, was 16-bits so an argument > could be made that hex "fit" it better but octal was pretty well > entrenched in the company and worked fine. > As I recall, the instructions on the PDP-11 were broken into 3 bit fields making octal a nice fit (at least the two operand instructions were that way). I always thought the instruction set was very clever. It was something lik this: 1 bit for word or byte 3 bits for instruction 3 bits for source "mode" 3 bits for source register 3 bits for destination mode 3 bits for destination register Mode covered things like direct (source or destination in register), indirect (address of source or destination in register), autoincrement indirect (I don't remember if it was pre-increment or post, or maybe both were available), autodecrement indirect, etc. What was really clever is if you did an auto increment indirect with the source being the program counter (register 7), The data would be fetched from the address following the instruction, then the register (the program counter) would auto increment making it point to the next instruction. This was the way a "literal" was coded. It was instruction, data, next instruction. But it was not a special instruction. It was just autoincrement indirect using the program counter as the register you were autoincrementing. Similarly, you'd use register 6 as the stack pointer. All in all, I thought it was very clever. A few basic modes and registers gave you all you needed. Another interesting (to me) thing about the PDP-8 was that the most significant bit was called bit 1. I THINK that on the PDP-11, they changed this to make the least significant bit be bit 0. This makes a lot more sense since the bit number now corresponds to the exponent used in the binary weighting. While we're at it... Everyone knows how to interpret a two's complement negative number, right? Do a CIA (complement and increment accumulator) on it to see what the negated value is (it's now positive). But a very clever trick I saw once was to just change the sign of the weight of the most significant bit. Looking at a 4 bit number, for example, we have these weights: 8 4 2 1 The positive 4 bit integer 1010 is 1*8 + 0*4 +1*2 +0*1 =3D 10 decimal Now, say 1010 represents a negative number. Change the sign of the weight of the msb. 1*(-8) + 0*4 + 1*2 + 0*1 =3D -6 decimal. Try the CIA approach to negate as a check 1010 0101 (1's complement - invert bits) 0110 (add 1 to get the 2's complement). The result is +6 Harold --=20 FCC Rules Updated Daily at http://www.hallikainen.com Not sent from an iPhone. --=20 http://www.piclist.com/techref/piclist PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist .