gpt4 book ai didi

qbasic - CLEAR 语句是否有第一个参数?

转载 作者:行者123 更新时间:2023-12-03 21:30:20 25 4
gpt4 key购买 nike

在 GW-BASIC 和 QuickBASIC 中,语句都传递参数,其中一些是可选的,可以根据语句省略:

REM Move the text cursor to the specified column and row.
LOCATE row%, column%

REM Move the text cursor to the specified column without changing the row.
LOCATE , column%

在 GW-BASIC 中, CLEAR语句很不寻常,因为它的第一个“参数”总是被省略:
CLEAR , basicMem
CLEAR , basicMem, basicStack
CLEAR , , basicStack

在 QuickBASIC 中, basicMem由于解释器/运行时管理自己的内存,参数变为可选:
CLEAR , , basicStack

我想知道的是,在 GW-BASIC 之前,第一个“参数”是否曾经用于任何东西,即像这样的东西实际上很有用:
CLEAR missingArg, basicMem, basicStack
REM ^^^^^^^^^^
REM here

也就是说,在第一个逗号之前是否有过有目的的非空参数?

如果有人有任何想法,我很想知道!

最佳答案

What I'm wondering is whether that first "argument" ever used for anything prior to GW-BASIC, i.e. something like this was actually useful:

CLEAR missingArg, basicMem, basicStack
REM ^^^^^^^^^^
REM here

That is, was there ever an purposeful non-empty argument before the first comma?



是的,有第一个参数,但从来没有真正使用它的 3 参数形式。

微软(最初是 Micro-Soft)创建了 Altair BASIC。它有一个 CLEAR没有参数的命令将所有程序变量设置为零。 4K 版本没有字符串,因此不需要管理字符串空间。但是,8K、扩展和磁盘版本有 CLEAR命令也接受形式 CLEAR x 的单个参数.值 x以字节为单位指定可用的最大字符串空间量,BASIC 加载时的默认值是 8K 版本中的 50 个字节,扩展和磁盘版本中的 200 个字节,直到它被更改 [source] .这就是缺少的第一个参数的来源以及它最初的用途。然而,当时只有一种说法是有效的。

微软继续为多个系统开发了一种名为“BASIC-80”的衍生产品,特别是英特尔 ISIS-II、CP/M 和 TEKDOS 操作系统。还创建了 BASIC-80 的“Standalone Disk BASIC”版本,它可以在“几乎没有操作系统的任何基于 8080 或 Z80 的磁盘硬件上运行”。没有 4K 版本的 BASIC-80,因此可以合理地假设所有版本的 BASIC-80 都有可用的字符串,就像 Altair BASIC 的 8K 版本那样。因此,需要管理该字符串空间。然而,正是在 BASIC-80 中 a second argument was added :
CLEAR [expression![,address]]
expression!是一个指定字符串空间量的表达式,如 8K (Altair) BASIC 和 address是 BASIC 可用的最大地址,即 BASIC 可用的内存量,就像 GW-BASIC 中第一个逗号之后的参数一样。

最终,BASIC-80, Release 5.0,被运往世界, it featured the odd syntax instead :
CLEAR [,[expression1][,expression2]]
expression1是 BASIC 可用的最大内存, expression2是堆栈空间量。 Appendix A: New Features in BASIC-80, Release 5.0解释了为什么第一个参数被删除:

  1. String space is allocated dynamically, and the first argument in a two-argument CLEAR statement will be ignored.


换句话说, CLEAR strSpace!,maxMem会忽略 strSpace! BASIC-80 版本 5.0 中的参数,因此语法变为 CLEAR [,[maxMem][,maxStack]] .

QuickBASIC 最终将语法进一步更改为 CLEAR [,,stack] .
令人困惑的是,QuickBASIC 4.5 的在线帮助系统声明如下:
 Note: Two commas are used before stack to keep QuickBASIC compatible
with BASICA. BASICA included an additional argument that set the
size of the data segment. Because QuickBASIC automatically manages
the data segment, the first parameter is no longer required.

提到的“第一个参数”是 maxMem因为 BASICA(和 GW-BASIC)使用 BASIC-80 版本 5.0 可用的语法,而不是同样缺失的 strSpace! BASIC-80 5.0 之前版本使用的参数。

关于qbasic - CLEAR 语句是否有第一个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53680260/

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