我得到?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) 我刚刚找到了我的旧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 …因此,我试图通过将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) 我\xe2\x80\x99刚刚开始在复古游戏领域开发c64。
\n我\xe2\x80\x99m想知道为什么在c65上一个字符是8个字节,但在现代Web开发中,比如在php中,一个字符只有1个字节
\n这与 c64 显示的工作原理有关吗?它需要所有数据来生成屏幕上的角色吗?
\n10 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