问题标签 [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 投票
9 回答
3144 浏览

assembly - 相当于其他架构上的 Z80 DJNZ 指令?

首先是一点背景。z80 CPU 有一条名为DJNZ的指令,可以以与for循环类似的方式使用。基本上 DJNZ 会减少 B 寄存器,如果不为零则跳转到标签。例如:

当然,您可以使用常规比较和跳转指令来做同样的事情,但通常使用单条指令很方便。

顺便说一句,我的问题是,其他 CPU 架构是否包含类似的控制指令?

0 投票
5 回答
781 浏览

z80 - 正在寻找包含 Sinclair ZX80 PC 程序的录音带/盒式磁带上的程序?

好吧,回到冰河时代之前,我记得有一台 Sinclair ZX80 PC(电视作为显示器,盒式磁带播放器作为存储设备)。

显然,盒式磁带上的节目在播放磁带时发出了非常明显的声音(呃……噪音)……我想知道是否有人还有那些磁带?

原因(以及这个 Q 与编程相关的原因)是 IIRC 不同的语言发出了一些不同的音调,但我想运行磁带并听自己确认是否真的如此......

0 投票
0 回答
201 浏览

z80 - 我使用电话线连接了 az 80 并跳转到 0000 0000 0000 0000

我将 1100 0011 0000 0000 0000 0000 放在 2764 eprom 中——这应该是为了测试 z80——我有一个 555 定时器,以 500 khz 运行。这个小程序可以在z80上运行吗?我查看了 m465 示波器上的地址引脚。地址显示最高到0100 0000。我认为应该只算到0000 0000 0000 0011。z80可以测试吗?圣克拉拉谷还制作了 lm1871 无线电控制芯片,如果不完成整个 rc 循环,就无法显示高或低。

0 投票
3 回答
1837 浏览

assembly - Z80 汇编器/机器代码中的字节/字/地址是有符号还是无符号?

我正在为 Z80 二进制文件制作一个模拟器,但我无法从手册或谷歌中找出所有整数数据类型是有符号还是无符号。那么来自 register AB...HL等的数字是否已BC签名?

此外,在机器代码中,指令后面的字节/字/地址是带符号的还是无符号的参数?

就像在这些示例中一样(来自8080/Z80 指令集):

提前致谢。

0 投票
4 回答
927 浏览

assembly - Z80 汇编语言 - INC r 后的符号标志

Z80 汇编语言的一件事困扰着我。符号标志总是代表A寄存器值的符号吗?我的意思是,当我运行“INC B”时,结果返回到 B,那么符号标志是取自 A 或 B 寄存器的值吗?提前致谢

0 投票
2 回答
2832 浏览

assembly - GBZ80:LD HL,(SP+e) 如何影响 H 和 C 标志?

在 Gameboy Z80 上,该操作究竟如何LD HL,(SP+e)影响 H 和 C 标志?(半进位+进位)

参考: http: //www.devrs.com/gb/files/opcodes.html

0 投票
1 回答
732 浏览

assembly - TI 组装:之间的差异

我是 TI 编程平台的新手。我希望得到一些关于什么是我最好的路线的指示。

我需要生成一系列兼容 TI-83(p) 和 84p 模型的算术和图形函数。

我很高兴找到可用于该平台的大量信息,但被它淹没了。他们中的很多人也很老。

我相信 BASIC 不适合我的目的。另一个选项是 z80 组件。但我看到有三种变体:nostub、Ion 和 MirageOS。我能知道这三者之间是否有任何区别,特别是考虑到上述模型之间的兼容性。(本人有 Microchip PIC 开发背景,发现两种汇编语言有相当大的差异。)

我还阅读了有关 z88dk C 编译器的信息,并且非常希望采用这种方法。但是我不确定对ti平台的支持是否足够成熟,可以被不懂z80组装的人使用。任何 z88dk 用户都可以评论它对 ti-8x 平台的可靠性吗?


嗯没有答案。根据我所见,z88dk 非常没用。所以没有回避 z80 asm。Ion shell 似乎满足兼容性要求:ti 83、83+、83se、84+ 和 84se。

0 投票
3 回答
1598 浏览

emulation - 模拟CPU时关于循环计数准确性的问题

我计划在接下来的几个月里创建一个 Sega Master System 模拟器,作为 Java 的一个业余项目(我知道它不是最好的语言,但我发现它工作起来很舒服,并且作为一个经常使用Windows 和 Linux 我认为跨平台应用程序会很棒)。我的问题是关于周期盘点的;

我查看了另一个 Z80 仿真器和其他仿真器的源代码,特别是执行循环让我很感兴趣——当它被调用时,一个 int 作为参数传递(比如说 1000 作为示例)。现在我知道每个操作码需要不同数量的周期来执行,并且在执行这些操作时,周期数会从整体数字中减少。一旦剩余的循环数 <= 0,执行循环就结束了。

我的问题是,这些仿真器中的许多都没有考虑到要执行的最后一条指令可以将周期数推为负值这一事实——这意味着在执行循环之间,最终可能会出现 1002 个周期执行而不是 1000。这重要吗?一些模拟器通过在下一个执行循环上进行补偿来解决这个问题,而有些则没有——哪种方法最好?请允许我说明我的问题,因为我不是特别擅长自我介绍:

在这个特定的循环示例结束后,numOfCycles 将为 -2。这只会是一个很小的不准确,但它在人们的经验中是否重要?我很感激任何人对此的见解。我计划在每一帧之后中断 CPU,因为这看起来很合适,所以我知道 1000 个周期很低,但这只是一个例子。

非常感谢,菲尔

0 投票
3 回答
1579 浏览

java - Windows XP 与 Windows 7 上的 Java 计时精度

我有一个奇怪的问题 - 我希望有人可以向我解释发生了什么以及可能的解决方法。我正在用 Java 实现 Z80 内核,并试图通过在单独的线程中使用 java.util.Timer 对象来减慢它的速度。

基本设置是我有一个线程运行一个执行循环,每秒 50 次。在这个执行循环中,无论执行多少个循环,然后调用 wait()。外部 Timer 线程将每 20 毫秒调用一次 Z80 对象上的 notifyAll(),模拟 3.54 MHz(ish)的 PAL Sega Master System 时钟频率。

我上面描述的方法在 Windows 7 上完美运行(尝试了两台机器),但我也尝试了两台 Windows XP 机器,在这两台机器上,Timer 对象似乎睡过头了大约 50% 左右。这意味着在 Windows XP 机器上,一秒的仿真时间实际上需要大约 1.5 秒左右。

我曾尝试使用 Thread.sleep() 而不是 Timer 对象,但这具有完全相同的效果。我意识到大多数操作系统中的时间粒度并不优于 1 毫秒,但我可以忍受 999 毫秒或 1001 毫秒而不是 1000 毫秒。我无法忍受的是 1562 毫秒 - 我只是不明白为什么我的方法在较新版本的 Windows 上运行良好,但在较旧版本的 Windows 上运行良好 - 我已经调查过中断周期等,但似乎没有已经制定了解决方法。

谁能告诉我这个问题的原因和建议的解决方法?非常感谢。

更新:这是我为显示相同问题而构建的一个较小应用程序的完整代码:

主类所做的只是创建并启动这些工作线程之一。在 Windows 7 上,此代码产生大约 999 毫秒 - 1000 毫秒的时间,这完全没问题。然而,在 Windows XP 上运行相同的 jar 会产生大约 1562 毫秒 - 1566 毫秒的时间,这是在我测试过的两台单独的 XP 机器上。它们都在运行 Java 6 update 27。

我发现这个问题正在发生,因为定时器正在休眠 20 毫秒(相当小的值) - 如果我将所有执行循环一秒钟内放入等待等待() - notifyAll()循环,这会产生正确的结果 - 我'我确信看到我正在尝试做的事情(以 50fps 模拟 Sega Master 系统)的人会看到这不是一个解决方案 - 它不会给出交互式响应时间,每 50 个跳过 49 个。正如我所说, Win7 处理得很好。对不起,如果我的代码太大:-(

0 投票
1 回答
732 浏览

assembly - 将一串标记转换为一串 ASCII 值 [TI-83+ ASM]

我正在为 TI-83+ 计算器编写一个汇编程序,并且有一个我想要的功能,但我不知道如何执行它。

我已经从 Ans 变量中检索了字符串,我希望我可以轻松地从中收集 ASCII 值,但是由于没有创建完整的查找表,我想不出我将如何去做。德州仪器使用自己的标记编码,一些标记代表许多字符。

简而言之,我需要弄清楚如何将一串 TI 令牌转换为一串 ASCII 字符。