history: document ANSI escape sequences used
[pforth] / fth / termio.fth
CommitLineData
8e9db35f
PB
1\ Terminal I/O
2\
3\ Requires an ANSI compatible terminal.
4\
5\ To get Windows computers to use ANSI mode in their DOS windows,
6\ Add this line to "C:\CONFIG.SYS" then reboot.
7\
8\ device=c:\windows\command\ansi.sys
9\
10\ Author: Phil Burk
11\ Copyright 1988 Phil Burk
12\ Revised 2001 for pForth
13
14ANEW TASK-TERMIO.FTH
15decimal
16
17$ 08 constant ASCII_BACKSPACE
18$ 7F constant ASCII_DELETE
19$ 1B constant ASCII_ESCAPE
20$ 01 constant ASCII_CTRL_A
21$ 05 constant ASCII_CTRL_E
22$ 18 constant ASCII_CTRL_X
23
db35c5f4
PB
24\ ANSI arrow key sequences
25\ ESC [ 0x41 is UP
26\ ESC [ 0x42 is DOWN
27\ ESC [ 0x43 is RIGHT
28\ ESC [ 0x44 is LEFT
29
30\ ANSI terminal control
31\ ESC [ 2J is clear screen
32\ ESC [ {n} D is move left
33\ ESC [ {n} C is move right
34\ ESC [ K is erase to end of line
35
8e9db35f
PB
36: ESC[ ( send ESCAPE and [ )
37 ASCII_ESCAPE emit
38 ascii [ emit
39;
40
41: CLS ( -- , clear screen )
42 ESC[ ." 2J"
43;
44
45: TIO.BACKWARDS ( n -- , move cursor backwards )
46 ESC[
47 base @ >r decimal
48 0 .r
49 r> base !
50 ascii D emit
51;
52
53: TIO.FORWARDS ( n -- , move cursor forwards )
54 ESC[
55 base @ >r decimal
56 0 .r
57 r> base !
58 ascii C emit
59;
60
61: TIO.ERASE.EOL ( -- , erase to the end of the line )
62 ESC[
63 ascii K emit
64;
65
8e9db35f
PB
66: BELL ( -- , ring the terminal bell )
67 7 emit
68;
69
70: BACKSPACE ( -- , backspace action )
71 8 emit space 8 emit
72;
73
740 [IF] \ for testing
75
76: SHOWKEYS ( -- , show keys pressed in hex )
77 BEGIN
78 key
79 dup .
80 ." , $ " dup .hex cr
81 ascii q =
82 UNTIL
83;
84
85: AZ ascii z 1+ ascii a DO i emit LOOP ;
86
87: TEST.BACK1
88 AZ 5 tio.backwards
89 1000 msec
90 tio.erase.eol
91;
92: TEST.BACK2
93 AZ 10 tio.backwards
94 1000 msec
95 ." 12345"
96 1000 msec
97;
98[THEN]