问题标签 [z80]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
120 浏览

assembly - ti-83+ 组件像素移动程序不工作

我编写了这段代码,使用箭头键和输入按钮在屏幕区域中移动一个像素来停止程序。到目前为止,它似乎确实与所有建议一起工作得更好,但是它的像素位置搞砸了。

如果您说需要替换哪个代码块以及用什么替换,这对我来说是最简单的。

0 投票
2 回答
792 浏览

assembly - 使用我自己的非 ASCII 字符映射作为十进制,使用 LR35902 程序集将无符号 16 位整数从 HL 转换为文本

我需要弄清楚如何为 LR35902(Game Boy 的类似 Z80 的 CPU)制作一个例程,它将获取 HL 的内容(不是它指向的位置,存储在其中的实际数字)并将其转换为 1 到 5 (实际值范围从 0 到 65,535,因为 HL 是 16 位)使用十进制系统的非 ASCII* 字符。我有要打印的例程,并且可以很容易地找到一种裁剪前导零的方法。

我所需要的只是这个函数的至少一些伪代码和一个实际的RGBDS LR35902 ASM 例程。

*我使用自己的 1-byte-per-character charmap 代替 ASCII,其中字符 0 是十六进制字节 $17,一直增加到 9,即 $20。

0 投票
2 回答
1848 浏览

assembly - 究竟什么是机器循环?

我对“机器周期”的确切定义有点困惑。

例如,网上的一些消息来源说它是:

CPU 对每条机器语言指令执行四个步骤:获取、解码、执行和存储。

据称享有良好声誉的《Z80 编程》一书说:

我们已经看到所有指令都分三个阶段执行:FETCH、DECODE、EXECUTE。我们现在需要介绍一些定义。这些阶段中的每一个都需要几个时钟周期。Z80 在一个或多个逻辑周期中执行每个阶段,称为“机器周期”。

现在让我感到困惑的是——据我所知——第一个基本上是在说:机器周期是一个获取-解码-执行周期,而这本书基本上是在说:一个机器周期是一个或多个时钟在每个提取、解码或执行周期中单独发生的周期。

那么,什么是什么?

0 投票
1 回答
93 浏览

assembly - 使用 dec 创建延迟的问题

我已经开始尝试使用 Z80 程序集进行 Gameboy 编程,但我发现了一些奇怪的东西。

我发现了一段用于创建延迟的代码:

在玩这个的时候,我发现写 dec bc 两次可以缩短延迟,但是写 3 次会使延迟比使用一次或两次更长。为什么有偶数个dec语句会缩短延迟?

编辑:这是调用延迟的代码片段:

0 投票
1 回答
720 浏览

variables - 如何在 Z80 装配体中创建变量?

我正在尝试创建一个包含十六进制值的简单变量0xffff。我已经能够将它作为一个宏来使用SET,但我无法让它与类似的东西一起使用ld _time,$ffff。如何将值加载到 中_time

0 投票
1 回答
330 浏览

assembly - Z80 的 BCD 减法程序

该程序取自Programming the Z80一书,该程序旨在进行 x 字节 BCD 减法,x 可以是任何整数,这是通过计算两个操作数的字节并通过循环依次执行减法指令,但是在这里,我们将假设这两个数字具有相同的字节数,我们将其称为COUNT. 这些号码的地址是N1N2以及后面的地址。我的问题在代码的注释中。

0 投票
2 回答
707 浏览

simulator - z80.info解码中的IM0/1是什么意思?

我正在编写(又一个)Z80 模拟器。我正在使用z80.info 站点上的解码页面

在查找/分解表的部分中,它说对于索引 1 和 5,中断模式是 IM0/1。该表参照 IM 指令 (ED) X=1, Z=6。

IM0/1 到底是什么意思?

我知道这不是官方说明,但我也在努力支持无证说明。

0 投票
4 回答
2435 浏览

assembly - Z80中的A寄存器异或如何清除F寄存器的进位位?

我正在阅读一本关于 Zilog Z80 处理器的书,其中每当作者出于某种可能的原因想要清除进位位时,他都会执行以下任何操作:

这对 F 寄存器中的 C 位有何影响?换句话说,对某个寄存器 (A) 执行操作如何影响另一个寄存器 (F)?

0 投票
1 回答
714 浏览

z80 - Z80 NMI 是可重入的吗?

据我所知,Z80 NMI 中断(0x66)是由 NMI 引脚的边缘检测触发的。当仍在 NMI 处理程序代码中(RETN 尚未执行)检测到另一个边缘时会发生什么?

NMI 是可重入的吗?Z80 是否只是将当前地址压入堆栈并再次从 0x66 开始?

0 投票
1 回答
520 浏览

compilation - TI 84+ 的损坏的 .8xp 文件

我正在尝试为我的 TI 84+ 计算器编写一些程序。我正在桌面上的基本文本编辑器中编写,然后编译成.8xp文件,因为它比在实际设备上输入要容易得多。然后我想.8xp通过 TI Connect 将文件传递给我的计算器。

但是,我在桌面上编写的程序并没有传输到计算器,因为它们“已损坏或无效”。我的 TI Basic 代码中没有语法错误,它在我电脑上的 TI 仿真器上完美运行。

我已经在我的桌面和计算器上编写了完全相同的.8xp程序来试验这个问题,当我比较hex 文件时,它们几乎相同,但略有不同。这仅仅是因为我的.8xp文件编译器无法正常工作吗?如果是这样,为什么它会在我的模拟器而不是实际的计算器中运行?在我的计算机上使用 TI Basic 进行编程时,是否应该避免某些功能,因为编译器可能很难编译?有谁知道如何解决这些损坏的文件问题?我一直在细读谷歌也无济于事。

如果有帮助,.8xp文件是用户为 TI-84+ 编写的程序文件,它使用z80汇编。我正在使用 Wabbitemu 模拟器。

编辑:这是两个不同的 .8xp 文件。一个是写在我的电脑上然后编译的,另一个是写在我的计算器上的。该程序的代码是:

从我的计算器:

从我的电脑:

此外,这是我的程序的 .8xp,据称它已损坏或无效。该代码适用于 Checkers 游戏(请记住,它仍然需要一些认真的优化):