如何在c64的basic中以编程方式输入命令?

Pit*_*tto 1 basic c64 commodore

我想在commodore 64中编写一个非常简单的基本程序,输入其他基本命令。

这是一个例子:
10 print"list"+chr$(13)

这会打印列表但不会按 Enter 键。

我的期望是得到 list 命令的结果。

我怎样才能实现这个目标?

Bo *_*man 5

执行从字符串构建的 BASIC 命令的一种方法是操作键盘缓冲区。考虑以下 BASIC 子例程,该子例程执行您在 GOSUB 之前放入 CM$ 的任何 BASIC 命令:

100 PRINT CHR$(147)CHR$(17)CHR$(17)CHR$(17);CM$;
110 POKE631,13:POKE632,67:POKE633,79:POKE634,78:POKE635,84:POKE636,13
120 POKE198,6
130 PRINTCHR$(19):END
140 RETURN
Run Code Online (Sandbox Code Playgroud)

100 清除屏幕,将光标向下移动几次,然后将命令以 CM$ 格式打印到空白屏幕上。

110 Poke RETURN,然后是“C”“O”“N”“T”,然后是另一个 RETURN 进入键盘缓冲区。

120 告诉系统缓冲区中有 6 个新的击键。

130 将光标移至屏幕顶部并结束程序。

这就是奇迹发生的地方。C64 将开始处理键盘缓冲区中的字符。

140 这里是执行命令后 BASIC 程序将返回的位置。由于这是用于 GOSUBing 的例程,因此我只是在此处放置了 RETURN 命令。

要测试子例程,请添加以下行:

10 CM$="LIST":GOSUB100
20 PRINT"MY PROGRAM CONTINUED RUNNING!": END
Run Code Online (Sandbox Code Playgroud)

这是一个关于它的有趣页面: Commodore 64 键盘缓冲区技巧:从 BASIC 删除和创建 BASIC 行