# VT100 This is a namespace for working with VT100/ANSI escape sequences. It's intended to help make it easier to create TUI (textual user interface) based applications. ## Base Functionality ~~~ :VT100:escape (-) ASCII:ESC c:put ; ~~~ Everything starts with an ESCAPE character. ## Terminal Setup ~~~ :VT100:reset (-) VT100:escape $c c:put ; ~~~ ~~~ :VT100:enable-line-wrap (-) VT100:escape '[7h s:put ; ~~~ ~~~ :VT100:disable-line-wrap (-) VT100:escape '[7l s:put ; ~~~ ## Fonts ~~~ :VT100:default-font (-) VT100:escape $( c:put ; ~~~ ~~~ :VT100:alternate-font (-) VT100:escape $) c:put ; ~~~ Cursor Control ~~~ :VT100:cursor:home (-) VT100:escape '[0;0H s:put ; ~~~ ~~~ :VT100:cursor:move (rc-) VT100:escape swap '[%n;%nH s:format s:put ; ~~~ ~~~ :VT100:cursor:down (n-) VT100:escape '[%nB s:format s:put ; ~~~ ~~~ :VT100:cursor:up (n-) VT100:escape '[%nA s:format s:put ; ~~~ ~~~ :VT100:cursor:forward (n-) VT100:escape '[%nC s:format s:put ; ~~~ ~~~ :VT100:cursor:back (n-) VT100:escape '[%nD s:format s:put ; ~~~ ~~~ :VT100:cursor:save (-) VT100:escape '[s s:put ; ~~~ ~~~ :VT100:cursor:restore (-) VT100:escape '[u s:put ; ~~~ ~~~ :VT100:cursor:save-attributes (-) VT100:escape '[7 s:put ; ~~~ ~~~ :VT100:cursor:restore-attributes (-) VT100:escape '[8 s:put ; ~~~ ## Attributes ~~~ :VT100:color (s-n) 'black [ #30 ] s:case 'red [ #31 ] s:case 'green [ #32 ] s:case 'yellow [ #33 ] s:case 'blue [ #34 ] s:case 'magenta [ #35 ] s:case 'cyan [ #36 ] s:case drop #37 ; ~~~ ~~~ :VT100:foreground (n-n) ; ~~~ ~~~ :VT100:background (n-n) #10 + ; ~~~ ~~~ :VT100:set (n-) VT100:escape '[%nm s:format s:put ; ~~~ ~~~ :VT100:clear (-) VT100:escape '[2J s:put ; ~~~ ## Example: ``` VT100:clear #10 #15 VT100:cursor:move 'red VT100:color VT100:foreground VT100:set 'Hello_World! s:put nl #11 #15 VT100:cursor:move 'cyan VT100:color VT100:foreground VT100:set 'Press_a_key_to_exit s:put nl c:get drop VT100:reset ```