Я сохранил следующий оператор данных, каждый элемент в виде строки, в программе C64. Я выбрал 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.
Я сопротивлялся программе, и мой оператор DATA теперь выглядит так:
100 DATA "©","ª","«","¬"," ","®","¯","¶","¼","½","¾",""","",""
Используя другой диалект BASIC, более современный и написанный в последние несколько лет, я вывел CHR$ от 172 до 190:
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).
Надеюсь, это поможет.
person
George McGinn
schedule
10.03.2017