Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Leaving Arizona – the Story of the Motorola 6800 part 2 and creation of the 6502 (thechipletter.substack.com)
121 points by zdw on Jan 14, 2024 | hide | past | favorite | 33 comments


To me, The 6502 kind of represented best-of-breed but a bit of a dead end. I couldn't see a 16-32 bit story. It's like it hit the spot, and stopped growing.

The 6800 begat the 68000. It had virtual memory management. That launched ten or more models of workstation and hit the magic '3M' window: a MIP, a Megabyte of memory and a Million pixels. 68000 led to SPARC because Sun decided to go into the RISC business itself.

I used Motorola workstations alongside Sun, for a Cray-1 project I was on the periphery of: they were the ones Cray shipped to us, passing the Cray-1 on from another customer (Boeing) and they were fine, if remarkably (physically) large machines. Like they'd got the idea of "this is a workstation" in the Microvax era, and never quite shrunk down.

I had a 6502 box (the Acorn Atom, a precursor to the BBC micro) and I used others, But I kind of wished the 6800/0 series had been bigger, and we'd been in that world more than Intel. it was nicer. it felt nicer. It felt like an instruction set Gordon Bell would have liked. It made sense if you came from a pdp-11.

Maybe I'm addicted to network byte order computers.


> It's like [6502] hit the spot, and stopped growing.

Indeed. In fact, Acorn played around with a couple of successor candidates like national semiconductor 32016 (and even Intel 80186) using the BBC micro's Tube interface before they finally have up and developed the ARM chip.

In a sense, ARM (initially Acorn RISC machine) is "the true" 6502 successor. Having done assembly on both BASIC II and V (on Archimedes) the legacy in arm2 Isa was quite evident.


i really don't think the 6800 begat the 68000 - they have almost nothing in common, architecture-wise. on the other hand, the intel 8080 certainly connected to the 8086 and in fact a lot of 8086 programs were mechanically translated, at least in part, from the 8080 (and z80).


They actually have many details in common, including some suboptimal choices, like the handling of the flags, but those are not due to 68000 being derived from 6800, as there was no such direct connection, but due to the fact that both the 6800 and the 68000 ISAs have been strongly influenced by the DEC PDP-11, which was the most popular minicomputer during the seventies.

Due to very similar mnemonics, the assembly languages of MC6800 and of MC68000 resemble even more the PDP-11 assembly language than their actual instruction sets.


Look I get this, its not like one is backwards compatible to the other. But the 68000 exists because Motorola were invested in the 6800 and saw a path onward, albiet leapfrogging to 32 bits, and deliberately not doing backwards compat ISA.

Intel and Zilog took another path. Their path in some ways, was the wiser course because IBM jumped on the Intel model and .. here we are. Zilog couldn't make it work as well for them as Intel did.


I don't really get that. The 6800 begat the 6809, and that was the connection to the 6800. When Motorola made the 68000 they decided to begin with a clean slate, there's really nothing in connection with the 6800 except the numbering scheme and both being big endian. If you want to use the word 'begat' then it fits Intel much more. Intel made the 8086, and Mensch made the 65816, both went for backwards compatibility (source or architecture) to some extent (which gave us segments and other negative artifacts).

So yes we agree on the facts, it's just so strange that you in your previous post said that the "6800 begat the 68000" - if anything, it didn't. All the companies went ahead with 16- and / or 32-bit CPUs, the difference is that Motorola broke away from their 8-bit past while doing so.


> the difference is that Motorola broke away from their 8-bit past while doing so.

And then they did it again with the PowerPC (and the 88000 prior to that) which had very little in common with the 68k.


>I couldn't see a 16-32 bit story. It's like it hit the spot, and stopped growing.

And yet WDC (Bill Mensch's company post-Commodore) put out the 65816, a 16-bit expansion of the 6502 that was the core of the Super Nintendo. So it still grew even if not to 32-bit level.


And the Apple IIGS where it was allegedly underclocked so as not to horn in on the Macintosh.


I wonder what might have been if MOS had shipped a 16-bit 6502 in 1980 instead of WDC shipping one in 1985.


Oh, I bet you'd have loved the TMS 9900. Tons of registers with switchable windows, mini-computer oriented ... and big-endian.


Looks good, but from a business perspective, another dead end -What I read says TI decided to get out of the general CPU business. Probably it means they couldn't find somebody interested in buying into this ISA and chipset to sustain their investment in developing it, where they had solid business in the other specialised spaces.

Yes, heaps of registers which map into the address space means (I am guessing) simple C compiler and Unix porting, once virtual memory is there. I wonder why nobody ran with it?


Looking at the specs for the TI TMS9900, Zilog Z80, and the MOS 6502, the TI chip came in a 64-pin DIP and required +5V, -5V, and +12V power supply while the other two chips came in a 40 pin DIP package and only required a +5V power supply.

The 6502 was cheap (<$30), the Z80 was more expensive at introduction, but looking at price lists, dropped down close to the same price as the 6502 within a few years.

from https://www.cpushack.com/2015/02/05/ti-tms9900sbp9900-accide...:

" In 1978 a 9980 cost $30 while a TMS9900 cost $70."

Also, in the comments from the above link:

"Many years later, the processor architect for the TMS9995 (Karl Guttag) pointed out to me that whatever context switch benefits the WP offered were quickly outweighed by the required memory access cycles only a handful of instructions into an interrupt service routine. It was a false economy."


The TI-99/4A was atrocious on many level, but the reason for the abysmal performance is well documented on Wikipedia -- the architecture was inherited from TI-990 which assume fast 16-bit memory and TMS9900 had neither.


The really remarkable thing about the 6502 is how the designers managed to get such strong performance out of such an economical design. It used less than half the transistors of the Z80. As a result it really was the design that helped to kick start the home computer market.

The original Arm team were big fans and the ARM1 followed in that tradition of making the most of the resources available. I guess we could say there would be no ARM without the 6502.

(Disclosure - I wrote the original post)


My memory is dim on this (having last done 6502 assembly almost 40 years ago), but the extreme lack of registers on the 6502 meant many programs were a tedious, endless parade of lda, sta instructions.


I think of it as having a nice set of 256 “registers”, in the zero page at addresses 0-255. I think of the A register as kind of an intermediate location for data that is going from memory to the ALU or the ALU to memory. The article says as much:

> In effect the 6502’s ‘page zero’ in memory provides a large number of ‘pseudo’ 8 and 16-bit registers, slower than real registers, but still faster and more versatile than having to use other parts of memory. A skilled programmer making effective use of ‘page zero’ could write code that was fast when compared to other 8-bit designs.

I haven’t done a lot of 6502, though. I learned Basic on the Apple II when I was young but moved to Think Pascal, HyperCard, and CodeWarrior on the Mac.


> I think of it as having a nice set of 256 “registers”, in the zero page at addresses 0-255.

It becomes a pain making sure the monitor/bios and any programs don't stomp on each others zero page locations though.

Then if you start daydreaming about multitasking you have to worry about shoveling the contents off somewhere else whenever you switch tasks.

The 65816 at least can relocate zero page & the stack but if you're going 16 bit you're better off going M68K


Better off unless you're targeting the SNES


It was the first CPU I learned assembly on, also 40 years ago ;-) Yes, the constrained registers made things challenging but I have positive memories about the experience.

I was introduced to Chuck Peddle ~20 years ago at a friend's wedding and got a chance to talk with him (it was kind of like meeting a rock star for me). What stuck with me was him recounting that his travels to Sri Lanka for a business there convinced him that the bustling cities in south east asia were breeding grounds for a pending viral disaster that would cover the globe thanks to advances in air travel.

When Covid came along I felt like he was somewhat validated but fortunately not to the degree he had forecasted.


Well, for all we know, Covid came out of China and did not hit South East Asia any harder than any other region. (Even more so, if you control for wealth, I guess?)


I loved the simplicity of it. This was my first assembly that I have learned (at 15) and I had SO MUCH FUN with it. Maybe this is "first love" bias, but nothing else compared with the fun factor later on (AVR, PIC, X86, RISC-V)


Not really, I think it would be better to implement a series of smaller functions and utilize the stack [1]. That way you avoid lda and sta'ing tonnes.

I much preferred the 8086/8088 instructions though [2], pop and push are nice to have.

[1] https://en.wikibooks.org/wiki/6502_Assembly#Stack

[2] https://en.wikipedia.org/wiki/X86_instruction_listings#Origi...


The stack only helps a little. Even basic operations like "add two numbers together" require the use of memory (as there is no opcode to add two registers together).


Not only that, but X and Y registers were slightly different too. You could use one for indexing in a certain way, but not the other (it's been 30 years for me, but still the memory is hazy).

There were no 16-bit registers a la Z80 either.


The main difference between X and Y is in the indirect addressing modes.

You can use X as an index when you are looping through an array of pointers.

You can use Y as an index when you are looping through an array, where you have a pointer to the beginning of that array.

There are also a couple operations that always use X as a source or destination. There’s TXS/TSX, but no TYS/TSY.

https://www.masswerk.at/6502/6502_instruction_set.html


I like this story as it goes a long way to explain why the 6502 is the way it is. Having grown up with both Z80 and 6502 essentially in parallel, I'll be the contrarian who never liked either, but will admit that it would have been hard to do better than 6502 did in the given area constraints. (Z80 however could have done so much better - the 128+ bits of architectural state could have been used far better and even have allowed a 16-bit architecture).


I had both a Z80 (Sinclair Spectrum) and a 6502 (Commodore 64) machine.

For programming, the Z80 was by far the more elegant instruction set.

In the next generation, I conciderd the Motorolla 68000 to be the 'feels good' successor of the Z80, and Intel's 8086 the 'chaotic mess' heir of the 6502.


Hopefully this debunks the confused reporting recently that the 6502 was designed "to compete with the 4040 not the 6800". The goal was to sell it for the same price as the 4040, but the design was entirely to do with making something like the 6800 but cheaper.


Sad to read of a relocation (Phoenix to Austin) breaking up the band, so to speak. But glad the result could be more competition. Curious if any more has been published with Motorola management's rationale for the move.

None of the states involved (Arizona, Texas, Pennsylvania) are California, but noncompete enforcement isn't mentioned. Curious if that played any role in the Motorola/MOS Technology dispute; naive searching not turning up.


From the Oral History [1] on the rationale for the move:

> [Bill] Lattin: And Jack Henneshen [senior Motorola manager], it is claimed that he wanted to move down there because he wanted a windmill on his property.

> [Tom] Bennett: I thought it was the Texas football games. <laughter>

[1] https://archive.computerhistory.org/resources/access/text/20...


There is also the 6809 and 68HC11 which were primarily used in embedded applications.

An absolute truckload of car computers used the 68HC11, plenty of I/O, interrupts etc but only 8 bit. Maybe a good thing.


The Advent of Computing episode on the 6502 simply says the team "really didn't want to go to Texas" as if it was a lifestyle preference. The context here makes it make much more sense.




Consider applying for YC's Winter 2027 batch! Applications are open till November 2.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: