The 6502 CPU Powered a Whole Generation!
Summary
TLDR本视频回顾了6502微处理器的历史和影响,这是20世纪80年代许多家用电脑和游戏机的核心。介绍了6502的基本功能、与其他芯片的通信方式以及它的一些变体,如6507、6502C和6510。还探讨了6502在现代的应用,包括在生命维持设备中的使用,以及与Bill Mensch的访谈,他是6502和816处理器的共同创造者。
Takeaways
- 📺 6502微处理器是1980年代许多家用电脑、街机和游戏控制台的核心部件。
- 🔍 6502处理器有多种变体,有些增加了额外功能,有些则为了更小或更便宜而移除了某些功能。
- 🎮 6502处理器被广泛应用于许多经典游戏机,如Atari 2600、NES以及SNES。
- 🚀 6502处理器甚至被用于一些非传统的设备,如玩具、心脏起搏器和卫星。
- 💡 6502处理器的成功部分归因于其高性价比,与同期的Motorola 6800相比价格更低。
- 🔧 6502处理器的设计允许它与其他芯片通过数据总线、读写线和片选信号线进行通信。
- 🔩 6502处理器的8位数据总线可以传输8位数字,而其16位地址总线可以寻址高达64KB的内存。
- 🏎️ 6502处理器在性能上与其他同期处理器相比具有竞争力,即使工作频率较低。
- 🌐 6502处理器的变体在针脚排列和功能上有所不同,以适应不同的应用需求。
- 📈 65c02是6502的一个变体,增加了新的指令集,提高了编程效率和执行速度。
- 🛠️ 65c816是6502的重大升级版本,内部可以执行16位数学运算,并具有更大的地址总线。
- 🗣️ 与Bill Mensch的对话揭示了6502处理器的现代应用,包括业余爱好者市场和生命维持设备。
Q & A
6502微处理器是由哪家公司开发的?
-6502微处理器是由MOS Technology公司开发的。
6502微处理器在1980年代的哪些设备中被广泛使用?
-6502微处理器在1980年代被广泛应用于家用电脑、街机游戏机、视频游戏控制台等设备中。例如Commodore PET、VIC-20、Apple II系列、Atari 400和800家用电脑、Oric Atmos、大部分Acorn电脑以及BBC微型电脑等。
6502微处理器有哪些变种?
-6502微处理器有多种变种,这些变种或者增加了一些额外的功能,或者在某些情况下为了使芯片更小或更便宜而移除了某些功能。这些变种包括用于Commodore 64和128、Plus/4、Apple III和IIgs、Atari的XL和XE系列家用电脑以及他们的磁盘驱动器中的变种。
6502微处理器的8位数据总线是如何工作的?
-6502微处理器的8位数据总线通过8个引脚与其它芯片进行通信,每个引脚可以表示1或0,以此来传输8位的数字。数据总线与读写线(read/write line)一起工作,通过读写线的状态来确定数据传输的方向是读取还是写入。
什么是芯片选择(CS)线?
-芯片选择(CS)线是CPU用来控制数据总线上的各个芯片何时可以进行通信的一条线。当这条线被激活时,意味着对应的芯片被允许在数据总线上进行通信。
6502微处理器的地址总线是几位的?
-6502微处理器的地址总线是16位的。这意味着它可以表示从0到65,535(或64KB)的地址范围,决定了计算机的最大内存容量。
为什么内存模块在增加到下一个尺寸时总是翻倍?
-内存模块在增加到下一个尺寸时总是翻倍,这与二进制寻址有关。因为每增加一个地址线,就相当于在二进制数中增加了一个位数,这将使得最大地址值乘以2。
6502微处理器与Z80微处理器在性能上有何不同?
-尽管Z80微处理器的时钟频率通常比6502高,但6502在每个时钟周期内可以完成更多的工作,因为它在时钟脉冲的上升沿和下降沿都进行操作。此外,6502在完成指令所需的时钟周期平均上比当时的其他CPU要少。
6502微处理器在现代有哪些应用?
-6502微处理器在现代仍有一些应用,包括作为复古计算和游戏设备的CPU,以及在一些生命维持设备中使用。此外,它还被用于一些玩具、游戏机和某些嵌入式系统中。
65c816处理器与6502处理器的主要区别是什么?
-65c816处理器是6502的16位升级版本,它在内部可以执行16位的数学运算,并且具有更大的地址总线,可以访问高达16MB的RAM。它在启动时以8位模式运行,与6502兼容,但在16位模式下可以利用更多的指令和更大的内存地址空间。
为什么6502架构没有在16位时代之后继续广泛使用?
-6502架构没有在16位时代之后继续广泛使用的原因包括市场转向MS-DOS兼容性更强的系统,以及技术发展到32位处理器的趋势。此外,ARM等更先进的处理器架构的出现也导致了6502架构的使用减少。
如何将65c816处理器安装到原本使用6502的系统中?
-将65c816处理器安装到原本使用6502的系统中通常需要一个适配板,因为65c816的引脚排列与6502略有不同。但是,一些系统如Commander X16默认支持65c816,可以直接安装并使用。
Outlines
📺 6502微处理器的黄金时代
本段落介绍了6502微处理器的历史背景和广泛应用。6502微处理器在1980年代初期推动了家用电脑、街机游戏和视频游戏控制台的普及。MOS Technology公司生产的6502处理器因其高性能和低成本而成为了当时众多设备的心脏。从Commodore PET、VIC-20、Apple II到Atari 400和800等家用电脑,再到Asteroids、Centipede等街机游戏,6502微处理器几乎成为了那个时代的代表。此外,6502的变种也被广泛应用于Commodore 64、128、Plus/4、Apple III和IIgs等设备中。
🔍 6502微处理器的技术细节和工作原理
这一部分深入探讨了6502微处理器的技术细节和工作原理。通过解释数据总线、读写线和芯片选择(CS)线的作用,阐述了CPU如何与其他芯片进行通信。同时,介绍了6502的8位数据总线和16位地址总线,解释了为什么内存模块的容量总是按二的幂次增加。此外,还比较了6502与其他同期流行CPU(如Z80)的性能差异,并指出6502在每个时钟周期内能完成更多工作,因此在相同时钟频率下,6502的实际性能并不逊色于其他CPU。
🚀 6502微处理器的实际应用和性能对比
本段落讨论了6502微处理器及其变种在不同设备中的运行频率和性能表现。举例说明了Atari 2600、Apple III、BBC Micro、Commodore 128、Apple IIgs、Super Nintendo等设备的运行频率,并探讨了这些设备的性能。特别提到了Super Nintendo和Apple IIgs使用的是6502的16位版本65816。通过比较不同设备的性能,展示了6502处理器的强大能力和灵活性。
🤖 6502微处理器的数学运算和指令集
这一部分探讨了6502微处理器如何处理超出8位范围的数学运算,解释了通过指令和位操作来实现乘法和除法的方法。同时,讨论了6502没有专门的乘法和除法指令,但可以通过位移和查找表等技术来实现这些操作。此外,还提到了6502与Z80等其他处理器的数学性能对比,以及如何通过位操作和查找表来优化性能。
🌐 6502微处理器的变种和现代应用
本段落介绍了6502微处理器的不同变种,如6507、6502C(Sally芯片)、6510和65c02等,以及它们在不同设备中的应用。特别提到了65c02在Apple IIe、IIC、Laser 128和Atari Lynx等设备中的使用,以及它增加的新指令集。同时,讨论了65c816处理器的特点,包括它的16位内部数学运算能力和更大的地址总线。最后,通过与Bill Mensch的对话,揭示了6502微处理器在现代的持续应用,特别是在生命维持设备中的重要性,以及它为何没有在16位时代之后继续流行。
Mindmap
Keywords
💡6502微处理器
💡家用电脑
💡游戏机
💡数据总线
💡读/写线
💡芯片选择(CS)线
💡地址总线
💡指令集
💡变种处理器
💡嵌入式系统
💡摩尔定律
Highlights
6502微处理器在1980年代推动了家用电脑、街机和游戏控制台的普及。
6502微处理器由MOS Technology公司开发,成为那个时代的标志。
6502微处理器的变体在不同的计算机和游戏控制台中广泛应用。
6502微处理器的8位数据总线和读写线是其与其他芯片通信的关键。
6502微处理器的地址总线为16位,能够寻址高达64KB的内存。
6502微处理器在性能上与其他同期CPU相比具有竞争力,即使工作频率较低。
6502微处理器能够在每个时钟周期的上升和下降阶段都进行工作,提高了效率。
6502微处理器缺乏乘法和除法指令,但可以通过位移和查找表等方法实现这些操作。
6502微处理器的变体,如65c02,增加了新的指令集以提高编程效率。
65c816微处理器是6502的16位升级版,内部可以执行16位数学运算。
65c816微处理器通过数据总线在不同模式下同时充当地址总线,扩展了寻址能力。
6502微处理器在现代仍有应用,如玩具、心脏起搏器和卫星中。
6502微处理器的创新设计使其在计算机历史上占有重要地位。
与Bill Mensch的访谈揭示了6502微处理器的创造者对其历史和未来的看法。
6502微处理器的低价位使其在个人电脑革命中发挥了重要作用。
6502微处理器的简单性和效率使其成为爱好者和工程师的首选。
Transcripts
I have made countless videos about old computers from the 1980s, but in this episode we're going
to have a look at the processor that powered them all, or at least most of them. And then
at the end of the video we're going to have a quick chat with Bill Mensch, one of the
original creators of the 6502 microprocessor The 1980s brought us affordable home computers
for the first time ever, arcade machines, and of course video game
consoles. There was one microprocessor that seemed to be ubiquitous. One processor that
seemingly powered an entire generation. And that processor was the 6502 by MOS Technology.
I want to start with the standard 6502. There were at least a dozen variants of it that were
more or less compatible, but might not be pin-compatible, and we'll come back
to those later. So, let's start by having a look at some of the computers that used the official,
standard 6502. These would be the Commodore PET, and the VIC-20 The original Apple II and II+. Also
the Atari 400 and 800 home computers, the Oric Atmos, most of the Acorn computers like the Atom
and Electron series, and of course the BBC micro. There were also dozens of arcade machines that
used the 6502, more than I want to cover here. But if you've ever played Asteroids, Centipede,
Missile Command, Tempest, crystal castles, or ever really stepped into an arcade of any sort,
you've probably played some machines that ran on the 6502.
All of these systems used a standard 6502 processor. And what I mean by that is,
you can take the CPU out of say a VIC-20, stick it in a very different kind of computer,
such as an Apple II, and it will just work. You can even pull the 6502 out of a Commdore
disk drive and stick it in an Atari 400, and it would work just fine. It's strange today to think
of all of these different incompatible computers running the same exact chip.
However, the scope of the 6502 reaches far beyond these. When you start looking
at the variants, the list becomes huge. So, what is a variant exactly? Well, these
are other versions of the 6502 that have either added some extra features, or in some cases even
removed features in order to make the chip either smaller or cheaper. They all run the same machine
code as the original, but they aren't necessarily pin compatible, meaning you can't pull one out
of one type of machine and then stick it in a different kind of machine and expect it to work.
Computers that used variants would be the Commodore 64 and 128, and the Plus/4. Also
Apple used variants in the Apple III and IIgs. Atari used them in the XL and XE series of home
computers, and even inside their disk drives. Another popular use of the 6502 was of course,
in game consoles. This would include the Atari 2600, 5200, 7800, and the Lynx handheld. More
importantly Nintendo used a variant in the NES, as well as the Super Nintendo, and the TurboGrafx 16.
But what might surprise you would be some of the not so obvious places you can find 6502
processors. Ever played with a Furby, yeah, those run on a 6502. How about a Tamagotchi, surprise,
those run on a 6502. In fact, there are countless toys that have a 6502 core, but they are really
hard to catalog for you because they are usually embedded into an epoxy blob these days, making it
really hard to tell just by opening up a toy. Here's one that may surprise you. If you have
a pacemaker or any sort of implanted technology in your body, it is very likely running a 6502
inside. There are even 6502 processors orbiting the planet inside satellites,
and I believe they were used in few minor systems on the space shuttle and international
space station, although I don't know if there are still any in use there today.
And apparently the terminators of the future also run on 6502 as the computer code seen on
screen is 6502 assembly instructions, and if Futurama is to be believed,
then a thousand years from now, robots like Bender will be operating on 6502 processors.
The point is, unless you have been living under a rock your whole life, everyone on the planet
has at some point interacted with this processor. But, let's go back in time to the beginning. Back
to 1975. Many notable things were happening. Gerald Ford was President of the USA. Disco
music was at its peak. The Rubiks cube went on sale. The movie Jaws just came out. And,
the Vietnam war was coming to an end. Oh, and The 8-Bit Guy was born, that's me.
But in the world of technolgy, there were also many exciting things happening that
year. Video Cassette Recorders for home users entered the market. The Altrair home computer
kit was introduced. A little software company called Microsoft was started. And of course,
more importantly for the purposes of this video, the 6502 Microprocessor went on sale.
For the first year, it was being sold for $25 a unit, which was crazy cheap compared to its
nearest competitor, the Motorola 6800, which sold for $175 a unit. At this time it was mostly
being used in hobby and enginering projects like the KIM-1 computer, and later in Steve
Wozniak's little computer, the Apple 1. But, let's skip forward to 1977, a year
mostly remembered for the debut of the Star Wars franchise, was also the year the 6502 really took
off. Computers like the Apple II and Commodore PET entered the market. Two of the big-3 home
computers of that year used the 6502. But the real volume would come, not from a home computer,
but from the Atari 2600 video game console. Atari would sell nearly 400,000 units of the
2600 in 1977 alone, and eventually over 30 million of them over the life of the product.
Needless to say, this was just the tip of the iceberg. but now let's have a look at some of the
features of this chip, and see how it worked. I want to start by talking about how the CPU
communicates with other chips. 8 of the pins on the CPU represent the data bus. Each of these
can be either on or off, which represent a 1 or zero. Hence, this is an an 8-bit data bus. So,
for illustration we'll connect this to the data bus of a RAM chip. This way the CPU and
the RAM chip can send and receive 8-bit numbers. But there's another important line that the CPU
controls. This is the read/write line. If the line is on, its means to read and thus
the data is expected to travel this direction. If the line is off, then it means write, and
the data will travel in this direction instead. And so this line also has to connect to the RAM
chip so both the CPU and the RAM chip understand the direction data is flowing at any given time.
OK, hopefully all of this makes sense so far. Of course, most any motherboard is going to be far
more complicated than this, because there will be a lot more chips like I/O chips, video chips,
etc. And they all connect to the same data bus. So the question is, how do they all talk over
the same data bus at the same time without signals colliding with each other? Well,
they don't. They are all allowed to listen to the bus, but only allowed to talk on the
bus when the CPU wants to talk to them. So how does that work? Well, each chip on the bus has
a CS line. It stands for Chip Select. Sometimes it may be called an Enable line. Either way,
it does the same thing. When this line is activated, that means the chip is allowed
to talk on the bus. That chip could be a RAM chip, ROM chip, I/O chip, video chip, whatever.
So the next question is, what determines when that chip is activated? OK, we have the data bus,
and the read/write line. But we also have something called the address bus,
which on the 6502 is 16 bits. So, while the data bus can communicate in numbers between 0 and 255,
the address bus can represent numbers between 0 and 65,535, or another way of saying that is 64
Kilobytes. The size of the address bus determins the maximum memory of the computer, not counting
banking schemes, which we can get into later. Have you ever wondered why memory modules,
when they increase to the next size, are always double the previous size? They increase in powers
of two. Well, the reason for that has to do with binary addressing. So, imagine you have a RAM chip
that is 16 megabytes in size. It would need 24 address lines to be able to access all of that
RAM. And that means a minimum address of zero, or a maximum address of, well, a bunch of ones. So,
if you wanted to make the chip bigger, there's no way to really add fractional amounts of RAM.
You would have to add an additional address line. In doing so, you've also added another
number to your binary number, which will always result in multiplying the max value by two.
So, back to our CPU address bus. The way this works is it goes into a bunch of decoding logic,
which I'm not going to get into here, but that logic will take the address and
determine which of the chips will be selected, whether it is RAM, ROM, or a video chip, etc.
Now, much of what I've shown here could be applied to most any CPU. But now I want to tell you a few
things that sets the 6502 apart. So, let's compare with the Z80 , another popular CPU of the era. It
was quite common for 6502 systems to run at 1 Mhz, and Z80 systems to run at 4 mhz. Now,
you might be tempted to think the Z80 would be 4 times faster. But it's not. Why is that?
Well, for one thing let's look at the clock pulse. Imagine this is your 1 mhz clock pulse. Most CPUs
would only be doing work at the top of the clock pulse like this. However, the 6502 also does work
on the bottom of the clock pulse like this, essentially doing twice as much work per clock
cycle than a typical CPU. But that isn't the only thing that makes a difference. Most instructions
require more than one clock pulse to complete and the 6502 requires fewer cycles on average than
other CPUs of the era to complete an instruction. The Z80 was especially inefficient because,
despite being an 8-bit CPU, it's ALU, or "Arithmetic Logic Unit" is only 4 bit,
and thus most calculations require extra clock cyclces to complete any 8-bit math.
So, let's compare 4 common CPUs from the 1980s at their most common clock frequencies. If you
look at raw performance, the 6502 actually competes well against the other CPUs even
at its much lower clock speed of 1 Mhz. The moment you double it to even 2 Mhz,
it suddenly outperforms just about everything except the 68000. Most systems ran at 1 Mhz,
but there were some that ran just a bit faster. Atari 2600 ran at 1.19 Mhz
Basically all subsequent Atari computers and game consoles ran at 1.79 Mhz.
interestingly enough, the original Nintendo also ran at 1.79 Mhz
Apple III ran even faster at 1.8 Mhz The BBC Micro ran at 2.0 Mhz
as did the Commodore 128, but only in 80 columns mode.
The Apple IIgs ran at 2.8 Mhz The Super Nintendo 3.58 Mhz
And the fastest machines from the time period that I know of are the Apple IIc Plus and some
clones like Laser 128 ex2, which ran at 4 Mhz. I know 4 Mhz doesn't sound like a lot,
but that was some serious speed. unfortunaetly, there was little to no software that really took
advantage of that. So the best examples we really have of what could be done at the
time would be to look at the Super Nintendo. The problem is, it's hard to say exactly what
aspects of these games you can really credit the CPU, versus some of the advanced graphics
co-processors that were also in the system. In fact, some of these games, like starfox, even used
a 3D coprocessor located in the cartridge itself. The Apple IIgs might be a better system to look
at since it had much less in terms of graphics acceleration, thus relying primarily on the CPU
for most of the work. of course, another problem is the Super Nintendo and Apple
IIgs are technically running 65816 CPUs, which is the 16-bit version of the 6502,
which we're going to come back to here in a little bit. That being said, one interesting comparison
is Wolfenstein 3D. This is the SNES version. And while there is some amount of graphics
acceleration on the SNES, the CPU is really doing the heavy lifting of rendering this game.
Now let's look at the Apple IIgs version. It uses the exact same processor, but lacks most of the
accelerated graphics features. That's why the game is scaled down to the center of the screen,
even though technically the level of detail is exactly the same as the SNES version. And
you may notice it runs a little slower, which makes sense because the CPU in the Apple IIgs
is slower. But now check this out. This is the same version but here the Apple IIgs has an 8 Mhz
accellerator in it. So, same type of processor, just running almost 3 times faster. In fact,
with this CPU you can expand the rest of the screen out and it still plays relatively decently.
Modern versions of the 6502, made by WDC are actually rated to run at 14 Mhz,
and I've heard of people overclocking them to run even faster. The commander X16 runs at 8 Mhz, and
thus might be a good example of what can be done. Planet X16, which is a real-time-strategy game I
wrote for the Commander X16, is a somewhat interesting example. Believe it or not,
it runs just about perfectly, even if I jumper the computer down to 4 Mhz. And that's why we're also
working on a port for the Super Nintendo which is close enough to that speed. I hope to show
you more of this in a later episode, but I think it will be a very interesting game for the SNES.
A better example might be the KG3D demo on the Commander X16, running a bog standard
8-bit 6502 at 8 mhz. As you can see, this 3D environment runs very smoothly at 8 Mhz. Now,
for those that grew up with IBM PCs, imagine trying to run something like this on a turbo-XT
at 8 mhz. It's just not going to happen. And so, I hope this better illustrates that CPU
megahertz isn't a good method for comparing speed between different types of CPUs.
Let's switch gears for a moment and talk about some technical details, specifically math. So,
a lot of people might ask the question, "if the processor can only deal with 8 bit numbers as in
numbers from 0 to 255 how can it possibly do math operations on numbers larger than that?"
Imagine you have two 16-bit numbers you need to add together. Well, it can't do it all at once.
So, as a programmer you'll need to add the least significant bytes together and get the result. But
adding these two values exceeds 255, so that will set the carry bit. So the next addition you do,
over here will take that into account and there you go, you'll get your 16 bit result.
So really, the only downside to working with larger numbers on the 8bit CPU is that it
does require more instructions, which makes the code longer and more cycle counts than
performing the same operation on, say a 16bit CPU. Well, one thing you may find particularly
interesting is the 6502 actually has no instructions for multiply or divide. But,
I'm sure you've guessed, there is a way to accomplish that. Actually, more than one way.
The easiest way to multiply is with bit shifting. There is an instruction to shift all of the
bits to the left or right. So, take this binary number, which is equal to 26 in decimal. If you
shift everything to the left by one bit, then you essentially multiplied the number by two. You can
do it again, and now you've multiplied by 4, and again and now you've multiplied by 8. Likewise,
you can shift a number to the right, and you can divide by 2, divide by 4, divide by 8, or here
even divide by 16. So, multiplying or dividing by powers of 2 is very easy to do, and very fast.
But let's take the original number and let's say you need to multiply it by a number that is not a
power of 2, such as the number 6. Well, you can accomplish that by shifting twice to the left,
that gets you multiply by 4. Then you take the original number and shift it just once
to the left, that multiplies by 2, and then you can add those together, and you have
your result. This method is also fairly fast. And of course, the last method is by simply
using a chart. You just store all of the results in RAM as part of your code. And then let's say
you need to multiply 5 times 9, you can just look up the answer in the table, and there you have it.
So, you might think these methods are overly complicated or slow. But, here's a little
interesting anecdote for you. When I started coding Planet X3 on the 8088 microprocessor, at
first I was really excited that I finally had use of built-in commands for multiply and divide. But,
one of the things I realized once I started trying to optimize the game for speed is that using bit
shifts or lookup tables was actually significantly faster than using the built-in multiply and divide
commands. So, I ended up actually stripping out all of those multiply and divide commands
and replacing them with the same techniques I had been using all along on the 6502. So,
it turns out um those multiply and divide commands really aren't all that useful after all.
Let's take a look at how the regular 6502 compares to some of the variants. The Atari 2600 used a
processor known as the 6507, which as you can see is a smaller package having fewer pins. I'd
like to draw your attention to the address bus. As you can see there are only zero through 12,
instead of 0 through 15. That reduces the addressable memory down to 8 kilobytes
instead of the usual 64. That is also why Atari 2600 cartridges are typically limited to 8 KB,
unless clever banking schemes are used. Now let's look at the 6502C, otherwise
called the Sally chip. This chip was used in Later Atari computers like the XL and XE series,
and game consoles like the 7800. It's basically the same as a regular 6502. These 4 pins over
here are re-arranged. The main reason for this is that they wanted to add the HALT signal so
that the CPU could temporarily be halted so that the video circuits could use DMA.
Now let's look at the 6510, which was used in the Commodore 64. As you can see, basically every pin
is in a different place. But the main difference is these P0 through P5. These are essentially
general purpose IO pins. In the Commodore 64 they are used for memory banking. This was essentially
a cost saving measure to add this into the CPU as it eliminated extra circuits on the board.
OK, so I'm not going to cover every variant as that would take forever. You can see here
on Wikipedia a list of all of the variations of the CPU. But I just wanted to give you an
idea of the ways in which most of them differ. But, I do want to take a look at the Western
Design Center 65c02. This launched in 1983 and it's the only variant to my knowledge that is
still in production today. This CPU was used in the Apple IIe, and IIc, Laser 128, and the Atari
Lynx, among others. One of the big differences is the instruction set. This is the standard 6502
instruction set. There are some undocumented opcodes, but we won't get into that. The
65c02 added these new opcodes. Most of these are designed to make life easier on the programmer,
as well as make execution a little faster. Older code will still run on this CPU, it just won't be
making use of any of these new instructions. In fact, I want to show you something a lot
of people don't know about. This is an ordinary Commodore VIC-20, and I'm going to remove it's
CPU. It's just a standard 6502, which is to be expected. And here we have a brand new 65c02
from Western Design Center. And what I'm going to do is insert this into the VIC-20, and power
it on. And well, if you thought it was going to work, then I guess you'll be disappointed.
The reason it doesn't work has nothing to do with the new opcodes, but rather the pin arrangement.
If you compare the two processors, you'll see they are almost identical pin arrangements. In fact,
only these 3 pins are different. I'm not going to go into great detail on what these do. But,
let's see if we can make this work in the VIC-20. I'll start by bending
up two of those pins that were different. I'm just going to leave one disconnected,
and the other I'm going to use a resistor and tie it to 5V, pulling it high. I know,
it doesn't look terribly elegant. But let's stick it back into the VIC-20 now and see what happens.
Check it out, it works. At this point the VIC-20 now has additional instructions available to it if
you wanted to write code to support it. And even though this CPU can run at 14 mhz, it is obviously
only going to run at the clock speed the VIC-20 gives it, which is still 1 mhz. So there isn't a
huge advantage to using this. I run a number of games and didn't have any compatibility issues,
although I'm sure there's probably at least one or two out there that were using some undocumented
opcodes that might fail with this CPU inside. OK, now let's take a look at the 65c816. This
chip debuted in 1985, and it is a significant upgrade to the 6502. This chip is 16-bit,
sort of. You see, there's no standard way to define how many bits a CPU is. Some people
judge it based on how wide the data-bus is. In this case, the data-bus is still 8-bit, just like
the 6502. But internally, it can do 16-bit math. It also has a ton of other new features. In fact,
here are those opcodes we looked at earlier for the 65c02. Well,
the 816 supports all of these opcodes. In fact, when it boots up, it starts in 8-bit mode,
thus essentially operating exactly like the 65c02. There are a few small differencees, I'm sure some
of the keyboard warriors will want to point out. For example, Some 65C02s made by rockwell and WDC,
had these extra instructions here. I didn't show them earlier because not all varients supported
these, and they aren't used very often. But the 816 definitely doesn't support these and instead
adds all of these when operating in 16-bit mode. When performing 16-bit math, that means instead
of requing 6 or 7 instructions to handle problems like this one half at a time,
it can do the whole thing in a single instruction. This sort of thing can really
speed up execution for certain types of software. But, perhaps a more important aspect of the chip
is the larger address bus, let me show you how that works. The pin arrangement on the 816 is very
similar to the 6502, but it's a little bit more complicated to get to work in an older computer
because as you can see there are now 9 pins that are different from the original. but you may be
counting up the address lines and seeing that there are still only 0 through 15. So how can
it access more than 64K, you might ask? Well, when you put the chip into the correct mode,
the data-bus pins will pull double duty. So when the clock cycle is high,
they are data lines like usual. but when the clock is low, they are become address lines 16
through 23. Thus giving it a 24-bit address, capable of addressing up to 16 MB of RAM, a
massive amount more than a typical 8-bit computer. So, can you install one of these into something
like a VIC-20? Well, sort of. You're going to need a ltitle adapter board like this one,
which are remarkably hard to find at the moment. But in theory you can pop this into your VIC-20
or other 8-bit system and instantly have a 16-bit capable computer, except that
you won't have access to the extra RAM. Perhaps a better example, something I can
actually show, is the Commander X16. By default it comes with a 65c02, but it actually supports
the 816. I keep one around for testing and I have a big label on it so I don't get it
confused with my other CPUs. But yeah, the X16 runs just fine with the 816 installed,
and in theory if people wanted to write code that made use of the 16-bit aspect of it, they could.
I think the 816 was a really great processor, but it only ever saw widespread use in
the Apple IIgs and the Super Nintendo. So, the last thing I have for you guys is,
I finally man managed to sit down and have a conversation with Bill Mensch,
one of the original creators of the 6502 and the 816 processor, and I had a few questions for him.
So, Bill, tell me who are the current, modern-day customers of the 6502. OK, so we have a lot of
interest in your world, meaning the hobby world. And so we sell boards into that. and we sell chips
into that. And as you know, you and Ben Eater, Ben Eater has been especially active in that
world. And then we have some others, Stefany I think you know. But in any event. I find it hard
to believe that just the retro market keeps the whole 6502 business alive. There's got to be more
other modern customers. And the other thing that we still get royalties off of is life-support. so,
we keep millions of people alive one heartbeat at a time, with the 65c02. Really?
Why do you feel like the 6502 architecture didn't last much beyond the 16-bit era with like the
Apple IIgs and Super Nintendo? Is it just because everyone was going to MS-DOS compatibility,
or was there some other reason? Well, I specifically was recommending ARM. OK. So when
my licensees asked what I was doing at 32-bit, I said, "Well, I have some specifications for
32 bit. I'm happy to share them with you. But, I don't think that's what you want."
Well, if you've made it this far then you've probably learned more about the 6502 than you
probably ever wanted to know. But, hopefully at least you have a little bit of understanding of
the significant role that the CPU has played over the last 40 years and also why it is my
favorite CPU. But, that's all I have for now, so as always thanks for watching!
5.0 / 5 (0 votes)
AI, Ain't I A Woman? - Joy Buolamwini
25年前只為一款遊戲買了這台主機,可結果......唉
FREE writing software | Longform and shortform
Doing History with Zotero and Obsidian: Archival Research
In conversation | Geoffrey Hinton and Joel Hellermark
From GhostNet to PseudoManuscrypt - The evolution of Gh0st RAT - Jorge Rodriguez; Souhail Hammou