z00m128/sjasmplus

Incorrect compilation of DC with one symbol in single quotes

Tolik-Trek opened this issue · 5 comments

Version Platform Topic
v1.20.2 Darwin Kernel Version 23.0.0 pseudo-op

...
When there is one character in single quotes with DC, then DC for that character does not work.
...

1	0000				ORG 0
2	0000	3F 34 B4 B5	DC '?', '4', "4", "5", '5'
2	0004	35
ped7g commented

yes, this seems to be by design

http://z00m128.github.io/sjasmplus/documentation.html#po_dc

Same as BYTE, but every last character of a string will have bit 7 set.

http://z00m128.github.io/sjasmplus/documentation.html#s_strings

String constants are characters surrounded by double quotes.

any particular reason why single quote char constant really should be part of DC? How did you run into this? :)

ped7g commented

checking if the behaviour was my design during rewrite of string parser or legacy design preserved and v1.10.4 (before I started patching sjasmplus) does the same thing, so this is legacy behaviour.

which will make me very reluctant to "fix" this in v1.x to not break anyone's else old project, unless this get very strong reasons why it should be changed.

It is possible that the documentation needs to be supplemented or the behavior of the compiler needs to be changed. In any case, it is necessary to notify users of this in large print)))
lst

ped7g commented

I'm afraid most of the users will still find the hard way, missing the note in docs, but at least now it's shown in the example.

Hope you will not run into too many of those legacy-traps, thank you for reporting.

ped7g commented

@Tolik-Trek after release of 1.20.3 there will be one more new way to do these, instead of DZ or DC it will be possible to add Z or C suffix to string literal to request zero or high bit set, ie.

  DB '\'C, 'A'Z  ; bytes: 0xDC 0x41 0x00