标签: cpm

终止挂起程序并返回Turbo Pascal 3

我在CP/M 2.2上运行Turbo Pascal 3.01A.假设我使用Turbo Pascal中的R菜单选项运行的Pascal程序有一个错误并进入无限循环.是否有一个特殊的控制字符会中断我的程序并返回到Turbo Pascal菜单?

cpm turbo-pascal

5
推荐指数
2
解决办法
1856
查看次数

CP/M 3.1 (z80) 的最小汇编程序

我似乎正在与我的愚蠢作斗争。

该站点解释了各种版本的 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 文件要启动。

我认为这些行的含义如下:

  1. 确保它在地址 100h 加载(0h 到 FFh 是零页)。
  2. 将 ASCII 'a' 加载到系统调用 2 的 E 寄存器中。
  3. 将整数 2 加载到系统调用 2 的 C 寄存器中。
  4. 进行系统调用(系统调用的 JMP 位于零页中的地址 5)。
  5. 结束程序(退出命令位于零页中的地址 0)。

该程序启动和退出没有问题。如果我删除最后一个命令,它会挂起计算机(我猜这也是预期的,并且显示 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 …

z80 cpm

5
推荐指数
1
解决办法
1584
查看次数

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

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

关于如何编写游戏循环的任何想法?

[编辑]

z88dk CP/M 库说

不是(当然)CPM 1.x 和 2.x,它们没有实时功能;, 也不是 QX/M,它的时钟不是基于 BCD 的。

有像 LADDER 这样的动作游戏,所以应该有一种游戏循环的方式。

[编辑2]

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

assembly z80 cpm

2
推荐指数
1
解决办法
109
查看次数

标签 统计

cpm ×3

z80 ×2

assembly ×1

turbo-pascal ×1