Terminal control/Inverse video: Difference between revisions

m
→‎{{header|Wren}}: Changed to Wren S/H
(Add a Common Lisp example using the ncurses library)
m (→‎{{header|Wren}}: Changed to Wren S/H)
 
(30 intermediate revisions by 15 users not shown)
Line 1:
{{task|Terminal control}}[[Category:Terminal control]]
[[Category:Terminal control]]
The task is to display a word in inverse video (or reverse video) followed by a word in normal video.
 
;Task:
Display a word in inverse video   (or reverse video)   followed by a word in normal video.
<br><br>
 
=={{header|11l}}==
{{trans|Python}}
 
<syntaxhighlight lang="11l">print("\033[7mReversed\033[m Normal")</syntaxhighlight>
 
=={{header|6502 Assembly}}==
Line 13 ⟶ 22:
SYS680
</pre>
<langsyntaxhighlight lang="6502asm">; C64 - Terminal control: Inverse Video
 
; *** labels ***
Line 35 ⟶ 44:
.byte $92 ; the REVERSE OFF control code
.null " normal" ; null terminated string
</syntaxhighlight>
</lang>
 
=={{header|Action!}}==
<syntaxhighlight lang="action!">PROC PrintInv(CHAR ARRAY a)
BYTE i
 
IF a(0)>0 THEN
FOR i=1 TO a(0)
DO
Put(a(i)%$80)
OD
FI
RETURN
 
PROC Main()
Position(2,2)
 
PrintInv("Inverse")
Print(" video")
RETURN</syntaxhighlight>
{{out}}
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Inverse_video.png Screenshot from Atari 8-bit computer]
 
=={{header|Ada}}==
<langsyntaxhighlight Adalang="ada">with Ada.Text_IO; use Ada.Text_IO;
 
procedure Reverse_Video is
Line 49 ⟶ 79:
Put (Norm_Video & " Normal");
end Reverse_Video;
</syntaxhighlight>
</lang>
 
=={{header|ARM Assembly}}==
{{works with|https://akkit.org/info/gbatek.htm Game Boy Advance}}
This is a slightly different take on the age-old XOR technique to flip the colors of a monochrome graphic. While the Game Boy Advance uses 16 bits per pixel, we'll use a monochrome bitmap font, where each bit that's a 1 is an instruction to fill in a pixel and each bit that's a 0 is an instruction to leave it blank. By flipping the bits of the font itself, we can create the "inverse video" effect. The ARM's <code>EOR</code> instruction can't be used to write to memory directly; you would have to load from memory into a register first, apply the <code>EOR</code> operation with the desired value, and write back. Our method of flipping the bits of the font will save time.
 
The Game Boy Advance's video memory is very simple, a two-dimensional array of 16-bit values ranging from memory locations <code>0x06000000</code> to <code>0x06012BFF</code> represents each pixel of the screen. Write a 15-bit hex color value to an element of the array to turn the corresponding pixel to that color value.
 
<syntaxhighlight lang="arm assembly">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Program Start
 
.equ ramarea, 0x02000000
.equ CursorX,ramarea
.equ CursorY,ramarea+1
 
ProgramStart:
mov sp,#0x03000000 ;Init Stack Pointer
mov r4,#0x04000000 ;DISPCNT -LCD Control
mov r2,#0x403 ;4= Layer 2 on / 3= ScreenMode 3
str r2,[r4]
bl ResetTextCursors ;set text cursors to top left of screen
adr r1,HelloWorld
mov r2,#0x7FFF
mov r11,#1
bl PrintString
adr r1,HelloWorld
mov r2,#0x7FFF
mov r11,#0
bl PrintString
 
forever:
b forever
BitmapFont:
.include "M:\SrcAll\BitmapFont.asm"
HelloWorld:
.byte "HELLO",255
.align 4
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PrintString: ;Print 255 terminated string
STMFD sp!,{r0-r12, lr}
PrintStringAgain:
ldrB r0,[r1],#1
cmp r0,#255
beq PrintStringDone ;Repeat until 255
bl printchar ;Print Char
b PrintStringAgain
PrintStringDone:
LDMFD sp!,{r0-r12, lr}
bx lr
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PrintChar:
;input: R1 = ADDR OF TEXT
; R2 = DESIRED COLOR (ABBBBBGGGGGRRRRR A=Alpha)
; CursorX = X POS OF WHERE TO DRAW
; CursorY = Y POS OF WHERE TO DRAW
; R11 = 1 FOR INVERTED TEXT, 0 FOR NORMAL TEXT
 
STMFD sp!,{r4-r12, lr}
 
mov r4,#0
mov r5,#0
mov r3,#CursorX
ldrB r4,[r3] ;X pos
mov r3,#CursorY
ldrB r5,[r3] ;Y pos
mov r3,#0x06000000 ;VRAM base
mov r6,r4,lsl #4 ;Xpos, 2 bytes per pixel, 8 bytes per char
add r3,r3,r6
;Ypos, 240 pixels per line,2 bytes per pixel, 8 lines per char
mov r4,r5,lsl #4
mov r5,r5,lsl #8
sub r6,r5,r4
mov r6,r6,lsl #4 ;ypos * 240 * 8 * 2 = ((((ypos << 8)-(ypos << 4)) << 3)<< 1
add r3,r3,r6
adr r4,BitmapFont ;Font source
subs r0,r0,#32 ;First Char is 32 (space)
beq LineDone ;if it's a space, just move the cursor without actually writing anything
add r4,r4,r0,asl #3 ;8 bytes per char
mov r6,#8 ;8 lines
DrawLine:
mov r7,#8 ;8 pixels per line
ldrb r8,[r4],#1 ;Load this piece of the letter
cmp r11,#1 ;does r11 = 1?
mvneq r8,r8 ;if so, flip the bits of r8 before printing.
mov r9,#0b100000000 ;Bit Mask for testing whether to fill
DrawPixel:
tst r8,r9 ;Is bit 1?
strneh r2,[r3] ;Yes? then fill pixel (HalfWord)
add r3,r3,#2
mov r9,r9,ror #1 ;Bitshift Mask
subs r7,r7,#1
bne DrawPixel ;Next Hpixel
add r3,r3,#480-16 ;Move Down a line (240 pixels * 2 bytes)
subs r6,r6,#1 ;-1 char (16 px)
bne DrawLine ;Next Vline
LineDone:
mov r3,#CursorX
ldrB r0,[r3]
add r0,r0,#1 ;Move across screen
strB r0,[r3]
mov r10,#30
cmp r0,r10
bleq NewLine
LDMFD sp!,{r4-r12, lr}
bx lr
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
NewLine:
STMFD sp!,{r0-r12, lr}
mov r3,#CursorX
mov r0,#0
strB r0,[r3]
mov r4,#CursorY
ldrB r0,[r4]
add r0,r0,#1
strB r0,[r4]
LDMFD sp!,{r0-r12, pc}
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ResetTextCursors:
STMFD sp!,{r4-r6,lr}
mov r4,#0
mov r5,#CursorX
mov r6,#CursorY
strB r4,[r5]
strB r4,[r6]
LDMFD sp!,{r4-r6,lr}
bx lr</syntaxhighlight>
 
{{out}}
[https://ibb.co/5ByNN9K Picture of output text]
 
=={{header|AutoHotkey}}==
Call SetConsoleTextAttribute() to change foreground and background colors.
<langsyntaxhighlight AHKlang="ahk">DllCall( "AllocConsole" ) ; create a console if not launched from one
hConsole := DllCall( "GetStdHandle", int, STDOUT := -11 )
 
Line 66 ⟶ 242:
SetConsoleTextAttribute(hConsole, Attributes){
return DllCall( "SetConsoleTextAttribute", UPtr, hConsole, UShort, Attributes)
}</langsyntaxhighlight>
 
=={{header|AWK}}==
<langsyntaxhighlight lang="awk">BEGIN {
system ("tput rev")
print "foo"
system ("tput sgr0")
print "bar"
}</langsyntaxhighlight>
 
=={{header|Axe}}==
A delay is added because the screen redraws with the normal font after the program exits.
 
<langsyntaxhighlight lang="axe">Fix 3
Disp "INVERTED"
Fix 2
Disp "REGULAR",i
Pause 4500</langsyntaxhighlight>
 
=={{header|BaCon}}==
<syntaxhighlight lang="freebasic">COLOR INVERSE
PRINT "a word"
COLOR RESET
PRINT "a word"</syntaxhighlight>
 
=={{header|BASIC}}==
 
==={{header|Applesoft BASIC}}===
<langsyntaxhighlight ApplesoftBasiclang="applesoftbasic">INVERSE:?"ROSETTA";:NORMAL:?" CODE"</langsyntaxhighlight>
 
==={{header|BBC BASIC}}===
<langsyntaxhighlight lang="bbcbasic"> COLOUR 128 : REM Black background
COLOUR 15 : REM White foreground
PRINT "Inverse";
COLOUR 128+15 : REM White background
COLOUR 0 : REM Black foreground
PRINT " video"</langsyntaxhighlight>
Alternative method using 'VDU code' strings:
<langsyntaxhighlight lang="bbcbasic"> inverse$ = CHR$(17)+CHR$(128)+CHR$(17)+CHR$(15)
normal$ = CHR$(17)+CHR$(128+15)+CHR$(17)+CHR$(0)
PRINT inverse$ + "Inverse" + normal$ + " video"</langsyntaxhighlight>
 
==={{header|Commodore BASIC}}===
Line 106 ⟶ 288:
Commodore computers have defined a "reverse" character set in character ROM. This can be accessed through control characters reserved in the ASCII (PETSCII) character table. To enable reverse characters, print CHR$(18) ("Reverse On"). Reverse characters will continue until a "Reverse Off" CHR$(146) is printed, or until a newline (carriage return CHR$(13)) which may also occur at the end of a print statement.
 
<langsyntaxhighlight lang="gwbasic">5 rem inverse video
10 print chr$(18);"reverse on";chr$(146);" reverse off"
20 print
Line 114 ⟶ 296:
50 print chr$(18);"this is reversed... ":print "this is not."
60 print
70 print chr$(18);"this is reversed... ";chr$(13);"this is not."</langsyntaxhighlight>
 
 
==={{header|FreeBASIC}}===
<syntaxhighlight lang="freebasic">Color 0, 15 ' usa los colores blanco (fondo) y negro (primer plano)
Locate 2, 2 : Print "Video inverso"
Color 15, 0 ' usa los colores negro (fondo) y blanco (primer plano)
Locate 3, 2 : Print "Video normal"
Sleep</syntaxhighlight>
 
 
==={{header|Locomotive Basic}}===
The firmware routine at &bb9c (TXT INVERSE) swaps the current Locomotive BASIC PEN and PAPER colors:
 
<langsyntaxhighlight lang="locobasic">10 CALL &bb9c:PRINT "inverse";
20 CALL &bb9c:PRINT "normal"</langsyntaxhighlight>
 
==={{header|PureBasic}}===
<langsyntaxhighlight PureBasiclang="purebasic">If OpenConsole()
ConsoleColor(0, 15) ;use the colors black (background) and white (forground)
PrintN("Inverse Video")
Line 131 ⟶ 322:
Print(#CRLF$ + #CRLF$ + "Press ENTER to exit"): Input()
CloseConsole()
EndIf</langsyntaxhighlight>
 
==={{header|Run BASIC}}===
<langsyntaxhighlight lang="runbasic">' ---------- foo is reverse --------------
x$ = shell$("tput mr
echo 'foo'")
Line 141 ⟶ 332:
x$ = shell$("tput me
echo 'bar'")
wait</langsyntaxhighlight>
 
==={{header|Sinclair ZX81 BASIC}}===
Inverse video is available from the keyboard (accessed with <code>SHIFT</code><code>9</code>), so the normal way to do this would be just
<langsyntaxhighlight lang="basic">PRINT "FOOBAR"</langsyntaxhighlight>
but with the 'foo' in inverse video and the 'bar' in normal video.
 
If this won't work (say, if we may want to use inverse video with string variables rather than string literals), we can use a small subroutine—relying on the fact that the ZX81 character set uses the high bit of each character code to select normal or inverse video.
<langsyntaxhighlight lang="basic">10 LET S$="FOO"
20 GOSUB 50
30 PRINT S$;"BAR"
Line 156 ⟶ 347:
60 LET S$(I)=CHR$ (128+CODE S$(I))
70 NEXT I
80 RETURN</langsyntaxhighlight>
Note that this subroutine assumes the source string is not already in inverse video: if it could be, you will need to test each character before you attempt to convert it.
 
 
=== {{header|ZX Spectrum Basic}} ===
==={{header|Yabasic}}===
<lang basic>10 INVERSE 1
<syntaxhighlight lang="yabasic">print color("black","white") "Video inverso"
// o también
print reverse "Video inverso"
 
print color("white","black") "Video normal"</syntaxhighlight>
 
==={{header|ZX Spectrum Basic}}===
<syntaxhighlight lang="basic">10 INVERSE 1
20 PRINT "FOO";
30 INVERSE 0
40 PRINT "BAR"</langsyntaxhighlight>
 
=={{header|Befunge}}==
Assuming a terminal with support for ANSI escape sequences.
<langsyntaxhighlight lang="befunge">0"lamroNm["39*"esrevnIm7["39*>:#,_$@</langsyntaxhighlight>
 
=={{header|C}}==
<langsyntaxhighlight Clang="c">#include <stdio.h>
 
int main()
Line 177 ⟶ 376:
 
return 0;
}</langsyntaxhighlight>
 
=={{header|COBOL}}==
<langsyntaxhighlight lang="cobol"> IDENTIFICATION DIVISION.
PROGRAM-ID. terminal-reverse-video.
 
Line 188 ⟶ 387:
 
GOBACK
.</langsyntaxhighlight>
 
=={{header|Common Lisp}}==
==={{header|ncurses}}===
To interface the ncurses C library from Lisp, the ''croatoan'' library is used.
<langsyntaxhighlight lang="lisp">(defun reverse-attribute ()
(with-screen (scr :input-blocking t :input-echoing nil :cursor-visible nil)
(add-string scr "Reverse" :attributes '(:reverse))
(add-string scr " Normal" :attributes '())
(refresh scr)
(get-char scr)))</langsyntaxhighlight>
 
=={{header|Forth}}==
Developed with Gforth 0.7.9
<syntaxhighlight lang="forth">: Reverse #27 emit "[7m" type ;
: Normal #27 emit "[m" type ;
 
: test cr Reverse ." Reverse " cr Normal ." Normal " ;
test
</syntaxhighlight>
 
=={{header|FunL}}==
<langsyntaxhighlight lang="funl">import console.*
 
println( "${REVERSED}This is reversed.$RESET This is normal." )</langsyntaxhighlight>
 
=={{header|Go}}==
===External command===
<langsyntaxhighlight lang="go">package main
 
import (
Line 226 ⟶ 434:
cmd.Stdout = os.Stdout
return cmd.Run()
}</langsyntaxhighlight>
===ANSI escape codes===
<langsyntaxhighlight lang="go">package main
 
import "fmt"
Line 234 ⟶ 442:
func main() {
fmt.Println("\033[7mRosetta\033[m Code")
}</langsyntaxhighlight>
===Ncurses===
{{libheader|Curses}}
<langsyntaxhighlight lang="go">package main
 
import (
Line 256 ⟶ 464:
s.Println(" Code")
s.GetChar()
}</langsyntaxhighlight>
 
=={{header|J}}==
Use the definitions given in [[Terminal_control/Coloured_text#J]]
<syntaxhighlight lang="j">
<lang J>
;:';:,#.*."3,(C.A.)/\/&.:;:' NB. some output beforehand
attributes REVERSEVIDEO NB. does as it says
Line 266 ⟶ 474:
attributes OFF NB. no more blinky flashy
parseFrench=:;:,#.*."3,(C.A.)/\/&.:;: NB. just kidding! More output.
</syntaxhighlight>
</lang>
 
=={{header|jq}}==
{{works with|jq}}
'''Also works with gojq, the Go implementation of jq, and with fq.'''
 
'''Invocation:'''
<pre>
jq -nr -f terminal-control-inverse-video.jq
</pre>
<syntaxhighlight lang=jq>
# Be busy for at least the given number of seconds,
# and emit the actual number of seconds that have elapsed.
# The reason for defining sleep/1 is that it allows the idiom:
# E | F, (sleep(1) as $elapsed | CONTINUE_WITH_E_AS_INPUT)
def sleep($seconds):
now
| . as $now
| until( . - $now >= $seconds; now)
| . - $now ;
 
def demo:
def ESC: "\u001B";
"\(ESC)[7mInverse",
(sleep(2) | "\(ESC)[0mNormal");
 
demo
</syntaxhighlight>
 
=={{header|Julia}}==
Use within the Julia REPL command line.
<langsyntaxhighlight lang="julia">using Crayons.Box
 
println(WHITE_FG, BLACK_BG, "Normal")
println(WHITE_BG, BLACK_FG, "Reversed")
println(WHITE_FG, BLACK_BG, "Normal")
</syntaxhighlight>
</lang>
 
=={{header|Kotlin}}==
{{Works with|Ubuntu|14.04}}
<langsyntaxhighlight lang="scala">// version 1.1.2
 
fun main(args: Array<String>) {
println("\u001B[7mInverse\u001B[m Normal")
}</langsyntaxhighlight>
 
=={{header|Lasso}}==
<langsyntaxhighlight Lassolang="lasso">local(esc = decode_base64('Gw=='))
 
stdout( #esc + '[7m Reversed Video ' + #esc + '[0m Normal Video ')</langsyntaxhighlight>
 
=={{header|Mathematica}}/{{header|Wolfram Language}}==
<langsyntaxhighlight Mathematicalang="mathematica">Run["tput mr"]
Run["echo foo"] (* is displayed in reverse mode *)
Run["tput me"]
Run["echo bar"]</langsyntaxhighlight>
 
=={{header|Nim}}==
<syntaxhighlight lang="nim">import terminal
<lang nim>echo "\e[7mReversed\e[m Normal"</lang>
 
stdout.styledWrite("normal ", styleReverse, "inverse", resetStyle, " normal\n")</syntaxhighlight>
 
=={{header|OCaml}}==
Line 303 ⟶ 540:
Using the library [http://forge.ocamlcore.org/projects/ansiterminal/ ANSITerminal] in the interactive loop:
 
<langsyntaxhighlight lang="ocaml">$ ocaml unix.cma -I +ANSITerminal ANSITerminal.cma
 
# open ANSITerminal ;;
# print_string [Inverse] "Hello\n" ;;
Hello
- : unit = ()</langsyntaxhighlight>
 
=={{header|Pascal}}==
Line 314 ⟶ 551:
{{libheader|Curses}}
Using Free Pascal and ncurses. On some systems linking to the libtinfo library may be necessary.
<langsyntaxhighlight lang="pascal">program InverseVideo;
{$LINKLIB tinfo}
uses
Line 328 ⟶ 565:
endwin;
end.
</syntaxhighlight>
</lang>
 
=={{header|Perl}}==
Like Raku.
<langsyntaxhighlight lang="perl">print "normal\n";
system "tput rev";
print "reversed\n";
system "tput sgr0";
print "normal\n";</langsyntaxhighlight>
 
=={{header|Phix}}==
<!--<syntaxhighlight lang="phix">(phixonline)-->
<lang Phix>--
<span style="color: #000080;font-style:italic;">--
-- demo\rosetta\Inverse_Video.exw
-- demo\rosetta\Inverse_Video.exw
-- ================================
-- ================================
--
--</span>
text_color(BLACK)
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span>
bk_color(WHITE)
<span style="color: #7060A8;">text_color</span><span style="color: #0000FF;">(</span><span style="color: #004600;">BLACK</span><span style="color: #0000FF;">)</span>
printf(1,"Inverse")
<span style="color: #7060A8;">bk_color</span><span style="color: #0000FF;">(</span><span style="color: #004600;">WHITE</span><span style="color: #0000FF;">)</span>
text_color(WHITE)
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"Inverse"</span><span style="color: #0000FF;">)</span>
bk_color(BLACK)
<span style="color: #7060A8;">text_color</span><span style="color: #0000FF;">(</span><span style="color: #004600;">WHITE</span><span style="color: #0000FF;">)</span>
printf(1," Video")
<span style="color: #7060A8;">bk_color</span><span style="color: #0000FF;">(</span><span style="color: #004600;">BLACK</span><span style="color: #0000FF;">)</span>
printf(1,"\n\npress enter to exit")
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" Video"</span><span style="color: #0000FF;">)</span>
{} = wait_key()
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"\n\npress enter to exit"</span><span style="color: #0000FF;">)</span>
</lang>
<span style="color: #0000FF;">{}</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">wait_key</span><span style="color: #0000FF;">()</span>
<!--</syntaxhighlight>-->
 
=={{header|PicoLisp}}==
<langsyntaxhighlight PicoLisplang="picolisp">(prin "abc")
(call "tput" "rev")
(prin "def") # These three chars are displayed in reverse video
(call "tput" "sgr0")
(prinl "ghi")</langsyntaxhighlight>
 
=={{header|Python}}==
<langsyntaxhighlight Pythonlang="python">#!/usr/bin/env python
 
print "\033[7mReversed\033[m Normal"</syntaxhighlight>
 
=={{header|Quackery}}==
 
<syntaxhighlight lang="quackery"> [ $ 'print("\033[7m", end="")' python ] is inversetext ( --> )
 
[ $ 'print("\033[m", end="")' python ] is regulartext ( --> )
 
inversetext say "inverse video"
regulartext say " normal text"</syntaxhighlight>
 
print "\033[7mReversed\033[m Normal"</lang>
 
=={{header|Racket}}==
<langsyntaxhighlight lang="racket">
#lang racket
(require (planet neil/charterm:3:0))
Line 377 ⟶ 626:
(charterm-normal)
(charterm-display "World"))
</syntaxhighlight>
</lang>
 
=={{header|Raku}}==
(formerly Perl 6)
<syntaxhighlight lang="raku" perl6line>say "normal";
run "tput", "rev";
say "reversed";
run "tput", "sgr0";
say "normal";</langsyntaxhighlight>
 
=={{header|REXX}}==
This version only works with PC/REXX and Personal Rexx.
<langsyntaxhighlight lang="rexx">/*REXX program to demonstrate reverse video. demonstrates the showing of reverse video to the display terminal. */
@day = 'day'
@night = 'night'
 
call scrwrite , 1, @day, , , 7 /*white on black.*/
call scrwrite , 1+length(@day), @nightday, , , 1127 /*blackdisplay to terminal: on white on black.*/
call scrwrite , 1+length(@day), @night, , , 112 /* " " " black " /*stick a fork in it, we're donewhite.*/</lang>
 
exit 0 /*stick a fork in it, we're all done. */</syntaxhighlight><br><br>
 
=={{header|Ring}}==
<langsyntaxhighlight lang="ring">
nverse = char(17)+char(128)+char(17)+char(15)
normal = char(17)+char(128+15)+char(17)+char(0)
see inverse + " inverse " + normal + " video"
</syntaxhighlight>
</lang>
 
=={{header|Ruby}}==
{{Works with|Ubuntu|14.04}}
<langsyntaxhighlight lang="ruby">puts "\033[7mReversed\033[m Normal"</langsyntaxhighlight>
 
=={{header|Scala}}==
{{Works with|Ubuntu|14.04}}
<langsyntaxhighlight lang="scala">object Main extends App {
println("\u001B[7mInverse\u001B[m Normal")
}</langsyntaxhighlight>
 
=={{header|Standard ML}}==
<syntaxhighlight lang="sml">val () = print "\^[[7mReversed\^[[m Normal\n"</syntaxhighlight>
 
=={{header|Tcl}}==
This only works on Unix terminals.
<langsyntaxhighlight lang="tcl"># Get how the terminal wants to do things...
set videoSeq(reverse) [exec tput rev]
set videoSeq(normal) [exec tput rmso]
Line 428 ⟶ 682:
 
# Print those words
puts "[reverseVideo $inReverse] $inNormal"</langsyntaxhighlight>
 
=={{header|TPP}}==
<langsyntaxhighlight lang="tpp">--revon
This is inverse
--revoff
This is normal</langsyntaxhighlight>
 
=={{header|UNIX Shell}}==
Line 441 ⟶ 695:
{{works with|Bourne Shell}}
 
<langsyntaxhighlight lang="bash">#!/bin/sh
tput mr # foo is reversed
echo 'foo'
tput me # bar is normal video
echo 'bar'</langsyntaxhighlight>
 
If the system supports terminfo, then <code>tput rev</code> and <code>tput sgr0</code> also work. (All recent systems have terminfo, except NetBSD, but [http://blog.netbsd.org/tnf/entry/terminfo_has_replaced_termcap NetBSD 6 will have terminfo].) The shorter names <code>mr</code> and <code>me</code> are the backward-compatible names from termcap.
Line 451 ⟶ 705:
If the terminal cannot do reverse video, then ''tput'' will fail with a message to standard error.
 
<langsyntaxhighlight lang="bash">$ TERM=dumb tput mr
tput: Unknown terminfo capability `mr'</langsyntaxhighlight>
 
Some programs use the ''standout mode'', which might look exactly like reverse video. (The escape sequences might be identical!)
 
<langsyntaxhighlight lang="bash">tput so # enter standout mode
echo 'foo'
tput se # exit standout mode
echo 'bar'</langsyntaxhighlight>
 
If the system supports terminfo, then <code>tput smso</code> and <code>tput rmso</code> also work.
 
==={{header|C Shell}}===
<langsyntaxhighlight lang="csh">tput mr
echo 'foo'
tput me
echo 'bar'</langsyntaxhighlight>
 
=={{header|Wren}}==
<syntaxhighlight lang="wren">System.print("\e[7mInverse")
System.print("\e[0mNormal")</syntaxhighlight>
 
=={{header|XPL0}}==
Line 473 ⟶ 731:
it provides many combinations of foreground and background colors.
 
<langsyntaxhighlight XPL0lang="xpl0">include c:\cxpl\codes;
[Attrib($70);
Text(6, "Inverse");
Line 479 ⟶ 737:
Text(6, " Video");
CrLf(6);
]</langsyntaxhighlight>
 
=={{header|Z80 Assembly}}==
{{trans|Locomotive Basic}}
<syntaxhighlight lang="z80">.org &8000
PrintChar equ &BB5A
InvertTextColors equ &BB9C
 
 
;main
 
call InvertTextColors
 
ld hl, HelloAddr
call PrintString
 
call InvertTextColors
 
ld hl,HelloAddr
jp PrintString ;and return to basic after that.
 
 
HelloAddr: byte "Hello",0
 
PrintString:
ld a,(hl)
or a
ret z
call PrintChar
inc hl
jp PrintString</syntaxhighlight>
 
 
=={{header|zkl}}==
There is no explicit support for terminals/video. But, assuming an ANSI terminal:
<langsyntaxhighlight lang="zkl">println("\e[7mReversed\e[m Normal");</langsyntaxhighlight>
 
{{omit from|ACL2}}
9,476

edits