# 终端模块
![恐怕这就是我的终端了](item:tis3d:terminal_module)

终端模块提供了一种比[键盘模块](keypad_module.md)更高级的输入方式， 也同时具有比[显示模块](display_module.md)更具体的输出方式。

用户可以输入一行文本，当文本提交时将会逐字符写入到终端模块的全部四个端口。字符将会被根据标准代码页437（codepage437）转化为数字值。在整行被传输完毕之前，后续的输入提交将会被禁用。输入框会变灰，输入光标会停止闪烁来指示禁用状态。但在这个状态下仍然可以输入更多文本等待再次提交。

值会持续被其所有四个端口读取。接收到的值会被截断为低8位（0xFF为掩码）并且被解释为codepage437中的字符，有一小部分编码例外，它们会被解释为控制字符。这些控制字符包括：
-`\a`（响铃，0x07）
-`\b`（退格，0x08）
-`\t`（tab缩进，0x09）
-`\n`和`\r`（都是换行，0x0A和0x0D）

如果当前行的输入指示达到了长度极限，并且有值被读入，就会换新行（自动换行）。如果在屏幕能显示的最后一行换行，所有行都会向上滚动一次，丢弃第一行。

当前处理的输入行中的一个值只会被发送到一个端口，即值不会被复制；即使一个[控制器](../block/controller.md)周期内发生多次读取操作，最终也只会有一次操作成功。
