PuTTy能否正确使用ANSI / VT100转义序列?

时间:2013-03-25 16:48:04

标签: putty ansi-escape vt100 68hc12

我正在为飞思卡尔MC9S12C32处理器的HC12组件编写一个程序。我正在使用PuTTy作为通过串口(-over-USB)连接到设备的终端。对于此赋值,我们应该使用VT100 / ANSI转义序列将光标移动到任意位置并写入当前时间然后返回它,以便用户可以键入并将其输入回显。

我正在使用以下序列来保存光标,移动它并返回它。但由于某些原因,PuTTy只是将光标放在左上角而无法返回。

ESC         EQU   $1B ; ASCII ESC
SAVECUR     EQU   $37 ; ASCII 7
RESTCUR     EQU   $38 ; ASCII 8

SaveCursor  PSHA
            LDAA  #ESC             ; Use Escape Sequence
            JSR   putchar
            LDAA  #'['
            JSR   putchar
            LDAA  #SAVECUR         ; To save cursor location
            JSR   putchar
            PULA
            RTS

GotoClkPos  PSHA
            LDAA  #ESC             ; Move Cursor
            JSR   putchar
            LDAA  #'['
            JSR   putchar
            LDAA  #$05             ; To Row 5
            JSR   putchar
            LDAA  #';'
            JSR   putchar
            LDAA  #$05             ; Column 5
            JSR   putchar
            LDAA  #'H'
            JSR   putchar
            PULA
            RTS

RestCursor  PSHA
            LDAA   #ESC            ; Use Escape Sequence
            JSR    putchar
            LDAA   #'['
            JSR    putchar
            LDAA   #RESTCUR        ; To Restore Cursor
            JSR    putchar
            PULA
            RTS

我是否将转义序列编码错误或PuTTy没有像我预期的那样处理它们?

2 个答案:

答案 0 :(得分:1)

您的转义序列错误。你应该从SaveCursor和RestCursor中删除'['(保存光标= ESC +'7',恢复= ESC +'8')。 GotoClkPos似乎还可以。

PuTTY处理VT100命令就好了。虽然我无法获得一些命令,比如隐藏光标。

答案 1 :(得分:0)

Putty 正确处理所有VT100。它为除F1 / F2 / F3之外的所有功能键发送垃圾,并且不能正确处理各种其他接口。我还没有找到一个实际上的好程序,所以我很高兴我有一些愚蠢的终端(但这有多愚蠢?)