--- a/VT100TerminalView.st Thu Aug 15 11:44:29 2019 +0200
+++ b/VT100TerminalView.st Fri Aug 16 23:10:04 2019 +0200
@@ -797,13 +797,14 @@
|processCharacterReturn|
+ char isCharacter ifFalse:[self halt].
+ "/ Debug := true.
Debug ifTrue:[
- Transcript
- show:'VT100: nextPut - state: '; show:state;
- show:' got: ';
- showCR:char storeString
+ Transcript
+ showCR:'VT100: nextPut - state: %1 got: %2'
+ with:state with:char storeString
].
-"/ char == Character return ifTrue:[self halt].
+ "/ char == Character return ifTrue:[self halt].
state == 0 ifTrue:[
processCharacterReturn := self processState0:char.
self evaluateProcessCharacter:char return:processCharacterReturn.
@@ -998,6 +999,8 @@
#unknown - unknown character for this state
"
+ |n|
+
char == $? ifTrue: [
state := #gotCSI2.
^ #waitForNextChar
@@ -1017,40 +1020,44 @@
self insertCharacters.
^ #sequenceComplete
].
- char == $A ifTrue: [
+
+ ('ABCDEF' includes:char) ifTrue:[
+ self endEntry.
+ n := self getParameter:1 withDefault:1.
+ ].
+
+ char == $A ifTrue:[
"/ ESC[#A - Moves cursor up # lines
- self endEntry.
- self doCursorUp:(self getParameter:1 withDefault:1).
+ Debug ifTrue:[ Transcript showCR:'cursor up' ].
+ self doCursorUp:n.
^ #sequenceComplete
].
char == $B ifTrue: [
"/ ESC[#B - Moves cursor down # lines
- self endEntry.
- self doCursorDown:(self getParameter:1 withDefault:1).
+ Debug ifTrue:[ Transcript showCR:'cursor down' ].
+ self doCursorDown:n.
^ #sequenceComplete
].
char == $C ifTrue: [
"/ ESC[#C - Moves cursor forward # spaces
- self endEntry.
- self doCursorRight:(self getParameter:1 withDefault:1).
+ Debug ifTrue:[ Transcript showCR:'cursor right' ].
+ self doCursorRight:n.
^ #sequenceComplete
].
char == $D ifTrue: [
"/ ESC[#D - Moves cursor back # spaces
- self endEntry.
- self doCursorLeft:(self getParameter:1 withDefault:1).
+ Debug ifTrue:[ Transcript showCR:'cursor left' ].
+ self doCursorLeft:n.
^ #sequenceComplete
].
char == $E ifTrue: [
"/ ESC[#E
- self endEntry.
- self doCursorNextLine:(self getParameter:1 withDefault:1).
+ self doCursorNextLine:n.
^ #sequenceComplete
].
char == $F ifTrue: [
"/ ESC[#F
- self endEntry.
- self doCursorPreviousLine:(self getParameter:1 withDefault:1).
+ self doCursorPreviousLine:n.
^ #sequenceComplete
].
(char == $G) ifTrue: [
@@ -1163,7 +1170,7 @@
].
char == $] ifTrue: [
"/ ESC-]
- "/xterm sequence
+ "/ xterm sequence
state := #gotXTERMCSI.
^ #waitForNextChar
].
@@ -1187,7 +1194,7 @@
^ #sequenceComplete
].
char == $8 ifTrue:[
- "/ ESC-7
+ "/ ESC-8
self endEntry.
self restoreCursor.
^ #sequenceComplete
@@ -1207,6 +1214,7 @@
char == $E ifTrue:[
"/ ESC-E
"/ TODO add_lines
+ Transcript showCR:'unimplemented: ESC-E'.
self endEntry.
self cursorReturn.
^ #sequenceComplete