1

我正在为飞思卡尔 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 没有按我的预期处理它们?

4

2 回答 2

1

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

PuTTY 可以很好地处理 VT100 命令。尽管我无法使某些命令正常工作,例如隐藏光标。

于 2013-04-12T14:53:17.910 回答
0

Putty无法处理所有 VT100 的权利。它为 F1/F2/F3 以外的所有功能键发送垃圾,并且不能正确处理各种其他接口。我还没有找到一个真正能做到的好程序,所以我很高兴我有几个愚蠢的终端在乱跑(但这有多愚蠢?)

于 2013-04-27T18:07:48.350 回答