199767f8919635c4928607450d9e0abb932109ceToomas Soome\ Copyright (c) 2003 Scott Long <scottl@FreeBSD.org>
199767f8919635c4928607450d9e0abb932109ceToomas Soome\ Copyright (c) 2015 Devin Teske <dteske@FreeBSD.org>
199767f8919635c4928607450d9e0abb932109ceToomas Soome\ All rights reserved.
199767f8919635c4928607450d9e0abb932109ceToomas Soome\
199767f8919635c4928607450d9e0abb932109ceToomas Soome\ Redistribution and use in source and binary forms, with or without
199767f8919635c4928607450d9e0abb932109ceToomas Soome\ modification, are permitted provided that the following conditions
199767f8919635c4928607450d9e0abb932109ceToomas Soome\ are met:
199767f8919635c4928607450d9e0abb932109ceToomas Soome\ 1. Redistributions of source code must retain the above copyright
199767f8919635c4928607450d9e0abb932109ceToomas Soome\ notice, this list of conditions and the following disclaimer.
199767f8919635c4928607450d9e0abb932109ceToomas Soome\ 2. Redistributions in binary form must reproduce the above copyright
199767f8919635c4928607450d9e0abb932109ceToomas Soome\ notice, this list of conditions and the following disclaimer in the
199767f8919635c4928607450d9e0abb932109ceToomas Soome\ documentation and/or other materials provided with the distribution.
199767f8919635c4928607450d9e0abb932109ceToomas Soome\
199767f8919635c4928607450d9e0abb932109ceToomas Soome\ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
199767f8919635c4928607450d9e0abb932109ceToomas Soome\ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
199767f8919635c4928607450d9e0abb932109ceToomas Soome\ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
199767f8919635c4928607450d9e0abb932109ceToomas Soome\ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
199767f8919635c4928607450d9e0abb932109ceToomas Soome\ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
199767f8919635c4928607450d9e0abb932109ceToomas Soome\ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
199767f8919635c4928607450d9e0abb932109ceToomas Soome\ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
199767f8919635c4928607450d9e0abb932109ceToomas Soome\ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
199767f8919635c4928607450d9e0abb932109ceToomas Soome\ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
199767f8919635c4928607450d9e0abb932109ceToomas Soome\ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
199767f8919635c4928607450d9e0abb932109ceToomas Soome\ SUCH DAMAGE.
199767f8919635c4928607450d9e0abb932109ceToomas Soome\
199767f8919635c4928607450d9e0abb932109ceToomas Soome\ $FreeBSD$
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soomemarker task-screen.4th
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome\ emit Esc-[
199767f8919635c4928607450d9e0abb932109ceToomas Soome: escc ( -- ) 27 emit [char] [ emit ;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome\ Home cursor ( Esc-[H )
199767f8919635c4928607450d9e0abb932109ceToomas Soome: ho ( -- ) escc [char] H emit ;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome\ Clear from current position to end of display ( Esc-[J )
199767f8919635c4928607450d9e0abb932109ceToomas Soome: cld ( -- ) escc [char] J emit ;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome\ clear screen
199767f8919635c4928607450d9e0abb932109ceToomas Soome: clear ( -- ) ho cld ;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome\ move cursor to x rows, y cols (1-based coords) ( Esc-[%d;%dH )
199767f8919635c4928607450d9e0abb932109ceToomas Soome: at-xy ( x y -- ) escc .# [char] ; emit .# [char] H emit ;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome\ Set foreground color ( Esc-[3%dm )
199767f8919635c4928607450d9e0abb932109ceToomas Soome: fg ( x -- ) escc 3 .# .# [char] m emit ;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome\ Set background color ( Esc-[4%dm )
199767f8919635c4928607450d9e0abb932109ceToomas Soome: bg ( x -- ) escc 4 .# .# [char] m emit ;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome\ Mode end (clear attributes)
199767f8919635c4928607450d9e0abb932109ceToomas Soome: me ( -- ) escc [char] m emit ;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome\ Enable bold mode ( Esc-[1m )
199767f8919635c4928607450d9e0abb932109ceToomas Soome: b ( -- ) escc 1 .# [char] m emit ;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome\ Disable bold mode ( Esc-[22m )
199767f8919635c4928607450d9e0abb932109ceToomas Soome: -b ( -- ) escc 22 .# [char] m emit ;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome\ Enable inverse foreground/background mode ( Esc-[7m )
199767f8919635c4928607450d9e0abb932109ceToomas Soome: inv ( -- ) escc 7 .# [char] m emit ;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome\ Disable inverse foreground/background mode ( Esc-[27m )
199767f8919635c4928607450d9e0abb932109ceToomas Soome: -inv ( -- ) escc 27 .# [char] m emit ;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome\ Convert all occurrences of given character (c) in string (c-addr/u) to Esc
199767f8919635c4928607450d9e0abb932109ceToomas Soome: escc! ( c-addr/u c -- c-addr/u )
199767f8919635c4928607450d9e0abb932109ceToomas Soome 2 pick 2 pick
199767f8919635c4928607450d9e0abb932109ceToomas Soome begin dup 0> while
199767f8919635c4928607450d9e0abb932109ceToomas Soome over c@ 3 pick = if over 27 swap c! then
199767f8919635c4928607450d9e0abb932109ceToomas Soome 1- swap 1+ swap
199767f8919635c4928607450d9e0abb932109ceToomas Soome repeat
199767f8919635c4928607450d9e0abb932109ceToomas Soome 2drop drop
199767f8919635c4928607450d9e0abb932109ceToomas Soome;