/fth/termio.fth
Forth | 88 lines | 74 code | 14 blank | 0 comment | 2 complexity | 09529f50b8e0fd875238ab7a35abed24 MD5 | raw file
- \ Terminal I/O
- \
- \ Requires an ANSI compatible terminal.
- \
- \ To get Windows computers to use ANSI mode in their DOS windows,
- \ Add this line to "C:\CONFIG.SYS" then reboot.
- \
- \ device=c:\windows\command\ansi.sys
- \
- \ Author: Phil Burk
- \ Copyright 1988 Phil Burk
- \ Revised 2001 for pForth
-
- ANEW TASK-TERMIO.FTH
- decimal
-
- $ 08 constant ASCII_BACKSPACE
- $ 7F constant ASCII_DELETE
- $ 1B constant ASCII_ESCAPE
- $ 01 constant ASCII_CTRL_A
- $ 05 constant ASCII_CTRL_E
- $ 18 constant ASCII_CTRL_X
-
- \ ANSI Terminal Control
- : ESC[ ( send ESCAPE and [ )
- ASCII_ESCAPE emit
- ascii [ emit
- ;
-
- : CLS ( -- , clear screen )
- ESC[ ." 2J"
- ;
-
- : TIO.BACKWARDS ( n -- , move cursor backwards )
- ESC[
- base @ >r decimal
- 0 .r
- r> base !
- ascii D emit
- ;
-
- : TIO.FORWARDS ( n -- , move cursor forwards )
- ESC[
- base @ >r decimal
- 0 .r
- r> base !
- ascii C emit
- ;
-
- : TIO.ERASE.EOL ( -- , erase to the end of the line )
- ESC[
- ascii K emit
- ;
-
-
- : BELL ( -- , ring the terminal bell )
- 7 emit
- ;
-
- : BACKSPACE ( -- , backspace action )
- 8 emit space 8 emit
- ;
-
- 0 [IF] \ for testing
-
- : SHOWKEYS ( -- , show keys pressed in hex )
- BEGIN
- key
- dup .
- ." , $ " dup .hex cr
- ascii q =
- UNTIL
- ;
-
- : AZ ascii z 1+ ascii a DO i emit LOOP ;
-
- : TEST.BACK1
- AZ 5 tio.backwards
- 1000 msec
- tio.erase.eol
- ;
- : TEST.BACK2
- AZ 10 tio.backwards
- 1000 msec
- ." 12345"
- 1000 msec
- ;
- [THEN]