我想将一些二进制数据作为DATA语句存储在Commodore 64上的BASIC程序中。为了节省空间,我更喜欢以字符串形式存储,而不是以数字序列形式存储。
是否可以在DATA语句中存储从CHR$(0)到CHR$(255)的任何字符,或者某些字符不能以这种方式表示?无法在DATA语句中表示的完整字符列表(如果有)是什么?
我特别想知道CHR$(0)、双引号(")、换行符和回车符。如果可以表示这些,如何表示?
发布于 2017-08-25 15:23:14
简短的回答是:不。您说了原因:字符串中的双引号字符会生成一个错误:没有引号转义字符。对于其他值,您可以在数据语句字符串中插入内容,然后再也不使用C64 BASIC编辑器接触这些行,但是双引号会杀死您。
我还没有想出的最好、最快的解决方案是穷人的魔法。它是这样工作的:
颠倒这个过程来读取它们,并将它们戳出来。
发布于 2017-05-09 17:54:21
有一种方法可以做到这一点,你可以直接POKE字节到内存中。但是这有点长,你需要知道你要把字节POKE到哪里。不过,您可以取消在DATA语句中使用大量零的需要,如下所示:
0 FOR I=0 TO 7
1 READ A(I)
2 NEXT I
3 PRINT A(0), A(4)
63998 PRINT "FIN"
63999 DATA ,,,,4,,7,8我们知道2048是基本区域的开始(除非你移动了指针),所以猜测一下,可以这样做:
0 DATA" "," "," "," "," "然后在2050年或2051年左右使用你能识别的字符进行POKE,然后列出它。如果你看到加在双引号之间的字符,那么你就赢了。当然,然后您需要计算引号之间的每个位置。完成后,重新编号您的行号并继续编程。我不确定如何在双引号之间POKE一个双引号,因为据我所知,在Commodore BASIC中没有转义字符串的概念。
不过,我个人只会使用数字。
发布于 2017-03-11 05:48:48
我在C64程序中存储了下面的data语句,每个元素都是一个字符串。我选择了CHR$(172) - CHR$(190),以及两个以上的CHR$(4000)。
100 data "©","ª","«","¬"," ","®","¯","¶","¼","½","¾","™","ח","⦁"我运行了以下代码:
10 FOR X=1 TO 14
20 READ A$
30 PRINT ASC(A$)
40 NEXT X
100 data "©","ª","«","¬"," ","®","¯","¶","¼","½","¾","™","ח","⦁"结果好坏参半。我知道它不会识别任何超过255的值。但CHR$(173)打印为32:
RUN
169
170
171
172
32
174
175
182
188
189
190
?SYNTAX ERROR IN 100
READY.我拒绝了这个程序,我的数据语句现在看起来像这样:
100 DATA "©","ª","«","¬"," ","®","¯","¶","¼","½","¾",""","",""使用另一种基本的方言,一种更现代的方言,在过去几年中写的,这是我172到190的CHR$的输出:
The ASCII value of A is: 65
The ASCII value of A should be 65, like it is on a PC.
If it is not 65, then a conversion table must be loaded
and the results converted to match the PC so code
CHR$ VALUES
—————————————————
CHR$(169)=© CHR$(170)=ª CHR$(171)=« CHR$(172)=¬ CHR$(173)=
CHR$(174)=® CHR$(175)=¯ CHR$(176)=° CHR$(177)=± CHR$(178)=²
CHR$(179)=³ CHR$(180)=´ CHR$(181)=µ CHR$(182)=¶ CHR$(183)=·
CHR$(184)=¸ CHR$(185)=¹ CHR$(186)=º CHR$(187)=» CHR$(188)=¼
CHR$(189)=½ CHR$(190)=¾ 对于C64 BASIC,要么必须使用数字字符串,要么必须使用十六进制值并存储实际字符,就像我在原始C64 DATA语句中所做的那样。
我不知道您认为可以节省多少空间,但最多也就是最少,因为C64不能超过CHR$(255)。
然而,我使用的另一种方言是SmartBASIC,我使用的是CHR$(20480)。
我希望这能帮到你。
https://stackoverflow.com/questions/42009814
复制相似问题