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