标签: c64

在VICE仿真器中加载PRG文件后出现C64内存不足错误

我得到?OUT OF MEMORY ERROR当我试图让磁盘返回后汇编程序的目录列表.

我准备了一个简单的例行程序,只是为了理解发生了什么,例如:

*=$c000

 lda #$00
 sta $d020
 rts
Run Code Online (Sandbox Code Playgroud)

我的构建脚本是:

C:\...\acme0.95.6win\acme.exe --outfile build\ROUTFILE --format cbm RSOURCEFILE
C:\...\tools\WinVICE-2.4-x64\x64.exe build\ROUTFILE
Run Code Online (Sandbox Code Playgroud)

当我运行构建脚本时,模拟器会加载PRG文件.尝试运行它,但没有任何反应,因为我没有包括BASIC加载器.即使在那之后,如果我写入LOAD "$",8目录列表.我到了?OUT OF MEMORY ERROR.那么上面的场景有什么问题呢?


PRG文件的十六进制转储是:

00 c0 a9 00 8d 20 d0 60 
Run Code Online (Sandbox Code Playgroud)

assembly c64

1
推荐指数
2
解决办法
523
查看次数

带有十进制增量的For循环!=.5会产生奇怪的结果

创见

我刚刚找到了我的旧Commodore 64计算机,将它连接起来,并决定再次尝试学习Basic.我刚刚完成了第3章,其中演示了一个简单的FOR循环:

10 FOR NB = 1 TO 10 STEP 1
20 PRINT NB,
30 NEXT NB
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,这会产生以下结果:

1       2       3       4
5       6       7       8
9       10
Run Code Online (Sandbox Code Playgroud)

引入浮点数

当步骤设置为1.0时,上述结果相同.除0.5之外的其他数字会导致问题:

如果我将步长增加到除了 .5(或1)以外的任何值,我会得到奇怪的浮点,显然出现在浮点数设置越低的前面.对于第一次测试,我将NB更改为1 TO 40.

检测结果

  • FOR NB = 1 TO 40 STEP .6:正常结果为1-31,然后为31.6000001.为了看看我是否会得到更奇怪的结果,我将NB增加到100,并且从42s再次看到奇怪的数字:41.2,41,8,42.4,42.9999999,43.5999999等.
  • FOR NB = 1 TO 40 STEP .4:正常结果为1-7.4,然后是7,8000001,然后是正常结果8.2-22.6,然后是22.9999999,23.3999999等.
  • FOR NB = 1 TO 40 STEP .2:正常结果为1-6.2,然后是6.3999999,以.2为增量,直至8.5999999,然后从8.7999998更改为9.9999998,然后是10.2的正常结果.
  • FOR NB = 1 TO 40 STEP .1:正常结果为1-3.6,然后是3.6999999等.
  • FOR NB = 1 TO …

floating-point for-loop basic c64

1
推荐指数
1
解决办法
90
查看次数

遍历字节并将其打印为ascii屏幕

因此,我试图通过将ascciASCIIcode存储在字节数组中来将ASCII打印到屏幕上,但是它只是在屏幕上呈现了很多杂色。

; Message: hello
*=$033C        
        BYTE $48,$45,$49,$49,$4F 
*=$1000
START
    JSR            PRINT_MESSAGE
EXIT
    RTS
PRINT_MESSAGE
    LDX #$00        ; initialize x to 0
    LDA $033C,X     ; grab byte
    JSR $FFD2       ; render text in A with Subroutine:CLRCHN
    INX             ; Incriment X
    CPX #$05        ; We stop at 5
    BNE $1006       ; Else we loop
    RTS
Run Code Online (Sandbox Code Playgroud)

assembly c64 6502

0
推荐指数
1
解决办法
89
查看次数

C64 字符大小

我\xe2\x80\x99刚刚开始在复古游戏领域开发c64。

\n

我\xe2\x80\x99m想知道为什么在c65上一个字符是8个字节,但在现代Web开发中,比如在php中,一个字符只有1个字节

\n

这与 c64 显示的工作原理有关吗?它需要所有数据来生成屏幕上的角色吗?

\n

c64

0
推荐指数
1
解决办法
284
查看次数

解释 10print 中缺少的内容

10 PRINT CHR$(205.5+RND+(1));:GOTO 10 我似乎是唯一一个无法做到这一点的人。我已经编写了各种 BASIC 但我对此无能为力。我缺少什么?我收到“SYNTAX ERROR IN 10”,我无法让它工作,实际上,为什么会这样呢?205 是一个内存地址,所以 5 的值是随机数,但模式从何而来。我们不需要吗?“/”“\”。205.5 产生这些/??? 这没有任何意义。我一定对计算机和 BASIC 有一种极端的误解,但奇怪的是,这并没有阻止我创建正常运行的程序。我也用C编程,但我仍然完全一无所知。从来没有见过这样的工作,似乎有一个隐藏行 1,2,3,4,5,6,7,8,9,没有列出,所以我不知道其余的代码是什么? ??
我尝试过 64mini 和几个模拟器,它们都给出了相同的错误。我是不是中风了,需要去医院吗?也许我再也无法辨别屏幕上看到的东西了,哈哈。

10 打印 CHR$(205.5+RND+(1));:转到 10

basic c64

-1
推荐指数
1
解决办法
88
查看次数

标签 统计

c64 ×5

assembly ×2

basic ×2

6502 ×1

floating-point ×1

for-loop ×1