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

时间:2016-07-29 15:23:29

标签: bbc-micro teletext

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

Example string of coloured teletext characters

但是,我无法完成如何做到这一点。控制字符需要在输出中占用空间:

PRINT CHR$129;"STACK"CHR$132;"OVERFLOW"

Output with the unwanted space

我读了held graphics mode,但这似乎只允许我重复上次使用的图形符号,而不是在打印控制字符时插入空格。当我尝试使用文本时,我只为获得的图形字符获得了额外的空间:

PRINT CHR$129;"STACK"CHR$158;CHR$132;"OVERFLOW"

enter image description here

这可能吗?我可以在没有可见空间的情况下打印控制角色吗?

或许有一种方法可以插入一个控制字符后跟一个退格区,以声明回占用空间但保留控制代码效果?

3 个答案:

答案 0 :(得分:2)

使用“保留图形”字符时,无法将文本字符视为图形字符。可以在此处找到使用“保持图形”的一个很好的示例:http://www.riscos.com/support/developers/bbcbasic/part2/teletext.html

您也无法使用退格符返回一个空格,因为每个控制代码占用屏幕上的一个空格。

答案 1 :(得分:1)

好的,这有点像软糖;但它是我的问题的答案所以我将在这里分享所有那些BBC Micro / Teletext开发人员在同样的问题上挣扎...

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

因此,通过在每个字符之间插入一个空格,我可以使文本显示为一个单词(虽然字母间距略有过多):

PRINT CHR$129;"S T A C K"CHR$132;"O V E R F L O W"

Workaround with spacing

这对我有了预期的效果 - 对其他人来说可能没有。我能看到的唯一另一条路线是以块图形渲染整个文本,这比我定居的方法占用的屏幕空间要多得多。

答案 2 :(得分:0)

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

将它放在"O"

之前

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

可悲的是,我相信,我的BBC模型B是在我的父母身上。阁楼,所以我无法测试。