VZ200 / Z80仿真器

2021-03-28 00:55:42

该项目采用了基于该CPU的Z80 CPU和VZ200计算机的完整硬件的软件仿真。

我会在稍后的内容中添加更详细的文档,诚意,许多事情仍在变化,并且在安装过程已经过时之前不会使文档写入。此外,我仍然可以提高可用性(许多选择是代码中的硬连线常量而不是阅读某些配置文件),这也将影响Andrunning建筑。所以请,有点病人!至少,我已经已经开始了一些YouTube视频,该视频演示了已经运行的核心仿真:

初步YouTobe Demo视频最初是激励归档的渴望,并保持我在80年代编写的Oldsoftware,并且仍然居住在磁带盒中,我在1998年已经实施了VZ200特定组件的大多数Z80仿真Andessential部分。由于缺乏关于几个硬件缺乏的知识而没有得到它的工作。此外,Z80仿真对速度令人失望。

2010年,我恢复了Z80仿真的工作,并成功地实现了更快的指令实例化机制,使用专业的模板,用于快速操作代码解码和参数扫描和相关位移位和掩蔽,从而使Z80升级充分快速。此外,我得到了初探的仿真,vz200' s初始化例程。然而,在该路由结束时,CPU被困,无限地等待IRQ Unknownsource。我已经怀疑视频硬件必须通过IRQ将水平/垂直同步信息传递到CPU,因为视频内存只有单个共享访问端口和比视频硬件的单个共享访问端口和更高的访问权限,使得视频硬件将很快停止生成像素,而CPUAccesses视频RAM。因此,该软件希望仅在顺序仪器中干扰视频输出时,仅在这些间隙中发生视频RAP来访问视频RAP。虽然,我仍然没有关于硬件的足够信息来正确实施IRQGeneration和处理。

最后,在2018年,我发现了更详细的硬件信息来获取更好的硬件信息,使IRQ生成和处理正确,使得Isemulation现在成功地将初始化例程传递给基本模式。虽然,我仍然发现并不得不在仿真器的几乎所有相关部件中都有很多斑点,直到2018年Late2018,我得到了仿真器,成功运行了它的第一个非琐碎的基础程序。

在2021年初,我制作了一些与Z80仿真的精确时序相关的微小的错误修正,使得从读取和写入虚拟磁带盒(通过读写/写入到Anaudio文件)的读取和写入)现在正常工作。虽然,我猜,莫奈文录音的质量已经很久以前已经腐烂了阈值下面(有来自相邻绕组的信号串扰导致的磁性,导致换效应,这样我可能会赢得' t能够在everagain中读它们。

有关更多文档,请参阅我的GPN 19 Atgulaschprogrammiernacht' 19(GPN19)在德国卡尔斯鲁厄(在德国语法)中,塞巴斯蒂安·罗特布斯(Sebastian Ritterbusch教授)简介,作为OpenDocument演示文稿的相应幻灯片(。 ODP)文件(英语)。

Talk @ GPN19,ZKM Karlsruhe在远见的即将推出的,更详细的安装文档:目前,要获取代码运行,您必须下载Thesource代码并在授课(GNU)诸如(GNU)的系统上,自己编译它, (ba)sh等,当然是java编译器。执行"让所有"应该足以创建一个拥有的构建一个(几乎)运行模拟器所需的一切。

请注意,直到我可以解决有关VZ200' S ROM内存的所有潜在版权问题,我将从ThisThepository中排除16KB的ROM,这是运行VZ200仿真所需的。与一个下一个提交(仍然是一个todo),你将能够在没有那个rom的情况下运行核心z80emulator,只需收到一个警告而不是anerror,您正在尝试在没有任何软件的情况下运行模拟器。如果您没有ROM,您可以尝试VZ200和ROM的谷歌曲,并抓住该rom。该ROM应该是一个恰好16384字节的文件。将此文件作为./emulator/vz200/OS.ROM下面的构建目录下。然后使用主类启动Java作为参数,例如参数,例如参数。和

应用程序框架Windows包括VZ200' s实际的输出屏幕窗口,虚拟键盘和监视器控制和调试程序。

屏幕窗口目前支持三个不同的缩放因子(1,2和3)。全屏显示模式有未来计划,墨水模仿阴极射线管' S的特定外观。

虽然大多数输入可以通过标准的PC键盘,VZ200' S原始键盘容易完成,但包含用于接触图形字符的特殊关键组合,特别编辑器控制键,用于命令关键词的特殊编辑器控制键,Butalso快捷方式。将这些特殊的键盘映射到标准PC键盘可能会导致意想不到的攻击,尤其是在非美国键盘布局上。因此,关键输入PC' S键盘以合理的方式映射到VZ200'键盘。但是,某些特殊字符或功能可能仅通过单击VZ200和#39; S VirtualKeyboard来访问。

监视器控制程序是一个在Aconsole窗口中运行的特殊程序,允许检查和操作CPU'姐姐的空间以及所有CPU和#39; S寄存器。包括内存内容的功能,作为z80未组装的男性orhexadecimal字节或ASCII字符,以及进入十六进步的字符。此外,可以通过监视器来控制启动和停止CPU,包括用于调试的有用工具,如跟踪和Single指令步骤模式,或在达到断点之前运行。

监视器' S的无组件功能还允许代码注释和符号地址和值的有限功能。为此目的,可以编写一个特殊的XML注释文件,其中包含编码,代码标签和符号值。每当符合任何这些元信息匹配的未组用的语言时,将与未组制的印刷品一起打印出来,从而导致汇编的汇编程序列表源代码列表。以下是此类anannotation文件的示例片段:

<在地址=" 0x7a9d"> <标签> fname_buf< / label> <数据字节长度=" 0x11" /> <标题> ----开始文件名缓冲区----< br />文件名缓冲区用于当前已处理的盒式磁带文件,< br />最大限度。 16个字符+尾随" \ 0" < /标题> < / aT> <在地址=" 0x7ae6"> <数据字节长度=" 0x1" /> < / aT> <在地址=" 0x7aad"> <页脚&gt ;--结束文件名缓冲区----< /页脚> < / aT> <在地址=" 0x7aae"> <标签> next_crs_x< / label> <数据字节长度=" 0x1" /> <评论> x坐标放置光标< br />下一个文本缓冲区到屏幕复制< / checound> < / aT>

这样的注释文件的想法是您可以单独从ITSBary和源代码表示分开汇编代码指令,特别是如果您不使用源代码,因此无法与源代码一起放入注释。通常是当您的工程师二进制代码的情况。当然,如果您拥有源代码,则不需要这样的改造注释。

“配置”对话框当前支持建立VZ200' S扬声器输出和盒式磁带的目标,输入输入源,以及CPU仿真的一些属性。

vz200' s扬声器可以映射到通过Java' s内置音频系统类以任何音频输出线映射到任何音频输出线。请注意,通过采摘扬声器和#39; S 3状态膜控制Bytwo触发器的vz200发出声音,而当今的声卡期望射门值。仿真器会自动将模糊的膜' s状态转换为现代声卡的连续样式流。

从技术上讲,VZ200' S盒式输出非常类似于Thexexer输出:二进制数据输出被转换为仿真器可以通过Java' s内置音频系统课程上获得的任何音频输出线上映射的Samples流。 。此外,由于缺损功能,输出也可以直接写入光盘ASAN音频文件。

除了显示器控制程序中的基本控制功能之外,Thecpu设置对话框使用户能够设置特殊的CPU参数,包括模拟速度,以及一些CPU分析/ loggingFeatures。此外,人们还可以决定在繁忙的等待模型之间,将在微尺度上进行非常精确的时机,但可能会挑战HOST' S CPU电源,更懒惰,但更多的主CPU保存模式。即使是更惰性的模式仍然可以产生足够好的微量标枪,不能在没有闪烁的情况下产生声音和图形(与繁忙的等待模型相比)。

至少在我的Ubuntu 18.04框上,新的Java-11-OpenJDK-AMD64版本存在问题:它不会发现没有音频设备。 TheEmulation仍然会运行,但声音(即音频输出和CassetteInput /输出)将无法正常工作。如果这个问题也会影响你,但你想要运行vz200' s扬声器和盒式磁带输入/输出,尝试安装和运行旧的java-8-OpenJDK-AMD64 VersionInstead;至少这对我有用。也就是说,在我的Ubuntubox上,我目前正在使用

读取.vz文件有限,实验支持。 .vzfiles是在标准光盘上存储二进制和基本程序的不正当的准则。您将在Internet上找到许多软件在Internet上为.vz文件。但是,对.vzfiles的支持尚未安全。这就是为什么Consupport的实现尚未在Git Main分支上,而是在一个名为sloppy_vzfile_support的分支上。如果您计划使用.vz文件,您可能希望签出分支sloppy_vzfile_support。但是,由于implingation尚未安全,因此在CPU仿真正在运行时,您不应尝试在.vz文件中加载。在这种情况下,由于某些以前的竞赛条件,整个仿真器可能会陷入困境。

我将首先尝试在Git Master BranchThread安全上实施;只有,我将重新将sloppy_vzfile_support分支重新集成到主分支中。

如果您不需要支持.vz文件,您可能希望粘贴更稳定的主分支。