[137.1] 6502 vs 6800
Posted: Sat Dec 01, 2001 3:50 pm
I've recently gotten interested in the 6800 processor. Has anyone ever used one in a project?
I haven't used one yet, but from reading the books, I see several nice features:
- Tri-state address bus. With a 6502, to do any sort of "DMA" activity, you'll have to use separate tri-state buffers, since the 6502 is *always* putting out an address. Which brings up a point: the 6502 hardware manual says several times that the 6800's "Valid Memory Address" signal is not needed, because the 6502 is *always* outputting a "valid" address. I think the MOS people were stretching the truth a little... when more than one signal is involved, there is *always* a time when things are indeterminant. Also, note that 6502 designs generally gate the address-decode with the clock, so in effect, a VMA signal is being generated by external hardware anyway. The 6800 does it internally.
- Richer instruction set than 6502. It may be that some of them are not too useful, but the 6800 has a more complete set of instructions, I think.
- The 6800 descendants are still very popular, and I believe can execute 6800 instructions (like the 68HC11).
- A wider variety of peripheral chips were made for the 6800.
- A 16-bit Stack Pointer. You can put the stack anywhere in memory, and it can grow as large as you want!
- A 16-bit index register. You can use an indexed addressing mode across all of memory!
- A separate vector for Software Interrupt (SWI) - so the 6800 has a total of 4 vectors in the top of memory. The 6502 shares the BRK vector with IRQ.
- A 'HALT' signal, which causes the CPU to stop and release the buses and the R/W line, so that another device can take over the bus (like for DMA). The halt can also be done in software - there is a Wait For Interrupt instruction, where the 6800 releases the bus until an interrupt occurs.
Some 6800 down-sides:
- Requires a 2-phase non-overlapping clock, like the 6501 did. This clock is not really TTL - the spec says that it must go to close to Vcc level. I think this is easily achieved with an open-collector driver, though. Note that the 6501 is pin-compatible with the 6800 -- MOS intended that you could plug it in, change the software, and it would work.
- When it was new, the 6800 cost 3 times as much as a 6502; but of course that's irrelevant now... Both are just a few bucks each.
- The 6800 takes more time to do certain things than a 6502 does.
It seems that the 650x was, at the time, a good low-cost alternative to the 6800. MOS dropped some instructions that probably weren't used much, simplified some things, etc. But here in the 21st century, for home-brew experimenting and such, the 6800 looks like a lot of fun.
Pete
I haven't used one yet, but from reading the books, I see several nice features:
- Tri-state address bus. With a 6502, to do any sort of "DMA" activity, you'll have to use separate tri-state buffers, since the 6502 is *always* putting out an address. Which brings up a point: the 6502 hardware manual says several times that the 6800's "Valid Memory Address" signal is not needed, because the 6502 is *always* outputting a "valid" address. I think the MOS people were stretching the truth a little... when more than one signal is involved, there is *always* a time when things are indeterminant. Also, note that 6502 designs generally gate the address-decode with the clock, so in effect, a VMA signal is being generated by external hardware anyway. The 6800 does it internally.
- Richer instruction set than 6502. It may be that some of them are not too useful, but the 6800 has a more complete set of instructions, I think.
- The 6800 descendants are still very popular, and I believe can execute 6800 instructions (like the 68HC11).
- A wider variety of peripheral chips were made for the 6800.
- A 16-bit Stack Pointer. You can put the stack anywhere in memory, and it can grow as large as you want!
- A 16-bit index register. You can use an indexed addressing mode across all of memory!
- A separate vector for Software Interrupt (SWI) - so the 6800 has a total of 4 vectors in the top of memory. The 6502 shares the BRK vector with IRQ.
- A 'HALT' signal, which causes the CPU to stop and release the buses and the R/W line, so that another device can take over the bus (like for DMA). The halt can also be done in software - there is a Wait For Interrupt instruction, where the 6800 releases the bus until an interrupt occurs.
Some 6800 down-sides:
- Requires a 2-phase non-overlapping clock, like the 6501 did. This clock is not really TTL - the spec says that it must go to close to Vcc level. I think this is easily achieved with an open-collector driver, though. Note that the 6501 is pin-compatible with the 6800 -- MOS intended that you could plug it in, change the software, and it would work.
- When it was new, the 6800 cost 3 times as much as a 6502; but of course that's irrelevant now... Both are just a few bucks each.
- The 6800 takes more time to do certain things than a 6502 does.
It seems that the 650x was, at the time, a good low-cost alternative to the 6800. MOS dropped some instructions that probably weren't used much, simplified some things, etc. But here in the 21st century, for home-brew experimenting and such, the 6800 looks like a lot of fun.
Pete