1
The refinement discussed here so far, is implemented in the
2
overall structure of the program:
5
Operations -------------X
8
Shell X------------X Emulation |
11
Events X------------------
14
Part Application Protocol Data model Visualization
17
Files TEShell.C TEmulation.C Screen.C TEWidget.C
20
Types TEShell Emulation TEScreen TEWidget
24
The abstract data type, in which the text is represented and
25
manipulated by a set of operations is
28
------------------------------------------------------------------
30
On the first glance, the terminal consists of the following
33
- A screen to display characters to the user on a rectangular area.
34
- A keyboard to accept the user keypresses.
35
- A bidirectional serial connection, on which the application
36
sends the text to be displayed to the terminal and on which
37
the user's key pressed are forwarded to the application.
38
- The application that actually run on the terminal.
40
More formally our terminal model consists of
41
- a character screen : a matrix [Lines,Columns] -> Character
42
- a current visual pointer position (cursor).
43
- a set of operations by which the screen can be manipulated
44
- a set of events (mainly keystrokes)
45
- two streams on which bytes are exchanged between the
46
application and the terminal which are used to communicate
47
the operations and events between the two end points.
50
0 (columns) V--- Columns-1
51
+-----------------------+
59
+-----------------------+
62
For adressing purpose, we call the (columnNo,lineNo) pair a "position"
64
- protocol == collection of operations and their encoding.
68
- Strom von Kommandos und Anfragen
69
- Strom von Ereignissen und Antworten
71
- HostToTerminalStream
72
: Sequence(Command U Request)
75
: Prn(Char) - literal(Character) - 1 char subset
76
: Ctl(Char) - 0-parm command
77
: Esc(Char) - 0-parm command
78
: Csi(Char,Args) - fix & flex num parm command
79
- some are sub-commands
80
: Pri(Char,Args) <: Csi("?",Char,Args) - fix & flex num parm command
81
- some are sub-commands
82
: Hsh(Char) - 0-parm command
83
: Scs(A,B) - 2-parm num command
84
: Vt5(A,B) - 2-parm num command
88
: name(parm:Type<:Integer)
96
------------------------------------------------------------------