在这台游戏机里,我们发现了HuC6280,这是一个由Hudson Soft制造的芯片,里面有两大组件。 其中之一是CPU,能以两种速度运作:~1.79 MHz 和 ~7.16 MHz.
HuC6280不像Z80那样是现成零件,而是由NEC设计的专用CPU。 查看官方文档之后,几乎可以确定它复刻了著名的MOS 6502和WDC的65C02的很多行为。 如此说来,所有这些对程序员意味着什么呢?
在开始之前,我们已经在NES的文章中介绍了MOS 6502的一些部件,在SNES的文章中也介绍了由WDC和理光制造的16位变体芯片。如果你想,可以先看看。
65C02是西方设计中心(WDC)制造的MOS 6502的一个改进型,由于它的制造工艺(CMOS),运行效率要高出很多。 从软件方面,65C02增加了一些新的指令,并修改了一些现有指令的行为。
我们可以更多地谈谈65C02,但我认为最好还是重点讨论哈德森增加的功能(对65C02的补充),因为它们对有效操作这台游戏机至关重要。 与65C02对比,HuC6280有:
- 更多的操作码,有些是针对CPU周边组件的。
- 8位I/O端口,作为外部组件的接口。
- 中断控制器,可接收来自其它设备的中断。
- 时钟。 它的工作方式是从一个特定的值开始倒数,当结束时,会向CPU派发一个中断。
最后,有8KB的RAM可提供给一般用途。
内存访问
但有一件事我没有提到,那就是NEC还在CPU旁边添加了一个内存管理单元或者叫"MMU",使其能够把持21位地址(记得原本6502只有16位地址)。 因此,可以访问的内存总量从64KB提升到2MB。
这款MMU非常不同于现今的任何一款MMU,我会说前者更接近于一个mapper。 尽管这么说,PC Engine中的MMU是由八个8位寄存器(称为映射寄存器或 "MPR")组成,它们与CPU的16条地址线结合起来,形成了21位地址总线。
它做了以下工作:
- CPU可以使用特殊的
TAM和TMA指令,分别从任何MPR读取和/或写入。 - 当物理内存被访问时,MMU保留了来自CPU的地址线A13-A15,来选择八个MPR其中的一个。
- 最终的地址,是由CPU线(置于A0-A12)和MMU线(置于A13-A20,输出就是所选MPR的8位值)结合而成,结果即21位地址。
因此,这款MMU将物理内存分组为8KB的页(13条CPU线=8KB页),这是CPU不借助交换MPR或改变其值,就能访问到的内存量。
不管怎样,如果你对它难以理解,就不要勉强自己(这只是一种非常规的工作方式,有些人可能觉得有意思)。
