6502 on a Vic20 was where I really learned to program. As a 12 year old in 1982, I quickly outgrew Basic (with 3583 bytes of free memory) and its 22x23 char screen. I saved my pocket money to buy the assembly language cartridge.
My two most memorable 6502 assembly projects were:
- Text-to-speech - GUI for entering rules to generate phonemes for a text-to-speech system
- 3D graphics - Switching the Vic-20's characters set from ROM to RAM so I could do high-resolution pixel-addressable graphics. I wrote a full set of 3D primitives to draw lines, circles, do perspective and rotations from 3D to 2D, all in 6502 assembly.
One summer holidays I transcribed the entire Vic-20 ROM disassemby into old exercise books, so I could learn how it worked. I remember a sense of victory after reverse-engineering the floating point format and how the transcendental math functions worked.
I'm not the OP, but I always liked its simplicity. There's just enough space to do something interesting without getting bogged down in too much complexity.
I think it's because it was my first. And it is simple. Yes there are many addressing modes (like zero-page, and "absolute indirect", and "indexed indirect") but there's only 56 instructions and you can learn it in one afternoon.
And doing something useful with 56 instructions, 8-bits at a time, is like solving a puzzle.
It's a detail that doesn't always come up in these threads but it's worth remembering how belligerently 8-bit a 6502 is. Not only are there next to no general-purpose registers but they're 8 bit and there are no pretend-two-registers-are-one-16-bit-register instructions at all. You can't put an address in a register. Compared to even other popular 8 bit CPUs of the time, that's a bit metal.
The 6809 is an amazing little processor, you can run multi-tasking and relocatable code on it with relative ease. And with some bank switching magic you can even do that with appreciable amounts of RAM for each task. It is also one of the few instruction sets that is very predictable, if you know some base formats then you can 'compose' instructions and they usually exist as a valid opcode.
I haven't used the 6800 family, but I'd expect most people would have preferred them - the motivation for the 6502 was to drastically cut cost, and while a lot was achieved by an amazing design, it was also a number of feature trade-offs. The main designers of the 6502 (Mensch and Peddle) were both on the team that worked on the 6800, and Peddle pitched the 65xx proposal to Motorola first, before taking it to MOS when Motorola was more concerned about protecting their margins. Before the 6501 and 6502 hit the market, a 6800 cost $175. 6501 and 6502 were introduced for $20 and $25 respectively. A year later the 6800 cost $35.
I like the 6800. Two accumulators and a 16 bit index register is a good alternative. Totally understand your preference. The 6805 seems too cut down.
I have not written much 6800 code, but have read a fair bit. Had it been more available to me, I would definitely enjoyed it
The 6809 is the Cadillac of 8 bitters. That is what makes it fun. One can pack a ton of features into small spaces and doing reentrant, relocatable code is very well supported.
Stack abuse gets one a really fast memory to memory move too.
Simplicity? - it has some many addressing modes. Pretty much forced into zero page+Y, but zero page is so limited.
Direct code modification, i.e. counters within the code was the next most common.
Of course division was an art. That being said I enjoyed it alot and still know quite of the opcodes (hex) by heart + the clock count of many instructions.
I only know 6502 in the Atari 2600 programming context. It's such a great pair because the 2600 hardware is very unique, so it gives you fun problems in that domain as well.
6502 was first. It is simple. And that makes it a lot of fun.
6809 is beautiful. I think it is the most powerful and elegant of the 8 bit CPUs. But that spoils a person too.
6502 is like whittling computing down to some useful nubs. There are enough subtleties to make it interesting too.