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 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.
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?
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.
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.
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.
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).
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>
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.
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.
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.
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.
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.
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?
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)
> 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.
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
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.
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...
There were no 16-bit registers a la Z80 either.
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
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.
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.
> [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...
An absolute truckload of car computers used the 68HC11, plenty of I/O, interrupts etc but only 8 bit. Maybe a good thing.