问题标签 [commodore]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
assembly - 这是C64 6502总成的什么方言?
这是 6502 Assembly 的什么方言,我如何编译它而不将其翻译成不同的 6502 方言?
我目前使用 CC65 作为我的 6502 汇编器。
我编译我的代码如下:
但这意味着我必须对上面的代码进行编辑,所以它现在看起来像这样。
这是我的c64-asm.cfg
assembly - 6502 (Commodore 64) 中的精灵指针
所以我试图设置我的精灵指针,但我似乎无法找到如何去做。
我知道如果我想将指针设置为$2000,我应该将指针 ( $07F8 ) 设置为#$80,因为 40 * 80 = 2000。但是如果我的精灵二进制文件在上部 ram:$C000,我不能这样做,因为那将是#$300,而且太大了。
6502 - *等待*按键并获取其矩阵或PETSCII代码的简单方法?
我找到了一些与获取按键/线路相关的 BASIC 和 KERNAL 函数和内存地址,但是我怎样才能简单地等待按键并获取其代码?我想暂停执行,一旦按下一个键就恢复。我不希望他们在执行期间排队。
audio - 为什么在旧硬件中使用方波而不是正弦波?
这里的答案假设要实际生成方波(或任何其他抽象波形),您必须将多个正弦波叠加在一起。然而,旧硬件(Commodore、NES 等)缺乏正弦波通道,而是严重依赖方脉冲波、三角波、噪声和锯齿波。我一直认为这样做是因为这些波比简单的正弦波更容易生成。那么,生成这些波形不会在计算上更加昂贵吗?为什么还是做了?
assembly - C64 Assembly - 循环通过位图作为我的游戏的图形介绍
汇编:CBM prg Studio
这是我之前的帖子,我觉得我已经取得了一些进展,但仍然非常卡住。 我之前的帖子在几个阶段前就这个问题请求帮助......从乐于助人的社区成员Emir Akayd提交的答案中,我选择了选项 1。
目前我只是使用 TEST JUMPER 来尝试每个图像,并希望在每个加载的图像和初始化到我的游戏之间移动到一个计时器。
我认为这里的解决方案现在对更高级的程序员来说应该是显而易见的。我认为我必须在不那么明显的加载屏幕 Ram 部分或稍后在标签“设置”下的代码中做一些愚蠢的事情,我的评论应该解释一切。
对任何建议都很满意,非常感谢您的关注!
basic - 如何在 BASIC V2 中“操作”字符串?
我想达到以下内容:我向用户询问一个数字,然后输出如下字符串:
-STR$
--STR$
---STR$
----STR$
-----STR$
我试图这样做:
上面的代码给了我一个错误:?TYPE MISMATCH EROR IN 20
但是,我还没有弄清楚如何操作字符串的开头以在每次循环运行时乘以“-”标记
serial-port - 不同调制解调器的 RS232 例程有何不同?
我一直在进行大量调试,试图让一个围绕 1660/1670 调制解调器构建的旧 BBS 程序与tcpser
. 这让我想到:对于许多终端程序,它们有不同的调制解调器选项(例如 1670、1660、RS-232、SwiftLink 等)。
我假设使用 SwiftLink 和其他基于 UART 的接口,与调制解调器交互的整个机制是不同的,因为这些接口使用盒式端口。(旁注:有谁知道从哪里可以获得这些基于 UART 的设备的编程信息)。但是对于那些插入 USER 端口的设备,为什么会有不同的驱动程序/选项?都是非标准的吗?
我希望回答上述问题将有助于调试;tcpser
看起来正在模拟标准 RS-232 接口,如果常规 RS-232 和 1670 之间存在实质性差异,那可能会为我指明为什么事情不工作的方向。
谢谢。
c64 - Commodore C64 如何检测 PAL 或 NTSC
背景资料
我目前正在使用 KickC [测试版] 为 Commodore C64 开发一个编程 API,让我能够更轻松地开发小程序、应用程序和可能的一些游戏;我突然想到我可能需要一种方法来检查我的代码是在 PAL 还是 NTSC 机器上运行,在后一种情况下,是哪个 NTSC 机器,因为旧的 NTSC C64 的扫描线比新的 C64 版本少一个。
在寻求帮助后,Robin Harbron 给我发了一个代码片段,其中包括连接 CMD SuperCPU(我的最终目标机器)。由于他将其作为汇编发送,我不得不按原样使用大部分内容,但使用 KickC 中的 ASM 指令,如下所示:
在我的脚本顶部,我有这样的getMachineType
全局声明:
目前,我的peek()
功能是这样的:
所以现在我可以确定运行我的程序的主机上可用的扫描行数,从而更容易地创建 PAL 和 NTSC 兼容的可执行文件。
KickC 可从CSDb.dk下载,并将使用Kick Assembler构建和组装
commodore - 如何重新定位 65816 上的零页面
背景资料
作为一个对 8 位技术有过兴趣的现代 PHP 开发人员,我对真正的低级东西有点粗略。虽然我曾使用过 Z80 处理器,并在大学完成了一些 MIP 组装,但我对 65x 处理器系列的了解最少。
我想要达到的目标
我想要做的是将我的应用程序的零页面重新定位到 0xd300 - 我有一个强制性的互联网搜索,但我无法找到一个我能够理解的好例子。我在 65c02 但在 65816 处理器上工作;感谢一位朋友,我发现您只能在本机模式下重新定位零页面,而不是模拟模式,因为 65c02 不支持它。这不是问题,因为我可以切换到本机模式来执行我正在做的事情,并在我想优雅地返回到 BASIC 时恢复到仿真模式(嗯,不仅仅是我知道的)。
如果有人也可以提供 8502 (Commodore C128) 的示例,我知道它有一个可重定位的零页。我知道这是两个问题,但这与我想做的事情有关。