Pit*_*tto 1 basic c64 commodore
我想在commodore 64中编写一个非常简单的基本程序,输入其他基本命令。
这是一个例子:
10 print"list"+chr$(13)
这会打印列表但不会按 Enter 键。
我的期望是得到 list 命令的结果。
我怎样才能实现这个目标?
执行从字符串构建的 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 行