如何在Commodore c64上从软盘自动启动程序

18

好消息,我的c64在我阁楼上度过多年后仍在运行..
但我一直想知道的是:

当我打开c64时如何自动从已插入的软盘中加载和运行程序?
类似于 load "*",8,1 的一些自动运行命令会很合适...

敬礼
MoC


4
让我在周五早上微笑,给你点个赞。 - Tim Barrass
6个回答

10

你写道,像LOAD"*",8,1这样输入的命令已经足够了。那么我可以认为,这个特定命令的唯一问题是它只加载程序,而不能自动运行程序吗?如果是这样,你有几种解决方案:

  1. 如果是机器语言程序,则应输入 LOAD"<FILENAME>",8,1:,然后(不要按下<RETURN>),再按 <SHIFT>+<RUN/STOP>

  2. 如果是BASIC程序,则应输入LOAD"<FILENAME>",8:,然后(不要按下<RETURN>),再按<SHIFT>+<RUN/STOP>

  3. 可以编写一个BASIC程序,使其在使用LOAD"<FILENAME>",8,1加载时自动运行。要实现此功能,请首先在程序开头添加以下行:

    0 POKE770,131:POKE771,164
    

    然后执行以下命令保存程序:

    PRINT"{CLR}":POKE770,113:POKE771,168:POKE43,0;POKE44,3:POKE157,0:SAVE"<FILENAME>",8
    

2
建议3在使用,8加载时无效,只有在使用,8,1时才有效。 - Medo42
抱歉回复晚了 ^^ 选项2正是我想表达的。 - Master of Celebration

8
今日免费次数已满, 请开通会员/明日再来

4

我怀疑没有办法做到这一点;您需要一个处理此情况的插卡,但我认为这样的插卡不存在。


4

虽然不完全相关,但C128可以在C128模式下自动启动磁盘。例如Ultima V(在C64或C128的C64模式下没有音乐)可以自动启动。

至于插卡,我建议使用1541 Ultimate 2。它还可以运行模块rom图像中的游戏(尽管Prince of Persia对我来说无法工作,可能是软件问题?),但你也可以获得相当好的软盘仿真器(这也使得将东西传输到真正的磁盘更容易),REU,磁带接口(如果您订购了它)等。


它还可以自动启动CP/M模式下的磁盘,并自动启动切换到C64模式的C128程序。我认为也可能在几乎 C64模式下自动引导和运行一些C64程序,但这并不是100%兼容的。 - Feneric
如果你有一台128,这是非常相关的。你可以自动启动一个程序以在C64模式下运行。正如你所提到的,C64模式与实际的C64不是100%兼容,但它几乎是99.某些%兼容的。如果你是一个Demo场景黑客,写一个非常先进的游戏,或者以其他方式推动64到极限,你可能会碰到128的64模式不同的角落,但总的来说,你不会注意到任何差异。 - Mark Reed

4
一个更好,更适合的解决方案实际上是“EasyFlash”。 “Retro Replay”通常与自己的ROM一起使用。由于它是一个非常有用的默认ROM,我永远不会将另一个ROM刷新到其中。如果您没有这些插件中的任何一个,则它比“EasyFlash”更昂贵。
目前,我已将“波斯王子”(!)ROM编写到我的“EasyFlash”中,当我打开我的c64时,它会像您要求的那样自动运行。

0
如果你正在使用一个机器学习程序,有几种方法可供选择。如果你不介意在没有RESET的情况下永远返回正常的READY提示符,你可以有一个小加载程序加载到堆栈($0100-$01FF)中。加载程序只需加载下一段代码,然后跳转到它。 它将从$0102开始,并且需要尽可能小。很多时候,下一个要加载的部分只有2个字符,因此文件名可以放置在$0100和$0101。然后,您只需要设置LFS、SETNAM、LOAD,然后JMP到它。用$01填充剩余的堆栈区域。也很安全只保存$0100-$010d,这样整个程序就可以适合单个磁盘块了。
这种方法的一个问题是,它会清除过去的堆栈条目(因此,您的程序将需要将堆栈指针重置回顶部)。如果您的程序试图通过正常的RTS退出本身,则可能会发生随机的事情。如果你想退出程序,你需要跳转到重置向量($FFFC默认值),这样才能做到。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接