【问题标题】:Terminate hanging program and return to Turbo Pascal 3终止悬挂程序并返回 Turbo Pascal 3
【发布时间】:2010-04-21 14:10:40
【问题描述】:

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

【问题讨论】:

  • @Neil Butterworth,只是怀旧。逃离当今庞大的、不透明的图书馆世界,而是假装回到只有你、你的代码、机器和一个小到可以理解的图书馆的时代,这是一种非常放松和满足的事情。而且我必须说,即使经过这么多年,Turbo Pascal 仍然是一个令人愉快的工作环境——而且 Pascal 语言现在不那么糟糕了,因为我已经掌握了 Greenspun 的知识和经验!
  • 我明白你的意思 - 我对 CP/M 的工作有着美好的回忆 - 没有库,一切都是用 Z80 汇编程序编写的。恐怕我无法使用闯入键 - 我的经验总是你必须按下重置按钮然后潜入显示器(这是一个适合任何年轻人的内置调试器)找出发生了什么。

标签: cpm turbo-pascal


【解决方案1】:

{U+} 指令将导致编译后的代码在每个语句之后检查是否已按下键。如果是这样,将检查击键是否有 ^C;如果不是 ^C,则按键将被丢弃。虽然这对中止程序很有用,但它会减慢速度,并且相当烦人地扼杀了提前输入的能力。不幸的是,CP/M 不提供任何类型的键盘中断(尽管某些 CP/M 实现可能会提供),因此实际上没有更好的选择。如果 Turbo Pascal 可以选择实现自己的键盘缓冲,那就太好了,但我不知道。

【讨论】:

    【解决方案2】:

    在 Turbo Pascal 3 程序的开头(在 Program 语句下)是编译器指令 {$U+}。这应该允许您执行 CTRL + C。只有在调试程序时才使用它,因为它会减慢程序的执行速度。如果运行正常,请将其删除,然后编译您的程序。

    通常在 Turbo Pascal 3 中,编译器具有一组默认编译器指令。默认情况下,“U - 用户中断”通常是关闭的。

    我最近在我的 Turbo Pascal 程序中发现的另一件事是我在调试程序时使用它,但由于某种原因它无法正常工作。不知道那里发生了什么,发现我真的必须按住这个组合才能让程序退出。不确定这是否与程序的执行速度有关,或者是否使用了嵌套循环导致了这种情况的发生。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多