我已经在很长一段时间内建立了计算机和C ++的知识,而且我已经决定尝试制作一个模拟器以获得更好的理解。我想尝试制作TI-83仿真器(在Zilog Z80 CPU上运行)。我目前有两个问题:
首先是" PC"指向当前指令的寄存器只有16位,但我下载的Ti-83 ROM是256Kb。如何将16位数据指向超过〜64Kb的地址?
其次,ROM的入口点在哪里?执行是否从0x0000开始?
谢谢,希望你能帮我理解一下这是如何运作的。
答案 0 :(得分:0)
处理器内核很可能是一个可编程的寻呼寄存器,它可以设置为一次将256K的一部分映射到64K地址空间的一部分。你需要模仿它。希望您能在官方或非官方文档中找到相关信息。如果您有原理图或PCB,它甚至可以作为外部PAL或逻辑芯片集合可见。
我忘了z80在重置时开始执行的顶部,但我确信你会在处理器手册中找到它,这将是为它编写模拟器的必要工具。
您需要确保使用的核心是真正的z80,而不是某种自定义扩展版本。
当然,我确信有人已经这样做了,所以你的项目可能更多地是关于学习 - 尽管如果你长时间工作,你可能会超越任何可用的解决方案。
答案 1 :(得分:0)
Developer Guide描述了内存的排列方式,虽然它实际上没有描述映射的工作原理。
短版:地址空间分为四个16K页,第一页总是映射32页闪存ROM的第0页。