diff --git a/x65.cpp b/x65.cpp index e74fea3..b7d8764 100644 --- a/x65.cpp +++ b/x65.cpp @@ -3073,6 +3073,16 @@ void Section::AddText(strref line, strref text_prefix) { if (CheckOutputCapacity((uint32_t)line.get_len()) == STATUS_OK) { if (!text_prefix || text_prefix.same_str("ascii")) { AddBin((const uint8_t*)line.get(), (int)line.get_len()); + } else if (text_prefix.same_str("c64screen")) { + while (line) { + char c = line.get_first(), o = c; + if (c >= 'a' && c <= 'z') { o = c - 'a' + 1; } + else if (c == '@') { o = 0; } + else if (c == '[') { o = 27; } + else if (c == ']') { o = 29; } + AddByte(o >= 0x60 ? ' ' : o); + ++line; + } } else if (text_prefix.same_str("petscii")) { while (line) { char c = line[0]; @@ -5778,7 +5788,8 @@ StatusCode Asm::ApplyDirective(AssemblerDirective dir, strref line, strref sourc } while (line[0] != '"') { strref word = line.get_word_ws(); - if (word.same_str("petscii") || word.same_str("petscii_shifted")) { + if (word.same_str("petscii") || word.same_str("petscii_shifted") || + word.same_str("c64screen")) { text_prefix = line.get_word_ws(); line += text_prefix.get_len(); line.skip_whitespace();