问题标签 [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.

0 投票
3 回答
518 浏览

arrays - commodore 64 basic中的Redim'd数组错误?

我在 commodore 64 基本项目中遇到了 redim'd 数组错误

但是,我没有重新确定我的二维数组的尺寸,也没有不止一次地通过代码行!

错误在第 1140 行

谁能帮我吗?

谢谢!

代码:

0 投票
1 回答
224 浏览

arrays - Bubble sort an array of strings in commodore 4.0 basic?

Working on a bubble sort for an array of strings in commodore 4.0 basic; can anyone help me out?

I have the 'main' part of the algorithim so far but I am confused on how to make it a subroutine because how would I make the array of strings a parameter so that I can call upon it afterwards?

0 投票
1 回答
977 浏览

c64 - 如何在引号内但在 commodore 64 basic v.2.0 中打印引号

我正在写一个小小的爱好 c64 文字冒险,我已经停在一个非常具体的时刻。也就是说,我不知道如何引用引号内的任何内容。

如何在 Commodore 64 basic v.2.0. 中做到这一点?

0 投票
3 回答
2007 浏览

assembly - 使用 xa65 汇编器创建 Commodore 64 .prg

我正在尝试学习 6510 汇编,因为我正在运行 Debian xa65 是我想要使用的汇编程序。

到目前为止,我已经编写了一段代码,如下所示:

现在,第一个 .byte 部分应该在加载后“自动启动”程序。这是我从教程中找到的,据我所知,它只会运行 SYS 4096 使 CPU 开始执行地址为 $1000 的代码

其余代码应该只是开始闪烁 C64 的外边界和内边界并永远重复。

组装时,我只需运行以下命令:

然后我尝试将 test.prg 加载到 VICE 中进行测试。使用 LOAD "TEST.PRG",8,1: 并且即使文件加载它也不会自动启动,如果我键入 RUN: 并且如果我键入 LIST: 则不会发生任何事情:-唯一的结果是著名的 READY。光标像往常一样愉快地闪烁。

我试图删除自动启动的东西,只组装从 *=$1000 开始的代码,但我得到了相同的结果。尝试从 SYS 4096 开始也会导致 READY,仅此而已。

我确定我没有正确使用 xa 汇编程序,但我不知道如何为 C64 创建合适的 PRG 文件以供使用。我究竟做错了什么?

0 投票
2 回答
313 浏览

6502 - 如何运行反汇编代码6502?

我必须在组装 6502 中进行编程。我被迫使用仿真器 Vice 128 我被告知 Commodore 128 与 6502 的指令兼容 我是新手,我做了一个实际演示,但我什么都不懂。有一个 80 列的接口,它通过一个命令(哪个?) 机器语言或汇编(程序)的指令直接输入到这个 80 列的矩阵上。数据也被输入到这个矩阵中。那么这个矩阵是内存吗?每条线代表什么?有人告诉我这是反汇编代码6502。但我不知道这是什么意思我很困惑

我想运行这个简单的程序来执行两个数字的总和。这两个数字分别存储在第一页的字零和字一中。我想将结果存储在第一页的第二个单词中。我想象第一行包含 80 个单词。那正确吗?所以我把数据以十六进制(3和2)放在这里。

但我有一个语法错误。我希望有人可以帮助我,因为它使我无法理解事情的运作方式。提前致谢

0 投票
0 回答
355 浏览

sfml - SFML 和 PN 噪声(8 位仿真)

我有编写 Commodore VIC-20 仿真器的荒谬想法,这是我的第一台计算机。

一切都很顺利,直到声音仿真时间到来!VIC-20 有 3 个声音(方波)和一个噪声扬声器。在网上搜索我发现它是一个 PN 发生器(在某处被称为“白”噪声)。

我知道白噪声不是频率驱动的,但是您将特定的频率值放入噪声寄存器(POKE 36877,X命令)中。公式为:

频率 = cpu_speed/(127 - x)

(VIC-20 Programmer's Guida的更多细节,尤其是MOS6560/6561 VIC-I芯片)

其中 x 是噪声寄存器的 7 位值(第 8 位是噪声开/关开关)

我有一个 1024 个预先生成的数字缓冲区(伪随机序列),问题是:如何关联频率(freq)以创建一个样本缓冲区以传递给声卡(在这种情况下sf::SoundBuffer接受sf::Int16(又名unsigned short)价值观?

我想你们中的大多数人家里都有 Commodore VIC-20 或 C64 并使用旧POKE指令......你们中的任何人都可以帮助我理解这一步吗?

编辑:

在互联网上搜索,我找到了 C64 Programmer's Guida,它显示了其噪声发生器的波形图。谁能认出这种波/扰动等……?波形似乎是周期性的(以频率为周期),但是如何生成这样的波形呢?

C64 噪声波形

0 投票
1 回答
367 浏览

emulation - 6502 在独立测试与 Commodore PET 中的中断行为

我正在 FPGA 上构建 Commodore PET。我在 Kansas Lava 中实现了我自己的 6502 核心(代码可在https://github.com/gergoerdi/mos6502-kansas-lava获得),并在其周围放置足够的 IO(https://github.com/gergoerdi /eightbit-kansas-lava ) 我能够在上面启动原始 Commodore PET ROM,得到一个闪烁的光标并开始输入。

但是,在输入经典的 BASIC 程序后

它会在一段时间后(几秒钟后)崩溃

因为我的代码具有相当合理的每个操作码测试覆盖率,并且它通过了AllSuiteA,所以我想我会研究更复杂行为的测试,这就是我到达Klaus Dormann 的中断测试套件的方式。在堪萨斯熔岩模拟器中运行它指出了我最初的中断实现中的大量错误:

  • I进入中断处理程序时未设置标志
  • B到处都是旗帜
  • IRQ 中断被完全忽略,除非I它们到达时未设置(正确的行为似乎是在设置时将中断排队I,当它未设置时,仍应处理它们)

修复这些之后,我现在可以成功运行 Klaus Dormann 测试,所以我希望通过将我的机器重新加载到真正的 FPGA 上,如果运气好的话,BASIC 崩溃可能会消失。

然而,新版本修复了所有这些中断错误,并在模拟器中通过了中断测试,现在无法响应键盘输入,甚至只是在真实 FPGA 上闪烁光标。请注意,键盘输入和光标闪烁都是响应外部 IRQ(从屏幕 VBlank 信号连接)完成的,因此这意味着固定版本以某种方式破坏了所有中断处理......

我正在寻找任何可能出现问题或如何开始调试的模糊建议。

完整代码可在https://github.com/gergoerdi/mos6502-kansas-lava/tree/interrupt-rewrite获得,有问题的提交(修复测试并破坏 PET 的提交)是7a09b794af。我意识到这与最小可行复制完全相反,但改变本身很小,因为我不知道哪里出了问题,而且因为复制问题需要一台功能足以启动库存 Commodore PET ROM 的机器,我不不知道怎么缩小...

添加:

我设法用一个非常简单(我敢说是最小的)ROM而不是库存的PET ROM在相同的硬件上重现了同样的问题:

0 投票
1 回答
499 浏览

self-modifying - 如何在具有独立 ROM 和 RAM 的真实硬件上运行 Klaus Dormann 的 6502 测试套件

我想运行Klaus Dormann 的完整 6502 测试套件来测试我的 Kansas Lava 6502 实现。然而,代码使用了自我修改(参见 的所有用法range_adr),虽然在仿真器中实现微不足道,但对于硬件实现来说并不是一个好兆头:程序映像需要存储在 ROM 上,因此回写将被基于寻址 ROM 或 RAM 支持的部分写入的任何路由写入黑洞。

当然,同样的问题既适用于将它合成到真正的 FPGA 中,也适用于在模拟器中运行它(低级 VHDL 或高级堪萨斯熔岩)。

有没有一种方法可以运行测试套件,而不需要长时间(就周期而言)暂停 CPU,将程序从一些不可寻址的 ROM 逐字节复制到全 RAM 内存中,然后初始化 CPU 和让它运行?我不想这样做,因为在启动时模拟这些额外的周期会大大减慢运行测试的速度。

0 投票
2 回答
753 浏览

assembly - Commodore PET BASIC 从 $00C2 起组装什么?

我发现的 PET 的零页内存映射声称零页地址范围$00C2..$00D9用于静态数据,例如http://www.classiccmp.org/dunfield/pet/petmem.txt说:

但是,查看ROM反汇编,可以找到地址$00C2跳转的地方,例如http://www.zimmers.net/anonftp/pub/cbm/firmware/computers/pet/d/rom-1.html# C70A

查看$00C2启动 PET 后开始的反汇编,我可以看到看起来合理的代码:

这个区域是做什么用的?将这个程序组装到这个区域的代码在哪里?这段代码应该做什么?(它似乎正在扫描从$0400for:characters 开始的区域?)

0 投票
1 回答
292 浏览

retro-computing - 将 Commodore 64 连接到高清电视

从那天起,我就拥有 Commodore Vic 20 和 Commodore 64。它们都可以工作,但我想将它们连接到高清电视。(1) 这可能吗?(2) 连接高清电视需要哪些电缆?

提前致谢。