使用 Applesoft 在 Apple II、AppleDOS 3.3 上出现语法错误 GET

问题描述 投票:0回答:4

我正在使用 AppleWin 模拟器,设置为 Apple IIe、Apple DOS 3.3 和 Applesoft。我的目标是制作一款简单的游戏。

这个简单的 GET 程序在

]
提示下运行良好(我不确定,但我认为它称为监视器)。

10 GET V$
20 PRINT V$

它按预期打印按下的键

然后我使用

LOAD APPLESOFT
启动 Applesoft。我尝试编写与
]
提示相同的简单程序。但是这次当我输入第一行
10 GET V$
时,我得到输出
*** SYNTAX ERR

我认为这不是一个受支持的功能,但在 ApplesoftII 基本编程参考手册中,他们列出了保留关键字。

我可以更新到更高版本的Applesoft,那么哪个版本的Applebasic可以支持它? 我还可以使用另一种方法来获取按键,而无需用户随后按 Enter 键。

basic apple-ii
4个回答
0
投票
Apple 上的 Applesoft ][e (第一个完全支持小写的 Apple 版本)区分大小写,所有关键字都只能大写 - 所以

get

 不会匹配关键字(或任何内容),并且会给出你有一个语法错误。

当然,如果您正在模仿原始 Apple ][,则根本没有小写字母,并且小写字母显示为闪烁的大写字母 - 并且仍然无法匹配关键字。


0
投票
在继续研究我的问题后,我找到了键盘缓冲区的内存位置。

键盘缓冲区是

-16384

,重置该地址值的方法是访问
-16368

如果

-16384

 中的值大于 128,则已按下某个键。
所以,我可以使用 
PEEK -16384
 来读取该值。要获得 ASCII 代码,您需要将该值减去 128。
示例代码:

KEY= PEEK(-16384) IF KEY>=128 THEN PRINT KEY-128

要告诉系统您处理了按键并重置值,您需要访问

-16368

中的值。通过使用 
PEEK or POKE
。
示例代码:

POKE -16368,0 Or can also be PEEKed PRINT PEEK -16368
    

0
投票
如果您收到的错误是*** SYNTAX ERR 而不是“?SYNTAX ERROR”,那么您使用的是integer basic 而不是applesoft basic。首先尝试使用 FP 切换到 applesoft basic


0
投票
您看到的

]

提示不是显示器提示;它已经是 Applesoft BASIC 提示符了。显示器提示是
*
,显示器根本不理解BASIC程序。
令人困惑的是,

LOAD APPLESOFT

将从 Applesoft 转移到 Integer BASIC;因为 Apple DOS 3.3 软盘上名为 
APPLESOFT
 的程序实际上是一个 Integer BASIC 程序,其工作是将 Applesoft BASIC 解释器加载到 1977 年原始 Apple ][(Apple 之前的][+)的 RAM 中,其中还没有 Applesoft ROM。由于您只 
LOAD
 编辑了它,但没有 
RUN
 它,DOS 所做的就是切换到 Integer BASIC,以便能够 
LOAD
 一个 Integer BASIC 程序(它只能 
LOAD
 为 BASIC 版本的程序当前处于活动状态),然后是 
LOAD
 您的系统不需要的 Applesoft 加载程序。由于您没有运行它,因此没有产生错误。然后你就看到了 
>
 提示符,这是 Integer BASIC 提示符。嘿,很快,没有 
GET
 命令,因为 Integer BASIC 没有。

如果您确实打算使用 Integer BASIC,则需要使用

KEY=PEEK(-16384)

 读取单个密钥(
=128 表示该密钥可用,其 ASCII 值为 PEEK 结果减去 128),然后使用 <128 means no key available, >POKE -16368,0
DUMMY=PEEK(-16368)
 向硬件确认您已处理密钥。

我知道这个答案对于最初的问题来说可能为时已晚,但可能对“后代”有用。

© www.soinside.com 2019 - 2024. All rights reserved.