我在CP/M 2.2上运行Turbo Pascal 3.01A.假设我使用Turbo Pascal中的R菜单选项运行的Pascal程序有一个错误并进入无限循环.是否有一个特殊的控制字符会中断我的程序并返回到Turbo Pascal菜单?
我似乎正在与我的愚蠢作斗争。
该站点解释了各种版本的 CP/M 下的系统调用。
但是,当我尝试使用 call 2(C_WRITE,控制台输出)时,没有任何反应。
我有以下代码。
ORG 100h
LD E,'a'
LD C,2
CALL 5
CALL 0
Run Code Online (Sandbox Code Playgroud)
我凭记忆在这里背诵。如果有拼写错误,请放心,它们不在原始文件中,因为文件确实已编译并且我有一个 COM 文件要启动。
我认为这些行的含义如下:
该程序启动和退出没有问题。如果我删除最后一个命令,它会挂起计算机(我猜这也是预期的,并且显示 CALL 0 有效)。
但是,它不打印 ASCII 字符。(但它确实打印了一个额外的新行,但系统可能已经这样做了。)
我怎样才能让我的 CP/M 程序做系统调用应该做的事情?我究竟做错了什么?
更新:问题是我尝试过的所有汇编程序都期望源文件具有某种格式。此文件与 Microsoft 的宏汇编程序一起使用:
.Z80
START: LD E,'a'
LD C,2
CALL 5
JP 0
Run Code Online (Sandbox Code Playgroud)
我认为(我在猜测)asm.com(DR 的汇编程序)和 m80.com(Microsoft 的宏汇编程序)正在期待 Intel …
我想在 CP/M 2.X (Z80) 上编写一个游戏循环,需要等待一段时间,例如一秒钟。我看过 BDOS 但没有找到一个功能,循环取决于处理器(仿真速度),不存在垂直空白等中断。
关于如何编写游戏循环的任何想法?
[编辑]
z88dk CP/M 库说
不是(当然)CPM 1.x 和 2.x,它们没有实时功能;, 也不是 QX/M,它的时钟不是基于 BCD 的。
有像 LADDER 这样的动作游戏,所以应该有一种游戏循环的方式。
[编辑2]
我可以让用户通过两次按键检查 5 秒并测量一次速度(双循环)以配置游戏 - 但仅作为最后的手段。