问题标签 [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 回答
448 浏览

assembly - 在 ti 84+ 的 ti 基本程序中使用十六进制代码

最近我一直在阅读不同的十六进制代码,它们可以做一些很酷的事情,比如在程序中存档一些东西等等。我尝试将这些合并到我的(ti 84+)基本编码中的方式是使用单独的程序并在原始程序中“调用它”(ASM(prgrmNAME))。问题是有时我想回到原始程序,但我不能使用 return,因为一旦我使用 AMSprgrm,我就无法在其中进行基本编码。

有什么方法可以在我的程序中间合并十六进制代码,或者其他解决方案来解决这个问题?

0 投票
1 回答
992 浏览

c - 如何在 Visual Studio Code 中设置混合 C/Z80 汇编器工具链

我想使用 Visual Studio Code 为我的自制 Z80 Computer编写代码。我使用z88dk及其工具来编译 C,汇编 Z80 asm 文件等。我将在汇编程序中编写部分,在 C 中编写其他部分。我还需要编辑 .m4 文件。如果这些文件类型有语法着色会很好。

我对 vscode 完全陌生,我已经看到了 z80 的一些语言,但我不知道如何从那里继续 - 或者这些甚至是否可以工作。

我不想编写语言扩展,因为这看起来工作量太大 - 据我了解。我也不是打字稿/javascript 开发人员。

是否有关于如何设置的教程或任何其他有用的资源?

0 投票
1 回答
1886 浏览

assembly - gameboy ~Z80 处理器中指令 LD A,(C) 的长度

您好,我正在为 Game Boy 编写模拟器。

我使用这个参考:Gameboy CPU (LR35902) 指令集

该文档指出操作码:

长度为 2。

Game Boy CPU 手册分别说这些说明:

将地址 $FF00 + 寄存器 C 处的值放入 A。

将 A 放入地址 $FF00 + 寄存器 C。

我认为它的长度为 1 因为操作码是自给自足的,它不需要解释另一个值。如果它的长度为 2,那么第二个字节的用途是什么?

0 投票
2 回答
758 浏览

emulation - 我可以在 SUB 指令 gameboy 仿真中使用两个补码吗?

您好,我正在为 Game Boy 编写模拟器。

我正在努力使用 SUB 指令

给定a = 0x90

我正在做的是:

我使用 2 补码方法进行减法。

所以减法等价于下面的加法:

在这个过程中,没有进位,也没有半进位,所以我不设置标志。而且我认为这是一个错误,因为其他仿真器(例如BGB确实如此。请注意,结果是正确的,只有标志不正确。

所以我想真正的处理器不使用 2 补码方法,因为没有免费的方法来检索进位和半进位。

不过,我可以使用两个补码来模拟带有标志处理的 SUB 指令,还是应该依赖“经典”减法逻辑?

0 投票
1 回答
1524 浏览

emulation - GBZ80 - ADC 指令未通过测试

我一直在通过我的 Gameboy 模拟器运行Blarggs CPU 测试,并且op r,r测试显示我的 ADC 指令无法正常工作,但 ADD 是。我的理解是,两者之间的唯一区别是在添加之前将现有的进位标志添加到第二个操作数。因此,我的 ADC 代码如下:

我在测试ROM中输入了以下内容:

当设置进位标志时, A 的值为0 (Flags = B0),否则为FF (Flags = 00)。就我的理解而言,这就是它应该如何工作的方式。但是,它仍然无法通过测试。

根据我的研究,我相信标志的影响方式与 ADD 相同。从字面上看,我的代码与工作 ADD 指令的唯一变化是在前两行中添加了标志检查/潜在增量,我的测试代码似乎证明了这一点。

我错过了什么吗?也许 ADD/ADC 之间的标志状态有一个特殊性?附带说明一下,SUB 指令也通过了,但 SBC 以同样的方式失败。

谢谢

0 投票
3 回答
426 浏览

calculator - 有没有办法将代码添加到无限的 z80 汇编循环?

不久前,我问TI-84 上最快的无限循环是什么。我使用带有此代码的程序集无限循环参与的答案之一:

但是,这有点不切实际,因为它只能通过重置按钮退出,并且不会在其中运行任何东西。

有没有办法将 TI-Basic 代码放入此循环和/或使其有条件地退出?

这是原始问题和答案的链接: TI-84+ Basic 中最快的无限循环是什么?

0 投票
2 回答
130 浏览

cursors - TRS-80 POKE 光标表笑脸?

我试图记住将 TRS-80 计算机上的光标更改为笑脸的 POKE 命令。

POKE 16419,x 将改变光标。

我找不到“x”的列表!

我知道 255 提供了火箭飞船。249-250 之间的某个地方是性别符号,等等。是否有一张带有所有这些符号的表格?我用谷歌搜索和搜索,由于 SMILEY 表情符号的出现,我认为这个问题的答案很模糊......

顺便说一下,这是一个尝试这些的好地方:http: //people.cs.ubc.ca/~pphillip/trs80.html

谢谢,玫瑰

0 投票
1 回答
185 浏览

division - 这个z80除法算法坏了吗?

http://zxm.speccy.cz/data/Z80%20Bits.html#2.2

输入:HL = 股息,C = 除数,A = 0 输出:HL = 商,A = 余数

当我尝试设置 hl=$1200, a=0, c=$91 时,我在 HL 中得到 0。不应该是$ 1f吗?

0 投票
2 回答
406 浏览

machine-code - GBZ80——代码缺点

这种gbz80 的词干 - IF 语句

我有一个循环 0x167 次的代码,写入屏幕。我想要发生的是脚本循环三次。

我的脚本:

现在,它没有停止它应该停止的地方,而是继续破坏内存,直到它达到 d325 并导致脚本崩溃。正如您可能知道的那样,我尝试使用 DE 作为循环计数器。

请解释您的答案,我对此仍然很无聊。

0 投票
1 回答
1721 浏览

assembly - 使用替代寄存器的 Z80 组装

我尝试为 z80 程序集编写冒泡排序,但我发现我需要使用替代寄存器。但是推荐的语法(B')不起作用并引发错误。我怎样才能使用这些寄存器?