BBC Basic:在模式 7 中插入控制字符而不占用 space

BBC Basic: Inserting a control character without occupying space in Mode 7

我在 Beeb 上使用模式 7 ("Teletext mode")。我想打印一串中间有彩色文本控制字符的完整字符,按照这个模型:

但是,我不知道如何做到这一点。输出中控制字符需要占用space:

PRINT CHR9;"STACK"CHR2;"OVERFLOW"

我阅读了 held graphics mode,但这似乎只允许我重复上次使用的图形符号,而不是在打印控制字符时插入 space。当我用文本尝试这个时,我只得到一个额外的 space 用于保留的图形字符:

PRINT CHR9;"STACK"CHR8;CHR2;"OVERFLOW"

这可能吗?我可以在不显示 space 的情况下打印控制字符吗?

或者有什么办法可以插入一个控制符后跟一个backspace,来收回占用的space但保留控制码的效果?

这是凭记忆,我记得CHR$(8)将光标向左移动了一位。

将其放在 "O" 之前:

PRINT CHR$(129);"STACK";CHR$(132);CHR$(8);"OVERFLOW"

遗憾的是,我相信我的 BBC 模型 B 在我的 parents' 阁楼里,所以我无法测试它。

好吧,这有点胡扯;但它是我问题的答案,所以我将在这里与所有遇到同样问题的 BBC Micro / Teletext 开发人员分享它...

我的挑战是避免两个彩色单词之间出现明显的 space。控制字符必须存在于文本中并占据一个字符(作为 space 或上次使用的块图形的副本)。

因此,通过在每个字符之间插入一个 space,我能够使文本显示为一个单词(尽管字母间距略大):

PRINT CHR9;"S T A C K"CHR2;"O V E R F L O W"

这对我产生了预期的效果——对其他一些人可能没有。我能看到的唯一其他可用方法是在块图形中呈现整个文本,这将比我选择的方法占用更多的屏幕space。

使用'held graphics'字符时,无法将文本字符视为图形字符。可以在这里找到使用 'held graphics' 的一个很好的例子:http://www.riscos.com/support/developers/bbcbasic/part2/teletext.html

您也不能使用后退space字符返回一个space,因为每个控制代码在屏幕上占用一个space。