【发布时间】:2021-01-18 15:55:28
【问题描述】:
我想在 CP/M 2.X (Z80) 上编写一个游戏循环,需要等待一段时间,例如一秒。我查看了 BDOS,但没有找到函数,循环取决于处理器(仿真速度),不存在垂直空白等中断。
关于如何编写游戏循环的任何想法?
[编辑]
z88dk CP/M 库说
不是(当然)CPM 1.x 和 2.x,它们没有实时功能; ,也不是 QX/M,它的时钟不是基于 BCD 的。
有像 LADDER 这样的动作游戏,所以应该有一种游戏循环方式。
[编辑2]
我可以让用户用两次按键检查 5 秒并测量一次速度(双循环)来配置游戏 - 但只能作为最后的手段。
【问题讨论】:
-
查看 BDOS 调用列表,我没有看到任何有用的信息(DELAY 不在 Z80 CP/M 中)。您可以通过再次获取日期和时间、等待一些大但任意数量的周期(大约 10 秒)并再次获取时间来估计等待多长时间。然而,这会很慢,因为长时间没有发生任何事情,并且依赖于很少/没有中断占用周期。如果你的目标是更具体的东西(例如 RomWBW),你应该能够得到一些半便携的东西。
-
如何以便携的方式获取时间? (例如 NC 100、PC 1600、模拟器)- Turbo Pascal 也有延迟(t),但我找不到源。
-
如果有这样的问题,您可能会在Retrocomputing 上获得更好的运气。
-
CP/M 2.2 中没有标准时钟或定时器功能。您将不得不假设一些时钟速度或依赖机器相关的硬件。
-
我已经实现了一个CP/M;我可以确认确实没有可用的时间信息。没有时钟,没有时间戳。在 8080、Z80A 和 B 以及 V20 之间,包括像 Commodore C128 这样严重瘫痪的机器,那里有相当广泛的性能。