Ti-83 模拟器与 ROM 的问题
我已经学习计算机和 C++ 知识有一段时间了,我决定尝试制作一个模拟器来获得更好的理解。我想尝试制作一个 TI-83 仿真器(在 Zilog Z80 CPU 上运行)。我目前有两个问题:
第一是指向当前指令的“PC”寄存器只有16位,但我下载的Ti-83 ROM是256Kb。 16 位数据如何指向超过 ~64Kb 的地址?
其次,ROM的入口点在哪里?执行是从0x0000开始吗?
谢谢,希望你能帮助我理解它是如何工作的。
I have been building knowledge of computers and C++ for quite a while now, and I've decided I want to try making an emulator to get an even better understanding. I want to try making a TI-83 Emulator (runs on a Zilog Z80 CPU). I currently have two problems:
The first is that the "PC" register that points to the current instruction is only 16 bits, but the Ti-83 ROM I downloaded is 256Kb. How is 16 bits of data supposed to point to an address beyond ~64Kb?
Secondly, where is the entry point on the ROM? Does the execution just begin at 0x0000?
Thanks, and hopefully you can help me understand a bit on how this works.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
处理器核心外部很可能有一个可编程分页寄存器,可以将其设置为一次将 256K 地址空间的一部分映射到 64K 地址空间的一部分。你需要模仿这一点。希望您可以在官方或非官方文档中了解这一点。如果您有原理图或 PCB,它甚至可能会显示为外部 PAL 或逻辑芯片集合。
我完全忘记了 z80 在重置时开始执行的位置,但我相信您会在处理器手册中找到它,这将是为其编写模拟器的必要工具。
您需要确保所使用的核心确实是 z80,而不是某种定制的扩展版本。
当然,我确信有人已经做到了这一点,所以你的项目可能更多地是关于学习的——尽管如果你工作足够长的时间,最终你可能会超越任何可用的解决方案。
There's is most likely a programmable paging register outboard of the processor core that can be set to map a portion of the 256K at a time into part of the 64K address space. You will need to emulate that. Hopefully you can find out about this in official or unofficial documentation. If you have a schematic or PCB it might even be visible as an external PAL or collection of logic chips.
I forget off the top of my head where a z80 starts executing on reset, but I'm sure you will find it in the processor manual, which would be a necessary tool to write an emulator for it.
You'll want to make sure the core used is truly a z80 and not some kind of custom extended version thereof.
And of course I'm sure someone has already done this, so your project is likely to be more about learning - though in the end you might surpass any available solution if you work on it long enough.
开发人员指南描述了内存的排列方式,尽管它没有它实际上描述了映射是如何工作的。
简短版本:地址空间分为四个 16K 页,其中第一个始终映射 32 页闪存 ROM 的页 0。
The Developer Guide describes how memory is arranged, although it doesn't actually describe how the mapping works.
Short version: the address space is divided into four 16K pages, the first of which always maps page 0 of the 32-page flash ROM.