13

According to Gordon Bell, the 6800 was based on the PDP-11. According to Chuck Peddle, it was a PDP-8.

Can anyone with knowledge of the PDP's pass judgement?

  • 2
    Fun question. It could be improved with links to Bell and Peddle, if they exist online. – Wayne Conrad Jan 15 at 17:45
  • 1
    Do you mean architecture or instruction set? – cup Jan 15 at 19:15
  • 2
    Link to Bell as reported by Paul Ceruzzi, page 244 (left top). I think he must be talking about the structure of the system below the programmer-visible architecture, since the 6800 does not resemble the -11 to me, a former PDP-11 programmer. – another-dave Jan 16 at 2:31
  • Here's a Chuck Peddle oral history interview where he makes broad references to his prior experience with PDP-11, including: " A small instruction set, great addressing, was the model for the 11 that came under the Carnegie Mellon study, and we did the same thing." – Jeremy Jan 16 at 12:55
  • However, in the video of that interview, he specifically states the 6800 was based on the PDP-8. I thought I had linked to that, apparently not: youtube.com/watch?v=enHF9lMseP8 – Maury Markowitz Jan 16 at 15:10
13

Most sources say it was based on PDP-11.

Here are citations from the book "Early Home Computers", summarizing the similarities and the differences:

Unlike the PDP-11, 6502 and 8080, the 6800 was big-endian, as was the IBM 360 (...)

Unlike the PDP-11 and 6502, but like the 8080, the 6800 used borrow carry (...)

Unlike the 8080 and especially the PDP-8, but like the PDP-11, the 6800 had no special-purpose I/O instructions (...)

(...) the zero-page is similar to the zero-page mode of the PDP-8 (...)

The instruction set mnemonics owe a great deal to the PDP-11 (...)

Unlike the 8080 and the 6502, the 6800 had a complete set of branch instructions, basically identical to those provided on the PDP-11, for comparing both signed and unsigned quantities (...)

(available online in the Google Archive, page 875)

  • 5
    As the person who knows how all of PDP-8, PDP-11 and 6800 work, and who has (negligible) programming experience with PDP-8 and PDP-11 (and with 6502, not 6800) I could say there's nothing in common between both PDPs and 6800, except, maybe, zero page in 6800 and PDP-8. – lvd Jan 15 at 18:42
  • 5
    Given the 6800 has an 'accumulator' and an 'index register', I'd say programming it is nothing like programming the PDP11. – another-dave Jan 16 at 2:29
  • @another-dave Given that both the MC6800 and the PDP-11 do single-level indirection via storing the address in a register, and the PDP-8 does multi-level indirection via a special bit in a memory word, there's a clear similarity in technique between the 6800 and -11, and difference between those two and the -8. I go into more detail on this kind of thing in my answer below. – cjs Jan 19 at 16:34
  • @FOO on the -11 is indirection via a memory word. It turns into @disp(R7) where the address of the indirect word is calculated from disp and the current content of the program counter (R7). The "indirection" is via memory; the register's involvement is just to address memory in the first place, the same as all PDP-11 instructions that access memory. – another-dave Jan 19 at 17:34
  • You are correct about the lack of multilevel indirection, but it seems to me that's universally fallen out of favour, perhaps because we no longer have word-oriented machines where the word size exceeds the virtual address size (thus giving room for, say, indirect and modifier fields as well as an address field in an indirect word). – another-dave Jan 19 at 17:53
12

In spirit it's both, thus eventually neither.

Features of the 6800 can be put in line with many CPUs of that time - from PDP-8 and -11 all the way to TI's 990 or even IBM's /360 - but none will put it decisively into being based on either. In fact, many of the arguments that can be used to put the 6800 into PDP-8/-11 heritage can as well be applied to the 8080 - except, there is a quite clear lineage form the Datapoint 2200 to 8080 (and ultimately x86). It started before the PDP-11 and not really being anywhere like the PDP-8 - whose main feature is being a 12-bit CPU. So most of these similarities are rather due to the fact that these are obvious solutions than of a certain heritage.

As said, the similarities can at best be attributed to the designers being exposed to either DEC machine before, and thus seeing it through that preposition.

5

I wonder if there isn't a minor mistake in the CPU being discussed in one of those.

It's very easy to see the 68K as nearly a direct descendant of the PDP-11. The 68K has separate data and address registers, but programming it is mostly quite similar to programming a PDP-11.

I'd say the 6800 is (much) closer to a PDP-8. If memory serves, the 6800 has two accumulators and an index register (and PC and stack pointer). My recollection of the PDP-8 isn't quite as clear, but I think it had one accumulator, an index register, a "memory transfer register" (and a PC, but no stack pointer). So, both use an accumulator for most instructions, use a dedicated register for indirect transfers to/from memory, and so on.

On the other hand, it seems to me like it takes some thought to see the similarity between the PDP-8 and the 6800, where the similarity between the 68K and the PDP-11 always struck me as almost exceedingly obvious.

  • PDP-8 didn't have ANY index registers. Instead, it could use ANY memory reference (either in current or zeroth 128-word page) as indirect: the contents of the addressed cell IS the address of operand. – lvd Jan 16 at 19:42
  • Also, there is even similarity in operands encoding in pdp-11 and 68k: 3 bits for register number and 3 bits for addressing type. However, this is where the similarity ends: 68k has only single true 2-operand instruction: `move'. All other are "1.5 operand": one of their operands is necessarily a data register. Due to this, 68k had many more different 2-place operations encoded in a single 16bit word. – lvd Jan 16 at 19:47
  • 1
    PDP-8 has 8 auto incrementing "index registers", they are on the base page (zero page) at addresses 10 thru 17 (octal). When you use the extra indirection addressing mode, they automatically increment. – Erik Eidt Jan 16 at 19:47
  • 2
    In my opinion the 6800 is more like a stripped down minimalist PDP-11 than a PDP-8. The 68K then grew up from there via the 6809. – Kevin White Jan 16 at 20:12
  • 1
    There is a known fact that 68k and 6809 were designed in parallel and independently. 6809 do indeed inherent much from 6800 ideology, and 68k is clearly absorbed much from pdp-11, but I can't see the ways in which 6800 (or -09) might be ever comparable to pdp-11. – lvd Jan 17 at 10:35
1

In overall feel, the MC6800 is clearly more like a PDP-11 than a PDP-8.

Word vs. Byte Architecture

Like many machines of the 1950s and '60s, from the IBM 701 to DEC's PDP-10, the PDP-8 was a word-oriented machine. Addresses pointed only to full words, loads and stores were always of a full word¹, and every instruction was exactly one word in size, with any operands (such as an address) also contained in that same word. A major consequence of this design is that the PDP-8 cannot directly address its entire address space: the address field in an instruction word is only 7 bits long, so address operands point either to an address in the lowest 128 bytes of memory (if the addtional Z bit in the word is clear) or to an address the current page determined by the top 5 bits of the program counter.²

By contrast, the PDP-11 and MC6800 were byte-oriented machines, with 16-bit words being subdivided into two individually addressed eight-bit bytes which are often accessed as separate units of data, rather than as a whole word. Though the PDP-11 used word-length instructions and the MC6800 used byte-length instructions, in both cases at least some operands were separate words/bytes after the instruction word/byte, rather than always in the instruction word. Being able to use two-byte address operands after the instruction word/byte allowed both the -11 and the 6800 to access any byte in the address space from any instruction.

This division into bytes introduced two concepts that don't exist on word-oriented machines. Endianness refered to whether the lower byte of a word in memory was the most-significant (big-endian) or least-significant (little-endian) byte of an address. Alignment referred to whether or not a word was allowed to start on an odd address in certain cases. Word-oriented machines had no need for either of these concepts since a word was not divisible into smaller units.

Other Similarities and Differences

Other similararities between the MC6800 and the PDP-11, and differences from the PDP-8, included the following:

The 6800 and -11 both used a stack, the head of which was pointed to by a register, for storing data and the return address of a subroutine. This made subroutines automatically reentrant (so long as the programmer stored all local data on the stack). The PDP-8 jump-to-subroutine instruction stored the return address in the first word of the subroutine itself, which necessitated special handling if the subroutine might be called again before it returned.

The 6800 and the -11 had no dedicated I/O instructions, instead having peripherals that monitored the memory addresses being accessed and responded appropriately when an address assigned to them was accessed. PDP-8 peripherals added new instructions to the instruction set.

The 6800 and the -11 had multiple registers available and operations could be performed with only registers as operands. (For example the 6800's ABA instruction would add the contents of the B register to the A register, leaving the result in A.) The PDP-8 had only a single user-accessible register, AC, besides the program counter, and so all operations using more than one data value had to take the second value from memory.


¹Some word-oriented machines did have facilities for sub-word access, such as the "byte" instructions of the PDP-10, but the PDP-8 did not, with arguably the exception of the BSW instruction, present only in the 8/e and later models, that swapped the two 6-bit "bytes" in a word.

²This was not the case, however, with many other word-oriented machines, which had longer words capable of holding a full address.

  • 1
    The salient feature of the PDP-11 ISA, to me, is (a) the set of general registers rather than having dedicated AC, MQ, etc., (b) the exposure of PC as 'just' another register, and (c) operand addressing modes that require and allow any of the registers. The lack of GPRs in the 6800 thus says "nothing like an -11" to me. – another-dave Jan 19 at 17:46
  • @another-dave So do you feel that the 6800 is "nothing like an -11" but even less like a PDP-8, or do you find clear binary distinction between features such as can/cannot directly address all memory to be of little importance? (I have updated my post to mention this explicitly, since it probably wasn't clear from the word- vs. byte-oriented distinction.) – cjs Jan 20 at 0:59
  • (I've also removed the multi-level indirection bit; I had confused the PDP-8 with other word-oriented machines that could do this.) – cjs Jan 20 at 1:03
  • Re "like a PDP-8" - I don't really have a strong opinion on this, having not programmed an 8. Register-wise, I'd lean to "more like the 8 than the 11", but as you observe, whole-memory addressability is a big deal. I suppose I don't really see why it is claimed that the 6800 is "like" either of them. – another-dave Jan 20 at 1:09
  • 1
    @another-dave Keep in mind that when Motorla started designing the 6800 in 1971 byte-oriented machines were not nearly as common as they are now. The first widely used byte-oriented machine, the IBM 360, had shipped just six years earlier; most larger computers were still word-oriented. Even amongst relatively small computers there were still word-oriented machines such as the PDP-8. It was the microprocessor revolution itself that made byte-oriented machines so common as to be considered the normal way of doing things. – cjs Jan 20 at 1:28
1

I say the 6800 is not like a PDP-11 in any useful way. It does not have general registers and it does not have addressing modes as a separate construction from the registers used by the mode. For example, the PDP-11 'indexed' mode is X(Rn), for n = 0 to 7; the case of n = 7 (the PC) gets you PC-relative addressing. By contrast the 6800 has only 1 register that is used for indexed mode.

Gordon Bell agrees with me (or rather, I with him!) in what makes the PDP-11 special:

The basic design decision which sets the PDP-11 apart was based on the observation that by using truly general registers and by suitable addressing mechanisms it was possible to consider the machine as a zero-address (stack), one-address (general register), or two-address (memory-to-memory) computer. Thus, it is possible to use whichever addressing scheme, or mixture of schemes, is most appropriate.

A New Architecture for Minicomputers: the DEC PDP-11

The 6800 appears to me to be more of a throwback to earlier designs (presumably to fit the silicon processes of the day) -- separate accumulator, index register, stack pointer. The PC is not an explicit component of operand evaluation; it's only implicitly involved in address modes that need further bytes from the instruction stream.

Where I think some of the confusion might have arisen, is that Peddle said:

A small instruction set, great addressing, was the model for the 11 that came under the Carnegie Mellon study, and we did the same thing.

So, he took some ideas from the set of ideas that went into the PDP-11. That does not mean that the 6800 is like a PDP-11 in any way really expressed in the ISA, just that the PDP-11 provided some inspiration or guidance.

My candidates for what ideas were taken:

  • the desirability of memory-access instructions being able to address all of memory

  • the desirability of indexed mode (constant displacement in instruction stream plus contents of index register)

  • the desirability of indirect addressing

These are all under the heading of "great addressing". The small instruction set observation is the realization that you don't need a huge instruction set, and allows you to make the tradeoff between using more bits for addressing-related use (e.g., address mode) and using them for more opcode bits.

  • Most excellent answer. It is interesting, then, that Peddle talks about deliberately extending the addressing modes during the evolution of the 6502, I wonder if the differences between these platforms were some of the inspiration. – Maury Markowitz Jan 20 at 18:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.