The 6502 CPU Powered a Whole Generation!

The 8-Bit Guy
26 Mar 202425:16

Summary

TLDRThis episode delves into the revolutionary 6502 microprocessor, a cornerstone of 1980s technology that powered iconic home computers, game consoles, and even arcade machines. Originating from MOS Technology, the 6502's affordability and versatility made it ubiquitous, from the Commodore PET to the Nintendo Entertainment System. We explore its standard and variant forms, its influence extending into toys, medical devices, and even space technology. Highlights include a technical breakdown of its operation, comparisons with contemporary CPUs, and its enduring legacy in modern computing. The video culminates with insights from Bill Mensch, a key figure behind the 6502, revealing its ongoing relevance in various sectors.

Takeaways

  • 💾 The 6502 microprocessor, created by MOS Technology, powered many 1980s computers, arcade machines, and game consoles, making it a pivotal component in the era's technology.
  • 🕹️ Iconic devices like the Commodore PET, VIC-20, Apple II, and Atari 400/800 utilized the standard 6502, showcasing its widespread adoption and versatility.
  • 🎮 Beyond computers, the 6502 found its way into game consoles such as the Atari 2600 and Nintendo's NES, underlining its ubiquity in entertainment technology.
  • 🔌 Variants of the 6502, designed with modifications for cost reduction or feature addition, powered computers like the Commodore 64 and Apple IIgs, as well as in toys and medical devices.
  • 📈 Despite its 8-bit architecture, the 6502's efficient design allowed it to compete effectively with higher clocked CPUs, demonstrating that MHz isn't the sole factor in computing performance.
  • 🎲 The 6502's simplicity facilitated a direct communication path with other chips via the data bus and chip select lines, making it an efficient and straightforward processor for its time.
  • ⚙️ Unique for its time, the 6502 could perform operations on both the rising and falling edges of the clock pulse, doubling its work rate per cycle compared to many contemporaries.
  • 🛠️ The advent of the 65c816, a 16-bit successor to the 6502, introduced extended capabilities like a larger address bus and 16-bit internal math, expanding the potential for more complex computing tasks.
  • 🌐 The 6502's legacy extends into modern applications, with variants still in production for hobbyist markets and embedded systems, proving its enduring influence on computing.
  • 👨‍🔬 A discussion with Bill Mensch, a co-creator of the 6502, revealed the processor's ongoing relevance, including its role in life-support systems and the decision-making behind not pursuing a 32-bit variant.

Q & A

  • What was the 6502 microprocessor used in during the 1980s?

    -The 6502 microprocessor was used in a variety of devices during the 1980s, including affordable home computers, arcade machines, video game consoles, and even some toys and medical devices like pacemakers.

  • How did the 6502 microprocessor impact the home computer market in the 1980s?

    -The 6502 microprocessor played a significant role in the home computer market by making computers more affordable and accessible. It powered popular home computers such as the Commodore PET, VIC-20, Apple II, and Atari 400 and 800.

  • What is a variant of the 6502 microprocessor, and how does it differ from the standard 6502?

    -A variant of the 6502 microprocessor is a version that may have added extra features or removed certain features to make the chip smaller or cheaper. While these variants run the same machine code as the original 6502, they may not be pin-compatible, meaning they cannot be directly swapped between different systems.

  • How did the 6502 microprocessor enable the gaming industry in the 1980s?

    -The 6502 microprocessor was widely used in arcade machines and video game consoles, including the Atari 2600, 5200, 7800, and the Lynx handheld, as well as the Nintendo NES and SNES. Its ubiquity and affordability contributed to the rapid growth of the gaming industry during this period.

  • What are some unique applications of the 6502 microprocessor outside of computers and gaming?

    -The 6502 microprocessor has been used in a variety of non-traditional applications, including toys like Furbies and Tamagotchis, implanted medical devices such as pacemakers, and even satellites orbiting the planet.

  • What made the 6502 microprocessor so popular and successful during its time?

    -The 6502 microprocessor was popular due to its affordability, versatility, and the fact that it was used in many successful home computers and gaming consoles of the era. Its simple design and wide compatibility with various systems also contributed to its success.

  • How does the 6502 microprocessor communicate with other chips on a motherboard?

    -The 6502 microprocessor communicates with other chips through a data bus, a read/write line, and a chip select (CS) or enable line. The data bus allows for 8-bit communication, while the read/write line determines the direction of data flow. The CS line allows the CPU to selectively communicate with different chips on the bus.

  • What is the significance of the 6502's 8-bit data bus and 16-bit address bus?

    -The 8-bit data bus of the 6502 allows for data transfer in 8-bit chunks, while the 16-bit address bus enables the CPU to address up to 64 kilobytes of memory. This combination of data and address bus widths was a key factor in the 6502's success and its ability to support a wide range of applications.

  • How did the 6502 microprocessor's performance compare to other CPUs of the era, such as the Z80?

    -Despite having a lower clock speed, the 6502 was able to compete well with other CPUs like the Z80 due to its efficient use of clock cycles and its ability to perform work on both the rising and falling edges of the clock pulse, effectively doing twice as much work per cycle.

  • What is the difference between the 6502 and its 16-bit variant, the 65816?

    -The 65816, also known as the 65c816, is an extension of the 6502 that operates in 16-bit mode, allowing for larger data operations and a larger addressable memory space of up to 16 MB. It also includes additional instructions and features that improve performance and functionality.

  • Why did the 6502 architecture not persist much beyond the 16-bit era?

    -The 6502 architecture did not persist much beyond the 16-bit era primarily due to the industry shift towards MS-DOS compatible systems and the rise of more advanced 32-bit architectures like ARM, which offered greater performance and capabilities for evolving software and hardware needs.

  • What are some modern applications and customers for the 6502 microprocessor?

    -Today, the 6502 microprocessor is still used in niche markets such as the hobbyist and retro computing communities, as well as in life-support systems, where its reliability and simplicity make it a critical component in devices like pacemakers.

Outlines

00:00

📺 Introduction to the 6502 Microprocessor

The video begins with an introduction to the 6502 microprocessor, highlighting its widespread use in various devices during the 1980s, including home computers, arcade machines, and video game consoles. The narrator expresses intent to discuss the 6502's role in these systems and its variants, as well as an interview with Bill Mensch, one of the creators of the 6502. The 1980s technological landscape is briefly painted, emphasizing the era's reliance on the 6502 processor.

05:04

💡 How the 6502 Processor Works

This paragraph delves into the technical aspects of the 6502 processor, explaining how it communicates with other chips via an 8-bit data bus and a read/write line. The concept of Chip Select (CS) and the address bus are introduced, illustrating how multiple chips can communicate over the same data bus without interference. The explanation extends to the binary addressing system and why memory modules increase in size by doubling in capacity. The 6502's efficiency and performance are compared to other CPUs of the era, such as the Z80, highlighting the 6502's ability to perform more work per clock cycle and complete instructions faster.

10:07

🎮 The 6502 in Gaming Consoles and Computers

The narrative shifts to focus on the 6502's application in gaming consoles and home computers, detailing the specific clock speeds at which various systems like the Atari 2600, Apple III, BBC Micro, and Super Nintendo operated. The discussion includes the challenges of attributing game performance to the CPU versus other system components, such as graphics co-processors. The Apple IIgs is presented as an example of a system primarily reliant on the CPU for its operations, and the impact of overclocking the 6502 is demonstrated through the gaming example of Wolfenstein 3D.

15:13

🔢 Mathematical Operations on the 6502

The paragraph explores how the 6502 handles mathematical operations, particularly with 8-bit numbers. It explains the process of adding 16-bit numbers by carrying out multiple instructions and the absence of direct multiply and divide instructions in the 6502's repertoire. The alternative methods for multiplication and division, including bit shifting and lookup tables, are discussed, along with a personal anecdote from the narrator about the efficiency of these methods over built-in multiply and divide commands on other processors.

20:14

🛠️ Variants of the 6502 Processor

This section provides an overview of various 6502 processor variants, including the 6507 used in the Atari 2600, the 6502C (Sally chip), and the 6510 found in the Commodore 64. The differences in pin arrangements and functionalities, such as memory banking and the addition of general-purpose I/O pins, are highlighted. The Western Design Center 65c02, the only variant still in production, is introduced, along with its new opcodes and compatibility with older code. The challenges and potential of using the 65c02 in older systems are discussed, with a practical demonstration of its integration into a Commodore VIC-20.

🚀 The 65c816: A 16-bit Evolution of the 6502

The evolution of the 6502 into the 65c816, a 16-bit processor, is detailed. Despite having an 8-bit data bus, the 65c816 is capable of 16-bit math internally and has a larger address bus, allowing for up to 16 MB of RAM. The transition from 8-bit to 16-bit mode is explained, along with the pin differences and the need for an adapter board for installation in older systems. The 65c816's compatibility with the 65c02 opcodes and its use in the Apple IIgs and Super Nintendo are highlighted. The section concludes with a discussion on the 6502's longevity and modern applications, including its role in life-support systems.

🗣️ Conversation with Bill Mensch, Co-Creator of the 6502

The video concludes with an interview segment featuring Bill Mensch, one of the original creators of the 6502 and the 65c816 processors. Bill shares insights into the current market for the 6502, including its popularity in the hobbyist community and its critical role in life-support systems. He also discusses the transition in processor architecture beyond the 16-bit era, mentioning his recommendation of ARM architecture to licensees. The conversation provides a personal perspective on the legacy and ongoing relevance of the 6502 processor.

Mindmap

Keywords

💡6502 microprocessor

The 6502 microprocessor, developed by MOS Technology, is a central processing unit (CPU) that played a pivotal role in the 1980s home computers, arcade machines, and video game consoles. It was known for its affordability and efficiency, which led to its widespread adoption in various systems such as the Commodore PET, Apple II, and Atari 400/800. The 6502's significance in the video is that it represents the backbone of an entire generation of computing and gaming devices, showcasing its versatility and historical impact on the technology landscape.

💡variants

In the context of the 6502 microprocessor, variants refer to different versions or modifications of the original chip that may have additional features or altered specifications. These variants maintain compatibility with the original 6502's machine code but may differ in aspects such as pin configuration, making them non-interchangeable with the standard 6502 in certain applications. Variants allowed for more tailored solutions in various devices, contributing to the 6502's adaptability and longevity in the market.

💡data bus

The data bus is a critical component of a computer's architecture, consisting of a series of electronic channels that transfer data between the CPU and other hardware components, such as RAM chips. In the 6502 microprocessor, an 8-bit data bus means it can handle 8 bits of data at a time, which directly influences the processor's ability to communicate and manage information within the system. The width of the data bus is a key factor in determining the processor's performance and the types of devices it can support.

💡read/write line

The read/write line is a signal line in a computer system that controls the direction of data flow between the CPU and other components, such as memory chips. When the read/write line is activated (or set to 'read'), data is expected to be received by the CPU, whereas when it is deactivated (or set to 'write'), data is sent from the CPU to another component. This line is crucial for ensuring the correct and orderly exchange of information within the computer system.

💡Chip Select (CS) line

A Chip Select (CS) line, also known as an Enable line, is a signal used by the CPU to control which hardware devices on the data bus are allowed to communicate at any given time. When the CS line for a specific chip is activated, it grants that chip permission to transmit or receive data on the bus. This mechanism prevents data collisions and ensures that only the intended devices participate in data transfers, maintaining an organized and efficient communication protocol within the computer system.

💡address bus

The address bus in a computer system is a set of electronic channels that carry address signals from the CPU to the memory or I/O devices. These signals specify the location in memory or on the device where data is to be read from or written to. The size of the address bus, determined by the number of address lines, dictates the maximum amount of memory that the system can address. For example, a 16-bit address bus, like the one in the 6502, can address up to 65,536 unique memory locations or 64 kilobytes of memory.

💡clock speed

Clock speed, measured in hertz (Hz), is the rate at which a CPU's internal clock oscillates, which determines how many instructions per second a processor can execute. A higher clock speed generally indicates a faster and more efficient CPU. However, the 6502 microprocessor, despite having a lower clock speed compared to other CPUs of its era, was able to perform competitively due to its efficient design and fewer clock cycles required per instruction.

💡binary addressing

Binary addressing is a method used in computer systems to identify memory locations using binary numbers. Each address line on the address bus represents a binary digit (bit), and the combination of all bits on the address bus forms a binary address that points to a specific memory location. The size of the address bus directly affects the range of memory addresses that can be represented, with each additional bit doubling the possible addresses. This concept is fundamental to understanding how memory is organized and accessed in digital systems.

💡math operations

Math operations in the context of CPUs refer to the basic arithmetic functions such as addition, subtraction, multiplication, and division that a processor can perform on data. The 6502 microprocessor, being an 8-bit processor, operates on 8-bit numbers directly but requires additional instructions or techniques to handle larger numbers, as it lacks dedicated multiply and divide instructions. Programmers must use methods like bit shifting or lookup tables to perform these operations, which, while more complex, can still be efficient in certain scenarios.

💡65c02

The 65c02 is a variant of the 6502 microprocessor that was introduced by Western Design Center in 1983. It retains the original 6502's instruction set but adds new opcodes designed to improve programming efficiency and speed. The 65c02 is notable for still being in production today and for being used in systems like the Apple IIe, IIc, and Atari Lynx. Despite the addition of new instructions, the 65c02 maintains compatibility with existing 6502 code, making it a versatile and backward-compatible upgrade.

💡65c816

The 65c816 is a significant upgrade to the 6502 family of processors, introduced in 1985. It is a 16-bit capable CPU that retains the 8-bit data bus of the 6502 but can perform 16-bit math operations and access up to 16 MB of RAM, a substantial increase from the 64 KB limit of the original 6502. The 65c816 also supports all the new opcodes of the 65c02 and adds more, providing a more powerful and feature-rich platform for software development. It was used in systems like the Apple IIgs and the Super Nintendo.

Highlights

The 6502 microprocessor was a key component in many home computers, arcade machines, and video game consoles from the 1980s.

The 6502 was created by MOS Technology and was known for its affordability and efficiency.

The standard 6502 was used in iconic computers such as the Commodore PET, VIC-20, Apple II, and Atari 400 and 800.

A dozen or so variants of the 6502 existed, some with added or removed features, but not all were pin-compatible.

The 6502's ubiquity extended to dozens of arcade games, including classics like Asteroids and Centipede.

The 6502's influence can be found in unexpected places, such as toys, pacemakers, and even satellites.

The 6502 was introduced in 1975, a time of significant technological advancements and societal changes.

The 6502's low cost of $25 per unit at launch made it accessible for a wide range of applications.

The 6502's 8-bit data bus allowed for efficient communication between the CPU and other chips.

The 6502's clock pulse efficiency allowed it to perform more work per cycle compared to other CPUs of the era.

The 6502 required fewer clock cycles on average to complete an instruction, contributing to its performance.

The 6502's lack of built-in multiply and divide instructions led to innovative methods for these operations, such as bit shifting and lookup tables.

The 65c02 variant added new opcodes, enhancing the programming experience and execution speed.

The 65c816, a 16-bit variant of the 6502, was capable of addressing up to 16 MB of RAM and offered significant performance improvements.

The 6502's legacy continues in the modern day, with applications in hobbyist computing and life-support systems.

The 6502's simplicity and efficiency made it a favorite among programmers and a driving force in the personal computing revolution.

Transcripts

00:11

I have made countless videos about old computers  from the 1980s, but in this episode we're going  

00:16

to have a look at the processor that powered  them all, or at least most of them. And then  

00:21

at the end of the video we're going to have  a quick chat with Bill Mensch, one of the  

00:24

original creators of the 6502 microprocessor The 1980s brought us affordable home computers  

00:30

for the first time ever, arcade  machines, and of course video game  

00:35

consoles. There was one microprocessor that  seemed to be ubiquitous. One processor that  

00:37

seemingly powered an entire generation. And  that processor was the 6502 by MOS Technology. 

00:44

I want to start with the standard 6502. There  were at least a dozen variants of it that were  

00:49

more or less compatible, but might not  be pin-compatible, and we'll come back  

00:53

to those later. So, let's start by having a look  at some of the computers that used the official,  

00:57

standard 6502. These would be the Commodore PET,  and the VIC-20 The original Apple II and II+. Also  

01:06

the Atari 400 and 800 home computers, the Oric  Atmos, most of the Acorn computers like the Atom  

01:12

and Electron series, and of course the BBC micro. There were also dozens of arcade machines that  

01:18

used the 6502, more than I want to cover here.  But if you've ever played Asteroids, Centipede,  

01:24

Missile Command, Tempest, crystal castles, or  ever really stepped into an arcade of any sort,  

01:31

you've probably played some  machines that ran on the 6502. 

01:35

All of these systems used a standard 6502  processor. And what I mean by that is,  

01:39

you can take the CPU out of say a VIC-20,  stick it in a very different kind of computer,  

01:44

such as an Apple II, and it will just work.  You can even pull the 6502 out of a Commdore  

01:49

disk drive and stick it in an Atari 400, and it  would work just fine. It's strange today to think  

01:55

of all of these different incompatible  computers running the same exact chip. 

02:01

However, the scope of the 6502 reaches  far beyond these. When you start looking  

02:05

at the variants, the list becomes huge. So, what is a variant exactly? Well, these  

02:10

are other versions of the 6502 that have either  added some extra features, or in some cases even  

02:16

removed features in order to make the chip either  smaller or cheaper. They all run the same machine  

02:22

code as the original, but they aren't necessarily  pin compatible, meaning you can't pull one out  

02:27

of one type of machine and then stick it in a  different kind of machine and expect it to work. 

02:31

Computers that used variants would be the  Commodore 64 and 128, and the Plus/4. Also  

02:38

Apple used variants in the Apple III and IIgs.  Atari used them in the XL and XE series of home  

02:44

computers, and even inside their disk drives. Another popular use of the 6502 was of course,  

02:49

in game consoles. This would include the Atari  2600, 5200, 7800, and the Lynx handheld. More  

02:56

importantly Nintendo used a variant in the NES, as  well as the Super Nintendo, and the TurboGrafx 16. 

03:04

But what might surprise you would be some of  the not so obvious places you can find 6502  

03:09

processors. Ever played with a Furby, yeah, those  run on a 6502. How about a Tamagotchi, surprise,  

03:15

those run on a 6502. In fact, there are countless  toys that have a 6502 core, but they are really  

03:22

hard to catalog for you because they are usually  embedded into an epoxy blob these days, making it  

03:26

really hard to tell just by opening up a toy. Here's one that may surprise you. If you have  

03:32

a pacemaker or any sort of implanted technology  in your body, it is very likely running a 6502  

03:37

inside. There are even 6502 processors  orbiting the planet inside satellites,  

03:42

and I believe they were used in few minor  systems on the space shuttle and international  

03:46

space station, although I don't know if  there are still any in use there today. 

03:50

And apparently the terminators of the future  also run on 6502 as the computer code seen on  

03:56

screen is 6502 assembly instructions,  and if Futurama is to be believed,  

04:00

then a thousand years from now, robots like  Bender will be operating on 6502 processors. 

04:06

The point is, unless you have been living under  a rock your whole life, everyone on the planet  

04:10

has at some point interacted with this processor. But, let's go back in time to the beginning. Back  

04:15

to 1975. Many notable things were happening.  Gerald Ford was President of the USA. Disco  

04:21

music was at its peak. The Rubiks cube went  on sale. The movie Jaws just came out. And,  

04:27

the Vietnam war was coming to an end. Oh,  and The 8-Bit Guy was born, that's me. 

04:33

But in the world of technolgy, there were  also many exciting things happening that  

04:37

year. Video Cassette Recorders for home users  entered the market. The Altrair home computer  

04:42

kit was introduced. A little software company  called Microsoft was started. And of course,  

04:47

more importantly for the purposes of this  video, the 6502 Microprocessor went on sale. 

04:53

For the first year, it was being sold for $25  a unit, which was crazy cheap compared to its  

04:57

nearest competitor, the Motorola 6800, which  sold for $175 a unit. At this time it was mostly  

05:04

being used in hobby and enginering projects  like the KIM-1 computer, and later in Steve  

05:09

Wozniak's little computer, the Apple 1. But, let's skip forward to 1977, a year  

05:15

mostly remembered for the debut of the Star Wars  franchise, was also the year the 6502 really took  

05:21

off. Computers like the Apple II and Commodore  PET entered the market. Two of the big-3 home  

05:26

computers of that year used the 6502. But the  real volume would come, not from a home computer,  

05:32

but from the Atari 2600 video game console.  Atari would sell nearly 400,000 units of the  

05:38

2600 in 1977 alone, and eventually over 30  million of them over the life of the product. 

05:45

Needless to say, this was just the tip of the  iceberg. but now let's have a look at some of the  

05:50

features of this chip, and see how it worked. I want to start by talking about how the CPU  

05:54

communicates with other chips. 8 of the pins on  the CPU represent the data bus. Each of these  

06:00

can be either on or off, which represent a 1 or  zero. Hence, this is an an 8-bit data bus. So,  

06:06

for illustration we'll connect this to the  data bus of a RAM chip. This way the CPU and  

06:10

the RAM chip can send and receive 8-bit numbers. But there's another important line that the CPU  

06:15

controls. This is the read/write line. If  the line is on, its means to read and thus  

06:20

the data is expected to travel this direction.  If the line is off, then it means write, and  

06:25

the data will travel in this direction instead. And so this line also has to connect to the RAM  

06:30

chip so both the CPU and the RAM chip understand  the direction data is flowing at any given time.  

06:36

OK, hopefully all of this makes sense so far. Of  course, most any motherboard is going to be far  

06:41

more complicated than this, because there will  be a lot more chips like I/O chips, video chips,  

06:45

etc. And they all connect to the same data bus. So the question is, how do they all talk over  

06:50

the same data bus at the same time without  signals colliding with each other? Well,  

06:54

they don't. They are all allowed to listen  to the bus, but only allowed to talk on the  

06:58

bus when the CPU wants to talk to them. So how  does that work? Well, each chip on the bus has  

07:04

a CS line. It stands for Chip Select. Sometimes  it may be called an Enable line. Either way,  

07:09

it does the same thing. When this line is  activated, that means the chip is allowed  

07:13

to talk on the bus. That chip could be a RAM  chip, ROM chip, I/O chip, video chip, whatever. 

07:18

So the next question is, what determines when  that chip is activated? OK, we have the data bus,  

07:23

and the read/write line. But we also  have something called the address bus,  

07:27

which on the 6502 is 16 bits. So, while the data  bus can communicate in numbers between 0 and 255,  

07:33

the address bus can represent numbers between 0  and 65,535, or another way of saying that is 64  

07:39

Kilobytes. The size of the address bus determins  the maximum memory of the computer, not counting  

07:44

banking schemes, which we can get into later. Have you ever wondered why memory modules,  

07:48

when they increase to the next size, are always  double the previous size? They increase in powers  

07:53

of two. Well, the reason for that has to do with  binary addressing. So, imagine you have a RAM chip  

07:58

that is 16 megabytes in size. It would need 24  address lines to be able to access all of that  

08:03

RAM. And that means a minimum address of zero, or  a maximum address of, well, a bunch of ones. So,  

08:09

if you wanted to make the chip bigger, there's  no way to really add fractional amounts of RAM.  

08:14

You would have to add an additional address  line. In doing so, you've also added another  

08:18

number to your binary number, which will always  result in multiplying the max value by two. 

08:23

So, back to our CPU address bus. The way this  works is it goes into a bunch of decoding logic,  

08:28

which I'm not going to get into here,  but that logic will take the address and  

08:31

determine which of the chips will be selected,  whether it is RAM, ROM, or a video chip, etc. 

08:37

Now, much of what I've shown here could be applied  to most any CPU. But now I want to tell you a few  

08:42

things that sets the 6502 apart. So, let's compare  with the Z80 , another popular CPU of the era. It  

08:48

was quite common for 6502 systems to run at  1 Mhz, and Z80 systems to run at 4 mhz. Now,  

08:55

you might be tempted to think the Z80 would  be 4 times faster. But it's not. Why is that? 

09:01

Well, for one thing let's look at the clock pulse.  Imagine this is your 1 mhz clock pulse. Most CPUs  

09:07

would only be doing work at the top of the clock  pulse like this. However, the 6502 also does work  

09:13

on the bottom of the clock pulse like this,  essentially doing twice as much work per clock  

09:17

cycle than a typical CPU. But that isn't the only  thing that makes a difference. Most instructions  

09:23

require more than one clock pulse to complete and  the 6502 requires fewer cycles on average than  

09:28

other CPUs of the era to complete an instruction. The Z80 was especially inefficient because,  

09:34

despite being an 8-bit CPU, it's ALU, or  "Arithmetic Logic Unit" is only 4 bit,  

09:40

and thus most calculations require extra  clock cyclces to complete any 8-bit math. 

09:45

So, let's compare 4 common CPUs from the 1980s  at their most common clock frequencies. If you  

09:50

look at raw performance, the 6502 actually  competes well against the other CPUs even  

09:55

at its much lower clock speed of 1 Mhz.  The moment you double it to even 2 Mhz,  

10:00

it suddenly outperforms just about everything  except the 68000. Most systems ran at 1 Mhz,  

10:06

but there were some that ran just a bit faster. Atari 2600 ran at 1.19 Mhz 

10:13

Basically all subsequent Atari computers  and game consoles ran at 1.79 Mhz. 

10:19

interestingly enough, the original  Nintendo also ran at 1.79 Mhz 

10:24

Apple III ran even faster at 1.8 Mhz The BBC Micro ran at 2.0 Mhz 

10:30

as did the Commodore 128,  but only in 80 columns mode. 

10:35

The Apple IIgs ran at 2.8 Mhz The Super Nintendo 3.58 Mhz 

10:41

And the fastest machines from the time period  that I know of are the Apple IIc Plus and some  

10:46

clones like Laser 128 ex2, which ran at 4  Mhz. I know 4 Mhz doesn't sound like a lot,  

10:53

but that was some serious speed. unfortunaetly,  there was little to no software that really took  

10:57

advantage of that. So the best examples we  really have of what could be done at the  

11:01

time would be to look at the Super Nintendo. The problem is, it's hard to say exactly what  

11:06

aspects of these games you can really credit  the CPU, versus some of the advanced graphics  

11:11

co-processors that were also in the system. In  fact, some of these games, like starfox, even used  

11:16

a 3D coprocessor located in the cartridge itself. The Apple IIgs might be a better system to look  

11:22

at since it had much less in terms of graphics  acceleration, thus relying primarily on the CPU  

11:28

for most of the work. of course, another  problem is the Super Nintendo and Apple  

11:33

IIgs are technically running 65816 CPUs,  which is the 16-bit version of the 6502,  

11:39

which we're going to come back to here in a little  bit. That being said, one interesting comparison  

11:44

is Wolfenstein 3D. This is the SNES version.  And while there is some amount of graphics  

11:50

acceleration on the SNES, the CPU is really  doing the heavy lifting of rendering this game. 

11:55

Now let's look at the Apple IIgs version. It uses  the exact same processor, but lacks most of the  

12:00

accelerated graphics features. That's why the  game is scaled down to the center of the screen,  

12:05

even though technically the level of detail  is exactly the same as the SNES version. And  

12:10

you may notice it runs a little slower, which  makes sense because the CPU in the Apple IIgs  

12:15

is slower. But now check this out. This is the  same version but here the Apple IIgs has an 8 Mhz  

12:21

accellerator in it. So, same type of processor,  just running almost 3 times faster. In fact,  

12:26

with this CPU you can expand the rest of the  screen out and it still plays relatively decently. 

12:33

Modern versions of the 6502, made by  WDC are actually rated to run at 14 Mhz,  

12:39

and I've heard of people overclocking them to run  even faster. The commander X16 runs at 8 Mhz, and  

12:45

thus might be a good example of what can be done. Planet X16, which is a real-time-strategy game I  

12:50

wrote for the Commander X16, is a somewhat  interesting example. Believe it or not,  

12:54

it runs just about perfectly, even if I jumper the  computer down to 4 Mhz. And that's why we're also  

13:00

working on a port for the Super Nintendo which  is close enough to that speed. I hope to show  

13:04

you more of this in a later episode, but I think  it will be a very interesting game for the SNES. 

13:10

A better example might be the KG3D demo on  the Commander X16, running a bog standard  

13:15

8-bit 6502 at 8 mhz. As you can see, this 3D  environment runs very smoothly at 8 Mhz. Now,  

13:23

for those that grew up with IBM PCs, imagine  trying to run something like this on a turbo-XT  

13:28

at 8 mhz. It's just not going to happen. And  so, I hope this better illustrates that CPU  

13:34

megahertz isn't a good method for comparing  speed between different types of CPUs. 

13:39

Let's switch gears for a moment and talk about  some technical details, specifically math. So,  

13:45

a lot of people might ask the question, "if the  processor can only deal with 8 bit numbers as in  

13:49

numbers from 0 to 255 how can it possibly do  math operations on numbers larger than that?" 

13:55

Imagine you have two 16-bit numbers you need to  add together. Well, it can't do it all at once.  

14:00

So, as a programmer you'll need to add the least  significant bytes together and get the result. But  

14:05

adding these two values exceeds 255, so that will  set the carry bit. So the next addition you do,  

14:10

over here will take that into account and  there you go, you'll get your 16 bit result. 

14:16

So really, the only downside to working with  larger numbers on the 8bit CPU is that it  

14:20

does require more instructions, which makes  the code longer and more cycle counts than  

14:25

performing the same operation on, say a 16bit  CPU. Well, one thing you may find particularly  

14:30

interesting is the 6502 actually has no  instructions for multiply or divide. But,  

14:36

I'm sure you've guessed, there is a way to  accomplish that. Actually, more than one way. 

14:40

The easiest way to multiply is with bit shifting.  There is an instruction to shift all of the  

14:44

bits to the left or right. So, take this binary  number, which is equal to 26 in decimal. If you  

14:49

shift everything to the left by one bit, then you  essentially multiplied the number by two. You can  

14:54

do it again, and now you've multiplied by 4, and  again and now you've multiplied by 8. Likewise,  

14:59

you can shift a number to the right, and you can  divide by 2, divide by 4, divide by 8, or here  

15:05

even divide by 16. So, multiplying or dividing  by powers of 2 is very easy to do, and very fast. 

15:12

But let's take the original number and let's say  you need to multiply it by a number that is not a  

15:16

power of 2, such as the number 6. Well, you can  accomplish that by shifting twice to the left,  

15:21

that gets you multiply by 4. Then you take  the original number and shift it just once  

15:26

to the left, that multiplies by 2, and then  you can add those together, and you have  

15:30

your result. This method is also fairly fast. And of course, the last method is by simply  

15:35

using a chart. You just store all of the results  in RAM as part of your code. And then let's say  

15:40

you need to multiply 5 times 9, you can just look  up the answer in the table, and there you have it. 

15:45

So, you might think these methods are overly  complicated or slow. But, here's a little  

15:49

interesting anecdote for you. When I started  coding Planet X3 on the 8088 microprocessor, at  

15:55

first I was really excited that I finally had use  of built-in commands for multiply and divide. But,  

16:01

one of the things I realized once I started trying  to optimize the game for speed is that using bit  

16:06

shifts or lookup tables was actually significantly  faster than using the built-in multiply and divide  

16:11

commands. So, I ended up actually stripping  out all of those multiply and divide commands  

16:15

and replacing them with the same techniques  I had been using all along on the 6502. So,  

16:20

it turns out um those multiply and divide  commands really aren't all that useful after all. 

16:25

Let's take a look at how the regular 6502 compares  to some of the variants. The Atari 2600 used a  

16:31

processor known as the 6507, which as you can  see is a smaller package having fewer pins. I'd  

16:37

like to draw your attention to the address bus.  As you can see there are only zero through 12,  

16:41

instead of 0 through 15. That reduces the  addressable memory down to 8 kilobytes  

16:47

instead of the usual 64. That is also why Atari  2600 cartridges are typically limited to 8 KB,  

16:53

unless clever banking schemes are used. Now let's look at the 6502C, otherwise  

16:58

called the Sally chip. This chip was used in  Later Atari computers like the XL and XE series,  

17:04

and game consoles like the 7800. It's basically  the same as a regular 6502. These 4 pins over  

17:10

here are re-arranged. The main reason for this  is that they wanted to add the HALT signal so  

17:15

that the CPU could temporarily be halted  so that the video circuits could use DMA. 

17:21

Now let's look at the 6510, which was used in the  Commodore 64. As you can see, basically every pin  

17:27

is in a different place. But the main difference  is these P0 through P5. These are essentially  

17:32

general purpose IO pins. In the Commodore 64 they  are used for memory banking. This was essentially  

17:38

a cost saving measure to add this into the CPU  as it eliminated extra circuits on the board. 

17:44

OK, so I'm not going to cover every variant  as that would take forever. You can see here  

17:48

on Wikipedia a list of all of the variations  of the CPU. But I just wanted to give you an  

17:53

idea of the ways in which most of them differ. But, I do want to take a look at the Western  

17:58

Design Center 65c02. This launched in 1983 and  it's the only variant to my knowledge that is  

18:04

still in production today. This CPU was used in  the Apple IIe, and IIc, Laser 128, and the Atari  

18:11

Lynx, among others. One of the big differences  is the instruction set. This is the standard 6502  

18:17

instruction set. There are some undocumented  opcodes, but we won't get into that. The  

18:21

65c02 added these new opcodes. Most of these are  designed to make life easier on the programmer,  

18:27

as well as make execution a little faster. Older  code will still run on this CPU, it just won't be  

18:33

making use of any of these new instructions. In fact, I want to show you something a lot  

18:37

of people don't know about. This is an ordinary  Commodore VIC-20, and I'm going to remove it's  

18:42

CPU. It's just a standard 6502, which is to be  expected. And here we have a brand new 65c02  

18:49

from Western Design Center. And what I'm going  to do is insert this into the VIC-20, and power  

18:54

it on. And well, if you thought it was going  to work, then I guess you'll be disappointed. 

19:00

The reason it doesn't work has nothing to do with  the new opcodes, but rather the pin arrangement.  

19:04

If you compare the two processors, you'll see they  are almost identical pin arrangements. In fact,  

19:08

only these 3 pins are different. I'm not going  to go into great detail on what these do. But,  

19:14

let's see if we can make this work  in the VIC-20. I'll start by bending  

19:17

up two of those pins that were different.  I'm just going to leave one disconnected,  

19:20

and the other I'm going to use a resistor  and tie it to 5V, pulling it high. I know,  

19:26

it doesn't look terribly elegant. But let's stick  it back into the VIC-20 now and see what happens. 

19:31

Check it out, it works. At this point the VIC-20  now has additional instructions available to it if  

19:37

you wanted to write code to support it. And even  though this CPU can run at 14 mhz, it is obviously  

19:43

only going to run at the clock speed the VIC-20  gives it, which is still 1 mhz. So there isn't a  

19:48

huge advantage to using this. I run a number of  games and didn't have any compatibility issues,  

19:55

although I'm sure there's probably at least one  or two out there that were using some undocumented  

19:58

opcodes that might fail with this CPU inside. OK, now let's take a look at the 65c816. This  

20:06

chip debuted in 1985, and it is a significant  upgrade to the 6502. This chip is 16-bit,  

20:13

sort of. You see, there's no standard way to  define how many bits a CPU is. Some people  

20:18

judge it based on how wide the data-bus is. In  this case, the data-bus is still 8-bit, just like  

20:24

the 6502. But internally, it can do 16-bit math. It also has a ton of other new features. In fact,  

20:31

here are those opcodes we looked  at earlier for the 65c02. Well,  

20:35

the 816 supports all of these opcodes. In fact,  when it boots up, it starts in 8-bit mode,  

20:41

thus essentially operating exactly like the 65c02.  There are a few small differencees, I'm sure some  

20:47

of the keyboard warriors will want to point out.  For example, Some 65C02s made by rockwell and WDC,  

20:53

had these extra instructions here. I didn't show  them earlier because not all varients supported  

20:58

these, and they aren't used very often. But the  816 definitely doesn't support these and instead  

21:03

adds all of these when operating in 16-bit mode. When performing 16-bit math, that means instead  

21:10

of requing 6 or 7 instructions to handle  problems like this one half at a time,  

21:14

it can do the whole thing in a single  instruction. This sort of thing can really  

21:18

speed up execution for certain types of software. But, perhaps a more important aspect of the chip  

21:23

is the larger address bus, let me show you how  that works. The pin arrangement on the 816 is very  

21:29

similar to the 6502, but it's a little bit more  complicated to get to work in an older computer  

21:34

because as you can see there are now 9 pins that  are different from the original. but you may be  

21:39

counting up the address lines and seeing that  there are still only 0 through 15. So how can  

21:44

it access more than 64K, you might ask? Well,  when you put the chip into the correct mode,  

21:48

the data-bus pins will pull double  duty. So when the clock cycle is high,  

21:52

they are data lines like usual. but when the  clock is low, they are become address lines 16  

21:57

through 23. Thus giving it a 24-bit address,  capable of addressing up to 16 MB of RAM, a  

22:04

massive amount more than a typical 8-bit computer. So, can you install one of these into something  

22:09

like a VIC-20? Well, sort of. You're going  to need a ltitle adapter board like this one,  

22:14

which are remarkably hard to find at the moment.  But in theory you can pop this into your VIC-20  

22:18

or other 8-bit system and instantly have  a 16-bit capable computer, except that  

22:23

you won't have access to the extra RAM. Perhaps a better example, something I can  

22:28

actually show, is the Commander X16. By default  it comes with a 65c02, but it actually supports  

22:34

the 816. I keep one around for testing and  I have a big label on it so I don't get it  

22:37

confused with my other CPUs. But yeah, the  X16 runs just fine with the 816 installed,  

22:42

and in theory if people wanted to write code that  made use of the 16-bit aspect of it, they could. 

22:48

I think the 816 was a really great processor,  but it only ever saw widespread use in  

22:53

the Apple IIgs and the Super Nintendo. So, the last thing I have for you guys is,  

22:57

I finally man managed to sit down and  have a conversation with Bill Mensch,  

23:01

one of the original creators of the 6502 and the  816 processor, and I had a few questions for him. 

23:07

So, Bill, tell me who are the current, modern-day  customers of the 6502. OK, so we have a lot of  

23:15

interest in your world, meaning the hobby world.  And so we sell boards into that. and we sell chips  

23:23

into that. And as you know, you and Ben Eater,  Ben Eater has been especially active in that  

23:34

world. And then we have some others, Stefany I  think you know. But in any event. I find it hard  

23:39

to believe that just the retro market keeps the  whole 6502 business alive. There's got to be more  

23:45

other modern customers. And the other thing that  we still get royalties off of is life-support. so,  

23:53

we keep millions of people alive one  heartbeat at a time, with the 65c02. Really? 

24:02

Why do you feel like the 6502 architecture didn't  last much beyond the 16-bit era with like the  

24:11

Apple IIgs and Super Nintendo? Is it just because  everyone was going to MS-DOS compatibility,  

24:17

or was there some other reason? Well, I  specifically was recommending ARM. OK. So when  

24:26

my licensees asked what I was doing at 32-bit,  I said, "Well, I have some specifications for  

24:37

32 bit. I'm happy to share them with you.  But, I don't think that's what you want." 

24:42

Well, if you've made it this far then you've  probably learned more about the 6502 than you  

24:46

probably ever wanted to know. But, hopefully at  least you have a little bit of understanding of  

24:50

the significant role that the CPU has played  over the last 40 years and also why it is my  

24:55

favorite CPU. But, that's all I have for  now, so as always thanks for watching!