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。
我在 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。