gpt4 book ai didi

assembly - 在 Z80 CP/M 上等待一段时间

转载 作者:行者123 更新时间:2023-12-05 09:35:33 27 4
gpt4 key购买 nike

我想在 CP/M 2.X (Z80) 上编写一个游戏循环,需要等待一段时间,例如一秒。我看过 BDOS 但没有找到函数,循环取决于处理器(仿真速度),不存在像垂直空白这样的中断。

关于如何编写游戏循环有什么想法吗?

[编辑]

z88dk CP/M lib 说

Not (of course) CPM 1.x and 2.x, which have no real-time functions;,nor QX/M, its clock is not BCD based.

有像 LADDER 这样的 Action 游戏,所以应该有一种游戏循环的方法。

[编辑2]

我可以让用户通过两次按键检查 5 秒并测量速度(双循环)一次以配置游戏 - 但仅作为最后的手段。

最佳答案

在 CP/M 2.2 下没有可移植的等待一定时间的方法。 CP/M 不需要或不使用实时时钟或任何类型的计时器,因此您甚至不能假设系统中存在一个,更不用说它使用任何类型的通用接口(interface)了。

Turbo Pascal 的Delay 功能通过假定特定的 CPU 频率来工作,该频率是在安装 Turbo Pascal 时配置的。 CP/M 游戏 Ladder 是用 Turbo Pascal 编写的,使用了它的 Delay 函数,所以它也假设了一定的 CPU 频率。如果您在更快或更慢的 CPU 上玩游戏,游戏会比预期更快或更慢。

最简单的解决方案是实现您自己的假定特定 CPU 频率的延迟函数。我相信 4 MHz 是 CP/M 最常见的 Z80 速度。您可以将其设为可配置选项,以便用户可以更改假定的 CPU 速度。您可能还希望为用户提供更改终端类型的选项,就像 Ladder 所做的那样,因为有许多可能的终端可以与 CP/M 一起使用。

关于assembly - 在 Z80 CP/M 上等待一段时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65777890/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com