VT100TerminalView.st
author penk
Wed, 18 Sep 2002 18:07:10 +0200
changeset 2194 d008bb991def
parent 2192 5f3bf896d334
child 2202 263eab24b870
permissions -rw-r--r--
adding comments
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1361
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
     1
"
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
     2
 COPYRIGHT (c) 1998 by eXept Software AG
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
     3
              All Rights Reserved
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
     4
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
     5
 This software is furnished under a license and may be used
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
     6
 only in accordance with the terms of that license and with the
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
     8
 be provided or otherwise made available to, or used by, any
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
     9
 other person.  No title to or ownership of the software is
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
    10
 hereby transferred.
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
    11
"
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
    12
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
    13
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
    14
2076
60558bc12d09 public access to filterStream;
Michael Beyl <mb@exept.de>
parents: 1667
diff changeset
    15
"{ Package: 'stx:libwidg2' }"
60558bc12d09 public access to filterStream;
Michael Beyl <mb@exept.de>
parents: 1667
diff changeset
    16
930
3186aa6efe72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
    17
TerminalView subclass:#VT100TerminalView
998
4915be34a1d7 state instvar moved
Claus Gittinger <cg@exept.de>
parents: 978
diff changeset
    18
	instanceVariableNames:'currentParam parameters lastCursorLine'
920
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	classVariableNames:''
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	poolDictionaries:''
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
	category:'Views-TerminalViews'
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
!
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    24
!VT100TerminalView class methodsFor:'documentation'!
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    25
2116
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    26
ansiEscapes
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    27
"
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    28
                              ANSI ESCAPE SEQUENCES
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    29
===============================================================================
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    30
Wherever you see '#', that should be replaced by the appropriate number.
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    31
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    32
        ESC code sequence                       Function
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    33
       -------------------              ---------------------------
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    34
Cursor Controls:
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    35
         ESC[#;#H or ESC[#;#f           Moves cusor to line #, column #
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    36
         ESC[#A                         Moves cursor up # lines
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    37
         ESC[#B                         Moves cursor down # lines
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    38
         ESC[#C                         Moves cursor forward # spaces
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    39
         ESC[#D                         Moves cursor back # spaces
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    40
         ESC[#;#R                       Reports current cursor line & column
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    41
         ESC[s                          Saves cursor position for recall later
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    42
         ESC[u                          Return to saved cursor position
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    43
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    44
Erase Functions:
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    45
         ESC[2J                         Clear screen and home cursor
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    46
         ESC[K                          Clear to end of line
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    47
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    48
Set Graphics Rendition:
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    49
         ESC[#;#;....;#m                Set display attributes where # is
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    50
                                            0 for normal display
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    51
                                            1 for bold on
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    52
                                            4 underline (mono only)
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    53
                                            5 blink on
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    54
                                            7 reverse video on
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    55
                                            8 nondisplayed (invisible)
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    56
                                            30 black foreground 
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    57
                                            31 red foreground 
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    58
                                            32 green foreground 
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    59
                                            33 yellow foreground 
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    60
                                            34 blue foreground 
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    61
                                            35 magenta foreground 
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    62
                                            36 cyan foreground 
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    63
                                            37 white foreground
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    64
                                            40 black background
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    65
                                            41 red background
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    66
                                            42 green background
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    67
                                            43 yellow background
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    68
                                            44 blue background
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    69
                                            45 magenta background
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    70
                                            46 cyan background
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    71
                                            47 white background
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    72
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    73
         ESC[=#;7h or                   Put screen in indicated mode where # is
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    74
         ESC[=h or                          0 for 40 x 25 black & white
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    75
         ESC[=0h or                         1 for 40 x 25 color
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    76
         ESC[?7h                            2 for 80 x 25 b&w
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    77
                                            3 for 80 x 25 color
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    78
                                            4 for 320 x 200 color graphics
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    79
                                            5 for 320 x 200 b & w graphics
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    80
                                            6 for 640 x 200 b & w graphics
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    81
                                            7 to wrap at end of line 
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    82
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    83
         ESC[=#;7l or ESC[=l or         Resets mode # set with above command
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    84
         ESC[=0l or ESC[?7l
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    85
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    86
Keyboard Reassignments:
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    87
         ESC[#;#;...p                   Keyboard reassignment. The first ASCII
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    88
         or ESC[""string""p               code defines which code is to be 
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    89
         or ESC[#;""string"";#;           changed. The remaining codes define
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    90
            #;""string"";#p               what it is to be changed to.
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    91
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    92
         E.g. Reassign the Q and q keys to the A and a keys (and vice versa).
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    93
         ESC [65;81p                    A becomes Q
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    94
         ESC [97;113p                   a becomes q
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    95
         ESC [81;65p                    Q becomes A
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    96
         ESC [113;97p                   q becomes a
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    97
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    98
         E.g. Reassign the F10 key to a DIR command.
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    99
         ESC [0;68;""dir"";13p            The 0;68 is the extended ASCII code 
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   100
                                        for the F10 key and 13 is the ASCII
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   101
                                        code for a carriage return.
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   102
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   103
         Other function key codes       F1=59,F2=60,F3=61,F4=62,F5=63
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   104
                                        F6=64,F7=65,F8=66,F9=67,F10=68
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   105
"
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   106
!
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   107
1361
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
   108
copyright
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
   109
"
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
   110
 COPYRIGHT (c) 1998 by eXept Software AG
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
   111
              All Rights Reserved
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
   112
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
   113
 This software is furnished under a license and may be used
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
   114
 only in accordance with the terms of that license and with the
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
   115
 inclusion of the above copyright notice.   This software may not
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
   116
 be provided or otherwise made available to, or used by, any
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
   117
 other person.  No title to or ownership of the software is
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
   118
 hereby transferred.
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
   119
"
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
   120
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
   121
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
   122
!
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
   123
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   124
documentation
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   125
"
1418
32a6131b304b documentation
Claus Gittinger <cg@exept.de>
parents: 1361
diff changeset
   126
    A VT100 terminal emulator.
32a6131b304b documentation
Claus Gittinger <cg@exept.de>
parents: 1361
diff changeset
   127
    Most of the functionality is inherited from my superclass,
32a6131b304b documentation
Claus Gittinger <cg@exept.de>
parents: 1361
diff changeset
   128
    I redefine/specialize certain methods for VT100 escape sequences
32a6131b304b documentation
Claus Gittinger <cg@exept.de>
parents: 1361
diff changeset
   129
    and vt100 keyboard codes
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   130
1419
55972fc3268f documentation
Claus Gittinger <cg@exept.de>
parents: 1418
diff changeset
   131
    BUGS:
55972fc3268f documentation
Claus Gittinger <cg@exept.de>
parents: 1418
diff changeset
   132
        VT100 wrapMode (at right margin) is not supported
55972fc3268f documentation
Claus Gittinger <cg@exept.de>
parents: 1418
diff changeset
   133
        this may lead to wrong display when a vi is started in a small window.
55972fc3268f documentation
Claus Gittinger <cg@exept.de>
parents: 1418
diff changeset
   134
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   135
    [start with:]
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   136
        VT100TerminalView openShell
1418
32a6131b304b documentation
Claus Gittinger <cg@exept.de>
parents: 1361
diff changeset
   137
32a6131b304b documentation
Claus Gittinger <cg@exept.de>
parents: 1361
diff changeset
   138
    [see also:]
32a6131b304b documentation
Claus Gittinger <cg@exept.de>
parents: 1361
diff changeset
   139
        VT52TerminalView
32a6131b304b documentation
Claus Gittinger <cg@exept.de>
parents: 1361
diff changeset
   140
        TelnetTool
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   141
"
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   142
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   143
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   144
! !
920
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
932
af0236d38242 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 930
diff changeset
   146
!VT100TerminalView methodsFor:'defaults'!
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   147
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   148
vt100KeyCodes
1420
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   149
    "return a vt100 keyCode table"
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   150
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   151
    ^ IdentityDictionary withKeysAndValues:
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   152
        #(
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   153
             #CursorUp    '\e[A'
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   154
             #CursorDown  '\e[B'
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   155
             #CursorRight '\e[C'
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   156
             #CursorLeft  '\e[D'
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   157
             #Home        '\e[H'
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   158
             #Escape      '\e'
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   159
             #BackSpace   '\b'
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   160
             #Return      '\r'
976
40af522dda86 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 956
diff changeset
   161
             #Delete      '\0177'
1357
8e7e0d17389e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1355
diff changeset
   162
             #Tab         '\t'
1352
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   163
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   164
             #F1          '\eOP'
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   165
             #F2          '\eOQ'
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   166
             #F3          '\eOR'
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   167
             #F4          '\eOS'
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   168
             #F5          '\eOt'
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   169
             #F6          '\eOu'
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   170
             #F7          '\eOv'
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   171
             #F8          '\eOl'
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   172
             #F9          '\eOw'
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   173
         )
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   174
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   175
    "Created: / 10.6.1998 / 15:13:01 / cg"
1357
8e7e0d17389e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1355
diff changeset
   176
    "Modified: / 5.5.1999 / 15:01:32 / cg"
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   177
! !
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   178
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   179
!VT100TerminalView methodsFor:'functions'!
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   180
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   181
addLines
1420
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   182
    "Add the appropriate number of blank lines (param 1) 
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   183
     at the cursor position."
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   184
1420
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   185
    self addLines:((parameters at:1) max:1).
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   186
    self endOfSequence
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   187
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   188
    "Created: / 10.6.1998 / 14:48:03 / cg"
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   189
!
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   190
1420
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   191
addLines:aNumber
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   192
    "Add aNumber blank lines at the position indicated by the cursor."
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   193
1420
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   194
    aNumber timesRepeat:[
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   195
        self insertLine:'' before:cursorLine
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   196
    ]
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   197
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   198
    "Created: / 10.6.1998 / 14:49:30 / cg"
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   199
!
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   200
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   201
autoMargin:aBoolean
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   202
    "set/clear autowrap at end of line (not yet implemented)"
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   203
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   204
    "Created: / 12.6.1998 / 21:42:06 / cg"
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   205
!
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   206
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   207
clearLines:arg
1420
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   208
    "Clear some part of the current line, as indicated by the first parameter:
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   209
     0 - clear to EOL
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   210
     1 - clear from beginning to cursorCol
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   211
     2 - clear entire line
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   212
    "
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   213
1001
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   214
    arg = 0 ifTrue: [^self doClearToEndOfLine].
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   215
    arg = 1 ifTrue: [^self doClearFromBeginningOfLine].
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   216
    arg = 2 ifTrue: [^self doClearEntireLine]
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   217
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   218
    "Created: / 10.6.1998 / 14:44:22 / cg"
1001
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   219
    "Modified: / 21.7.1998 / 20:07:42 / cg"
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   220
!
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   221
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   222
deleteCharacters
1420
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   223
    "Delete the appropriate number of characters (param 1)
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   224
     at the cursor position."
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   225
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   226
    |n|
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   227
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   228
    n := ((parameters at: 1) max: 1).
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   229
    self deleteFromLine:cursorLine col:cursorCol toLine:cursorLine col:cursorCol+n-1.
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   230
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   231
    "Created: / 12.6.1998 / 21:19:02 / cg"
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   232
    "Modified: / 12.6.1998 / 21:19:15 / cg"
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   233
!
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   234
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   235
displayMode:p1
1420
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   236
    "Set the current display mode (emphasis) as specified by param 1."
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   237
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   238
    |clrName|
1352
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   239
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   240
1020
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   241
"/    self endEntry.
1352
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   242
    p1 == 1 ifTrue:[
951
a9e48f549763 fixed scroll-range
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   243
        "/ ESC-[-1-m  -> bold
a9e48f549763 fixed scroll-range
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   244
1287
48e6c847a554 use red color instead of bold
Claus Gittinger <cg@exept.de>
parents: 1056
diff changeset
   245
        "/ workaround: windows bold fonts are
48e6c847a554 use red color instead of bold
Claus Gittinger <cg@exept.de>
parents: 1056
diff changeset
   246
        "/ wider, leading to ugly looking output
48e6c847a554 use red color instead of bold
Claus Gittinger <cg@exept.de>
parents: 1056
diff changeset
   247
        "/ Therefore, use red color instead of bold
1667
54c87dace343 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1420
diff changeset
   248
        device platformName = 'WIN32' ifTrue:[
1287
48e6c847a554 use red color instead of bold
Claus Gittinger <cg@exept.de>
parents: 1056
diff changeset
   249
            self color:Color red.
48e6c847a554 use red color instead of bold
Claus Gittinger <cg@exept.de>
parents: 1056
diff changeset
   250
        ] ifFalse:[
48e6c847a554 use red color instead of bold
Claus Gittinger <cg@exept.de>
parents: 1056
diff changeset
   251
            self bold.
48e6c847a554 use red color instead of bold
Claus Gittinger <cg@exept.de>
parents: 1056
diff changeset
   252
        ].
951
a9e48f549763 fixed scroll-range
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   253
        ^ self.
a9e48f549763 fixed scroll-range
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   254
    ].
1352
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   255
    p1 == 4 ifTrue:[
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   256
        "/ ESC-[-4-m  -> underline
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   257
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   258
        self underline.
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   259
        ^ self.
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   260
    ].
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   261
    p1 == 5 ifTrue:[
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   262
        "/ ESC-[-5-m  -> blink
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   263
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   264
        self color:Color blue.
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   265
        ^ self.
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   266
    ].
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   267
    p1 == 7 ifTrue:[
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   268
        "/ ESC-[-7-m  -> reverse
951
a9e48f549763 fixed scroll-range
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   269
978
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   270
        self reverse.
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   271
        ^ self.
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   272
    ].
2116
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   273
    p1 == 8 ifTrue:[
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   274
        "/ ESC-[-8-m  -> invisible
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   275
        ^ self.
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   276
    ].
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   277
    (p1 between:30 and:37) ifTrue:[
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   278
        "/ ESC-[-30-m  -> black fg color
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   279
        "/ ESC-[-31-m  -> red   fg color
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   280
        "/ ...
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   281
        "/ ESC-[-37-m  -> white fg color
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   282
        clrName := #(black red green yellow blue magenta cyan white) at:(p1-30+1).
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   283
        self color:(Color perform:clrName).
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   284
        ^ self.
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   285
    ].
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   286
    (p1 between:40 and:47) ifTrue:[
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   287
        "/ ESC-[-40-m  -> black bg color
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   288
        "/ ...
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   289
        "/ ESC-[-47-m  -> white bg color
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   290
        clrName := #(black red green yellow blue magenta cyan white) at:(p1-40+1).
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   291
        self bgColor:(Color perform:clrName).
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   292
        ^ self.
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   293
    ].
1020
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   294
978
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   295
    "/ ESC-[-any-m  -> normal
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   296
    self normal.
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   297
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   298
    "Created: / 10.6.1998 / 15:01:16 / cg"
1352
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   299
    "Modified: / 5.5.1999 / 00:53:15 / cg"
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   300
!
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   301
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   302
doClearDisplay:arg
1420
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   303
    "Clear some part of the current screen, as indicated by the first parameter.
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   304
     0 - clear to endOfScreen
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   305
     1 - clear from beginning of screen to cursorCol
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   306
     2 - clear entire screen
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   307
    "
1001
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   308
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   309
    arg = 0 ifTrue: [^self doClearToEndOfScreen].
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   310
    arg = 1 ifTrue: [^self doClearFromBeginningOfScreen].
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   311
    arg = 2 ifTrue: [^self doClearEntireScreen]
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   312
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   313
    "Created: / 21.7.1998 / 20:05:07 / cg"
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   314
    "Modified: / 21.7.1998 / 20:07:36 / cg"
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   315
!
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   316
1020
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   317
insertCharacters
1420
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   318
    "Insert the appropriate number of spaces (param 1) at the cursor position."
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   319
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   320
    |s|
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   321
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   322
    s := String new:((parameters at: 1) max: 1).
1420
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   323
    self insertStringWithoutCRs:s atLine:cursorLine col:cursorCol.
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   324
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   325
    "Modified: / 12.6.1998 / 21:14:25 / cg"
1020
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   326
    "Created: / 28.7.1998 / 00:53:51 / cg"
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   327
!
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   328
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   329
move
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   330
    "Move to the locations indicated by the first and second parameters."
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   331
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   332
    self moveToX: ((parameters at: 2) ? 1) y: ((parameters at: 1) ? 1).
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   333
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   334
    "Created: / 10.6.1998 / 14:40:01 / cg"
978
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   335
    "Modified: / 20.6.1998 / 18:49:12 / cg"
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   336
!
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   337
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   338
moveToX: xLocation y: yLocation
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   339
    "Position the cursor at the location given by xLocation and yLocation.
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   340
     Ignore the command if the parameters are outside the allowable range."
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   341
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   342
    Debug ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   343
        Transcript show:'numberOfColumns '; showCR:numberOfColumns.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   344
        Transcript show:'numberOfLines '; showCR:numberOfLines.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   345
    ].
978
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   346
"/    (xLocation < 1 or: [xLocation > numberOfColumns]) ifTrue: [^self].
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   347
"/    (yLocation < 1 or: [yLocation > numberOfLines]) ifTrue: [^self].
952
b83678ff6770 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 951
diff changeset
   348
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   349
    self cursorVisibleLine:yLocation col:xLocation.
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   350
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   351
    "Created: / 10.6.1998 / 14:40:49 / cg"
978
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   352
    "Modified: / 20.6.1998 / 20:27:11 / cg"
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   353
!
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   354
944
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   355
reportTerminalType
1420
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   356
    "currently, only cursor position is supported (param 6)"
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   357
944
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   358
    (parameters at: 1) == 6 ifTrue:[
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   359
        "/ report position
1020
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   360
        self endEntry.
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   361
944
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   362
        inStream nextPut:(Character esc).
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   363
        inStream nextPutAll:'[' 
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   364
                            , cursorLine printString 
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   365
                            , ';' 
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   366
                            , cursorCol printString
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   367
                            , 'R'.
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   368
        ^ self
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   369
    ].
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   370
    (parameters at: 1) == 7 ifTrue:[
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   371
        "/ display name 
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   372
    ].
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   373
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   374
    "Created: / 11.6.1998 / 23:05:50 / cg"
1020
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   375
    "Modified: / 28.7.1998 / 00:54:30 / cg"
944
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   376
!
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   377
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   378
resetDefaults
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   379
    "Reset the default parameters"
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   380
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   381
    |l1 l2|
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   382
978
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   383
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   384
    l1 := (parameters at: 1).
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   385
    l2 := (parameters at: 2).
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   386
    Debug ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   387
        Transcript show:'resetDefaults:'; show:l1;show:' ';showCR:l2.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   388
    ].
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   389
    (l1 ~~ 0 and:[l2 ~~ 0]) ifTrue:[
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   390
        rangeStartLine := l1.
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   391
        rangeEndLine := l2.
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   392
    ] ifFalse:[
978
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   393
"/        self halt.
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   394
    ].
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   395
978
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   396
"/    (rangeStartLine == 1 and:[rangeEndLine == numberOfLines]) ifTrue:[
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   397
"/        rangeEndLine := rangeStartLine := nil.
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   398
"/    ].
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   399
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   400
"/    autoLineFeed := false.
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   401
"/    autoMargin := true.
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   402
"/    displayMode := 0.                "Normal display"!! !!
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   403
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   404
    "Created: / 10.6.1998 / 14:50:53 / cg"
978
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   405
    "Modified: / 20.6.1998 / 20:28:26 / cg"
920
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   406
! !
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   407
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   408
!VT100TerminalView methodsFor:'initialization'!
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   409
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   410
initialize
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   411
    super initialize.
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   412
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   413
    parameters := Array new:8.
2194
d008bb991def adding comments
penk
parents: 2192
diff changeset
   414
    currentParam := 1. 
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   415
    self endOfSequence
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   416
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   417
    "Created: / 10.6.1998 / 14:46:07 / cg"
953
59167fd29632 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 952
diff changeset
   418
    "Modified: / 13.6.1998 / 13:58:01 / cg"
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   419
!
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   420
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   421
initializeKeyboardSequences
1420
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   422
    "setup my keyboard sequences for a vt100"
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   423
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   424
    kbdSequences := (self vt100KeyCodes)
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   425
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   426
    "Modified: / 9.6.1998 / 20:49:21 / cg"
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   427
    "Created: / 10.6.1998 / 15:12:32 / cg"
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   428
!
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   429
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   430
setTerminalModes
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   431
2194
d008bb991def adding comments
penk
parents: 2192
diff changeset
   432
    " vt100 sends and expect nl instead of cr-nl 
d008bb991def adding comments
penk
parents: 2192
diff changeset
   433
      we need that because the bash under UNIX works in non-canonical mode
d008bb991def adding comments
penk
parents: 2192
diff changeset
   434
      the bash sends always a nl when characters swap over column size
d008bb991def adding comments
penk
parents: 2192
diff changeset
   435
      to get same behavior for e.g. ls in canonical mode which is sending cr-nl
d008bb991def adding comments
penk
parents: 2192
diff changeset
   436
      and bash we have to set the terminal for canonical mode to sending nl 
d008bb991def adding comments
penk
parents: 2192
diff changeset
   437
      instead of cr-nl
d008bb991def adding comments
penk
parents: 2192
diff changeset
   438
      so we make a new line with positioning at first column on cr and nl
d008bb991def adding comments
penk
parents: 2192
diff changeset
   439
    "
d008bb991def adding comments
penk
parents: 2192
diff changeset
   440
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   441
    OperatingSystem isUNIXlike ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   442
        (inStream notNil 
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   443
        and:[inStream isExternalStream
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   444
        and:[inStream isOpen]]) ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   445
            (OperatingSystem resetTerminalInputOutputModes:inStream fileDescriptor) ifFalse:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   446
                Dialog warn:'cant set terminal modes'.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   447
            ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   448
        ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   449
    ].
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   450
! !
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   451
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   452
!VT100TerminalView methodsFor:'processing - input'!
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   453
2194
d008bb991def adding comments
penk
parents: 2192
diff changeset
   454
addToParameter:char
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   455
    "The parameter char is a digit. Add it to the current parameter."
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   456
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   457
    | param |
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   458
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   459
    param := (parameters at:currentParam) ? 0.
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   460
    parameters at:currentParam put:(param * 10 + char digitValue)
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   461
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   462
    "Created: / 10.6.1998 / 14:39:00 / cg"
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   463
!
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   464
1420
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   465
endOfSequence
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   466
    "private - reset state-machine at end of escape-sequence"
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   467
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   468
    state := 0. 
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   469
    currentParam := 1. 
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   470
    "/ parameters := Array new:8 withAll:0.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   471
    parameters atAllPut:nil.
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   472
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   473
    "Created: / 10.6.1998 / 14:30:40 / cg"
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   474
    "Modified: / 10.6.1998 / 14:30:57 / cg"
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   475
!
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   476
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   477
nextPut:char
2194
d008bb991def adding comments
penk
parents: 2192
diff changeset
   478
    " process a character (i.e. the shells output)
d008bb991def adding comments
penk
parents: 2192
diff changeset
   479
d008bb991def adding comments
penk
parents: 2192
diff changeset
   480
      vt100 sends and expect nl instead of cr-nl 
d008bb991def adding comments
penk
parents: 2192
diff changeset
   481
      we need that because the bash under UNIX works in non-canonical mode
d008bb991def adding comments
penk
parents: 2192
diff changeset
   482
      the bash sends always a nl when characters swap over column size
d008bb991def adding comments
penk
parents: 2192
diff changeset
   483
      to get same behavior for e.g. ls in canonical mode which is sending cr-nl
d008bb991def adding comments
penk
parents: 2192
diff changeset
   484
      and bash we have to set the terminal for canonical mode to sending nl 
d008bb991def adding comments
penk
parents: 2192
diff changeset
   485
      instead of cr-nl
d008bb991def adding comments
penk
parents: 2192
diff changeset
   486
      so we make a new line with positioning at first column on cr and nl
d008bb991def adding comments
penk
parents: 2192
diff changeset
   487
      (Character return -> cr)
d008bb991def adding comments
penk
parents: 2192
diff changeset
   488
      (Character nl -> nl)
d008bb991def adding comments
penk
parents: 2192
diff changeset
   489
      (Character cr -> nl)
d008bb991def adding comments
penk
parents: 2192
diff changeset
   490
    "
937
9823aad16498 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 934
diff changeset
   491
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   492
    | processCharacterReturn |
932
af0236d38242 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 930
diff changeset
   493
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   494
    Debug ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   495
        Transcript show:state; show:' '; showCR:char storeString.
933
de456e07697e much better asynchronous display
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   496
    ].
de456e07697e much better asynchronous display
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   497
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   498
    (char == Character return or:[char == Character nl]) ifTrue:[ 
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   499
        (rangeEndLine notNil and:[rangeEndLine ~~ numberOfLines]) ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   500
            self endEntry.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   501
            self cursorToBeginOfLine.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   502
        ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   503
        super nextPut:Character cr.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   504
        ^ self.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   505
    ].
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   506
    state == 0 ifTrue:[
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   507
        "/ Currently, we are in initial state.  
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   508
        "/ Decide what to do on the basis of the parameter char.
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   509
        processCharacterReturn := self processStateZero:char.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   510
    ] ifFalse:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   511
        state == #gotESC ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   512
            "/ Currently, we are in ESC state.  
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   513
            "/ Decide what to do on the basis of the parameter char.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   514
            processCharacterReturn := self processStateGotESC:char.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   515
        ] ifFalse:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   516
            state == #gotCSI ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   517
                "/ Currently, we are in ESC-[ state.  
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   518
                "/ Decide what to do on the basis of the parameter char.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   519
                processCharacterReturn := self processStateGotCSI:char.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   520
            ] ifFalse:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   521
                state == #gotCSI2 ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   522
                    "/ Currently, we are in ESC-[-? state.  
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   523
                    "/ Decide what to do on the basis of the parameter char.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   524
                    processCharacterReturn := self processStateGotCSI2:char.
1001
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   525
                ] ifFalse:[
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   526
                    state == #gotCSI3 ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   527
                        "/ Currently, we are in ESC-(-? state.  
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   528
                        "/ Decide what to do on the basis of the parameter char.
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   529
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   530
                        "/ currently not supported
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   531
                        processCharacterReturn := self processStateGotCSI3:char.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   532
                    ] ifFalse:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   533
                        state == #gotXTERMCSI ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   534
                            "/ Currently, we are in ESC-] state.  
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   535
                            "/ Decide what to do on the basis of the parameter char.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   536
                            processCharacterReturn := self processStateGotXTERMCSI:char.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   537
                        ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   538
                    ]
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   539
                ]
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   540
            ]
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   541
        ]
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   542
    ].
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   543
"/    #waitForNextChar - state was changed or wait for next character
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   544
"/    #sequenceComplete - command processed
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   545
"/    #unknown - unknown character for this state
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   546
    
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   547
        Debug ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   548
            Transcript showCR:'processCharacterReturn:', processCharacterReturn asString.
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   549
        ].
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   550
    processCharacterReturn == #waitForNextChar ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   551
        ^ self.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   552
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   553
    processCharacterReturn == #sequenceComplete ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   554
        self endOfSequence.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   555
        ^ self
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   556
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   557
    processCharacterReturn == #unknown ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   558
        Debug ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   559
            Transcript showCR:'#### cant handle char:', char asciiValue asString, ' (', char storeString, ') on state 0'.
944
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   560
        ].
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   561
        state == 0 ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   562
            "/ character on start of sequence not processed send to view
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   563
            super nextPut:char.
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   564
        ].
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   565
        self doNothing.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   566
        ^ self
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   567
    ].
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   568
    self doNothing.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   569
    ^ self
1020
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   570
    "Modified: / 28.7.1998 / 00:18:01 / cg"
2076
60558bc12d09 public access to filterStream;
Michael Beyl <mb@exept.de>
parents: 1667
diff changeset
   571
    "Modified: / 28.1.2002 / 20:47:07 / micha"
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   572
!
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   573
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   574
processStateGotCSI2:char
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   575
" change state or processing character; return 
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   576
    #waitForNextChar - state was changed and wait for next characters
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   577
    #sequenceComplete - command processed
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   578
    #unknown - unknown character for this state
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   579
"
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   580
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   581
    char == $; ifTrue: [
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   582
        currentParam := (currentParam + 1) min: 8.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   583
        ^ #waitForNextChar
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   584
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   585
    char isDigit ifTrue: [
2194
d008bb991def adding comments
penk
parents: 2192
diff changeset
   586
        self addToParameter:char.
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   587
        ^ #waitForNextChar
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   588
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   589
    (char == $l 
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   590
    or:[char == $h]) ifTrue: [
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   591
        "/ (parameters at: 1) = 1 ifTrue: [app_cur_keys:(char == $h)].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   592
        "/ (parameters at: 1) = 2 ifTrue: [mode132:(char == $h)].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   593
        "/ (parameters at: 1) = 4 ifTrue: [smoothScroll:(char == $h)].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   594
        "/ (parameters at: 1) = 5 ifTrue: [reverseVideo:(char == $h)].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   595
        "/ (parameters at: 1) = 6 ifTrue: [decom:(char == $h)].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   596
        self endEntry.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   597
        (parameters at: 1) = 7 ifTrue: [self autoMargin:(char == $h)].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   598
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   599
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   600
    ^ #unknown
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   601
!
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   602
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   603
processStateGotCSI3:char
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   604
" change state or processing character; return 
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   605
    #waitForNextChar - state was changed and wait for next characters
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   606
    #sequenceComplete - command processed
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   607
    #unknown - unknown character for this state
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   608
"
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   609
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   610
    ^ #unknown
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   611
!
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   612
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   613
processStateGotCSI:char
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   614
" change state or processing character; return 
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   615
    #waitForNextChar - state was changed and wait for next characters
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   616
    #sequenceComplete - command processed
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   617
    #unknown - unknown character for this state
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   618
"
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   619
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   620
    char == $? ifTrue: [
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   621
        state := #gotCSI2.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   622
        ^ #waitForNextChar
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   623
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   624
    char == $; ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   625
        currentParam := (currentParam + 1) min: 8.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   626
        ^ #waitForNextChar
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   627
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   628
    char isDigit ifTrue: [
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   629
        self addToParameter:char.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   630
        ^ #waitForNextChar
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   631
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   632
    char == $@ ifTrue: [
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   633
        self endEntry.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   634
        self insertCharacters.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   635
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   636
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   637
    char == $A ifTrue: [
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   638
        "/ ESC[#A                         - Moves cursor up # lines
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   639
        self endEntry.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   640
        self doCursorUp:((parameters at: 1) ? 1).
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   641
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   642
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   643
    char == $B ifTrue: [
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   644
        "/ ESC[#B                         - Moves cursor down # lines
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   645
        self endEntry.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   646
        self doCursorDown:((parameters at: 1) ? 1).
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   647
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   648
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   649
    char == $C ifTrue: [
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   650
        "/ ESC[#C                         - Moves cursor forward # spaces
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   651
        self endEntry.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   652
        self doCursorRight:((parameters at: 1) ? 1).
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   653
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   654
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   655
    char == $D ifTrue: [
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   656
        "/ ESC[#D                         - Moves cursor back # spaces
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   657
        self endEntry.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   658
        self doCursorLeft:((parameters at: 1) ? 1).
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   659
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   660
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   661
    char == $H ifTrue: [
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   662
        "/ ESC[#;#H or ESC[#;#f           - Moves cusor to line #, column #
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   663
        self endEntry.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   664
        Debug ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   665
            Transcript show:'move to '; show:(parameters at:1)?1; show:'/'; showCR:(parameters at:2)?1.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   666
        ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   667
        self moveToX: ((parameters at: 2) ? 1) y: ((parameters at: 1) ? 1).
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   668
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   669
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   670
    char == $J ifTrue: [
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   671
        "/ ESC[0J                         - Clear screen from beginning 
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   672
        "/ ESC[1J                         - Clear screen to end 
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   673
        "/ ESC[2J                         - Clear entire screen and home cursor
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   674
        self endEntry.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   675
        self doClearDisplay:((parameters at: 1) ? 0).
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   676
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   677
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   678
    char == $K ifTrue: [
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   679
        "/ ESC[K                          - Clear to end of line
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   680
        self endEntry.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   681
        self clearLines:((parameters at: 1) ? 0).
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   682
        Debug ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   683
            Transcript showCR:'clear to EOL'.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   684
        ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   685
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   686
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   687
    char == $L ifTrue: [
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   688
        self endEntry.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   689
        self insertLines.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   690
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   691
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   692
    char == $M ifTrue: [
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   693
        self endEntry.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   694
        self deleteLines.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   695
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   696
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   697
    char == $P ifTrue: [
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   698
        self endEntry.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   699
        self deleteCharacters.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   700
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   701
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   702
    char == $P ifTrue: [
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   703
        "/ ESC[#;#R                       - Reports current cursor line & column
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   704
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   705
    (char == $c) ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   706
        "/ terminal-type query 3
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   707
        self reportTerminalType.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   708
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   709
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   710
    char == $f ifTrue: [
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   711
        "/ ESC[#;#H or ESC[#;#f           - Moves cusor to line #, column #
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   712
        self endEntry.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   713
        self move.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   714
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   715
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   716
    char == $n ifTrue: [
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   717
        self report.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   718
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   719
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   720
    char == $m ifTrue: [
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   721
        self displayMode:((parameters at: 1) ? 0).
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   722
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   723
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   724
    char == $r ifTrue: [
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   725
        self endEntry.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   726
        self resetDefaults.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   727
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   728
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   729
    char == $s ifTrue: [
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   730
        "/ ESC[s                          - Saves cursor position for recall later
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   731
        self endEntry.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   732
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   733
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   734
    char == $u ifTrue: [
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   735
        "/ ESC[u                          - Return to saved cursor position
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   736
        self endEntry.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   737
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   738
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   739
    ^ #unknown
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   740
!
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   741
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   742
processStateGotESC:char
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   743
" change state or processing character; return 
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   744
    #waitForNextChar - state was changed and wait for next characters
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   745
    #sequenceComplete - command processed
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   746
    #unknown - unknown character for this state
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   747
"
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   748
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   749
    char == $[ ifTrue: [ 
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   750
        "/ ESC-[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   751
        state := #gotCSI. 
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   752
        ^ #waitForNextChar
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   753
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   754
    char == $] ifTrue: [ 
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   755
        "/ ESC-]
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   756
        "/xterm sequence
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   757
        state := #gotXTERMCSI. 
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   758
        ^ #waitForNextChar
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   759
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   760
    char == $( ifTrue: [ 
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   761
        "/ ESC-(
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   762
        "/ todo: set-charset 0 ...
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   763
        state := #gotCSI3.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   764
        ^ #waitForNextChar
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   765
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   766
    char == $) ifTrue: [ 
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   767
        "/ ESC-(
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   768
        "/ todo: set-charset 1 ...
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   769
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   770
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   771
    char == $7 ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   772
        "/ ESC-7
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   773
        self endEntry.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   774
        self saveCursor.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   775
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   776
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   777
    char == $8 ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   778
        "/ ESC-7
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   779
        self endEntry.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   780
        self restoreCursor.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   781
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   782
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   783
    char == $M ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   784
        "/ ESC-M
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   785
        self endEntry.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   786
        self doCursorUp:1.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   787
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   788
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   789
    char == $D ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   790
        "/ ESC-D
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   791
        self endEntry.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   792
        self doCursorDown:1.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   793
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   794
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   795
    char == $E ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   796
        "/ ESC-E
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   797
        "/ TODO add_lines
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   798
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   799
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   800
    (char == $Z) ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   801
        "/ terminal-type query 2
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   802
        self reportTerminalType.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   803
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   804
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   805
    char == $= ifTrue: [
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   806
        "/ enter apllication keypad mode
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   807
        "/ ESC-=
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   808
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   809
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   810
    char == $> ifTrue: [
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   811
        "/ exit apllication keypad mode
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   812
        "/ ESC-<
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   813
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   814
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   815
    ^ #unknown
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   816
!
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   817
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   818
processStateGotXTERMCSI:char
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   819
" change state or processing character; return 
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   820
    #waitForNextChar - state was changed and wait for next characters
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   821
    #sequenceComplete - command processed
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   822
    #unknown - unknown character for this state
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   823
"
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   824
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   825
    ^ #unknown
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   826
!
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   827
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   828
processStateZero:char
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   829
" change state or processing character; return 
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   830
    #waitForNextChar - state was changed and wait for next characters
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   831
    #sequenceComplete - command processed
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   832
    #unknown - unknown character for this state
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   833
"
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   834
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   835
    char asciiValue < 32 ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   836
        (char == Character esc) ifTrue:[ 
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   837
            state := #gotESC. 
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   838
            ^ #waitForNextChar
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   839
        ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   840
        (char == Character backspace) ifTrue:[ 
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   841
            self endEntry.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   842
            self cursorLeft. "/ doBackspace
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   843
            ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   844
        ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   845
        (char == Character bell) ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   846
            self beep.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   847
            ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   848
        ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   849
        (char == (Character value:5)) ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   850
            "/ terminal-type query
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   851
            self reportTerminalType.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   852
            ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   853
        ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   854
        (char == (Character value:16rf)) ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   855
            "/ SO shift out
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   856
            ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   857
        ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   858
        (char == (Character value:16re)) ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   859
            "/ SI shift in
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   860
            ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   861
        ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   862
        char ~~ Character tab ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   863
            char asciiValue ~~ 0 ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   864
                ('VT100 [info]: unhandled control key: ' , char storeString) infoPrintCR.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   865
            ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   866
            ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   867
        ]
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   868
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   869
    ^ #unknown
920
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   870
! !
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   871
930
3186aa6efe72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
   872
!VT100TerminalView methodsFor:'queries'!
3186aa6efe72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
   873
3186aa6efe72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
   874
terminalType
1420
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   875
    "returns a string describing this terminal (usually, this is
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   876
     passed down to the shell as TERM environment variable).
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   877
     Here, 'vt100' is returned."
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   878
1355
df09d1e16165 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1352
diff changeset
   879
    ^ 'vt100'
930
3186aa6efe72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
   880
3186aa6efe72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
   881
    "Created: / 10.6.1998 / 16:22:39 / cg"
1355
df09d1e16165 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1352
diff changeset
   882
    "Modified: / 5.5.1999 / 11:22:40 / cg"
930
3186aa6efe72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
   883
! !
3186aa6efe72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
   884
920
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   885
!VT100TerminalView class methodsFor:'documentation'!
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   886
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   887
version
2194
d008bb991def adding comments
penk
parents: 2192
diff changeset
   888
    ^ '$Header: /cvs/stx/stx/libwidg2/VT100TerminalView.st,v 1.36 2002-09-18 16:07:10 penk Exp $'
920
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   889
! !